Documentation
¶
Index ¶
- func AgentCommand(agents []agentkit.Agent, store agentkit.SessionStore, ...) agentkit.Command
- func AgentHelpCommand(agents []agentkit.Agent) agentkit.Command
- func ModelCommand(agents []agentkit.Agent, store agentkit.SessionStore, ...) agentkit.Command
- func New(cfg Config, deps Deps) (agentkit.Loop, error)
- type Config
- type Control
- func (c *Control) Await(ctx context.Context, req permission.Request) (permission.Result, error)
- func (c *Control) BeginStep(parent context.Context) (context.Context, func())
- func (c *Control) Cancel(_ context.Context, reason string) error
- func (c *Control) ClearTurnCancel()
- func (c *Control) DeliverPermissionReply(_ agentkit.SessionID, reply permission.Reply) bool
- func (c *Control) DrainFollowUps(_ context.Context, mode agentkit.FollowUpMode) ([]agentkit.ModelMessage, error)
- func (c *Control) FollowUp(_ context.Context, msg agentkit.ModelMessage) error
- func (c *Control) HasSteering() bool
- func (c *Control) PermissionCapability() permission.Capability
- func (c *Control) PopCancelReason() string
- func (c *Control) PopSteering() []agentkit.ModelMessage
- func (c *Control) Steer(_ context.Context, msg agentkit.ModelMessage) error
- func (c *Control) Stop()
- func (c *Control) SupersedePending(_ agentkit.SessionID, reason string) bool
- type Default
- func (l *Default) Agents() []agentkit.Agent
- func (l *Default) Cancel(ctx context.Context, reason string) error
- func (l *Default) CancelAllInFlight(reason string)
- func (l *Default) Commands() []agentkit.Command
- func (l *Default) DefaultAgentID() agentkit.AgentID
- func (l *Default) Dispatch(ctx context.Context, req agentkit.LoopRequest) error
- func (l *Default) FollowUp(ctx context.Context, msg agentkit.ModelMessage) error
- func (l *Default) IsSessionBusy(sessionID agentkit.SessionID) bool
- func (l *Default) Steer(ctx context.Context, msg agentkit.ModelMessage) error
- func (l *Default) Stop(_ context.Context) error
- func (l *Default) SupersedePendingForInbound(event agentkit.MessageEvent)
- func (l *Default) TryDeliverPermission(event agentkit.MessageEvent) bool
- type Deps
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AgentCommand ¶ added in v0.4.9
func AgentCommand(agents []agentkit.Agent, store agentkit.SessionStore, defaultAgent agentkit.AgentID, ws workspace.Service) agentkit.Command
Command exposes the agent catalog and session or global agent switching.
func AgentHelpCommand ¶ added in v0.4.9
HelpCommand exposes the agent catalog help slash command for built agent instances.
func ModelCommand ¶ added in v0.4.9
func ModelCommand(agents []agentkit.Agent, store agentkit.SessionStore, defaultAgent agentkit.AgentID, ws workspace.Service, catalog capllm.ModelCatalog) agentkit.Command
ModelCommand shows or sets the session or global LLM model override for coding agents.
The catalog is optional: when nil the command still works, just without the available-model list and unknown-model warnings. Commands for other domains (failover chain, subagent models) are provided by their own plugins.
Types ¶
type Config ¶
type Config struct {
// DefaultAgent is agent id used when the event names none; defaults to the single configured agent.
DefaultAgent agentkit.AgentID `json:"defaultAgent"`
// FollowUpMode is how follow-up messages are drained after a turn ends.
FollowUpMode agentkit.FollowUpMode `json:"followUpMode"`
}
func (*Config) SetDefaults ¶ added in v0.3.48
func (c *Config) SetDefaults()
SetDefaults implements pluginkit.Defaulter.
type Control ¶
type Control struct {
// contains filtered or unexported fields
}
Control holds steer / follow-up queues and step-cancel state for one session. Loop owns one Control per SessionID; Agent reads step-level hooks via ctx.Value(agentkit.KeySessionControl).
All mutable state is owned by a single goroutine; callers synchronize via ch.
func NewControl ¶
func NewControl() *Control
func (*Control) Await ¶
func (c *Control) Await(ctx context.Context, req permission.Request) (permission.Result, error)
func (*Control) ClearTurnCancel ¶
func (c *Control) ClearTurnCancel()
func (*Control) DeliverPermissionReply ¶
func (*Control) DrainFollowUps ¶
func (c *Control) DrainFollowUps(_ context.Context, mode agentkit.FollowUpMode) ([]agentkit.ModelMessage, error)
func (*Control) HasSteering ¶ added in v0.1.10
func (*Control) PermissionCapability ¶
func (c *Control) PermissionCapability() permission.Capability
func (*Control) PopCancelReason ¶
func (*Control) PopSteering ¶
func (c *Control) PopSteering() []agentkit.ModelMessage
type Default ¶
type Default struct {
// contains filtered or unexported fields
}
func (*Default) Agents ¶ added in v0.1.6
Agents returns configured agent instances in arbitrary order.
func (*Default) CancelAllInFlight ¶ added in v0.3.15
func (*Default) Commands ¶ added in v0.1.5
Commands implements agentkit.CommandProvider: the loop owns the agent catalog, so it contributes the catalog slash commands (/agent, /model) itself. commands/registry collects them through the generic WireContributions channel; turn dispatch is unaffected when the optional command deps are absent.
func (*Default) DefaultAgentID ¶ added in v0.2.1
DefaultAgentID returns the loop fallback agent when no session bind is set.
func (*Default) IsSessionBusy ¶ added in v0.1.10
IsSessionBusy reports whether a turn is currently executing for the session.
func (*Default) Stop ¶ added in v0.3.28
Stop retires every per-session Control owner goroutine. Call after the runner scheduler has drained (sched.wait + sched.stop); no further Dispatch may run after this returns.
func (*Default) SupersedePendingForInbound ¶
func (l *Default) SupersedePendingForInbound(event agentkit.MessageEvent)
func (*Default) TryDeliverPermission ¶
func (l *Default) TryDeliverPermission(event agentkit.MessageEvent) bool
type Deps ¶
type Deps struct {
Agents []agentkit.Agent `json:"agents"`
Telemetry captelemetry.Exporter `json:"telemetry,omitempty"`
// SessionStore, Workspace and ModelCatalog are optional and only serve the
// catalog slash commands (/agent, /model) the loop contributes via
// agentkit.CommandProvider; turn dispatch never touches them.
SessionStore agentkit.SessionStore `json:"sessionStore,omitempty"`
Workspace workspace.Service `json:"workspace,omitempty"`
ModelCatalog capllm.ModelCatalog `json:"modelCatalog,omitempty"`
}