Documentation
¶
Overview ¶
Package config defines the amoxtli workspace configuration file (.amoxtli/config.yaml): parsing, environment variable interpolation and validation. The mapping of each field to the library API lives in internal/cli/runtime.
Index ¶
- Constants
- Variables
- func ExpandEnv(s string, lookup func(string) (string, bool)) (string, error)
- type ClientConfig
- type CodeIndexingConfig
- type Config
- type ConverterConfig
- type DecompositionConfig
- type FulltextIndexConfig
- type GenAIConverterConfig
- type IndexConfig
- type IndexingConfig
- type IterativeConfig
- type LLMConfig
- type LibreOfficeConfig
- type PandocConfig
- type RetrievalConfig
- type StoreConfig
- type Toggle
- type VectorIndexConfig
Constants ¶
const Template = `` /* 3506-byte string literal not displayed */
Template is the commented configuration written by "amoxtli init". It must stay loadable as-is (comments are not expanded, see ExpandEnv).
Variables ¶
var SupportedProviders = []string{"openai", "openrouter", "mistral"}
SupportedProviders lists the llm.chat / llm.embeddings providers the CLI can wire. All share provider.CommonOptions (model, base_url, api_key).
Functions ¶
func ExpandEnv ¶
ExpandEnv expands $VAR and ${VAR} references in s using lookup, supporting the ${VAR:-default} fallback syntax and $$ as a literal dollar escape. A reference to an undefined variable without a default is an error (fail fast rather than silently injecting an empty secret).
Full-line comments (lines whose first non-blank character is '#') are left untouched, so configuration examples in comments are not expanded.
Types ¶
type ClientConfig ¶
type CodeIndexingConfig ¶ added in v0.0.4
type CodeIndexingConfig struct {
// Enabled accepts true, false or "auto"; auto (the default) enables
// source-code indexing (it is pure Go and needs no external tool). Source
// files are split into declaration-level sections and tagged with
// `type=code` and `language=<name>` metadata, filterable at search time.
Enabled Toggle `yaml:"enabled"`
// Extensions extends or overrides the built-in extension→language mapping,
// e.g. {".phtml": "php"}. Languages: go, javascript, typescript, tsx,
// python, php.
Extensions map[string]string `yaml:"extensions"`
}
type Config ¶
type Config struct {
Version int `yaml:"version"`
Store StoreConfig `yaml:"store"`
Index IndexConfig `yaml:"index"`
LLM LLMConfig `yaml:"llm"`
Retrieval RetrievalConfig `yaml:"retrieval"`
Converter ConverterConfig `yaml:"converter"`
Indexing IndexingConfig `yaml:"indexing"`
}
func Default ¶
func Default() *Config
Default returns the configuration used when a field is absent from the file; zero numeric values defer to the library defaults.
func Load ¶
Load reads, expands and validates the configuration file at path. Variable references are resolved against the process environment, then against an optional .env file sitting next to the configuration file.
func Parse ¶
Parse expands and decodes a raw configuration document, then validates it. Unknown fields are rejected to catch typos early.
func (*Config) CodeEnabled ¶ added in v0.0.4
CodeEnabled resolves the source-code indexing toggle; it defaults to enabled (pure Go, no external dependency).
func (*Config) HasEmbeddings ¶
HasEmbeddings reports whether an embeddings client is configured.
func (*Config) Validate ¶
Validate checks cross-field constraints and rejects combinations that would fail later with an obscure error.
func (*Config) VectorEnabled ¶
VectorEnabled resolves the vector index toggle against the presence of an embeddings client.
type ConverterConfig ¶
type ConverterConfig struct {
Pandoc PandocConfig `yaml:"pandoc"`
LibreOffice LibreOfficeConfig `yaml:"libreoffice"`
GenAI GenAIConverterConfig `yaml:"genai"`
}
type DecompositionConfig ¶
type FulltextIndexConfig ¶
type GenAIConverterConfig ¶
type GenAIConverterConfig struct {
// Enabled turns on the GenAI (OCR/LLM) converter. It is opt-in: a DSN and
// at least one extension are required.
Enabled bool `yaml:"enabled"`
// DSN selects the extraction backend, e.g. mistral://?apiKey=${MISTRAL_API_KEY}
// or marker://host:port.
DSN string `yaml:"dsn"`
// Extensions are routed to this converter (e.g. .pdf, .png, .jpg).
Extensions []string `yaml:"extensions"`
}
type IndexConfig ¶
type IndexConfig struct {
Fulltext FulltextIndexConfig `yaml:"fulltext"`
Vector VectorIndexConfig `yaml:"vector"`
}
type IndexingConfig ¶
type IndexingConfig struct {
MaxWordsPerSection int `yaml:"max_words_per_section"`
TaskParallelism int `yaml:"task_parallelism"`
PersistentTasks bool `yaml:"persistent_tasks"`
Code CodeIndexingConfig `yaml:"code"`
}
type IterativeConfig ¶
type LLMConfig ¶
type LLMConfig struct {
Chat *ClientConfig `yaml:"chat"`
Embeddings *ClientConfig `yaml:"embeddings"`
}
type LibreOfficeConfig ¶
type LibreOfficeConfig struct {
// Enabled accepts true, false or "auto"; auto enables the LibreOffice
// converter when both the libreoffice and pandoc binaries are found. It
// supersedes the standalone pandoc converter, adding .doc support.
Enabled Toggle `yaml:"enabled"`
}
type PandocConfig ¶
type PandocConfig struct {
// Enabled accepts true, false or "auto"; auto enables the pandoc
// converter when the binary is found in the PATH.
Enabled Toggle `yaml:"enabled"`
}
type RetrievalConfig ¶
type RetrievalConfig struct {
Reranking bool `yaml:"reranking"`
GroundingCheck bool `yaml:"grounding_check"`
GroundingFailOpen bool `yaml:"grounding_fail_open"`
// MaxTotalWords bounds the prompt size (in words) of the LLM retrieval
// stages (reranker, judge, evidence evaluator). Keep it low enough that the
// resulting prompt fits your chat endpoint's context window: words are only
// a coarse proxy for tokens (~1.8 tokens/word on mixed prose and code), so
// 18000 words already overflow a 32k-token limit. Zero defers to the
// library default (12000).
MaxTotalWords int `yaml:"max_total_words"`
Iterative IterativeConfig `yaml:"iterative"`
Decomposition DecompositionConfig `yaml:"decomposition"`
}
type StoreConfig ¶
type Toggle ¶
type Toggle string
Toggle is a tri-state flag accepting true, false or "auto" in YAML.
type VectorIndexConfig ¶
type VectorIndexConfig struct {
// Enabled accepts true, false or "auto"; auto enables the vector index
// when an embeddings client is configured.
Enabled Toggle `yaml:"enabled"`
Path string `yaml:"path"`
Weight float64 `yaml:"weight"`
VectorSize int `yaml:"vector_size"`
MaxWords int `yaml:"max_words"`
// EmbeddingsConcurrency bounds how many embedding batches are computed in
// parallel for a single document. It is the main lever for large-file
// indexing latency (one big file is a single task, so cross-file parallelism
// does not help it). Raise it if your embeddings endpoint tolerates more
// concurrent requests; lower it to avoid rate limiting (429). 0 defers to the
// library default.
EmbeddingsConcurrency int `yaml:"embeddings_concurrency"`
}