import type { AgentResponse, PermissionMode, StepProviderOptions } from '../../models/index.js'; import type { ProviderType } from '../../../shared/types/provider.js'; export type CompanionAgentPurpose = 'selector' | 'reviewer' | 'moderator'; interface CompanionAgentResolution { readonly provider: ProviderType; readonly model?: string; readonly providerOptions?: StepProviderOptions; readonly permissionMode?: PermissionMode; } interface CompanionCallOptions { cwd: string; projectCwd: string; failureDir: string; language: string; attempt: number; resolution: CompanionAgentResolution; abortSignal: AbortSignal; registerFinish: (finish: () => void) => void; onPromptResolved?: (prompt: { systemPrompt: string; userInstruction: string; }) => void; } export interface CompanionCallAudit { readonly purpose: CompanionAgentPurpose; readonly agentName: string; readonly attempt: number; readonly status: 'completed' | 'failed'; readonly provider: ProviderType; readonly model?: string; readonly systemPrompt?: string; readonly prompt?: string; readonly promptResolved: boolean; readonly response?: AgentResponse; readonly error?: string; } export type CompanionStructuredResponseValidator = (response: AgentResponse) => void; export declare function executeCompanionStructuredAgent(input: { purpose: CompanionAgentPurpose; agentName: string; systemPrompt: string; prompt: string; outputSchema: Record; cwd: string; projectCwd: string; failureDir: string; language: string; resolution: CompanionAgentResolution; abortSignal?: AbortSignal; call: (systemPrompt: string, prompt: string, outputSchema: Record, options: CompanionCallOptions) => Promise; validateResponse?: CompanionStructuredResponseValidator; recordUsage: (event: { purpose: CompanionAgentPurpose; agentName: string; success: boolean; usage?: AgentResponse['providerUsage']; }) => void; recordCall?: (event: CompanionCallAudit) => void; onCallAuditPersistenceFailure?: (failure: { purpose: CompanionAgentPurpose; agentName: string; attempt: number; error: unknown; }) => void; }): Promise; export {}; //# sourceMappingURL=review-runner.d.ts.map