Versions in this module Expand all Collapse all v0 v0.4.10 Jul 30, 2026 Changes in this version + func MarshalAgentEvent(event AgentEvent) ([]byte, error) + func SetDefaultStreamFn(streamFn StreamFn) + func ToolExecutionModel(ctx context.Context) *ai.Model + func WithToolExecutionModel(ctx context.Context, model *ai.Model) context.Context + type AfterToolCallContext struct + Args any + AssistantMessage *ai.AssistantMessage + Context *AgentContext + IsError bool + Result AgentToolResult + ToolCall *ai.ToolCall + type AfterToolCallFunc func(context.Context, AfterToolCallContext) (*AfterToolCallResult, error) + type AfterToolCallResult struct + Content ai.ToolResultContent + Details any + DetailsSet bool + IsError *bool + Terminate *bool + Usage *ai.Usage + type Agent struct + func NewAgent(stream StreamFn, option ...AgentOption) *Agent + func (agent *Agent) Abort() + func (agent *Agent) AppendMessage(message AgentMessage) + func (agent *Agent) ClearAllQueues() + func (agent *Agent) ClearFollowUpQueue() + func (agent *Agent) ClearSteeringQueue() + func (agent *Agent) Continue(ctx context.Context) error + func (agent *Agent) DisplayState() AgentDisplayState + func (agent *Agent) FollowUp(message AgentMessage) + func (agent *Agent) FollowUpMode() QueueMode + func (agent *Agent) HasQueuedMessages() bool + func (agent *Agent) IsIdle() bool + func (agent *Agent) Prompt(ctx context.Context, input any, images ...*ai.ImageContent) error + func (agent *Agent) ReplaceLastMessage(replacement AgentMessage) bool + func (agent *Agent) Reset() + func (agent *Agent) SetFollowUpMode(mode QueueMode) + func (agent *Agent) SetMessages(messages AgentMessages) + func (agent *Agent) SetModel(model *ai.Model) + func (agent *Agent) SetProviderHooks(payload ai.PayloadHook, headers ai.HeadersHook, response ai.ResponseHook) + func (agent *Agent) SetRequestResolvers(apiKey GetAPIKeyFunc, auth GetRequestAuthFunc, headers GetModelHeadersFunc) + func (agent *Agent) SetSteeringMode(mode QueueMode) + func (agent *Agent) SetStreamFn(stream StreamFn) + func (agent *Agent) SetStreamSessionID(sessionID string) + func (agent *Agent) SetSystemPrompt(prompt string) + func (agent *Agent) SetThinkingLevel(level ThinkingLevel) + func (agent *Agent) SetToolCallHooks(before BeforeToolCallFunc, after AfterToolCallFunc) + func (agent *Agent) SetTools(tools []AgentTool) + func (agent *Agent) SetTransformContext(transform TransformContextFunc) + func (agent *Agent) SetTransport(transport ai.Transport) + func (agent *Agent) Signal() context.Context + func (agent *Agent) State() AgentState + func (agent *Agent) Steer(message AgentMessage) + func (agent *Agent) SteeringMode() QueueMode + func (agent *Agent) StreamFn() StreamFn + func (agent *Agent) Subscribe(listener EventSink) func() + func (agent *Agent) WaitForIdle(ctx context.Context) error + type AgentContext struct + Messages AgentMessages + SystemPrompt string + Tools []AgentTool + type AgentDisplayState struct + ContextWindow float64 + HasModel bool + ModelID string + Provider ai.ProviderID + Reasoning bool + ThinkingLevel ThinkingLevel + type AgentEndEvent struct + Messages AgentMessages + func (AgentEndEvent) Type() AgentEventType + func (event AgentEndEvent) MarshalJSON() ([]byte, error) + type AgentEvent interface + Type func() AgentEventType + type AgentEventType string + const EventAgentEnd + const EventAgentStart + const EventMessageEnd + const EventMessageStart + const EventMessageUpdate + const EventToolExecutionEnd + const EventToolExecutionStart + const EventToolExecutionUpdate + const EventTurnEnd + const EventTurnStart + type AgentLoopConfig struct + AfterToolCall AfterToolCallFunc + BeforeToolCall BeforeToolCallFunc + ConvertToLLM ConvertToLLMFunc + GetAPIKey GetAPIKeyFunc + GetFollowUpMessages GetQueuedMessagesFunc + GetModelHeaders GetModelHeadersFunc + GetRequestAuth GetRequestAuthFunc + GetSteeringMessages GetQueuedMessagesFunc + Model *ai.Model + Now func() int64 + PrepareNextTurn PrepareNextTurnFunc + ShouldStopAfterTurn ShouldStopAfterTurnFunc + ToolExecution ToolExecutionMode + TransformContext TransformContextFunc + type AgentLoopTurnUpdate struct + Context *AgentContext + Model *ai.Model + ThinkingLevel *ThinkingLevel + type AgentMessage = any + type AgentMessages []AgentMessage + func RunLoop(ctx context.Context, prompts AgentMessages, loopContext AgentContext, ...) (AgentMessages, error) + func RunLoopContinue(ctx context.Context, loopContext *AgentContext, config AgentLoopConfig, ...) (AgentMessages, error) + type AgentOption func(*agentOptions) + func WithAPIKeyResolver(resolve GetAPIKeyFunc) AgentOption + func WithAfterToolCall(hook AfterToolCallFunc) AgentOption + func WithBeforeToolCall(hook BeforeToolCallFunc) AgentOption + func WithClock(now func() int64) AgentOption + func WithConvertToLLM(convert ConvertToLLMFunc) AgentOption + func WithFollowUpMode(mode QueueMode) AgentOption + func WithGetFollowUpMessages(getter GetQueuedMessagesFunc) AgentOption + func WithGetSteeringMessages(getter GetQueuedMessagesFunc) AgentOption + func WithInitialState(state AgentState) AgentOption + func WithModelHeadersResolver(resolve GetModelHeadersFunc) AgentOption + func WithPrepareNextTurn(hook PrepareNextTurnWithoutContextFunc) AgentOption + func WithPrepareNextTurnContext(hook PrepareNextTurnFunc) AgentOption + func WithRequestAuthResolver(resolve GetRequestAuthFunc) AgentOption + func WithShouldStopAfterTurn(hook ShouldStopAfterTurnFunc) AgentOption + func WithSimpleStreamOptions(streamOptions ai.SimpleStreamOptions) AgentOption + func WithSteeringMode(mode QueueMode) AgentOption + func WithToolExecution(mode ToolExecutionMode) AgentOption + func WithTransformContext(transform TransformContextFunc) AgentOption + type AgentStartEvent struct + func (AgentStartEvent) MarshalJSON() ([]byte, error) + func (AgentStartEvent) Type() AgentEventType + type AgentState struct + ErrorMessage *string + IsStreaming bool + Messages AgentMessages + Model *ai.Model + PendingToolCalls map[string]struct{} + StreamingMessage AgentMessage + SystemPrompt string + ThinkingLevel ThinkingLevel + Tools []AgentTool + type AgentTool interface + Execute func(context.Context, string, any, AgentToolUpdateCallback) (AgentToolResult, error) + Spec func() AgentToolSpec + type AgentToolFunc struct + Run ToolExecuteFunc + func (tool AgentToolFunc) Execute(ctx context.Context, toolCallID string, params any, ...) (AgentToolResult, error) + func (tool AgentToolFunc) Spec() AgentToolSpec + type AgentToolResult struct + AddedToolNames *[]string + Content ai.ToolResultContent + Details any + Terminate *bool + Usage *ai.Usage + func (result AgentToolResult) MarshalJSON() ([]byte, error) + type AgentToolSpec struct + ConstrainedSampling *ai.ConstrainedSamplingConfig + Description string + ExecutionMode ToolExecutionMode + Label string + Name string + Parameters ai.JSONSchema + PrepareArguments PrepareArgumentsFunc + type AgentToolUpdateCallback func(AgentToolResult) + type BeforeToolCallContext struct + Args any + AssistantMessage *ai.AssistantMessage + Context *AgentContext + ToolCall *ai.ToolCall + type BeforeToolCallFunc func(context.Context, BeforeToolCallContext) (*BeforeToolCallResult, error) + type BeforeToolCallResult struct + Block bool + Reason string + type ConvertToLLMFunc func(context.Context, AgentMessages) (ai.MessageList, error) + type EventSink func(ctx context.Context, event AgentEvent) error + type GetAPIKeyFunc func(context.Context, ai.ProviderID) (*string, error) + type GetModelHeadersFunc func(context.Context, *ai.Model, *string, ai.ProviderEnv) (*map[string]string, error) + type GetQueuedMessagesFunc func(context.Context) (AgentMessages, error) + type GetRequestAuthFunc func(context.Context, ai.ProviderID) (*RequestAuth, error) + type MessageEndEvent struct + Message AgentMessage + func (MessageEndEvent) Type() AgentEventType + func (event MessageEndEvent) MarshalJSON() ([]byte, error) + type MessageStartEvent struct + Message AgentMessage + func (MessageStartEvent) Type() AgentEventType + func (event MessageStartEvent) MarshalJSON() ([]byte, error) + type MessageUpdateEvent struct + AssistantMessageEvent ai.AssistantMessageEvent + Message AgentMessage + func (MessageUpdateEvent) Type() AgentEventType + func (event MessageUpdateEvent) MarshalJSON() ([]byte, error) + type ParallelExecutionPreparer interface + PrepareParallelExecution func(context.Context, any) (context.Context, func(), error) + type PrepareArgumentsFunc func(args any) (any, error) + type PrepareNextTurnContext = ShouldStopAfterTurnContext + type PrepareNextTurnFunc func(context.Context, PrepareNextTurnContext) (*AgentLoopTurnUpdate, error) + type PrepareNextTurnWithoutContextFunc func(context.Context) (*AgentLoopTurnUpdate, error) + type QueueMode string + const QueueAll + const QueueOneAtATime + type RequestAuth struct + APIKey *string + BaseURL *string + Env ai.ProviderEnv + Headers ai.ProviderHeaders + type ShouldStopAfterTurnContext struct + Context *AgentContext + Message *ai.AssistantMessage + NewMessages AgentMessages + ToolResults []*ai.ToolResultMessage + type ShouldStopAfterTurnFunc func(context.Context, ShouldStopAfterTurnContext) (bool, error) + type StreamFn func(ctx context.Context, model *ai.Model, requestContext ai.Context, ...) (ai.AssistantMessageEventStream, error) + type ThinkingLevel = ai.ModelThinkingLevel + const ThinkingHigh + const ThinkingLow + const ThinkingMax + const ThinkingMedium + const ThinkingMinimal + const ThinkingOff + const ThinkingXHigh + type ToolExecuteFunc func(ctx context.Context, toolCallID string, params any, ...) (AgentToolResult, error) + type ToolExecutionEndEvent struct + IsError bool + Result AgentToolResult + ToolCallID string + ToolName string + func (ToolExecutionEndEvent) Type() AgentEventType + func (event ToolExecutionEndEvent) MarshalJSON() ([]byte, error) + type ToolExecutionMode string + const ToolExecutionParallel + const ToolExecutionSequential + type ToolExecutionStartEvent struct + Args map[string]any + ToolCallID string + ToolName string + func NewToolExecutionStartEvent(toolCall *ai.ToolCall) ToolExecutionStartEvent + func (ToolExecutionStartEvent) Type() AgentEventType + func (event ToolExecutionStartEvent) MarshalJSON() ([]byte, error) + type ToolExecutionUpdateEvent struct + Args map[string]any + PartialResult AgentToolResult + ToolCallID string + ToolName string + func NewToolExecutionUpdateEvent(toolCall *ai.ToolCall, partial AgentToolResult) ToolExecutionUpdateEvent + func (ToolExecutionUpdateEvent) Type() AgentEventType + func (event ToolExecutionUpdateEvent) MarshalJSON() ([]byte, error) + type TransformContextFunc func(context.Context, AgentMessages) (AgentMessages, error) + type TurnEndEvent struct + Message AgentMessage + ToolResults []*ai.ToolResultMessage + func (TurnEndEvent) Type() AgentEventType + func (event TurnEndEvent) MarshalJSON() ([]byte, error) + type TurnStartEvent struct + func (TurnStartEvent) MarshalJSON() ([]byte, error) + func (TurnStartEvent) Type() AgentEventType