import type { KnowledgeRepository } from '../repository/index.js'; import { ExtractionPipeline } from '../extraction/index.js'; import type { ResearchArtifact, ResearchResult, ResearchStep, ResearchStepResult, ResearchTask } from './research-task-types.js'; export interface ResearchExecutorAdapter { execute(step: ResearchStep, task: ResearchTask): Promise; } export interface ResearchExecutorOptions { adapter: ResearchExecutorAdapter; repository: KnowledgeRepository; extractionPipeline?: ExtractionPipeline; now?: () => Date; } /** FR-D02 AC6: Research task detail view */ export interface ResearchTaskDetail { task: ResearchTask; result: ResearchResult; steps: ResearchStepDetail[]; artifacts: ResearchArtifact[]; extractedEntryIds: string[]; timeline: ResearchTimelineEvent[]; } export interface ResearchStepDetail { step: ResearchStep; status: 'completed' | 'skipped'; artifacts: ResearchArtifact[]; apiCallsUsed: number; } export interface ResearchTimelineEvent { timestamp: Date; event: string; detail?: string; } export declare class ResearchExecutor { private readonly adapter; private readonly repository; private readonly extractionPipeline; private readonly now; private readonly resultHistory; private readonly taskRegistry; private readonly stepArtifacts; private readonly timelines; constructor(options: ResearchExecutorOptions); execute(task: ResearchTask): Promise; /** * FR-D02 AC5: Re-research a completed task. * Clears previous results for this task and re-executes. */ reExecute(task: ResearchTask): Promise; /** * FR-D02 AC6: Get detailed view of a research task execution. */ getTaskDetail(taskId: string): ResearchTaskDetail | null; private extractArtifact; } //# sourceMappingURL=research-executor.d.ts.map