@staticn0va/wigolo 0.1.0 → 0.1.1
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 +195 -73
- 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 +208 -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 +46 -1
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +362 -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 +318 -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/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 +58 -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/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 +185 -81
- package/dist/fetch/router.js.map +1 -1
- package/dist/index.js +97 -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/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/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/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 +16 -0
- package/dist/providers/rerank-provider.d.ts.map +1 -0
- package/dist/providers/rerank-provider.js +28 -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 +5 -0
- package/dist/research/brief.d.ts.map +1 -0
- package/dist/research/brief.js +242 -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 +16 -0
- package/dist/research/synthesis-local.d.ts.map +1 -0
- package/dist/research/synthesis-local.js +73 -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.js +49 -55
- 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 +12 -0
- package/dist/search/reranker/transformers-rerank-provider.d.ts.map +1 -0
- package/dist/search/reranker/transformers-rerank-provider.js +78 -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 +175 -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 +161 -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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Citation, EvidenceItem, SearchInput, SearchOutput, SearchResultItem, SourceSpan } from '../types.js';
|
|
2
|
+
export interface BuildEvidenceOptions {
|
|
3
|
+
maxTokensOut?: number;
|
|
4
|
+
maxItems?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function buildEvidenceFromMarkdown(query: string, title: string, url: string, markdown: string, opts?: BuildEvidenceOptions): Promise<EvidenceItem[]>;
|
|
7
|
+
export declare function applyAggregateMarkdownBudget<T>(items: T[], getBody: (item: T) => string, setBody: (item: T, body: string) => void, opts: {
|
|
8
|
+
maxTokensOut?: number;
|
|
9
|
+
maxChars?: number;
|
|
10
|
+
}): void;
|
|
11
|
+
export declare function applyTokenBudget(items: EvidenceItem[], maxTokensOut: number): EvidenceItem[];
|
|
12
|
+
export declare function stableCitationId(url: string, start: number): string;
|
|
13
|
+
export declare function buildEvidenceItem(input: {
|
|
14
|
+
title: string;
|
|
15
|
+
url: string;
|
|
16
|
+
sectionHeading: string | null;
|
|
17
|
+
excerpt: string;
|
|
18
|
+
score: number;
|
|
19
|
+
sourceSpan: SourceSpan;
|
|
20
|
+
}): EvidenceItem;
|
|
21
|
+
export declare function applyEvidenceDefault(input: SearchInput, output: SearchOutput, results: SearchResultItem[], query: string): Promise<void>;
|
|
22
|
+
export declare function buildCitationsFromEvidence(results: SearchResultItem[], evidence: EvidenceItem[], baseCitations: Citation[]): Citation[];
|
|
23
|
+
export declare function renderCitationsXml(citations: Citation[]): string;
|
|
24
|
+
export declare function escapeXml(s: string): string;
|
|
25
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/search/evidence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACX,MAAM,aAAa,CAAC;AAYrB,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CA+CzB;AAMD,wBAAgB,4BAA4B,CAAC,CAAC,EAC5C,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,EACxC,IAAI,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CAoBN;AAKD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,EAAE,CAa5F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;CACxB,GAAG,YAAY,CAUf;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAsFf;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,QAAQ,EAAE,YAAY,EAAE,EACxB,aAAa,EAAE,QAAQ,EAAE,GACxB,QAAQ,EAAE,CAkCZ;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAQhE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO3C"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { extractHighlights } from "./highlights.js";
|
|
3
|
+
import { countTokens, truncateByTokens } from "./tokens.js";
|
|
4
|
+
import { applyOutputBudget } from "./truncate.js";
|
|
5
|
+
import { createLogger } from "../logger.js";
|
|
6
|
+
const log = createLogger("search");
|
|
7
|
+
const DEFAULT_MAX_TOKENS_OUT = 4e3;
|
|
8
|
+
const MAX_EVIDENCE_PASSAGES = 20;
|
|
9
|
+
const TRUNCATION_MARKER = "[... content truncated]";
|
|
10
|
+
async function buildEvidenceFromMarkdown(query, title, url, markdown, opts = {}) {
|
|
11
|
+
if (!markdown) return [];
|
|
12
|
+
const maxItems = opts.maxItems ?? 1;
|
|
13
|
+
const synthetic = [{
|
|
14
|
+
title,
|
|
15
|
+
url,
|
|
16
|
+
snippet: "",
|
|
17
|
+
markdown_content: markdown,
|
|
18
|
+
relevance_score: 1
|
|
19
|
+
}];
|
|
20
|
+
let result;
|
|
21
|
+
try {
|
|
22
|
+
result = await extractHighlights(query, synthetic, Math.max(maxItems, 1));
|
|
23
|
+
} catch (err) {
|
|
24
|
+
log.debug("buildEvidenceFromMarkdown: extractHighlights failed", { error: String(err) });
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const ranked = result.highlights.slice().sort((a, b) => b.relevance_score - a.relevance_score).slice(0, maxItems);
|
|
28
|
+
const out = [];
|
|
29
|
+
let used = 0;
|
|
30
|
+
const budget = opts.maxTokensOut;
|
|
31
|
+
for (const h of ranked) {
|
|
32
|
+
let excerpt = h.text;
|
|
33
|
+
if (budget !== void 0) {
|
|
34
|
+
const remaining = budget - used;
|
|
35
|
+
if (remaining <= 0) break;
|
|
36
|
+
excerpt = truncateByTokens(h.text, remaining);
|
|
37
|
+
if (!excerpt || excerpt.trim() === TRUNCATION_MARKER) break;
|
|
38
|
+
}
|
|
39
|
+
const span = h.source_span ?? { start: 0, end: excerpt.length };
|
|
40
|
+
out.push(buildEvidenceItem({
|
|
41
|
+
title: h.source_title || title,
|
|
42
|
+
url: h.source_url || url,
|
|
43
|
+
sectionHeading: h.section_heading ?? null,
|
|
44
|
+
excerpt,
|
|
45
|
+
score: h.relevance_score,
|
|
46
|
+
sourceSpan: span
|
|
47
|
+
}));
|
|
48
|
+
if (budget !== void 0) used += countTokens(excerpt);
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
function applyAggregateMarkdownBudget(items, getBody, setBody, opts) {
|
|
53
|
+
const budget = opts.maxTokensOut;
|
|
54
|
+
let used = 0;
|
|
55
|
+
for (const item of items) {
|
|
56
|
+
const body = getBody(item);
|
|
57
|
+
if (!body) continue;
|
|
58
|
+
if (budget !== void 0) {
|
|
59
|
+
const remaining = budget - used;
|
|
60
|
+
if (remaining <= 0) {
|
|
61
|
+
setBody(item, "");
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const trimmed = applyOutputBudget(body, { maxTokensOut: remaining, maxChars: opts.maxChars });
|
|
65
|
+
setBody(item, trimmed);
|
|
66
|
+
used += countTokens(trimmed);
|
|
67
|
+
} else {
|
|
68
|
+
const trimmed = applyOutputBudget(body, { maxChars: opts.maxChars });
|
|
69
|
+
setBody(item, trimmed);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function applyTokenBudget(items, maxTokensOut) {
|
|
74
|
+
if (maxTokensOut <= 0) return [];
|
|
75
|
+
const out = [];
|
|
76
|
+
let used = 0;
|
|
77
|
+
for (const item of items) {
|
|
78
|
+
const remaining = maxTokensOut - used;
|
|
79
|
+
if (remaining <= 0) break;
|
|
80
|
+
const excerpt = truncateByTokens(item.excerpt, remaining);
|
|
81
|
+
if (!excerpt) break;
|
|
82
|
+
out.push({ ...item, excerpt });
|
|
83
|
+
used += countTokens(excerpt);
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
function stableCitationId(url, start) {
|
|
88
|
+
return createHash("sha1").update(`${url}#${start}`).digest("hex").slice(0, 12);
|
|
89
|
+
}
|
|
90
|
+
function buildEvidenceItem(input) {
|
|
91
|
+
return {
|
|
92
|
+
title: input.title,
|
|
93
|
+
url: input.url,
|
|
94
|
+
section_heading: input.sectionHeading,
|
|
95
|
+
excerpt: input.excerpt,
|
|
96
|
+
score: input.score,
|
|
97
|
+
citation_id: stableCitationId(input.url, input.sourceSpan.start),
|
|
98
|
+
source_span: input.sourceSpan
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async function applyEvidenceDefault(input, output, results, query) {
|
|
102
|
+
if (results.length === 0) return;
|
|
103
|
+
const includeFullMarkdown = input.include_full_markdown ?? false;
|
|
104
|
+
const citationFormat = input.citation_format ?? "numbered";
|
|
105
|
+
const maxTokensOut = input.max_tokens_out ?? DEFAULT_MAX_TOKENS_OUT;
|
|
106
|
+
let highlightsResult;
|
|
107
|
+
try {
|
|
108
|
+
highlightsResult = await extractHighlights(query, results, MAX_EVIDENCE_PASSAGES);
|
|
109
|
+
} catch (err) {
|
|
110
|
+
log.debug("evidence extraction failed", { error: String(err) });
|
|
111
|
+
const msg = "evidence extraction failed; results returned without highlights";
|
|
112
|
+
output.warning = output.warning ? `${output.warning}; ${msg}` : msg;
|
|
113
|
+
highlightsResult = { highlights: [], citations: [], reranker_used: false };
|
|
114
|
+
}
|
|
115
|
+
const ranked = highlightsResult.highlights.slice().sort((a, b) => b.relevance_score - a.relevance_score);
|
|
116
|
+
let evidenceBudget = maxTokensOut;
|
|
117
|
+
if (input.max_tokens_out !== void 0) {
|
|
118
|
+
const skeleton = { ...output, citations: void 0, evidence: void 0, citations_xml: void 0 };
|
|
119
|
+
const skeletonTokens = countTokens(JSON.stringify(skeleton));
|
|
120
|
+
const resultsTokens = countTokens(JSON.stringify(results));
|
|
121
|
+
const overhead = skeletonTokens + resultsTokens;
|
|
122
|
+
evidenceBudget = Math.max(0, maxTokensOut - overhead);
|
|
123
|
+
}
|
|
124
|
+
const evidence = [];
|
|
125
|
+
let usedTokens = 0;
|
|
126
|
+
for (const h of ranked) {
|
|
127
|
+
if (usedTokens >= evidenceBudget) break;
|
|
128
|
+
const remaining = evidenceBudget - usedTokens;
|
|
129
|
+
const excerpt = truncateByTokens(h.text, remaining);
|
|
130
|
+
if (!excerpt) continue;
|
|
131
|
+
const span = h.source_span ?? { start: 0, end: excerpt.length };
|
|
132
|
+
const item = buildEvidenceItem({
|
|
133
|
+
title: h.source_title,
|
|
134
|
+
url: h.source_url,
|
|
135
|
+
sectionHeading: h.section_heading ?? null,
|
|
136
|
+
excerpt,
|
|
137
|
+
score: h.relevance_score,
|
|
138
|
+
sourceSpan: span
|
|
139
|
+
});
|
|
140
|
+
evidence.push(item);
|
|
141
|
+
usedTokens += countTokens(excerpt);
|
|
142
|
+
}
|
|
143
|
+
if (evidence.length > 0) {
|
|
144
|
+
output.evidence = evidence;
|
|
145
|
+
}
|
|
146
|
+
const citations = buildCitationsFromEvidence(results, evidence, highlightsResult.citations);
|
|
147
|
+
if (citationFormat === "numbered" || citationFormat === "json") {
|
|
148
|
+
if (citations.length > 0) output.citations = citations;
|
|
149
|
+
} else if (citationFormat === "anthropic_tags") {
|
|
150
|
+
if (citations.length > 0) {
|
|
151
|
+
output.citations = citations;
|
|
152
|
+
output.citations_xml = renderCitationsXml(citations);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (!includeFullMarkdown) {
|
|
156
|
+
for (const r of results) {
|
|
157
|
+
if (r.markdown_content !== void 0) r.markdown_content = void 0;
|
|
158
|
+
}
|
|
159
|
+
} else if (input.max_tokens_out !== void 0) {
|
|
160
|
+
applyAggregateMarkdownBudget(
|
|
161
|
+
results,
|
|
162
|
+
(r) => typeof r.markdown_content === "string" ? r.markdown_content : "",
|
|
163
|
+
(r, body) => {
|
|
164
|
+
r.markdown_content = body;
|
|
165
|
+
},
|
|
166
|
+
{ maxTokensOut: input.max_tokens_out }
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function buildCitationsFromEvidence(results, evidence, baseCitations) {
|
|
171
|
+
const primaryByUrl = /* @__PURE__ */ new Map();
|
|
172
|
+
for (const ev of evidence) {
|
|
173
|
+
if (!primaryByUrl.has(ev.url)) primaryByUrl.set(ev.url, ev.citation_id);
|
|
174
|
+
}
|
|
175
|
+
const baseByUrl = /* @__PURE__ */ new Map();
|
|
176
|
+
for (const c of baseCitations) baseByUrl.set(c.url, c);
|
|
177
|
+
const out = [];
|
|
178
|
+
for (let i = 0; i < results.length; i++) {
|
|
179
|
+
const r = results[i];
|
|
180
|
+
const base = baseByUrl.get(r.url);
|
|
181
|
+
const citation = base ? { ...base } : {
|
|
182
|
+
index: i + 1,
|
|
183
|
+
url: r.url,
|
|
184
|
+
title: r.title,
|
|
185
|
+
snippet: r.snippet ?? ""
|
|
186
|
+
};
|
|
187
|
+
const primary = primaryByUrl.get(r.url);
|
|
188
|
+
if (primary !== void 0) {
|
|
189
|
+
citation.citation_id = primary;
|
|
190
|
+
} else {
|
|
191
|
+
delete citation.citation_id;
|
|
192
|
+
}
|
|
193
|
+
out.push(citation);
|
|
194
|
+
}
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
function renderCitationsXml(citations) {
|
|
198
|
+
return citations.map((c) => {
|
|
199
|
+
const id = c.citation_id ?? stableCitationId(c.url, 0);
|
|
200
|
+
const inner = escapeXml(`${c.title}
|
|
201
|
+
${c.url}
|
|
202
|
+
${c.snippet}`);
|
|
203
|
+
return `<source id="${id}">${inner}</source>`;
|
|
204
|
+
}).join("\n");
|
|
205
|
+
}
|
|
206
|
+
function escapeXml(s) {
|
|
207
|
+
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
208
|
+
}
|
|
209
|
+
export {
|
|
210
|
+
applyAggregateMarkdownBudget,
|
|
211
|
+
applyEvidenceDefault,
|
|
212
|
+
applyTokenBudget,
|
|
213
|
+
buildCitationsFromEvidence,
|
|
214
|
+
buildEvidenceFromMarkdown,
|
|
215
|
+
buildEvidenceItem,
|
|
216
|
+
escapeXml,
|
|
217
|
+
renderCitationsXml,
|
|
218
|
+
stableCitationId
|
|
219
|
+
};
|
|
220
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/search/evidence.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport type {\n Citation,\n CitationFormat,\n EvidenceItem,\n SearchInput,\n SearchOutput,\n SearchResultItem,\n SourceSpan,\n} from '../types.js';\nimport { extractHighlights } from './highlights.js';\nimport { countTokens, truncateByTokens } from './tokens.js';\nimport { applyOutputBudget } from './truncate.js';\nimport { createLogger } from '../logger.js';\n\nconst log = createLogger('search');\n\nconst DEFAULT_MAX_TOKENS_OUT = 4000;\nconst MAX_EVIDENCE_PASSAGES = 20;\nconst TRUNCATION_MARKER = '[... content truncated]';\n\nexport interface BuildEvidenceOptions {\n maxTokensOut?: number;\n maxItems?: number;\n}\n\n// Build evidence items from a single page's markdown. Used by per-page tools\n// (fetch, crawl pages, find_similar results, agent/research sources). The\n// returned list is already truncated to fit `maxTokensOut` if provided; pass\n// `maxItems` to cap how many highlights are projected.\nexport async function buildEvidenceFromMarkdown(\n query: string,\n title: string,\n url: string,\n markdown: string,\n opts: BuildEvidenceOptions = {},\n): Promise<EvidenceItem[]> {\n if (!markdown) return [];\n const maxItems = opts.maxItems ?? 1;\n const synthetic: SearchResultItem[] = [{\n title,\n url,\n snippet: '',\n markdown_content: markdown,\n relevance_score: 1,\n }];\n\n let result;\n try {\n result = await extractHighlights(query, synthetic, Math.max(maxItems, 1));\n } catch (err) {\n log.debug('buildEvidenceFromMarkdown: extractHighlights failed', { error: String(err) });\n return [];\n }\n\n const ranked = result.highlights\n .slice()\n .sort((a, b) => b.relevance_score - a.relevance_score)\n .slice(0, maxItems);\n\n const out: EvidenceItem[] = [];\n let used = 0;\n const budget = opts.maxTokensOut;\n for (const h of ranked) {\n let excerpt = h.text;\n if (budget !== undefined) {\n const remaining = budget - used;\n if (remaining <= 0) break;\n excerpt = truncateByTokens(h.text, remaining);\n if (!excerpt || excerpt.trim() === TRUNCATION_MARKER) break;\n }\n const span = h.source_span ?? { start: 0, end: excerpt.length };\n out.push(buildEvidenceItem({\n title: h.source_title || title,\n url: h.source_url || url,\n sectionHeading: h.section_heading ?? null,\n excerpt,\n score: h.relevance_score,\n sourceSpan: span,\n }));\n if (budget !== undefined) used += countTokens(excerpt);\n }\n return out;\n}\n\n// Walk items in order, capping each item's body text against a shared token\n// budget. Bodies past the budget are cleared (set to ''). Used by all\n// multi-item tools (search markdown_content, find_similar, crawl, research,\n// agent) so per-tool max_tokens_out is an aggregate cap, not per-item.\nexport function applyAggregateMarkdownBudget<T>(\n items: T[],\n getBody: (item: T) => string,\n setBody: (item: T, body: string) => void,\n opts: { maxTokensOut?: number; maxChars?: number },\n): void {\n const budget = opts.maxTokensOut;\n let used = 0;\n for (const item of items) {\n const body = getBody(item);\n if (!body) continue;\n if (budget !== undefined) {\n const remaining = budget - used;\n if (remaining <= 0) {\n setBody(item, '');\n continue;\n }\n const trimmed = applyOutputBudget(body, { maxTokensOut: remaining, maxChars: opts.maxChars });\n setBody(item, trimmed);\n used += countTokens(trimmed);\n } else {\n const trimmed = applyOutputBudget(body, { maxChars: opts.maxChars });\n setBody(item, trimmed);\n }\n }\n}\n\n// Apply an aggregate token budget across an already-built list of evidence\n// items, truncating excerpts in order until the budget is exhausted. Items\n// past the budget are dropped.\nexport function applyTokenBudget(items: EvidenceItem[], maxTokensOut: number): EvidenceItem[] {\n if (maxTokensOut <= 0) return [];\n const out: EvidenceItem[] = [];\n let used = 0;\n for (const item of items) {\n const remaining = maxTokensOut - used;\n if (remaining <= 0) break;\n const excerpt = truncateByTokens(item.excerpt, remaining);\n if (!excerpt) break;\n out.push({ ...item, excerpt });\n used += countTokens(excerpt);\n }\n return out;\n}\n\nexport function stableCitationId(url: string, start: number): string {\n return createHash('sha1').update(`${url}#${start}`).digest('hex').slice(0, 12);\n}\n\nexport function buildEvidenceItem(input: {\n title: string;\n url: string;\n sectionHeading: string | null;\n excerpt: string;\n score: number;\n sourceSpan: SourceSpan;\n}): EvidenceItem {\n return {\n title: input.title,\n url: input.url,\n section_heading: input.sectionHeading,\n excerpt: input.excerpt,\n score: input.score,\n citation_id: stableCitationId(input.url, input.sourceSpan.start),\n source_span: input.sourceSpan,\n };\n}\n\nexport async function applyEvidenceDefault(\n input: SearchInput,\n output: SearchOutput,\n results: SearchResultItem[],\n query: string,\n): Promise<void> {\n if (results.length === 0) return;\n\n const includeFullMarkdown = input.include_full_markdown ?? false;\n const citationFormat: CitationFormat = input.citation_format ?? 'numbered';\n const maxTokensOut = input.max_tokens_out ?? DEFAULT_MAX_TOKENS_OUT;\n\n let highlightsResult;\n try {\n highlightsResult = await extractHighlights(query, results, MAX_EVIDENCE_PASSAGES);\n } catch (err) {\n log.debug('evidence extraction failed', { error: String(err) });\n const msg = 'evidence extraction failed; results returned without highlights';\n output.warning = output.warning ? `${output.warning}; ${msg}` : msg;\n highlightsResult = { highlights: [], citations: [], reranker_used: false };\n }\n\n const ranked = highlightsResult.highlights\n .slice()\n .sort((a, b) => b.relevance_score - a.relevance_score);\n\n // When the caller sets max_tokens_out explicitly, evidence shares the budget\n // with citations/results metadata. Reserve room for the structural overhead\n // so the total stringified output stays under the cap.\n // NOTE: this relies on JSON.stringify dropping `undefined` keys, and on\n // applyEvidenceDefault running before any post-evidence mutation that grows\n // the skeleton (e.g. output.warning); reserve overhead first, mutate later.\n let evidenceBudget = maxTokensOut;\n if (input.max_tokens_out !== undefined) {\n const skeleton: SearchOutput = { ...output, citations: undefined, evidence: undefined, citations_xml: undefined };\n const skeletonTokens = countTokens(JSON.stringify(skeleton));\n const resultsTokens = countTokens(JSON.stringify(results));\n const overhead = skeletonTokens + resultsTokens;\n evidenceBudget = Math.max(0, maxTokensOut - overhead);\n }\n\n const evidence: EvidenceItem[] = [];\n let usedTokens = 0;\n for (const h of ranked) {\n if (usedTokens >= evidenceBudget) break;\n const remaining = evidenceBudget - usedTokens;\n const excerpt = truncateByTokens(h.text, remaining);\n if (!excerpt) continue;\n const span = h.source_span ?? { start: 0, end: excerpt.length };\n const item = buildEvidenceItem({\n title: h.source_title,\n url: h.source_url,\n sectionHeading: h.section_heading ?? null,\n excerpt,\n score: h.relevance_score,\n sourceSpan: span,\n });\n evidence.push(item);\n usedTokens += countTokens(excerpt);\n }\n\n if (evidence.length > 0) {\n output.evidence = evidence;\n }\n\n const citations = buildCitationsFromEvidence(results, evidence, highlightsResult.citations);\n\n if (citationFormat === 'numbered' || citationFormat === 'json') {\n if (citations.length > 0) output.citations = citations;\n } else if (citationFormat === 'anthropic_tags') {\n if (citations.length > 0) {\n output.citations = citations;\n output.citations_xml = renderCitationsXml(citations);\n }\n }\n\n // Terminal mutation: applyEvidenceDefault is the last step before return.\n if (!includeFullMarkdown) {\n for (const r of results) {\n if (r.markdown_content !== undefined) r.markdown_content = undefined;\n }\n } else if (input.max_tokens_out !== undefined) {\n // Aggregate cap across all results in score order — sum of markdown_content\n // tokens stays under max_tokens_out; bodies past the budget are dropped.\n applyAggregateMarkdownBudget(\n results,\n (r) => (typeof r.markdown_content === 'string' ? r.markdown_content : ''),\n (r, body) => { r.markdown_content = body; },\n { maxTokensOut: input.max_tokens_out },\n );\n }\n}\n\nexport function buildCitationsFromEvidence(\n results: SearchResultItem[],\n evidence: EvidenceItem[],\n baseCitations: Citation[],\n): Citation[] {\n // Pick the primary citation_id per source: the first evidence item for that URL\n // (highest score after sort). Sources whose evidence was budget-cut have no\n // citation_id — consumers can interpret missing id as \"source-level citation,\n // no specific passage.\"\n const primaryByUrl = new Map<string, string>();\n for (const ev of evidence) {\n if (!primaryByUrl.has(ev.url)) primaryByUrl.set(ev.url, ev.citation_id);\n }\n const baseByUrl = new Map<string, Citation>();\n for (const c of baseCitations) baseByUrl.set(c.url, c);\n\n const out: Citation[] = [];\n for (let i = 0; i < results.length; i++) {\n const r = results[i];\n const base = baseByUrl.get(r.url);\n const citation: Citation = base\n ? { ...base }\n : {\n index: i + 1,\n url: r.url,\n title: r.title,\n snippet: r.snippet ?? '',\n };\n const primary = primaryByUrl.get(r.url);\n if (primary !== undefined) {\n citation.citation_id = primary;\n } else {\n // No surviving evidence passage for this source — leave citation_id absent.\n delete citation.citation_id;\n }\n out.push(citation);\n }\n return out;\n}\n\nexport function renderCitationsXml(citations: Citation[]): string {\n return citations\n .map((c) => {\n const id = c.citation_id ?? stableCitationId(c.url, 0);\n const inner = escapeXml(`${c.title}\\n${c.url}\\n${c.snippet}`);\n return `<source id=\"${id}\">${inner}</source>`;\n })\n .join('\\n');\n}\n\nexport function escapeXml(s: string): string {\n return s\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAU3B,SAAS,yBAAyB;AAClC,SAAS,aAAa,wBAAwB;AAC9C,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAE7B,MAAM,MAAM,aAAa,QAAQ;AAEjC,MAAM,yBAAyB;AAC/B,MAAM,wBAAwB;AAC9B,MAAM,oBAAoB;AAW1B,eAAsB,0BACpB,OACA,OACA,KACA,UACA,OAA6B,CAAC,GACL;AACzB,MAAI,CAAC,SAAU,QAAO,CAAC;AACvB,QAAM,WAAW,KAAK,YAAY;AAClC,QAAM,YAAgC,CAAC;AAAA,IACrC;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,EACnB,CAAC;AAED,MAAI;AACJ,MAAI;AACF,aAAS,MAAM,kBAAkB,OAAO,WAAW,KAAK,IAAI,UAAU,CAAC,CAAC;AAAA,EAC1E,SAAS,KAAK;AACZ,QAAI,MAAM,uDAAuD,EAAE,OAAO,OAAO,GAAG,EAAE,CAAC;AACvF,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,OAAO,WACnB,MAAM,EACN,KAAK,CAAC,GAAG,MAAM,EAAE,kBAAkB,EAAE,eAAe,EACpD,MAAM,GAAG,QAAQ;AAEpB,QAAM,MAAsB,CAAC;AAC7B,MAAI,OAAO;AACX,QAAM,SAAS,KAAK;AACpB,aAAW,KAAK,QAAQ;AACtB,QAAI,UAAU,EAAE;AAChB,QAAI,WAAW,QAAW;AACxB,YAAM,YAAY,SAAS;AAC3B,UAAI,aAAa,EAAG;AACpB,gBAAU,iBAAiB,EAAE,MAAM,SAAS;AAC5C,UAAI,CAAC,WAAW,QAAQ,KAAK,MAAM,kBAAmB;AAAA,IACxD;AACA,UAAM,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,KAAK,QAAQ,OAAO;AAC9D,QAAI,KAAK,kBAAkB;AAAA,MACzB,OAAO,EAAE,gBAAgB;AAAA,MACzB,KAAK,EAAE,cAAc;AAAA,MACrB,gBAAgB,EAAE,mBAAmB;AAAA,MACrC;AAAA,MACA,OAAO,EAAE;AAAA,MACT,YAAY;AAAA,IACd,CAAC,CAAC;AACF,QAAI,WAAW,OAAW,SAAQ,YAAY,OAAO;AAAA,EACvD;AACA,SAAO;AACT;AAMO,SAAS,6BACd,OACA,SACA,SACA,MACM;AACN,QAAM,SAAS,KAAK;AACpB,MAAI,OAAO;AACX,aAAW,QAAQ,OAAO;AACxB,UAAM,OAAO,QAAQ,IAAI;AACzB,QAAI,CAAC,KAAM;AACX,QAAI,WAAW,QAAW;AACxB,YAAM,YAAY,SAAS;AAC3B,UAAI,aAAa,GAAG;AAClB,gBAAQ,MAAM,EAAE;AAChB;AAAA,MACF;AACA,YAAM,UAAU,kBAAkB,MAAM,EAAE,cAAc,WAAW,UAAU,KAAK,SAAS,CAAC;AAC5F,cAAQ,MAAM,OAAO;AACrB,cAAQ,YAAY,OAAO;AAAA,IAC7B,OAAO;AACL,YAAM,UAAU,kBAAkB,MAAM,EAAE,UAAU,KAAK,SAAS,CAAC;AACnE,cAAQ,MAAM,OAAO;AAAA,IACvB;AAAA,EACF;AACF;AAKO,SAAS,iBAAiB,OAAuB,cAAsC;AAC5F,MAAI,gBAAgB,EAAG,QAAO,CAAC;AAC/B,QAAM,MAAsB,CAAC;AAC7B,MAAI,OAAO;AACX,aAAW,QAAQ,OAAO;AACxB,UAAM,YAAY,eAAe;AACjC,QAAI,aAAa,EAAG;AACpB,UAAM,UAAU,iBAAiB,KAAK,SAAS,SAAS;AACxD,QAAI,CAAC,QAAS;AACd,QAAI,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC;AAC7B,YAAQ,YAAY,OAAO;AAAA,EAC7B;AACA,SAAO;AACT;AAEO,SAAS,iBAAiB,KAAa,OAAuB;AACnE,SAAO,WAAW,MAAM,EAAE,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AAC/E;AAEO,SAAS,kBAAkB,OAOjB;AACf,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,KAAK,MAAM;AAAA,IACX,iBAAiB,MAAM;AAAA,IACvB,SAAS,MAAM;AAAA,IACf,OAAO,MAAM;AAAA,IACb,aAAa,iBAAiB,MAAM,KAAK,MAAM,WAAW,KAAK;AAAA,IAC/D,aAAa,MAAM;AAAA,EACrB;AACF;AAEA,eAAsB,qBACpB,OACA,QACA,SACA,OACe;AACf,MAAI,QAAQ,WAAW,EAAG;AAE1B,QAAM,sBAAsB,MAAM,yBAAyB;AAC3D,QAAM,iBAAiC,MAAM,mBAAmB;AAChE,QAAM,eAAe,MAAM,kBAAkB;AAE7C,MAAI;AACJ,MAAI;AACF,uBAAmB,MAAM,kBAAkB,OAAO,SAAS,qBAAqB;AAAA,EAClF,SAAS,KAAK;AACZ,QAAI,MAAM,8BAA8B,EAAE,OAAO,OAAO,GAAG,EAAE,CAAC;AAC9D,UAAM,MAAM;AACZ,WAAO,UAAU,OAAO,UAAU,GAAG,OAAO,OAAO,KAAK,GAAG,KAAK;AAChE,uBAAmB,EAAE,YAAY,CAAC,GAAG,WAAW,CAAC,GAAG,eAAe,MAAM;AAAA,EAC3E;AAEA,QAAM,SAAS,iBAAiB,WAC7B,MAAM,EACN,KAAK,CAAC,GAAG,MAAM,EAAE,kBAAkB,EAAE,eAAe;AAQvD,MAAI,iBAAiB;AACrB,MAAI,MAAM,mBAAmB,QAAW;AACtC,UAAM,WAAyB,EAAE,GAAG,QAAQ,WAAW,QAAW,UAAU,QAAW,eAAe,OAAU;AAChH,UAAM,iBAAiB,YAAY,KAAK,UAAU,QAAQ,CAAC;AAC3D,UAAM,gBAAgB,YAAY,KAAK,UAAU,OAAO,CAAC;AACzD,UAAM,WAAW,iBAAiB;AAClC,qBAAiB,KAAK,IAAI,GAAG,eAAe,QAAQ;AAAA,EACtD;AAEA,QAAM,WAA2B,CAAC;AAClC,MAAI,aAAa;AACjB,aAAW,KAAK,QAAQ;AACtB,QAAI,cAAc,eAAgB;AAClC,UAAM,YAAY,iBAAiB;AACnC,UAAM,UAAU,iBAAiB,EAAE,MAAM,SAAS;AAClD,QAAI,CAAC,QAAS;AACd,UAAM,OAAO,EAAE,eAAe,EAAE,OAAO,GAAG,KAAK,QAAQ,OAAO;AAC9D,UAAM,OAAO,kBAAkB;AAAA,MAC7B,OAAO,EAAE;AAAA,MACT,KAAK,EAAE;AAAA,MACP,gBAAgB,EAAE,mBAAmB;AAAA,MACrC;AAAA,MACA,OAAO,EAAE;AAAA,MACT,YAAY;AAAA,IACd,CAAC;AACD,aAAS,KAAK,IAAI;AAClB,kBAAc,YAAY,OAAO;AAAA,EACnC;AAEA,MAAI,SAAS,SAAS,GAAG;AACvB,WAAO,WAAW;AAAA,EACpB;AAEA,QAAM,YAAY,2BAA2B,SAAS,UAAU,iBAAiB,SAAS;AAE1F,MAAI,mBAAmB,cAAc,mBAAmB,QAAQ;AAC9D,QAAI,UAAU,SAAS,EAAG,QAAO,YAAY;AAAA,EAC/C,WAAW,mBAAmB,kBAAkB;AAC9C,QAAI,UAAU,SAAS,GAAG;AACxB,aAAO,YAAY;AACnB,aAAO,gBAAgB,mBAAmB,SAAS;AAAA,IACrD;AAAA,EACF;AAGA,MAAI,CAAC,qBAAqB;AACxB,eAAW,KAAK,SAAS;AACvB,UAAI,EAAE,qBAAqB,OAAW,GAAE,mBAAmB;AAAA,IAC7D;AAAA,EACF,WAAW,MAAM,mBAAmB,QAAW;AAG7C;AAAA,MACE;AAAA,MACA,CAAC,MAAO,OAAO,EAAE,qBAAqB,WAAW,EAAE,mBAAmB;AAAA,MACtE,CAAC,GAAG,SAAS;AAAE,UAAE,mBAAmB;AAAA,MAAM;AAAA,MAC1C,EAAE,cAAc,MAAM,eAAe;AAAA,IACvC;AAAA,EACF;AACF;AAEO,SAAS,2BACd,SACA,UACA,eACY;AAKZ,QAAM,eAAe,oBAAI,IAAoB;AAC7C,aAAW,MAAM,UAAU;AACzB,QAAI,CAAC,aAAa,IAAI,GAAG,GAAG,EAAG,cAAa,IAAI,GAAG,KAAK,GAAG,WAAW;AAAA,EACxE;AACA,QAAM,YAAY,oBAAI,IAAsB;AAC5C,aAAW,KAAK,cAAe,WAAU,IAAI,EAAE,KAAK,CAAC;AAErD,QAAM,MAAkB,CAAC;AACzB,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,IAAI,QAAQ,CAAC;AACnB,UAAM,OAAO,UAAU,IAAI,EAAE,GAAG;AAChC,UAAM,WAAqB,OACvB,EAAE,GAAG,KAAK,IACV;AAAA,MACE,OAAO,IAAI;AAAA,MACX,KAAK,EAAE;AAAA,MACP,OAAO,EAAE;AAAA,MACT,SAAS,EAAE,WAAW;AAAA,IACxB;AACJ,UAAM,UAAU,aAAa,IAAI,EAAE,GAAG;AACtC,QAAI,YAAY,QAAW;AACzB,eAAS,cAAc;AAAA,IACzB,OAAO;AAEL,aAAO,SAAS;AAAA,IAClB;AACA,QAAI,KAAK,QAAQ;AAAA,EACnB;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB,WAA+B;AAChE,SAAO,UACJ,IAAI,CAAC,MAAM;AACV,UAAM,KAAK,EAAE,eAAe,iBAAiB,EAAE,KAAK,CAAC;AACrD,UAAM,QAAQ,UAAU,GAAG,EAAE,KAAK;AAAA,EAAK,EAAE,GAAG;AAAA,EAAK,EAAE,OAAO,EAAE;AAC5D,WAAO,eAAe,EAAE,KAAK,KAAK;AAAA,EACpC,CAAC,EACA,KAAK,IAAI;AACd;AAEO,SAAS,UAAU,GAAmB;AAC3C,SAAO,EACJ,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ;AAC3B;","names":[]}
|
package/dist/search/filters.js
CHANGED
|
@@ -1,63 +1,57 @@
|
|
|
1
1
|
function getDomain(url) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
2
|
+
try {
|
|
3
|
+
return new URL(url).hostname.toLowerCase();
|
|
4
|
+
} catch {
|
|
5
|
+
return "";
|
|
6
|
+
}
|
|
8
7
|
}
|
|
9
8
|
function normalizeDomain(domain) {
|
|
10
|
-
|
|
9
|
+
return domain.replace(/\/+$/, "").toLowerCase();
|
|
11
10
|
}
|
|
12
11
|
function domainMatches(hostname, domain) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
return true;
|
|
33
|
-
});
|
|
12
|
+
const normalized = normalizeDomain(domain);
|
|
13
|
+
return hostname === normalized || hostname.endsWith("." + normalized);
|
|
14
|
+
}
|
|
15
|
+
function filterByDomains(results, includeDomains, excludeDomains) {
|
|
16
|
+
if (!includeDomains?.length && !excludeDomains?.length) return results;
|
|
17
|
+
return results.filter((r) => {
|
|
18
|
+
const hostname = getDomain(r.url);
|
|
19
|
+
if (!hostname) {
|
|
20
|
+
return !includeDomains?.length;
|
|
21
|
+
}
|
|
22
|
+
if (includeDomains?.length) {
|
|
23
|
+
if (!includeDomains.some((d) => domainMatches(hostname, d))) return false;
|
|
24
|
+
}
|
|
25
|
+
if (excludeDomains?.length) {
|
|
26
|
+
if (excludeDomains.some((d) => domainMatches(hostname, d))) return false;
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
});
|
|
34
30
|
}
|
|
35
31
|
function isValidIsoDate(dateStr) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return filtered;
|
|
62
|
-
}
|
|
32
|
+
const parsed = new Date(dateStr);
|
|
33
|
+
return !isNaN(parsed.getTime()) && /^\d{4}-\d{2}-\d{2}$/.test(dateStr);
|
|
34
|
+
}
|
|
35
|
+
function filterByDateRange(results, fromDate, toDate) {
|
|
36
|
+
if (!fromDate && !toDate) return results;
|
|
37
|
+
if (fromDate && !isValidIsoDate(fromDate)) return results;
|
|
38
|
+
if (toDate && !isValidIsoDate(toDate)) return results;
|
|
39
|
+
if (fromDate && toDate && new Date(fromDate) > new Date(toDate)) return results;
|
|
40
|
+
return results;
|
|
41
|
+
}
|
|
42
|
+
function filterByCategory(results, _category) {
|
|
43
|
+
return results;
|
|
44
|
+
}
|
|
45
|
+
function applyAllFilters(results, options) {
|
|
46
|
+
let filtered = filterByDomains(results, options.includeDomains, options.excludeDomains);
|
|
47
|
+
filtered = filterByDateRange(filtered, options.fromDate, options.toDate);
|
|
48
|
+
filtered = filterByCategory(filtered, options.category);
|
|
49
|
+
return filtered;
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
applyAllFilters,
|
|
53
|
+
filterByCategory,
|
|
54
|
+
filterByDateRange,
|
|
55
|
+
filterByDomains
|
|
56
|
+
};
|
|
63
57
|
//# sourceMappingURL=filters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/search/filters.ts"],"sourcesContent":["function getDomain(url: string): string {\n try {\n return new URL(url).hostname.toLowerCase();\n } catch {\n return '';\n }\n}\n\nfunction normalizeDomain(domain: string): string {\n return domain.replace(/\\/+$/, '').toLowerCase();\n}\n\nfunction domainMatches(hostname: string, domain: string): boolean {\n const normalized = normalizeDomain(domain);\n return hostname === normalized || hostname.endsWith('.' + normalized);\n}\n\nexport function filterByDomains<T extends { url: string }>(\n results: T[],\n includeDomains?: string[],\n excludeDomains?: string[],\n): T[] {\n if (!includeDomains?.length && !excludeDomains?.length) return results;\n\n return results.filter((r) => {\n const hostname = getDomain(r.url);\n if (!hostname) {\n return !includeDomains?.length;\n }\n if (includeDomains?.length) {\n if (!includeDomains.some((d) => domainMatches(hostname, d))) return false;\n }\n if (excludeDomains?.length) {\n if (excludeDomains.some((d) => domainMatches(hostname, d))) return false;\n }\n return true;\n });\n}\n\nfunction isValidIsoDate(dateStr: string): boolean {\n const parsed = new Date(dateStr);\n return !isNaN(parsed.getTime()) && /^\\d{4}-\\d{2}-\\d{2}$/.test(dateStr);\n}\n\nexport function filterByDateRange<T>(\n results: T[],\n fromDate?: string,\n toDate?: string,\n): T[] {\n if (!fromDate && !toDate) return results;\n\n if (fromDate && !isValidIsoDate(fromDate)) return results;\n if (toDate && !isValidIsoDate(toDate)) return results;\n\n if (fromDate && toDate && new Date(fromDate) > new Date(toDate)) return results;\n\n // Date filtering is best-effort on direct scraping engines.\n // SearXNG handles dates natively via time_range. For fallback engines,\n // snippet text doesn't reliably contain dates, so we keep all results.\n return results;\n}\n\nexport function filterByCategory<T>(\n results: T[],\n _category?: string,\n): T[] {\n // Category filtering is handled by SearXNG natively.\n return results;\n}\n\nexport interface FilterOptions {\n includeDomains?: string[];\n excludeDomains?: string[];\n fromDate?: string;\n toDate?: string;\n category?: string;\n}\n\nexport function applyAllFilters<T extends { url: string }>(\n results: T[],\n options: FilterOptions,\n): T[] {\n let filtered = filterByDomains(results, options.includeDomains, options.excludeDomains);\n filtered = filterByDateRange(filtered, options.fromDate, options.toDate);\n filtered = filterByCategory(filtered, options.category);\n return filtered;\n}\n"],"mappings":"AAAA,SAAS,UAAU,KAAqB;AACtC,MAAI;AACF,WAAO,IAAI,IAAI,GAAG,EAAE,SAAS,YAAY;AAAA,EAC3C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,gBAAgB,QAAwB;AAC/C,SAAO,OAAO,QAAQ,QAAQ,EAAE,EAAE,YAAY;AAChD;AAEA,SAAS,cAAc,UAAkB,QAAyB;AAChE,QAAM,aAAa,gBAAgB,MAAM;AACzC,SAAO,aAAa,cAAc,SAAS,SAAS,MAAM,UAAU;AACtE;AAEO,SAAS,gBACd,SACA,gBACA,gBACK;AACL,MAAI,CAAC,gBAAgB,UAAU,CAAC,gBAAgB,OAAQ,QAAO;AAE/D,SAAO,QAAQ,OAAO,CAAC,MAAM;AAC3B,UAAM,WAAW,UAAU,EAAE,GAAG;AAChC,QAAI,CAAC,UAAU;AACb,aAAO,CAAC,gBAAgB;AAAA,IAC1B;AACA,QAAI,gBAAgB,QAAQ;AAC1B,UAAI,CAAC,eAAe,KAAK,CAAC,MAAM,cAAc,UAAU,CAAC,CAAC,EAAG,QAAO;AAAA,IACtE;AACA,QAAI,gBAAgB,QAAQ;AAC1B,UAAI,eAAe,KAAK,CAAC,MAAM,cAAc,UAAU,CAAC,CAAC,EAAG,QAAO;AAAA,IACrE;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,eAAe,SAA0B;AAChD,QAAM,SAAS,IAAI,KAAK,OAAO;AAC/B,SAAO,CAAC,MAAM,OAAO,QAAQ,CAAC,KAAK,sBAAsB,KAAK,OAAO;AACvE;AAEO,SAAS,kBACd,SACA,UACA,QACK;AACL,MAAI,CAAC,YAAY,CAAC,OAAQ,QAAO;AAEjC,MAAI,YAAY,CAAC,eAAe,QAAQ,EAAG,QAAO;AAClD,MAAI,UAAU,CAAC,eAAe,MAAM,EAAG,QAAO;AAE9C,MAAI,YAAY,UAAU,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAG,QAAO;AAKxE,SAAO;AACT;AAEO,SAAS,iBACd,SACA,WACK;AAEL,SAAO;AACT;AAUO,SAAS,gBACd,SACA,SACK;AACL,MAAI,WAAW,gBAAgB,SAAS,QAAQ,gBAAgB,QAAQ,cAAc;AACtF,aAAW,kBAAkB,UAAU,QAAQ,UAAU,QAAQ,MAAM;AACvE,aAAW,iBAAiB,UAAU,QAAQ,QAAQ;AACtD,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FindSimilarInput, FindSimilarOutput } from '../../types.js';
|
|
2
|
+
import type { SmartRouter } from '../../fetch/router.js';
|
|
3
|
+
export interface CrawlRankOptions {
|
|
4
|
+
maxPages?: number;
|
|
5
|
+
concurrency?: number;
|
|
6
|
+
fetchTimeoutMs?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function crawlRank(seedUrl: string, input: FindSimilarInput, router: SmartRouter, options?: CrawlRankOptions): Promise<FindSimilarOutput>;
|
|
9
|
+
//# sourceMappingURL=crawl-rank.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crawl-rank.d.ts","sourceRoot":"","sources":["../../../src/search/find-similar/crawl-rank.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAazD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AASD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CA+J5B"}
|