Help us shape the future of Go! Take the 2026 Go Developer Survey

loop

package
v0.4.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2026 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func New

func New(cfg Config, deps Deps) (agentkit.Loop, error)

New registers loop/default: Route inbound messages to an agent and serialize turns per session.

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.

func (*Config) Validate added in v0.3.48

func (c *Config) Validate() error

Validate implements pluginkit.Validator.

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 (*Control) BeginStep

func (c *Control) BeginStep(parent context.Context) (context.Context, func())

func (*Control) Cancel

func (c *Control) Cancel(_ context.Context, reason string) error

func (*Control) ClearTurnCancel

func (c *Control) ClearTurnCancel()

func (*Control) DeliverPermissionReply

func (c *Control) DeliverPermissionReply(_ agentkit.SessionID, reply permission.Reply) bool

func (*Control) DrainFollowUps

func (c *Control) DrainFollowUps(_ context.Context, mode agentkit.FollowUpMode) ([]agentkit.ModelMessage, error)

func (*Control) FollowUp

func (c *Control) FollowUp(_ context.Context, msg agentkit.ModelMessage) error

func (*Control) HasSteering added in v0.1.10

func (c *Control) HasSteering() bool

func (*Control) PermissionCapability

func (c *Control) PermissionCapability() permission.Capability

func (*Control) PopCancelReason

func (c *Control) PopCancelReason() string

func (*Control) PopSteering

func (c *Control) PopSteering() []agentkit.ModelMessage

func (*Control) Steer

func (c *Control) Steer(_ context.Context, msg agentkit.ModelMessage) error

func (*Control) Stop added in v0.3.28

func (c *Control) Stop()

Stop retires the owner goroutine. Safe to call once; subsequent sync calls will panic on a closed channel. Loop calls this on shutdown for every session.

func (*Control) SupersedePending

func (c *Control) SupersedePending(_ agentkit.SessionID, reason string) bool

type Default

type Default struct {
	// contains filtered or unexported fields
}

func (*Default) Agents added in v0.1.6

func (l *Default) Agents() []agentkit.Agent

Agents returns configured agent instances in arbitrary order.

func (*Default) Cancel added in v0.2.1

func (l *Default) Cancel(ctx context.Context, reason string) error

func (*Default) CancelAllInFlight added in v0.3.15

func (l *Default) CancelAllInFlight(reason string)

func (*Default) DefaultAgentID added in v0.2.1

func (l *Default) DefaultAgentID() agentkit.AgentID

DefaultAgentID returns the loop fallback agent when no session bind is set.

func (*Default) Dispatch

func (l *Default) Dispatch(ctx context.Context, req agentkit.LoopRequest) error

func (*Default) FollowUp

func (l *Default) FollowUp(ctx context.Context, msg agentkit.ModelMessage) error

func (*Default) IsSessionBusy added in v0.1.10

func (l *Default) IsSessionBusy(sessionID agentkit.SessionID) bool

IsSessionBusy reports whether a turn is currently executing for the session.

func (*Default) Steer

func (l *Default) Steer(ctx context.Context, msg agentkit.ModelMessage) error

func (*Default) Stop added in v0.3.28

func (l *Default) Stop(_ context.Context) error

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"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL