import type { BoberConfig } from "../config/schema.js"; /** * A factual research document produced by the two-phase research process. * Contains ONLY findings — no implementation opinions or recommendations. */ export interface ResearchDoc { /** Unique identifier for this research document, format: research-- */ id: string; /** ISO-8601 timestamp of when research was produced. */ timestamp: string; /** The questions that guided codebase exploration (generated in Phase 1). */ questions: string[]; /** Full markdown-serialized research findings produced by Phase 2 exploration. */ findings: string; /** Factual sections produced by Phase 2 exploration (internal detail). */ sections: ResearchSections; /** File paths the Phase 2 agent actually read during exploration. */ filesExplored: string[]; /** Number of questions that were answered. */ questionsAnswered: number; /** Optional metadata about the research run. */ metadata?: Record; } /** * The factual sections of a research document. * Each section contains only observed facts, no recommendations. */ export interface ResearchSections { /** How the relevant subsystem is structured — files, relationships, call chain. */ architectureOverview: string; /** File:line references for observed patterns. */ existingPatterns: string; /** Most important files for this area with their purpose and key exports. */ keyFiles: string; /** All public interfaces, exported functions, types, CLI entry points. */ integrationPoints: string; /** Existing tests covering the relevant area — paths, what they cover, utilities used. */ testCoverage: string; /** Areas of complexity, tight coupling, or high change-impact surface. */ riskAreas: string; } /** * Run the two-phase research process for a feature description. * * Phase 1: Generate 5–8 exploration questions from the user prompt. * Phase 2: Explore the codebase using ONLY those questions (no userPrompt). * * The two-phase isolation is the core design principle: Phase 2 has NO knowledge * of what feature is being built, which prevents implementation opinions from * contaminating the factual research findings. * * @param userPrompt Feature description — passed ONLY to Phase 1. * @param projectRoot Absolute path to the project root. * @param config Bober configuration (model, provider settings, etc.). * @returns A factual ResearchDoc with findings from codebase exploration. */ export declare function runResearch(userPrompt: string, projectRoot: string, config: BoberConfig): Promise; //# sourceMappingURL=research-agent.d.ts.map