/** * Declarative Soma configuration ("Config as Code"). * * These types and the `defineSomaConfig` helper let client projects declare * their organization's skills and agents in a type-safe, git-tracked file * (e.g. `soma.config.ts`) that the `zea soma sync` command compiles and sends * to the Soma backend for idempotent upsert. */ interface SkillSpec { /** Unique skill name (e.g. `fund-management`). */ name: string; /** Human-readable description of what the skill does. */ description?: string; /** Path to the skill definition file (e.g. `./skills/fund-management/SKILL.md`). */ filePath?: string; /** Inline skill content. Mutually exclusive with `filePath` in practice. */ content?: string; } interface AgentSpec { /** Unique agent id (e.g. `fund-management-copilot`). */ id: string; /** Display name for the agent. */ name: string; /** Engine that runs the agent. */ engine?: 'pi' | 'react' | 'opencode'; /** Model backing the agent. Known values are suggested for autocomplete; any string is accepted. */ model?: 'deepseek-v4-pro' | 'gpt-4o' | 'claude-sonnet-4-20250514' | (string & {}); /** System prompt that primes the agent's behavior. */ systemPrompt?: string; /** Names of skills assigned to this agent. */ skills?: string[]; } interface SomaConfig { /** Organization slug (e.g. `zea`). */ organization: string; skills?: SkillSpec[]; agents?: AgentSpec[]; } /** * Validates a declarative Soma configuration and returns it unchanged. * * The validation is intentionally lightweight and dependency-free: it asserts * the required fields (`organization`, and `name`/`id` on each skill/agent) * so invalid configs fail fast at sync time instead of silently producing * a partial upsert on the backend. */ declare function defineSomaConfig(config: SomaConfig): SomaConfig; export { type AgentSpec, type SkillSpec, type SomaConfig, defineSomaConfig };