export type QuestionPriority = 'low' | 'medium' | 'high' | 'critical'; export type AmbiguityThreshold = 'low' | 'medium' | 'high'; export type FixSeverity = 'critical' | 'error' | 'warning'; export type AgentPlatform = 'copilot' | 'claude' | 'cursor' | 'opencode' | 'codex' | 'gemini' | 'windsurf' | 'kiro' | 'jules' | 'amp' | 'roo' | 'aider' | 'cline' | 'continue' | 'zed' | 'bolt' | 'aide' | 'trae' | 'augment' | 'sourcegraph' | 'tabnine' | 'supermaven' | 'void' | 'pear' | 'double' | 'generic'; export type ApiProvider = 'openai' | 'anthropic'; export interface PhaseConfig { readonly agent?: string; readonly model?: string; } export interface ClarifyConfig extends PhaseConfig { readonly maxQuestions?: number; readonly minimumQuestionPriority?: QuestionPriority; readonly ambiguityThreshold?: AmbiguityThreshold; } export interface PhasesConfig { readonly specify?: PhaseConfig; readonly clarify?: ClarifyConfig; readonly plan?: PhaseConfig; readonly tasks?: PhaseConfig; readonly analyze?: PhaseConfig; readonly implement?: PhaseConfig; readonly review?: PhaseConfig; readonly fix?: PhaseConfig; } export interface ReviewFixConfig { readonly maxIterations?: number; readonly fixSeverity?: readonly FixSeverity[]; readonly parallel?: boolean; } export interface ReviewerConfig { readonly enabled?: boolean; readonly promptPath?: string; } export interface ReviewersConfig { readonly architecture?: ReviewerConfig; readonly security?: ReviewerConfig; readonly codeQuality?: ReviewerConfig; readonly testQuality?: ReviewerConfig; readonly uxQuality?: ReviewerConfig; readonly adversarial?: ReviewerConfig; readonly edgeCase?: ReviewerConfig; readonly [key: string]: ReviewerConfig | undefined; } export interface ValidationConfig { readonly lint?: string | null; readonly typecheck?: string | null; readonly test?: string | null; readonly build?: string | null; } export interface AgentConfig { readonly platforms?: readonly AgentPlatform[]; readonly defaultModel?: string | null; readonly apiKey?: string | null; readonly provider?: ApiProvider | null; readonly maxImplementRetries?: number; } export interface AuditConfig { readonly enabled?: boolean; readonly path?: string; } export interface ConstitutionConfig { readonly path?: string; } export interface PreReviewConfig { readonly enabled?: boolean; readonly maxIterations?: number; readonly fixSeverity?: readonly FixSeverity[]; } export interface DocsConfig { readonly enabled?: boolean; readonly outputDir?: string; } export interface TemplateOverridesConfig { readonly [templateId: string]: string; } /** Custom workflow definition. */ export interface WorkflowSchema { readonly phases: readonly string[]; readonly reviewBefore?: readonly string[]; readonly reviewAfter?: readonly string[]; } export interface ProdaraConfig { readonly phases?: PhasesConfig; readonly reviewFix?: ReviewFixConfig; readonly postReview?: ReviewFixConfig; readonly preReview?: PreReviewConfig; readonly reviewers?: ReviewersConfig; readonly validation?: ValidationConfig; readonly agent?: AgentConfig; readonly audit?: AuditConfig; readonly constitution?: ConstitutionConfig; readonly docs?: DocsConfig; readonly templateOverrides?: TemplateOverridesConfig; readonly artifactRules?: Readonly>; readonly workflows?: Readonly>; } export interface ResolvedPhaseConfig { readonly agent: string; readonly model: string; } export interface ResolvedClarifyConfig extends ResolvedPhaseConfig { readonly maxQuestions: number; readonly minimumQuestionPriority: QuestionPriority; readonly ambiguityThreshold: AmbiguityThreshold; } export interface ResolvedReviewFixConfig { readonly maxIterations: number; readonly fixSeverity: readonly FixSeverity[]; readonly parallel: boolean; } export interface ResolvedReviewerConfig { readonly enabled: boolean; readonly promptPath: string | null; } export interface ResolvedValidationConfig { readonly lint: string | null; readonly typecheck: string | null; readonly test: string | null; readonly build: string | null; } export interface ResolvedAgentConfig { readonly platforms: readonly AgentPlatform[]; readonly defaultModel: string | null; readonly apiKey: string | null; readonly provider: ApiProvider | null; readonly maxImplementRetries: number; } export interface ResolvedAuditConfig { readonly enabled: boolean; readonly path: string; } export interface ResolvedConstitutionConfig { readonly path: string | null; } export interface ResolvedPreReviewConfig { readonly enabled: boolean; readonly maxIterations: number; readonly fixSeverity: readonly FixSeverity[]; } export interface ResolvedDocsConfig { readonly enabled: boolean; readonly outputDir: string; } export interface ResolvedConfig { readonly phases: { readonly specify: ResolvedPhaseConfig; readonly clarify: ResolvedClarifyConfig; readonly plan: ResolvedPhaseConfig; readonly tasks: ResolvedPhaseConfig; readonly analyze: ResolvedPhaseConfig; readonly implement: ResolvedPhaseConfig; readonly review: ResolvedPhaseConfig; readonly fix: ResolvedPhaseConfig; }; readonly reviewFix: ResolvedReviewFixConfig; readonly preReview: ResolvedPreReviewConfig; readonly reviewers: { readonly architecture: ResolvedReviewerConfig; readonly security: ResolvedReviewerConfig; readonly codeQuality: ResolvedReviewerConfig; readonly testQuality: ResolvedReviewerConfig; readonly uxQuality: ResolvedReviewerConfig; readonly adversarial: ResolvedReviewerConfig; readonly edgeCase: ResolvedReviewerConfig; readonly [key: string]: ResolvedReviewerConfig | undefined; }; readonly validation: ResolvedValidationConfig; readonly agent: ResolvedAgentConfig; readonly audit: ResolvedAuditConfig; readonly constitution: ResolvedConstitutionConfig; readonly docs: ResolvedDocsConfig; readonly templateOverrides: Readonly>; readonly artifactRules: Readonly>; readonly workflows: Readonly>; } export declare const DEFAULT_CONFIG: ResolvedConfig; export declare const CONFIG_FILENAME = "prodara.config.json"; export interface ConfigLoadResult { readonly config: ResolvedConfig; readonly warnings: readonly string[]; } /** * Load `prodara.config.json` from the project root and merge with defaults. * Returns the fully resolved config and any warnings (unknown keys, etc.). */ export declare function loadConfig(root: string): ConfigLoadResult; /** * Resolve a raw config object into a ResolvedConfig with all defaults applied. */ export declare function resolveConfig(obj: Record, warnings?: string[]): ConfigLoadResult; /** * Return the numeric rank of a priority (higher = more important). * Useful for filtering questions at or above a threshold. */ export declare function priorityRank(p: QuestionPriority): number; //# sourceMappingURL=config.d.ts.map