{"version":3,"file":"web-research-status.d.ts","sourceRoot":"","sources":["../../../src/core/tools/web-research-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEhG,QAAA,MAAM,uBAAuB,yCAAkB,CAAC;AAEhD,wBAAgB,2BAA2B,CAC1C,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAO,GAC1C,SAAS,CAAC,OAAO,uBAAuB,CAAC,CA8B3C;AAED,eAAO,MAAM,qBAAqB,yDAAgC,CAAC","sourcesContent":["import type { AgentTool } from \"@apholdings/jensen-agent-core\";\nimport { Type } from \"@sinclair/typebox\";\nimport { getDefaultWebResearchEngine, type WebResearchEngine } from \"../web-research/engine.js\";\n\nconst webResearchStatusSchema = Type.Object({});\n\nexport function createWebResearchStatusTool(\n\toptions: { engine?: WebResearchEngine } = {},\n): AgentTool<typeof webResearchStatusSchema> {\n\tconst engine = options.engine ?? getDefaultWebResearchEngine();\n\treturn {\n\t\tname: \"web_research_status\",\n\t\tlabel: \"web_research_status\",\n\t\tdescription:\n\t\t\t\"Show privacy-safe web research configuration, provider health, capability availability, budgets, and aggregate counters. Does not expose queries, page contents, credentials, cookies, or headers.\",\n\t\tparameters: webResearchStatusSchema,\n\t\tisConcurrencySafe: () => true,\n\t\texecute: async (_toolCallId, _input, signal) => {\n\t\t\tconst diagnostics = await engine.diagnostics(signal);\n\t\t\tconst lines = [\n\t\t\t\t`Configured search provider: ${diagnostics.configuredProvider}`,\n\t\t\t\t`SearXNG endpoint: ${diagnostics.searxngEndpoint}`,\n\t\t\t\t`Fallback provider: ${diagnostics.fallbackProvider}`,\n\t\t\t\t`Provider health: ${diagnostics.providers.map((provider) => `${provider.provider}=${provider.status}`).join(\", \")}`,\n\t\t\t\t`Browser rendering: ${diagnostics.browserRenderingAvailable ? \"available\" : \"unavailable\"}`,\n\t\t\t\t`PDF extraction: ${diagnostics.pdfExtractionAvailable ? \"available\" : \"unavailable\"}`,\n\t\t\t\t`Citation renderer: ${diagnostics.citationRendererAvailable ? \"available\" : \"unavailable\"}`,\n\t\t\t\t`Numeric verifier: ${diagnostics.numericVerifierAvailable ? \"available\" : \"unavailable\"}`,\n\t\t\t\t`Temporal resolver: ${diagnostics.temporalResolverAvailable ? \"available\" : \"unavailable\"}`,\n\t\t\t\t`Secure fetch used by research: ${diagnostics.secureFetchUsedByResearch ? \"yes (web_fetch in deep_research)\" : \"no\"}`,\n\t\t\t\t`Research budgets: queries=${diagnostics.budgets.maxQueries}, sources=${diagnostics.budgets.maxSources}, bytes=${diagnostics.budgets.maxBytes}, renders=${diagnostics.budgets.maxBrowserRenders}, elapsed_ms=${diagnostics.budgets.maxElapsedMs}, parallel_fetches=${diagnostics.budgets.maxParallelFetches}`,\n\t\t\t\t`Recent counters: ${Object.entries(diagnostics.telemetry)\n\t\t\t\t\t.map(([name, value]) => `${name}=${value}`)\n\t\t\t\t\t.join(\", \")}`,\n\t\t\t];\n\t\t\treturn { content: [{ type: \"text\", text: lines.join(\"\\n\") }], details: diagnostics };\n\t\t},\n\t};\n}\n\nexport const webResearchStatusTool = createWebResearchStatusTool();\n"]}