// Package config implementiert die geschichtete Konfiguration aus // Abschnitt 4.7: Defaults -> ~/.config/nub/config.toml -> /.nub/config.toml // -> Umgebungsvariablen. Spätere Schicht gewinnt. package config import "nub/internal/llm/registry" type Config struct { Version int `toml:"version"` Model ModelConfig `toml:"model"` Endpoints []Endpoint `toml:"endpoint"` Context ContextConfig `toml:"context"` Skills SkillsConfig `toml:"skills"` MCP []MCPServer `toml:"mcp"` Profiles map[string][]string `toml:"profiles"` Permissions PermissionsConfig `toml:"permissions"` } type ModelConfig struct { Default string `toml:"default"` Endpoint string `toml:"endpoint"` } type Endpoint struct { Name string `toml:"name"` BaseURL string `toml:"base_url"` APIKey string `toml:"api_key"` Caps registry.CapsOverride `toml:"caps"` } type ContextConfig struct { Files []string `toml:"files"` WalkUp bool `toml:"walk_up"` MaxTokens int `toml:"max_tokens"` } type SkillsConfig struct { Paths []string `toml:"paths"` } type MCPServer struct { Name string `toml:"name"` Command string `toml:"command"` Args []string `toml:"args"` URL string `toml:"url"` Tools []string `toml:"tools"` } type PermissionsConfig struct { Read string `toml:"read"` Glob string `toml:"glob"` Grep string `toml:"grep"` Write string `toml:"write"` Edit string `toml:"edit"` Bash string `toml:"bash"` DenyPaths []string `toml:"deny_paths"` DenyBash []string `toml:"deny_bash"` } // Defaults liefert die Konfiguration, die ohne jede Config-Datei gilt. func Defaults() Config { return Config{ Version: 1, Model: ModelConfig{Default: "gpt-4o", Endpoint: "openai"}, Endpoints: []Endpoint{ {Name: "openai", BaseURL: "https://api.openai.com/v1", APIKey: "env:OPENAI_API_KEY"}, }, Context: ContextConfig{ Files: []string{"AGENTS.md", "REPOMAP.md"}, WalkUp: true, MaxTokens: 20000, }, Skills: SkillsConfig{ Paths: []string{"~/.nub/skills", ".nub/skills"}, }, Permissions: PermissionsConfig{ Read: "auto", Glob: "auto", Grep: "auto", Write: "auto", Edit: "auto", Bash: "auto", DenyPaths: []string{".git/**", "**/.env", "**/id_rsa*"}, }, } }