@code-yeongyu/senpi 2026.9.23-5 → 2026.9.24-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/CHANGELOG.md +51 -0
- package/dist/bundle/chunks/{anthropic-messages-77YBORJ5.js → anthropic-messages-UPLQFNTT.js} +2 -2
- package/dist/bundle/chunks/{app-server-command-BGT65PGC.js → app-server-command-UHPJ2C4D.js} +1 -1
- package/dist/bundle/chunks/{azure-openai-responses-PSESFNHN.js → azure-openai-responses-XAR2E66I.js} +1 -1
- package/dist/bundle/chunks/{chunk-WXIRFRXY.js → chunk-2PLPSKHD.js} +1 -1
- package/dist/bundle/chunks/{chunk-7PANH3NB.js → chunk-3WBSBDBX.js} +1 -1
- package/dist/bundle/chunks/{chunk-BBOQ5H4W.js → chunk-6WBYI25N.js} +1 -1
- package/dist/bundle/chunks/{chunk-RG3UEFSF.js → chunk-7DY7UYLL.js} +1 -1
- package/dist/bundle/chunks/{chunk-VKBY4F76.js → chunk-BSOJHK4W.js} +1 -1
- package/dist/bundle/chunks/{chunk-3XHWW7SQ.js → chunk-CLZVNQW3.js} +1 -1
- package/dist/bundle/chunks/{chunk-ORCF262V.js → chunk-EJKCBRYK.js} +3 -3
- package/dist/bundle/chunks/chunk-J7IUURQ6.js +8 -0
- package/dist/bundle/chunks/{chunk-PSMTQDII.js → chunk-JRQSHZPP.js} +15 -9
- package/dist/bundle/chunks/{chunk-DUV3UFKX.js → chunk-MKAM7IRH.js} +1 -1
- package/dist/bundle/chunks/chunk-MO2U7YRX.js +11 -0
- package/dist/bundle/chunks/{chunk-ZEFQYQOU.js → chunk-NGHOUIPR.js} +1 -1
- package/dist/bundle/chunks/{chunk-XDSQYM4F.js → chunk-NKVUDCGZ.js} +2 -2
- package/dist/bundle/chunks/{chunk-J3QXPP4T.js → chunk-ONR57UMO.js} +1 -1
- package/dist/bundle/chunks/{chunk-TQDWU3ZQ.js → chunk-SYQVC7UM.js} +1 -1
- package/dist/bundle/chunks/chunk-TTHMOL5G.js +2 -0
- package/dist/bundle/chunks/{chunk-NNHFMZD5.js → chunk-UBPMXBOJ.js} +1 -1
- package/dist/bundle/chunks/chunk-WASCMT6Y.js +2 -0
- package/dist/bundle/chunks/{chunk-EN6KDFY2.js → chunk-WISJJQ4K.js} +1 -1
- package/dist/bundle/chunks/{chunk-IVYZMSFY.js → chunk-WL5EQYNL.js} +1 -1
- package/dist/bundle/chunks/{chunk-LC6SZTVE.js → chunk-WTSAB6AE.js} +1 -1
- package/dist/bundle/chunks/{chunk-HKE42SWX.js → chunk-Y54V65MS.js} +1 -1
- package/dist/bundle/chunks/{chunk-3RN6BFG2.js → chunk-YBC274GY.js} +4 -4
- package/dist/bundle/chunks/{chunk-RRSND33J.js → chunk-YKU45B65.js} +54 -54
- package/dist/bundle/chunks/{chunk-WUYBEF7C.js → chunk-YWO3OBYK.js} +1 -1
- package/dist/bundle/chunks/cli-main-O5Y3TBID.js +3 -0
- package/dist/bundle/chunks/{google-generative-ai-YJHSZAY5.js → google-generative-ai-B5QMFONL.js} +1 -1
- package/dist/bundle/chunks/{google-vertex-JTFWEDNJ.js → google-vertex-O2TGMVWF.js} +1 -1
- package/dist/bundle/chunks/{help-fast-path-QXVCHTP3.js → help-fast-path-Y33OIZBU.js} +1 -1
- package/dist/bundle/chunks/{host-command-3PUZYQOK.js → host-command-WJOL27Q7.js} +1 -1
- package/dist/bundle/chunks/{host-lifecycle-OHPSU5VU.js → host-lifecycle-YBFXYFZP.js} +1 -1
- package/dist/bundle/chunks/{interactive-host-runtime-57LEAJPU.js → interactive-host-runtime-XVTF3NUD.js} +1 -1
- package/dist/bundle/chunks/interactive-mode-OO3NGM4G.js +2 -0
- package/dist/bundle/chunks/{list-tips-Z62FXPOJ.js → list-tips-EBRNBPBM.js} +1 -1
- package/dist/bundle/chunks/{mistral-conversations-VJPMPQ5T.js → mistral-conversations-AS3SAWPA.js} +1 -1
- package/dist/bundle/chunks/{multi-session-host-GFSDQQUJ.js → multi-session-host-6MKBBOKF.js} +1 -1
- package/dist/bundle/chunks/{openai-codex-responses-IQ35QACK.js → openai-codex-responses-CK7T4WNM.js} +1 -1
- package/dist/bundle/chunks/{openai-completions-74OLE55U.js → openai-completions-OPQKN7FH.js} +3 -3
- package/dist/bundle/chunks/openai-responses-QHWM3KPO.js +2 -0
- package/dist/bundle/chunks/{openrouter-images-T4GY3JYM.js → openrouter-images-MW5TXV7L.js} +1 -1
- package/dist/bundle/chunks/{package-manager-cli-J7244EJE.js → package-manager-cli-BMEWLAI2.js} +1 -1
- package/dist/bundle/chunks/{rotation-stream-CZT4TRPD.js → rotation-stream-ZFA6ELXJ.js} +1 -1
- package/dist/bundle/chunks/{rpc-mode-75CRTY24.js → rpc-mode-5653CV65.js} +1 -1
- package/dist/bundle/chunks/{session-picker-ZIBANFBQ.js → session-picker-PPYK56TA.js} +1 -1
- package/dist/bundle/chunks/session-worker.js +265 -259
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +13 -0
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session.d.ts +28 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +75 -12
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/dynamic-prompt/build.d.ts +6 -1
- package/dist/core/dynamic-prompt/build.d.ts.map +1 -1
- package/dist/core/dynamic-prompt/build.js +0 -7
- package/dist/core/dynamic-prompt/build.js.map +1 -1
- package/dist/core/environment-context.d.ts +32 -0
- package/dist/core/environment-context.d.ts.map +1 -0
- package/dist/core/environment-context.js +63 -0
- package/dist/core/environment-context.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-subscription/session-sync.d.ts.map +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-sync.js +1 -15
- package/dist/core/extensions/builtin/anthropic-subscription/session-sync.js.map +1 -1
- package/dist/core/extensions/builtin/goal/cache-warm-renderer.js +3 -0
- package/dist/core/extensions/builtin/goal/cache-warm-renderer.js.map +1 -1
- package/dist/core/extensions/builtin/goal/cache-warm.d.ts +19 -2
- package/dist/core/extensions/builtin/goal/cache-warm.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/cache-warm.js +28 -2
- package/dist/core/extensions/builtin/goal/cache-warm.js.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.js +4 -2
- package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/parked-wait.js +2 -0
- package/dist/core/extensions/builtin/goal/parked-wait.js.map +1 -1
- package/dist/core/extensions/builtin/goal/prompt.js +1 -1
- package/dist/core/extensions/builtin/goal/prompt.js.map +1 -1
- package/dist/core/extensions/builtin/herdr/herdr-state.d.ts +5 -0
- package/dist/core/extensions/builtin/herdr/herdr-state.d.ts.map +1 -1
- package/dist/core/extensions/builtin/herdr/herdr-state.js +28 -3
- package/dist/core/extensions/builtin/herdr/herdr-state.js.map +1 -1
- package/dist/core/extensions/builtin/herdr/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/herdr/index.js +7 -1
- package/dist/core/extensions/builtin/herdr/index.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/hooks/index.js +3 -15
- package/dist/core/extensions/builtin/hooks/index.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/stop-lifecycle.d.ts +26 -0
- package/dist/core/extensions/builtin/hooks/stop-lifecycle.d.ts.map +1 -0
- package/dist/core/extensions/builtin/hooks/stop-lifecycle.js +88 -0
- package/dist/core/extensions/builtin/hooks/stop-lifecycle.js.map +1 -0
- package/dist/core/extensions/builtin/recommended-models/index.d.ts +1 -1
- package/dist/core/extensions/builtin/recommended-models/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/recommended-models/index.js +28 -10
- package/dist/core/extensions/builtin/recommended-models/index.js.map +1 -1
- package/dist/core/extensions/builtin/rules/commands.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/commands.js +5 -1
- package/dist/core/extensions/builtin/rules/commands.js.map +1 -1
- package/dist/core/extensions/builtin/rules/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/index.js +25 -3
- package/dist/core/extensions/builtin/rules/index.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/constants.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/constants.js +22 -14
- package/dist/core/extensions/builtin/rules/rules/constants.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/engine.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/engine.js +39 -9
- package/dist/core/extensions/builtin/rules/rules/engine.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/finder.js +3 -0
- package/dist/core/extensions/builtin/rules/rules/finder.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/project-root.d.ts +17 -0
- package/dist/core/extensions/builtin/rules/rules/project-root.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/project-root.js +67 -5
- package/dist/core/extensions/builtin/rules/rules/project-root.js.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/types.d.ts +2 -2
- package/dist/core/extensions/builtin/rules/rules/types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/rules/types.js.map +1 -1
- package/dist/core/extensions/builtin/rules/ui/rules-banner.d.ts +3 -1
- package/dist/core/extensions/builtin/rules/ui/rules-banner.d.ts.map +1 -1
- package/dist/core/extensions/builtin/rules/ui/rules-banner.js +1 -1
- package/dist/core/extensions/builtin/rules/ui/rules-banner.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/todo-storage.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/todo-storage.js +10 -2
- package/dist/core/extensions/builtin/todotools/todo-storage.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/tools/todo.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/tools/todo.js +2 -1
- package/dist/core/extensions/builtin/todotools/tools/todo.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/config.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/config.js +2 -0
- package/dist/core/extensions/builtin/websearch/websearch/config.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/provider-endpoints.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/provider-endpoints.js +2 -0
- package/dist/core/extensions/builtin/websearch/websearch/provider-endpoints.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/providers/kagi.d.ts +3 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/kagi.d.ts.map +1 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/kagi.js +34 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/kagi.js.map +1 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/serpdive.d.ts +3 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/serpdive.d.ts.map +1 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/serpdive.js +22 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers/serpdive.js.map +1 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/providers.js +4 -0
- package/dist/core/extensions/builtin/websearch/websearch/providers.js.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/types.d.ts +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/websearch/websearch/types.js.map +1 -1
- package/dist/core/session-discovery.d.ts +9 -3
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +19 -8
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +8 -4
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-summary-cache.d.ts +16 -3
- package/dist/core/session-summary-cache.d.ts.map +1 -1
- package/dist/core/session-summary-cache.js +19 -3
- package/dist/core/session-summary-cache.js.map +1 -1
- package/dist/core/session-summary-index-file.d.ts +38 -0
- package/dist/core/session-summary-index-file.d.ts.map +1 -0
- package/dist/core/session-summary-index-file.js +119 -0
- package/dist/core/session-summary-index-file.js.map +1 -0
- package/dist/core/session-summary-index.d.ts +52 -0
- package/dist/core/session-summary-index.d.ts.map +1 -0
- package/dist/core/session-summary-index.js +157 -0
- package/dist/core/session-summary-index.js.map +1 -0
- package/dist/core/session-summary.d.ts +21 -2
- package/dist/core/session-summary.d.ts.map +1 -1
- package/dist/core/session-summary.js +53 -14
- package/dist/core/session-summary.js.map +1 -1
- package/dist/core/timings.d.ts +1 -1
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/renderers/read.d.ts.map +1 -1
- package/dist/core/tools/renderers/read.js +7 -2
- package/dist/core/tools/renderers/read.js.map +1 -1
- package/dist/core/tools/renderers/skill-read-path.d.ts +9 -0
- package/dist/core/tools/renderers/skill-read-path.d.ts.map +1 -0
- package/dist/core/tools/renderers/skill-read-path.js +49 -0
- package/dist/core/tools/renderers/skill-read-path.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +7 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/exploration-call.d.ts +1 -1
- package/dist/modes/interactive/components/exploration-call.d.ts.map +1 -1
- package/dist/modes/interactive/components/exploration-call.js +3 -1
- package/dist/modes/interactive/components/exploration-call.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +32 -16
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-tree.d.ts +32 -0
- package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-tree.js +82 -0
- package/dist/modes/interactive/components/session-selector-tree.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +6 -71
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +4 -1
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +32 -0
- package/node_modules/@code-yeongyu/senpi-codemode/README.md +8 -4
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/AGENTS.md +1 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/code-preview.ts +31 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/display-code.ts +34 -131
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/display-js-ast.ts +65 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/display-js-layout.ts +90 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/display-js-mask.ts +178 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/display-js.ts +100 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/display-python-script.ts +127 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/display-python.ts +150 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-request.ts +18 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/render.ts +9 -25
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +16 -9
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +22 -2
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +3 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/tool-name-alias.d.ts +6 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/tool-name-alias.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/tool-name-alias.js +6 -19
- package/node_modules/@earendil-works/pi-agent-core/dist/tool-name-alias.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +8 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-tool-references.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-tool-references.js +8 -35
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-tool-references.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +10 -6
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +4 -3
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +53 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +30 -0
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +30 -0
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.js +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +6 -0
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.js +15 -0
- package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts +17 -0
- package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.js +4 -1
- package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/chatgpt-subscription.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/google.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax-cn.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/moonshotai-cn.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/moonshotai.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opengateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/together.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/venice.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +6 -0
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts +30 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js +71 -14
- package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/tool-name-match.d.ts +30 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/tool-name-match.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/tool-name-match.js +71 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/tool-name-match.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts +5 -0
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +7 -2
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +7 -7
- package/dist/bundle/chunks/chunk-KLDLZHHS.js +0 -11
- package/dist/bundle/chunks/chunk-LTIMMSDM.js +0 -8
- package/dist/bundle/chunks/chunk-XYM54ZWK.js +0 -2
- package/dist/bundle/chunks/cli-main-W55CWPEI.js +0 -3
- package/dist/bundle/chunks/interactive-mode-EDJZ4CSY.js +0 -2
- package/dist/bundle/chunks/openai-responses-7IGZSW33.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { access, readFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport { CONFIG_DIR_NAME } from \"../../../../../config.ts\";\nimport { isAllowedProviderBaseUrl } from \"./provider-endpoints.ts\";\nimport type {\n\tCodexSearchMode,\n\tConfigLoadResult,\n\tJsonObject,\n\tJsonValue,\n\tProviderValidationResult,\n\tRoutingStrategy,\n\tSearchContextSize,\n\tSearchProvider,\n\tSearchProviderConfig,\n\tSearchProviderEntry,\n\tSearchUserLocation,\n\tWebsearchConfig,\n} from \"./types.ts\";\n\nconst PROVIDERS: readonly SearchProvider[] = [\n\t\"exa\",\n\t\"tavily\",\n\t\"brave\",\n\t\"duckduckgo-html\",\n\t\"deepseek\",\n\t\"serper\",\n\t\"google-cse\",\n\t\"z-ai\",\n\t\"openai\",\n\t\"codex\",\n\t\"anthropic\",\n\t\"perplexity\",\n\t\"xai\",\n\t\"kimi\",\n];\nconst CONTEXT_SIZES: readonly SearchContextSize[] = [\"low\", \"medium\", \"high\"];\nconst CODEX_MODES: readonly CodexSearchMode[] = [\"cached\", \"live\"];\nconst STRATEGIES: readonly RoutingStrategy[] = [\"priority\", \"round-robin\", \"fill-first\"];\nconst DEFAULT_FREE_CONFIG: WebsearchConfig = {\n\tstrategy: \"priority\",\n\tfallback: true,\n\tauto: true,\n\tproviders: [{ id: \"default\", provider: \"duckduckgo-html\", maxResults: 10 }],\n};\n\nexport interface ConfigLoadOptions {\n\tcwd: string;\n\thomeDir?: string;\n}\n\nfunction isJsonObject(value: unknown): value is JsonObject {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction oneOf<TValue extends string>(values: readonly TValue[], value: unknown): value is TValue {\n\treturn typeof value === \"string\" && (values as readonly string[]).includes(value);\n}\n\nfunction isStringArray(value: JsonValue | undefined): value is string[] {\n\treturn Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\n\nfunction optionalString(value: JsonValue | undefined): string | undefined {\n\treturn typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction optionalNumber(value: JsonValue | undefined): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction optionalBoolean(value: JsonValue | undefined): boolean | undefined {\n\treturn typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction optionalProvider(value: JsonValue | undefined): SearchProvider | undefined {\n\treturn oneOf(PROVIDERS, value) ? value : undefined;\n}\n\nfunction optionalContextSize(value: JsonValue | undefined): SearchContextSize | undefined {\n\treturn oneOf(CONTEXT_SIZES, value) ? value : undefined;\n}\n\nfunction optionalCodexMode(value: JsonValue | undefined): CodexSearchMode | undefined {\n\treturn oneOf(CODEX_MODES, value) ? value : undefined;\n}\n\nfunction optionalStrategy(value: JsonValue | undefined): RoutingStrategy | undefined {\n\treturn oneOf(STRATEGIES, value) ? value : undefined;\n}\n\nfunction optionalLocation(value: JsonValue | undefined): SearchUserLocation | undefined {\n\tif (!isJsonObject(value)) return undefined;\n\tconst location: SearchUserLocation = {};\n\tconst country = optionalString(value.country);\n\tconst region = optionalString(value.region);\n\tconst city = optionalString(value.city);\n\tconst timezone = optionalString(value.timezone);\n\tif (country) location.country = country;\n\tif (region) location.region = region;\n\tif (city) location.city = city;\n\tif (timezone) location.timezone = timezone;\n\treturn Object.keys(location).length > 0 ? location : undefined;\n}\n\nfunction parseJsonObject(content: string): JsonObject | null {\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(content);\n\t} catch {\n\t\treturn null;\n\t}\n\treturn isJsonObject(parsed) ? parsed : null;\n}\n\nfunction providerEntryFromObject(raw: JsonObject): SearchProviderEntry | null {\n\tconst provider = optionalProvider(raw.provider) ?? optionalProvider(raw.backend);\n\tif (!provider) return null;\n\n\tconst config: SearchProviderEntry = { provider };\n\tconst id = optionalString(raw.id);\n\tconst apiKey = optionalString(raw.apiKey);\n\tconst baseUrl = optionalString(raw.baseUrl);\n\tconst searchEngineId = optionalString(raw.searchEngineId);\n\tconst maxResults = optionalNumber(raw.maxResults);\n\tconst model = optionalString(raw.model);\n\tconst codexMode = optionalCodexMode(raw.codexMode);\n\tconst searchContextSize = optionalContextSize(raw.searchContextSize);\n\tconst rawAllowedDomains = raw.allowedDomains;\n\tconst rawBlockedDomains = raw.blockedDomains;\n\tconst allowedDomains = isStringArray(rawAllowedDomains) ? rawAllowedDomains : undefined;\n\tconst blockedDomains = isStringArray(rawBlockedDomains) ? rawBlockedDomains : undefined;\n\tconst userLocation = optionalLocation(raw.userLocation);\n\tconst timeoutMs = optionalNumber(raw.timeoutMs);\n\tconst priority = optionalNumber(raw.priority);\n\tconst weight = optionalNumber(raw.weight);\n\n\tif (id) config.id = id;\n\tif (apiKey) config.apiKey = apiKey;\n\tif (baseUrl) config.baseUrl = baseUrl;\n\tif (searchEngineId) config.searchEngineId = searchEngineId;\n\tif (maxResults) config.maxResults = maxResults;\n\tif (model) config.model = model;\n\tif (codexMode) config.codexMode = codexMode;\n\tif (searchContextSize) config.searchContextSize = searchContextSize;\n\tif (allowedDomains) config.allowedDomains = allowedDomains;\n\tif (blockedDomains) config.blockedDomains = blockedDomains;\n\tif (userLocation) config.userLocation = userLocation;\n\tif (timeoutMs !== undefined) config.timeoutMs = timeoutMs;\n\tif (priority !== undefined) config.priority = priority;\n\tif (weight !== undefined) config.weight = weight;\n\n\treturn config;\n}\n\nfunction configFromObject(raw: JsonObject): WebsearchConfig | null {\n\tconst auto = optionalBoolean(raw.auto) ?? true;\n\tconst providersValue = raw.providers;\n\tconst rawProviders = Array.isArray(providersValue) ? providersValue : undefined;\n\tif (rawProviders) {\n\t\tif (optionalProvider(raw.provider)) return null;\n\t\tconst providers = rawProviders\n\t\t\t.map((value) => (isJsonObject(value) ? providerEntryFromObject(value) : null))\n\t\t\t.filter((entry): entry is SearchProviderEntry => entry !== null);\n\t\tconst strategy = optionalStrategy(raw.strategy) ?? \"priority\";\n\t\tconst fallback = optionalBoolean(raw.fallback) ?? true;\n\t\treturn { strategy, fallback, auto, providers };\n\t}\n\n\tconst provider = providerEntryFromObject(raw);\n\treturn provider ? { strategy: \"priority\", fallback: true, auto, providers: [provider] } : null;\n}\n\nfunction hasApiKey(config: SearchProviderConfig): boolean {\n\treturn typeof config.apiKey === \"string\" && config.apiKey.length > 0;\n}\n\nexport function validateProviderConfig(config: SearchProviderEntry): ProviderValidationResult {\n\tif (!PROVIDERS.includes(config.provider)) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: `Unsupported provider: ${config.provider}` };\n\t}\n\n\tif (config.allowedDomains && config.blockedDomains) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: \"invalid_config\",\n\t\t\tmessage: \"Provider config cannot specify both allowedDomains and blockedDomains.\",\n\t\t};\n\t}\n\n\tif (config.weight !== undefined && config.weight <= 0) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: \"Provider weight must be greater than 0.\" };\n\t}\n\n\tif (config.timeoutMs !== undefined && config.timeoutMs <= 0) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: \"Provider timeoutMs must be greater than 0.\" };\n\t}\n\n\tif (config.baseUrl && !isAllowedProviderBaseUrl(config.baseUrl)) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: \"invalid_config\",\n\t\t\tmessage: `Provider ${config.provider} baseUrl must be a public HTTPS URL without credentials.`,\n\t\t};\n\t}\n\n\tif (config.provider === \"google-cse\" && !config.searchEngineId) {\n\t\treturn { ok: false, reason: \"missing_api_key\", message: \"Provider google-cse requires searchEngineId.\" };\n\t}\n\n\tif ((config.provider === \"codex\" || config.provider === \"openai\") && !hasApiKey(config)) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: \"missing_api_key\",\n\t\t\tmessage: `Provider ${config.provider} requires apiKey for hosted Responses API search.`,\n\t\t};\n\t}\n\n\tif (\n\t\tconfig.provider !== \"codex\" &&\n\t\tconfig.provider !== \"openai\" &&\n\t\tconfig.provider !== \"duckduckgo-html\" &&\n\t\t!hasApiKey(config)\n\t) {\n\t\treturn { ok: false, reason: \"missing_api_key\", message: `Provider ${config.provider} requires apiKey.` };\n\t}\n\n\treturn { ok: true, config };\n}\n\nexport function validateWebsearchConfig(\n\tconfig: WebsearchConfig,\n): ProviderValidationResult | { ok: true; config: WebsearchConfig } {\n\tif (!STRATEGIES.includes(config.strategy)) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: `Unsupported routing strategy: ${config.strategy}` };\n\t}\n\tif (typeof config.auto !== \"boolean\") {\n\t\treturn { ok: false, reason: \"invalid_config\", message: \"Websearch config auto must be a boolean.\" };\n\t}\n\tif (config.providers.length === 0) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: \"Websearch config requires at least one provider.\" };\n\t}\n\n\tfor (const provider of config.providers) {\n\t\tconst validation = validateProviderConfig(provider);\n\t\tif (!validation.ok) return validation;\n\t}\n\n\treturn { ok: true, config };\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n\ttry {\n\t\tawait access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport async function loadWebsearchConfig(options: ConfigLoadOptions): Promise<ConfigLoadResult> {\n\tconst home = options.homeDir ?? homedir();\n\tconst paths = [\n\t\tjoin(options.cwd, CONFIG_DIR_NAME, \"websearch.json\"),\n\t\tjoin(options.cwd, \".pi\", \"websearch.json\"),\n\t\tjoin(home, \"websearch.json\"),\n\t\tjoin(home, CONFIG_DIR_NAME, \"websearch.json\"),\n\t\tjoin(home, \".pi\", \"websearch.json\"),\n\t].filter((path, index, all) => all.indexOf(path) === index);\n\n\tfor (const path of paths) {\n\t\tif (!(await fileExists(path))) continue;\n\t\tconst raw = parseJsonObject(await readFile(path, \"utf8\"));\n\t\tif (!raw) {\n\t\t\treturn { ok: false, reason: \"invalid_config\", message: `Invalid JSON object in ${path}`, source: path };\n\t\t}\n\t\tconst config = configFromObject(raw);\n\t\tif (!config) {\n\t\t\treturn { ok: false, reason: \"invalid_config\", message: `Invalid provider config in ${path}`, source: path };\n\t\t}\n\t\tconst validation = validateWebsearchConfig(config);\n\t\tif (!validation.ok) return { ...validation, source: path };\n\t\treturn { ok: true, config, source: path };\n\t}\n\n\treturn { ok: true, config: DEFAULT_FREE_CONFIG, source: \"default:duckduckgo-html\" };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { access, readFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport { CONFIG_DIR_NAME } from \"../../../../../config.ts\";\nimport { isAllowedProviderBaseUrl } from \"./provider-endpoints.ts\";\nimport type {\n\tCodexSearchMode,\n\tConfigLoadResult,\n\tJsonObject,\n\tJsonValue,\n\tProviderValidationResult,\n\tRoutingStrategy,\n\tSearchContextSize,\n\tSearchProvider,\n\tSearchProviderConfig,\n\tSearchProviderEntry,\n\tSearchUserLocation,\n\tWebsearchConfig,\n} from \"./types.ts\";\n\nconst PROVIDERS: readonly SearchProvider[] = [\n\t\"exa\",\n\t\"tavily\",\n\t\"serpdive\",\n\t\"brave\",\n\t\"duckduckgo-html\",\n\t\"deepseek\",\n\t\"serper\",\n\t\"google-cse\",\n\t\"z-ai\",\n\t\"openai\",\n\t\"codex\",\n\t\"anthropic\",\n\t\"perplexity\",\n\t\"xai\",\n\t\"kimi\",\n\t\"kagi\",\n];\nconst CONTEXT_SIZES: readonly SearchContextSize[] = [\"low\", \"medium\", \"high\"];\nconst CODEX_MODES: readonly CodexSearchMode[] = [\"cached\", \"live\"];\nconst STRATEGIES: readonly RoutingStrategy[] = [\"priority\", \"round-robin\", \"fill-first\"];\nconst DEFAULT_FREE_CONFIG: WebsearchConfig = {\n\tstrategy: \"priority\",\n\tfallback: true,\n\tauto: true,\n\tproviders: [{ id: \"default\", provider: \"duckduckgo-html\", maxResults: 10 }],\n};\n\nexport interface ConfigLoadOptions {\n\tcwd: string;\n\thomeDir?: string;\n}\n\nfunction isJsonObject(value: unknown): value is JsonObject {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction oneOf<TValue extends string>(values: readonly TValue[], value: unknown): value is TValue {\n\treturn typeof value === \"string\" && (values as readonly string[]).includes(value);\n}\n\nfunction isStringArray(value: JsonValue | undefined): value is string[] {\n\treturn Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\n\nfunction optionalString(value: JsonValue | undefined): string | undefined {\n\treturn typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction optionalNumber(value: JsonValue | undefined): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction optionalBoolean(value: JsonValue | undefined): boolean | undefined {\n\treturn typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction optionalProvider(value: JsonValue | undefined): SearchProvider | undefined {\n\treturn oneOf(PROVIDERS, value) ? value : undefined;\n}\n\nfunction optionalContextSize(value: JsonValue | undefined): SearchContextSize | undefined {\n\treturn oneOf(CONTEXT_SIZES, value) ? value : undefined;\n}\n\nfunction optionalCodexMode(value: JsonValue | undefined): CodexSearchMode | undefined {\n\treturn oneOf(CODEX_MODES, value) ? value : undefined;\n}\n\nfunction optionalStrategy(value: JsonValue | undefined): RoutingStrategy | undefined {\n\treturn oneOf(STRATEGIES, value) ? value : undefined;\n}\n\nfunction optionalLocation(value: JsonValue | undefined): SearchUserLocation | undefined {\n\tif (!isJsonObject(value)) return undefined;\n\tconst location: SearchUserLocation = {};\n\tconst country = optionalString(value.country);\n\tconst region = optionalString(value.region);\n\tconst city = optionalString(value.city);\n\tconst timezone = optionalString(value.timezone);\n\tif (country) location.country = country;\n\tif (region) location.region = region;\n\tif (city) location.city = city;\n\tif (timezone) location.timezone = timezone;\n\treturn Object.keys(location).length > 0 ? location : undefined;\n}\n\nfunction parseJsonObject(content: string): JsonObject | null {\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(content);\n\t} catch {\n\t\treturn null;\n\t}\n\treturn isJsonObject(parsed) ? parsed : null;\n}\n\nfunction providerEntryFromObject(raw: JsonObject): SearchProviderEntry | null {\n\tconst provider = optionalProvider(raw.provider) ?? optionalProvider(raw.backend);\n\tif (!provider) return null;\n\n\tconst config: SearchProviderEntry = { provider };\n\tconst id = optionalString(raw.id);\n\tconst apiKey = optionalString(raw.apiKey);\n\tconst baseUrl = optionalString(raw.baseUrl);\n\tconst searchEngineId = optionalString(raw.searchEngineId);\n\tconst maxResults = optionalNumber(raw.maxResults);\n\tconst model = optionalString(raw.model);\n\tconst codexMode = optionalCodexMode(raw.codexMode);\n\tconst searchContextSize = optionalContextSize(raw.searchContextSize);\n\tconst rawAllowedDomains = raw.allowedDomains;\n\tconst rawBlockedDomains = raw.blockedDomains;\n\tconst allowedDomains = isStringArray(rawAllowedDomains) ? rawAllowedDomains : undefined;\n\tconst blockedDomains = isStringArray(rawBlockedDomains) ? rawBlockedDomains : undefined;\n\tconst userLocation = optionalLocation(raw.userLocation);\n\tconst timeoutMs = optionalNumber(raw.timeoutMs);\n\tconst priority = optionalNumber(raw.priority);\n\tconst weight = optionalNumber(raw.weight);\n\n\tif (id) config.id = id;\n\tif (apiKey) config.apiKey = apiKey;\n\tif (baseUrl) config.baseUrl = baseUrl;\n\tif (searchEngineId) config.searchEngineId = searchEngineId;\n\tif (maxResults) config.maxResults = maxResults;\n\tif (model) config.model = model;\n\tif (codexMode) config.codexMode = codexMode;\n\tif (searchContextSize) config.searchContextSize = searchContextSize;\n\tif (allowedDomains) config.allowedDomains = allowedDomains;\n\tif (blockedDomains) config.blockedDomains = blockedDomains;\n\tif (userLocation) config.userLocation = userLocation;\n\tif (timeoutMs !== undefined) config.timeoutMs = timeoutMs;\n\tif (priority !== undefined) config.priority = priority;\n\tif (weight !== undefined) config.weight = weight;\n\n\treturn config;\n}\n\nfunction configFromObject(raw: JsonObject): WebsearchConfig | null {\n\tconst auto = optionalBoolean(raw.auto) ?? true;\n\tconst providersValue = raw.providers;\n\tconst rawProviders = Array.isArray(providersValue) ? providersValue : undefined;\n\tif (rawProviders) {\n\t\tif (optionalProvider(raw.provider)) return null;\n\t\tconst providers = rawProviders\n\t\t\t.map((value) => (isJsonObject(value) ? providerEntryFromObject(value) : null))\n\t\t\t.filter((entry): entry is SearchProviderEntry => entry !== null);\n\t\tconst strategy = optionalStrategy(raw.strategy) ?? \"priority\";\n\t\tconst fallback = optionalBoolean(raw.fallback) ?? true;\n\t\treturn { strategy, fallback, auto, providers };\n\t}\n\n\tconst provider = providerEntryFromObject(raw);\n\treturn provider ? { strategy: \"priority\", fallback: true, auto, providers: [provider] } : null;\n}\n\nfunction hasApiKey(config: SearchProviderConfig): boolean {\n\treturn typeof config.apiKey === \"string\" && config.apiKey.length > 0;\n}\n\nexport function validateProviderConfig(config: SearchProviderEntry): ProviderValidationResult {\n\tif (!PROVIDERS.includes(config.provider)) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: `Unsupported provider: ${config.provider}` };\n\t}\n\n\tif (config.allowedDomains && config.blockedDomains) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: \"invalid_config\",\n\t\t\tmessage: \"Provider config cannot specify both allowedDomains and blockedDomains.\",\n\t\t};\n\t}\n\n\tif (config.weight !== undefined && config.weight <= 0) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: \"Provider weight must be greater than 0.\" };\n\t}\n\n\tif (config.timeoutMs !== undefined && config.timeoutMs <= 0) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: \"Provider timeoutMs must be greater than 0.\" };\n\t}\n\n\tif (config.baseUrl && !isAllowedProviderBaseUrl(config.baseUrl)) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: \"invalid_config\",\n\t\t\tmessage: `Provider ${config.provider} baseUrl must be a public HTTPS URL without credentials.`,\n\t\t};\n\t}\n\n\tif (config.provider === \"google-cse\" && !config.searchEngineId) {\n\t\treturn { ok: false, reason: \"missing_api_key\", message: \"Provider google-cse requires searchEngineId.\" };\n\t}\n\n\tif ((config.provider === \"codex\" || config.provider === \"openai\") && !hasApiKey(config)) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: \"missing_api_key\",\n\t\t\tmessage: `Provider ${config.provider} requires apiKey for hosted Responses API search.`,\n\t\t};\n\t}\n\n\tif (\n\t\tconfig.provider !== \"codex\" &&\n\t\tconfig.provider !== \"openai\" &&\n\t\tconfig.provider !== \"duckduckgo-html\" &&\n\t\t!hasApiKey(config)\n\t) {\n\t\treturn { ok: false, reason: \"missing_api_key\", message: `Provider ${config.provider} requires apiKey.` };\n\t}\n\n\treturn { ok: true, config };\n}\n\nexport function validateWebsearchConfig(\n\tconfig: WebsearchConfig,\n): ProviderValidationResult | { ok: true; config: WebsearchConfig } {\n\tif (!STRATEGIES.includes(config.strategy)) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: `Unsupported routing strategy: ${config.strategy}` };\n\t}\n\tif (typeof config.auto !== \"boolean\") {\n\t\treturn { ok: false, reason: \"invalid_config\", message: \"Websearch config auto must be a boolean.\" };\n\t}\n\tif (config.providers.length === 0) {\n\t\treturn { ok: false, reason: \"invalid_config\", message: \"Websearch config requires at least one provider.\" };\n\t}\n\n\tfor (const provider of config.providers) {\n\t\tconst validation = validateProviderConfig(provider);\n\t\tif (!validation.ok) return validation;\n\t}\n\n\treturn { ok: true, config };\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n\ttry {\n\t\tawait access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport async function loadWebsearchConfig(options: ConfigLoadOptions): Promise<ConfigLoadResult> {\n\tconst home = options.homeDir ?? homedir();\n\tconst paths = [\n\t\tjoin(options.cwd, CONFIG_DIR_NAME, \"websearch.json\"),\n\t\tjoin(options.cwd, \".pi\", \"websearch.json\"),\n\t\tjoin(home, \"websearch.json\"),\n\t\tjoin(home, CONFIG_DIR_NAME, \"websearch.json\"),\n\t\tjoin(home, \".pi\", \"websearch.json\"),\n\t].filter((path, index, all) => all.indexOf(path) === index);\n\n\tfor (const path of paths) {\n\t\tif (!(await fileExists(path))) continue;\n\t\tconst raw = parseJsonObject(await readFile(path, \"utf8\"));\n\t\tif (!raw) {\n\t\t\treturn { ok: false, reason: \"invalid_config\", message: `Invalid JSON object in ${path}`, source: path };\n\t\t}\n\t\tconst config = configFromObject(raw);\n\t\tif (!config) {\n\t\t\treturn { ok: false, reason: \"invalid_config\", message: `Invalid provider config in ${path}`, source: path };\n\t\t}\n\t\tconst validation = validateWebsearchConfig(config);\n\t\tif (!validation.ok) return { ...validation, source: path };\n\t\treturn { ok: true, config, source: path };\n\t}\n\n\treturn { ok: true, config: DEFAULT_FREE_CONFIG, source: \"default:duckduckgo-html\" };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-endpoints.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/provider-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-endpoints.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/provider-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAqBvE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAEnE;AA0BD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAcjE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAEhE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const DEFAULT_PROVIDER_URLS = {
|
|
2
2
|
exa: "https://api.exa.ai/search",
|
|
3
3
|
tavily: "https://api.tavily.com/search",
|
|
4
|
+
serpdive: "https://api.serpdive.com/v1/search",
|
|
4
5
|
brave: "https://api.search.brave.com/res/v1/web/search",
|
|
5
6
|
"duckduckgo-html": "https://html.duckduckgo.com/html/",
|
|
6
7
|
deepseek: "https://api.deepseek.com/anthropic/v1/messages",
|
|
@@ -13,6 +14,7 @@ const DEFAULT_PROVIDER_URLS = {
|
|
|
13
14
|
perplexity: "https://api.perplexity.ai/search",
|
|
14
15
|
xai: "https://api.x.ai/v1/responses",
|
|
15
16
|
kimi: "https://api.kimi.com/coding/v1/search",
|
|
17
|
+
kagi: "https://kagi.com/api/v1/search",
|
|
16
18
|
};
|
|
17
19
|
export function defaultProviderUrl(provider) {
|
|
18
20
|
return DEFAULT_PROVIDER_URLS[provider];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-endpoints.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/provider-endpoints.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAmC;IAC7D,GAAG,EAAE,2BAA2B;IAChC,MAAM,EAAE,+BAA+B;IACvC,KAAK,EAAE,gDAAgD;IACvD,iBAAiB,EAAE,mCAAmC;IACtD,QAAQ,EAAE,gDAAgD;IAC1D,MAAM,EAAE,kCAAkC;IAC1C,YAAY,EAAE,qDAAqD;IACnE,MAAM,EAAE,yCAAyC;IACjD,MAAM,EAAE,qCAAqC;IAC7C,KAAK,EAAE,qCAAqC;IAC5C,SAAS,EAAE,uCAAuC;IAClD,UAAU,EAAE,kCAAkC;IAC9C,GAAG,EAAE,+BAA+B;IACpC,IAAI,EAAE,uCAAuC;
|
|
1
|
+
{"version":3,"file":"provider-endpoints.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/provider-endpoints.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SearchProvider, SearchProviderConfig } from \"./types.ts\";\n\nconst DEFAULT_PROVIDER_URLS: Record<SearchProvider, string> = {\n\texa: \"https://api.exa.ai/search\",\n\ttavily: \"https://api.tavily.com/search\",\n\tserpdive: \"https://api.serpdive.com/v1/search\",\n\tbrave: \"https://api.search.brave.com/res/v1/web/search\",\n\t\"duckduckgo-html\": \"https://html.duckduckgo.com/html/\",\n\tdeepseek: \"https://api.deepseek.com/anthropic/v1/messages\",\n\tserper: \"https://google.serper.dev/search\",\n\t\"google-cse\": \"https://customsearch.googleapis.com/customsearch/v1\",\n\t\"z-ai\": \"https://api.z.ai/api/paas/v4/web_search\",\n\topenai: \"https://api.openai.com/v1/responses\",\n\tcodex: \"https://api.openai.com/v1/responses\",\n\tanthropic: \"https://api.anthropic.com/v1/messages\",\n\tperplexity: \"https://api.perplexity.ai/search\",\n\txai: \"https://api.x.ai/v1/responses\",\n\tkimi: \"https://api.kimi.com/coding/v1/search\",\n\tkagi: \"https://kagi.com/api/v1/search\",\n};\n\nexport function defaultProviderUrl(provider: SearchProvider): string {\n\treturn DEFAULT_PROVIDER_URLS[provider];\n}\n\nfunction isPrivateIpv4(hostname: string): boolean {\n\tconst parts = hostname.split(\".\").map((part) => Number.parseInt(part, 10));\n\tif (parts.length !== 4 || parts.some((part) => !Number.isInteger(part) || part < 0 || part > 255)) return false;\n\tconst first = parts[0] ?? -1;\n\tconst second = parts[1] ?? -1;\n\tif (first === 10 || first === 127 || first === 0 || (first === 169 && second === 254)) return true;\n\tif (first === 172 && second >= 16 && second <= 31) return true;\n\treturn first === 192 && second === 168;\n}\n\nfunction isPrivateHostname(hostname: string): boolean {\n\tconst normalized = hostname.toLowerCase().replace(/^\\[/, \"\").replace(/\\]$/, \"\").replace(/\\.$/, \"\");\n\treturn (\n\t\tnormalized === \"localhost\" ||\n\t\tnormalized.endsWith(\".localhost\") ||\n\t\tnormalized.includes(\":\") ||\n\t\tnormalized === \"::1\" ||\n\t\tnormalized.startsWith(\"fc\") ||\n\t\tnormalized.startsWith(\"fd\") ||\n\t\t/^fe[89ab][0-9a-f]:/.test(normalized) ||\n\t\tisPrivateIpv4(normalized)\n\t);\n}\n\nexport function isAllowedProviderBaseUrl(baseUrl: string): boolean {\n\tlet configured: URL;\n\ttry {\n\t\tconfigured = new URL(baseUrl);\n\t} catch {\n\t\treturn false;\n\t}\n\treturn (\n\t\tconfigured.protocol === \"https:\" &&\n\t\tconfigured.username === \"\" &&\n\t\tconfigured.password === \"\" &&\n\t\t!configured.hostname.endsWith(\"..\") &&\n\t\t!isPrivateHostname(configured.hostname)\n\t);\n}\n\nexport function providerUrl(config: SearchProviderConfig): string {\n\treturn config.baseUrl ?? defaultProviderUrl(config.provider);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kagi.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/extensions/builtin/websearch/websearch/providers/kagi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhE,eAAO,MAAM,YAAY,EAAE,cA6B1B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { providerUrl } from "../provider-endpoints.js";
|
|
2
|
+
import { clamp, collect, contentHeaders, getArray, getObject, getString, result } from "./shared.js";
|
|
3
|
+
export const kagiProvider = {
|
|
4
|
+
buildRequest({ config, request, maxResults, allowedDomains, blockedDomains }) {
|
|
5
|
+
const body = { query: request.query, limit: clamp(maxResults, 1, 20) };
|
|
6
|
+
if (allowedDomains || blockedDomains) {
|
|
7
|
+
const lens = {};
|
|
8
|
+
if (allowedDomains)
|
|
9
|
+
lens.sites_included = allowedDomains;
|
|
10
|
+
if (blockedDomains)
|
|
11
|
+
lens.sites_excluded = blockedDomains;
|
|
12
|
+
body.lens = lens;
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
url: providerUrl(config),
|
|
16
|
+
init: { method: "POST", headers: contentHeaders({ Authorization: `Bearer ${config.apiKey ?? ""}` }) },
|
|
17
|
+
body,
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
normalizeResponse(data) {
|
|
21
|
+
const search = getObject(data.data);
|
|
22
|
+
return collect(getArray(search?.search).map((raw) => {
|
|
23
|
+
const item = getObject(raw);
|
|
24
|
+
const normalized = result(getString(item?.title), getString(item?.url), getString(item?.snippet));
|
|
25
|
+
if (normalized) {
|
|
26
|
+
const publishedAt = getString(item?.time);
|
|
27
|
+
if (publishedAt)
|
|
28
|
+
normalized.publishedAt = publishedAt;
|
|
29
|
+
}
|
|
30
|
+
return normalized;
|
|
31
|
+
}));
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=kagi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kagi.js","sourceRoot":"","sources":["../../../../../../../src/core/extensions/builtin/websearch/websearch/providers/kagi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErG,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC3C,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAgB;QACzF,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnF,IAAI,cAAc,IAAI,cAAc,EAAE,CAAC;YACtC,MAAM,IAAI,GAAe,EAAE,CAAC;YAC5B,IAAI,cAAc;gBAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;YACzD,IAAI,cAAc;gBAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;YACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,OAAO;YACN,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;YACrG,IAAI;SACJ,CAAC;IACH,CAAC;IACD,iBAAiB,CAAC,IAAgB;QACjC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,OAAO,CACb,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAClG,IAAI,UAAU,EAAE,CAAC;gBAChB,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC1C,IAAI,WAAW;oBAAE,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;YACvD,CAAC;YACD,OAAO,UAAU,CAAC;QACnB,CAAC,CAAC,CACF,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["import { providerUrl } from \"../provider-endpoints.ts\";\nimport type { BuiltSearchRequest, JsonObject, SearchResultItem } from \"../types.ts\";\nimport type { BuildContext, ProviderModule } from \"./shared.ts\";\nimport { clamp, collect, contentHeaders, getArray, getObject, getString, result } from \"./shared.ts\";\n\nexport const kagiProvider: ProviderModule = {\n\tbuildRequest({ config, request, maxResults, allowedDomains, blockedDomains }: BuildContext): BuiltSearchRequest {\n\t\tconst body: JsonObject = { query: request.query, limit: clamp(maxResults, 1, 20) };\n\t\tif (allowedDomains || blockedDomains) {\n\t\t\tconst lens: JsonObject = {};\n\t\t\tif (allowedDomains) lens.sites_included = allowedDomains;\n\t\t\tif (blockedDomains) lens.sites_excluded = blockedDomains;\n\t\t\tbody.lens = lens;\n\t\t}\n\t\treturn {\n\t\t\turl: providerUrl(config),\n\t\t\tinit: { method: \"POST\", headers: contentHeaders({ Authorization: `Bearer ${config.apiKey ?? \"\"}` }) },\n\t\t\tbody,\n\t\t};\n\t},\n\tnormalizeResponse(data: JsonObject): SearchResultItem[] {\n\t\tconst search = getObject(data.data);\n\t\treturn collect(\n\t\t\tgetArray(search?.search).map((raw) => {\n\t\t\t\tconst item = getObject(raw);\n\t\t\t\tconst normalized = result(getString(item?.title), getString(item?.url), getString(item?.snippet));\n\t\t\t\tif (normalized) {\n\t\t\t\t\tconst publishedAt = getString(item?.time);\n\t\t\t\t\tif (publishedAt) normalized.publishedAt = publishedAt;\n\t\t\t\t}\n\t\t\t\treturn normalized;\n\t\t\t}),\n\t\t);\n\t},\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serpdive.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/extensions/builtin/websearch/websearch/providers/serpdive.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,aAAa,CAAC;AAYhE,eAAO,MAAM,gBAAgB,EAAE,cAoB9B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { providerUrl } from "../provider-endpoints.js";
|
|
2
|
+
import { appendDomainFilters, clamp, collect, contentHeaders, getArray, getObject, getString, result, } from "./shared.js";
|
|
3
|
+
export const serpdiveProvider = {
|
|
4
|
+
buildRequest({ config, request, maxResults, allowedDomains, blockedDomains }) {
|
|
5
|
+
const body = {
|
|
6
|
+
query: appendDomainFilters(request.query, allowedDomains, blockedDomains),
|
|
7
|
+
max_results: clamp(maxResults, 1, 10),
|
|
8
|
+
};
|
|
9
|
+
return {
|
|
10
|
+
url: providerUrl(config),
|
|
11
|
+
init: { method: "POST", headers: contentHeaders({ Authorization: `Bearer ${config.apiKey ?? ""}` }) },
|
|
12
|
+
body,
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
normalizeResponse(data) {
|
|
16
|
+
return collect(getArray(data.results).map((raw) => {
|
|
17
|
+
const item = getObject(raw);
|
|
18
|
+
return result(getString(item?.title), getString(item?.url), getString(item?.content));
|
|
19
|
+
}));
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=serpdive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serpdive.js","sourceRoot":"","sources":["../../../../../../../src/core/extensions/builtin/websearch/websearch/providers/serpdive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EACN,mBAAmB,EACnB,KAAK,EACL,OAAO,EACP,cAAc,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,GACN,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC/C,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAgB;QACzF,MAAM,IAAI,GAAe;YACxB,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,cAAc,CAAC;YACzE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;SACrC,CAAC;QACF,OAAO;YACN,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;YACrG,IAAI;SACJ,CAAC;IACH,CAAC;IACD,iBAAiB,CAAC,IAAgB;QACjC,OAAO,OAAO,CACb,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACvF,CAAC,CAAC,CACF,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["import { providerUrl } from \"../provider-endpoints.ts\";\nimport type { BuiltSearchRequest, JsonObject, SearchResultItem } from \"../types.ts\";\nimport type { BuildContext, ProviderModule } from \"./shared.ts\";\nimport {\n\tappendDomainFilters,\n\tclamp,\n\tcollect,\n\tcontentHeaders,\n\tgetArray,\n\tgetObject,\n\tgetString,\n\tresult,\n} from \"./shared.ts\";\n\nexport const serpdiveProvider: ProviderModule = {\n\tbuildRequest({ config, request, maxResults, allowedDomains, blockedDomains }: BuildContext): BuiltSearchRequest {\n\t\tconst body: JsonObject = {\n\t\t\tquery: appendDomainFilters(request.query, allowedDomains, blockedDomains),\n\t\t\tmax_results: clamp(maxResults, 1, 10),\n\t\t};\n\t\treturn {\n\t\t\turl: providerUrl(config),\n\t\t\tinit: { method: \"POST\", headers: contentHeaders({ Authorization: `Bearer ${config.apiKey ?? \"\"}` }) },\n\t\t\tbody,\n\t\t};\n\t},\n\tnormalizeResponse(data: JsonObject): SearchResultItem[] {\n\t\treturn collect(\n\t\t\tgetArray(data.results).map((raw) => {\n\t\t\t\tconst item = getObject(raw);\n\t\t\t\treturn result(getString(item?.title), getString(item?.url), getString(item?.content));\n\t\t\t}),\n\t\t);\n\t},\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/providers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/providers.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACX,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,MAAM,YAAY,CAAC;AAqBpB,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,aAAa,GAAG,kBAAkB,CAU3G;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAEtG"}
|
|
@@ -4,9 +4,11 @@ import { deepseekProvider } from "./providers/deepseek.js";
|
|
|
4
4
|
import { duckDuckGoHtmlProvider } from "./providers/duckduckgo-html.js";
|
|
5
5
|
import { exaProvider } from "./providers/exa.js";
|
|
6
6
|
import { googleCseProvider } from "./providers/google-cse.js";
|
|
7
|
+
import { kagiProvider } from "./providers/kagi.js";
|
|
7
8
|
import { kimiProvider } from "./providers/kimi.js";
|
|
8
9
|
import { openAiResponsesProvider } from "./providers/openai-responses.js";
|
|
9
10
|
import { perplexityProvider } from "./providers/perplexity.js";
|
|
11
|
+
import { serpdiveProvider } from "./providers/serpdive.js";
|
|
10
12
|
import { serperProvider } from "./providers/serper.js";
|
|
11
13
|
import { parseObjectPayload, resolveDomainFilters } from "./providers/shared.js";
|
|
12
14
|
import { tavilyProvider } from "./providers/tavily.js";
|
|
@@ -15,6 +17,7 @@ import { zAiProvider } from "./providers/z-ai.js";
|
|
|
15
17
|
const PROVIDER_MODULES = {
|
|
16
18
|
exa: exaProvider,
|
|
17
19
|
tavily: tavilyProvider,
|
|
20
|
+
serpdive: serpdiveProvider,
|
|
18
21
|
brave: braveProvider,
|
|
19
22
|
"duckduckgo-html": duckDuckGoHtmlProvider,
|
|
20
23
|
deepseek: deepseekProvider,
|
|
@@ -27,6 +30,7 @@ const PROVIDER_MODULES = {
|
|
|
27
30
|
perplexity: perplexityProvider,
|
|
28
31
|
xai: xaiProvider,
|
|
29
32
|
kimi: kimiProvider,
|
|
33
|
+
kagi: kagiProvider,
|
|
30
34
|
};
|
|
31
35
|
export function buildSearchRequest(config, request) {
|
|
32
36
|
const maxResults = config.maxResults ?? request.maxResults;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,MAAM,gBAAgB,GAA2C;IAChE,GAAG,EAAE,WAAW;IAChB,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,aAAa;IACpB,iBAAiB,EAAE,sBAAsB;IACzC,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,cAAc;IACtB,YAAY,EAAE,iBAAiB;IAC/B,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAA4B,EAAE,OAAsB;IACtF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAC3D,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjF,OAAO,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;QACrD,MAAM;QACN,OAAO;QACP,UAAU;QACV,cAAc;QACd,cAAc;KACd,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAwB,EAAE,OAAgB;IACjF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC","sourcesContent":["import { anthropicProvider } from \"./providers/anthropic.ts\";\nimport { braveProvider } from \"./providers/brave.ts\";\nimport { deepseekProvider } from \"./providers/deepseek.ts\";\nimport { duckDuckGoHtmlProvider } from \"./providers/duckduckgo-html.ts\";\nimport { exaProvider } from \"./providers/exa.ts\";\nimport { googleCseProvider } from \"./providers/google-cse.ts\";\nimport { kimiProvider } from \"./providers/kimi.ts\";\nimport { openAiResponsesProvider } from \"./providers/openai-responses.ts\";\nimport { perplexityProvider } from \"./providers/perplexity.ts\";\nimport { serperProvider } from \"./providers/serper.ts\";\nimport type { ProviderModule } from \"./providers/shared.ts\";\nimport { parseObjectPayload, resolveDomainFilters } from \"./providers/shared.ts\";\nimport { tavilyProvider } from \"./providers/tavily.ts\";\nimport { xaiProvider } from \"./providers/xai.ts\";\nimport { zAiProvider } from \"./providers/z-ai.ts\";\nimport type {\n\tBuiltSearchRequest,\n\tSearchProvider,\n\tSearchProviderConfig,\n\tSearchRequest,\n\tSearchResultItem,\n} from \"./types.ts\";\n\nconst PROVIDER_MODULES: Record<SearchProvider, ProviderModule> = {\n\texa: exaProvider,\n\ttavily: tavilyProvider,\n\tbrave: braveProvider,\n\t\"duckduckgo-html\": duckDuckGoHtmlProvider,\n\tdeepseek: deepseekProvider,\n\tserper: serperProvider,\n\t\"google-cse\": googleCseProvider,\n\t\"z-ai\": zAiProvider,\n\topenai: openAiResponsesProvider,\n\tcodex: openAiResponsesProvider,\n\tanthropic: anthropicProvider,\n\tperplexity: perplexityProvider,\n\txai: xaiProvider,\n\tkimi: kimiProvider,\n};\n\nexport function buildSearchRequest(config: SearchProviderConfig, request: SearchRequest): BuiltSearchRequest {\n\tconst maxResults = config.maxResults ?? request.maxResults;\n\tconst { allowedDomains, blockedDomains } = resolveDomainFilters(config, request);\n\treturn PROVIDER_MODULES[config.provider].buildRequest({\n\t\tconfig,\n\t\trequest,\n\t\tmaxResults,\n\t\tallowedDomains,\n\t\tblockedDomains,\n\t});\n}\n\nexport function normalizeSearchResponse(provider: SearchProvider, payload: unknown): SearchResultItem[] {\n\treturn PROVIDER_MODULES[provider].normalizeResponse(parseObjectPayload(payload));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,MAAM,gBAAgB,GAA2C;IAChE,GAAG,EAAE,WAAW;IAChB,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,gBAAgB;IAC1B,KAAK,EAAE,aAAa;IACpB,iBAAiB,EAAE,sBAAsB;IACzC,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,cAAc;IACtB,YAAY,EAAE,iBAAiB;IAC/B,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,kBAAkB;IAC9B,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAA4B,EAAE,OAAsB;IACtF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAC3D,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjF,OAAO,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;QACrD,MAAM;QACN,OAAO;QACP,UAAU;QACV,cAAc;QACd,cAAc;KACd,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAwB,EAAE,OAAgB;IACjF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC","sourcesContent":["import { anthropicProvider } from \"./providers/anthropic.ts\";\nimport { braveProvider } from \"./providers/brave.ts\";\nimport { deepseekProvider } from \"./providers/deepseek.ts\";\nimport { duckDuckGoHtmlProvider } from \"./providers/duckduckgo-html.ts\";\nimport { exaProvider } from \"./providers/exa.ts\";\nimport { googleCseProvider } from \"./providers/google-cse.ts\";\nimport { kagiProvider } from \"./providers/kagi.ts\";\nimport { kimiProvider } from \"./providers/kimi.ts\";\nimport { openAiResponsesProvider } from \"./providers/openai-responses.ts\";\nimport { perplexityProvider } from \"./providers/perplexity.ts\";\nimport { serpdiveProvider } from \"./providers/serpdive.ts\";\nimport { serperProvider } from \"./providers/serper.ts\";\nimport type { ProviderModule } from \"./providers/shared.ts\";\nimport { parseObjectPayload, resolveDomainFilters } from \"./providers/shared.ts\";\nimport { tavilyProvider } from \"./providers/tavily.ts\";\nimport { xaiProvider } from \"./providers/xai.ts\";\nimport { zAiProvider } from \"./providers/z-ai.ts\";\nimport type {\n\tBuiltSearchRequest,\n\tSearchProvider,\n\tSearchProviderConfig,\n\tSearchRequest,\n\tSearchResultItem,\n} from \"./types.ts\";\n\nconst PROVIDER_MODULES: Record<SearchProvider, ProviderModule> = {\n\texa: exaProvider,\n\ttavily: tavilyProvider,\n\tserpdive: serpdiveProvider,\n\tbrave: braveProvider,\n\t\"duckduckgo-html\": duckDuckGoHtmlProvider,\n\tdeepseek: deepseekProvider,\n\tserper: serperProvider,\n\t\"google-cse\": googleCseProvider,\n\t\"z-ai\": zAiProvider,\n\topenai: openAiResponsesProvider,\n\tcodex: openAiResponsesProvider,\n\tanthropic: anthropicProvider,\n\tperplexity: perplexityProvider,\n\txai: xaiProvider,\n\tkimi: kimiProvider,\n\tkagi: kagiProvider,\n};\n\nexport function buildSearchRequest(config: SearchProviderConfig, request: SearchRequest): BuiltSearchRequest {\n\tconst maxResults = config.maxResults ?? request.maxResults;\n\tconst { allowedDomains, blockedDomains } = resolveDomainFilters(config, request);\n\treturn PROVIDER_MODULES[config.provider].buildRequest({\n\t\tconfig,\n\t\trequest,\n\t\tmaxResults,\n\t\tallowedDomains,\n\t\tblockedDomains,\n\t});\n}\n\nexport function normalizeSearchResponse(provider: SearchProvider, payload: unknown): SearchResultItem[] {\n\treturn PROVIDER_MODULES[provider].normalizeResponse(parseObjectPayload(payload));\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type SearchProvider = "exa" | "tavily" | "brave" | "duckduckgo-html" | "deepseek" | "serper" | "google-cse" | "z-ai" | "openai" | "codex" | "anthropic" | "perplexity" | "xai" | "kimi";
|
|
1
|
+
export type SearchProvider = "exa" | "tavily" | "serpdive" | "brave" | "duckduckgo-html" | "deepseek" | "serper" | "google-cse" | "z-ai" | "openai" | "codex" | "anthropic" | "perplexity" | "xai" | "kimi" | "kagi";
|
|
2
2
|
export type SearchContextSize = "low" | "medium" | "high";
|
|
3
3
|
export type CodexSearchMode = "cached" | "live";
|
|
4
4
|
export type RoutingStrategy = "priority" | "round-robin" | "fill-first";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACvB,KAAK,GACL,QAAQ,GACR,OAAO,GACP,iBAAiB,GACjB,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,OAAO,GACP,WAAW,GACX,YAAY,GACZ,KAAK,GACL,MAAM,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE;QACL,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;IACF,IAAI,CAAC,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,uBAAuB,GAChC,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,wBAAwB,CAAC;AAE5B,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,uBAAuB,CAAC;CACjC;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,qBAAqB,GAAG,kBAAkB,CAAC;AAE7F,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,EAAE,CAAC;AAEpF,MAAM,WAAW,UAAU;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEL,MAAM,MAAM,wBAAwB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/types.ts"],"names":[],"mappings":"","sourcesContent":["export type SearchProvider =\n\t| \"exa\"\n\t| \"tavily\"\n\t| \"brave\"\n\t| \"duckduckgo-html\"\n\t| \"deepseek\"\n\t| \"serper\"\n\t| \"google-cse\"\n\t| \"z-ai\"\n\t| \"openai\"\n\t| \"codex\"\n\t| \"anthropic\"\n\t| \"perplexity\"\n\t| \"xai\"\n\t| \"kimi\";\n\nexport type SearchContextSize = \"low\" | \"medium\" | \"high\";\nexport type CodexSearchMode = \"cached\" | \"live\";\nexport type RoutingStrategy = \"priority\" | \"round-robin\" | \"fill-first\";\n\nexport interface SearchProviderConfig {\n\tid?: string;\n\tprovider: SearchProvider;\n\tapiKey?: string;\n\tbaseUrl?: string;\n\tsearchEngineId?: string;\n\tmaxResults?: number;\n\tmodel?: string;\n\tcodexMode?: CodexSearchMode;\n\tsearchContextSize?: SearchContextSize;\n\tallowedDomains?: string[];\n\tblockedDomains?: string[];\n\tuserLocation?: SearchUserLocation;\n\ttimeoutMs?: number;\n}\n\nexport interface SearchProviderEntry extends SearchProviderConfig {\n\tpriority?: number;\n\tweight?: number;\n}\n\nexport interface WebsearchConfig {\n\tstrategy: RoutingStrategy;\n\tfallback: boolean;\n\tauto: boolean;\n\tproviders: SearchProviderEntry[];\n}\n\nexport interface SearchUserLocation {\n\tcountry?: string;\n\tregion?: string;\n\tcity?: string;\n\ttimezone?: string;\n}\n\nexport interface SearchRequest {\n\tquery: string;\n\tmaxResults: number;\n\tallowedDomains?: string[];\n\tblockedDomains?: string[];\n}\n\nexport interface BuiltSearchRequest {\n\turl: string;\n\tinit: {\n\t\tmethod: \"GET\" | \"POST\";\n\t\theaders: Record<string, string>;\n\t};\n\tbody?: JsonObject;\n}\n\nexport interface SearchResultItem {\n\ttitle: string;\n\turl: string;\n\tsnippet?: string;\n\tscore?: number;\n\tsource?: string;\n\tpublishedAt?: string;\n}\n\nexport interface SearchDetails {\n\tprovider: SearchProvider;\n\tentryId?: string;\n\tquery: string;\n\tresults: SearchResultItem[];\n\tdurationMs: number;\n\ttruncated: boolean;\n\tstrategy?: RoutingStrategy;\n\tattempts?: SearchAttempt[];\n\tanswer?: string;\n\terror?: string;\n}\n\nexport interface SearchProgressDetails {\n\tphase: \"searching\";\n\tquery: string;\n\tproviderLabels: string[];\n\tmaxResults: number;\n\tcurrentProvider?: string;\n\tattempts?: SearchAttempt[];\n\trouteLabels?: string[];\n\tstrategy?: RoutingStrategy;\n\tallowedDomains?: string[];\n\tblockedDomains?: string[];\n}\n\nexport type ConfigLoadFailureReason =\n\t| \"missing_config\"\n\t| \"invalid_config\"\n\t| \"missing_api_key\"\n\t| \"provider_native_bypass\";\n\nexport interface SearchErrorDetails {\n\tphase: \"error\";\n\tquery: string;\n\terror: string;\n\treason?: ConfigLoadFailureReason;\n}\n\nexport type SearchRenderDetails = SearchDetails | SearchProgressDetails | SearchErrorDetails;\n\nexport interface SearchAttempt {\n\tprovider: SearchProvider;\n\tentryId?: string;\n\tdurationMs: number;\n\tresultsCount: number;\n\terror?: string;\n}\n\nexport type JsonValue = string | number | boolean | null | JsonObject | JsonValue[];\n\nexport interface JsonObject {\n\t[key: string]: JsonValue;\n}\n\nexport type ConfigLoadResult =\n\t| { ok: true; config: WebsearchConfig; source: string }\n\t| {\n\t\t\tok: false;\n\t\t\treason: ConfigLoadFailureReason;\n\t\t\tmessage: string;\n\t\t\tsource?: string;\n\t };\n\nexport type ProviderValidationResult =\n\t| { ok: true; config: SearchProviderEntry }\n\t| { ok: false; reason: \"invalid_config\" | \"missing_api_key\"; message: string };\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/websearch/websearch/types.ts"],"names":[],"mappings":"","sourcesContent":["export type SearchProvider =\n\t| \"exa\"\n\t| \"tavily\"\n\t| \"serpdive\"\n\t| \"brave\"\n\t| \"duckduckgo-html\"\n\t| \"deepseek\"\n\t| \"serper\"\n\t| \"google-cse\"\n\t| \"z-ai\"\n\t| \"openai\"\n\t| \"codex\"\n\t| \"anthropic\"\n\t| \"perplexity\"\n\t| \"xai\"\n\t| \"kimi\"\n\t| \"kagi\";\n\nexport type SearchContextSize = \"low\" | \"medium\" | \"high\";\nexport type CodexSearchMode = \"cached\" | \"live\";\nexport type RoutingStrategy = \"priority\" | \"round-robin\" | \"fill-first\";\n\nexport interface SearchProviderConfig {\n\tid?: string;\n\tprovider: SearchProvider;\n\tapiKey?: string;\n\tbaseUrl?: string;\n\tsearchEngineId?: string;\n\tmaxResults?: number;\n\tmodel?: string;\n\tcodexMode?: CodexSearchMode;\n\tsearchContextSize?: SearchContextSize;\n\tallowedDomains?: string[];\n\tblockedDomains?: string[];\n\tuserLocation?: SearchUserLocation;\n\ttimeoutMs?: number;\n}\n\nexport interface SearchProviderEntry extends SearchProviderConfig {\n\tpriority?: number;\n\tweight?: number;\n}\n\nexport interface WebsearchConfig {\n\tstrategy: RoutingStrategy;\n\tfallback: boolean;\n\tauto: boolean;\n\tproviders: SearchProviderEntry[];\n}\n\nexport interface SearchUserLocation {\n\tcountry?: string;\n\tregion?: string;\n\tcity?: string;\n\ttimezone?: string;\n}\n\nexport interface SearchRequest {\n\tquery: string;\n\tmaxResults: number;\n\tallowedDomains?: string[];\n\tblockedDomains?: string[];\n}\n\nexport interface BuiltSearchRequest {\n\turl: string;\n\tinit: {\n\t\tmethod: \"GET\" | \"POST\";\n\t\theaders: Record<string, string>;\n\t};\n\tbody?: JsonObject;\n}\n\nexport interface SearchResultItem {\n\ttitle: string;\n\turl: string;\n\tsnippet?: string;\n\tscore?: number;\n\tsource?: string;\n\tpublishedAt?: string;\n}\n\nexport interface SearchDetails {\n\tprovider: SearchProvider;\n\tentryId?: string;\n\tquery: string;\n\tresults: SearchResultItem[];\n\tdurationMs: number;\n\ttruncated: boolean;\n\tstrategy?: RoutingStrategy;\n\tattempts?: SearchAttempt[];\n\tanswer?: string;\n\terror?: string;\n}\n\nexport interface SearchProgressDetails {\n\tphase: \"searching\";\n\tquery: string;\n\tproviderLabels: string[];\n\tmaxResults: number;\n\tcurrentProvider?: string;\n\tattempts?: SearchAttempt[];\n\trouteLabels?: string[];\n\tstrategy?: RoutingStrategy;\n\tallowedDomains?: string[];\n\tblockedDomains?: string[];\n}\n\nexport type ConfigLoadFailureReason =\n\t| \"missing_config\"\n\t| \"invalid_config\"\n\t| \"missing_api_key\"\n\t| \"provider_native_bypass\";\n\nexport interface SearchErrorDetails {\n\tphase: \"error\";\n\tquery: string;\n\terror: string;\n\treason?: ConfigLoadFailureReason;\n}\n\nexport type SearchRenderDetails = SearchDetails | SearchProgressDetails | SearchErrorDetails;\n\nexport interface SearchAttempt {\n\tprovider: SearchProvider;\n\tentryId?: string;\n\tdurationMs: number;\n\tresultsCount: number;\n\terror?: string;\n}\n\nexport type JsonValue = string | number | boolean | null | JsonObject | JsonValue[];\n\nexport interface JsonObject {\n\t[key: string]: JsonValue;\n}\n\nexport type ConfigLoadResult =\n\t| { ok: true; config: WebsearchConfig; source: string }\n\t| {\n\t\t\tok: false;\n\t\t\treason: ConfigLoadFailureReason;\n\t\t\tmessage: string;\n\t\t\tsource?: string;\n\t };\n\nexport type ProviderValidationResult =\n\t| { ok: true; config: SearchProviderEntry }\n\t| { ok: false; reason: \"invalid_config\" | \"missing_api_key\"; message: string };\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SessionInfo } from "./session-manager.ts";
|
|
2
|
+
import { type SessionSummaryStore } from "./session-summary-cache.ts";
|
|
2
3
|
export type SessionListProgress = (loaded: number, total: number) => void;
|
|
3
4
|
/**
|
|
4
5
|
* Build one picker row from a session file's exact summary.
|
|
@@ -6,11 +7,16 @@ export type SessionListProgress = (loaded: number, total: number) => void;
|
|
|
6
7
|
* The summary is derived from every record in the file, so a row's name, first
|
|
7
8
|
* message, message count, and activity time are exact regardless of where those
|
|
8
9
|
* records sit. Repeat listings of an unchanged file are served from the
|
|
9
|
-
* stat-keyed summary cache and
|
|
10
|
+
* stat-keyed summary cache (or `store` on a cache miss) and stream nothing.
|
|
10
11
|
*/
|
|
11
|
-
export declare function buildSessionInfo(filePath: string): Promise<SessionInfo | null>;
|
|
12
|
+
export declare function buildSessionInfo(filePath: string, store?: SessionSummaryStore): Promise<SessionInfo | null>;
|
|
12
13
|
/** Build picker rows for an explicit file list, dropping files that are not sessions. */
|
|
13
|
-
export declare function listSessionInfos(files: readonly string[], onLoaded: () => void): Promise<SessionInfo[]>;
|
|
14
|
+
export declare function listSessionInfos(files: readonly string[], onLoaded: () => void, store?: SessionSummaryStore): Promise<SessionInfo[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Build picker rows for session files that all live in `dir`, served through
|
|
17
|
+
* and then persisted into that directory's summary index.
|
|
18
|
+
*/
|
|
19
|
+
export declare function listSessionFilesInDir(dir: string, files: readonly string[], onLoaded: () => void): Promise<SessionInfo[]>;
|
|
14
20
|
/** Build picker rows for every `.jsonl` file in one session directory. */
|
|
15
21
|
export declare function listSessionsFromDir(dir: string, onProgress?: SessionListProgress, progressOffset?: number, progressTotal?: number): Promise<SessionInfo[]>;
|
|
16
22
|
//# sourceMappingURL=session-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-discovery.d.ts","sourceRoot":"","sources":["../../src/core/session-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-discovery.d.ts","sourceRoot":"","sources":["../../src/core/session-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAA4B,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGhG,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAU1E;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAmBjH;AA2CD,yFAAyF;AACzF,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,QAAQ,EAAE,MAAM,IAAI,EACpB,KAAK,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,WAAW,EAAE,CAAC,CAOxB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAC1C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,QAAQ,EAAE,MAAM,IAAI,GAClB,OAAO,CAAC,WAAW,EAAE,CAAC,CAKxB;AAED,0EAA0E;AAC1E,wBAAsB,mBAAmB,CACxC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,mBAAmB,EAChC,cAAc,SAAI,EAClB,aAAa,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC,CAgBxB"}
|
|
@@ -2,6 +2,7 @@ import { existsSync } from "fs";
|
|
|
2
2
|
import { readdir } from "fs/promises";
|
|
3
3
|
import { join } from "path";
|
|
4
4
|
import { readCachedSessionSummary } from "./session-summary-cache.js";
|
|
5
|
+
import { SessionSummaryIndex } from "./session-summary-index.js";
|
|
5
6
|
const MAX_CONCURRENT_SESSION_INFO_LOADS = 10;
|
|
6
7
|
function resolveModified(activityTime, header, mtime) {
|
|
7
8
|
if (typeof activityTime === "number" && activityTime > 0)
|
|
@@ -15,10 +16,10 @@ function resolveModified(activityTime, header, mtime) {
|
|
|
15
16
|
* The summary is derived from every record in the file, so a row's name, first
|
|
16
17
|
* message, message count, and activity time are exact regardless of where those
|
|
17
18
|
* records sit. Repeat listings of an unchanged file are served from the
|
|
18
|
-
* stat-keyed summary cache and
|
|
19
|
+
* stat-keyed summary cache (or `store` on a cache miss) and stream nothing.
|
|
19
20
|
*/
|
|
20
|
-
export async function buildSessionInfo(filePath) {
|
|
21
|
-
const cached = await readCachedSessionSummary(filePath);
|
|
21
|
+
export async function buildSessionInfo(filePath, store) {
|
|
22
|
+
const cached = await readCachedSessionSummary(filePath, store);
|
|
22
23
|
if (!cached)
|
|
23
24
|
return null;
|
|
24
25
|
const { summary, mtime } = cached;
|
|
@@ -36,7 +37,7 @@ export async function buildSessionInfo(filePath) {
|
|
|
36
37
|
allMessagesText: summary.allMessagesText,
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
|
-
async function buildSessionInfosWithConcurrency(files, onLoaded) {
|
|
40
|
+
async function buildSessionInfosWithConcurrency(files, onLoaded, store) {
|
|
40
41
|
const results = new Array(files.length).fill(null);
|
|
41
42
|
const inFlight = new Set();
|
|
42
43
|
let nextIndex = 0;
|
|
@@ -46,7 +47,7 @@ async function buildSessionInfosWithConcurrency(files, onLoaded) {
|
|
|
46
47
|
if (!file)
|
|
47
48
|
return;
|
|
48
49
|
let task;
|
|
49
|
-
task = buildSessionInfo(file)
|
|
50
|
+
task = buildSessionInfo(file, store)
|
|
50
51
|
.then((info) => {
|
|
51
52
|
results[index] = info;
|
|
52
53
|
})
|
|
@@ -70,8 +71,8 @@ async function buildSessionInfosWithConcurrency(files, onLoaded) {
|
|
|
70
71
|
return results;
|
|
71
72
|
}
|
|
72
73
|
/** Build picker rows for an explicit file list, dropping files that are not sessions. */
|
|
73
|
-
export async function listSessionInfos(files, onLoaded) {
|
|
74
|
-
const results = await buildSessionInfosWithConcurrency(files, onLoaded);
|
|
74
|
+
export async function listSessionInfos(files, onLoaded, store) {
|
|
75
|
+
const results = await buildSessionInfosWithConcurrency(files, onLoaded, store);
|
|
75
76
|
const sessions = [];
|
|
76
77
|
for (const info of results) {
|
|
77
78
|
if (info)
|
|
@@ -79,6 +80,16 @@ export async function listSessionInfos(files, onLoaded) {
|
|
|
79
80
|
}
|
|
80
81
|
return sessions;
|
|
81
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Build picker rows for session files that all live in `dir`, served through
|
|
85
|
+
* and then persisted into that directory's summary index.
|
|
86
|
+
*/
|
|
87
|
+
export async function listSessionFilesInDir(dir, files, onLoaded) {
|
|
88
|
+
const index = new SessionSummaryIndex(dir);
|
|
89
|
+
const sessions = await listSessionInfos(files, onLoaded, index);
|
|
90
|
+
await index.persist(files);
|
|
91
|
+
return sessions;
|
|
92
|
+
}
|
|
82
93
|
/** Build picker rows for every `.jsonl` file in one session directory. */
|
|
83
94
|
export async function listSessionsFromDir(dir, onProgress, progressOffset = 0, progressTotal) {
|
|
84
95
|
if (!existsSync(dir))
|
|
@@ -88,7 +99,7 @@ export async function listSessionsFromDir(dir, onProgress, progressOffset = 0, p
|
|
|
88
99
|
const files = dirEntries.filter((name) => name.endsWith(".jsonl")).map((name) => join(dir, name));
|
|
89
100
|
const total = progressTotal ?? files.length;
|
|
90
101
|
let loaded = 0;
|
|
91
|
-
return await
|
|
102
|
+
return await listSessionFilesInDir(dir, files, () => {
|
|
92
103
|
loaded++;
|
|
93
104
|
onProgress?.(progressOffset + loaded, total);
|
|
94
105
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-discovery.js","sourceRoot":"","sources":["../../src/core/session-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"session-discovery.js","sourceRoot":"","sources":["../../src/core/session-discovery.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"fs\";\nimport { readdir } from \"fs/promises\";\nimport { join } from \"path\";\nimport type { SessionHeader, SessionInfo } from \"./session-manager.ts\";\nimport { readCachedSessionSummary, type SessionSummaryStore } from \"./session-summary-cache.ts\";\nimport { SessionSummaryIndex } from \"./session-summary-index.ts\";\n\nexport type SessionListProgress = (loaded: number, total: number) => void;\n\nconst MAX_CONCURRENT_SESSION_INFO_LOADS = 10;\n\nfunction resolveModified(activityTime: number | undefined, header: SessionHeader, mtime: Date): Date {\n\tif (typeof activityTime === \"number\" && activityTime > 0) return new Date(activityTime);\n\tconst headerTime = typeof header.timestamp === \"string\" ? Date.parse(header.timestamp) : Number.NaN;\n\treturn Number.isNaN(headerTime) ? mtime : new Date(headerTime);\n}\n\n/**\n * Build one picker row from a session file's exact summary.\n *\n * The summary is derived from every record in the file, so a row's name, first\n * message, message count, and activity time are exact regardless of where those\n * records sit. Repeat listings of an unchanged file are served from the\n * stat-keyed summary cache (or `store` on a cache miss) and stream nothing.\n */\nexport async function buildSessionInfo(filePath: string, store?: SessionSummaryStore): Promise<SessionInfo | null> {\n\tconst cached = await readCachedSessionSummary(filePath, store);\n\tif (!cached) return null;\n\n\tconst { summary, mtime } = cached;\n\tconst header = summary.header;\n\n\treturn {\n\t\tpath: filePath,\n\t\tid: header.id,\n\t\tcwd: typeof header.cwd === \"string\" ? header.cwd : \"\",\n\t\tname: summary.name,\n\t\tparentSessionPath: header.parentSession,\n\t\tcreated: new Date(header.timestamp),\n\t\tmodified: resolveModified(summary.lastActivityTime, header, mtime),\n\t\tmessageCount: summary.messageCount,\n\t\tfirstMessage: summary.firstUserMessage || \"(no messages)\",\n\t\tallMessagesText: summary.allMessagesText,\n\t};\n}\n\nasync function buildSessionInfosWithConcurrency(\n\tfiles: readonly string[],\n\tonLoaded: () => void,\n\tstore: SessionSummaryStore | undefined,\n): Promise<(SessionInfo | null)[]> {\n\tconst results: (SessionInfo | null)[] = new Array(files.length).fill(null);\n\tconst inFlight = new Set<Promise<void>>();\n\tlet nextIndex = 0;\n\n\tconst startNext = (): void => {\n\t\tconst index = nextIndex++;\n\t\tconst file = files[index];\n\t\tif (!file) return;\n\n\t\tlet task: Promise<void>;\n\t\ttask = buildSessionInfo(file, store)\n\t\t\t.then((info) => {\n\t\t\t\tresults[index] = info;\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tresults[index] = null;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tinFlight.delete(task);\n\t\t\t\tonLoaded();\n\t\t\t});\n\t\tinFlight.add(task);\n\t};\n\n\twhile (nextIndex < files.length || inFlight.size > 0) {\n\t\twhile (nextIndex < files.length && inFlight.size < MAX_CONCURRENT_SESSION_INFO_LOADS) {\n\t\t\tstartNext();\n\t\t}\n\t\tif (inFlight.size > 0) {\n\t\t\tawait Promise.race(inFlight);\n\t\t}\n\t}\n\n\treturn results;\n}\n\n/** Build picker rows for an explicit file list, dropping files that are not sessions. */\nexport async function listSessionInfos(\n\tfiles: readonly string[],\n\tonLoaded: () => void,\n\tstore?: SessionSummaryStore,\n): Promise<SessionInfo[]> {\n\tconst results = await buildSessionInfosWithConcurrency(files, onLoaded, store);\n\tconst sessions: SessionInfo[] = [];\n\tfor (const info of results) {\n\t\tif (info) sessions.push(info);\n\t}\n\treturn sessions;\n}\n\n/**\n * Build picker rows for session files that all live in `dir`, served through\n * and then persisted into that directory's summary index.\n */\nexport async function listSessionFilesInDir(\n\tdir: string,\n\tfiles: readonly string[],\n\tonLoaded: () => void,\n): Promise<SessionInfo[]> {\n\tconst index = new SessionSummaryIndex(dir);\n\tconst sessions = await listSessionInfos(files, onLoaded, index);\n\tawait index.persist(files);\n\treturn sessions;\n}\n\n/** Build picker rows for every `.jsonl` file in one session directory. */\nexport async function listSessionsFromDir(\n\tdir: string,\n\tonProgress?: SessionListProgress,\n\tprogressOffset = 0,\n\tprogressTotal?: number,\n): Promise<SessionInfo[]> {\n\tif (!existsSync(dir)) return [];\n\n\ttry {\n\t\tconst dirEntries = await readdir(dir);\n\t\tconst files = dirEntries.filter((name) => name.endsWith(\".jsonl\")).map((name) => join(dir, name));\n\t\tconst total = progressTotal ?? files.length;\n\t\tlet loaded = 0;\n\t\treturn await listSessionFilesInDir(dir, files, () => {\n\t\t\tloaded++;\n\t\t\tonProgress?.(progressOffset + loaded, total);\n\t\t});\n\t} catch {\n\t\t// A directory that cannot be read contributes no picker rows.\n\t\treturn [];\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAqB1G,OAAO,EAAyC,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEzG,OAAO,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAQ3F,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAuBlE,OAAO,EACN,KAAK,oBAAoB,EAEzB,KAAK,aAAa,EAIlB,MAAM,eAAe,CAAC;AAIvB,8FAA8F;AAC9F,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAOpE,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAElF;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC5D,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IACjE,IAAI,EAAE,uBAAuB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACtC;AAED,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IACjE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAC;IACxC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IACjE,IAAI,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAClC;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,gBAAgB;IACrE,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,2EAA2E;IAC3E,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,gBAAgB;IACxE,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,wEAAwE;IACxE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,gBAAgB;IACjE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,CAAC;CACT;AAED,iEAAiE;AACjE,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IACnD,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,gBAAgB;IACxE,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,wGAAwG;AACxG,MAAM,MAAM,YAAY,GACrB,mBAAmB,GACnB,wBAAwB,GACxB,wBAAwB,GACxB,gBAAgB,GAChB,wBAAwB,GACxB,eAAe,GACf,kBAAkB,GAClB,WAAW,GACX,kBAAkB,GAClB,UAAU,GACV,gBAAgB,CAAC;AAEpB,uCAAuC;AACvC,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;AAErD,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,mBAAmB,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACxC,cAAc,EACZ,QAAQ,GACR,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,WAAW,GACX,cAAc,GACd,UAAU,GACV,UAAU,GACV,WAAW,GACX,qBAAqB,GACrB,qBAAqB,GACrB,WAAW,GACX,YAAY,GACZ,SAAS,GACT,gBAAgB,CAClB,CAAC;AAMF,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAMrD;AA2ED,2BAA2B;AAC3B,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAEhE;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAehE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,eAAe,GAAG,IAAI,CAOxF;AAoHD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,CA2CjF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAC9B,YAAY,EAAE,CAoChB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAC9B,cAAc,CAKhB;AAaD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA6B,GAAG,MAAM,CAMjG;AAwBD,2BAA2B;AAC3B,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CA0CjE;AA8ED,2BAA2B;AAC3B,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqBrF;AAeD,mFAAmF;AACnF,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,OAAO,mBAAmB,GAAG,MAAM,IAAI,CAM9F;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,IAAI,CAAwC;IAKpD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,qBAAqB,CAAmE;IAChG,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,mBAAmB,CAA8D;IAGzF,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAA8D;IAClF,OAAO,CAAC,WAAW,CAAqF;IACxG,OAAO,CAAC,gBAAgB,CAAiC;IAKzD,OAAO,CAAC,WAAW,CAOjB;IAEF,OAAO,eAgCN;IAED;;OAEG;IACH,cAAc,IAAI,IAAI,CAYrB;IAED,yEAAyE;IACzE,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAExC;IAED,OAAO,CAAC,eAAe;IAiEvB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAS1D;IAED,mFAAmF;IACnF,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,WAAW;IA4CnB,OAAO,CAAC,YAAY;IAapB,WAAW,IAAI,OAAO,CAErB;IAED,MAAM,IAAI,MAAM,CAEf;IAED,aAAa,IAAI,MAAM,CAEtB;IAED,qBAAqB,IAAI,OAAO,CAE/B;IAED,YAAY,IAAI,MAAM,CAErB;IAED,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED;;;OAGG;IACH,gBAAgB,IAAI,mBAAmB,CAEtC;IAED,qBAAqB,IAAI,kBAAkB,CAE1C;IAED,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CA6BlC;IAED,OAAO,CAAC,YAAY;IAYpB;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAgBrC;IAED,OAAO,CAAC,iBAAiB;IAqBzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;;OAGG;IACH,cAAc,IAAI,WAAW,CAE5B;IAED;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,oBAAoB,GAAG,MAAM,CAc7E;IAED,iFAAiF;IACjF,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAEvG;IAED,sFAAsF;IACtF,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjD;IAED,oGAAoG;IACpG,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAW9F;IAED,gFAAgF;IAChF,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUhD;IAED;;;OAGG;IACH,yBAAyB,CACxB,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC,GAC/E,MAAM,CAUR;IAED,2FAA2F;IAC3F,iBAAiB,CAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,UAAU,GAAG,iBAAiB,EACvC,gBAAgB,CAAC,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,MAAM,GACtB,MAAM,CAcR;IAED,iGAAiG;IACjG,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC3B,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,CAAC,EACX,QAAQ,CAAC,EAAE,OAAO,EAClB,KAAK,CAAC,EAAE,KAAK,GACX,MAAM,CAgBR;IAED;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAGd;IAED;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,0BAA0B;IAyBlC,0FAA0F;IAC1F,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAW5D;IAED,0EAA0E;IAC1E,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYtC;IAED;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED;;;;;;;OAOG;IACH,wBAAwB,CAAC,CAAC,GAAG,OAAO,EACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,CAAC,GACT,MAAM,CAaR;IAMD,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzB;IAED,YAAY,IAAI,YAAY,GAAG,SAAS,CAGvC;IAED,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAQ7C;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAQ5C;IAED;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAqBrE;IAED;;;;OAIG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CA+BzC;IAED;;;OAGG;IACH,mBAAmB,IAAI,YAAY,EAAE,CAEpC;IAED;;;OAGG;IACH,mBAAmB,IAAI,cAAc,CAEpC;IAED,kBAAkB,IAAI,OAAO,CAQ5B;IAED,uBAAuB,IAAI,OAAO,CAEjC;IAED,gBAAgB,IAAI,MAAM,CAMzB;IAED,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,SAAS,IAAI,aAAa,GAAG,IAAI,CAGhC;IAED;;;;;;;;;OASG;IACH,UAAU,IAAI,YAAY,EAAE,CAa3B;IAED,8FAA8F;IAC9F,aAAa,IAAI,MAAM,CAEtB;IAED;;;;;OAKG;IACH,sBAAsB,IAAI,IAAI,CAI7B;IAED,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,uBAAuB;IAI/B;;;;OAIG;IACH,OAAO,IAAI,eAAe,EAAE,CAsC3B;IAMD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CASjC;IAED;;;;OAIG;IACH,SAAS,IAAI,IAAI,CAGhB;IAED;;;;OAIG;IACH,iBAAiB,CAChB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE,OAAO,EAClB,KAAK,CAAC,EAAE,KAAK,GACX,MAAM,CAmBR;IAED;;;;OAIG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoIxD;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAG3F;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CA2BhH;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAQtE;IAED,8GAA8G;IAC9G,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAE,MAAsB,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,cAAc,CAE/G;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CACd,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,iBAAiB,GACzB,cAAc,CA+ChB;IAED;;;;;OAKG;IACH,OAAa,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAS5G;IAED;;;OAGG;IACH,OAAa,OAAO,CAAC,UAAU,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,OAAa,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAmDpG"}
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { join, resolve } from "path";
|
|
|
6
6
|
import { StringDecoder } from "string_decoder";
|
|
7
7
|
import { APP_NAME, getAgentDir as getDefaultAgentDir, getSessionsDir } from "../config.js";
|
|
8
8
|
import { normalizePath, resolvePath } from "../utils/paths.js";
|
|
9
|
-
import {
|
|
9
|
+
import { listSessionFilesInDir, listSessionsFromDir } from "./session-discovery.js";
|
|
10
10
|
import { materializeSessionEntries } from "./session-entry-materializer.js";
|
|
11
11
|
import { ResidentStringStore } from "./session-resident-store.js";
|
|
12
12
|
import { hasOtherLiveSessionWriter, registerSessionWriter, reserveSessionWrite, unregisterSessionWriter, } from "./session-write-reservation.js";
|
|
@@ -1795,12 +1795,16 @@ export class SessionManager {
|
|
|
1795
1795
|
dirFiles.push([]);
|
|
1796
1796
|
}
|
|
1797
1797
|
}
|
|
1798
|
-
// Process
|
|
1798
|
+
// Process each directory through its own summary index, with progress over all files
|
|
1799
1799
|
let loaded = 0;
|
|
1800
|
-
const
|
|
1800
|
+
const onLoaded = () => {
|
|
1801
1801
|
loaded++;
|
|
1802
1802
|
progress?.(loaded, totalFiles);
|
|
1803
|
-
}
|
|
1803
|
+
};
|
|
1804
|
+
const sessions = [];
|
|
1805
|
+
for (const [index, dir] of dirs.entries()) {
|
|
1806
|
+
sessions.push(...(await listSessionFilesInDir(dir, dirFiles[index] ?? [], onLoaded)));
|
|
1807
|
+
}
|
|
1804
1808
|
sessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());
|
|
1805
1809
|
return sessions;
|
|
1806
1810
|
}
|