import { WorkspaceRepository } from '@mcoda/db'; import { WorkspaceResolution } from '../../workspace/WorkspaceManager.js'; import { JobService } from '../jobs/JobService.js'; import { TaskSelectionFilters, TaskSelectionPlan, TaskSelectionService } from './TaskSelectionService.js'; import { TaskStateService } from './TaskStateService.js'; import { QaProfileService } from './QaProfileService.js'; import { QaFollowupService } from './QaFollowupService.js'; import { VcsClient } from '@mcoda/integrations'; import { AgentService } from '@mcoda/agents'; import { GlobalRepository } from '@mcoda/db'; import { DocdexClient } from '@mcoda/integrations'; import { RoutingService } from '../agents/RoutingService.js'; import { AgentRatingService } from '../agents/AgentRatingService.js'; export interface QaTasksRequest extends TaskSelectionFilters { workspace: WorkspaceResolution; mode?: 'auto' | 'manual'; resumeJobId?: string; profileName?: string; level?: string; testCommand?: string; agentName?: string; agentStream?: boolean; rateAgents?: boolean; createFollowupTasks?: 'auto' | 'none' | 'prompt'; dryRun?: boolean; result?: 'pass' | 'fail'; notes?: string; evidenceUrl?: string; allowDirty?: boolean; cleanIgnorePaths?: string[]; dependencyPolicy?: 'enforce' | 'ignore'; noChangesPolicy?: 'require_qa' | 'skip' | 'manual'; debug?: boolean; abortSignal?: AbortSignal; } export interface QaTaskResult { taskKey: string; outcome: 'pass' | 'fix_required' | 'infra_issue' | 'unclear'; profile?: string; runner?: string; artifacts?: string[]; followups?: string[]; commentId?: string; notes?: string; } export interface QaTasksResponse { jobId: string; commandRunId: string; selection: TaskSelectionPlan; results: QaTaskResult[]; warnings: string[]; } export declare class QaTasksService { private workspace; private deps; private profileService; private selectionService; private stateService; private followupService; private jobService; private vcs; private agentService?; private docdex?; private repo?; private routingService?; private ratingService?; private dryRunGuard; private debugLogging; private qaProfilePlan?; private qaTaskPlans?; private projectKeyById; private taskLogSeq; constructor(workspace: WorkspaceResolution, deps: { workspaceRepo: WorkspaceRepository; jobService: JobService; selectionService?: TaskSelectionService; stateService?: TaskStateService; profileService?: QaProfileService; followupService?: QaFollowupService; vcsClient?: VcsClient; agentService?: AgentService; docdex?: DocdexClient; repo?: GlobalRepository; routingService?: RoutingService; ratingService?: AgentRatingService; }); static create(workspace: WorkspaceResolution, options?: { noTelemetry?: boolean; }): Promise; close(): Promise; setDocdexAvailability(available: boolean, reason?: string): void; private readPromptFiles; private loadPrompts; private checkpoint; private ensureTaskBranch; private ensureMcoda; private buildCleanIgnorePaths; private adapterForProfile; private mapOutcome; private shouldUseAgentInterpretation; private buildDeterministicInterpretation; private buildRunnerFailureMessage; private createRunnerFailureComments; private resolveRunAllMarkerPolicy; private adjustOutcomeForSkippedTests; private combineOutcome; private resolveTaskProjectKey; private gatherDocContext; private resolveAgent; private ensureRatingService; private resolveTaskComplexity; private logInvocationFailoverEvents; private resolveInvocationUsageAgent; private estimateTokens; private fileExists; private readPackageJson; private detectPackageManager; private resolveTestCommand; private isCliTask; private findCliBinCommand; private resolveCliChecklistCommands; private softenOptionalNpmScripts; private usesCliBrowserTools; private ensureCypressChromium; private applyChromiumForCli; private buildScriptCommand; private resolveDevServerCommand; private shouldInstallQaDeps; private hasFileWithExtension; private resolveInstallCommands; private runShellCommand; private commitInstallChanges; private isBranchInUseError; private buildQaInstallBranch; private prepareQaWorkspace; private isUrlReachable; private waitForUrlReady; private startQaServer; private checkQaPreflight; private isHttpUrl; private loadAvailableProfiles; private pickDefaultProfile; private planProfilesWithAgent; private resolveProfilesForRequest; private isApprovedReviewDecision; private shouldSkipQaForNoChanges; private extractJsonCandidate; private normalizeAgentOutput; private validateInterpretation; private interpretResult; private loadCommentContext; private resolveFailureSlug; private applyCommentResolutions; private createTaskRun; private finishTaskRun; private nextLogSeq; private logTask; private createQaComment; private applyStateTransition; private buildFollowupSuggestion; private buildManualQaFollowup; private buildFollowupSlug; private toFollowupSuggestion; private suggestFollowupsFromAgent; private runAuto; private runManual; run(request: QaTasksRequest): Promise; } //# sourceMappingURL=QaTasksService.d.ts.map