Add kernel runtime loop - #21
Merged
Merged
Conversation
Implement the observe/think/act/repeat agentic cycle composing agent, tools, session, and memory subsystems. Config-driven cold start with functional options for test overrides. Supporting changes: - Evolve Agent interface: conversation methods accept []protocol.Message - Consolidate response.ToolCall into protocol.ToolCall with custom UnmarshalJSON - Add protocol.InitMessages convenience wrapper - Add subsystem configs for session and memory
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the kernel runtime loop — the observe/think/act/repeat agentic cycle composing agent, tools, session, and memory. Config-driven initialization via
New(*Config, ...Option)following the cold start pattern.Run()executes the loop until the agent produces a final response or iterations are exhausted.Closes #14
Changes
kernel package (new)
Kernelstruct withNew()andRun()implementing the agentic loopConfig,DefaultConfig,Merge,LoadConfigfor config-driven initializationToolExecutorinterface abstracting the global tools registry for testabilityWithAgent,WithSession,WithToolExecutor,WithMemoryStore)ErrMaxIterationssentinel errorAgent interface evolution
Chat,ChatStream,Vision,VisionStream,Tools) accept[]protocol.Messageinstead ofprompt stringToolCall consolidation
response.ToolCalleliminated in favor ofprotocol.ToolCallas single canonical typeUnmarshalJSONtransparently handles nested LLM API format (function.name) and flat kernel format (name)Subsystem configs
session.ConfigwithDefaultConfig,Merge,New(extension point for future backends)memory.ConfigwithDefaultConfig,Merge,NewStore(nil store when path empty)Convenience
protocol.InitMessages(role, content)replaces verbose[]protocol.Message{protocol.NewMessage(role, content)}across all call sitesTests