config

package
v0.10.0 Latest Latest
Warning

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

Go to latest
Published: Apr 14, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ModelTierStrong = "strong"
	ModelTierFast   = "fast"
)

Model tier constants.

View Source
const (
	PluginKindTool     = "tool"
	PluginKindChannel  = "channel"
	PluginKindHook     = "hook"
	PluginKindProvider = "provider"
	PluginKindMemory   = "memory"
)

Plugin kind constants.

View Source
const (
	SandboxBackendAuto  = "auto"
	SandboxBackendBoxsh = "boxsh"
	SandboxBackendLocal = "local"

	SandboxNetworkDisabled  = "disabled"
	SandboxNetworkAllowAll  = "allow_all"
	SandboxNetworkWhitelist = "whitelist"
)
View Source
const (
	AgentScopeSystem     = "system"     // all users can access
	AgentScopeRestricted = "restricted" // only assigned users can access
)

AgentScope constants define the access scope for an agent.

Variables

This section is empty.

Functions

func AnnaHome

func AnnaHome() string

AnnaHome returns the anna home directory. Priority: ANNA_HOME env -> ~/.anna The result is cached after the first call.

func BuiltinPluginIDs added in v0.9.0

func BuiltinPluginIDs() []string

BuiltinPluginIDs returns all built-in plugin IDs in deterministic order. Provider instances are stored separately in settings_providers.

func CachePath

func CachePath() string

CachePath returns the cache directory inside the anna home.

func DBPath added in v0.8.0

func DBPath() string

DBPath returns the default database path inside the anna home.

func ModelConfigToAI added in v0.8.0

func ModelConfigToAI(provider string, m ModelConfig) ai.Model

ModelConfigToAI converts a ModelConfig to an ai.Model.

func ModelsCachePath added in v0.8.1

func ModelsCachePath() string

ModelsCachePath returns the path to the models.json cache file.

func ParseModelRef added in v0.8.0

func ParseModelRef(ref string) (provider, model string)

ParseModelRef splits a "provider/model" string into its parts. If the string contains no "/", it returns ("", ref) as fallback.

func PluginID added in v0.9.0

func PluginID(kind, name string) string

PluginID constructs a plugin ID from kind and name.

func ResetAnnaHome

func ResetAnnaHome()

ResetAnnaHome clears the cached AnnaHome value (for testing).

func SaveModelsCache added in v0.8.1

func SaveModelsCache(cache *ModelsCache) error

SaveModelsCache writes the models cache to the cache directory.

Types

type Agent added in v0.8.0

type Agent struct {
	ID           string        `json:"id"`
	Name         string        `json:"name"`
	Model        string        `json:"model"`
	ModelStrong  string        `json:"model_strong"`
	ModelFast    string        `json:"model_fast"`
	SystemPrompt string        `json:"system_prompt"`
	Workspace    string        `json:"workspace"`
	Sandbox      SandboxConfig `json:"sandbox"`
	Scope        string        `json:"scope"`
	CreatorID    int64         `json:"creator_id"`
	Enabled      bool          `json:"enabled"`
}

Agent represents an agent definition. Model fields use {provider}/{model} format (e.g. "anthropic/claude-sonnet-4-6").

type CachedModel added in v0.8.1

type CachedModel struct {
	Provider string `json:"provider"`
	Model    string `json:"model"`
}

CachedModel is the on-disk representation of a model in models.json.

type Channel added in v0.8.0

type Channel struct {
	ID      string `json:"id"`
	Type    string `json:"type"`
	AgentID string `json:"agent_id,omitempty"`
	Enabled bool   `json:"enabled"`
	Config  string `json:"config"`
}

Channel represents a platform channel configuration.

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 `json:"max_tokens"`
	// KeepTail is the number of recent message entries to preserve verbatim
	// after compaction. Default: 20.
	KeepTail int `json:"keep_tail"`
}

CompactionConfig controls automatic session compaction.

type DBStore added in v0.8.0

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

DBStore implements Store using sqlc queries backed by SQLite.

func NewDBStore added in v0.8.0

func NewDBStore(db *sql.DB) *DBStore

NewDBStore creates a new DBStore wrapping the given database connection. It sets MaxOpenConns(1) to mitigate SQLite concurrency issues.

func (*DBStore) CreateAgent added in v0.8.0

func (s *DBStore) CreateAgent(ctx context.Context, a Agent) error

func (*DBStore) CreateProvider added in v0.8.0

func (s *DBStore) CreateProvider(ctx context.Context, p Provider) error

func (*DBStore) DeleteAgent added in v0.8.0

func (s *DBStore) DeleteAgent(ctx context.Context, id string) error

func (*DBStore) DeleteChannel added in v0.10.0

func (s *DBStore) DeleteChannel(ctx context.Context, id string) error

func (*DBStore) DeleteChatAgent added in v0.8.0

func (s *DBStore) DeleteChatAgent(ctx context.Context, channelID, platform, chatID string) error

func (*DBStore) DeletePlugin added in v0.9.0

func (s *DBStore) DeletePlugin(ctx context.Context, id string) error

func (*DBStore) DeleteProvider added in v0.8.0

func (s *DBStore) DeleteProvider(ctx context.Context, id string) error

func (*DBStore) GetAgent added in v0.8.0

func (s *DBStore) GetAgent(ctx context.Context, id string) (Agent, error)

func (*DBStore) GetChannel added in v0.8.0

func (s *DBStore) GetChannel(ctx context.Context, id string) (Channel, error)

func (*DBStore) GetChatAgent added in v0.8.0

func (s *DBStore) GetChatAgent(ctx context.Context, channelID, platform, chatID string) (string, error)

func (*DBStore) GetPlugin added in v0.9.0

func (s *DBStore) GetPlugin(ctx context.Context, id string) (Plugin, error)

func (*DBStore) GetProvider added in v0.8.0

func (s *DBStore) GetProvider(ctx context.Context, id string) (Provider, error)

func (*DBStore) GetSetting added in v0.8.0

func (s *DBStore) GetSetting(ctx context.Context, key string) (string, error)

func (*DBStore) ListAgents added in v0.8.0

func (s *DBStore) ListAgents(ctx context.Context) ([]Agent, error)

func (*DBStore) ListChannels added in v0.8.0

func (s *DBStore) ListChannels(ctx context.Context) ([]Channel, error)

func (*DBStore) ListChannelsByType added in v0.10.0

func (s *DBStore) ListChannelsByType(ctx context.Context, channelType string) ([]Channel, error)

func (*DBStore) ListEnabledAgents added in v0.8.0

func (s *DBStore) ListEnabledAgents(ctx context.Context) ([]Agent, error)

func (*DBStore) ListEnabledPlugins added in v0.9.0

func (s *DBStore) ListEnabledPlugins(ctx context.Context) ([]Plugin, error)

func (*DBStore) ListPlugins added in v0.9.0

func (s *DBStore) ListPlugins(ctx context.Context) ([]Plugin, error)

func (*DBStore) ListPluginsByKind added in v0.9.0

func (s *DBStore) ListPluginsByKind(ctx context.Context, kind string) ([]Plugin, error)

func (*DBStore) ListProviders added in v0.8.0

func (s *DBStore) ListProviders(ctx context.Context) ([]Provider, error)

func (*DBStore) SeedDefaults added in v0.8.0

func (s *DBStore) SeedDefaults(ctx context.Context) error

SeedDefaults populates the DB with sensible defaults on first bootstrap. It is idempotent: if providers/agents already exist, it does nothing.

func (*DBStore) SetChatAgent added in v0.8.0

func (s *DBStore) SetChatAgent(ctx context.Context, channelID, platform, chatID, agentID string) error

func (*DBStore) SetPluginConfig added in v0.9.0

func (s *DBStore) SetPluginConfig(ctx context.Context, id string, config map[string]any) error

func (*DBStore) SetPluginEnabled added in v0.9.0

func (s *DBStore) SetPluginEnabled(ctx context.Context, id string, enabled bool) error

func (*DBStore) SetSetting added in v0.8.0

func (s *DBStore) SetSetting(ctx context.Context, key, value string) error

func (*DBStore) Snapshot added in v0.8.0

func (s *DBStore) Snapshot(ctx context.Context, agentID string) (*Snapshot, error)

func (*DBStore) UpdateAgent added in v0.8.0

func (s *DBStore) UpdateAgent(ctx context.Context, a Agent) error

func (*DBStore) UpdateProvider added in v0.8.0

func (s *DBStore) UpdateProvider(ctx context.Context, p Provider) error

func (*DBStore) UpsertChannel added in v0.8.0

func (s *DBStore) UpsertChannel(ctx context.Context, ch Channel) error

func (*DBStore) UpsertPlugin added in v0.9.0

func (s *DBStore) UpsertPlugin(ctx context.Context, p Plugin) error

type HeartbeatConfig

type HeartbeatConfig struct {
	Enabled *bool  `json:"enabled"`
	Every   string `json:"every"`
	File    string `json:"file"`
}

HeartbeatConfig configures periodic heartbeat checks.

func (HeartbeatConfig) FilePath

func (c HeartbeatConfig) FilePath(workspace string) string

FilePath resolves the configured heartbeat file relative to the workspace.

func (HeartbeatConfig) Interval

func (c HeartbeatConfig) Interval() string

Interval returns the configured heartbeat cadence.

func (HeartbeatConfig) IsEnabled

func (c HeartbeatConfig) IsEnabled() bool

IsEnabled returns whether heartbeat is enabled (defaults to false).

type ModelConfig

type ModelConfig struct {
	ID            string            `json:"id"`
	Name          string            `json:"name"`
	API           string            `json:"api"`
	Reasoning     bool              `json:"reasoning"`
	Input         []string          `json:"input"`
	ContextWindow int               `json:"context_window"`
	MaxTokens     int               `json:"max_tokens"`
	Headers       map[string]string `json:"headers"`
	Cost          *ModelCostConfig  `json:"cost"`
}

ModelConfig describes a model's metadata (used in model listing/caching).

type ModelCostConfig

type ModelCostConfig struct {
	Input      float64 `json:"input"`
	Output     float64 `json:"output"`
	CacheRead  float64 `json:"cache_read"`
	CacheWrite float64 `json:"cache_write"`
}

ModelCostConfig describes the cost of a model per million tokens.

type ModelsCache added in v0.8.1

type ModelsCache struct {
	UpdatedAt time.Time     `json:"updated_at"`
	Models    []CachedModel `json:"models"`
}

ModelsCache is the top-level structure for models.json in the cache directory.

func LoadModelsCache added in v0.8.1

func LoadModelsCache() (*ModelsCache, error)

LoadModelsCache reads the cached models from the workspace models.json.

type Plugin added in v0.9.0

type Plugin struct {
	ID      string         `json:"id"`
	Kind    string         `json:"kind"`
	Name    string         `json:"name"`
	Enabled bool           `json:"enabled"`
	Config  map[string]any `json:"config"`
}

Plugin represents a unified plugin entry stored in settings_plugins. IDs follow "kind/name" format, e.g. "tool/webfetch" or "channel/telegram".

type Provider added in v0.8.0

type Provider struct {
	ID      string                   `json:"id"`
	Type    string                   `json:"type"`
	Name    string                   `json:"name"`
	Enabled bool                     `json:"enabled"`
	APIKey  string                   `json:"api_key"`
	BaseURL string                   `json:"base_url"`
	Models  map[string]ProviderModel `json:"models,omitempty"`
}

Provider represents an LLM API provider.

type ProviderCreds added in v0.8.0

type ProviderCreds struct {
	Type    string
	APIKey  string
	BaseURL string
}

ProviderCreds holds credentials for a single provider.

type ProviderModel added in v0.10.0

type ProviderModel struct {
	ID            string            `json:"id,omitempty"`
	Name          string            `json:"name,omitempty"`
	Enabled       bool              `json:"enabled"`
	Reasoning     bool              `json:"reasoning,omitempty"`
	Input         []string          `json:"input,omitempty"`
	Output        []string          `json:"output,omitempty"`
	ContextWindow int               `json:"contextWindow,omitempty"`
	MaxTokens     int               `json:"maxTokens,omitempty"`
	Cost          ProviderModelCost `json:"cost,omitzero"`
}

type ProviderModelCost added in v0.10.0

type ProviderModelCost struct {
	Input      float64 `json:"input,omitempty"`
	Output     float64 `json:"output,omitempty"`
	CacheRead  float64 `json:"cacheRead,omitempty"`
	CacheWrite float64 `json:"cacheWrite,omitempty"`
}

type RunnerConfig

type RunnerConfig struct {
	Type        string           `json:"type"`
	System      string           `json:"system"`
	IdleTimeout int              `json:"idle_timeout"`
	Compaction  CompactionConfig `json:"compaction"`
}

RunnerConfig configures the agent runner.

type SandboxConfig added in v0.10.0

type SandboxConfig struct {
	Backend string               `json:"backend"`
	Network SandboxNetworkConfig `json:"network"`
}

SandboxConfig configures the sandbox backend.

func (SandboxConfig) BackendName added in v0.10.0

func (c SandboxConfig) BackendName() string

BackendName returns sandbox backend with defaults applied.

func (SandboxConfig) NetworkMode added in v0.10.0

func (c SandboxConfig) NetworkMode() string

NetworkMode returns the configured network mode with defaults applied.

func (SandboxConfig) Validate added in v0.10.0

func (c SandboxConfig) Validate() error

Validate returns an error when the sandbox configuration is invalid.

type SandboxNetworkConfig added in v0.10.0

type SandboxNetworkConfig struct {
	Mode      string   `json:"mode"`
	Allowlist []string `json:"allowlist"`
}

SandboxNetworkConfig configures sandbox network access.

type SchedulerConfig added in v0.6.2

type SchedulerConfig struct {
	Enabled *bool  `json:"enabled"`
	DataDir string `json:"data_dir"`
}

SchedulerConfig configures the scheduler subsystem.

func (SchedulerConfig) IsEnabled added in v0.6.2

func (c SchedulerConfig) IsEnabled() bool

IsEnabled returns whether the scheduler is enabled (defaults to true).

type Snapshot added in v0.8.0

type Snapshot struct {
	AgentID string // the agent ID this snapshot belongs to

	// Provider, APIKey, BaseURL are the default provider credentials derived
	// from the Model field's provider prefix. Kept for backward compatibility.
	Provider     string
	Model        string
	ModelStrong  string
	ModelFast    string
	Workspace    string
	Sandbox      SandboxConfig
	APIKey       string
	BaseURL      string
	SystemPrompt string // agent's soul/personality from DB
	Runner       RunnerConfig
	Compaction   CompactionConfig
	Heartbeat    HeartbeatConfig
	Scheduler    SchedulerConfig
	Plugins      []Plugin

	// Providers maps provider ID to credentials, enabling per-tier provider
	// resolution when model_strong or model_fast use a different provider.
	Providers map[string]ProviderCreds
}

Snapshot is a read-only config snapshot assembled from DB for downstream consumption. It replaces the old *Config for code that needs provider/model information for a specific agent.

func (*Snapshot) LogPath added in v0.8.0

func (s *Snapshot) LogPath() string

LogPath returns the log file path inside the workspace.

func (*Snapshot) ResolveModel added in v0.8.0

func (s *Snapshot) ResolveModel() ai.Model

ResolveModel returns the ai.Model for the default (strong) tier.

func (*Snapshot) ResolveModelID added in v0.8.0

func (s *Snapshot) ResolveModelID(tier string) string

ResolveModelID returns the model ID string for the given tier, falling back to Model if the tier-specific value is not set.

func (*Snapshot) ResolveModelTier added in v0.8.0

func (s *Snapshot) ResolveModelTier(tier string) ai.Model

ResolveModelTier returns the ai.Model for the given tier, constructing a minimal Model from the snapshot's provider and model information. It parses the provider from the model ref and looks up per-provider credentials from the Providers map.

func (*Snapshot) ResolveProviderCreds added in v0.8.0

func (s *Snapshot) ResolveProviderCreds(providerID string) ProviderCreds

ResolveProviderCreds returns the API key and base URL for the given provider ID, falling back to the default Provider credentials.

func (*Snapshot) SkillsPath added in v0.8.0

func (s *Snapshot) SkillsPath() string

SkillsPath returns the skills directory inside the workspace.

type Store added in v0.8.0

type Store interface {
	// Providers
	ListProviders(ctx context.Context) ([]Provider, error)
	GetProvider(ctx context.Context, id string) (Provider, error)
	CreateProvider(ctx context.Context, p Provider) error
	UpdateProvider(ctx context.Context, p Provider) error
	DeleteProvider(ctx context.Context, id string) error

	// Agents
	ListAgents(ctx context.Context) ([]Agent, error)
	ListEnabledAgents(ctx context.Context) ([]Agent, error)
	GetAgent(ctx context.Context, id string) (Agent, error)
	CreateAgent(ctx context.Context, a Agent) error
	UpdateAgent(ctx context.Context, a Agent) error
	DeleteAgent(ctx context.Context, id string) error

	// Channels
	ListChannels(ctx context.Context) ([]Channel, error)
	ListChannelsByType(ctx context.Context, channelType string) ([]Channel, error)
	GetChannel(ctx context.Context, id string) (Channel, error)
	UpsertChannel(ctx context.Context, ch Channel) error
	DeleteChannel(ctx context.Context, id string) error

	// Plugins
	ListPlugins(ctx context.Context) ([]Plugin, error)
	ListPluginsByKind(ctx context.Context, kind string) ([]Plugin, error)
	ListEnabledPlugins(ctx context.Context) ([]Plugin, error)
	GetPlugin(ctx context.Context, id string) (Plugin, error)
	UpsertPlugin(ctx context.Context, p Plugin) error
	SetPluginEnabled(ctx context.Context, id string, enabled bool) error
	SetPluginConfig(ctx context.Context, id string, config map[string]any) error
	DeletePlugin(ctx context.Context, id string) error

	// Chat Agents (group -> agent mapping)
	GetChatAgent(ctx context.Context, channelID, platform, chatID string) (string, error) // returns agentID
	SetChatAgent(ctx context.Context, channelID, platform, chatID, agentID string) error
	DeleteChatAgent(ctx context.Context, channelID, platform, chatID string) error

	// Settings (key-value JSON)
	GetSetting(ctx context.Context, key string) (string, error) // returns JSON string
	SetSetting(ctx context.Context, key, value string) error

	// Snapshot assembles a read-only config snapshot for an agent.
	Snapshot(ctx context.Context, agentID string) (*Snapshot, error)

	// Bootstrap
	SeedDefaults(ctx context.Context) error
}

Store provides typed access to configuration stored in the database.

Jump to

Keyboard shortcuts

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