@staticn0va/wigolo 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +146 -227
- package/SKILL.md +382 -0
- package/assets/blocks/claude-code/CLAUDE.md.block +20 -0
- package/assets/blocks/claude-code/wigolo-command.md +40 -0
- package/assets/blocks/cursor/wigolo.mdc +46 -0
- package/assets/blocks/gemini-cli/GEMINI.md.block +18 -0
- package/assets/blocks/vscode/copilot-instructions.md.block +18 -0
- package/assets/skills/wigolo/SKILL.md +50 -0
- package/assets/skills/wigolo/rules/cache-first.md +30 -0
- package/assets/skills/wigolo/rules/synthesis.md +43 -0
- package/assets/skills/wigolo-agent/SKILL.md +73 -0
- package/assets/skills/wigolo-crawl/SKILL.md +60 -0
- package/assets/skills/wigolo-extract/SKILL.md +59 -0
- package/assets/skills/wigolo-fetch/SKILL.md +65 -0
- package/assets/skills/wigolo-find-similar/SKILL.md +72 -0
- package/assets/skills/wigolo-research/SKILL.md +77 -0
- package/assets/skills/wigolo-search/SKILL.md +78 -0
- package/dist/agent/executor.d.ts +33 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +233 -0
- package/dist/agent/executor.js.map +1 -0
- package/dist/agent/pipeline.d.ts +5 -0
- package/dist/agent/pipeline.d.ts.map +1 -0
- package/dist/agent/pipeline.js +238 -0
- package/dist/agent/pipeline.js.map +1 -0
- package/dist/agent/planner.d.ts +13 -0
- package/dist/agent/planner.d.ts.map +1 -0
- package/dist/agent/planner.js +271 -0
- package/dist/agent/planner.js.map +1 -0
- package/dist/agent/relevance.d.ts +15 -0
- package/dist/agent/relevance.d.ts.map +1 -0
- package/dist/agent/relevance.js +60 -0
- package/dist/agent/relevance.js.map +1 -0
- package/dist/cache/backfill-embeddings.d.ts +23 -0
- package/dist/cache/backfill-embeddings.d.ts.map +1 -0
- package/dist/cache/backfill-embeddings.js +105 -0
- package/dist/cache/backfill-embeddings.js.map +1 -0
- package/dist/cache/change-detector.d.ts +7 -0
- package/dist/cache/change-detector.d.ts.map +1 -0
- package/dist/cache/change-detector.js +43 -0
- package/dist/cache/change-detector.js.map +1 -0
- package/dist/cache/db.d.ts +1 -0
- package/dist/cache/db.d.ts.map +1 -1
- package/dist/cache/db.js +94 -22
- package/dist/cache/db.js.map +1 -1
- package/dist/cache/diff-summary.d.ts +2 -0
- package/dist/cache/diff-summary.d.ts.map +1 -0
- package/dist/cache/diff-summary.js +82 -0
- package/dist/cache/diff-summary.js.map +1 -0
- package/dist/cache/migrations/runner.d.ts +29 -0
- package/dist/cache/migrations/runner.d.ts.map +1 -0
- package/dist/cache/migrations/runner.js +147 -0
- package/dist/cache/migrations/runner.js.map +1 -0
- package/dist/cache/sqlite-vec-store.d.ts +42 -0
- package/dist/cache/sqlite-vec-store.d.ts.map +1 -0
- package/dist/cache/sqlite-vec-store.js +176 -0
- package/dist/cache/sqlite-vec-store.js.map +1 -0
- package/dist/cache/store.d.ts +47 -1
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +364 -168
- package/dist/cache/store.js.map +1 -1
- package/dist/cli/agents/antigravity.d.ts +20 -0
- package/dist/cli/agents/antigravity.d.ts.map +1 -0
- package/dist/cli/agents/antigravity.js +49 -0
- package/dist/cli/agents/antigravity.js.map +1 -0
- package/dist/cli/agents/claude-code.d.ts +25 -0
- package/dist/cli/agents/claude-code.d.ts.map +1 -0
- package/dist/cli/agents/claude-code.js +111 -0
- package/dist/cli/agents/claude-code.js.map +1 -0
- package/dist/cli/agents/cursor.d.ts +21 -0
- package/dist/cli/agents/cursor.d.ts.map +1 -0
- package/dist/cli/agents/cursor.js +58 -0
- package/dist/cli/agents/cursor.js.map +1 -0
- package/dist/cli/agents/gemini-cli.d.ts +21 -0
- package/dist/cli/agents/gemini-cli.d.ts.map +1 -0
- package/dist/cli/agents/gemini-cli.js +55 -0
- package/dist/cli/agents/gemini-cli.js.map +1 -0
- package/dist/cli/agents/registry.d.ts +21 -0
- package/dist/cli/agents/registry.d.ts.map +1 -0
- package/dist/cli/agents/registry.js +27 -0
- package/dist/cli/agents/registry.js.map +1 -0
- package/dist/cli/agents/utils.d.ts +26 -0
- package/dist/cli/agents/utils.d.ts.map +1 -0
- package/dist/cli/agents/utils.js +136 -0
- package/dist/cli/agents/utils.js.map +1 -0
- package/dist/cli/agents/vscode.d.ts +21 -0
- package/dist/cli/agents/vscode.d.ts.map +1 -0
- package/dist/cli/agents/vscode.js +62 -0
- package/dist/cli/agents/vscode.js.map +1 -0
- package/dist/cli/auth.d.ts +2 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +94 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/backfill.d.ts +2 -0
- package/dist/cli/backfill.d.ts.map +1 -0
- package/dist/cli/backfill.js +58 -0
- package/dist/cli/backfill.js.map +1 -0
- package/dist/cli/daemon.d.ts +6 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +61 -3
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/doctor.d.ts +8 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +344 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/health.d.ts +1 -1
- package/dist/cli/health.d.ts.map +1 -1
- package/dist/cli/health.js +42 -3
- package/dist/cli/health.js.map +1 -1
- package/dist/cli/help.d.ts +6 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +63 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +35 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +201 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/plugin.d.ts +5 -0
- package/dist/cli/plugin.d.ts.map +1 -0
- package/dist/cli/plugin.js +185 -0
- package/dist/cli/plugin.js.map +1 -0
- package/dist/cli/setup-mcp.d.ts +2 -0
- package/dist/cli/setup-mcp.d.ts.map +1 -0
- package/dist/cli/setup-mcp.js +114 -0
- package/dist/cli/setup-mcp.js.map +1 -0
- package/dist/cli/shell.d.ts +2 -0
- package/dist/cli/shell.d.ts.map +1 -0
- package/dist/cli/shell.js +86 -0
- package/dist/cli/shell.js.map +1 -0
- package/dist/cli/shutdown.d.ts +2 -0
- package/dist/cli/shutdown.d.ts.map +1 -0
- package/dist/cli/shutdown.js +26 -0
- package/dist/cli/shutdown.js.map +1 -0
- package/dist/cli/status.d.ts +2 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +31 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/telemetry.d.ts +10 -0
- package/dist/cli/telemetry.d.ts.map +1 -0
- package/dist/cli/telemetry.js +56 -0
- package/dist/cli/telemetry.js.map +1 -0
- package/dist/cli/tui/agents-types.d.ts +28 -0
- package/dist/cli/tui/agents-types.d.ts.map +1 -0
- package/dist/cli/tui/agents-types.js +1 -0
- package/dist/cli/tui/agents-types.js.map +1 -0
- package/dist/cli/tui/agents.d.ts +11 -0
- package/dist/cli/tui/agents.d.ts.map +1 -0
- package/dist/cli/tui/agents.js +93 -0
- package/dist/cli/tui/agents.js.map +1 -0
- package/dist/cli/tui/banner.d.ts +3 -0
- package/dist/cli/tui/banner.d.ts.map +1 -0
- package/dist/cli/tui/banner.js +30 -0
- package/dist/cli/tui/banner.js.map +1 -0
- package/dist/cli/tui/components/AgentSelect.d.ts +13 -0
- package/dist/cli/tui/components/AgentSelect.d.ts.map +1 -0
- package/dist/cli/tui/components/AgentSelect.js +116 -0
- package/dist/cli/tui/components/AgentSelect.js.map +1 -0
- package/dist/cli/tui/components/Banner.d.ts +6 -0
- package/dist/cli/tui/components/Banner.d.ts.map +1 -0
- package/dist/cli/tui/components/Banner.js +25 -0
- package/dist/cli/tui/components/Banner.js.map +1 -0
- package/dist/cli/tui/components/BrowserSelect.d.ts +7 -0
- package/dist/cli/tui/components/BrowserSelect.d.ts.map +1 -0
- package/dist/cli/tui/components/BrowserSelect.js +19 -0
- package/dist/cli/tui/components/BrowserSelect.js.map +1 -0
- package/dist/cli/tui/components/InstallProgress.d.ts +9 -0
- package/dist/cli/tui/components/InstallProgress.d.ts.map +1 -0
- package/dist/cli/tui/components/InstallProgress.js +67 -0
- package/dist/cli/tui/components/InstallProgress.js.map +1 -0
- package/dist/cli/tui/components/SkillInstall.d.ts +14 -0
- package/dist/cli/tui/components/SkillInstall.d.ts.map +1 -0
- package/dist/cli/tui/components/SkillInstall.js +94 -0
- package/dist/cli/tui/components/SkillInstall.js.map +1 -0
- package/dist/cli/tui/components/Summary.d.ts +22 -0
- package/dist/cli/tui/components/Summary.d.ts.map +1 -0
- package/dist/cli/tui/components/Summary.js +135 -0
- package/dist/cli/tui/components/Summary.js.map +1 -0
- package/dist/cli/tui/components/SystemCheck.d.ts +8 -0
- package/dist/cli/tui/components/SystemCheck.d.ts.map +1 -0
- package/dist/cli/tui/components/SystemCheck.js +71 -0
- package/dist/cli/tui/components/SystemCheck.js.map +1 -0
- package/dist/cli/tui/components/Verification.d.ts +8 -0
- package/dist/cli/tui/components/Verification.d.ts.map +1 -0
- package/dist/cli/tui/components/Verification.js +63 -0
- package/dist/cli/tui/components/Verification.js.map +1 -0
- package/dist/cli/tui/config-writer-cli.d.ts +12 -0
- package/dist/cli/tui/config-writer-cli.d.ts.map +1 -0
- package/dist/cli/tui/config-writer-cli.js +39 -0
- package/dist/cli/tui/config-writer-cli.js.map +1 -0
- package/dist/cli/tui/config-writer-json.d.ts +16 -0
- package/dist/cli/tui/config-writer-json.d.ts.map +1 -0
- package/dist/cli/tui/config-writer-json.js +86 -0
- package/dist/cli/tui/config-writer-json.js.map +1 -0
- package/dist/cli/tui/config-writer-toml.d.ts +16 -0
- package/dist/cli/tui/config-writer-toml.d.ts.map +1 -0
- package/dist/cli/tui/config-writer-toml.js +83 -0
- package/dist/cli/tui/config-writer-toml.js.map +1 -0
- package/dist/cli/tui/config-writer.d.ts +25 -0
- package/dist/cli/tui/config-writer.d.ts.map +1 -0
- package/dist/cli/tui/config-writer.js +101 -0
- package/dist/cli/tui/config-writer.js.map +1 -0
- package/dist/cli/tui/detect-helpers.d.ts +6 -0
- package/dist/cli/tui/detect-helpers.d.ts.map +1 -0
- package/dist/cli/tui/detect-helpers.js +45 -0
- package/dist/cli/tui/detect-helpers.js.map +1 -0
- package/dist/cli/tui/extras-prompt.d.ts +7 -0
- package/dist/cli/tui/extras-prompt.d.ts.map +1 -0
- package/dist/cli/tui/extras-prompt.js +42 -0
- package/dist/cli/tui/extras-prompt.js.map +1 -0
- package/dist/cli/tui/flags-types.d.ts +19 -0
- package/dist/cli/tui/flags-types.d.ts.map +1 -0
- package/dist/cli/tui/flags-types.js +23 -0
- package/dist/cli/tui/flags-types.js.map +1 -0
- package/dist/cli/tui/flags.d.ts +5 -0
- package/dist/cli/tui/flags.d.ts.map +1 -0
- package/dist/cli/tui/flags.js +132 -0
- package/dist/cli/tui/flags.js.map +1 -0
- package/dist/cli/tui/format.d.ts +14 -0
- package/dist/cli/tui/format.d.ts.map +1 -0
- package/dist/cli/tui/format.js +37 -0
- package/dist/cli/tui/format.js.map +1 -0
- package/dist/cli/tui/hooks/useAgentDetect.d.ts +6 -0
- package/dist/cli/tui/hooks/useAgentDetect.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useAgentDetect.js +19 -0
- package/dist/cli/tui/hooks/useAgentDetect.js.map +1 -0
- package/dist/cli/tui/hooks/useInstall.d.ts +14 -0
- package/dist/cli/tui/hooks/useInstall.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useInstall.js +90 -0
- package/dist/cli/tui/hooks/useInstall.js.map +1 -0
- package/dist/cli/tui/hooks/useSystemCheck.d.ts +13 -0
- package/dist/cli/tui/hooks/useSystemCheck.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useSystemCheck.js +95 -0
- package/dist/cli/tui/hooks/useSystemCheck.js.map +1 -0
- package/dist/cli/tui/hooks/useVerify.d.ts +14 -0
- package/dist/cli/tui/hooks/useVerify.d.ts.map +1 -0
- package/dist/cli/tui/hooks/useVerify.js +71 -0
- package/dist/cli/tui/hooks/useVerify.js.map +1 -0
- package/dist/cli/tui/ink-init.d.ts +2 -0
- package/dist/cli/tui/ink-init.d.ts.map +1 -0
- package/dist/cli/tui/ink-init.js +198 -0
- package/dist/cli/tui/ink-init.js.map +1 -0
- package/dist/cli/tui/reporter-auto.d.ts +7 -0
- package/dist/cli/tui/reporter-auto.d.ts.map +1 -0
- package/dist/cli/tui/reporter-auto.js +15 -0
- package/dist/cli/tui/reporter-auto.js.map +1 -0
- package/dist/cli/tui/reporter.d.ts +26 -0
- package/dist/cli/tui/reporter.d.ts.map +1 -0
- package/dist/cli/tui/reporter.js +32 -0
- package/dist/cli/tui/reporter.js.map +1 -0
- package/dist/cli/tui/run-command.d.ts +14 -0
- package/dist/cli/tui/run-command.d.ts.map +1 -0
- package/dist/cli/tui/run-command.js +72 -0
- package/dist/cli/tui/run-command.js.map +1 -0
- package/dist/cli/tui/select-agents.d.ts +6 -0
- package/dist/cli/tui/select-agents.d.ts.map +1 -0
- package/dist/cli/tui/select-agents.js +32 -0
- package/dist/cli/tui/select-agents.js.map +1 -0
- package/dist/cli/tui/status-agents.d.ts +11 -0
- package/dist/cli/tui/status-agents.d.ts.map +1 -0
- package/dist/cli/tui/status-agents.js +53 -0
- package/dist/cli/tui/status-agents.js.map +1 -0
- package/dist/cli/tui/status-cache.d.ts +6 -0
- package/dist/cli/tui/status-cache.d.ts.map +1 -0
- package/dist/cli/tui/status-cache.js +39 -0
- package/dist/cli/tui/status-cache.js.map +1 -0
- package/dist/cli/tui/status-format.d.ts +14 -0
- package/dist/cli/tui/status-format.d.ts.map +1 -0
- package/dist/cli/tui/status-format.js +41 -0
- package/dist/cli/tui/status-format.js.map +1 -0
- package/dist/cli/tui/status-python.d.ts +6 -0
- package/dist/cli/tui/status-python.d.ts.map +1 -0
- package/dist/cli/tui/status-python.js +30 -0
- package/dist/cli/tui/status-python.js.map +1 -0
- package/dist/cli/tui/system-check.d.ts +24 -0
- package/dist/cli/tui/system-check.d.ts.map +1 -0
- package/dist/cli/tui/system-check.js +103 -0
- package/dist/cli/tui/system-check.js.map +1 -0
- package/dist/cli/tui/tui-reporter.d.ts +19 -0
- package/dist/cli/tui/tui-reporter.d.ts.map +1 -0
- package/dist/cli/tui/tui-reporter.js +95 -0
- package/dist/cli/tui/tui-reporter.js.map +1 -0
- package/dist/cli/tui/utils/config-writer.d.ts +3 -0
- package/dist/cli/tui/utils/config-writer.d.ts.map +1 -0
- package/dist/cli/tui/utils/config-writer.js +22 -0
- package/dist/cli/tui/utils/config-writer.js.map +1 -0
- package/dist/cli/tui/utils/suppress-logs.d.ts +3 -0
- package/dist/cli/tui/utils/suppress-logs.d.ts.map +1 -0
- package/dist/cli/tui/utils/suppress-logs.js +11 -0
- package/dist/cli/tui/utils/suppress-logs.js.map +1 -0
- package/dist/cli/tui/verify-suggestions.d.ts +5 -0
- package/dist/cli/tui/verify-suggestions.d.ts.map +1 -0
- package/dist/cli/tui/verify-suggestions.js +20 -0
- package/dist/cli/tui/verify-suggestions.js.map +1 -0
- package/dist/cli/tui/verify.d.ts +14 -0
- package/dist/cli/tui/verify.d.ts.map +1 -0
- package/dist/cli/tui/verify.js +101 -0
- package/dist/cli/tui/verify.js.map +1 -0
- package/dist/cli/tui/version.d.ts +2 -0
- package/dist/cli/tui/version.d.ts.map +1 -0
- package/dist/cli/tui/version.js +14 -0
- package/dist/cli/tui/version.js.map +1 -0
- package/dist/cli/uninstall.d.ts +2 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +57 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/cli/warmup.d.ts +10 -2
- package/dist/cli/warmup.d.ts.map +1 -1
- package/dist/cli/warmup.js +226 -93
- package/dist/cli/warmup.js.map +1 -1
- package/dist/config.d.ts +28 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +106 -56
- package/dist/config.js.map +1 -1
- package/dist/crawl/crawler.d.ts +6 -0
- package/dist/crawl/crawler.d.ts.map +1 -1
- package/dist/crawl/crawler.js +210 -209
- package/dist/crawl/crawler.js.map +1 -1
- package/dist/crawl/dedup.d.ts +1 -0
- package/dist/crawl/dedup.d.ts.map +1 -1
- package/dist/crawl/dedup.js +124 -81
- package/dist/crawl/dedup.js.map +1 -1
- package/dist/crawl/etag-incremental.d.ts +43 -0
- package/dist/crawl/etag-incremental.d.ts.map +1 -0
- package/dist/crawl/etag-incremental.js +94 -0
- package/dist/crawl/etag-incremental.js.map +1 -0
- package/dist/crawl/index-to-vec.d.ts +10 -0
- package/dist/crawl/index-to-vec.d.ts.map +1 -0
- package/dist/crawl/index-to-vec.js +44 -0
- package/dist/crawl/index-to-vec.js.map +1 -0
- package/dist/crawl/mapper.js +136 -164
- package/dist/crawl/mapper.js.map +1 -1
- package/dist/crawl/rate-limiter.js +63 -66
- package/dist/crawl/rate-limiter.js.map +1 -1
- package/dist/crawl/robots.js +58 -57
- package/dist/crawl/robots.js.map +1 -1
- package/dist/crawl/sitemap-first.d.ts +12 -0
- package/dist/crawl/sitemap-first.d.ts.map +1 -0
- package/dist/crawl/sitemap-first.js +47 -0
- package/dist/crawl/sitemap-first.js.map +1 -0
- package/dist/crawl/sitemap.js +33 -32
- package/dist/crawl/sitemap.js.map +1 -1
- package/dist/crawl/url-utils.d.ts +1 -0
- package/dist/crawl/url-utils.d.ts.map +1 -1
- package/dist/crawl/url-utils.js +49 -37
- package/dist/crawl/url-utils.js.map +1 -1
- package/dist/daemon/health-check.d.ts +16 -0
- package/dist/daemon/health-check.d.ts.map +1 -0
- package/dist/daemon/health-check.js +33 -0
- package/dist/daemon/health-check.js.map +1 -0
- package/dist/daemon/http-server.d.ts +26 -0
- package/dist/daemon/http-server.d.ts.map +1 -0
- package/dist/daemon/http-server.js +275 -0
- package/dist/daemon/http-server.js.map +1 -0
- package/dist/daemon/proxy.d.ts +10 -0
- package/dist/daemon/proxy.d.ts.map +1 -0
- package/dist/daemon/proxy.js +93 -0
- package/dist/daemon/proxy.js.map +1 -0
- package/dist/embedding/embed.d.ts +59 -0
- package/dist/embedding/embed.d.ts.map +1 -0
- package/dist/embedding/embed.js +233 -0
- package/dist/embedding/embed.js.map +1 -0
- package/dist/embedding/fastembed-provider.d.ts +19 -0
- package/dist/embedding/fastembed-provider.d.ts.map +1 -0
- package/dist/embedding/fastembed-provider.js +51 -0
- package/dist/embedding/fastembed-provider.js.map +1 -0
- package/dist/embedding/key-terms.d.ts +12 -0
- package/dist/embedding/key-terms.d.ts.map +1 -0
- package/dist/embedding/key-terms.js +234 -0
- package/dist/embedding/key-terms.js.map +1 -0
- package/dist/extraction/boilerplate.d.ts +15 -0
- package/dist/extraction/boilerplate.d.ts.map +1 -0
- package/dist/extraction/boilerplate.js +52 -0
- package/dist/extraction/boilerplate.js.map +1 -0
- package/dist/extraction/defuddle.d.ts.map +1 -1
- package/dist/extraction/defuddle.js +27 -23
- package/dist/extraction/defuddle.js.map +1 -1
- package/dist/extraction/extract.d.ts.map +1 -1
- package/dist/extraction/extract.js +76 -76
- package/dist/extraction/extract.js.map +1 -1
- package/dist/extraction/jsonld.js +50 -54
- package/dist/extraction/jsonld.js.map +1 -1
- package/dist/extraction/lang-hints.d.ts +2 -0
- package/dist/extraction/lang-hints.d.ts.map +1 -0
- package/dist/extraction/lang-hints.js +30 -0
- package/dist/extraction/lang-hints.js.map +1 -0
- package/dist/extraction/llm-fallback.d.ts +17 -0
- package/dist/extraction/llm-fallback.d.ts.map +1 -0
- package/dist/extraction/llm-fallback.js +130 -0
- package/dist/extraction/llm-fallback.js.map +1 -0
- package/dist/extraction/markdown-sanitize.d.ts +2 -0
- package/dist/extraction/markdown-sanitize.d.ts.map +1 -0
- package/dist/extraction/markdown-sanitize.js +151 -0
- package/dist/extraction/markdown-sanitize.js.map +1 -0
- package/dist/extraction/markdown.d.ts +11 -0
- package/dist/extraction/markdown.d.ts.map +1 -1
- package/dist/extraction/markdown.js +195 -91
- package/dist/extraction/markdown.js.map +1 -1
- package/dist/extraction/pipeline.d.ts +8 -0
- package/dist/extraction/pipeline.d.ts.map +1 -1
- package/dist/extraction/pipeline.js +57 -91
- package/dist/extraction/pipeline.js.map +1 -1
- package/dist/extraction/readability.d.ts +1 -1
- package/dist/extraction/readability.d.ts.map +1 -1
- package/dist/extraction/readability.js +28 -29
- package/dist/extraction/readability.js.map +1 -1
- package/dist/extraction/schema.d.ts +12 -0
- package/dist/extraction/schema.d.ts.map +1 -1
- package/dist/extraction/schema.js +135 -72
- package/dist/extraction/schema.js.map +1 -1
- package/dist/extraction/site-extractors/docs-generic.d.ts.map +1 -1
- package/dist/extraction/site-extractors/docs-generic.js +81 -91
- package/dist/extraction/site-extractors/docs-generic.js.map +1 -1
- package/dist/extraction/site-extractors/github.d.ts.map +1 -1
- package/dist/extraction/site-extractors/github.js +87 -95
- package/dist/extraction/site-extractors/github.js.map +1 -1
- package/dist/extraction/site-extractors/mdn.d.ts.map +1 -1
- package/dist/extraction/site-extractors/mdn.js +46 -54
- package/dist/extraction/site-extractors/mdn.js.map +1 -1
- package/dist/extraction/site-extractors/stackoverflow.d.ts.map +1 -1
- package/dist/extraction/site-extractors/stackoverflow.js +71 -80
- package/dist/extraction/site-extractors/stackoverflow.js.map +1 -1
- package/dist/extraction/structured-data.d.ts +4 -0
- package/dist/extraction/structured-data.d.ts.map +1 -0
- package/dist/extraction/structured-data.js +173 -0
- package/dist/extraction/structured-data.js.map +1 -0
- package/dist/extraction/structured.d.ts +4 -0
- package/dist/extraction/structured.d.ts.map +1 -0
- package/dist/extraction/structured.js +163 -0
- package/dist/extraction/structured.js.map +1 -0
- package/dist/extraction/v1/classifier.d.ts +3 -0
- package/dist/extraction/v1/classifier.d.ts.map +1 -0
- package/dist/extraction/v1/classifier.js +110 -0
- package/dist/extraction/v1/classifier.js.map +1 -0
- package/dist/extraction/v1/extract-provider.d.ts +16 -0
- package/dist/extraction/v1/extract-provider.d.ts.map +1 -0
- package/dist/extraction/v1/extract-provider.js +43 -0
- package/dist/extraction/v1/extract-provider.js.map +1 -0
- package/dist/extraction/v1/local-llm.d.ts +8 -0
- package/dist/extraction/v1/local-llm.d.ts.map +1 -0
- package/dist/extraction/v1/local-llm.js +34 -0
- package/dist/extraction/v1/local-llm.js.map +1 -0
- package/dist/extraction/v1/news.d.ts +3 -0
- package/dist/extraction/v1/news.d.ts.map +1 -0
- package/dist/extraction/v1/news.js +61 -0
- package/dist/extraction/v1/news.js.map +1 -0
- package/dist/extraction/v1/product.d.ts +3 -0
- package/dist/extraction/v1/product.d.ts.map +1 -0
- package/dist/extraction/v1/product.js +166 -0
- package/dist/extraction/v1/product.js.map +1 -0
- package/dist/extraction/v1/recipe.d.ts +3 -0
- package/dist/extraction/v1/recipe.d.ts.map +1 -0
- package/dist/extraction/v1/recipe.js +136 -0
- package/dist/extraction/v1/recipe.js.map +1 -0
- package/dist/extraction/v1/routed.d.ts +17 -0
- package/dist/extraction/v1/routed.d.ts.map +1 -0
- package/dist/extraction/v1/routed.js +68 -0
- package/dist/extraction/v1/routed.js.map +1 -0
- package/dist/extraction/v1/schemas/Article.d.ts +11 -0
- package/dist/extraction/v1/schemas/Article.d.ts.map +1 -0
- package/dist/extraction/v1/schemas/Article.js +23 -0
- package/dist/extraction/v1/schemas/Article.js.map +1 -0
- package/dist/extraction/v1/schemas/CodeSnippet.d.ts +9 -0
- package/dist/extraction/v1/schemas/CodeSnippet.d.ts.map +1 -0
- package/dist/extraction/v1/schemas/CodeSnippet.js +90 -0
- package/dist/extraction/v1/schemas/CodeSnippet.js.map +1 -0
- package/dist/extraction/v1/schemas/EventListing.d.ts +10 -0
- package/dist/extraction/v1/schemas/EventListing.d.ts.map +1 -0
- package/dist/extraction/v1/schemas/EventListing.js +122 -0
- package/dist/extraction/v1/schemas/EventListing.js.map +1 -0
- package/dist/extraction/v1/schemas/Paper.d.ts +10 -0
- package/dist/extraction/v1/schemas/Paper.d.ts.map +1 -0
- package/dist/extraction/v1/schemas/Paper.js +156 -0
- package/dist/extraction/v1/schemas/Paper.js.map +1 -0
- package/dist/extraction/v1/schemas/Product.d.ts +17 -0
- package/dist/extraction/v1/schemas/Product.d.ts.map +1 -0
- package/dist/extraction/v1/schemas/Product.js +149 -0
- package/dist/extraction/v1/schemas/Product.js.map +1 -0
- package/dist/extraction/v1/schemas/Recipe.d.ts +14 -0
- package/dist/extraction/v1/schemas/Recipe.d.ts.map +1 -0
- package/dist/extraction/v1/schemas/Recipe.js +160 -0
- package/dist/extraction/v1/schemas/Recipe.js.map +1 -0
- package/dist/extraction/v1/schemas/index.d.ts +13 -0
- package/dist/extraction/v1/schemas/index.d.ts.map +1 -0
- package/dist/extraction/v1/schemas/index.js +44 -0
- package/dist/extraction/v1/schemas/index.js.map +1 -0
- package/dist/extraction/v1/site-extractors.d.ts +5 -0
- package/dist/extraction/v1/site-extractors.d.ts.map +1 -0
- package/dist/extraction/v1/site-extractors.js +31 -0
- package/dist/extraction/v1/site-extractors.js.map +1 -0
- package/dist/fetch/action-executor.d.ts +28 -0
- package/dist/fetch/action-executor.d.ts.map +1 -0
- package/dist/fetch/action-executor.js +88 -0
- package/dist/fetch/action-executor.js.map +1 -0
- package/dist/fetch/auth.d.ts +2 -1
- package/dist/fetch/auth.d.ts.map +1 -1
- package/dist/fetch/auth.js +56 -26
- package/dist/fetch/auth.js.map +1 -1
- package/dist/fetch/browser-pool.d.ts +30 -11
- package/dist/fetch/browser-pool.d.ts.map +1 -1
- package/dist/fetch/browser-pool.js +303 -127
- package/dist/fetch/browser-pool.js.map +1 -1
- package/dist/fetch/browser-selector.d.ts +17 -0
- package/dist/fetch/browser-selector.d.ts.map +1 -0
- package/dist/fetch/browser-selector.js +72 -0
- package/dist/fetch/browser-selector.js.map +1 -0
- package/dist/fetch/browser-types.d.ts +3 -0
- package/dist/fetch/browser-types.d.ts.map +1 -0
- package/dist/fetch/browser-types.js +45 -0
- package/dist/fetch/browser-types.js.map +1 -0
- package/dist/fetch/cdp-client.d.ts +9 -0
- package/dist/fetch/cdp-client.d.ts.map +1 -0
- package/dist/fetch/cdp-client.js +89 -0
- package/dist/fetch/cdp-client.js.map +1 -0
- package/dist/fetch/content-check.js +39 -46
- package/dist/fetch/content-check.js.map +1 -1
- package/dist/fetch/error-describe.d.ts +7 -0
- package/dist/fetch/error-describe.d.ts.map +1 -0
- package/dist/fetch/error-describe.js +37 -0
- package/dist/fetch/error-describe.js.map +1 -0
- package/dist/fetch/http-client.d.ts +4 -0
- package/dist/fetch/http-client.d.ts.map +1 -1
- package/dist/fetch/http-client.js +147 -128
- package/dist/fetch/http-client.js.map +1 -1
- package/dist/fetch/lightpanda.d.ts +28 -0
- package/dist/fetch/lightpanda.d.ts.map +1 -0
- package/dist/fetch/lightpanda.js +174 -0
- package/dist/fetch/lightpanda.js.map +1 -0
- package/dist/fetch/playwright-tier.d.ts +19 -0
- package/dist/fetch/playwright-tier.d.ts.map +1 -0
- package/dist/fetch/playwright-tier.js +76 -0
- package/dist/fetch/playwright-tier.js.map +1 -0
- package/dist/fetch/router.d.ts +49 -3
- package/dist/fetch/router.d.ts.map +1 -1
- package/dist/fetch/router.js +187 -81
- package/dist/fetch/router.js.map +1 -1
- package/dist/index.js +102 -17
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +31 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +245 -0
- package/dist/instructions.js.map +1 -0
- package/dist/integrations/cloud/llm/anthropic.d.ts +3 -0
- package/dist/integrations/cloud/llm/anthropic.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/anthropic.js +41 -0
- package/dist/integrations/cloud/llm/anthropic.js.map +1 -0
- package/dist/integrations/cloud/llm/cache.d.ts +5 -0
- package/dist/integrations/cloud/llm/cache.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/cache.js +49 -0
- package/dist/integrations/cloud/llm/cache.js.map +1 -0
- package/dist/integrations/cloud/llm/gemini.d.ts +3 -0
- package/dist/integrations/cloud/llm/gemini.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/gemini.js +37 -0
- package/dist/integrations/cloud/llm/gemini.js.map +1 -0
- package/dist/integrations/cloud/llm/groq.d.ts +3 -0
- package/dist/integrations/cloud/llm/groq.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/groq.js +74 -0
- package/dist/integrations/cloud/llm/groq.js.map +1 -0
- package/dist/integrations/cloud/llm/hash.d.ts +3 -0
- package/dist/integrations/cloud/llm/hash.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/hash.js +26 -0
- package/dist/integrations/cloud/llm/hash.js.map +1 -0
- package/dist/integrations/cloud/llm/model-select.d.ts +5 -0
- package/dist/integrations/cloud/llm/model-select.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/model-select.js +32 -0
- package/dist/integrations/cloud/llm/model-select.js.map +1 -0
- package/dist/integrations/cloud/llm/openai.d.ts +3 -0
- package/dist/integrations/cloud/llm/openai.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/openai.js +43 -0
- package/dist/integrations/cloud/llm/openai.js.map +1 -0
- package/dist/integrations/cloud/llm/run.d.ts +27 -0
- package/dist/integrations/cloud/llm/run.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/run.js +99 -0
- package/dist/integrations/cloud/llm/run.js.map +1 -0
- package/dist/integrations/cloud/llm/select.d.ts +5 -0
- package/dist/integrations/cloud/llm/select.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/select.js +30 -0
- package/dist/integrations/cloud/llm/select.js.map +1 -0
- package/dist/integrations/cloud/llm/text-adapters.d.ts +19 -0
- package/dist/integrations/cloud/llm/text-adapters.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/text-adapters.js +103 -0
- package/dist/integrations/cloud/llm/text-adapters.js.map +1 -0
- package/dist/integrations/cloud/llm/types.d.ts +24 -0
- package/dist/integrations/cloud/llm/types.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/types.js +1 -0
- package/dist/integrations/cloud/llm/types.js.map +1 -0
- package/dist/integrations/cloud/llm/validate.d.ts +6 -0
- package/dist/integrations/cloud/llm/validate.d.ts.map +1 -0
- package/dist/integrations/cloud/llm/validate.js +63 -0
- package/dist/integrations/cloud/llm/validate.js.map +1 -0
- package/dist/logger.d.ts +4 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +71 -30
- package/dist/logger.js.map +1 -1
- package/dist/pdf-parse.d.js +1 -0
- package/dist/pdf-parse.d.js.map +1 -0
- package/dist/plugins/loader.d.ts +20 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +157 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/registry.d.ts +26 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +71 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/validate.d.ts +9 -0
- package/dist/plugins/validate.d.ts.map +1 -0
- package/dist/plugins/validate.js +79 -0
- package/dist/plugins/validate.js.map +1 -0
- package/dist/providers/embed-provider.d.ts +11 -0
- package/dist/providers/embed-provider.d.ts.map +1 -0
- package/dist/providers/embed-provider.js +24 -0
- package/dist/providers/embed-provider.js.map +1 -0
- package/dist/providers/extract-provider.d.ts +23 -0
- package/dist/providers/extract-provider.d.ts.map +1 -0
- package/dist/providers/extract-provider.js +25 -0
- package/dist/providers/extract-provider.js.map +1 -0
- package/dist/providers/rerank-provider.d.ts +17 -0
- package/dist/providers/rerank-provider.d.ts.map +1 -0
- package/dist/providers/rerank-provider.js +41 -0
- package/dist/providers/rerank-provider.js.map +1 -0
- package/dist/providers/search-provider.d.ts +25 -0
- package/dist/providers/search-provider.d.ts.map +1 -0
- package/dist/providers/search-provider.js +44 -0
- package/dist/providers/search-provider.js.map +1 -0
- package/dist/providers/vector-store.d.ts +27 -0
- package/dist/providers/vector-store.d.ts.map +1 -0
- package/dist/providers/vector-store.js +27 -0
- package/dist/providers/vector-store.js.map +1 -0
- package/dist/python-env.d.ts +9 -0
- package/dist/python-env.d.ts.map +1 -0
- package/dist/python-env.js +13 -0
- package/dist/python-env.js.map +1 -0
- package/dist/repl/commands/agent.d.ts +5 -0
- package/dist/repl/commands/agent.d.ts.map +1 -0
- package/dist/repl/commands/agent.js +62 -0
- package/dist/repl/commands/agent.js.map +1 -0
- package/dist/repl/commands/cache.d.ts +4 -0
- package/dist/repl/commands/cache.d.ts.map +1 -0
- package/dist/repl/commands/cache.js +43 -0
- package/dist/repl/commands/cache.js.map +1 -0
- package/dist/repl/commands/crawl.d.ts +7 -0
- package/dist/repl/commands/crawl.d.ts.map +1 -0
- package/dist/repl/commands/crawl.js +44 -0
- package/dist/repl/commands/crawl.js.map +1 -0
- package/dist/repl/commands/extract.d.ts +5 -0
- package/dist/repl/commands/extract.d.ts.map +1 -0
- package/dist/repl/commands/extract.js +47 -0
- package/dist/repl/commands/extract.js.map +1 -0
- package/dist/repl/commands/fetch.d.ts +5 -0
- package/dist/repl/commands/fetch.d.ts.map +1 -0
- package/dist/repl/commands/fetch.js +67 -0
- package/dist/repl/commands/fetch.js.map +1 -0
- package/dist/repl/commands/find-similar.d.ts +5 -0
- package/dist/repl/commands/find-similar.d.ts.map +1 -0
- package/dist/repl/commands/find-similar.js +74 -0
- package/dist/repl/commands/find-similar.js.map +1 -0
- package/dist/repl/commands/research.d.ts +5 -0
- package/dist/repl/commands/research.d.ts.map +1 -0
- package/dist/repl/commands/research.js +65 -0
- package/dist/repl/commands/research.js.map +1 -0
- package/dist/repl/commands/search.d.ts +5 -0
- package/dist/repl/commands/search.d.ts.map +1 -0
- package/dist/repl/commands/search.js +74 -0
- package/dist/repl/commands/search.js.map +1 -0
- package/dist/repl/commands/types.d.ts +9 -0
- package/dist/repl/commands/types.d.ts.map +1 -0
- package/dist/repl/commands/types.js +1 -0
- package/dist/repl/commands/types.js.map +1 -0
- package/dist/repl/formatters.d.ts +13 -0
- package/dist/repl/formatters.d.ts.map +1 -0
- package/dist/repl/formatters.js +283 -0
- package/dist/repl/formatters.js.map +1 -0
- package/dist/repl/parser.d.ts +9 -0
- package/dist/repl/parser.d.ts.map +1 -0
- package/dist/repl/parser.js +86 -0
- package/dist/repl/parser.js.map +1 -0
- package/dist/repl/shell.d.ts +8 -0
- package/dist/repl/shell.d.ts.map +1 -0
- package/dist/repl/shell.js +184 -0
- package/dist/repl/shell.js.map +1 -0
- package/dist/research/branch-exploration.d.ts +14 -0
- package/dist/research/branch-exploration.d.ts.map +1 -0
- package/dist/research/branch-exploration.js +100 -0
- package/dist/research/branch-exploration.js.map +1 -0
- package/dist/research/brief.d.ts +6 -0
- package/dist/research/brief.d.ts.map +1 -0
- package/dist/research/brief.js +246 -0
- package/dist/research/brief.js.map +1 -0
- package/dist/research/citation-graph.d.ts +9 -0
- package/dist/research/citation-graph.d.ts.map +1 -0
- package/dist/research/citation-graph.js +114 -0
- package/dist/research/citation-graph.js.map +1 -0
- package/dist/research/decompose.d.ts +14 -0
- package/dist/research/decompose.d.ts.map +1 -0
- package/dist/research/decompose.js +439 -0
- package/dist/research/decompose.js.map +1 -0
- package/dist/research/pipeline.d.ts +5 -0
- package/dist/research/pipeline.d.ts.map +1 -0
- package/dist/research/pipeline.js +269 -0
- package/dist/research/pipeline.js.map +1 -0
- package/dist/research/synthesis-local.d.ts +19 -0
- package/dist/research/synthesis-local.d.ts.map +1 -0
- package/dist/research/synthesis-local.js +62 -0
- package/dist/research/synthesis-local.js.map +1 -0
- package/dist/research/synthesize.d.ts +10 -0
- package/dist/research/synthesize.d.ts.map +1 -0
- package/dist/research/synthesize.js +137 -0
- package/dist/research/synthesize.js.map +1 -0
- package/dist/search/answer-synthesis.d.ts +33 -0
- package/dist/search/answer-synthesis.d.ts.map +1 -0
- package/dist/search/answer-synthesis.js +244 -0
- package/dist/search/answer-synthesis.js.map +1 -0
- package/dist/search/context-formatter.d.ts +3 -0
- package/dist/search/context-formatter.d.ts.map +1 -0
- package/dist/search/context-formatter.js +56 -0
- package/dist/search/context-formatter.js.map +1 -0
- package/dist/search/dedup.d.ts +1 -0
- package/dist/search/dedup.d.ts.map +1 -1
- package/dist/search/dedup.js +40 -32
- package/dist/search/dedup.js.map +1 -1
- package/dist/search/engines/arxiv.d.ts +7 -0
- package/dist/search/engines/arxiv.d.ts.map +1 -0
- package/dist/search/engines/arxiv.js +70 -0
- package/dist/search/engines/arxiv.js.map +1 -0
- package/dist/search/engines/bing-news.d.ts +7 -0
- package/dist/search/engines/bing-news.d.ts.map +1 -0
- package/dist/search/engines/bing-news.js +97 -0
- package/dist/search/engines/bing-news.js.map +1 -0
- package/dist/search/engines/bing.d.ts +1 -0
- package/dist/search/engines/bing.d.ts.map +1 -1
- package/dist/search/engines/bing.js +100 -44
- package/dist/search/engines/bing.js.map +1 -1
- package/dist/search/engines/devdocs.d.ts +6 -0
- package/dist/search/engines/devdocs.d.ts.map +1 -0
- package/dist/search/engines/devdocs.js +56 -0
- package/dist/search/engines/devdocs.js.map +1 -0
- package/dist/search/engines/duckduckgo.d.ts.map +1 -1
- package/dist/search/engines/duckduckgo.js +56 -44
- package/dist/search/engines/duckduckgo.js.map +1 -1
- package/dist/search/engines/github-code.d.ts +7 -0
- package/dist/search/engines/github-code.d.ts.map +1 -0
- package/dist/search/engines/github-code.js +55 -0
- package/dist/search/engines/github-code.js.map +1 -0
- package/dist/search/engines/hn-algolia.d.ts +7 -0
- package/dist/search/engines/hn-algolia.d.ts.map +1 -0
- package/dist/search/engines/hn-algolia.js +76 -0
- package/dist/search/engines/hn-algolia.js.map +1 -0
- package/dist/search/engines/lobsters.d.ts +7 -0
- package/dist/search/engines/lobsters.d.ts.map +1 -0
- package/dist/search/engines/lobsters.js +83 -0
- package/dist/search/engines/lobsters.js.map +1 -0
- package/dist/search/engines/mdn.d.ts +7 -0
- package/dist/search/engines/mdn.d.ts.map +1 -0
- package/dist/search/engines/mdn.js +48 -0
- package/dist/search/engines/mdn.js.map +1 -0
- package/dist/search/engines/semantic-scholar.d.ts +7 -0
- package/dist/search/engines/semantic-scholar.d.ts.map +1 -0
- package/dist/search/engines/semantic-scholar.js +69 -0
- package/dist/search/engines/semantic-scholar.js.map +1 -0
- package/dist/search/engines/stackoverflow.d.ts +7 -0
- package/dist/search/engines/stackoverflow.d.ts.map +1 -0
- package/dist/search/engines/stackoverflow.js +73 -0
- package/dist/search/engines/stackoverflow.js.map +1 -0
- package/dist/search/engines/startpage.d.ts.map +1 -1
- package/dist/search/engines/startpage.js +65 -46
- package/dist/search/engines/startpage.js.map +1 -1
- package/dist/search/evidence.d.ts +25 -0
- package/dist/search/evidence.d.ts.map +1 -0
- package/dist/search/evidence.js +220 -0
- package/dist/search/evidence.js.map +1 -0
- package/dist/search/filters.d.ts.map +1 -1
- package/dist/search/filters.js +58 -54
- package/dist/search/filters.js.map +1 -1
- package/dist/search/find-similar/crawl-rank.d.ts +9 -0
- package/dist/search/find-similar/crawl-rank.d.ts.map +1 -0
- package/dist/search/find-similar/crawl-rank.js +272 -0
- package/dist/search/find-similar/crawl-rank.js.map +1 -0
- package/dist/search/find-similar/mode.d.ts +4 -0
- package/dist/search/find-similar/mode.d.ts.map +1 -0
- package/dist/search/find-similar/mode.js +12 -0
- package/dist/search/find-similar/mode.js.map +1 -0
- package/dist/search/find-similar.d.ts +5 -0
- package/dist/search/find-similar.d.ts.map +1 -0
- package/dist/search/find-similar.js +509 -0
- package/dist/search/find-similar.js.map +1 -0
- package/dist/search/highlights.d.ts +19 -0
- package/dist/search/highlights.d.ts.map +1 -0
- package/dist/search/highlights.js +167 -0
- package/dist/search/highlights.js.map +1 -0
- package/dist/search/language-filter.d.ts +29 -0
- package/dist/search/language-filter.d.ts.map +1 -0
- package/dist/search/language-filter.js +126 -0
- package/dist/search/language-filter.js.map +1 -0
- package/dist/search/legacy/searxng-orchestrator.d.ts +4 -0
- package/dist/search/legacy/searxng-orchestrator.d.ts.map +1 -0
- package/dist/search/legacy/searxng-orchestrator.js +501 -0
- package/dist/search/legacy/searxng-orchestrator.js.map +1 -0
- package/dist/search/legacy/searxng-provider.d.ts +7 -0
- package/dist/search/legacy/searxng-provider.d.ts.map +1 -0
- package/dist/search/legacy/searxng-provider.js +11 -0
- package/dist/search/legacy/searxng-provider.js.map +1 -0
- package/dist/search/multi-query.d.ts +25 -0
- package/dist/search/multi-query.d.ts.map +1 -0
- package/dist/search/multi-query.js +228 -0
- package/dist/search/multi-query.js.map +1 -0
- package/dist/search/query.js +32 -34
- package/dist/search/query.js.map +1 -1
- package/dist/search/rerank.d.ts +3 -1
- package/dist/search/rerank.d.ts.map +1 -1
- package/dist/search/rerank.js +44 -35
- package/dist/search/rerank.js.map +1 -1
- package/dist/search/reranker/authority-boost.d.ts +3 -0
- package/dist/search/reranker/authority-boost.d.ts.map +1 -0
- package/dist/search/reranker/authority-boost.js +179 -0
- package/dist/search/reranker/authority-boost.js.map +1 -0
- package/dist/search/reranker/consensus-boost.d.ts +3 -0
- package/dist/search/reranker/consensus-boost.d.ts.map +1 -0
- package/dist/search/reranker/consensus-boost.js +27 -0
- package/dist/search/reranker/consensus-boost.js.map +1 -0
- package/dist/search/reranker/recency-boost.d.ts +3 -0
- package/dist/search/reranker/recency-boost.d.ts.map +1 -0
- package/dist/search/reranker/recency-boost.js +13 -0
- package/dist/search/reranker/recency-boost.js.map +1 -0
- package/dist/search/reranker/recency.d.ts +3 -0
- package/dist/search/reranker/recency.d.ts.map +1 -0
- package/dist/search/reranker/recency.js +23 -0
- package/dist/search/reranker/recency.js.map +1 -0
- package/dist/search/reranker/transformers-rerank-provider.d.ts +13 -0
- package/dist/search/reranker/transformers-rerank-provider.d.ts.map +1 -0
- package/dist/search/reranker/transformers-rerank-provider.js +94 -0
- package/dist/search/reranker/transformers-rerank-provider.js.map +1 -0
- package/dist/search/rrf.d.ts +17 -0
- package/dist/search/rrf.d.ts.map +1 -0
- package/dist/search/rrf.js +39 -0
- package/dist/search/rrf.js.map +1 -0
- package/dist/search/sampling.d.ts +25 -0
- package/dist/search/sampling.d.ts.map +1 -0
- package/dist/search/sampling.js +52 -0
- package/dist/search/sampling.js.map +1 -0
- package/dist/search/searxng.d.ts.map +1 -1
- package/dist/search/searxng.js +69 -79
- package/dist/search/searxng.js.map +1 -1
- package/dist/search/tokens.d.ts +3 -0
- package/dist/search/tokens.d.ts.map +1 -0
- package/dist/search/tokens.js +39 -0
- package/dist/search/tokens.js.map +1 -0
- package/dist/search/truncate.d.ts +6 -0
- package/dist/search/truncate.d.ts.map +1 -0
- package/dist/search/truncate.js +26 -0
- package/dist/search/truncate.js.map +1 -0
- package/dist/search/url-unwrap.d.ts +3 -0
- package/dist/search/url-unwrap.d.ts.map +1 -0
- package/dist/search/url-unwrap.js +43 -0
- package/dist/search/url-unwrap.js.map +1 -0
- package/dist/search/v1/context-rank.d.ts +13 -0
- package/dist/search/v1/context-rank.d.ts.map +1 -0
- package/dist/search/v1/context-rank.js +74 -0
- package/dist/search/v1/context-rank.js.map +1 -0
- package/dist/search/v1/engine-base.d.ts +27 -0
- package/dist/search/v1/engine-base.d.ts.map +1 -0
- package/dist/search/v1/engine-base.js +110 -0
- package/dist/search/v1/engine-base.js.map +1 -0
- package/dist/search/v1/intent-router.d.ts +22 -0
- package/dist/search/v1/intent-router.d.ts.map +1 -0
- package/dist/search/v1/intent-router.js +138 -0
- package/dist/search/v1/intent-router.js.map +1 -0
- package/dist/search/v1/orchestrator.d.ts +24 -0
- package/dist/search/v1/orchestrator.d.ts.map +1 -0
- package/dist/search/v1/orchestrator.js +163 -0
- package/dist/search/v1/orchestrator.js.map +1 -0
- package/dist/search/v1/recency-boost.d.ts +9 -0
- package/dist/search/v1/recency-boost.d.ts.map +1 -0
- package/dist/search/v1/recency-boost.js +37 -0
- package/dist/search/v1/recency-boost.js.map +1 -0
- package/dist/search/v1/recent-cache-dedup.d.ts +6 -0
- package/dist/search/v1/recent-cache-dedup.d.ts.map +1 -0
- package/dist/search/v1/recent-cache-dedup.js +85 -0
- package/dist/search/v1/recent-cache-dedup.js.map +1 -0
- package/dist/search/v1/rss/feed-config.d.ts +21 -0
- package/dist/search/v1/rss/feed-config.d.ts.map +1 -0
- package/dist/search/v1/rss/feed-config.js +90 -0
- package/dist/search/v1/rss/feed-config.js.map +1 -0
- package/dist/search/v1/rss/feed-parser.d.ts +14 -0
- package/dist/search/v1/rss/feed-parser.d.ts.map +1 -0
- package/dist/search/v1/rss/feed-parser.js +104 -0
- package/dist/search/v1/rss/feed-parser.js.map +1 -0
- package/dist/search/v1/rss/feed-poller.d.ts +22 -0
- package/dist/search/v1/rss/feed-poller.d.ts.map +1 -0
- package/dist/search/v1/rss/feed-poller.js +102 -0
- package/dist/search/v1/rss/feed-poller.js.map +1 -0
- package/dist/search/v1/rss/feed-store.d.ts +30 -0
- package/dist/search/v1/rss/feed-store.d.ts.map +1 -0
- package/dist/search/v1/rss/feed-store.js +134 -0
- package/dist/search/v1/rss/feed-store.js.map +1 -0
- package/dist/search/v1/rss/rss-engine.d.ts +6 -0
- package/dist/search/v1/rss/rss-engine.d.ts.map +1 -0
- package/dist/search/v1/rss/rss-engine.js +28 -0
- package/dist/search/v1/rss/rss-engine.js.map +1 -0
- package/dist/search/v1/v1-provider.d.ts +7 -0
- package/dist/search/v1/v1-provider.d.ts.map +1 -0
- package/dist/search/v1/v1-provider.js +68 -0
- package/dist/search/v1/v1-provider.js.map +1 -0
- package/dist/search/v1/verticals/code.d.ts +4 -0
- package/dist/search/v1/verticals/code.d.ts.map +1 -0
- package/dist/search/v1/verticals/code.js +20 -0
- package/dist/search/v1/verticals/code.js.map +1 -0
- package/dist/search/v1/verticals/docs.d.ts +4 -0
- package/dist/search/v1/verticals/docs.d.ts.map +1 -0
- package/dist/search/v1/verticals/docs.js +20 -0
- package/dist/search/v1/verticals/docs.js.map +1 -0
- package/dist/search/v1/verticals/general.d.ts +4 -0
- package/dist/search/v1/verticals/general.d.ts.map +1 -0
- package/dist/search/v1/verticals/general.js +22 -0
- package/dist/search/v1/verticals/general.js.map +1 -0
- package/dist/search/v1/verticals/news.d.ts +10 -0
- package/dist/search/v1/verticals/news.d.ts.map +1 -0
- package/dist/search/v1/verticals/news.js +52 -0
- package/dist/search/v1/verticals/news.js.map +1 -0
- package/dist/search/v1/verticals/papers.d.ts +4 -0
- package/dist/search/v1/verticals/papers.d.ts.map +1 -0
- package/dist/search/v1/verticals/papers.js +23 -0
- package/dist/search/v1/verticals/papers.js.map +1 -0
- package/dist/search/validator.js +31 -31
- package/dist/search/validator.js.map +1 -1
- package/dist/searxng/bootstrap.d.ts +30 -0
- package/dist/searxng/bootstrap.d.ts.map +1 -1
- package/dist/searxng/bootstrap.js +223 -85
- package/dist/searxng/bootstrap.js.map +1 -1
- package/dist/searxng/docker.d.ts.map +1 -1
- package/dist/searxng/docker.js +69 -60
- package/dist/searxng/docker.js.map +1 -1
- package/dist/searxng/process.d.ts +13 -1
- package/dist/searxng/process.d.ts.map +1 -1
- package/dist/searxng/process.js +231 -164
- package/dist/searxng/process.js.map +1 -1
- package/dist/server/backend-status.d.ts +13 -0
- package/dist/server/backend-status.d.ts.map +1 -0
- package/dist/server/backend-status.js +40 -0
- package/dist/server/backend-status.js.map +1 -0
- package/dist/server/tool-schemas.d.ts +549 -0
- package/dist/server/tool-schemas.d.ts.map +1 -0
- package/dist/server/tool-schemas.js +464 -0
- package/dist/server/tool-schemas.js.map +1 -0
- package/dist/server/warmup-on-start.d.ts +9 -0
- package/dist/server/warmup-on-start.d.ts.map +1 -0
- package/dist/server/warmup-on-start.js +55 -0
- package/dist/server/warmup-on-start.js.map +1 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +454 -297
- package/dist/server.js.map +1 -1
- package/dist/tools/agent.d.ts +5 -0
- package/dist/tools/agent.d.ts.map +1 -0
- package/dist/tools/agent.js +128 -0
- package/dist/tools/agent.js.map +1 -0
- package/dist/tools/cache.d.ts +2 -1
- package/dist/tools/cache.d.ts.map +1 -1
- package/dist/tools/cache.js +177 -44
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/crawl.d.ts.map +1 -1
- package/dist/tools/crawl.js +171 -88
- package/dist/tools/crawl.js.map +1 -1
- package/dist/tools/extract.d.ts +2 -2
- package/dist/tools/extract.d.ts.map +1 -1
- package/dist/tools/extract.js +175 -59
- package/dist/tools/extract.js.map +1 -1
- package/dist/tools/fetch.d.ts +2 -2
- package/dist/tools/fetch.d.ts.map +1 -1
- package/dist/tools/fetch.js +174 -68
- package/dist/tools/fetch.js.map +1 -1
- package/dist/tools/find-similar.d.ts +5 -0
- package/dist/tools/find-similar.d.ts.map +1 -0
- package/dist/tools/find-similar.js +127 -0
- package/dist/tools/find-similar.js.map +1 -0
- package/dist/tools/research.d.ts +5 -0
- package/dist/tools/research.d.ts.map +1 -0
- package/dist/tools/research.js +107 -0
- package/dist/tools/research.js.map +1 -0
- package/dist/tools/search.d.ts +10 -2
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +13 -158
- package/dist/tools/search.js.map +1 -1
- package/dist/types.d.ts +350 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -1
- package/dist/util/mode.d.ts +4 -0
- package/dist/util/mode.d.ts.map +1 -0
- package/dist/util/mode.js +34 -0
- package/dist/util/mode.js.map +1 -0
- package/package.json +78 -8
- package/dist/extraction/trafilatura.d.ts +0 -6
- package/dist/extraction/trafilatura.d.ts.map +0 -1
- package/dist/extraction/trafilatura.js +0 -105
- package/dist/extraction/trafilatura.js.map +0 -1
- package/dist/search/flashrank.d.ts +0 -12
- package/dist/search/flashrank.d.ts.map +0 -1
- package/dist/search/flashrank.js +0 -63
- package/dist/search/flashrank.js.map +0 -1
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/server.ts"],"sourcesContent":["import { dirname, join } from 'node:path';\nimport { mkdirSync, readFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n ListToolsRequestSchema,\n CallToolRequestSchema,\n ListResourcesRequestSchema,\n ReadResourceRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { SmartRouter, type HttpClient } from './fetch/router.js';\nimport { MultiBrowserPool } from './fetch/browser-pool.js';\nimport { closeDaemonBrowser } from './fetch/playwright-tier.js';\nimport { httpFetch } from './fetch/http-client.js';\nimport { initDatabase, closeDatabase } from './cache/db.js';\nimport { handleFetch } from './tools/fetch.js';\nimport { handleSearch } from './tools/search.js';\nimport { handleCrawl } from './tools/crawl.js';\nimport { handleCache } from './tools/cache.js';\nimport { handleExtract } from './tools/extract.js';\nimport { handleFindSimilar } from './tools/find-similar.js';\nimport { handleResearch } from './tools/research.js';\nimport { handleAgent } from './tools/agent.js';\nimport type { SamplingCapableServer } from './search/sampling.js';\nimport { SearxngClient } from './search/searxng.js';\nimport { DuckDuckGoEngine } from './search/engines/duckduckgo.js';\nimport { BingEngine } from './search/engines/bing.js';\nimport { StartpageEngine } from './search/engines/startpage.js';\nimport { resolveSearchBackend, bootstrapNativeSearxng, getBootstrapState } from './searxng/bootstrap.js';\nimport { SearxngProcess } from './searxng/process.js';\nimport { DockerSearxng } from './searxng/docker.js';\nimport { BackendStatus } from './server/backend-status.js';\nimport { maybeEagerWarmup } from './server/warmup-on-start.js';\nimport { getEmbeddingService, resetEmbeddingService } from './embedding/embed.js';\nimport { getConfig } from './config.js';\nimport { createLogger } from './logger.js';\nimport {\n WIGOLO_INSTRUCTIONS,\n WIGOLO_INSTRUCTIONS_FULL,\n WIGOLO_DOCS_URI,\n TOOL_DESCRIPTIONS,\n} from './instructions.js';\nimport {\n FETCH_TOOL_SCHEMA,\n SEARCH_TOOL_SCHEMA,\n CRAWL_TOOL_SCHEMA,\n CACHE_TOOL_SCHEMA,\n EXTRACT_TOOL_SCHEMA,\n FIND_SIMILAR_TOOL_SCHEMA,\n RESEARCH_TOOL_SCHEMA,\n AGENT_TOOL_SCHEMA,\n} from './server/tool-schemas.js';\nimport { loadPlugins } from './plugins/loader.js';\nimport { PluginRegistry } from './plugins/registry.js';\nimport { registerExtractor } from './extraction/pipeline.js';\nimport type { FetchInput, SearchInput, SearchEngine, CrawlInput, CacheInput, ExtractInput, FindSimilarInput, ResearchInput, AgentInput, ProgressCallback } from './types.js';\n\nconst log = createLogger('server');\n\nfunction readPackageVersion(): string {\n try {\n const here = dirname(fileURLToPath(import.meta.url));\n // src/server.ts in dev, dist/server.js in build — both are siblings of package.json\n const pkgPath = join(here, '..', 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version?: string };\n return pkg.version ?? '0.0.0';\n } catch {\n return '0.0.0';\n }\n}\n\nconst SERVER_VERSION = readPackageVersion();\n\nexport interface Subsystems {\n searchEngines: SearchEngine[];\n browserPool: MultiBrowserPool;\n router: SmartRouter;\n backendStatus: BackendStatus;\n pluginRegistry: PluginRegistry;\n shutdown: () => Promise<void>;\n bootstrapSearxng: () => Promise<void>;\n}\n\nexport async function initSubsystems(): Promise<Subsystems> {\n const config = getConfig();\n\n mkdirSync(config.dataDir, { recursive: true });\n initDatabase(join(config.dataDir, 'wigolo.db'));\n\n // Initialize embedding service: loads stored vectors into in-memory index\n // so find_similar can run the embedding path. Subprocess starts lazily on\n // first embed() call, so this is cheap if no embeddings exist yet.\n try {\n await getEmbeddingService().init();\n } catch (err) {\n log.warn('embedding service init failed, find_similar will run without embedding path', {\n error: String(err),\n });\n }\n\n const httpClient: HttpClient = {\n fetch: (url, options) => httpFetch(url, options),\n };\n const browserPool = new MultiBrowserPool({\n browserTypes: config.browserTypes,\n selectionStrategy: 'round-robin',\n });\n const router = new SmartRouter(httpClient, browserPool);\n\n if (config.lightpandaEnabled && config.lightpandaUrl) {\n log.info('lightpanda browser backend enabled', {\n url: config.lightpandaUrl,\n failureThreshold: config.lightpandaFailureThreshold,\n });\n }\n\n const backendStatus = new BackendStatus();\n\n const searchEngines: SearchEngine[] = [\n new BingEngine(),\n new DuckDuckGoEngine(),\n new StartpageEngine(),\n ];\n // Load plugins from ~/.wigolo/plugins/\n const pluginRegistry = new PluginRegistry();\n try {\n const pluginResult = await loadPlugins();\n for (const ext of pluginResult.extractors) {\n pluginRegistry.registerExtractor(ext, ext.name);\n registerExtractor(ext);\n }\n for (const eng of pluginResult.searchEngines) {\n pluginRegistry.registerSearchEngine(eng, eng.name);\n searchEngines.push(eng);\n }\n if (pluginResult.errors.length > 0) {\n log.warn('some plugins failed to load', {\n errors: pluginResult.errors.map(e => `${e.pluginName}: ${e.message}`),\n });\n }\n if (pluginResult.loaded.length > 0) {\n log.info('plugins loaded', {\n count: pluginResult.loaded.length,\n names: pluginResult.loaded.map(p => p.name),\n });\n }\n } catch (err) {\n log.error('plugin loading failed', { error: String(err) });\n }\n\n let searxngProcess: SearxngProcess | null = null;\n let dockerSearxng: DockerSearxng | null = null;\n let searxngBootstrap: Promise<void> | null = null;\n\n async function bootstrapSearxng(): Promise<void> {\n try {\n const initialState = getBootstrapState(config.dataDir);\n if (!config.searxngUrl && initialState?.status !== 'ready') {\n backendStatus.markBootstrapping();\n }\n\n const backend = await resolveSearchBackend();\n\n if (backend.type === 'external' && backend.url) {\n searchEngines.unshift(new SearxngClient(backend.url));\n backendStatus.markHealthy();\n log.info('using external search engine', { url: backend.url });\n return;\n }\n\n if (backend.type === 'native' && backend.searxngPath) {\n const state = getBootstrapState(config.dataDir);\n if (state?.status !== 'ready') {\n log.info('search engine not ready — bootstrapping in background; search uses fallback engines until ready');\n try {\n await bootstrapNativeSearxng(config.dataDir);\n } catch (err) {\n log.warn('search engine bootstrap failed, continuing with fallback scraping');\n backendStatus.markUnhealthy(`bootstrap exception: ${String(err)}`);\n return;\n }\n }\n const postBootstrapState = getBootstrapState(config.dataDir);\n if (postBootstrapState?.status === 'ready') {\n searxngProcess = new SearxngProcess(backend.searxngPath, config.dataDir, {\n onUnhealthy: (reason) => {\n backendStatus.markUnhealthy(reason);\n const idx = searchEngines.findIndex(e => e.name === 'searxng');\n if (idx >= 0) searchEngines.splice(idx, 1);\n log.warn('search engine marked unhealthy', { reason });\n },\n onHealthy: () => {\n const url = searxngProcess?.getUrl();\n if (!url) return;\n backendStatus.markHealthy();\n if (!searchEngines.some(e => e.name === 'searxng')) {\n searchEngines.unshift(new SearxngClient(url));\n }\n log.info('search engine recovered');\n },\n });\n const url = await searxngProcess.start();\n if (url) {\n searchEngines.unshift(new SearxngClient(url));\n backendStatus.markHealthy();\n log.info('search engine ready', { url });\n } else {\n log.warn('search engine failed to start, using fallback scraping');\n backendStatus.markUnhealthy('search engine process failed to start');\n }\n }\n return;\n }\n\n if (backend.type === 'docker') {\n dockerSearxng = new DockerSearxng();\n const url = await dockerSearxng.start();\n if (url) {\n searchEngines.unshift(new SearxngClient(url));\n backendStatus.markHealthy();\n log.info('search engine (docker) ready', { url });\n } else {\n log.warn('search engine (docker) failed to start, using fallback scraping');\n backendStatus.markUnhealthy('search engine (docker) failed to start');\n }\n }\n\n if (backend.type === 'scraping') {\n const state = getBootstrapState(config.dataDir);\n const reason = state?.lastError?.message ?? state?.error ?? 'no search engine backend available';\n backendStatus.markUnhealthy(reason);\n }\n } catch (err) {\n log.warn('background backend setup failed', { error: String(err) });\n backendStatus.markUnhealthy(`backend setup failed: ${String(err)}`);\n }\n }\n\n async function shutdown(): Promise<void> {\n log.info('Shutting down');\n if (searxngBootstrap) {\n await Promise.race([\n searxngBootstrap.catch(() => {}),\n new Promise<void>((r) => setTimeout(r, 2000)),\n ]);\n }\n if (searxngProcess) await searxngProcess.stop();\n if (dockerSearxng) await dockerSearxng.stop();\n await browserPool.shutdown();\n await closeDaemonBrowser().catch((e) => log.debug('closeDaemonBrowser failed', { error: e instanceof Error ? e.message : String(e) }));\n resetEmbeddingService();\n closeDatabase();\n }\n\n return {\n searchEngines,\n browserPool,\n router,\n backendStatus,\n pluginRegistry,\n shutdown,\n bootstrapSearxng: () => {\n searxngBootstrap = bootstrapSearxng();\n return searxngBootstrap;\n },\n };\n}\n\nexport function createMcpServer(subsystems: Subsystems): Server {\n const { searchEngines, router, backendStatus } = subsystems;\n\n const server = new Server(\n { name: 'wigolo', version: SERVER_VERSION },\n {\n capabilities: { tools: {}, resources: {} },\n instructions: WIGOLO_INSTRUCTIONS,\n },\n );\n\n server.setRequestHandler(ListResourcesRequestSchema, async () => ({\n resources: [\n {\n uri: WIGOLO_DOCS_URI,\n name: 'Wigolo usage guide',\n description: 'Routing tables, performance budgets, auth flows, and other detail trimmed from the per-session instructions.',\n mimeType: 'text/markdown',\n },\n ],\n }));\n\n server.setRequestHandler(ReadResourceRequestSchema, async (request) => {\n if (request.params.uri !== WIGOLO_DOCS_URI) {\n throw new Error(`Unknown resource: ${request.params.uri}`);\n }\n return {\n contents: [\n {\n uri: WIGOLO_DOCS_URI,\n mimeType: 'text/markdown',\n text: WIGOLO_INSTRUCTIONS_FULL,\n },\n ],\n };\n });\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: [\n {\n name: 'fetch',\n description: TOOL_DESCRIPTIONS.fetch,\n inputSchema: FETCH_TOOL_SCHEMA,\n },\n {\n name: 'search',\n description: TOOL_DESCRIPTIONS.search,\n inputSchema: SEARCH_TOOL_SCHEMA,\n },\n {\n name: 'crawl',\n description: TOOL_DESCRIPTIONS.crawl,\n inputSchema: CRAWL_TOOL_SCHEMA,\n },\n {\n name: 'cache',\n description: TOOL_DESCRIPTIONS.cache,\n inputSchema: CACHE_TOOL_SCHEMA,\n },\n {\n name: 'extract',\n description: TOOL_DESCRIPTIONS.extract,\n inputSchema: EXTRACT_TOOL_SCHEMA,\n },\n {\n name: 'find_similar',\n description: TOOL_DESCRIPTIONS.find_similar,\n inputSchema: FIND_SIMILAR_TOOL_SCHEMA,\n },\n {\n name: 'research',\n description: TOOL_DESCRIPTIONS.research,\n inputSchema: RESEARCH_TOOL_SCHEMA,\n },\n {\n name: 'agent',\n description: TOOL_DESCRIPTIONS.agent,\n inputSchema: AGENT_TOOL_SCHEMA,\n },\n ],\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {\n const { name, arguments: args } = request.params;\n\n // If the client supplied a progressToken in request._meta, build a\n // callback that forwards progress updates as notifications/progress.\n // Used by stream_answer to emit pipeline-phase progress.\n const meta = (request.params as { _meta?: { progressToken?: string | number } })._meta;\n const progressToken = meta?.progressToken;\n const onProgress: ProgressCallback | undefined =\n progressToken !== undefined && extra && typeof extra.sendNotification === 'function'\n ? async (update) => {\n try {\n await extra.sendNotification({\n method: 'notifications/progress',\n params: {\n progressToken,\n progress: update.progress,\n total: update.total,\n message: update.message,\n },\n } as Parameters<typeof extra.sendNotification>[0]);\n } catch (err) {\n log.debug('sendNotification failed', { error: String(err) });\n }\n }\n : undefined;\n\n if (name === 'fetch') {\n const input = (args ?? {}) as unknown as FetchInput;\n const r = await handleFetch(input, router);\n if (!r.ok) {\n return {\n content: [{ type: 'text', text: JSON.stringify({ error: r.error, error_reason: r.error_reason, stage: r.stage, ...(r.hint ? { hint: r.hint } : {}) }, null, 2) }],\n isError: true,\n };\n }\n return {\n content: [{ type: 'text', text: JSON.stringify(r.data, null, 2) }],\n isError: false,\n };\n }\n\n if (name === 'search') {\n const input = (args ?? {}) as unknown as SearchInput;\n const samplingServer = server as unknown as SamplingCapableServer;\n const r = await handleSearch(input, searchEngines, router, backendStatus, samplingServer, onProgress);\n if (!r.ok) {\n return {\n content: [{ type: 'text', text: JSON.stringify({ error: r.error, error_reason: r.error_reason, stage: r.stage, ...(r.hint ? { hint: r.hint } : {}) }, null, 2) }],\n isError: true,\n };\n }\n const blocks: { type: 'text'; text: string }[] = [];\n if (r.data.warning) {\n blocks.push({ type: 'text', text: `[wigolo notice] ${r.data.warning}` });\n }\n blocks.push({ type: 'text', text: JSON.stringify(r.data, null, 2) });\n return {\n content: blocks,\n isError: !!r.data.error,\n };\n }\n\n if (name === 'crawl') {\n const input = (args ?? {}) as unknown as CrawlInput;\n const result = await handleCrawl(input, router);\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n isError: !!result.error,\n };\n }\n\n if (name === 'cache') {\n const input = (args ?? {}) as unknown as CacheInput;\n const result = await handleCache(input, router);\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n isError: !!result.error,\n };\n }\n\n if (name === 'extract') {\n const input = (args ?? {}) as unknown as ExtractInput;\n const r = await handleExtract(input, router);\n if (!r.ok) {\n return {\n content: [{ type: 'text', text: JSON.stringify({ error: r.error, error_reason: r.error_reason, stage: r.stage, ...(r.hint ? { hint: r.hint } : {}) }, null, 2) }],\n isError: true,\n };\n }\n return {\n content: [{ type: 'text', text: JSON.stringify(r.data, null, 2) }],\n isError: false,\n };\n }\n\n if (name === 'find_similar') {\n const input = (args ?? {}) as unknown as FindSimilarInput;\n const r = await handleFindSimilar(input, searchEngines, router, backendStatus);\n if (!r.ok) {\n return {\n content: [{ type: 'text', text: JSON.stringify({ error: r.error, error_reason: r.error_reason, stage: r.stage, ...(r.hint ? { hint: r.hint } : {}) }, null, 2) }],\n isError: true,\n };\n }\n return {\n content: [{ type: 'text', text: JSON.stringify(r.data, null, 2) }],\n isError: false,\n };\n }\n\n if (name === 'research') {\n const input = (args ?? {}) as unknown as ResearchInput;\n const samplingServer = server as unknown as SamplingCapableServer;\n const r = await handleResearch(input, searchEngines, router, backendStatus, samplingServer);\n if (!r.ok) {\n return {\n content: [{ type: 'text', text: JSON.stringify({ error: r.error, error_reason: r.error_reason, stage: r.stage, ...(r.hint ? { hint: r.hint } : {}) }, null, 2) }],\n isError: true,\n };\n }\n return {\n content: [{ type: 'text', text: JSON.stringify(r.data, null, 2) }],\n isError: false,\n };\n }\n\n if (name === 'agent') {\n const input = (args ?? {}) as unknown as AgentInput;\n const samplingServer = server as unknown as SamplingCapableServer;\n const r = await handleAgent(input, searchEngines, router, backendStatus, samplingServer);\n if (!r.ok) {\n return {\n content: [{ type: 'text', text: JSON.stringify({ error: r.error, error_reason: r.error_reason, stage: r.stage, ...(r.hint ? { hint: r.hint } : {}) }, null, 2) }],\n isError: true,\n };\n }\n return {\n content: [{ type: 'text', text: JSON.stringify(r.data, null, 2) }],\n isError: false,\n };\n }\n\n return {\n content: [{ type: 'text', text: `Unknown tool: ${name}` }],\n isError: true,\n };\n });\n\n return server;\n}\n\nexport async function startServer(): Promise<void> {\n const subs = await initSubsystems();\n const server = createMcpServer(subs);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n log.info('MCP server started');\n\n maybeEagerWarmup();\n\n subs.bootstrapSearxng().catch((err) => {\n log.warn('search engine bootstrap failed', { error: String(err) });\n });\n\n const shutdown = async () => {\n await subs.shutdown();\n await server.close();\n process.exit(0);\n };\n\n process.on('SIGINT', shutdown);\n process.on('SIGTERM', shutdown);\n}\n"],"mappings":"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","names":["url"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AgentInput, AgentOutput, SearchEngine, StageResult } from '../types.js';
|
|
2
|
+
import type { SmartRouter } from '../fetch/router.js';
|
|
3
|
+
import type { SamplingCapableServer } from '../search/sampling.js';
|
|
4
|
+
export declare function handleAgent(input: AgentInput, engines: SearchEngine[], router: SmartRouter, _backendStatus?: unknown, server?: SamplingCapableServer): Promise<StageResult<AgentOutput>>;
|
|
5
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/tools/agent.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,YAAY,EACZ,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAQnE,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,WAAW,EACnB,cAAc,CAAC,EAAE,OAAO,EACxB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAgFnC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { createLogger } from "../logger.js";
|
|
2
|
+
import { runAgentPipeline } from "../agent/pipeline.js";
|
|
3
|
+
import {
|
|
4
|
+
buildEvidenceFromMarkdown,
|
|
5
|
+
applyTokenBudget,
|
|
6
|
+
applyAggregateMarkdownBudget
|
|
7
|
+
} from "../search/evidence.js";
|
|
8
|
+
import { applyOutputBudget } from "../search/truncate.js";
|
|
9
|
+
const log = createLogger("agent");
|
|
10
|
+
const MAX_PAGES_LIMIT = 100;
|
|
11
|
+
const MAX_TIME_LIMIT_MS = 6e5;
|
|
12
|
+
const DEFAULT_MAX_TOKENS_OUT = 4e3;
|
|
13
|
+
async function handleAgent(input, engines, router, _backendStatus, server) {
|
|
14
|
+
try {
|
|
15
|
+
if (!input.prompt || typeof input.prompt !== "string" || input.prompt.trim().length === 0) {
|
|
16
|
+
return invalidInput("prompt is required and must be a non-empty string");
|
|
17
|
+
}
|
|
18
|
+
if (input.max_pages !== void 0) {
|
|
19
|
+
if (typeof input.max_pages !== "number" || input.max_pages < 1) {
|
|
20
|
+
return invalidInput("max_pages must be a positive number");
|
|
21
|
+
}
|
|
22
|
+
if (input.max_pages > MAX_PAGES_LIMIT) {
|
|
23
|
+
return invalidInput(`max_pages must be at most ${MAX_PAGES_LIMIT}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (input.max_time_ms !== void 0) {
|
|
27
|
+
if (typeof input.max_time_ms !== "number" || input.max_time_ms < 1) {
|
|
28
|
+
return invalidInput("max_time_ms must be a positive number");
|
|
29
|
+
}
|
|
30
|
+
if (input.max_time_ms > MAX_TIME_LIMIT_MS) {
|
|
31
|
+
return invalidInput(`max_time_ms must be at most ${MAX_TIME_LIMIT_MS}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (input.urls && input.urls.length > 0) {
|
|
35
|
+
for (const url of input.urls) {
|
|
36
|
+
try {
|
|
37
|
+
new URL(url);
|
|
38
|
+
} catch {
|
|
39
|
+
return invalidInput(`Invalid url in urls array: "${url}"`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
log.info("agent request received", {
|
|
44
|
+
prompt: input.prompt.slice(0, 100),
|
|
45
|
+
max_pages: input.max_pages,
|
|
46
|
+
max_time_ms: input.max_time_ms,
|
|
47
|
+
urlCount: input.urls?.length ?? 0,
|
|
48
|
+
hasSchema: !!input.schema
|
|
49
|
+
});
|
|
50
|
+
const result = await runAgentPipeline(
|
|
51
|
+
input,
|
|
52
|
+
engines,
|
|
53
|
+
router,
|
|
54
|
+
server
|
|
55
|
+
);
|
|
56
|
+
if (!input.schema) {
|
|
57
|
+
await attachEvidence(result, input);
|
|
58
|
+
if (input.max_tokens_out !== void 0 && typeof result.result === "string" && result.result) {
|
|
59
|
+
result.result = applyOutputBudget(result.result, { maxTokensOut: input.max_tokens_out });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (result.error) {
|
|
63
|
+
return {
|
|
64
|
+
ok: false,
|
|
65
|
+
error: result.error,
|
|
66
|
+
error_reason: result.error,
|
|
67
|
+
stage: "agent"
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return { ok: true, data: result };
|
|
71
|
+
} catch (err) {
|
|
72
|
+
log.error("agent handler failed", {
|
|
73
|
+
prompt: input.prompt?.slice(0, 100),
|
|
74
|
+
error: err instanceof Error ? err.message : String(err)
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
ok: false,
|
|
78
|
+
error: "agent_failed",
|
|
79
|
+
error_reason: err instanceof Error ? err.message : String(err),
|
|
80
|
+
stage: "agent"
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async function attachEvidence(out, input) {
|
|
85
|
+
if (out.sources.length === 0) return;
|
|
86
|
+
const includeFull = input.include_full_markdown ?? false;
|
|
87
|
+
const maxTokensOut = input.max_tokens_out ?? DEFAULT_MAX_TOKENS_OUT;
|
|
88
|
+
const collected = [];
|
|
89
|
+
for (const s of out.sources) {
|
|
90
|
+
if (!s.markdown_content) continue;
|
|
91
|
+
const evs = await buildEvidenceFromMarkdown(
|
|
92
|
+
input.prompt,
|
|
93
|
+
s.title,
|
|
94
|
+
s.url,
|
|
95
|
+
s.markdown_content,
|
|
96
|
+
{ maxItems: 1 }
|
|
97
|
+
);
|
|
98
|
+
collected.push(...evs);
|
|
99
|
+
}
|
|
100
|
+
const budgeted = applyTokenBudget(collected, maxTokensOut);
|
|
101
|
+
if (budgeted.length > 0) out.evidence = budgeted;
|
|
102
|
+
if (!includeFull) {
|
|
103
|
+
for (const s of out.sources) {
|
|
104
|
+
s.markdown_content = "";
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
applyAggregateMarkdownBudget(
|
|
108
|
+
out.sources,
|
|
109
|
+
(s) => s.markdown_content ?? "",
|
|
110
|
+
(s, body) => {
|
|
111
|
+
s.markdown_content = body;
|
|
112
|
+
},
|
|
113
|
+
{ maxTokensOut }
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function invalidInput(error_reason) {
|
|
118
|
+
return {
|
|
119
|
+
ok: false,
|
|
120
|
+
error: "invalid_input",
|
|
121
|
+
error_reason,
|
|
122
|
+
stage: "agent"
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
export {
|
|
126
|
+
handleAgent
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tools/agent.ts"],"sourcesContent":["import { createLogger } from '../logger.js';\nimport { runAgentPipeline } from '../agent/pipeline.js';\nimport {\n buildEvidenceFromMarkdown,\n applyTokenBudget,\n applyAggregateMarkdownBudget,\n} from '../search/evidence.js';\nimport { applyOutputBudget } from '../search/truncate.js';\nimport type {\n AgentInput,\n AgentOutput,\n EvidenceItem,\n SearchEngine,\n StageResult,\n} from '../types.js';\nimport type { SmartRouter } from '../fetch/router.js';\nimport type { SamplingCapableServer } from '../search/sampling.js';\n\nconst log = createLogger('agent');\n\nconst MAX_PAGES_LIMIT = 100;\nconst MAX_TIME_LIMIT_MS = 600000;\nconst DEFAULT_MAX_TOKENS_OUT = 4000;\n\nexport async function handleAgent(\n input: AgentInput,\n engines: SearchEngine[],\n router: SmartRouter,\n _backendStatus?: unknown,\n server?: SamplingCapableServer,\n): Promise<StageResult<AgentOutput>> {\n try {\n if (!input.prompt || typeof input.prompt !== 'string' || input.prompt.trim().length === 0) {\n return invalidInput('prompt is required and must be a non-empty string');\n }\n\n if (input.max_pages !== undefined) {\n if (typeof input.max_pages !== 'number' || input.max_pages < 1) {\n return invalidInput('max_pages must be a positive number');\n }\n if (input.max_pages > MAX_PAGES_LIMIT) {\n return invalidInput(`max_pages must be at most ${MAX_PAGES_LIMIT}`);\n }\n }\n\n if (input.max_time_ms !== undefined) {\n if (typeof input.max_time_ms !== 'number' || input.max_time_ms < 1) {\n return invalidInput('max_time_ms must be a positive number');\n }\n if (input.max_time_ms > MAX_TIME_LIMIT_MS) {\n return invalidInput(`max_time_ms must be at most ${MAX_TIME_LIMIT_MS}`);\n }\n }\n\n if (input.urls && input.urls.length > 0) {\n for (const url of input.urls) {\n try {\n new URL(url);\n } catch {\n return invalidInput(`Invalid url in urls array: \"${url}\"`);\n }\n }\n }\n\n log.info('agent request received', {\n prompt: input.prompt.slice(0, 100),\n max_pages: input.max_pages,\n max_time_ms: input.max_time_ms,\n urlCount: input.urls?.length ?? 0,\n hasSchema: !!input.schema,\n });\n\n const result = await runAgentPipeline(\n input,\n engines,\n router,\n server,\n );\n\n // Only populate evidence on the no-schema path; schema callers want the\n // structured object intact and not buried under prose excerpts.\n if (!input.schema) {\n await attachEvidence(result, input);\n // Cap result text under the same budget. Schema results are left intact.\n if (input.max_tokens_out !== undefined && typeof result.result === 'string' && result.result) {\n result.result = applyOutputBudget(result.result, { maxTokensOut: input.max_tokens_out });\n }\n }\n\n if (result.error) {\n return {\n ok: false,\n error: result.error,\n error_reason: result.error,\n stage: 'agent',\n };\n }\n return { ok: true, data: result };\n } catch (err) {\n log.error('agent handler failed', {\n prompt: input.prompt?.slice(0, 100),\n error: err instanceof Error ? err.message : String(err),\n });\n return {\n ok: false,\n error: 'agent_failed',\n error_reason: err instanceof Error ? err.message : String(err),\n stage: 'agent',\n };\n }\n}\n\nasync function attachEvidence(out: AgentOutput, input: AgentInput): Promise<void> {\n if (out.sources.length === 0) return;\n const includeFull = input.include_full_markdown ?? false;\n const maxTokensOut = input.max_tokens_out ?? DEFAULT_MAX_TOKENS_OUT;\n\n const collected: EvidenceItem[] = [];\n for (const s of out.sources) {\n if (!s.markdown_content) continue;\n const evs = await buildEvidenceFromMarkdown(\n input.prompt,\n s.title,\n s.url,\n s.markdown_content,\n { maxItems: 1 },\n );\n collected.push(...evs);\n }\n\n const budgeted = applyTokenBudget(collected, maxTokensOut);\n if (budgeted.length > 0) out.evidence = budgeted;\n\n if (!includeFull) {\n for (const s of out.sources) {\n s.markdown_content = '';\n }\n } else {\n applyAggregateMarkdownBudget(\n out.sources,\n (s) => s.markdown_content ?? '',\n (s, body) => { s.markdown_content = body; },\n { maxTokensOut },\n );\n }\n}\n\nfunction invalidInput(error_reason: string): StageResult<AgentOutput> {\n return {\n ok: false,\n error: 'invalid_input',\n error_reason,\n stage: 'agent',\n };\n}\n"],"mappings":"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","names":[]}
|
package/dist/tools/cache.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { CacheInput, CacheOutput } from '../types.js';
|
|
2
|
-
|
|
2
|
+
import type { SmartRouter } from '../fetch/router.js';
|
|
3
|
+
export declare function handleCache(input: CacheInput, router?: SmartRouter): Promise<CacheOutput>;
|
|
3
4
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/tools/cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/tools/cache.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAiC,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQtD,wBAAsB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAqH/F"}
|
package/dist/tools/cache.js
CHANGED
|
@@ -1,50 +1,183 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import {
|
|
2
|
+
searchCacheFiltered,
|
|
3
|
+
getCacheStats,
|
|
4
|
+
clearCacheEntries,
|
|
5
|
+
ftsSearchRanked,
|
|
6
|
+
getCachedContentByNormalizedUrl
|
|
7
|
+
} from "../cache/store.js";
|
|
8
|
+
import { detectChange } from "../cache/change-detector.js";
|
|
9
|
+
import { getExtractProvider } from "../providers/extract-provider.js";
|
|
10
|
+
import { reciprocalRankFusion, sortByRRFScore, buildRankMap } from "../search/rrf.js";
|
|
11
|
+
import { getEmbedProvider } from "../providers/embed-provider.js";
|
|
12
|
+
import { getVectorStore } from "../providers/vector-store.js";
|
|
13
|
+
import { createLogger } from "../logger.js";
|
|
14
|
+
const log = createLogger("cache");
|
|
15
|
+
const DEFAULT_HYBRID_LIMIT = 20;
|
|
16
|
+
const HYBRID_CANDIDATE_FLOOR = 50;
|
|
17
|
+
const HYBRID_CANDIDATE_FACTOR = 5;
|
|
18
|
+
async function handleCache(input, router) {
|
|
19
|
+
try {
|
|
20
|
+
if (input.check_changes) {
|
|
21
|
+
log.info("Checking for content changes", {
|
|
22
|
+
query: input.query,
|
|
23
|
+
urlPattern: input.url_pattern,
|
|
24
|
+
since: input.since
|
|
25
|
+
});
|
|
26
|
+
const entries = searchCacheFiltered({
|
|
27
|
+
query: input.query,
|
|
28
|
+
urlPattern: input.url_pattern,
|
|
29
|
+
since: input.since
|
|
30
|
+
});
|
|
31
|
+
const changes = [];
|
|
32
|
+
for (const entry of entries) {
|
|
33
|
+
try {
|
|
34
|
+
if (!router) {
|
|
35
|
+
changes.push({
|
|
36
|
+
url: entry.url,
|
|
37
|
+
changed: false,
|
|
38
|
+
current_hash: entry.contentHash,
|
|
39
|
+
error: "no router available for re-fetch"
|
|
23
40
|
});
|
|
24
|
-
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const raw = await router.fetch(entry.url, { renderJs: "auto" });
|
|
44
|
+
const extractor = await getExtractProvider();
|
|
45
|
+
const extraction = await extractor.extract(raw.html, raw.finalUrl, {
|
|
46
|
+
contentType: raw.contentType
|
|
47
|
+
});
|
|
48
|
+
const changeResult = detectChange(entry.url, extraction.markdown);
|
|
49
|
+
changes.push({
|
|
50
|
+
url: entry.url,
|
|
51
|
+
changed: changeResult.changed,
|
|
52
|
+
current_hash: entry.contentHash,
|
|
53
|
+
...changeResult.changed ? {
|
|
54
|
+
previous_hash: changeResult.previousHash,
|
|
55
|
+
diff_summary: changeResult.diffSummary
|
|
56
|
+
} : {}
|
|
57
|
+
});
|
|
58
|
+
} catch (err) {
|
|
59
|
+
log.warn("change check failed for URL", {
|
|
60
|
+
url: entry.url,
|
|
61
|
+
error: err instanceof Error ? err.message : String(err)
|
|
62
|
+
});
|
|
63
|
+
changes.push({
|
|
64
|
+
url: entry.url,
|
|
65
|
+
changed: false,
|
|
66
|
+
current_hash: entry.contentHash,
|
|
67
|
+
error: err instanceof Error ? err.message : String(err)
|
|
68
|
+
});
|
|
25
69
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
query: input.query,
|
|
33
|
-
urlPattern: input.url_pattern,
|
|
34
|
-
since: input.since,
|
|
35
|
-
});
|
|
36
|
-
return {
|
|
37
|
-
results: results.map((r) => ({
|
|
38
|
-
url: r.url,
|
|
39
|
-
title: r.title,
|
|
40
|
-
markdown: r.markdown,
|
|
41
|
-
fetched_at: r.fetchedAt,
|
|
42
|
-
})),
|
|
43
|
-
};
|
|
70
|
+
}
|
|
71
|
+
return { changes };
|
|
72
|
+
}
|
|
73
|
+
if (input.stats) {
|
|
74
|
+
log.debug("Cache stats requested");
|
|
75
|
+
return { stats: getCacheStats() };
|
|
44
76
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return { error:
|
|
77
|
+
if (input.clear) {
|
|
78
|
+
if (!input.query && !input.url_pattern && !input.since) {
|
|
79
|
+
return { error: "clear requires at least one filter (query, url_pattern, or since)" };
|
|
80
|
+
}
|
|
81
|
+
log.info("Clearing cache entries", {
|
|
82
|
+
query: input.query,
|
|
83
|
+
urlPattern: input.url_pattern,
|
|
84
|
+
since: input.since
|
|
85
|
+
});
|
|
86
|
+
const count = clearCacheEntries({
|
|
87
|
+
query: input.query,
|
|
88
|
+
urlPattern: input.url_pattern,
|
|
89
|
+
since: input.since
|
|
90
|
+
});
|
|
91
|
+
return { cleared: count };
|
|
48
92
|
}
|
|
93
|
+
if (input.mode === "hybrid" && input.query) {
|
|
94
|
+
log.debug("Cache hybrid search", {
|
|
95
|
+
query: input.query,
|
|
96
|
+
limit: input.limit
|
|
97
|
+
});
|
|
98
|
+
const results2 = await runHybridSearch(input);
|
|
99
|
+
if (results2 !== null) return { results: results2 };
|
|
100
|
+
}
|
|
101
|
+
log.debug("Cache search", {
|
|
102
|
+
query: input.query,
|
|
103
|
+
urlPattern: input.url_pattern,
|
|
104
|
+
since: input.since,
|
|
105
|
+
mode: input.mode,
|
|
106
|
+
limit: input.limit
|
|
107
|
+
});
|
|
108
|
+
const results = searchCacheFiltered({
|
|
109
|
+
query: input.query,
|
|
110
|
+
urlPattern: input.url_pattern,
|
|
111
|
+
since: input.since,
|
|
112
|
+
limit: input.limit
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
results: results.map((r) => ({
|
|
116
|
+
url: r.url,
|
|
117
|
+
title: r.title,
|
|
118
|
+
markdown: r.markdown,
|
|
119
|
+
fetched_at: r.fetchedAt
|
|
120
|
+
}))
|
|
121
|
+
};
|
|
122
|
+
} catch (err) {
|
|
123
|
+
log.error("Cache tool error", { error: String(err) });
|
|
124
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async function runHybridSearch(input) {
|
|
128
|
+
const query = input.query ?? "";
|
|
129
|
+
const limit = Math.max(1, input.limit ?? DEFAULT_HYBRID_LIMIT);
|
|
130
|
+
const candidateLimit = Math.max(HYBRID_CANDIDATE_FLOOR, limit * HYBRID_CANDIDATE_FACTOR);
|
|
131
|
+
let embedProvider;
|
|
132
|
+
let store;
|
|
133
|
+
try {
|
|
134
|
+
[embedProvider, store] = await Promise.all([getEmbedProvider(), getVectorStore()]);
|
|
135
|
+
} catch (err) {
|
|
136
|
+
log.warn("hybrid search unavailable \u2014 embed/vector provider failed", {
|
|
137
|
+
error: err instanceof Error ? err.message : String(err)
|
|
138
|
+
});
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
const indexSize = await store.size();
|
|
142
|
+
if (indexSize === 0) {
|
|
143
|
+
log.debug("hybrid search skipped \u2014 vector index empty");
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
let queryVectors;
|
|
147
|
+
try {
|
|
148
|
+
queryVectors = await embedProvider.embed([query]);
|
|
149
|
+
} catch (err) {
|
|
150
|
+
log.warn("hybrid search aborted \u2014 query embedding failed", {
|
|
151
|
+
error: err instanceof Error ? err.message : String(err)
|
|
152
|
+
});
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
const queryVector = queryVectors[0];
|
|
156
|
+
if (!queryVector || queryVector.length === 0) return null;
|
|
157
|
+
const [ftsHits, vecHits] = await Promise.all([
|
|
158
|
+
Promise.resolve(ftsSearchRanked(query, candidateLimit)),
|
|
159
|
+
store.search(queryVector, candidateLimit)
|
|
160
|
+
]);
|
|
161
|
+
const ftsRankMap = buildRankMap(ftsHits.map((h) => h.url));
|
|
162
|
+
const vecRankMap = buildRankMap(vecHits.map((h) => h.metadata.url));
|
|
163
|
+
if (ftsRankMap.size === 0 && vecRankMap.size === 0) return [];
|
|
164
|
+
const fused = reciprocalRankFusion([ftsRankMap, vecRankMap], 60);
|
|
165
|
+
const ordered = sortByRRFScore(fused);
|
|
166
|
+
const results = [];
|
|
167
|
+
for (const [normalizedUrl] of ordered) {
|
|
168
|
+
if (results.length >= limit) break;
|
|
169
|
+
const cached = getCachedContentByNormalizedUrl(normalizedUrl);
|
|
170
|
+
if (!cached) continue;
|
|
171
|
+
results.push({
|
|
172
|
+
url: cached.url,
|
|
173
|
+
title: cached.title,
|
|
174
|
+
markdown: cached.markdown,
|
|
175
|
+
fetched_at: cached.fetchedAt
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return results;
|
|
49
179
|
}
|
|
180
|
+
export {
|
|
181
|
+
handleCache
|
|
182
|
+
};
|
|
50
183
|
//# sourceMappingURL=cache.js.map
|
package/dist/tools/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/tools/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AAElC,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACnC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACvD,OAAO,EAAE,KAAK,EAAE,mEAAmE,EAAE,CAAC;YACxF,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBACjC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,WAAW;gBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,iBAAiB,CAAC;gBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,WAAW;gBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,WAAW;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,mBAAmB,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,WAAW;YAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,SAAS;aACxB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"sources":["../../src/tools/cache.ts"],"sourcesContent":["import {\n searchCacheFiltered,\n getCacheStats,\n clearCacheEntries,\n ftsSearchRanked,\n getCachedContentByNormalizedUrl,\n} from '../cache/store.js';\nimport { detectChange } from '../cache/change-detector.js';\nimport { getExtractProvider } from '../providers/extract-provider.js';\nimport { reciprocalRankFusion, sortByRRFScore, buildRankMap } from '../search/rrf.js';\nimport { getEmbedProvider } from '../providers/embed-provider.js';\nimport { getVectorStore } from '../providers/vector-store.js';\nimport { createLogger } from '../logger.js';\nimport type { CacheInput, CacheOutput, CacheResultItem, ChangeReport } from '../types.js';\nimport type { SmartRouter } from '../fetch/router.js';\n\nconst log = createLogger('cache');\n\nconst DEFAULT_HYBRID_LIMIT = 20;\nconst HYBRID_CANDIDATE_FLOOR = 50;\nconst HYBRID_CANDIDATE_FACTOR = 5;\n\nexport async function handleCache(input: CacheInput, router?: SmartRouter): Promise<CacheOutput> {\n try {\n if (input.check_changes) {\n log.info('Checking for content changes', {\n query: input.query,\n urlPattern: input.url_pattern,\n since: input.since,\n });\n\n const entries = searchCacheFiltered({\n query: input.query,\n urlPattern: input.url_pattern,\n since: input.since,\n });\n\n const changes: ChangeReport[] = [];\n for (const entry of entries) {\n try {\n if (!router) {\n changes.push({\n url: entry.url,\n changed: false,\n current_hash: entry.contentHash,\n error: 'no router available for re-fetch',\n });\n continue;\n }\n const raw = await router.fetch(entry.url, { renderJs: 'auto' });\n const extractor = await getExtractProvider();\n const extraction = await extractor.extract(raw.html, raw.finalUrl, {\n contentType: raw.contentType,\n });\n const changeResult = detectChange(entry.url, extraction.markdown);\n changes.push({\n url: entry.url,\n changed: changeResult.changed,\n current_hash: entry.contentHash,\n ...(changeResult.changed ? {\n previous_hash: changeResult.previousHash,\n diff_summary: changeResult.diffSummary,\n } : {}),\n });\n } catch (err) {\n log.warn('change check failed for URL', {\n url: entry.url,\n error: err instanceof Error ? err.message : String(err),\n });\n changes.push({\n url: entry.url,\n changed: false,\n current_hash: entry.contentHash,\n error: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n return { changes };\n }\n\n if (input.stats) {\n log.debug('Cache stats requested');\n return { stats: getCacheStats() };\n }\n\n if (input.clear) {\n if (!input.query && !input.url_pattern && !input.since) {\n return { error: 'clear requires at least one filter (query, url_pattern, or since)' };\n }\n log.info('Clearing cache entries', {\n query: input.query,\n urlPattern: input.url_pattern,\n since: input.since,\n });\n const count = clearCacheEntries({\n query: input.query,\n urlPattern: input.url_pattern,\n since: input.since,\n });\n return { cleared: count };\n }\n\n if (input.mode === 'hybrid' && input.query) {\n log.debug('Cache hybrid search', {\n query: input.query,\n limit: input.limit,\n });\n const results = await runHybridSearch(input);\n if (results !== null) return { results };\n // fall through to FTS-only when hybrid was unavailable\n }\n\n log.debug('Cache search', {\n query: input.query,\n urlPattern: input.url_pattern,\n since: input.since,\n mode: input.mode,\n limit: input.limit,\n });\n const results = searchCacheFiltered({\n query: input.query,\n urlPattern: input.url_pattern,\n since: input.since,\n limit: input.limit,\n });\n\n return {\n results: results.map((r) => ({\n url: r.url,\n title: r.title,\n markdown: r.markdown,\n fetched_at: r.fetchedAt,\n })),\n };\n } catch (err) {\n log.error('Cache tool error', { error: String(err) });\n return { error: err instanceof Error ? err.message : String(err) };\n }\n}\n\n/**\n * Hybrid FTS5 + vector search fused with reciprocal rank fusion.\n *\n * Pulls `max(limit*5, 50)` candidates from each ranking, fuses with RRF\n * (k=60), then hydrates the top `limit` into cache rows. Returns `null`\n * when the vector path is unavailable so the caller falls back to FTS-only.\n */\nasync function runHybridSearch(input: CacheInput): Promise<CacheResultItem[] | null> {\n const query = input.query ?? '';\n const limit = Math.max(1, input.limit ?? DEFAULT_HYBRID_LIMIT);\n const candidateLimit = Math.max(HYBRID_CANDIDATE_FLOOR, limit * HYBRID_CANDIDATE_FACTOR);\n\n let embedProvider;\n let store;\n try {\n [embedProvider, store] = await Promise.all([getEmbedProvider(), getVectorStore()]);\n } catch (err) {\n log.warn('hybrid search unavailable — embed/vector provider failed', {\n error: err instanceof Error ? err.message : String(err),\n });\n return null;\n }\n\n const indexSize = await store.size();\n if (indexSize === 0) {\n log.debug('hybrid search skipped — vector index empty');\n return null;\n }\n\n let queryVectors: Float32Array[];\n try {\n queryVectors = await embedProvider.embed([query]);\n } catch (err) {\n log.warn('hybrid search aborted — query embedding failed', {\n error: err instanceof Error ? err.message : String(err),\n });\n return null;\n }\n const queryVector = queryVectors[0];\n if (!queryVector || queryVector.length === 0) return null;\n\n const [ftsHits, vecHits] = await Promise.all([\n Promise.resolve(ftsSearchRanked(query, candidateLimit)),\n store.search(queryVector, candidateLimit),\n ]);\n\n const ftsRankMap = buildRankMap(ftsHits.map(h => h.url));\n const vecRankMap = buildRankMap(vecHits.map(h => h.metadata.url));\n\n if (ftsRankMap.size === 0 && vecRankMap.size === 0) return [];\n\n const fused = reciprocalRankFusion([ftsRankMap, vecRankMap], 60);\n const ordered = sortByRRFScore(fused);\n\n const results: CacheResultItem[] = [];\n for (const [normalizedUrl] of ordered) {\n if (results.length >= limit) break;\n const cached = getCachedContentByNormalizedUrl(normalizedUrl);\n if (!cached) continue;\n results.push({\n url: cached.url,\n title: cached.title,\n markdown: cached.markdown,\n fetched_at: cached.fetchedAt,\n });\n }\n\n return results;\n}\n"],"mappings":"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","names":["results"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crawl.d.ts","sourceRoot":"","sources":["../../src/tools/crawl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"crawl.d.ts","sourceRoot":"","sources":["../../src/tools/crawl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiBtD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,GAAG,CAAC,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAsF1D"}
|