import { z } from "zod"; export declare const taskBindingSchema: z.ZodObject<{ provider: z.ZodString; model: z.ZodString; }, "strip", z.ZodTypeAny, { model: string; provider: string; }, { model: string; provider: string; }>; export declare const providerEntrySchema: z.ZodObject<{ package: z.ZodString; enabled: z.ZodDefault; config: z.ZodDefault>; }, "strip", z.ZodTypeAny, { package: string; enabled: boolean; config: Record; }, { package: string; enabled?: boolean | undefined; config?: Record | undefined; }>; export declare const adapterEntrySchema: z.ZodObject<{ package: z.ZodString; enabled: z.ZodDefault; schedule: z.ZodOptional; config: z.ZodDefault>; }, "strip", z.ZodTypeAny, { package: string; enabled: boolean; config: Record; schedule?: string | undefined; }, { package: string; enabled?: boolean | undefined; config?: Record | undefined; schedule?: string | undefined; }>; export declare const memoryBackendName: z.ZodEnum<["engram", "pgvector"]>; export declare const memoryConfigSchema: z.ZodDefault>; /** Optional fallback backend. Omit or set equal to primary for none. */ fallback: z.ZodOptional>; engram: z.ZodDefault; args: z.ZodDefault>; env: z.ZodDefault>; }, "strip", z.ZodTypeAny, { args: string[]; env: Record; command?: string | undefined; }, { command?: string | undefined; args?: string[] | undefined; env?: Record | undefined; }>>; pgvector: z.ZodDefault>; connectionString: z.ZodOptional; /** * Filesystem path for the embedded PGlite database. Required * when mode='embedded'; ignored otherwise. Path can be relative * (resolved against cwd at boot) or absolute. */ dataDir: z.ZodOptional; table: z.ZodDefault; embeddingDim: z.ZodDefault; /** Task id to use when calling router.embed(). Default: 'embed'. */ embedTask: z.ZodDefault; /** * Force the bundled local Xenova embedder even when an LLM router * is configured. Set true when your chosen LLM provider doesn't * have an embedding model — most common case: Azure OpenAI behind * the openrouter shim, where the configured chat model * (gpt-4o-mini) is not an embedding model and Azure embedding * deployments are a separate resource. Without this, every * kb_search query 500s with `Provider does not support embeddings`. * Default false to preserve behavior for operators with * embedding-capable providers (real OpenRouter, Ollama with an * embedding model loaded, etc.). */ useLocalEmbedder: z.ZodDefault; }, "strip", z.ZodTypeAny, { table: string; embeddingDim: number; mode: "external" | "embedded"; embedTask: string; useLocalEmbedder: boolean; connectionString?: string | undefined; dataDir?: string | undefined; }, { table?: string | undefined; embeddingDim?: number | undefined; connectionString?: string | undefined; mode?: "external" | "embedded" | undefined; dataDir?: string | undefined; embedTask?: string | undefined; useLocalEmbedder?: boolean | undefined; }>>; }, "strip", z.ZodTypeAny, { pgvector: { table: string; embeddingDim: number; mode: "external" | "embedded"; embedTask: string; useLocalEmbedder: boolean; connectionString?: string | undefined; dataDir?: string | undefined; }; engram: { args: string[]; env: Record; command?: string | undefined; }; primary: "pgvector" | "engram"; fallback?: "pgvector" | "engram" | undefined; }, { pgvector?: { table?: string | undefined; embeddingDim?: number | undefined; connectionString?: string | undefined; mode?: "external" | "embedded" | undefined; dataDir?: string | undefined; embedTask?: string | undefined; useLocalEmbedder?: boolean | undefined; } | undefined; engram?: { command?: string | undefined; args?: string[] | undefined; env?: Record | undefined; } | undefined; primary?: "pgvector" | "engram" | undefined; fallback?: "pgvector" | "engram" | undefined; }>>; export declare const webhooksConfigSchema: z.ZodDefault; /** Bind host. 0.0.0.0 so a reverse proxy / Tailscale Funnel can forward. */ host: z.ZodDefault; port: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; host: string; port: number; }, { enabled?: boolean | undefined; host?: string | undefined; port?: number | undefined; }>>; export declare const apiConfigSchema: z.ZodDefault; /** * Bind host. Localhost by default because the dashboard is a per-user * local app; exposing the API over a LAN/Tailscale is an opt-in move. * Remote installs override to 0.0.0.0. */ host: z.ZodDefault; port: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; host: string; port: number; }, { enabled?: boolean | undefined; host?: string | undefined; port?: number | undefined; }>>; export declare const mcpConfigSchema: z.ZodDefault>; /** * Host to bind when transport='http'. 127.0.0.1 by default for * local installs; remote deploys override to 0.0.0.0 (firewall * or reverse proxy in front). */ host: z.ZodDefault; port: z.ZodDefault; }, "strip", z.ZodTypeAny, { host: string; port: number; transport: "stdio" | "http"; }, { host?: string | undefined; port?: number | undefined; transport?: "stdio" | "http" | undefined; }>>; /** * Per-extractor opt-in config (ADR-020). Each key is an extractor name. * Off by default — omitting the key or setting `enabled: false` disables * the extractor. Only takes effect when an LLM provider is configured. * Available extractors: `summary`, `keywords`. */ export declare const extractorEntrySchema: z.ZodObject<{ enabled: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; }, { enabled?: boolean | undefined; }>; export declare const extractorsConfigSchema: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; }, { enabled?: boolean | undefined; }>>; /** LLM-extracted domain terms/acronyms/jargon → metadata.keywords[] */ keywords: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; }, { enabled?: boolean | undefined; }>>; }, "strip", z.ZodTypeAny, { summary: { enabled: boolean; }; keywords: { enabled: boolean; }; }, { summary?: { enabled?: boolean | undefined; } | undefined; keywords?: { enabled?: boolean | undefined; } | undefined; }>>; export type ExtractorsConfig = z.infer; export type ExtractorEntry = z.infer; /** * Customer-extensible memory taxonomy. Built-in canonical types are * defined in `@onenomad/przm-cortex-core > BUILT_IN_MEMORY_TYPES`; this * stanza adds per-workspace types on top. `source: "auto"` entries * are the ones the ingest path registered from unknown classifier * output — operators promote them to `"config"` (or delete them) from * the dashboard's Memory Types tab. */ export declare const customMemoryTypeSchema: z.ZodObject<{ slug: z.ZodString; label: z.ZodOptional; description: z.ZodOptional; source: z.ZodDefault>; }, "strip", z.ZodTypeAny, { source: "config" | "auto"; slug: string; label?: string | undefined; description?: string | undefined; }, { slug: string; source?: "config" | "auto" | undefined; label?: string | undefined; description?: string | undefined; }>; export declare const taxonomyConfigSchema: z.ZodDefault; description: z.ZodOptional; source: z.ZodDefault>; }, "strip", z.ZodTypeAny, { source: "config" | "auto"; slug: string; label?: string | undefined; description?: string | undefined; }, { slug: string; source?: "config" | "auto" | undefined; label?: string | undefined; description?: string | undefined; }>, "many">>; }, "strip", z.ZodTypeAny, { customTypes: { source: "config" | "auto"; slug: string; label?: string | undefined; description?: string | undefined; }[]; }, { customTypes?: { slug: string; source?: "config" | "auto" | undefined; label?: string | undefined; description?: string | undefined; }[] | undefined; }>>; export declare const cortexConfigSchema: z.ZodObject<{ llm: z.ZodObject<{ providers: z.ZodRecord; config: z.ZodDefault>; }, "strip", z.ZodTypeAny, { package: string; enabled: boolean; config: Record; }, { package: string; enabled?: boolean | undefined; config?: Record | undefined; }>>; tasks: z.ZodEffects>, Record, Record>; fallbackChain: z.ZodDefault>; }, "strip", z.ZodTypeAny, { providers: Record; }>; tasks: Record; fallbackChain: string[]; }, { providers: Record | undefined; }>; tasks: Record; fallbackChain?: string[] | undefined; }>; memory: z.ZodDefault>; /** Optional fallback backend. Omit or set equal to primary for none. */ fallback: z.ZodOptional>; engram: z.ZodDefault; args: z.ZodDefault>; env: z.ZodDefault>; }, "strip", z.ZodTypeAny, { args: string[]; env: Record; command?: string | undefined; }, { command?: string | undefined; args?: string[] | undefined; env?: Record | undefined; }>>; pgvector: z.ZodDefault>; connectionString: z.ZodOptional; /** * Filesystem path for the embedded PGlite database. Required * when mode='embedded'; ignored otherwise. Path can be relative * (resolved against cwd at boot) or absolute. */ dataDir: z.ZodOptional; table: z.ZodDefault; embeddingDim: z.ZodDefault; /** Task id to use when calling router.embed(). Default: 'embed'. */ embedTask: z.ZodDefault; /** * Force the bundled local Xenova embedder even when an LLM router * is configured. Set true when your chosen LLM provider doesn't * have an embedding model — most common case: Azure OpenAI behind * the openrouter shim, where the configured chat model * (gpt-4o-mini) is not an embedding model and Azure embedding * deployments are a separate resource. Without this, every * kb_search query 500s with `Provider does not support embeddings`. * Default false to preserve behavior for operators with * embedding-capable providers (real OpenRouter, Ollama with an * embedding model loaded, etc.). */ useLocalEmbedder: z.ZodDefault; }, "strip", z.ZodTypeAny, { table: string; embeddingDim: number; mode: "external" | "embedded"; embedTask: string; useLocalEmbedder: boolean; connectionString?: string | undefined; dataDir?: string | undefined; }, { table?: string | undefined; embeddingDim?: number | undefined; connectionString?: string | undefined; mode?: "external" | "embedded" | undefined; dataDir?: string | undefined; embedTask?: string | undefined; useLocalEmbedder?: boolean | undefined; }>>; }, "strip", z.ZodTypeAny, { pgvector: { table: string; embeddingDim: number; mode: "external" | "embedded"; embedTask: string; useLocalEmbedder: boolean; connectionString?: string | undefined; dataDir?: string | undefined; }; engram: { args: string[]; env: Record; command?: string | undefined; }; primary: "pgvector" | "engram"; fallback?: "pgvector" | "engram" | undefined; }, { pgvector?: { table?: string | undefined; embeddingDim?: number | undefined; connectionString?: string | undefined; mode?: "external" | "embedded" | undefined; dataDir?: string | undefined; embedTask?: string | undefined; useLocalEmbedder?: boolean | undefined; } | undefined; engram?: { command?: string | undefined; args?: string[] | undefined; env?: Record | undefined; } | undefined; primary?: "pgvector" | "engram" | undefined; fallback?: "pgvector" | "engram" | undefined; }>>; webhooks: z.ZodDefault; /** Bind host. 0.0.0.0 so a reverse proxy / Tailscale Funnel can forward. */ host: z.ZodDefault; port: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; host: string; port: number; }, { enabled?: boolean | undefined; host?: string | undefined; port?: number | undefined; }>>; api: z.ZodDefault; /** * Bind host. Localhost by default because the dashboard is a per-user * local app; exposing the API over a LAN/Tailscale is an opt-in move. * Remote installs override to 0.0.0.0. */ host: z.ZodDefault; port: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; host: string; port: number; }, { enabled?: boolean | undefined; host?: string | undefined; port?: number | undefined; }>>; mcp: z.ZodDefault>; /** * Host to bind when transport='http'. 127.0.0.1 by default for * local installs; remote deploys override to 0.0.0.0 (firewall * or reverse proxy in front). */ host: z.ZodDefault; port: z.ZodDefault; }, "strip", z.ZodTypeAny, { host: string; port: number; transport: "stdio" | "http"; }, { host?: string | undefined; port?: number | undefined; transport?: "stdio" | "http" | undefined; }>>; adapters: z.ZodDefault; schedule: z.ZodOptional; config: z.ZodDefault>; }, "strip", z.ZodTypeAny, { package: string; enabled: boolean; config: Record; schedule?: string | undefined; }, { package: string; enabled?: boolean | undefined; config?: Record | undefined; schedule?: string | undefined; }>>>; taxonomy: z.ZodDefault; description: z.ZodOptional; source: z.ZodDefault>; }, "strip", z.ZodTypeAny, { source: "config" | "auto"; slug: string; label?: string | undefined; description?: string | undefined; }, { slug: string; source?: "config" | "auto" | undefined; label?: string | undefined; description?: string | undefined; }>, "many">>; }, "strip", z.ZodTypeAny, { customTypes: { source: "config" | "auto"; slug: string; label?: string | undefined; description?: string | undefined; }[]; }, { customTypes?: { slug: string; source?: "config" | "auto" | undefined; label?: string | undefined; description?: string | undefined; }[] | undefined; }>>; /** * Ingest-time LLM enrichment extractors (ADR-020). Each extractor is * individually opt-in and off by default. Only runs when an LLM * provider is configured. See `extractorsConfigSchema` for the full * list of available extractors. */ extractors: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; }, { enabled?: boolean | undefined; }>>; /** LLM-extracted domain terms/acronyms/jargon → metadata.keywords[] */ keywords: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; }, { enabled?: boolean | undefined; }>>; }, "strip", z.ZodTypeAny, { summary: { enabled: boolean; }; keywords: { enabled: boolean; }; }, { summary?: { enabled?: boolean | undefined; } | undefined; keywords?: { enabled?: boolean | undefined; } | undefined; }>>; /** * Absolute paths to private/personal Cortex module directories * loaded at startup. Each must contain a `dist/index.js` exporting * `mcpTools`. See `server/src/private-modules.ts` + the companion * `cortex-private/` repo for the contract. Empty by default. */ privateModules: z.ZodDefault>; }, "strip", z.ZodTypeAny, { memory: { pgvector: { table: string; embeddingDim: number; mode: "external" | "embedded"; embedTask: string; useLocalEmbedder: boolean; connectionString?: string | undefined; dataDir?: string | undefined; }; engram: { args: string[]; env: Record; command?: string | undefined; }; primary: "pgvector" | "engram"; fallback?: "pgvector" | "engram" | undefined; }; llm: { providers: Record; }>; tasks: Record; fallbackChain: string[]; }; webhooks: { enabled: boolean; host: string; port: number; }; api: { enabled: boolean; host: string; port: number; }; mcp: { host: string; port: number; transport: "stdio" | "http"; }; adapters: Record; schedule?: string | undefined; }>; taxonomy: { customTypes: { source: "config" | "auto"; slug: string; label?: string | undefined; description?: string | undefined; }[]; }; extractors: { summary: { enabled: boolean; }; keywords: { enabled: boolean; }; }; privateModules: string[]; }, { llm: { providers: Record | undefined; }>; tasks: Record; fallbackChain?: string[] | undefined; }; memory?: { pgvector?: { table?: string | undefined; embeddingDim?: number | undefined; connectionString?: string | undefined; mode?: "external" | "embedded" | undefined; dataDir?: string | undefined; embedTask?: string | undefined; useLocalEmbedder?: boolean | undefined; } | undefined; engram?: { command?: string | undefined; args?: string[] | undefined; env?: Record | undefined; } | undefined; primary?: "pgvector" | "engram" | undefined; fallback?: "pgvector" | "engram" | undefined; } | undefined; webhooks?: { enabled?: boolean | undefined; host?: string | undefined; port?: number | undefined; } | undefined; api?: { enabled?: boolean | undefined; host?: string | undefined; port?: number | undefined; } | undefined; mcp?: { host?: string | undefined; port?: number | undefined; transport?: "stdio" | "http" | undefined; } | undefined; adapters?: Record | undefined; schedule?: string | undefined; }> | undefined; taxonomy?: { customTypes?: { slug: string; source?: "config" | "auto" | undefined; label?: string | undefined; description?: string | undefined; }[] | undefined; } | undefined; extractors?: { summary?: { enabled?: boolean | undefined; } | undefined; keywords?: { enabled?: boolean | undefined; } | undefined; } | undefined; privateModules?: string[] | undefined; }>; export type WebhooksConfig = z.infer; export type ApiConfig = z.infer; export type TaxonomyConfig = z.infer; export type CustomMemoryTypeConfig = z.infer; export type MemoryConfig = z.infer; export type MemoryBackendName = z.infer; export type CortexConfig = z.infer; export type ProviderEntry = z.infer; export type AdapterEntry = z.infer; /** * Loads and validates cortex.yaml. * * Resolution order (first hit wins): * 1. `/.local.yaml` — caller's real, gitignored config * 2. `/.yaml` — committed template * * Rationale: real deployment data (workspace names, space keys, client * mappings) must never be committed. Operators write their real config into * `cortex.local.yaml`, which is in .gitignore, and the loader transparently * prefers it. See docs/PRIVACY.md. * * Expands `${ENV_VAR}` references from `process.env` in string values. */ export declare function loadCortexConfig(configPath: string): Promise; /** * Select fields (today: api.host / api.port / api.enabled) can be overridden * via env vars so a Docker image or VPS deploy doesn't need to hand-edit a * user's workspace config. The overrides kick in only when the env var is * present — absent vars leave the YAML value untouched. */ export declare function applyEnvOverrides(cfg: CortexConfig): CortexConfig; /** * Given a path like `config/cortex.yaml`, prefer `config/cortex.local.yaml` * if it exists. Same-directory, same-basename, `.local.yaml` suffix. Used by * every config loader (cortex.yaml, projects.yaml, people.yaml, future * engagements.yaml) so the pattern is uniform. */ export declare function resolveLocalFirst(configPath: string): Promise; /** * `${FOO}` in YAML string positions is replaced with process.env.FOO. Throws * a readable error listing every missing/empty variable so the user knows * which .env entry to fill in, rather than surfacing as an opaque Zod * validation error downstream. * * Lines starting with `#` are treated as YAML comments and left untouched, * so commented-out config blocks don't require their env vars to be set. */ export declare function expandEnv(text: string): string; //# sourceMappingURL=config.d.ts.map