import { DynamicStructuredTool } from "@langchain/core/tools"; import { z } from "zod"; import { ContextualiserService } from "../../contextualiser/services/contextualiser.service"; import { ScopeGuard } from "../../graph/services/scope.guard"; import { ToolCallRecord, ToolFactory } from "../../graph/tools/tool.factory"; import { OperatorRetrievalContext } from "../interfaces/operator.tool.interface"; declare const inputSchema: z.ZodObject<{ question: z.ZodString; }, z.core.$strip>; export { inputSchema as searchDocumentsInputSchema }; export declare class SearchDocumentsTool { private readonly factory; private readonly contextualiserService; private readonly scopeGuard; constructor(factory: ToolFactory, contextualiserService: ContextualiserService, scopeGuard: ScopeGuard); build(ctx: OperatorRetrievalContext, recorder: ToolCallRecord[]): DynamicStructuredTool; invoke(input: z.infer, ctx: OperatorRetrievalContext, recorder: ToolCallRecord[]): Promise; /** * Enforcement point: a scoped run must not read passages whose source record * lives under another scope root. * * Retrieved passages carry their provenance in the opaque `metadata` bag the * contributing retrieval source filled in. Entries that name a source record * are grouped by type and checked with ONE ScopeGuard.filter call per type * (never one per chunk). Entries that name no source record are plain * document chunks with no entity provenance to test — they are company-wide * material (help content and the like) and are left alone; scoping them is * only possible once a retrieval source tags them. */ private dropOutOfScope; } //# sourceMappingURL=search-documents.tool.d.ts.map