import { type ChatTools, type ResolvedToolContext, type ToolContext } from "../shared/agent/tool.factory.js"; import type { UserDatabase } from "../shared/interfaces/database.interface.js"; import type { ChatPersonaConfig } from "./chat.persona.js"; /** Public kickoff marker used by the Agent surface to request its opening briefing. */ export { REPORTER_BRIEFING_KICKOFF } from "./reporter.prompt.js"; /** Stable persona id persisted for read-only Agent reporting sessions. */ export declare const REPORTER_PERSONA_ID = "reporter"; /** * Exact positive allowlist for the reporter persona. New shared tools remain * unavailable until they are explicitly reviewed here. */ export declare const REPORTER_TOOL_NAMES: readonly ["read_intents", "search_intents", "read_user_contexts", "preview_user_context", "read_premises", "read_networks", "read_network_memberships", "read_pending_questions", "list_opportunities", "read_activity_summary"]; interface ReporterToolBoundary { context: ResolvedToolContext; userDb: UserDatabase; findPendingQuestions?: ToolContext["findPendingQuestions"]; } /** Filters a shared registry through the reporter's positive allowlist. */ export declare function filterReporterTools(tools: T[]): T[]; /** * Replaces shared tools whose normal modes can enumerate other users with * reporter-safe, self-only read contracts. Opportunity listing is deliberately * aggregate-only: it never returns a counterpart name, row, or explanation. */ export declare function narrowReporterTools(allowed: ChatTools, boundary: ReporterToolBoundary): ChatTools; /** Creates the reporter's context-bound, allowlisted toolset. */ export declare function createReporterTools(deps: ToolContext, preResolvedContext?: ResolvedToolContext): Promise; /** Restricted read-only Agent reporter persona. */ export declare const REPORTER_PERSONA: ChatPersonaConfig;