Versions in this module Expand all Collapse all v0 v0.2.0 Jul 18, 2026 v0.1.0 Jul 18, 2026 Changes in this version + func ConvertMessagesDefault(msgs []ai.Message) []ai.Message + func ConvertToLlm(messages []ai.Message) []ai.Message + func PrepareMessages(messages []ai.Message, transform TransformContext) []ai.Message + func ShouldTerminateToolBatch(outcomes []ToolCallOutcome) bool + type AfterAssistantTurn func(ctx context.Context, iter int, turn AssistantTurn) (action TurnDecision, doneStopReason string, skipDoneEmit bool, err error) + type AfterTools func(ctx context.Context, iter int, outcomes []ToolCallOutcome) (continueLoop bool, err error) + type Agent struct + FollowUpMode QueueMode + Loop Loop + SteeringMode QueueMode + func NewAgent(reg *provider.Registry, rt *tools.Runtime, sess *session.Manager, ...) *Agent + func (a *Agent) FollowUp(message string) + func (a *Agent) Prompt(ctx context.Context, message string, events chan<- Event) + func (a *Agent) Steer(message string) + func (a *Agent) Subscribe(buf int) (<-chan Event, func()) + type AssistantTurn struct + Message ai.Message + SkipAppend bool + StopReason string + ToolCalls []ai.ToolCall + Usage *ai.Usage + type AutoRetryInfo struct + Attempt int + DelayMs int + ErrorMessage string + FinalError string + MaxAttempts int + Success bool + WillRetry bool + type Event struct + AutoRetry *AutoRetryInfo + Err error + Message ai.Message + MessageUpdate *MessageUpdate + Notice string + StopReason string + Thinking string + Token string + ToolCall *ai.ToolCall + ToolCallDelta string + ToolCallID string + ToolCallIndex int + ToolCallName string + ToolResult *ToolResult + Type EventType + Usage *ai.Usage + WillRetry bool + type EventType string + const EventAutoRetryEnd + const EventAutoRetryStart + const EventDone + const EventError + const EventLabel + const EventMessage + const EventMessageStart + const EventMessageUpdate + const EventNotice + const EventThinkingToken + const EventToken + const EventToolCall + const EventToolCallDelta + const EventToolProgress + const EventToolResult + type FollowUpMessage func() (msg ai.Message, ok bool) + type Loop struct + AfterAssistantTurn AfterAssistantTurn + AfterChatError func(ctx context.Context, err error) (retry bool, notice string) + AfterToolCall func(ctx context.Context, call ai.ToolCall, outcome ToolCallOutcome) ToolCallOutcome + AfterTools AfterTools + BeforeToolCall func(ctx context.Context, call ai.ToolCall) (block bool, args map[string]any) + BuildSystem func(ctx context.Context) string + ConvertMessages func(messages []ai.Message) []ai.Message + FollowUpMessage FollowUpMessage + LastStopReason string + MaxIterations int + ModelID string + ModelName string + OnToolProgress func(call ai.ToolCall, partial string) + PrepareChat func(ctx context.Context, iter int, base ai.ChatRequest) ai.ChatRequest + PrepareNextTurn PrepareNextTurn + ProcessStream ProcessStreamFn + Registry *provider.Registry + Sessions *session.Manager + ShouldStopAfterTurn ShouldStopAfterTurn + SkipUserAppend bool + SteerFn func() (message string, ok bool) + SteerMessage SteerMessage + StreamFn StreamFn + SuppressMaxIterationsDone bool + ToolExecution ToolExecutionMode + Tools *tools.Runtime + TransformContext func(ctx context.Context, messages []ai.Message) []ai.Message + func (l *Loop) ContinuePrepared(ctx context.Context, ch chan<- Event) error + func (l *Loop) Run(ctx context.Context, prompt string, ch chan<- Event) + func (l *Loop) RunContinue(ctx context.Context, ch chan<- Event) + func (l *Loop) RunPrepared(ctx context.Context, prompt string, ch chan<- Event) + type MessageUpdate struct + ContentIndex int + Delta string + EventType string + Partial ai.Message + ToolCall *ai.ToolCall + type PrepareNextTurn func(ctx context.Context, iter int) error + type ProcessStreamFn func(ctx context.Context, stream <-chan ai.ChatEvent, ch chan<- Event) (AssistantTurn, error) + type QueueMode string + const QueueAll + const QueueOneAtATime + type ShouldStopAfterTurn func(ctx context.Context, iter int, turn AssistantTurn, outcomes []ToolCallOutcome) (stop bool, err error) + type SteerMessage func() (msg ai.Message, ok bool) + type StreamFn func(ctx context.Context, req ai.ChatRequest) (<-chan ai.ChatEvent, error) + type ToolCallOutcome struct + Call ai.ToolCall + Err error + Result tools.Result + Terminate bool + func ExecuteToolCalls(ctx context.Context, rt *tools.Runtime, calls []ai.ToolCall, ...) []ToolCallOutcome + type ToolExecutionMode string + const ToolExecutionParallel + const ToolExecutionSequential + type ToolResult struct + CallID string + Content string + Error string + FullOutputPath string + Name string + Truncated bool + type TransformContext func(messages []ai.Message) []ai.Message + type TurnDecision int + const TurnAbort + const TurnContinue + const TurnDone + const TurnExecuteTools + const TurnRejectTools