import { type PlansConfigInput, type ResolvedPlansConfig } from "./plan-paths.js"; export type StatusVerbosity = "minimal" | "normal" | "verbose"; export type VerifyConfig = { command: string[]; cwd?: string; }; export type SwarmScriptRunner = "deno" | "bun" | "auto"; export type SwarmConfigInput = { enabled?: boolean; maxConcurrent?: number; maxTasksPerRun?: number; defaultTimeoutMinutes?: number; scriptRunner?: SwarmScriptRunner; unsafeEvalEnabled?: boolean; /** Max `client.session.create` calls allowed inside one unsafe script run. */ maxUnsafeScriptSpawns?: number; }; export type ResolvedSwarmConfig = { enabled: boolean; maxConcurrent: number; maxTasksPerRun: number; defaultTimeoutMinutes: number; scriptRunner: SwarmScriptRunner; unsafeEvalEnabled: boolean; maxUnsafeScriptSpawns: number; }; export type FffConfigInput = { enabled?: boolean; scanTimeoutMs?: number; }; export type ResolvedFffConfig = { enabled: boolean; scanTimeoutMs: number; }; export type RalphConfigInput = { enabled?: boolean; autoStartOnMainIdle?: boolean; statusVerbosity?: StatusVerbosity; maxAttempts?: number; heartbeatMinutes?: number; strategistHandoffMinutes?: number; strategistHandoffMaxRetries?: number; verifyTimeoutMinutes?: number; verify?: VerifyConfig; gateDestructiveToolsUntilContextLoaded?: boolean; maxRlmSliceLines?: number; requireGrepBeforeLargeSlice?: boolean; grepRequiredThresholdLines?: number; subAgentEnabled?: boolean; maxSubAgents?: number; maxConversationLines?: number; conversationArchiveCount?: number; reviewerEnabled?: boolean; reviewerRequireExplicitReady?: boolean; reviewerMaxRunsPerAttempt?: number; reviewerOutputDir?: string; reviewerPostToConversation?: boolean; agentMdPath?: string; plans?: PlansConfigInput; fff?: FffConfigInput; swarm?: SwarmConfigInput; }; export type ResolvedConfig = { enabled: boolean; autoStartOnMainIdle: boolean; statusVerbosity: StatusVerbosity; maxAttempts: number; heartbeatMinutes: number; strategistHandoffMinutes: number; strategistHandoffMaxRetries: number; verifyTimeoutMinutes: number; verify?: VerifyConfig; gateDestructiveToolsUntilContextLoaded: boolean; maxRlmSliceLines: number; requireGrepBeforeLargeSlice: boolean; grepRequiredThresholdLines: number; subAgentEnabled: boolean; maxSubAgents: number; maxConversationLines: number; conversationArchiveCount: number; reviewerEnabled: boolean; reviewerRequireExplicitReady: boolean; reviewerMaxRunsPerAttempt: number; reviewerOutputDir: string; reviewerPostToConversation: boolean; agentMdPath: string; plans: ResolvedPlansConfig; fff: ResolvedFffConfig; swarm: ResolvedSwarmConfig; }; export declare const CONFIG_DEFAULTS: ResolvedConfig; export declare function isSwarmUnsafeEvalEnabled(swarm: ResolvedSwarmConfig): boolean; export declare function resolveConfig(raw: RalphConfigInput): ResolvedConfig; /** Read the raw (unresolved) ralph.json config, or `{}` if none/invalid. */ export declare function readRawConfig(worktree: string): Promise; /** * Read-modify-write `ralph.json` (merge-safe). Writes to the existing config * file (`.ralph-rlm/ralph.json` preferred, then `.opencode/ralph.json`), or * creates `.opencode/ralph.json` when none exists. Returns the worktree-relative * path written. */ export declare function updateRawConfig(worktree: string, mutate: (raw: RalphConfigInput) => RalphConfigInput): Promise<{ path: string; config: RalphConfigInput; }>; export declare function loadConfig(worktree: string): Promise; //# sourceMappingURL=config.d.ts.map