Documentation
¶
Index ¶
- func BuildSessionKey(agentID, platform, externalUserID, channelContext string) string
- func NewRunnerFactory(snap *config.Snapshot, extraTools []agenttool.Tool, ...) (runner.NewRunnerFunc, error)
- func SetupWorkspace(agentID, basePath string) (string, error)
- type ChatOption
- type CompactionConfig
- type ExtraToolsFactory
- type Pool
- func (p *Pool) ActiveSession(channel string) (SessionInfo, bool)
- func (p *Pool) AgentID() string
- func (p *Pool) ArchiveSession(sessionID string) error
- func (p *Pool) Chat(ctx context.Context, sessionID string, message runner.MessageContent, ...) <-chan runner.Event
- func (p *Pool) Close() error
- func (p *Pool) CompactSession(ctx context.Context, sessionID string) (string, error)
- func (p *Pool) CreateSession(channel string, userID ...int64) (SessionInfo, error)
- func (p *Pool) GetSession(sessionID string) (SessionInfo, error)
- func (p *Pool) History(sessionID string) []ai.Message
- func (p *Pool) ListSessions(includeArchived bool) ([]SessionInfo, error)
- func (p *Pool) NeedsCompaction(sessionID string) bool
- func (p *Pool) ResolveSession(channel string, userID ...int64) (SessionInfo, error)
- func (p *Pool) RotateSession(channel string, userID ...int64) (SessionInfo, error)
- func (p *Pool) SetDefaultModel(model string)
- func (p *Pool) SetFactory(factory runner.NewRunnerFunc)
- func (p *Pool) StartReaper(ctx context.Context)
- type PoolManager
- type PoolManagerOption
- func WithCompactionPM(cfg CompactionConfig) PoolManagerOption
- func WithExtraToolsFactory(f ExtraToolsFactory) PoolManagerOption
- func WithIdleTimeoutPM(d time.Duration) PoolManagerOption
- func WithPluginHooksPM(hooks engine.PluginHookRunner) PoolManagerOption
- func WithSharedExtraTools(tools []agenttool.Tool) PoolManagerOption
- type PoolOption
- func WithAgentID(id string) PoolOption
- func WithCompaction(cfg CompactionConfig) PoolOption
- func WithDefaultModel(model string) PoolOption
- func WithFastModel(model string) PoolOption
- func WithIdleTimeout(d time.Duration) PoolOption
- func WithPluginHooks(hooks engine.PluginHookRunner) PoolOption
- func WithUserMemory(store *memory.UserMemoryStore) PoolOption
- type Session
- type SessionInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildSessionKey ¶ added in v0.8.0
BuildSessionKey constructs a session key from agent, platform, user, and context. Format: {agentID}:{platform}:{externalUserID}:{channelContext}
func NewRunnerFactory ¶ added in v0.8.0
func NewRunnerFactory(snap *config.Snapshot, extraTools []agenttool.Tool, pluginHooks engine.PluginHookRunner) (runner.NewRunnerFunc, error)
NewRunnerFactory creates a runner.NewRunnerFunc for a given config snapshot. The returned factory creates runners scoped to one agent's provider, model, workspace, and system prompt. User memory is injected per-session from RunnerParams.UserMemory.
func SetupWorkspace ¶ added in v0.8.0
SetupWorkspace ensures the per-agent workspace directory exists. Creates: basePath/workspaces/{agentID}/skills/ Returns the absolute path to the agent's workspace directory.
Types ¶
type ChatOption ¶
type ChatOption func(*chatOptions)
ChatOption configures a single Chat call.
func WithModel ¶
func WithModel(model string) ChatOption
WithModel overrides the model for this Chat call. If the session already has a runner with a different model, the runner is replaced.
type CompactionConfig ¶
type CompactionConfig struct {
// MaxTokens triggers compaction when the estimated token count exceeds this.
// 0 (or omitted) uses the default of 80000. Negative values disable
// automatic compaction. Manual /compact still works.
MaxTokens int `yaml:"max_tokens"`
// KeepTail is the number of recent message entries to preserve verbatim
// after compaction. Default: 20.
KeepTail int `yaml:"keep_tail"`
}
CompactionConfig controls automatic session compaction.
func (CompactionConfig) WithDefaults ¶
func (c CompactionConfig) WithDefaults() CompactionConfig
WithDefaults returns a copy with zero-value fields replaced by defaults. MaxTokens 0 -> 80000; negative values are preserved (meaning disabled).
type ExtraToolsFactory ¶ added in v0.8.0
ExtraToolsFactory creates agent-specific extra tools given a snapshot. It allows callers to inject tools that depend on per-agent configuration (e.g. scheduler, memory retrieval).
type Pool ¶
type Pool struct {
// contains filtered or unexported fields
}
Pool manages a set of sessions, each with its own history and runner. It is the only type channels interact with.
func NewPool ¶
func NewPool(factory runner.NewRunnerFunc, mem memory.Engine, opts ...PoolOption) *Pool
NewPool creates a new Pool with the given runner factory and memory engine. The memory engine is required — it is the sole persistence layer for sessions.
func (*Pool) ActiveSession ¶
func (p *Pool) ActiveSession(channel string) (SessionInfo, bool)
ActiveSession returns the most recent non-archived session for a channel.
func (*Pool) ArchiveSession ¶
ArchiveSession marks a session as archived, closes its runner, but keeps history on disk. The session is removed from the in-memory map; its metadata persists in the index.
func (*Pool) Chat ¶
func (p *Pool) Chat(ctx context.Context, sessionID string, message runner.MessageContent, opts ...ChatOption) <-chan runner.Event
Chat sends a message in a session and streams back events. Internally: gets/creates runner, passes history, collects events, appends to session log, streams to caller.
func (*Pool) CompactSession ¶
CompactSession delegates compaction to the memory engine and returns the summary text on success.
func (*Pool) CreateSession ¶
func (p *Pool) CreateSession(channel string, userID ...int64) (SessionInfo, error)
CreateSession creates a new session with a generated ID and persists its metadata.
func (*Pool) GetSession ¶
func (p *Pool) GetSession(sessionID string) (SessionInfo, error)
GetSession returns metadata for a session.
func (*Pool) History ¶
History returns the message history for a session, loading from the memory engine. Returns nil if the session has no history.
func (*Pool) ListSessions ¶
func (p *Pool) ListSessions(includeArchived bool) ([]SessionInfo, error)
ListSessions returns metadata for all sessions.
func (*Pool) NeedsCompaction ¶
NeedsCompaction reports whether a session's estimated token count exceeds the compaction threshold. Returns false if compaction is disabled or no memory engine is set.
func (*Pool) ResolveSession ¶
func (p *Pool) ResolveSession(channel string, userID ...int64) (SessionInfo, error)
ResolveSession returns the active session for a channel, creating one if needed. The check-and-create is atomic to prevent duplicate sessions under concurrent access. An optional userID associates the session with a user (stored in conversations table).
func (*Pool) RotateSession ¶
func (p *Pool) RotateSession(channel string, userID ...int64) (SessionInfo, error)
RotateSession archives the active session for a channel (if any) and creates a new one.
func (*Pool) SetDefaultModel ¶
SetDefaultModel updates the default model used for new runners. Call this alongside SetFactory when the user switches models at runtime.
func (*Pool) SetFactory ¶
func (p *Pool) SetFactory(factory runner.NewRunnerFunc)
SetFactory replaces the runner factory used for new runners. Existing runners are not affected until their session is reset.
func (*Pool) StartReaper ¶
StartReaper runs a background goroutine that periodically checks for idle or dead runners. It returns when ctx is cancelled.
type PoolManager ¶ added in v0.8.0
type PoolManager struct {
// contains filtered or unexported fields
}
PoolManager manages a map of agent ID to Pool. It reads enabled agents from the config Store and creates one Pool per agent.
func NewPoolManager ¶ added in v0.8.0
func NewPoolManager(store config.Store, mem memory.Engine, opts ...PoolManagerOption) *PoolManager
NewPoolManager creates a new PoolManager.
func (*PoolManager) Close ¶ added in v0.8.0
func (pm *PoolManager) Close() error
Close shuts down all pools.
func (*PoolManager) DefaultPool ¶ added in v0.8.0
func (pm *PoolManager) DefaultPool() *Pool
DefaultPool returns the first pool found in the map, or nil if empty. Useful for backward compatibility with code expecting a single pool.
func (*PoolManager) Get ¶ added in v0.8.0
func (pm *PoolManager) Get(agentID string) *Pool
Get returns the Pool for the given agent ID, or nil if not found.
type PoolManagerOption ¶ added in v0.8.0
type PoolManagerOption func(*PoolManager)
PoolManagerOption configures a PoolManager.
func WithCompactionPM ¶ added in v0.8.0
func WithCompactionPM(cfg CompactionConfig) PoolManagerOption
WithCompactionPM sets the compaction config for all pools.
func WithExtraToolsFactory ¶ added in v0.8.0
func WithExtraToolsFactory(f ExtraToolsFactory) PoolManagerOption
WithExtraToolsFactory sets the function that creates per-agent extra tools.
func WithIdleTimeoutPM ¶ added in v0.8.0
func WithIdleTimeoutPM(d time.Duration) PoolManagerOption
WithIdleTimeoutPM sets the idle timeout for all pools.
func WithPluginHooksPM ¶ added in v0.8.0
func WithPluginHooksPM(hooks engine.PluginHookRunner) PoolManagerOption
WithPluginHooksPM sets the plugin hook runner for all pools.
func WithSharedExtraTools ¶ added in v0.8.0
func WithSharedExtraTools(tools []agenttool.Tool) PoolManagerOption
WithSharedExtraTools sets tools shared across all agents (e.g. scheduler, memory).
type PoolOption ¶
type PoolOption func(*Pool)
PoolOption configures a Pool.
func WithAgentID ¶ added in v0.8.0
func WithAgentID(id string) PoolOption
WithAgentID sets the agent ID this pool belongs to.
func WithCompaction ¶
func WithCompaction(cfg CompactionConfig) PoolOption
WithCompaction sets the compaction configuration.
func WithDefaultModel ¶
func WithDefaultModel(model string) PoolOption
WithDefaultModel sets the default model ID for new runners.
func WithFastModel ¶
func WithFastModel(model string) PoolOption
WithFastModel sets the model ID used for compaction and other fast tasks.
func WithIdleTimeout ¶
func WithIdleTimeout(d time.Duration) PoolOption
WithIdleTimeout sets the idle timeout for reaping runners.
func WithPluginHooks ¶ added in v0.7.0
func WithPluginHooks(hooks engine.PluginHookRunner) PoolOption
WithPluginHooks sets the plugin lifecycle hook runner.
func WithUserMemory ¶ added in v0.8.0
func WithUserMemory(store *memory.UserMemoryStore) PoolOption
WithUserMemory sets the per-user memory store for system prompt injection.
type Session ¶
type Session struct {
Info SessionInfo
Runner runner.Runner
Model string // model ID the current runner was created with
}
Session holds the state of a single conversation: metadata and the currently assigned runner. Message persistence is handled by the memory engine exclusively.
type SessionInfo ¶
type SessionInfo = memory.SessionInfo
SessionInfo is an alias for memory.SessionInfo.