Documentation
¶
Index ¶
- Constants
- func UpgradeIfNeeded(c any) (any, error)
- type APIToolConfig
- type AgentConfig
- type Config
- type Metadata
- type ModelConfig
- type PostEditConfig
- type RAGChunkingConfig
- type RAGConfig
- type RAGDatabaseConfig
- type RAGFusionConfig
- type RAGResultsConfig
- type RAGStrategyConfig
- type Remote
- type ScriptShellToolConfig
- type StructuredOutput
- type ThinkingBudget
- type Toolset
Constants ¶
const Version = "2"
Variables ¶
This section is empty.
Functions ¶
func UpgradeIfNeeded ¶ added in v1.9.22
Types ¶
type APIToolConfig ¶ added in v1.9.11
type APIToolConfig struct {
Instruction string `json:"instruction,omitempty"`
Name string `json:"name,omitempty"`
Required []string `json:"required,omitempty"`
Args map[string]any `json:"args,omitempty"`
Endpoint string `json:"endpoint,omitempty"`
Method string `json:"method,omitempty"`
Headers map[string]string `json:"headers,omitempty"`
}
type AgentConfig ¶
type AgentConfig struct {
Model string `json:"model,omitempty"`
Description string `json:"description,omitempty"`
WelcomeMessage string `json:"welcome_message,omitempty"`
Toolsets []Toolset `json:"toolsets,omitempty"`
Instruction string `json:"instruction,omitempty"`
SubAgents []string `json:"sub_agents,omitempty"`
Handoffs []string `json:"handoffs,omitempty"`
RAG []string `json:"rag,omitempty"`
AddDate bool `json:"add_date,omitempty"`
AddEnvironmentInfo bool `json:"add_environment_info,omitempty"`
CodeModeTools bool `json:"code_mode_tools,omitempty"`
MaxIterations int `json:"max_iterations,omitempty"`
NumHistoryItems int `json:"num_history_items,omitempty"`
AddPromptFiles []string `json:"add_prompt_files,omitempty" yaml:"add_prompt_files,omitempty"`
Commands types.Commands `json:"commands,omitempty"`
StructuredOutput *StructuredOutput `json:"structured_output,omitempty"`
}
AgentConfig represents a single agent configuration
type Config ¶
type Config struct {
Version string `json:"version,omitempty"`
Agents map[string]AgentConfig `json:"agents,omitempty"`
Models map[string]ModelConfig `json:"models,omitempty"`
RAG map[string]RAGConfig `json:"rag,omitempty"`
Metadata Metadata `json:"metadata,omitempty"`
}
Config represents the entire configuration file
type ModelConfig ¶
type ModelConfig struct {
Provider string `json:"provider,omitempty"`
Model string `json:"model,omitempty"`
Temperature *float64 `json:"temperature,omitempty"`
MaxTokens int `json:"max_tokens,omitempty"`
TopP *float64 `json:"top_p,omitempty"`
FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"`
PresencePenalty *float64 `json:"presence_penalty,omitempty"`
BaseURL string `json:"base_url,omitempty"`
ParallelToolCalls *bool `json:"parallel_tool_calls,omitempty"`
TokenKey string `json:"token_key,omitempty"`
// ProviderOpts allows provider-specific options. Currently used for "dmr" provider only.
ProviderOpts map[string]any `json:"provider_opts,omitempty"`
TrackUsage *bool `json:"track_usage,omitempty"`
// ThinkingBudget controls reasoning effort/budget:
// - For OpenAI: accepts string levels "minimal", "low", "medium", "high"
// - For Anthropic: accepts integer token budget (1024-32000)
// - For other providers: may be ignored
ThinkingBudget *ThinkingBudget `json:"thinking_budget,omitempty"`
}
ModelConfig represents the configuration for a model
type PostEditConfig ¶ added in v1.2.0
PostEditConfig represents a post-edit command configuration
type RAGChunkingConfig ¶ added in v1.9.16
type RAGChunkingConfig struct {
Size int `json:"size,omitempty"`
Overlap int `json:"overlap,omitempty"`
RespectWordBoundaries bool `json:"respect_word_boundaries,omitempty"`
}
RAGChunkingConfig represents text chunking configuration
func (*RAGChunkingConfig) UnmarshalYAML ¶ added in v1.9.22
func (c *RAGChunkingConfig) UnmarshalYAML(unmarshal func(any) error) error
UnmarshalYAML implements custom unmarshaling to apply sensible defaults for chunking
type RAGConfig ¶ added in v1.9.16
type RAGConfig struct {
Description string `json:"description,omitempty"`
Docs []string `json:"docs,omitempty"` // Shared documents across all strategies
Strategies []RAGStrategyConfig `json:"strategies,omitempty"` // Array of strategy configurations
Results RAGResultsConfig `json:"results,omitempty"`
}
RAGConfig represents a RAG (Retrieval-Augmented Generation) configuration Uses a unified strategies array for flexible, extensible configuration
type RAGDatabaseConfig ¶ added in v1.9.16
type RAGDatabaseConfig struct {
// contains filtered or unexported fields
}
RAGDatabaseConfig represents database configuration for RAG strategies. Currently it only supports a single string value which is interpreted as the path to a SQLite database file.
func (*RAGDatabaseConfig) AsString ¶ added in v1.9.16
func (d *RAGDatabaseConfig) AsString() (string, error)
AsString returns the database config as a connection string For simple string configs, returns as-is For structured configs, builds connection string based on type
func (*RAGDatabaseConfig) IsEmpty ¶ added in v1.9.16
func (d *RAGDatabaseConfig) IsEmpty() bool
IsEmpty returns true if no database is configured
func (*RAGDatabaseConfig) UnmarshalYAML ¶ added in v1.9.16
func (d *RAGDatabaseConfig) UnmarshalYAML(unmarshal func(any) error) error
UnmarshalYAML implements custom unmarshaling for DatabaseConfig
type RAGFusionConfig ¶ added in v1.9.16
type RAGFusionConfig struct {
Strategy string `json:"strategy,omitempty"` // Fusion strategy: "rrf" (Reciprocal Rank Fusion), "weighted", "max"
K int `json:"k,omitempty"` // RRF parameter k (default: 60)
Weights map[string]float64 `json:"weights,omitempty"` // Strategy weights for weighted fusion
}
RAGFusionConfig represents configuration for combining multi-strategy results
type RAGResultsConfig ¶ added in v1.9.16
type RAGResultsConfig struct {
Limit int `json:"limit,omitempty"` // Maximum number of results to return (top K)
Fusion *RAGFusionConfig `json:"fusion,omitempty"` // How to combine results from multiple strategies
Deduplicate bool `json:"deduplicate,omitempty"` // Remove duplicate documents across strategies
IncludeScore bool `json:"include_score,omitempty"` // Include relevance scores in results
ReturnFullContent bool `json:"return_full_content,omitempty"` // Return full document content instead of just matched chunks
}
RAGResultsConfig represents result post-processing configuration (common across strategies)
func (*RAGResultsConfig) UnmarshalYAML ¶ added in v1.9.16
func (r *RAGResultsConfig) UnmarshalYAML(unmarshal func(any) error) error
UnmarshalYAML implements custom unmarshaling so we can apply sensible defaults
type RAGStrategyConfig ¶ added in v1.9.16
type RAGStrategyConfig struct {
Type string `json:"type"` // Strategy type: "chunked-embeddings", "bm25", etc.
Docs []string `json:"docs,omitempty"` // Strategy-specific documents (augments shared docs)
Database RAGDatabaseConfig `json:"database,omitempty"` // Database configuration
Chunking RAGChunkingConfig `json:"chunking,omitempty"` // Chunking configuration
Limit int `json:"limit,omitempty"` // Max results from this strategy (for fusion input)
// Strategy-specific parameters (arbitrary key-value pairs)
// Examples:
// - chunked-embeddings: model, similarity_metric, threshold, vector_dimensions
// - bm25: k1, b, threshold
Params map[string]any // Flattened into parent JSON
}
RAGStrategyConfig represents a single retrieval strategy configuration Strategy-specific fields are stored in Params (validated by strategy implementation)
func (*RAGStrategyConfig) UnmarshalYAML ¶ added in v1.9.16
func (s *RAGStrategyConfig) UnmarshalYAML(unmarshal func(any) error) error
UnmarshalYAML implements custom unmarshaling to capture all extra fields into Params This allows strategies to have flexible, strategy-specific configuration parameters without requiring changes to the core config schema
type ScriptShellToolConfig ¶
type ScriptShellToolConfig struct {
Cmd string `json:"cmd"`
Description string `json:"description"`
// Args is directly passed as "properties" in the JSON schema
Args map[string]any `json:"args,omitempty"`
// Required is directly passed as "required" in the JSON schema
Required []string `json:"required"`
Env map[string]string `json:"env,omitempty"`
WorkingDir string `json:"working_dir,omitempty"`
}
ScriptShellToolConfig represents a custom shell tool configuration
type StructuredOutput ¶ added in v1.7.1
type StructuredOutput struct {
// Name is the name of the response format
Name string `json:"name"`
// Description is optional description of the response format
Description string `json:"description,omitempty"`
// Schema is a JSON schema object defining the structure
Schema map[string]any `json:"schema"`
// Strict enables strict schema adherence (OpenAI only)
Strict bool `json:"strict,omitempty"`
}
StructuredOutput defines a JSON schema for structured output
type ThinkingBudget ¶ added in v1.7.0
type ThinkingBudget struct {
// Effort stores string-based reasoning effort levels
Effort string `json:"effort,omitempty"`
// Tokens stores integer-based token budgets
Tokens int `json:"tokens,omitempty"`
}
ThinkingBudget represents reasoning budget configuration. It accepts either a string effort level or an integer token budget: - String: "minimal", "low", "medium", "high" (for OpenAI) - Integer: token count (for Anthropic, range 1024-32768)
func (ThinkingBudget) MarshalJSON ¶ added in v1.9.30
func (t ThinkingBudget) MarshalJSON() ([]byte, error)
MarshalJSON implements custom marshaling to output simple string or int format This ensures JSON serialization during config upgrades preserves the value correctly
func (*ThinkingBudget) UnmarshalJSON ¶ added in v1.9.30
func (t *ThinkingBudget) UnmarshalJSON(data []byte) error
UnmarshalJSON implements custom unmarshaling to accept simple string or int format
func (*ThinkingBudget) UnmarshalYAML ¶ added in v1.7.0
func (t *ThinkingBudget) UnmarshalYAML(unmarshal func(any) error) error
type Toolset ¶
type Toolset struct {
Type string `json:"type,omitempty"`
Tools []string `json:"tools,omitempty"`
Instruction string `json:"instruction,omitempty"`
Toon string `json:"toon,omitempty"`
// For the `mcp` tool
Command string `json:"command,omitempty"`
Args []string `json:"args,omitempty"`
Ref string `json:"ref,omitempty"`
Remote Remote `json:"remote,omitempty"`
Config any `json:"config,omitempty"`
// For `shell`, `script` or `mcp` tools
Env map[string]string `json:"env,omitempty"`
Shared bool `json:"shared,omitempty"`
// For the `memory` tool
Path string `json:"path,omitempty"`
// For the `script` tool
Shell map[string]ScriptShellToolConfig `json:"shell,omitempty"`
// For the `filesystem` tool - post-edit commands
PostEdit []PostEditConfig `json:"post_edit,omitempty"`
APIConfig APIToolConfig `json:"api_config"`
// For the `filesystem` tool - VCS integration
IgnoreVCS *bool `json:"ignore_vcs,omitempty"`
// For the `fetch` tool
Timeout int `json:"timeout,omitempty"`
}
Toolset represents a tool configuration