@code-yeongyu/senpi 2026.8.11 → 2026.8.12
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 +185 -0
- package/dist/brand-dir-migration.d.ts +28 -0
- package/dist/brand-dir-migration.d.ts.map +1 -0
- package/dist/brand-dir-migration.js +77 -0
- package/dist/brand-dir-migration.js.map +1 -0
- package/dist/cli/grok-neo-gate.d.ts +0 -8
- package/dist/cli/grok-neo-gate.d.ts.map +1 -1
- package/dist/cli/grok-neo-gate.js +4 -2
- package/dist/cli/grok-neo-gate.js.map +1 -1
- package/dist/cli-main.d.ts +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli-main.js +4 -0
- package/dist/cli-main.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +27 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +41 -9
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +8 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +73 -11
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/brand.d.ts +79 -0
- package/dist/core/brand.d.ts.map +1 -0
- package/dist/core/brand.js +141 -0
- package/dist/core/brand.js.map +1 -0
- package/dist/core/dynamic-prompt/identity.d.ts.map +1 -1
- package/dist/core/dynamic-prompt/identity.js +2 -1
- package/dist/core/dynamic-prompt/identity.js.map +1 -1
- package/dist/core/event-bus.d.ts +5 -0
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +1 -0
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +2 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensions/builtin/btw/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/btw/index.js +7 -2
- package/dist/core/extensions/builtin/btw/index.js.map +1 -1
- package/dist/core/extensions/builtin/btw/side-query.d.ts +2 -0
- package/dist/core/extensions/builtin/btw/side-query.d.ts.map +1 -1
- package/dist/core/extensions/builtin/btw/side-query.js +39 -2
- package/dist/core/extensions/builtin/btw/side-query.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts +2 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js +24 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js.map +1 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts +4 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.js +5 -2
- package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.d.ts +6 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js +16 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.js +10 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.d.ts +1 -0
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +1 -1
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/log.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/log.js +2 -1
- package/dist/core/extensions/builtin/compaction/log.js.map +1 -1
- package/dist/core/extensions/builtin/config-reload/generated-shim-filter.d.ts.map +1 -1
- package/dist/core/extensions/builtin/config-reload/generated-shim-filter.js +4 -4
- package/dist/core/extensions/builtin/config-reload/generated-shim-filter.js.map +1 -1
- package/dist/core/extensions/builtin/goal/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/index.js +5 -0
- package/dist/core/extensions/builtin/goal/index.js.map +1 -1
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.d.ts +2 -2
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.js +3 -3
- package/dist/core/extensions/builtin/goal/lifecycle-helpers.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 +6 -0
- package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
- package/dist/core/extensions/builtin/goal/store.d.ts +3 -2
- package/dist/core/extensions/builtin/goal/store.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/store.js +128 -101
- package/dist/core/extensions/builtin/goal/store.js.map +1 -1
- package/dist/core/extensions/builtin/goal/transitions.js +2 -1
- package/dist/core/extensions/builtin/goal/transitions.js.map +1 -1
- package/dist/core/extensions/builtin/help/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/help/index.js +3 -2
- package/dist/core/extensions/builtin/help/index.js.map +1 -1
- package/dist/core/extensions/builtin/imagegen/auth.d.ts +45 -0
- package/dist/core/extensions/builtin/imagegen/auth.d.ts.map +1 -0
- package/dist/core/extensions/builtin/imagegen/auth.js +137 -0
- package/dist/core/extensions/builtin/imagegen/auth.js.map +1 -0
- package/dist/core/extensions/builtin/imagegen/index.d.ts +5 -0
- package/dist/core/extensions/builtin/imagegen/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/imagegen/index.js +46 -0
- package/dist/core/extensions/builtin/imagegen/index.js.map +1 -0
- package/dist/core/extensions/builtin/imagegen/paths.d.ts +26 -0
- package/dist/core/extensions/builtin/imagegen/paths.d.ts.map +1 -0
- package/dist/core/extensions/builtin/imagegen/paths.js +52 -0
- package/dist/core/extensions/builtin/imagegen/paths.js.map +1 -0
- package/dist/core/extensions/builtin/imagegen/skill/SKILL.md +67 -0
- package/dist/core/extensions/builtin/imagegen/state.d.ts +26 -0
- package/dist/core/extensions/builtin/imagegen/state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/imagegen/state.js +35 -0
- package/dist/core/extensions/builtin/imagegen/state.js.map +1 -0
- package/dist/core/extensions/builtin/imagegen/tool.d.ts +31 -0
- package/dist/core/extensions/builtin/imagegen/tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/imagegen/tool.js +174 -0
- package/dist/core/extensions/builtin/imagegen/tool.js.map +1 -0
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +9 -1
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/control-inventory.d.ts +14 -0
- package/dist/core/extensions/builtin/mcp/control-inventory.d.ts.map +1 -0
- package/dist/core/extensions/builtin/mcp/control-inventory.js +22 -0
- package/dist/core/extensions/builtin/mcp/control-inventory.js.map +1 -0
- package/dist/core/extensions/builtin/mcp/expose/native-search.d.ts +2 -44
- package/dist/core/extensions/builtin/mcp/expose/native-search.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/native-search.js +3 -97
- package/dist/core/extensions/builtin/mcp/expose/native-search.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/proxy.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/proxy.js +15 -4
- package/dist/core/extensions/builtin/mcp/expose/proxy.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/session.d.ts +2 -1
- package/dist/core/extensions/builtin/mcp/expose/session.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/session.js +2 -2
- package/dist/core/extensions/builtin/mcp/expose/session.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/tier-b.d.ts +13 -11
- package/dist/core/extensions/builtin/mcp/expose/tier-b.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/tier-b.js +58 -59
- package/dist/core/extensions/builtin/mcp/expose/tier-b.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/index.js +28 -36
- package/dist/core/extensions/builtin/mcp/index.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/service-register.d.ts +2 -1
- package/dist/core/extensions/builtin/mcp/service-register.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/service-register.js +2 -2
- package/dist/core/extensions/builtin/mcp/service-register.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/service-types.d.ts +4 -0
- package/dist/core/extensions/builtin/mcp/service-types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/service-types.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/service.d.ts +6 -11
- package/dist/core/extensions/builtin/mcp/service.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/service.js +79 -41
- package/dist/core/extensions/builtin/mcp/service.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/wrap.d.ts +2 -0
- package/dist/core/extensions/builtin/mcp/wrap.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/wrap.js +3 -0
- package/dist/core/extensions/builtin/mcp/wrap.js.map +1 -1
- package/dist/core/extensions/builtin/openai-image-gen/externalize.d.ts +27 -0
- package/dist/core/extensions/builtin/openai-image-gen/externalize.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-image-gen/externalize.js +133 -0
- package/dist/core/extensions/builtin/openai-image-gen/externalize.js.map +1 -0
- package/dist/core/extensions/builtin/openai-image-gen/gate.d.ts +21 -0
- package/dist/core/extensions/builtin/openai-image-gen/gate.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-image-gen/gate.js +63 -0
- package/dist/core/extensions/builtin/openai-image-gen/gate.js.map +1 -0
- package/dist/core/extensions/builtin/openai-image-gen/index.d.ts +14 -0
- package/dist/core/extensions/builtin/openai-image-gen/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-image-gen/index.js +77 -0
- package/dist/core/extensions/builtin/openai-image-gen/index.js.map +1 -0
- package/dist/core/extensions/builtin/openai-image-gen/inject.d.ts +15 -0
- package/dist/core/extensions/builtin/openai-image-gen/inject.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-image-gen/inject.js +42 -0
- package/dist/core/extensions/builtin/openai-image-gen/inject.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js +2 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js +2 -1
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js +2 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +2 -1
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/grok-4.5.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/grok-4.5.js +6 -5
- package/dist/core/extensions/builtin/prompt-preset/grok-4.5.js.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k3.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js +2 -1
- package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-notify.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-notify.js +8 -1
- package/dist/core/extensions/builtin/terminal/monitor-notify.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/notify.d.ts +3 -1
- package/dist/core/extensions/builtin/terminal/notify.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/notify.js +4 -1
- package/dist/core/extensions/builtin/terminal/notify.js.map +1 -1
- package/dist/core/extensions/builtin/tool-search/engine/bm25.d.ts +22 -0
- package/dist/core/extensions/builtin/tool-search/engine/bm25.d.ts.map +1 -0
- package/dist/core/extensions/builtin/{mcp/expose → tool-search/engine}/bm25.js +16 -31
- package/dist/core/extensions/builtin/tool-search/engine/bm25.js.map +1 -0
- package/dist/core/extensions/builtin/tool-search/engine/document.d.ts +14 -0
- package/dist/core/extensions/builtin/tool-search/engine/document.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-search/engine/document.js +2 -0
- package/dist/core/extensions/builtin/tool-search/engine/document.js.map +1 -0
- package/dist/core/extensions/builtin/tool-search/engine/marker.d.ts +55 -0
- package/dist/core/extensions/builtin/tool-search/engine/marker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-search/engine/marker.js +189 -0
- package/dist/core/extensions/builtin/tool-search/engine/marker.js.map +1 -0
- package/dist/core/extensions/builtin/tool-search/index.d.ts +7 -0
- package/dist/core/extensions/builtin/tool-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-search/index.js +71 -0
- package/dist/core/extensions/builtin/tool-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/tool-search/native-search.d.ts +52 -0
- package/dist/core/extensions/builtin/tool-search/native-search.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-search/native-search.js +116 -0
- package/dist/core/extensions/builtin/tool-search/native-search.js.map +1 -0
- package/dist/core/extensions/builtin/tool-search/service.d.ts +38 -0
- package/dist/core/extensions/builtin/tool-search/service.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-search/service.js +200 -0
- package/dist/core/extensions/builtin/tool-search/service.js.map +1 -0
- package/dist/core/extensions/builtin/tool-search/tool.d.ts +21 -0
- package/dist/core/extensions/builtin/tool-search/tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-search/tool.js +95 -0
- package/dist/core/extensions/builtin/tool-search/tool.js.map +1 -0
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +31 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +28 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +61 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js +11 -0
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/generated-shim-banner.d.ts +15 -0
- package/dist/core/generated-shim-banner.d.ts.map +1 -0
- package/dist/core/generated-shim-banner.js +26 -0
- package/dist/core/generated-shim-banner.js.map +1 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +7 -3
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +2 -1
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/provider-composer.d.ts +10 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +9 -0
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +21 -10
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/session-log.d.ts.map +1 -1
- package/dist/core/session-log.js +4 -2
- package/dist/core/session-log.js.map +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +3 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/telemetry.d.ts.map +1 -1
- package/dist/core/telemetry.js +2 -1
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/timings.d.ts +0 -4
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +2 -1
- package/dist/core/timings.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inspector-policy.d.ts.map +1 -1
- package/dist/inspector-policy.js +2 -1
- package/dist/inspector-policy.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -4
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +4 -0
- package/dist/migrations.js.map +1 -1
- package/dist/modes/index.d.ts +2 -2
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts +2 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +10 -4
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +6 -5
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/cli-tips.d.ts.map +1 -1
- package/dist/modes/interactive/tips/catalog/cli-tips.js +2 -1
- package/dist/modes/interactive/tips/catalog/cli-tips.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/ethos-tips.d.ts.map +1 -1
- package/dist/modes/interactive/tips/catalog/ethos-tips.js +4 -3
- package/dist/modes/interactive/tips/catalog/ethos-tips.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/model-tips.d.ts.map +1 -1
- package/dist/modes/interactive/tips/catalog/model-tips.js +2 -1
- package/dist/modes/interactive/tips/catalog/model-tips.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/session-tips.d.ts.map +1 -1
- package/dist/modes/interactive/tips/catalog/session-tips.js +2 -1
- package/dist/modes/interactive/tips/catalog/session-tips.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/settings-tips.d.ts.map +1 -1
- package/dist/modes/interactive/tips/catalog/settings-tips.js +3 -2
- package/dist/modes/interactive/tips/catalog/settings-tips.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/workspace-tips.d.ts.map +1 -1
- package/dist/modes/interactive/tips/catalog/workspace-tips.js +4 -3
- package/dist/modes/interactive/tips/catalog/workspace-tips.js.map +1 -1
- package/dist/modes/provider-native-rendering.d.ts.map +1 -1
- package/dist/modes/provider-native-rendering.js +33 -0
- package/dist/modes/provider-native-rendering.js.map +1 -1
- package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
- package/dist/modes/rpc/connection-handler.js +148 -5
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/dist/modes/rpc/custom-capability.d.ts +1 -0
- package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
- package/dist/modes/rpc/custom-capability.js +1 -0
- package/dist/modes/rpc/custom-capability.js.map +1 -1
- package/dist/modes/rpc/multi-session-host.d.ts.map +1 -1
- package/dist/modes/rpc/multi-session-host.js +4 -1
- package/dist/modes/rpc/multi-session-host.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +5 -2
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +10 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +2 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +47 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modes/rpc/session-binding.d.ts +2 -1
- package/dist/modes/rpc/session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/session-binding.js +3 -2
- package/dist/modes/rpc/session-binding.js.map +1 -1
- package/dist/modes/rpc/session-command-router.d.ts +2 -1
- package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
- package/dist/modes/rpc/session-command-router.js +3 -2
- package/dist/modes/rpc/session-command-router.js.map +1 -1
- package/dist/nearest-parent-config.d.ts +6 -1
- package/dist/nearest-parent-config.d.ts.map +1 -1
- package/dist/nearest-parent-config.js +18 -2
- package/dist/nearest-parent-config.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +13 -1
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/rpc-entry.js +2 -0
- package/dist/rpc-entry.js.map +1 -1
- package/dist/self-update-bootstrap.d.ts.map +1 -1
- package/dist/self-update-bootstrap.js +6 -0
- package/dist/self-update-bootstrap.js.map +1 -1
- package/dist/senpi +3 -2
- package/dist/utils/pi-user-agent.d.ts +1 -1
- package/dist/utils/pi-user-agent.d.ts.map +1 -1
- package/dist/utils/pi-user-agent.js +4 -3
- package/dist/utils/pi-user-agent.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +2 -1
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +3 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +37 -6
- package/dist/utils/version-check.js.map +1 -1
- package/dist/valid-cwd.d.ts +2 -0
- package/dist/valid-cwd.d.ts.map +1 -0
- package/dist/valid-cwd.js +14 -0
- package/dist/valid-cwd.js.map +1 -0
- package/docs/environment-variables.md +8 -1
- package/docs/extensions.md +93 -13
- package/docs/mcp.md +2 -0
- package/docs/providers.md +2 -2
- package/docs/rpc.md +126 -0
- package/docs/skills.md +8 -0
- package/examples/extensions/searchable-tools.ts +49 -0
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +77 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/jl/kernel.ts +14 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/rb/kernel.ts +14 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/runtime-asset.ts +31 -0
- 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 +5 -1
- 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 +4 -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 +2 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +9 -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 +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +4 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.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 +7 -3
- 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-images.d.ts +8 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.js +222 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.lazy.d.ts +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.lazy.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.lazy.js +10 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-images.lazy.js.map +1 -0
- 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 +113 -4
- 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 +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.d.ts +5 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/types.d.ts +10 -0
- package/node_modules/@earendil-works/pi-ai/dist/auth/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/auth/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +47 -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 +47 -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 +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.js +36 -13
- 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 +2 -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.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/all.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/cloudflare-workers-ai.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/nvidia.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/openrouter.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/providers/images/register-builtins.d.ts +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.js +18 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-images.d.ts +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-images.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-images.js +16 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-images.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +1 -1
- 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.js +1 -1
- 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/retry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +7 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/wire-identity.d.ts +14 -0
- package/node_modules/@earendil-works/pi-ai/dist/wire-identity.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/wire-identity.js +24 -0
- package/node_modules/@earendil-works/pi-ai/dist/wire-identity.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/package.json +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.js +11 -3
- package/node_modules/@earendil-works/pi-pty/dist/pipe-fallback.js.map +1 -1
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +9 -9
- package/dist/core/extensions/builtin/mcp/expose/bm25.d.ts +0 -30
- package/dist/core/extensions/builtin/mcp/expose/bm25.d.ts.map +0 -1
- package/dist/core/extensions/builtin/mcp/expose/bm25.js.map +0 -1
- package/dist/core/extensions/builtin/mcp/expose/lazy-activate.d.ts +0 -15
- package/dist/core/extensions/builtin/mcp/expose/lazy-activate.d.ts.map +0 -1
- package/dist/core/extensions/builtin/mcp/expose/lazy-activate.js +0 -33
- package/dist/core/extensions/builtin/mcp/expose/lazy-activate.js.map +0 -1
- package/dist/core/extensions/builtin/mcp/expose/tool-search.d.ts +0 -43
- package/dist/core/extensions/builtin/mcp/expose/tool-search.d.ts.map +0 -1
- package/dist/core/extensions/builtin/mcp/expose/tool-search.js +0 -125
- package/dist/core/extensions/builtin/mcp/expose/tool-search.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExtensionFactory } from \"../types.ts\";\nimport anthropicBashExtension from \"./anthropic-bash/index.ts\";\nimport anthropicWebSearchExtension from \"./anthropic-web-search/index.ts\";\nimport bashTimeoutExtension from \"./bash-timeout/index.ts\";\nimport btwExtension from \"./btw/index.ts\";\nimport cacheKeepAliveExtension from \"./cache-keepalive/index.ts\";\nimport claudeSdkOauthExtension from \"./claude-sdk-oauth/index.ts\";\nimport compactionExtension from \"./compaction/index.ts\";\nimport configReloadExtension from \"./config-reload/index.ts\";\nimport diffExtension from \"./diff.ts\";\nimport filesExtension from \"./files.ts\";\nimport goalExtension from \"./goal/index.ts\";\nimport gptApplyPatchExtension from \"./gpt-apply-patch/index.ts\";\nimport helpExtension from \"./help/index.ts\";\nimport historySearchExtension from \"./history-search/index.ts\";\nimport hooksExtension from \"./hooks/index.ts\";\nimport imageGenExtension from \"./imagegen/index.ts\";\nimport importReproExtension from \"./import-repro.ts\";\nimport lookAtExtension from \"./look-at/index.ts\";\nimport loopGuardExtension from \"./loop-guard/index.ts\";\nimport mcpExtension from \"./mcp/index.ts\";\nimport modelFallbackExtension from \"./model-fallback/index.ts\";\nimport nestedAgentsMdExtension from \"./nested-agents-md/index.ts\";\nimport openaiImageGenExtension from \"./openai-image-gen/index.ts\";\nimport openaiWebSearchExtension from \"./openai-web-search/index.ts\";\nimport permissionSystemExtension from \"./permission-system/index.ts\";\nimport promptPresetExtension from \"./prompt-preset/index.ts\";\nimport promptUrlWidgetExtension from \"./prompt-url-widget.ts\";\nimport recommendedModelsExtension from \"./recommended-models/index.ts\";\nimport redrawsExtension from \"./redraws.ts\";\nimport piRulesExtension from \"./rules/index.ts\";\nimport serviceTierExtension from \"./service-tier.ts\";\nimport terminalExtension from \"./terminal/index.ts\";\nimport todowriteExtension from \"./todotools/index.ts\";\nimport toolPairGuardExtension from \"./tool-pair-guard/index.ts\";\nimport toolSearchExtension from \"./tool-search/index.ts\";\nimport tpsExtension from \"./tps.ts\";\nimport ttsrExtension from \"./ttsr/index.ts\";\nimport videoInExtension from \"./video-in/index.ts\";\nimport webfetchExtension from \"./webfetch/index.ts\";\nimport websearchExtension from \"./websearch/index.ts\";\n\nexport interface BuiltinExtensionFactory {\n\tid: string;\n\tfactory: ExtensionFactory;\n}\n\nexport const globalDefaultExtensionIds = [\"diff\", \"files\", \"prompt-url-widget\", \"tps\"] as const;\n\nexport const globalDefaultExtensionFactories = {\n\tdiff: diffExtension,\n\tfiles: filesExtension,\n\t\"prompt-url-widget\": promptUrlWidgetExtension,\n\ttps: tpsExtension,\n} satisfies Record<(typeof globalDefaultExtensionIds)[number], ExtensionFactory>;\n\nexport const builtinExtensions: BuiltinExtensionFactory[] = [\n\t{ id: \"hooks\", factory: hooksExtension },\n\t{ id: \"permission-system\", factory: permissionSystemExtension },\n\t{ id: \"gpt-apply-patch\", factory: gptApplyPatchExtension },\n\t{ id: \"imagegen\", factory: imageGenExtension },\n\t// Follows imagegen so the native injector's bypass wiring observes the registered client tool.\n\t{ id: \"openai-image-gen\", factory: openaiImageGenExtension },\n\t{ id: \"prompt-preset\", factory: promptPresetExtension },\n\t{ id: \"todowrite\", factory: todowriteExtension },\n\t{ id: \"redraws\", factory: redrawsExtension },\n\t{ id: \"anthropic-web-search\", factory: anthropicWebSearchExtension },\n\t{ id: \"anthropic-bash\", factory: anthropicBashExtension },\n\t{ id: \"openai-web-search\", factory: openaiWebSearchExtension },\n\t{ id: \"service-tier\", factory: serviceTierExtension },\n\t{ id: \"model-fallback\", factory: modelFallbackExtension },\n\t{ id: \"recommended-models\", factory: recommendedModelsExtension },\n\t{ id: \"bash-timeout\", factory: bashTimeoutExtension },\n\t// Terminal follows bash-timeout so its injected default reaches the PTY bash, and follows\n\t// anthropic-bash so mutual-exclusion (companion step-aside) is evaluated after it registers.\n\t{ id: \"terminal\", factory: terminalExtension },\n\t{ id: \"tool-pair-guard\", factory: toolPairGuardExtension },\n\t{ id: \"compaction\", factory: compactionExtension },\n\t{ id: \"history-search\", factory: historySearchExtension },\n\t{ id: \"help\", factory: helpExtension },\n\t{ id: \"import-repro\", factory: importReproExtension },\n\t{ id: \"websearch\", factory: websearchExtension },\n\t{ id: \"webfetch\", factory: webfetchExtension },\n\t{ id: \"video-in\", factory: videoInExtension },\n\t{ id: \"look-at\", factory: lookAtExtension },\n\t{ id: \"nested-agents-md\", factory: nestedAgentsMdExtension },\n\t{ id: \"rules\", factory: piRulesExtension },\n\t{ id: \"goal\", factory: goalExtension },\n\t{ id: \"cache-keepalive\", factory: cacheKeepAliveExtension },\n\t{ id: \"ttsr\", factory: ttsrExtension },\n\t{ id: \"btw\", factory: btwExtension },\n\t{ id: \"claude-sdk-oauth\", factory: claudeSdkOauthExtension },\n\t// Loop guard is a pure observer of tool_execution_start; it never mutates payloads, so it slots before config-reload and leaves MCP last.\n\t{ id: \"loop-guard\", factory: loopGuardExtension },\n\t// Config reload follows settings-dependent builtins so reloads rebuild their resolved settings before catalog feeders observe them.\n\t{ id: \"config-reload\", factory: configReloadExtension },\n\t// Shared catalog wiring loads before MCP, which feeds its tools into the shared catalog as the final builtin.\n\t{ id: \"tool-search\", factory: toolSearchExtension },\n\t// Keep MCP last so its eventual provider-payload tap observes all co-resident builtin mutations.\n\t{ id: \"mcp\", factory: mcpExtension },\n];\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { McpWireStatusSnapshot } from "./service-types.ts";
|
|
2
|
+
export declare const MCP_CONTROL_INVENTORY_REQUEST_EVENT = "senpi.rpc.mcp_inventory.request";
|
|
3
|
+
export declare const MCP_CONTROL_INVENTORY_CHANGED_EVENT = "senpi.rpc.mcp_inventory.changed";
|
|
4
|
+
export interface McpControlInventoryRequest {
|
|
5
|
+
readonly sessionId: string;
|
|
6
|
+
respond(snapshot: Promise<McpWireStatusSnapshot>): void;
|
|
7
|
+
}
|
|
8
|
+
export interface McpControlInventoryChanged {
|
|
9
|
+
readonly sessionId: string;
|
|
10
|
+
readonly snapshot: McpWireStatusSnapshot;
|
|
11
|
+
}
|
|
12
|
+
export declare function isMcpControlInventoryRequest(value: unknown): value is McpControlInventoryRequest;
|
|
13
|
+
export declare function isMcpControlInventoryChanged(value: unknown): value is McpControlInventoryChanged;
|
|
14
|
+
//# sourceMappingURL=control-inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-inventory.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/control-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,eAAO,MAAM,mCAAmC,oCAAoC,CAAC;AACrF,eAAO,MAAM,mCAAmC,oCAAoC,CAAC;AAErF,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;CACzC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,0BAA0B,CAShG;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,0BAA0B,CAShG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const MCP_CONTROL_INVENTORY_REQUEST_EVENT = "senpi.rpc.mcp_inventory.request";
|
|
2
|
+
export const MCP_CONTROL_INVENTORY_CHANGED_EVENT = "senpi.rpc.mcp_inventory.changed";
|
|
3
|
+
export function isMcpControlInventoryRequest(value) {
|
|
4
|
+
return (typeof value === "object" &&
|
|
5
|
+
value !== null &&
|
|
6
|
+
"sessionId" in value &&
|
|
7
|
+
typeof value.sessionId === "string" &&
|
|
8
|
+
"respond" in value &&
|
|
9
|
+
typeof value.respond === "function");
|
|
10
|
+
}
|
|
11
|
+
export function isMcpControlInventoryChanged(value) {
|
|
12
|
+
return (typeof value === "object" &&
|
|
13
|
+
value !== null &&
|
|
14
|
+
"sessionId" in value &&
|
|
15
|
+
typeof value.sessionId === "string" &&
|
|
16
|
+
"snapshot" in value &&
|
|
17
|
+
isMcpWireStatusSnapshot(value.snapshot));
|
|
18
|
+
}
|
|
19
|
+
function isMcpWireStatusSnapshot(value) {
|
|
20
|
+
return typeof value === "object" && value !== null && "servers" in value && Array.isArray(value.servers);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=control-inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-inventory.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/control-inventory.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mCAAmC,GAAG,iCAAiC,CAAC;AACrF,MAAM,CAAC,MAAM,mCAAmC,GAAG,iCAAiC,CAAC;AAYrF,MAAM,UAAU,4BAA4B,CAAC,KAAc;IAC1D,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,WAAW,IAAI,KAAK;QACpB,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,SAAS,IAAI,KAAK;QAClB,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,CACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAc;IAC1D,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,WAAW,IAAI,KAAK;QACpB,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,UAAU,IAAI,KAAK;QACnB,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CACvC,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1G,CAAC","sourcesContent":["import type { McpWireStatusSnapshot } from \"./service-types.ts\";\n\nexport const MCP_CONTROL_INVENTORY_REQUEST_EVENT = \"senpi.rpc.mcp_inventory.request\";\nexport const MCP_CONTROL_INVENTORY_CHANGED_EVENT = \"senpi.rpc.mcp_inventory.changed\";\n\nexport interface McpControlInventoryRequest {\n\treadonly sessionId: string;\n\trespond(snapshot: Promise<McpWireStatusSnapshot>): void;\n}\n\nexport interface McpControlInventoryChanged {\n\treadonly sessionId: string;\n\treadonly snapshot: McpWireStatusSnapshot;\n}\n\nexport function isMcpControlInventoryRequest(value: unknown): value is McpControlInventoryRequest {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"sessionId\" in value &&\n\t\ttypeof value.sessionId === \"string\" &&\n\t\t\"respond\" in value &&\n\t\ttypeof value.respond === \"function\"\n\t);\n}\n\nexport function isMcpControlInventoryChanged(value: unknown): value is McpControlInventoryChanged {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"sessionId\" in value &&\n\t\ttypeof value.sessionId === \"string\" &&\n\t\t\"snapshot\" in value &&\n\t\tisMcpWireStatusSnapshot(value.snapshot)\n\t);\n}\n\nfunction isMcpWireStatusSnapshot(value: unknown): value is McpWireStatusSnapshot {\n\treturn typeof value === \"object\" && value !== null && \"servers\" in value && Array.isArray(value.servers);\n}\n"]}
|
|
@@ -1,45 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
/** Anthropic caps a request at 10k tools; beyond that native search is invalid. */
|
|
4
|
-
export declare const ANTHROPIC_MAX_TOOLS = 10000;
|
|
5
|
-
export interface AnthropicNativeInjectionConfig {
|
|
6
|
-
/** Never defer this tool (our custom tool_search), and it is non-deferrable. */
|
|
7
|
-
readonly searchToolName?: string;
|
|
8
|
-
/** True for MCP catalog tools eligible for deferral. */
|
|
9
|
-
readonly isDeferrable: (toolName: string) => boolean;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Pure payload transform. Adds exactly one native tool-search tool (idempotent)
|
|
13
|
-
* and sets `defer_loading:true` on eligible MCP tools, enforcing the HARD RULES:
|
|
14
|
-
* never defer the search tool, never combine defer_loading with cache_control
|
|
15
|
-
* (400), keep >=1 non-deferred tool (the native search tool guarantees this),
|
|
16
|
-
* and skip entirely above the 10k tool cap.
|
|
17
|
-
*/
|
|
18
|
-
export declare function addAnthropicNativeToolSearch(api: string | undefined, payload: unknown, config: AnthropicNativeInjectionConfig): unknown;
|
|
19
|
-
/** `tool_reference` blocks emitted inside a tool_result so the API expands the
|
|
20
|
-
* referenced (deferred) tools — the cache-prefix-safe custom-search path. */
|
|
21
|
-
export declare function buildToolReferenceBlocks(names: readonly string[]): {
|
|
22
|
-
type: "tool_reference";
|
|
23
|
-
name: string;
|
|
24
|
-
}[];
|
|
25
|
-
export interface AnthropicNativeAdapterDeps extends AnthropicNativeInjectionConfig {
|
|
26
|
-
/** Resolved config gate (nativeToolSearch auto|true AND provider supports). */
|
|
27
|
-
enabled(): boolean;
|
|
28
|
-
/** Invoked once when a 400 forces the local-search fallback. */
|
|
29
|
-
onFallback?(reason: string): void;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Stateful adapter driving the before_provider_request injection and the
|
|
33
|
-
* after_provider_response 400 detector. Once a 400 lands on a request we
|
|
34
|
-
* injected, native search is disabled for the rest of the session and the
|
|
35
|
-
* extension falls back to local Tier-B (which is always registered).
|
|
36
|
-
*/
|
|
37
|
-
export declare class AnthropicNativeToolSearchAdapter {
|
|
38
|
-
#private;
|
|
39
|
-
constructor(deps: AnthropicNativeAdapterDeps);
|
|
40
|
-
applyBeforeRequest(api: string | undefined, payload: unknown): unknown;
|
|
41
|
-
noteResponseStatus(status: number): void;
|
|
42
|
-
get disabled(): boolean;
|
|
43
|
-
get fallbackReason(): string | null;
|
|
44
|
-
}
|
|
1
|
+
export type { AnthropicNativeAdapterDeps, AnthropicNativeInjectionConfig, NativeToolDefinition, } from "../../tool-search/native-search.ts";
|
|
2
|
+
export { ANTHROPIC_MAX_TOOLS, ANTHROPIC_TOOL_SEARCH_NAME, ANTHROPIC_TOOL_SEARCH_TYPE, AnthropicNativeToolSearchAdapter, addAnthropicNativeToolSearch, buildToolReferenceBlocks, } from "../../tool-search/native-search.ts";
|
|
45
3
|
//# sourceMappingURL=native-search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-search.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/native-search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"native-search.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/native-search.ts"],"names":[],"mappings":"AAGA,YAAY,EACX,0BAA0B,EAC1B,8BAA8B,EAC9B,oBAAoB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACN,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,4BAA4B,EAC5B,wBAAwB,GACxB,MAAM,oCAAoC,CAAC"}
|
|
@@ -1,98 +1,4 @@
|
|
|
1
|
-
// Native
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
// server_tool_use / tool_search_tool_result blocks round-trip pi-ai's
|
|
5
|
-
// parse->persist->re-serialise cycle untouched (native-search-spike.md), so this
|
|
6
|
-
// adapter injects request-side fields via the extension before_provider_request
|
|
7
|
-
// event ONLY (the sole ExtensionAPI payload surface) with no pi-ai change.
|
|
8
|
-
//
|
|
9
|
-
// It injects Anthropic's native `tool_search_tool_bm25_20251119` tool and marks
|
|
10
|
-
// deferrable MCP tools `defer_loading:true`, honouring the API HARD RULES, and
|
|
11
|
-
// auto-falls-back to local Tier-B on a 400. The OpenAI half is deferred
|
|
12
|
-
// (spike = GO-with-ai-seam; see native-search-spike.md).
|
|
13
|
-
export const ANTHROPIC_TOOL_SEARCH_TYPE = "tool_search_tool_bm25_20251119";
|
|
14
|
-
export const ANTHROPIC_TOOL_SEARCH_NAME = "tool_search";
|
|
15
|
-
/** Anthropic caps a request at 10k tools; beyond that native search is invalid. */
|
|
16
|
-
export const ANTHROPIC_MAX_TOOLS = 10000;
|
|
17
|
-
function isRecord(value) {
|
|
18
|
-
return typeof value === "object" && value !== null;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Pure payload transform. Adds exactly one native tool-search tool (idempotent)
|
|
22
|
-
* and sets `defer_loading:true` on eligible MCP tools, enforcing the HARD RULES:
|
|
23
|
-
* never defer the search tool, never combine defer_loading with cache_control
|
|
24
|
-
* (400), keep >=1 non-deferred tool (the native search tool guarantees this),
|
|
25
|
-
* and skip entirely above the 10k tool cap.
|
|
26
|
-
*/
|
|
27
|
-
export function addAnthropicNativeToolSearch(api, payload, config) {
|
|
28
|
-
if (api !== "anthropic-messages" || !isRecord(payload))
|
|
29
|
-
return payload;
|
|
30
|
-
const tools = Array.isArray(payload.tools) ? payload.tools : [];
|
|
31
|
-
if (tools.length > ANTHROPIC_MAX_TOOLS)
|
|
32
|
-
return payload;
|
|
33
|
-
const deferred = tools.map((tool) => maybeDefer(tool, config));
|
|
34
|
-
const hasSearchTool = deferred.some((tool) => isRecord(tool) && tool.type === ANTHROPIC_TOOL_SEARCH_TYPE);
|
|
35
|
-
const nextTools = hasSearchTool
|
|
36
|
-
? deferred
|
|
37
|
-
: [...deferred, { type: ANTHROPIC_TOOL_SEARCH_TYPE, name: ANTHROPIC_TOOL_SEARCH_NAME }];
|
|
38
|
-
return { ...payload, tools: nextTools };
|
|
39
|
-
}
|
|
40
|
-
function maybeDefer(tool, config) {
|
|
41
|
-
if (!isRecord(tool))
|
|
42
|
-
return tool;
|
|
43
|
-
const name = typeof tool.name === "string" ? tool.name : undefined;
|
|
44
|
-
if (name === undefined)
|
|
45
|
-
return tool; // server/native tools are type-based, never deferred
|
|
46
|
-
if (name === config.searchToolName)
|
|
47
|
-
return tool; // never defer the search tool
|
|
48
|
-
if (!config.isDeferrable(name))
|
|
49
|
-
return tool; // non-MCP tools untouched
|
|
50
|
-
if ("cache_control" in tool)
|
|
51
|
-
return tool; // never defer_loading + cache_control (400)
|
|
52
|
-
if (tool.defer_loading === true)
|
|
53
|
-
return tool; // idempotent
|
|
54
|
-
return { ...tool, defer_loading: true };
|
|
55
|
-
}
|
|
56
|
-
/** `tool_reference` blocks emitted inside a tool_result so the API expands the
|
|
57
|
-
* referenced (deferred) tools — the cache-prefix-safe custom-search path. */
|
|
58
|
-
export function buildToolReferenceBlocks(names) {
|
|
59
|
-
return names.map((name) => ({ type: "tool_reference", name }));
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Stateful adapter driving the before_provider_request injection and the
|
|
63
|
-
* after_provider_response 400 detector. Once a 400 lands on a request we
|
|
64
|
-
* injected, native search is disabled for the rest of the session and the
|
|
65
|
-
* extension falls back to local Tier-B (which is always registered).
|
|
66
|
-
*/
|
|
67
|
-
export class AnthropicNativeToolSearchAdapter {
|
|
68
|
-
#disabled = false;
|
|
69
|
-
#injectedLastRequest = false;
|
|
70
|
-
#fallbackReason = null;
|
|
71
|
-
#deps;
|
|
72
|
-
constructor(deps) {
|
|
73
|
-
this.#deps = deps;
|
|
74
|
-
}
|
|
75
|
-
applyBeforeRequest(api, payload) {
|
|
76
|
-
this.#injectedLastRequest = false;
|
|
77
|
-
if (this.#disabled || !this.#deps.enabled())
|
|
78
|
-
return payload;
|
|
79
|
-
const next = addAnthropicNativeToolSearch(api, payload, this.#deps);
|
|
80
|
-
this.#injectedLastRequest = next !== payload;
|
|
81
|
-
return next;
|
|
82
|
-
}
|
|
83
|
-
noteResponseStatus(status) {
|
|
84
|
-
if (status !== 400 || !this.#injectedLastRequest || this.#disabled)
|
|
85
|
-
return;
|
|
86
|
-
this.#disabled = true;
|
|
87
|
-
this.#fallbackReason =
|
|
88
|
-
"Anthropic returned 400 for native tool-search; disabled it and fell back to local tool_search for this session.";
|
|
89
|
-
this.#deps.onFallback?.(this.#fallbackReason);
|
|
90
|
-
}
|
|
91
|
-
get disabled() {
|
|
92
|
-
return this.#disabled;
|
|
93
|
-
}
|
|
94
|
-
get fallbackReason() {
|
|
95
|
-
return this.#fallbackReason;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
1
|
+
// Compatibility re-export. Native Anthropic tool-search ownership moved to the
|
|
2
|
+
// shared tool-search builtin; MCP now contributes only its setting gate.
|
|
3
|
+
export { ANTHROPIC_MAX_TOOLS, ANTHROPIC_TOOL_SEARCH_NAME, ANTHROPIC_TOOL_SEARCH_TYPE, AnthropicNativeToolSearchAdapter, addAnthropicNativeToolSearch, buildToolReferenceBlocks, } from "../../tool-search/native-search.js";
|
|
98
4
|
//# sourceMappingURL=native-search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-search.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/native-search.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"native-search.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/native-search.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yEAAyE;AAOzE,OAAO,EACN,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,4BAA4B,EAC5B,wBAAwB,GACxB,MAAM,oCAAoC,CAAC","sourcesContent":["// Compatibility re-export. Native Anthropic tool-search ownership moved to the\n// shared tool-search builtin; MCP now contributes only its setting gate.\n\nexport type {\n\tAnthropicNativeAdapterDeps,\n\tAnthropicNativeInjectionConfig,\n\tNativeToolDefinition,\n} from \"../../tool-search/native-search.ts\";\nexport {\n\tANTHROPIC_MAX_TOOLS,\n\tANTHROPIC_TOOL_SEARCH_NAME,\n\tANTHROPIC_TOOL_SEARCH_TYPE,\n\tAnthropicNativeToolSearchAdapter,\n\taddAnthropicNativeToolSearch,\n\tbuildToolReferenceBlocks,\n} from \"../../tool-search/native-search.ts\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/proxy.ts"],"names":[],"mappings":"AAaA,OAAO,EAAe,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/proxy.ts"],"names":[],"mappings":"AAaA,OAAO,EAAe,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAA0B,KAAK,cAAc,EAAsB,MAAM,eAAe,CAAC;AAEhG,QAAA,MAAM,YAAY;;;;;EAWhB,CAAC;AAIH,KAAK,YAAY,GAAG,cAAc,CAAC,OAAO,YAAY,EAAE,cAAc,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;AAE7F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,mBAAmB,EAAE,GAAG,YAAY,CAqExG"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
// self-correct; unknown tool names get nearest-match suggestions.
|
|
11
11
|
import { Text } from "@earendil-works/pi-tui";
|
|
12
12
|
import { Type } from "typebox";
|
|
13
|
-
import { buildBm25Index } from "
|
|
13
|
+
import { buildBm25Index } from "../../tool-search/engine/bm25.js";
|
|
14
|
+
import { deriveMcpRegistrationId } from "../../tool-search/engine/marker.js";
|
|
14
15
|
import { executeMcpCatalogEntry, mapMcpCatalogNames } from "./register.js";
|
|
15
16
|
const ParamsSchema = Type.Object({
|
|
16
17
|
op: Type.Union([Type.Literal("search"), Type.Literal("describe"), Type.Literal("call")], {
|
|
@@ -25,7 +26,17 @@ const ParamsSchema = Type.Object({
|
|
|
25
26
|
export function createMcpProxyTool(server, entries) {
|
|
26
27
|
const named = mapMcpCatalogNames(entries);
|
|
27
28
|
const byTool = new Map(named.map(({ entry }) => [entry.tool, entry]));
|
|
28
|
-
const index = buildBm25Index(named.map(({ entry, name }) => ({
|
|
29
|
+
const index = buildBm25Index(named.map(({ entry, name }) => ({
|
|
30
|
+
name,
|
|
31
|
+
label: entry.tool,
|
|
32
|
+
aliases: [entry.tool],
|
|
33
|
+
description: entry.description,
|
|
34
|
+
keywords: [],
|
|
35
|
+
source: "mcp",
|
|
36
|
+
group: server,
|
|
37
|
+
ownerLabel: server,
|
|
38
|
+
registrationId: deriveMcpRegistrationId(server, entry.tool),
|
|
39
|
+
})));
|
|
29
40
|
const name = named[0]?.name.split("_").slice(0, 2).join("_") ?? `mcp_${server}`;
|
|
30
41
|
return {
|
|
31
42
|
name,
|
|
@@ -40,7 +51,7 @@ export function createMcpProxyTool(server, entries) {
|
|
|
40
51
|
const body = matches.length === 0
|
|
41
52
|
? `No '${server}' tools matched. Try broader keywords or op:"describe" with an exact tool name.`
|
|
42
53
|
: matches
|
|
43
|
-
.map((match) => `- ${match.doc.
|
|
54
|
+
.map((match) => `- ${match.doc.label} — ${match.doc.description ?? "(no description)"}`)
|
|
44
55
|
.join("\n");
|
|
45
56
|
return textResult(server, `Tools on '${server}':\n${body}`);
|
|
46
57
|
}
|
|
@@ -79,7 +90,7 @@ function textResult(server, text) {
|
|
|
79
90
|
}
|
|
80
91
|
function unknownToolText(server, tool, index) {
|
|
81
92
|
const nearest = tool === undefined ? [] : index.search(tool, 3, {});
|
|
82
|
-
const hint = nearest.length === 0 ? "" : ` Nearest matches: ${nearest.map((match) => match.doc.
|
|
93
|
+
const hint = nearest.length === 0 ? "" : ` Nearest matches: ${nearest.map((match) => match.doc.label).join(", ")}.`;
|
|
83
94
|
return `Unknown tool '${tool ?? "(missing)"}' on '${server}'.${hint} Use op:"search" to list tools.`;
|
|
84
95
|
}
|
|
85
96
|
function firstLine(text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/proxy.ts"],"names":[],"mappings":"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","sourcesContent":["// Tier-C proxy mode (todo 38): per-server OPT-IN (`exposure:\"proxy\"`).\n//\n// The whole server catalog hides behind ONE always-active `mcp_<server>`\n// gateway tool with three ops: search (BM25 over this server's catalog),\n// describe (schema + description for one tool), call (tool + args as a JSON\n// STRING). The JSON-string args deliberately trade provider strict-mode\n// validation for a ~200-token footprint (SPEC §5: -27.3pp GSM8K structured\n// output under proxy) — which is why auto NEVER selects this mode. Errors are\n// returned as guiding text (never thrown for user mistakes) so the model can\n// self-correct; unknown tool names get nearest-match suggestions.\n\nimport type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport { Text } from \"@earendil-works/pi-tui\";\nimport { type Static, Type } from \"typebox\";\nimport type { ToolDefinition } from \"../../../types.ts\";\nimport type { McpToolCatalogEntry } from \"../catalog.ts\";\nimport { buildBm25Index } from \"./bm25.ts\";\nimport { executeMcpCatalogEntry, type McpToolDetails, mapMcpCatalogNames } from \"./register.ts\";\n\nconst ParamsSchema = Type.Object({\n\top: Type.Union([Type.Literal(\"search\"), Type.Literal(\"describe\"), Type.Literal(\"call\")], {\n\t\tdescription: \"search: rank tools by capability; describe: full schema for one tool; call: invoke a tool.\",\n\t}),\n\tquery: Type.Optional(Type.String({ description: \"search: capability description to rank tools by.\" })),\n\ttool: Type.Optional(Type.String({ description: \"describe/call: the server-side tool name.\" })),\n\targs: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: 'call: tool arguments as a JSON object STRING, e.g. \"{\\\\\"path\\\\\": \\\\\"a.txt\\\\\"}\".',\n\t\t}),\n\t),\n});\ntype Params = Static<typeof ParamsSchema>;\n\ntype ProxyResult = AgentToolResult<McpToolDetails | undefined>;\ntype McpProxyTool = ToolDefinition<typeof ParamsSchema, McpToolDetails | undefined, unknown>;\n\nexport function createMcpProxyTool(server: string, entries: readonly McpToolCatalogEntry[]): McpProxyTool {\n\tconst named = mapMcpCatalogNames(entries);\n\tconst byTool = new Map(named.map(({ entry }) => [entry.tool, entry] as const));\n\tconst index = buildBm25Index(\n\t\tnamed.map(({ entry, name }) => ({ description: entry.description, name, server, toolName: entry.tool })),\n\t);\n\tconst name = named[0]?.name.split(\"_\").slice(0, 2).join(\"_\") ?? `mcp_${server}`;\n\treturn {\n\t\tname,\n\t\tlabel: `MCP proxy for ${server}`,\n\t\tdescription: `Gateway to the '${server}' MCP server (${entries.length} tools). Use op:\"search\" with a query to find tools, op:\"describe\" with a tool name for its schema, then op:\"call\" with tool + args (args is a JSON object STRING — no strict validation, so match the described schema exactly).`,\n\t\tpromptSnippet: `Proxy for the ${server} MCP server: search -> describe -> call (args as a JSON string).`,\n\t\tparameters: ParamsSchema,\n\t\texecutionMode: \"parallel\",\n\t\tasync execute(_toolCallId, params: Params, signal, onUpdate): Promise<ProxyResult> {\n\t\t\tif (params.op === \"search\") {\n\t\t\t\tconst matches = index.search(params.query ?? \"\", 10, {});\n\t\t\t\tconst body =\n\t\t\t\t\tmatches.length === 0\n\t\t\t\t\t\t? `No '${server}' tools matched. Try broader keywords or op:\"describe\" with an exact tool name.`\n\t\t\t\t\t\t: matches\n\t\t\t\t\t\t\t\t.map((match) => `- ${match.doc.toolName} — ${match.doc.description ?? \"(no description)\"}`)\n\t\t\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\treturn textResult(server, `Tools on '${server}':\\n${body}`);\n\t\t\t}\n\t\t\tconst entry = params.tool === undefined ? undefined : byTool.get(params.tool);\n\t\t\tif (entry === undefined) {\n\t\t\t\treturn textResult(server, unknownToolText(server, params.tool, index));\n\t\t\t}\n\t\t\tif (params.op === \"describe\") {\n\t\t\t\treturn textResult(\n\t\t\t\t\tserver,\n\t\t\t\t\t`${entry.tool}: ${entry.description ?? \"(no description)\"}\\nInput schema (JSON Schema):\\n${JSON.stringify(entry.schema ?? {}, null, 2)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tlet args: Record<string, unknown>;\n\t\t\ttry {\n\t\t\t\tconst parsed: unknown = JSON.parse(params.args ?? \"{}\");\n\t\t\t\tif (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n\t\t\t\t\tthrow new Error(\"args must encode a JSON object\");\n\t\t\t\t}\n\t\t\t\targs = parsed as Record<string, unknown>;\n\t\t\t} catch (error) {\n\t\t\t\treturn textResult(\n\t\t\t\t\tserver,\n\t\t\t\t\t`Invalid args for '${entry.tool}': ${error instanceof Error ? error.message : String(error)}. Pass args as a JSON object STRING matching the schema from op:\"describe\", e.g. {\"op\":\"call\",\"tool\":\"${entry.tool}\",\"args\":\"{\\\\\"key\\\\\": \\\\\"value\\\\\"}\"}.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await executeMcpCatalogEntry(entry, args, signal, onUpdate);\n\t\t},\n\t\trenderCall(args, theme) {\n\t\t\tconst detail = args.op === \"search\" ? (args.query ?? \"\") : (args.tool ?? \"\");\n\t\t\treturn new Text(theme.fg(\"toolTitle\", theme.bold(`${name} ${args.op} ${detail}`.trim())), 0, 0);\n\t\t},\n\t\trenderResult(result, options, theme) {\n\t\t\tconst title = options.isPartial ? `${name}: running` : `${name}: ${result.details?.preview ?? \"done\"}`;\n\t\t\treturn new Text(theme.fg(\"toolOutput\", title), 0, 0);\n\t\t},\n\t};\n}\n\nfunction textResult(server: string, text: string): ProxyResult {\n\treturn { content: [{ type: \"text\", text }], details: { preview: firstLine(text), server, tool: \"proxy\" } };\n}\n\nfunction unknownToolText(server: string, tool: string | undefined, index: ReturnType<typeof buildBm25Index>): string {\n\tconst nearest = tool === undefined ? [] : index.search(tool, 3, {});\n\tconst hint =\n\t\tnearest.length === 0 ? \"\" : ` Nearest matches: ${nearest.map((match) => match.doc.toolName).join(\", \")}.`;\n\treturn `Unknown tool '${tool ?? \"(missing)\"}' on '${server}'.${hint} Use op:\"search\" to list tools.`;\n}\n\nfunction firstLine(text: string): string {\n\treturn text.split(\"\\n\", 1)[0].slice(0, 80);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/proxy.ts"],"names":[],"mappings":"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","sourcesContent":["// Tier-C proxy mode (todo 38): per-server OPT-IN (`exposure:\"proxy\"`).\n//\n// The whole server catalog hides behind ONE always-active `mcp_<server>`\n// gateway tool with three ops: search (BM25 over this server's catalog),\n// describe (schema + description for one tool), call (tool + args as a JSON\n// STRING). The JSON-string args deliberately trade provider strict-mode\n// validation for a ~200-token footprint (SPEC §5: -27.3pp GSM8K structured\n// output under proxy) — which is why auto NEVER selects this mode. Errors are\n// returned as guiding text (never thrown for user mistakes) so the model can\n// self-correct; unknown tool names get nearest-match suggestions.\n\nimport type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport { Text } from \"@earendil-works/pi-tui\";\nimport { type Static, Type } from \"typebox\";\nimport type { ToolDefinition } from \"../../../types.ts\";\nimport { buildBm25Index } from \"../../tool-search/engine/bm25.ts\";\nimport { deriveMcpRegistrationId } from \"../../tool-search/engine/marker.ts\";\nimport type { McpToolCatalogEntry } from \"../catalog.ts\";\nimport { executeMcpCatalogEntry, type McpToolDetails, mapMcpCatalogNames } from \"./register.ts\";\n\nconst ParamsSchema = Type.Object({\n\top: Type.Union([Type.Literal(\"search\"), Type.Literal(\"describe\"), Type.Literal(\"call\")], {\n\t\tdescription: \"search: rank tools by capability; describe: full schema for one tool; call: invoke a tool.\",\n\t}),\n\tquery: Type.Optional(Type.String({ description: \"search: capability description to rank tools by.\" })),\n\ttool: Type.Optional(Type.String({ description: \"describe/call: the server-side tool name.\" })),\n\targs: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: 'call: tool arguments as a JSON object STRING, e.g. \"{\\\\\"path\\\\\": \\\\\"a.txt\\\\\"}\".',\n\t\t}),\n\t),\n});\ntype Params = Static<typeof ParamsSchema>;\n\ntype ProxyResult = AgentToolResult<McpToolDetails | undefined>;\ntype McpProxyTool = ToolDefinition<typeof ParamsSchema, McpToolDetails | undefined, unknown>;\n\nexport function createMcpProxyTool(server: string, entries: readonly McpToolCatalogEntry[]): McpProxyTool {\n\tconst named = mapMcpCatalogNames(entries);\n\tconst byTool = new Map(named.map(({ entry }) => [entry.tool, entry] as const));\n\tconst index = buildBm25Index(\n\t\tnamed.map(({ entry, name }) => ({\n\t\t\tname,\n\t\t\tlabel: entry.tool,\n\t\t\taliases: [entry.tool],\n\t\t\tdescription: entry.description,\n\t\t\tkeywords: [],\n\t\t\tsource: \"mcp\" as const,\n\t\t\tgroup: server,\n\t\t\townerLabel: server,\n\t\t\tregistrationId: deriveMcpRegistrationId(server, entry.tool),\n\t\t})),\n\t);\n\tconst name = named[0]?.name.split(\"_\").slice(0, 2).join(\"_\") ?? `mcp_${server}`;\n\treturn {\n\t\tname,\n\t\tlabel: `MCP proxy for ${server}`,\n\t\tdescription: `Gateway to the '${server}' MCP server (${entries.length} tools). Use op:\"search\" with a query to find tools, op:\"describe\" with a tool name for its schema, then op:\"call\" with tool + args (args is a JSON object STRING — no strict validation, so match the described schema exactly).`,\n\t\tpromptSnippet: `Proxy for the ${server} MCP server: search -> describe -> call (args as a JSON string).`,\n\t\tparameters: ParamsSchema,\n\t\texecutionMode: \"parallel\",\n\t\tasync execute(_toolCallId, params: Params, signal, onUpdate): Promise<ProxyResult> {\n\t\t\tif (params.op === \"search\") {\n\t\t\t\tconst matches = index.search(params.query ?? \"\", 10, {});\n\t\t\t\tconst body =\n\t\t\t\t\tmatches.length === 0\n\t\t\t\t\t\t? `No '${server}' tools matched. Try broader keywords or op:\"describe\" with an exact tool name.`\n\t\t\t\t\t\t: matches\n\t\t\t\t\t\t\t\t.map((match) => `- ${match.doc.label} — ${match.doc.description ?? \"(no description)\"}`)\n\t\t\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\treturn textResult(server, `Tools on '${server}':\\n${body}`);\n\t\t\t}\n\t\t\tconst entry = params.tool === undefined ? undefined : byTool.get(params.tool);\n\t\t\tif (entry === undefined) {\n\t\t\t\treturn textResult(server, unknownToolText(server, params.tool, index));\n\t\t\t}\n\t\t\tif (params.op === \"describe\") {\n\t\t\t\treturn textResult(\n\t\t\t\t\tserver,\n\t\t\t\t\t`${entry.tool}: ${entry.description ?? \"(no description)\"}\\nInput schema (JSON Schema):\\n${JSON.stringify(entry.schema ?? {}, null, 2)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tlet args: Record<string, unknown>;\n\t\t\ttry {\n\t\t\t\tconst parsed: unknown = JSON.parse(params.args ?? \"{}\");\n\t\t\t\tif (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n\t\t\t\t\tthrow new Error(\"args must encode a JSON object\");\n\t\t\t\t}\n\t\t\t\targs = parsed as Record<string, unknown>;\n\t\t\t} catch (error) {\n\t\t\t\treturn textResult(\n\t\t\t\t\tserver,\n\t\t\t\t\t`Invalid args for '${entry.tool}': ${error instanceof Error ? error.message : String(error)}. Pass args as a JSON object STRING matching the schema from op:\"describe\", e.g. {\"op\":\"call\",\"tool\":\"${entry.tool}\",\"args\":\"{\\\\\"key\\\\\": \\\\\"value\\\\\"}\"}.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await executeMcpCatalogEntry(entry, args, signal, onUpdate);\n\t\t},\n\t\trenderCall(args, theme) {\n\t\t\tconst detail = args.op === \"search\" ? (args.query ?? \"\") : (args.tool ?? \"\");\n\t\t\treturn new Text(theme.fg(\"toolTitle\", theme.bold(`${name} ${args.op} ${detail}`.trim())), 0, 0);\n\t\t},\n\t\trenderResult(result, options, theme) {\n\t\t\tconst title = options.isPartial ? `${name}: running` : `${name}: ${result.details?.preview ?? \"done\"}`;\n\t\t\treturn new Text(theme.fg(\"toolOutput\", title), 0, 0);\n\t\t},\n\t};\n}\n\nfunction textResult(server: string, text: string): ProxyResult {\n\treturn { content: [{ type: \"text\", text }], details: { preview: firstLine(text), server, tool: \"proxy\" } };\n}\n\nfunction unknownToolText(server: string, tool: string | undefined, index: ReturnType<typeof buildBm25Index>): string {\n\tconst nearest = tool === undefined ? [] : index.search(tool, 3, {});\n\tconst hint = nearest.length === 0 ? \"\" : ` Nearest matches: ${nearest.map((match) => match.doc.label).join(\", \")}.`;\n\treturn `Unknown tool '${tool ?? \"(missing)\"}' on '${server}'.${hint} Use op:\"search\" to list tools.`;\n}\n\nfunction firstLine(text: string): string {\n\treturn text.split(\"\\n\", 1)[0].slice(0, 80);\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "../../../types.ts";
|
|
2
|
+
import type { ToolSearchService } from "../../tool-search/service.ts";
|
|
2
3
|
import type { McpCachedServerCatalog } from "../catalog-cache.ts";
|
|
3
4
|
import type { ResolvedMcpConfig } from "../config-schema.ts";
|
|
4
5
|
import type { ServerConnection } from "../connection.ts";
|
|
@@ -22,5 +23,5 @@ export interface McpDirectRegistrationEntry {
|
|
|
22
23
|
readonly ensureFresh?: () => Promise<void>;
|
|
23
24
|
readonly ensureCachedToolConnected?: () => Promise<void>;
|
|
24
25
|
}
|
|
25
|
-
export declare function registerDirectMcpTools(pi: Pick<ExtensionAPI, "getActiveTools" | "setActiveTools" | "registerTool">, config: ResolvedMcpConfig, entries: Iterable<McpDirectRegistrationEntry>, options?: McpCatalogRegistrationOptions): Promise<McpSessionRegistration | undefined>;
|
|
26
|
+
export declare function registerDirectMcpTools(pi: Pick<ExtensionAPI, "getActiveTools" | "setActiveTools" | "registerTool">, config: ResolvedMcpConfig, entries: Iterable<McpDirectRegistrationEntry>, toolSearchService: ToolSearchService, options?: McpCatalogRegistrationOptions): Promise<McpSessionRegistration | undefined>;
|
|
26
27
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,KAAK,oBAAoB,EAAyB,MAAM,aAAa,CAAC;AAE/E,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IAC3D,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,aAAa,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,wBAAsB,sBAAsB,CAC3C,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,CAAC,EAC5E,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EAC7C,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,6BAAkC,GACzC,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CA+E7C"}
|
|
@@ -3,7 +3,7 @@ import { createMcpLogger } from "../log.js";
|
|
|
3
3
|
import { createMcpResourceTools } from "../resources.js";
|
|
4
4
|
import { computeMcpExposurePolicy } from "./policy.js";
|
|
5
5
|
import { registerMcpTierBTools } from "./tier-b.js";
|
|
6
|
-
export async function registerDirectMcpTools(pi, config, entries, options = {}) {
|
|
6
|
+
export async function registerDirectMcpTools(pi, config, entries, toolSearchService, options = {}) {
|
|
7
7
|
const registeredEntries = [];
|
|
8
8
|
const activeEntries = [];
|
|
9
9
|
let searchMode = false;
|
|
@@ -69,7 +69,7 @@ export async function registerDirectMcpTools(pi, config, entries, options = {})
|
|
|
69
69
|
return undefined;
|
|
70
70
|
}
|
|
71
71
|
const utilityTools = resourceServers.length > 0 ? createMcpResourceTools(() => resourceServers) : [];
|
|
72
|
-
const registration = registerMcpTierBTools(pi, { activeEntries, proxyGateways, registeredEntries, searchMode, settings: config.settings, utilityTools }, (message) => createMcpLogger("service").warn(message));
|
|
72
|
+
const registration = registerMcpTierBTools(pi, { activeEntries, proxyGateways, registeredEntries, searchMode, settings: config.settings, utilityTools }, toolSearchService, (message) => createMcpLogger("service").warn(message));
|
|
73
73
|
return { ...registration, promptServers, resourceServers };
|
|
74
74
|
}
|
|
75
75
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/session.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExtensionAPI } from \"../../../types.ts\";\nimport type { ToolSearchService } from \"../../tool-search/service.ts\";\nimport { cachedToolsToCatalogEntries, collectToolCatalog, type McpToolCatalogEntry } from \"../catalog.ts\";\nimport type { McpCachedServerCatalog } from \"../catalog-cache.ts\";\nimport type { ResolvedMcpConfig } from \"../config-schema.ts\";\nimport type { ServerConnection } from \"../connection.ts\";\nimport type { McpOutputArtifacts } from \"../guard/output-guard.ts\";\nimport { createMcpLogger, type McpLogger } from \"../log.ts\";\nimport type { McpPromptServer } from \"../prompts.ts\";\nimport { createMcpResourceTools, type McpResourceServer } from \"../resources.ts\";\nimport { computeMcpExposurePolicy } from \"./policy.ts\";\nimport type { McpCatalogRegistrationOptions } from \"./register.ts\";\nimport { type McpTierBRegistration, registerMcpTierBTools } from \"./tier-b.ts\";\n\nexport type McpSessionRegistration = McpTierBRegistration & {\n\tresourceServers: McpResourceServer[];\n\tpromptServers: McpPromptServer[];\n};\n\nexport interface McpDirectRegistrationEntry {\n\treadonly name: string;\n\treadonly connection: ServerConnection;\n\treadonly logger: McpLogger;\n\treadonly agentDir?: string;\n\treadonly artifacts?: McpOutputArtifacts;\n\treadonly cachedCatalog?: McpCachedServerCatalog;\n\treadonly ensureFresh?: () => Promise<void>;\n\treadonly ensureCachedToolConnected?: () => Promise<void>;\n}\n\nexport async function registerDirectMcpTools(\n\tpi: Pick<ExtensionAPI, \"getActiveTools\" | \"setActiveTools\" | \"registerTool\">,\n\tconfig: ResolvedMcpConfig,\n\tentries: Iterable<McpDirectRegistrationEntry>,\n\ttoolSearchService: ToolSearchService,\n\toptions: McpCatalogRegistrationOptions = {},\n): Promise<McpSessionRegistration | undefined> {\n\tconst registeredEntries: McpToolCatalogEntry[] = [];\n\tconst activeEntries: McpToolCatalogEntry[] = [];\n\tlet searchMode = false;\n\tconst proxyGateways: { server: string; entries: McpToolCatalogEntry[] }[] = [];\n\tconst resourceServers: McpResourceServer[] = [];\n\tconst promptServers: McpPromptServer[] = [];\n\tfor (const entry of entries) {\n\t\tconst server = config.servers[entry.name];\n\t\tif (server?.config === undefined) continue;\n\t\tconst catalog =\n\t\t\tentry.cachedCatalog === undefined\n\t\t\t\t? entry.connection.state === \"connected\"\n\t\t\t\t\t? await collectToolCatalog(entry.name, entry.connection, server.config, {\n\t\t\t\t\t\t\tagentDir: entry.agentDir,\n\t\t\t\t\t\t\tartifacts: entry.artifacts,\n\t\t\t\t\t\t\tensureFresh: entry.ensureFresh,\n\t\t\t\t\t\t\toutputGuard: config.settings.outputGuard,\n\t\t\t\t\t\t})\n\t\t\t\t\t: []\n\t\t\t\t: cachedToolsToCatalogEntries(\n\t\t\t\t\t\tentry.name,\n\t\t\t\t\t\tentry.cachedCatalog,\n\t\t\t\t\t\tentry.connection,\n\t\t\t\t\t\tserver.config.requestTimeoutMs,\n\t\t\t\t\t\tentry.ensureCachedToolConnected ?? (() => entry.connection.connect().then(() => undefined)),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tagentDir: entry.agentDir,\n\t\t\t\t\t\t\tartifacts: entry.artifacts,\n\t\t\t\t\t\t\tensureFresh: entry.ensureFresh,\n\t\t\t\t\t\t\toutputGuard: config.settings.outputGuard,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\tconst cachedPrompts = entry.cachedCatalog?.prompts ?? [];\n\t\tif (cachedPrompts.length > 0) {\n\t\t\tpromptServers.push({\n\t\t\t\tconnection: entry.connection,\n\t\t\t\tprompts: cachedPrompts,\n\t\t\t\trequestTimeoutMs: server.config.requestTimeoutMs,\n\t\t\t\tserver: entry.name,\n\t\t\t});\n\t\t}\n\t\tconst cachedResources = entry.cachedCatalog?.resources ?? [];\n\t\tif (cachedResources.length > 0) {\n\t\t\tresourceServers.push({\n\t\t\t\tagentDir: entry.agentDir,\n\t\t\t\tartifacts: entry.artifacts,\n\t\t\t\tconnection: entry.connection,\n\t\t\t\toutputGuard: config.settings.outputGuard,\n\t\t\t\trequestTimeoutMs: server.config.requestTimeoutMs,\n\t\t\t\tresources: cachedResources,\n\t\t\t\tserver: entry.name,\n\t\t\t});\n\t\t}\n\t\tconst policy = computeMcpExposurePolicy(catalog, server.config, config.settings);\n\t\tfor (const warning of policy.warnings) entry.logger.warn(warning);\n\t\tif (policy.mode === \"search\") searchMode = true;\n\t\tif (policy.mode === \"proxy\") proxyGateways.push({ entries: [...policy.filteredEntries], server: entry.name });\n\t\tregisteredEntries.push(...policy.registeredEntries);\n\t\tactiveEntries.push(...policy.activeEntries);\n\t}\n\t// Skip touching the active set only when there is genuinely nothing to do.\n\tif (\n\t\tregisteredEntries.length === 0 &&\n\t\tactiveEntries.length === 0 &&\n\t\t!searchMode &&\n\t\tproxyGateways.length === 0 &&\n\t\toptions.refreshActiveSetWhenEmpty !== true\n\t) {\n\t\treturn undefined;\n\t}\n\tconst utilityTools = resourceServers.length > 0 ? createMcpResourceTools(() => resourceServers) : [];\n\tconst registration = registerMcpTierBTools(\n\t\tpi,\n\t\t{ activeEntries, proxyGateways, registeredEntries, searchMode, settings: config.settings, utilityTools },\n\t\ttoolSearchService,\n\t\t(message) => createMcpLogger(\"service\").warn(message),\n\t);\n\treturn { ...registration, promptServers, resourceServers };\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "../../../types.ts";
|
|
2
|
+
import type { ToolSearchService } from "../../tool-search/service.ts";
|
|
2
3
|
import type { McpToolCatalogEntry } from "../catalog.ts";
|
|
3
4
|
import type { McpSettings } from "../config-schema.ts";
|
|
4
5
|
import { type McpToolDefinition } from "./register.ts";
|
|
5
|
-
import { type SearchableMcpTool } from "./tool-search.ts";
|
|
6
6
|
type McpToolRegistrar = Pick<ExtensionAPI, "getActiveTools" | "setActiveTools" | "registerTool">;
|
|
7
7
|
type WarnFn = (message: string) => void;
|
|
8
8
|
export interface McpTierBRegistrationInput {
|
|
@@ -21,22 +21,24 @@ export interface McpTierBRegistrationInput {
|
|
|
21
21
|
readonly utilityTools?: readonly McpToolDefinition[];
|
|
22
22
|
readonly settings: McpSettings;
|
|
23
23
|
}
|
|
24
|
+
export interface SearchableMcpTool {
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly toolName: string;
|
|
27
|
+
readonly description?: string;
|
|
28
|
+
readonly server: string;
|
|
29
|
+
}
|
|
24
30
|
export interface McpTierBRegistration {
|
|
25
31
|
/** Searchable catalog (for reuse by /mcp status and list_changed). */
|
|
26
32
|
readonly searchable: SearchableMcpTool[];
|
|
27
|
-
/**
|
|
28
|
-
* Replay activation markers found in session history through the SAME
|
|
29
|
-
* activation path tool_search uses (stub swap + stable ordering), so a
|
|
30
|
-
* resumed/compacted session restores its promoted tools without
|
|
31
|
-
* re-searching. Returns the newly activated names (empty when nothing new).
|
|
32
|
-
*/
|
|
33
|
-
rehydrateFromHistory(messages: readonly unknown[]): string[];
|
|
34
|
-
/** Activate registered tools by name through the same stable path
|
|
35
|
-
* tool_search uses (skill lazy-reveal, todo 37). Unknown names ignored. */
|
|
33
|
+
/** Activate registered tools through the shared feeder hook. */
|
|
36
34
|
activate(names: readonly string[]): void;
|
|
37
35
|
}
|
|
38
36
|
/** Register MCP tools honouring Tier-B search mode + prompt-cache mitigations. */
|
|
39
|
-
export declare function registerMcpTierBTools(pi: McpToolRegistrar, input: McpTierBRegistrationInput, warn?: WarnFn): McpTierBRegistration;
|
|
37
|
+
export declare function registerMcpTierBTools(pi: McpToolRegistrar, input: McpTierBRegistrationInput, toolSearchService: ToolSearchService, warn?: WarnFn): McpTierBRegistration;
|
|
38
|
+
/** Order the active set deterministically without disturbing base tools.
|
|
39
|
+
* Base tools retain reference order; every shared-catalog member sorts by
|
|
40
|
+
* canonical name so consecutive promotions remain byte-stable. */
|
|
41
|
+
export declare function orderActiveSet(names: readonly string[], reference: readonly string[], catalogNames: ReadonlySet<string>): string[];
|
|
40
42
|
/** A 30-70 token placeholder for an inactive search-mode tool. Keeps the tools
|
|
41
43
|
* array length-stable under stubSwap; guides the model to tool_search. */
|
|
42
44
|
export declare function buildMcpStubDefinition(name: string): McpToolDefinition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tier-b.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/tier-b.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tier-b.d.ts","sourceRoot":"","sources":["../../../../../../src/core/extensions/builtin/mcp/expose/tier-b.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAEN,KAAK,iBAAiB,EAGtB,MAAM,eAAe,CAAC;AAEvB,KAAK,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,CAAC,CAAC;AACjG,KAAK,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAExC,MAAM,WAAW,yBAAyB;IACzC,wEAAwE;IACxE,QAAQ,CAAC,iBAAiB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3D,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvD,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAA;KAAE,EAAE,CAAC;IAChG,mFAAmF;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACpC,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IACzC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACzC;AAID,kFAAkF;AAClF,wBAAgB,qBAAqB,CACpC,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,yBAAyB,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,CAAC,EAAE,MAAM,GACX,oBAAoB,CAyFtB;AAiBD;;kEAEkE;AAClE,wBAAgB,cAAc,CAC7B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,MAAM,EAAE,CAQV;AAYD;0EAC0E;AAC1E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAiBtE"}
|