/** * ollama_research — FLAGSHIP TOOL. * * Takes file *paths*, not raw text. Reads and chunks locally, returns a * digest with validated citations. This is context preservation as a * product feature — exactly the bulk work Claude should not burn * premium context on. * * Tier: Deep. * * Guardrails: * - All paths in source_paths must exist (SOURCE_PATH_NOT_FOUND otherwise) * - Citations returned by the model are validated against source_paths; * any path not in the input is stripped and a warning added to the envelope. */ import { z } from "zod"; import type { Envelope } from "../envelope.js"; import { type ValidatedCitation } from "../guardrails/citations.js"; import type { RunContext } from "../runContext.js"; export declare const researchSchema: z.ZodObject<{ question: z.ZodString; source_paths: z.ZodType>; max_words: z.ZodOptional; per_file_max_chars: z.ZodOptional; model: z.ZodOptional; }, z.core.$strip>; export type ResearchInput = z.infer; export interface ResearchResult { answer: string; citations: ValidatedCitation[]; covered_sources?: string[]; omitted_sources?: string[]; coverage_notes?: string[]; /** * The model produced a non-empty answer but every cited path was * stripped (or it cited nothing at all). The answer is likely * ungrounded — treat it as a hint, not a fact. */ weak?: boolean; /** * The model explicitly declined to answer (matched the abstention * regex). Citations are cleared; the answer text contains the * abstention statement. */ abstained?: boolean; /** * Tri-state: true when sources appear to address the question (citations * survived validation), false when the model abstained or produced an * answer with no validated citations, null when we don't know. */ sources_address_question?: boolean | null; } export declare function handleResearch(input: ResearchInput, ctx: RunContext): Promise>; //# sourceMappingURL=research.d.ts.map