import { z } from 'zod'; /** * Optional advanced config at `.ai/cezar/config.json`. Zero-config rule: * a missing file behaves exactly like the default below, an unreadable or * invalid file degrades to the default too (never blocks startup). The key * can be overridden or emptied (`"skillsRepos": []` disables team skills). */ declare const skillsRepoSchema: z.ZodObject<{ repo: z.ZodString; ref: z.ZodDefault; }, z.core.$strip>; export type SkillsRepoSource = z.infer; export declare const DEFAULT_SKILLS_REPOS: SkillsRepoSource[]; /** Last-resort retention when neither the repo nor the workspace says anything. */ export declare const DEFAULT_WORKTREE_RETENTION = 10; declare const configSchema: z.ZodObject<{ skillsRepos: z.ZodDefault; }, z.core.$strip>>>; maxParallel: z.ZodDefault; worktreeRetention: z.ZodCatch>; memoryLimitMb: z.ZodCatch>; defaultRunner: z.ZodDefault>; plannerModel: z.ZodDefault; namerModel: z.ZodDefault; liveTitleUpdates: z.ZodOptional; reviewGate: z.ZodOptional; baseBranch: z.ZodOptional; systemPrompt: z.ZodCatch>; defaultModels: z.ZodCatch; codex: z.ZodOptional; opencode: z.ZodOptional; pi: z.ZodOptional; }, z.core.$strip>>>; modelsLocked: z.ZodCatch>; }, z.core.$strip>; export type CezConfig = z.infer; /** * Read `.ai/cezar/config.json` on demand — never cached, never throws. * * Also reads the machine-wide defaults, which is one more small JSON read and deliberately not * cached for the same reason this one is not: `~/.cezar/` is shared by every cezar process on the * machine, so a snapshot is a staleness bug. */ export declare function loadConfig(repoRoot: string): Promise; /** * The default skills repos that are *opt-in per skill* (the "import OM skills" * flow): the set of repo identifiers a user must explicitly import from before * their skills join the catalog. This is exactly `DEFAULT_SKILLS_REPOS` when the * repo has NOT configured its own `skillsRepos` — the zero-config majority — and * empty once a repo takes control by setting `skillsRepos` (then everything it * lists auto-loads, unchanged). * * `loadConfig` cannot answer this: the schema's `.default(DEFAULT_SKILLS_REPOS)` * materializes the key, so a parsed config can't tell "the user chose these" from * "the user said nothing". So we probe the raw file for the key's presence — the * same reason `ownWorktreeRetention` below reads the raw JSON. */ export declare function gatedSkillsRepos(repoRoot: string): Promise>; /** * Effective worktree retention for a repo (#483 + spec * 2026-07-20-multi-project-workspace). Precedence, exactly what Settings → * Worktrees promises: the repo's own `worktreeRetention` wins whenever it sets * one; otherwise the workspace's `resources.worktreeRetentionDefault` seeds it; * an absent/unreadable workspace config keeps the historical 10. Every * enforcement site (boot sweeps, terminal transitions, the reclaim route) must * go through here so the setting can never be a lie. */ export declare function resolveWorktreeRetention(repoRoot: string): Promise; export {};