@code-yeongyu/senpi 2026.9.26 → 2026.9.27-3
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 +66 -0
- package/dist/bun-runtime.d.ts +18 -2
- package/dist/bun-runtime.d.ts.map +1 -1
- package/dist/bun-runtime.js +60 -8
- package/dist/bun-runtime.js.map +1 -1
- package/dist/bundle/chunks/anthropic-messages-3FGAXYJS.js +8 -0
- package/dist/bundle/chunks/{app-server-command-ZRCKWY2X.js → app-server-command-ZVB35UIJ.js} +1 -1
- package/dist/bundle/chunks/azure-openai-responses-4SUOOZZ4.js +2 -0
- package/dist/bundle/chunks/bun-extension-importer-R4HXF3GD.js +14 -0
- package/dist/bundle/chunks/{chunk-KMJXSXRX.js → chunk-357I4IUU.js} +2 -2
- package/dist/bundle/chunks/chunk-3SIQIY57.js +8 -0
- package/dist/bundle/chunks/chunk-45SZOLCU.js +2 -0
- package/dist/bundle/chunks/{chunk-77ACEMYL.js → chunk-6J6RDMBY.js} +1 -1
- package/dist/bundle/chunks/{chunk-BSOJHK4W.js → chunk-7FXXRPB3.js} +2 -1
- package/dist/bundle/chunks/{chunk-FD34HSJJ.js → chunk-C6LQNMRB.js} +1 -1
- package/dist/bundle/chunks/chunk-ELM77A26.js +2 -0
- package/dist/bundle/chunks/chunk-GZVCRV7I.js +3 -0
- package/dist/bundle/chunks/{chunk-TTY5BHCG.js → chunk-H2SGCPMD.js} +1 -1
- package/dist/bundle/chunks/chunk-KLBKUBDV.js +2 -0
- package/dist/bundle/chunks/chunk-L6QV7NZI.js +2 -0
- package/dist/bundle/chunks/{chunk-ZKZAATFM.js → chunk-LDB5UMH2.js} +2 -2
- package/dist/bundle/chunks/{chunk-HZAKOVHN.js → chunk-LGKKU4VM.js} +1 -1
- package/dist/bundle/chunks/{chunk-6Q6DGME2.js → chunk-NMDALHXH.js} +1 -1
- package/dist/bundle/chunks/chunk-NNILBBOH.js +18 -0
- package/dist/bundle/chunks/{chunk-SUQDU5KM.js → chunk-OQRUK2DK.js} +1 -1
- package/dist/bundle/chunks/{chunk-OZCB6BP3.js → chunk-OZN2KUPR.js} +7 -7
- package/dist/bundle/chunks/{chunk-X3T45623.js → chunk-QK4QKRTF.js} +1 -1
- package/dist/bundle/chunks/{chunk-WM5FVFAP.js → chunk-QPZVJQC5.js} +1 -1
- package/dist/bundle/chunks/{chunk-Y54V65MS.js → chunk-QYAO24GB.js} +1 -1
- package/dist/bundle/chunks/{chunk-MKAM7IRH.js → chunk-RULGEHQM.js} +1 -1
- package/dist/bundle/chunks/{chunk-QGC46CGK.js → chunk-RYI6XR6Z.js} +63 -58
- package/dist/bundle/chunks/chunk-U3VOXCGP.js +2 -0
- package/dist/bundle/chunks/chunk-W3D3ZYDS.js +2 -0
- package/dist/bundle/chunks/{chunk-UBPMXBOJ.js → chunk-XKLR7C5B.js} +1 -1
- package/dist/bundle/chunks/{chunk-CLZVNQW3.js → chunk-Y7EIVDHZ.js} +1 -1
- package/dist/bundle/chunks/chunk-ZIVYE5YK.js +2 -0
- package/dist/bundle/chunks/cli-main-RONHLFWZ.js +3 -0
- package/dist/bundle/chunks/google-generative-ai-ZTGKZTGU.js +2 -0
- package/dist/bundle/chunks/google-vertex-CCZ376YK.js +2 -0
- package/dist/bundle/chunks/help-fast-path-5LRG6FCG.js +2 -0
- package/dist/bundle/chunks/host-command-JVPGQR74.js +2 -0
- package/dist/bundle/chunks/host-lifecycle-R4HLXLBM.js +3 -0
- package/dist/bundle/chunks/host-lifecycle.js +4 -4
- package/dist/bundle/chunks/interactive-host-runtime-FES2G62G.js +4 -0
- package/dist/bundle/chunks/interactive-mode-45EP2FVL.js +2 -0
- package/dist/bundle/chunks/{list-tips-EBRNBPBM.js → list-tips-XXMRDHN6.js} +1 -1
- package/dist/bundle/chunks/{multi-session-host-7YX2I7UK.js → multi-session-host-EFCMD5OT.js} +6 -6
- package/dist/bundle/chunks/{openai-completions-4CLXDDHJ.js → openai-completions-OP6VFNUR.js} +1 -1
- package/dist/bundle/chunks/openai-images-6U5FCN5S.js +2 -0
- package/dist/bundle/chunks/openai-responses-7PWMBGYX.js +2 -0
- package/dist/bundle/chunks/openrouter-images-QIKWQZUD.js +2 -0
- package/dist/bundle/chunks/{package-manager-cli-3ISYTEL2.js → package-manager-cli-5XJS3TYM.js} +1 -1
- package/dist/bundle/chunks/rotation-stream-KW7PTEC4.js +2 -0
- package/dist/bundle/chunks/rpc-mode-ZHYECU24.js +2 -0
- package/dist/bundle/chunks/session-picker-QHIYVQP4.js +2 -0
- package/dist/bundle/chunks/session-worker.js +281 -270
- package/dist/bundle/chunks/{state-store-Q5EWEAFG.js → state-store-D4GGGT3J.js} +1 -1
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +4 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/continue-moved.d.ts +15 -0
- package/dist/cli/continue-moved.d.ts.map +1 -0
- package/dist/cli/continue-moved.js +26 -0
- package/dist/cli/continue-moved.js.map +1 -0
- package/dist/cli/cross-project-session.d.ts +22 -0
- package/dist/cli/cross-project-session.d.ts.map +1 -0
- package/dist/cli/cross-project-session.js +38 -0
- package/dist/cli/cross-project-session.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +3 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +43 -10
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +19 -5
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.d.ts.map +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.js +5 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.js.map +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.d.ts +13 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.d.ts.map +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.js +25 -2
- package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.js.map +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-turn-types.d.ts +1 -0
- package/dist/core/extensions/builtin/anthropic-subscription/session-turn-types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-turn-types.js.map +1 -1
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +2 -0
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/catalog.d.ts +3 -0
- package/dist/core/extensions/builtin/mcp/catalog.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/catalog.js +9 -0
- package/dist/core/extensions/builtin/mcp/catalog.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/connection-types.d.ts +2 -0
- package/dist/core/extensions/builtin/mcp/connection-types.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/connection-types.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/connection.d.ts +1 -1
- package/dist/core/extensions/builtin/mcp/connection.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/connection.js +3 -2
- package/dist/core/extensions/builtin/mcp/connection.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/session.d.ts +3 -0
- package/dist/core/extensions/builtin/mcp/expose/session.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/expose/session.js +9 -2
- package/dist/core/extensions/builtin/mcp/expose/session.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/service-register.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/service-register.js +7 -1
- package/dist/core/extensions/builtin/mcp/service-register.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/service-tools-changed.d.ts +18 -0
- package/dist/core/extensions/builtin/mcp/service-tools-changed.d.ts.map +1 -0
- package/dist/core/extensions/builtin/mcp/service-tools-changed.js +61 -0
- package/dist/core/extensions/builtin/mcp/service-tools-changed.js.map +1 -0
- package/dist/core/extensions/builtin/mcp/service-types.d.ts +13 -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.map +1 -1
- package/dist/core/extensions/builtin/mcp/service.js +4 -37
- package/dist/core/extensions/builtin/mcp/service.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/shared-lease.js +1 -1
- package/dist/core/extensions/builtin/mcp/shared-lease.js.map +1 -1
- package/dist/core/extensions/builtin/mcp/startup-race.d.ts.map +1 -1
- package/dist/core/extensions/builtin/mcp/startup-race.js +11 -1
- package/dist/core/extensions/builtin/mcp/startup-race.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/index.js +5 -2
- package/dist/core/extensions/builtin/permission-system/index.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/parsers.d.ts +5 -0
- package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/parsers.js +13 -0
- package/dist/core/extensions/builtin/permission-system/parsers.js.map +1 -1
- package/dist/core/extensions/builtin/repository-identity.d.ts +6 -0
- package/dist/core/extensions/builtin/repository-identity.d.ts.map +1 -0
- package/dist/core/extensions/builtin/repository-identity.js +33 -0
- package/dist/core/extensions/builtin/repository-identity.js.map +1 -0
- package/dist/core/extensions/bun-extension-importer.d.ts.map +1 -1
- package/dist/core/extensions/bun-extension-importer.js +10 -4
- package/dist/core/extensions/bun-extension-importer.js.map +1 -1
- package/dist/core/extensions/bun-extension-registry.js +6 -5
- package/dist/core/extensions/bun-extension-registry.js.map +1 -1
- 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/kernel-prelude.d.ts +13 -0
- package/dist/core/extensions/kernel-prelude.d.ts.map +1 -0
- package/dist/core/extensions/kernel-prelude.js +38 -0
- package/dist/core/extensions/kernel-prelude.js.map +1 -0
- package/dist/core/extensions/types.d.ts +44 -2
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +4 -2
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/moved-sessions.d.ts +10 -0
- package/dist/core/moved-sessions.d.ts.map +1 -0
- package/dist/core/moved-sessions.js +84 -0
- package/dist/core/moved-sessions.js.map +1 -0
- package/dist/core/process-crash-record.d.ts +62 -0
- package/dist/core/process-crash-record.d.ts.map +1 -0
- package/dist/core/process-crash-record.js +216 -0
- package/dist/core/process-crash-record.js.map +1 -0
- package/dist/core/provider-rejected-images.d.ts +18 -0
- package/dist/core/provider-rejected-images.d.ts.map +1 -0
- package/dist/core/provider-rejected-images.js +107 -0
- package/dist/core/provider-rejected-images.js.map +1 -0
- package/dist/core/repository-identity.d.ts +18 -0
- package/dist/core/repository-identity.d.ts.map +1 -0
- package/dist/core/repository-identity.js +75 -0
- package/dist/core/repository-identity.js.map +1 -0
- package/dist/core/resume-target.d.ts +20 -0
- package/dist/core/resume-target.d.ts.map +1 -0
- package/dist/core/resume-target.js +30 -0
- package/dist/core/resume-target.js.map +1 -0
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +1 -0
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-hold-errors.d.ts +20 -0
- package/dist/core/session-hold-errors.d.ts.map +1 -0
- package/dist/core/session-hold-errors.js +28 -0
- package/dist/core/session-hold-errors.js.map +1 -0
- package/dist/core/session-holders.d.ts +22 -0
- package/dist/core/session-holders.d.ts.map +1 -0
- package/dist/core/session-holders.js +234 -0
- package/dist/core/session-holders.js.map +1 -0
- package/dist/core/session-manager.d.ts +5 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-rebind.d.ts +23 -0
- package/dist/core/session-rebind.d.ts.map +1 -0
- package/dist/core/session-rebind.js +127 -0
- package/dist/core/session-rebind.js.map +1 -0
- package/dist/core/session-summary-index-file.d.ts.map +1 -1
- package/dist/core/session-summary-index-file.js +5 -2
- package/dist/core/session-summary-index-file.js.map +1 -1
- package/dist/core/session-summary.d.ts +3 -0
- package/dist/core/session-summary.d.ts.map +1 -1
- package/dist/core/session-summary.js +7 -0
- package/dist/core/session-summary.js.map +1 -1
- package/dist/core/session-title-generator.d.ts.map +1 -1
- package/dist/core/session-title-generator.js +21 -3
- package/dist/core/session-title-generator.js.map +1 -1
- package/dist/core/session-title-reasoning.d.ts +14 -0
- package/dist/core/session-title-reasoning.d.ts.map +1 -0
- package/dist/core/session-title-reasoning.js +31 -0
- package/dist/core/session-title-reasoning.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -1
- package/dist/core/tools/path-utils.js +13 -0
- package/dist/core/tools/path-utils.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy-dir-copy.d.ts +9 -0
- package/dist/legacy-dir-copy.d.ts.map +1 -0
- package/dist/legacy-dir-copy.js +69 -0
- package/dist/legacy-dir-copy.js.map +1 -0
- package/dist/legacy-senpi-dir-migration.d.ts.map +1 -1
- package/dist/legacy-senpi-dir-migration.js +64 -48
- package/dist/legacy-senpi-dir-migration.js.map +1 -1
- package/dist/main.d.ts +6 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +129 -22
- package/dist/main.js.map +1 -1
- package/dist/migrations-state.d.ts +1 -1
- package/dist/migrations-state.d.ts.map +1 -1
- package/dist/migrations-state.js +5 -1
- package/dist/migrations-state.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/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +5 -3
- 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 +10 -4
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/resume-rebind.d.ts +12 -0
- package/dist/modes/interactive/resume-rebind.d.ts.map +1 -0
- package/dist/modes/interactive/resume-rebind.js +37 -0
- package/dist/modes/interactive/resume-rebind.js.map +1 -0
- package/dist/modes/interactive/runtime-notice-presenter.d.ts +8 -0
- package/dist/modes/interactive/runtime-notice-presenter.d.ts.map +1 -0
- package/dist/modes/interactive/runtime-notice-presenter.js +69 -0
- package/dist/modes/interactive/runtime-notice-presenter.js.map +1 -0
- package/dist/modes/interactive/runtime-notice.d.ts +50 -0
- package/dist/modes/interactive/runtime-notice.d.ts.map +1 -0
- package/dist/modes/interactive/runtime-notice.js +104 -0
- package/dist/modes/interactive/runtime-notice.js.map +1 -0
- package/dist/modes/interactive/tips/catalog/computer-tips.d.ts +7 -0
- package/dist/modes/interactive/tips/catalog/computer-tips.d.ts.map +1 -0
- package/dist/modes/interactive/tips/catalog/computer-tips.js +36 -0
- package/dist/modes/interactive/tips/catalog/computer-tips.js.map +1 -0
- package/dist/modes/interactive/tips/registry.d.ts.map +1 -1
- package/dist/modes/interactive/tips/registry.js +2 -0
- package/dist/modes/interactive/tips/registry.js.map +1 -1
- package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
- package/dist/modes/rpc/connection-handler.js +3 -0
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/dist/modes/rpc/host-child-exit.d.ts.map +1 -1
- package/dist/modes/rpc/host-child-exit.js +4 -0
- package/dist/modes/rpc/host-child-exit.js.map +1 -1
- package/dist/modes/rpc/host-crash-record.d.ts +8 -0
- package/dist/modes/rpc/host-crash-record.d.ts.map +1 -1
- package/dist/modes/rpc/host-crash-record.js.map +1 -1
- package/dist/modes/rpc/host-crash-record.test.js +11 -0
- package/dist/modes/rpc/host-crash-record.test.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +2 -2
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +14 -6
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-request-deadline.d.ts +17 -0
- package/dist/modes/rpc/rpc-request-deadline.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-request-deadline.js +27 -0
- package/dist/modes/rpc/rpc-request-deadline.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +9 -2
- 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-command-router.d.ts +3 -6
- package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
- package/dist/modes/rpc/session-command-router.js +9 -22
- package/dist/modes/rpc/session-command-router.js.map +1 -1
- package/dist/modes/rpc/session-path-key.d.ts +10 -0
- package/dist/modes/rpc/session-path-key.d.ts.map +1 -0
- package/dist/modes/rpc/session-path-key.js +33 -0
- package/dist/modes/rpc/session-path-key.js.map +1 -0
- package/dist/modes/rpc/session-registry.d.ts.map +1 -1
- package/dist/modes/rpc/session-registry.js +6 -10
- package/dist/modes/rpc/session-registry.js.map +1 -1
- package/dist/modes/rpc/session-sweep.d.ts +18 -0
- package/dist/modes/rpc/session-sweep.d.ts.map +1 -0
- package/dist/modes/rpc/session-sweep.js +32 -0
- package/dist/modes/rpc/session-sweep.js.map +1 -0
- package/dist/pi-dir-restore.d.ts +4 -0
- package/dist/pi-dir-restore.d.ts.map +1 -0
- package/dist/pi-dir-restore.js +92 -0
- package/dist/pi-dir-restore.js.map +1 -0
- package/docs/environment-variables.md +2 -0
- package/docs/extensions.md +27 -1
- package/docs/quickstart.md +7 -1
- package/docs/rpc.md +8 -3
- package/docs/sdk.md +29 -0
- package/docs/sessions.md +13 -0
- package/docs/usage.md +1 -0
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +38 -0
- package/node_modules/@code-yeongyu/senpi-codemode/README.md +7 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/bridge/protocol.ts +9 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/bridges/schema-bridge.ts +2 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/kernel-preludes.ts +30 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +15 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/context-manager.ts +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/local-module-loader.ts +16 -2
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/kernel.ts +6 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/prelude.py +15 -2
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/transport.ts +7 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/kernel-prelude-plan.ts +19 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt-template.ts +2 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt.ts +4 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool-options.ts +11 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +1 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/run-eval-cell.ts +1 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +3 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +2 -2
- 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 +7 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.js +3 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/assistant-terminal-state.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +3 -1
- 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-messages.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +10 -7
- 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-completions.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +9 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.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/provider-diagnostic.d.ts +33 -0
- package/node_modules/@earendil-works/pi-ai/dist/provider-diagnostic.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/provider-diagnostic.js +56 -0
- package/node_modules/@earendil-works/pi-ai/dist/provider-diagnostic.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.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/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/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/types.d.ts +3 -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/provider-diagnostic-carrier.d.ts +5 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-carrier.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-carrier.js +18 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-carrier.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-sources.d.ts +26 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-sources.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-sources.js +103 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-sources.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-vocabulary.d.ts +36 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-vocabulary.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-vocabulary.js +129 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-diagnostic-vocabulary.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.js +5 -4
- package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-pty/native/prebuilds/darwin-arm64/senpi_pty.darwin-arm64.node +0 -0
- 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/package.json +1 -1
- package/package.json +7 -7
- package/dist/bundle/chunks/anthropic-messages-UYDVRFAS.js +0 -8
- package/dist/bundle/chunks/azure-openai-responses-DODWR4W6.js +0 -2
- package/dist/bundle/chunks/bun-extension-importer-H4IJCWWQ.js +0 -14
- package/dist/bundle/chunks/chunk-34HMVB33.js +0 -2
- package/dist/bundle/chunks/chunk-3WBSBDBX.js +0 -13
- package/dist/bundle/chunks/chunk-L6JO4M6J.js +0 -3
- package/dist/bundle/chunks/chunk-SFYHCFRO.js +0 -2
- package/dist/bundle/chunks/chunk-T3JBT2IK.js +0 -8
- package/dist/bundle/chunks/chunk-TTHMOL5G.js +0 -2
- package/dist/bundle/chunks/chunk-UYCGOK6M.js +0 -2
- package/dist/bundle/chunks/chunk-ZTVQY5V6.js +0 -2
- package/dist/bundle/chunks/cli-main-H6JAXAXV.js +0 -3
- package/dist/bundle/chunks/google-generative-ai-VIEFECKJ.js +0 -2
- package/dist/bundle/chunks/google-vertex-Q64CKFID.js +0 -2
- package/dist/bundle/chunks/help-fast-path-ZGKPSDFO.js +0 -2
- package/dist/bundle/chunks/host-command-BMHJ4YUD.js +0 -2
- package/dist/bundle/chunks/host-lifecycle-2GZAGSGW.js +0 -3
- package/dist/bundle/chunks/interactive-host-runtime-YI75GFD5.js +0 -4
- package/dist/bundle/chunks/interactive-mode-HM7UQYRC.js +0 -2
- package/dist/bundle/chunks/openai-images-JA5N5DUU.js +0 -2
- package/dist/bundle/chunks/openai-responses-IBFGBAJP.js +0 -2
- package/dist/bundle/chunks/openrouter-images-MW5TXV7L.js +0 -2
- package/dist/bundle/chunks/rotation-stream-NATO6IMN.js +0 -2
- package/dist/bundle/chunks/rpc-mode-6PY4TN5F.js +0 -2
- package/dist/bundle/chunks/session-picker-BP7THCWF.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registry-pump.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-pump.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACN,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EAEzC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-registry-pump.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-pump.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACN,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EAEzC,MAAM,uBAAuB,CAAC;AAiB/B,OAAO,KAAK,EAAc,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEpG,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAIjE,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAClD,eAAO,MAAM,4BAA4B,QAAa,CAAC;AACvD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;CACtE;AAED,qBAAa,mCAAoC,SAAQ,KAAK;IAC7D,QAAQ,CAAC,IAAI,gDAAgD;IAE7D,YAAY,SAAS,EAAE,MAAM,EAG5B;CACD;AAyJD,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,oCAAoC,EAC9C,KAAK,EAAE,iCAAiC,EACxC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,GAAE,qBAGP,GACC,OAAO,CAAC,iBAAiB,CAAC,CAuD5B"}
|
|
@@ -3,7 +3,7 @@ import { refusalError } from "./refusal.js";
|
|
|
3
3
|
import { evaluateAbortOutcome } from "./session-reattach.js";
|
|
4
4
|
import { createSessionUuid, } from "./session-registry.js";
|
|
5
5
|
import { transitionToIdleSynced, transitionToTurnResultSeen, transitionToTurnSent, transitionToTurnStreaming, transitionToTurnWaiting, } from "./session-registry-state.js";
|
|
6
|
-
import { bufferBeforeReplay, claimTurn, deliver, isReplayFor, resultMatchesTurn } from "./session-turn-claim.js";
|
|
6
|
+
import { bufferBeforeReplay, claimTurn, deliver, endForeignTurnBeforeReplay, isForeignResult, isReplayFor, resultMatchesTurn, } from "./session-turn-claim.js";
|
|
7
7
|
import { SessionTurnAttributionError } from "./session-turn-types.js";
|
|
8
8
|
export const DEFAULT_PRE_REPLAY_MAX_MESSAGES = 64;
|
|
9
9
|
export const DEFAULT_PRE_REPLAY_MAX_BYTES = 256 * 1024;
|
|
@@ -104,6 +104,9 @@ function handleMessage(registry, entry, message) {
|
|
|
104
104
|
finishTurn(registry, entry, turn, message);
|
|
105
105
|
return false;
|
|
106
106
|
}
|
|
107
|
+
else if (message.type === "result" && isForeignResult(message, turn)) {
|
|
108
|
+
endForeignTurnBeforeReplay(turn);
|
|
109
|
+
}
|
|
107
110
|
else if (message.type === "result") {
|
|
108
111
|
// A result that fails before the SDK ever echoed our user message (a
|
|
109
112
|
// 400 version floor, a session limit) must surface as that failure so
|
|
@@ -183,6 +186,7 @@ export function submitSessionTurn(registry, entry, request, limits = {
|
|
|
183
186
|
messages: [],
|
|
184
187
|
preReplay: [],
|
|
185
188
|
preReplayBytes: 0,
|
|
189
|
+
preReplayOverflowed: false,
|
|
186
190
|
claimed: false,
|
|
187
191
|
aborted: false,
|
|
188
192
|
onMessage: request.onMessage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registry-pump.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-pump.ts"],"names":[],"mappings":"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","sourcesContent":["import { sdkResultFailure } from \"./errors.ts\";\nimport { refusalError } from \"./refusal.ts\";\nimport type { SDKMessage, SDKUserMessage } from \"./sdk-boundary.ts\";\nimport { evaluateAbortOutcome } from \"./session-reattach.ts\";\nimport {\n\ttype AnthropicSubscriptionSessionEntry,\n\ttype AnthropicSubscriptionSessionRegistry,\n\tcreateSessionUuid,\n} from \"./session-registry.ts\";\nimport {\n\ttransitionToIdleSynced,\n\ttransitionToTurnResultSeen,\n\ttransitionToTurnSent,\n\ttransitionToTurnStreaming,\n\ttransitionToTurnWaiting,\n} from \"./session-registry-state.ts\";\nimport { bufferBeforeReplay, claimTurn, deliver, isReplayFor, resultMatchesTurn } from \"./session-turn-claim.ts\";\nimport type { ActiveTurn, PreReplayBufferLimits, SessionTurnResult } from \"./session-turn-types.ts\";\n\nexport type { SessionTurnResult } from \"./session-turn-types.ts\";\n\nimport { SessionTurnAttributionError } from \"./session-turn-types.ts\";\n\nexport const DEFAULT_PRE_REPLAY_MAX_MESSAGES = 64;\nexport const DEFAULT_PRE_REPLAY_MAX_BYTES = 256 * 1024;\nexport const SESSION_TURN_ABORT_GRACE_MS = 1_000;\n\nexport interface SessionTurnRequest {\n\tmessage: SDKUserMessage[\"message\"];\n\tsignal?: AbortSignal;\n\tonMessage?: (message: SDKMessage) => void;\n\tscheduleAbort?: (callback: () => void, delayMs: number) => () => void;\n}\n\nexport class ConcurrentSessionTurnAdmissionError extends Error {\n\treadonly code = \"claude_sdk_oauth_concurrent_turn_admission\";\n\n\tconstructor(sessionId: string) {\n\t\tsuper(`Concurrent Anthropic Subscription turn admission for session ${sessionId}`);\n\t\tthis.name = \"ConcurrentSessionTurnAdmissionError\";\n\t}\n}\n\nfunction currentTurn(entry: AnthropicSubscriptionSessionEntry): ActiveTurn | null {\n\treturn entry.activeTurn as ActiveTurn | null;\n}\n\nfunction scheduleAbort(callback: () => void, delayMs: number): () => void {\n\tconst timer = setTimeout(callback, delayMs);\n\ttimer.unref();\n\treturn () => clearTimeout(timer);\n}\n\nfunction removeAbortListener(turn: ActiveTurn): void {\n\tturn.signal?.removeEventListener(\"abort\", turn.onAbort);\n\tturn.cancelAbort?.();\n\tturn.cancelAbort = undefined;\n}\n\nfunction failTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\terror: Error,\n): void {\n\tconst turn = currentTurn(entry);\n\tif (turn) {\n\t\tremoveAbortListener(turn);\n\t\tentry.activeTurn = null;\n\t\tturn.reject(error);\n\t}\n\tif (registry.isCurrentGeneration(entry.senpiSessionId, entry.generation)) {\n\t\tregistry.closeSession(entry.senpiSessionId, error.message);\n\t}\n}\n\n/**\n * An interrupt that never produces a terminal result still ends the user's turn:\n * settle it as aborted and close only the query, so the binding survives and the\n * next turn reattaches. Rejecting here would drop the turn's continuity\n * observation and hand the following turn two.\n */\nfunction abortTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tturn: ActiveTurn,\n\t_error: Error,\n): void {\n\tif (currentTurn(entry) !== turn || !registry.isCurrentGeneration(entry.senpiSessionId, turn.generation)) return;\n\tremoveAbortListener(turn);\n\tentry.activeTurn = null;\n\tregistry.closeSession(entry.senpiSessionId, \"abort_uncertain\");\n\tturn.resolve({ uuid: turn.uuid, messages: turn.messages, aborted: true });\n}\n\nfunction finishTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tturn: ActiveTurn,\n\tmessage: Extract<SDKMessage, { type: \"result\" }>,\n): void {\n\tif (!resultMatchesTurn(message, turn)) {\n\t\tthrow new SessionTurnAttributionError(\n\t\t\t\"Anthropic Subscription result user_message_uuid did not match the active turn\",\n\t\t);\n\t}\n\tif (entry.state === \"TURN_CLAIMED\") transitionToTurnStreaming(entry);\n\tif (!turn.aborted) deliver(entry, turn, message);\n\ttransitionToTurnResultSeen(entry);\n\tremoveAbortListener(turn);\n\tentry.activeTurn = null;\n\tif (!turn.aborted || evaluateAbortOutcome(turn.interruptReceipt) === \"keep\") transitionToIdleSynced(entry);\n\telse registry.closeSession(entry.senpiSessionId, \"abort_uncertain\");\n\tturn.resolve({ uuid: turn.uuid, messages: turn.messages, aborted: turn.aborted });\n}\n\nfunction handleMessage(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tmessage: SDKMessage,\n): boolean {\n\t// A forked query mints a NEW session id (forkSession: true + resume): the\n\t// init message carries it, and it must be persisted BEFORE any turn-state\n\t// guard — otherwise subsequent reattach targets the original session and\n\t// the fork's content is lost.\n\tif (message.type === \"system\" && message.subtype === \"init\" && typeof message.session_id === \"string\") {\n\t\tif (message.session_id !== entry.sdkSessionId) entry.sdkSessionId = message.session_id;\n\t\tentry.sdkSessionIdConfirmed = true;\n\t}\n\tconst turn = currentTurn(entry);\n\tif (!turn || !registry.isCurrentGeneration(entry.senpiSessionId, turn.generation)) return false;\n\tif (!turn.claimed) {\n\t\tif (isReplayFor(message, turn.uuid)) {\n\t\t\tentry.sdkSessionIdConfirmed = true;\n\t\t\tfor (const buffered of claimTurn(entry, turn)) {\n\t\t\t\tif (buffered.type === \"result\") finishTurn(registry, entry, turn, buffered);\n\t\t\t\telse deliver(entry, turn, buffered);\n\t\t\t}\n\t\t} else if (message.type === \"stream_event\") bufferBeforeReplay(registry, entry, turn, message);\n\t\telse if (message.type === \"result\" && resultMatchesTurn(message, turn)) {\n\t\t\tconst failure = sdkResultFailure(message);\n\t\t\tif (failure) throw failure;\n\t\t\tfor (const buffered of claimTurn(entry, turn)) deliver(entry, turn, buffered);\n\t\t\tfinishTurn(registry, entry, turn, message);\n\t\t\treturn false;\n\t\t} else if (message.type === \"result\") {\n\t\t\t// A result that fails before the SDK ever echoed our user message (a\n\t\t\t// 400 version floor, a session limit) must surface as that failure so\n\t\t\t// failover can classify and rotate; only a genuine success-before-claim\n\t\t\t// is an attribution error.\n\t\t\tthrow (\n\t\t\t\tsdkResultFailure(message) ??\n\t\t\t\tnew SessionTurnAttributionError(\"Anthropic Subscription result arrived before replay claim\")\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\tif (message.type === \"user\" && \"isReplay\" in message && message.isReplay === true) return false;\n\tconst refusal = refusalError(message);\n\tif (refusal) {\n\t\tfailTurn(registry, entry, refusal);\n\t\treturn true;\n\t}\n\tif (message.type === \"result\") {\n\t\tconst failure = sdkResultFailure(message);\n\t\tif (failure) {\n\t\t\tfailTurn(registry, entry, failure);\n\t\t\treturn true;\n\t\t}\n\t\tfinishTurn(registry, entry, turn, message);\n\t} else deliver(entry, turn, message);\n\treturn false;\n}\n\nasync function runPump(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n): Promise<void> {\n\tconst iterator = entry.query[Symbol.asyncIterator]();\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { value, done } = await iterator.next();\n\t\t\tif (done) {\n\t\t\t\tfailTurn(registry, entry, new Error(\"Anthropic Subscription query ended before the active turn completed\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (handleMessage(registry, entry, value)) return;\n\t\t}\n\t} catch (error) {\n\t\tfailTurn(registry, entry, error instanceof Error ? error : new Error(String(error)));\n\t}\n}\n\nexport function submitSessionTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\trequest: SessionTurnRequest,\n\tlimits: PreReplayBufferLimits = {\n\t\tmaxMessages: DEFAULT_PRE_REPLAY_MAX_MESSAGES,\n\t\tmaxBytes: DEFAULT_PRE_REPLAY_MAX_BYTES,\n\t},\n): Promise<SessionTurnResult> {\n\tif (currentTurn(entry)) throw new ConcurrentSessionTurnAdmissionError(entry.senpiSessionId);\n\tif (entry.state === \"STARTING\") transitionToIdleSynced(entry);\n\ttransitionToTurnWaiting(entry);\n\tconst uuid = createSessionUuid();\n\tlet turn!: ActiveTurn;\n\tconst promise = new Promise<SessionTurnResult>((resolve, reject) => {\n\t\tconst onAbort = (): void => {\n\t\t\tif (turn.aborted) return;\n\t\t\tturn.aborted = true;\n\t\t\tturn.cancelAbort = (request.scheduleAbort ?? scheduleAbort)(\n\t\t\t\t() =>\n\t\t\t\t\tabortTurn(registry, entry, turn, new Error(\"Anthropic Subscription interrupted turn did not terminate\")),\n\t\t\t\tSESSION_TURN_ABORT_GRACE_MS,\n\t\t\t);\n\t\t\tvoid entry.query\n\t\t\t\t.interrupt()\n\t\t\t\t.then((receipt: unknown) => {\n\t\t\t\t\tturn.interruptReceipt = receipt;\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst detail = error instanceof Error ? error.message : String(error);\n\t\t\t\t\tabortTurn(registry, entry, turn, new Error(`Anthropic Subscription query interrupt failed: ${detail}`));\n\t\t\t\t});\n\t\t};\n\t\tturn = {\n\t\t\tuuid,\n\t\t\tgeneration: entry.generation,\n\t\t\tmessages: [],\n\t\t\tpreReplay: [],\n\t\t\tpreReplayBytes: 0,\n\t\t\tclaimed: false,\n\t\t\taborted: false,\n\t\t\tonMessage: request.onMessage,\n\t\t\tsignal: request.signal,\n\t\t\tonAbort,\n\t\t\tresolve,\n\t\t\treject,\n\t\t\tlimits,\n\t\t};\n\t});\n\tentry.activeTurn = turn;\n\tif (!entry.pumpTask) entry.pumpTask = runPump(registry, entry);\n\tentry.inputController.push({\n\t\ttype: \"user\",\n\t\tmessage: request.message,\n\t\tparent_tool_use_id: null,\n\t\tuuid,\n\t\tsession_id: entry.sdkSessionId,\n\t});\n\ttransitionToTurnSent(entry);\n\tif (request.signal?.aborted) turn.onAbort();\n\telse request.signal?.addEventListener(\"abort\", turn.onAbort, { once: true });\n\treturn promise;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-registry-pump.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-registry-pump.ts"],"names":[],"mappings":"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","sourcesContent":["import { sdkResultFailure } from \"./errors.ts\";\nimport { refusalError } from \"./refusal.ts\";\nimport type { SDKMessage, SDKUserMessage } from \"./sdk-boundary.ts\";\nimport { evaluateAbortOutcome } from \"./session-reattach.ts\";\nimport {\n\ttype AnthropicSubscriptionSessionEntry,\n\ttype AnthropicSubscriptionSessionRegistry,\n\tcreateSessionUuid,\n} from \"./session-registry.ts\";\nimport {\n\ttransitionToIdleSynced,\n\ttransitionToTurnResultSeen,\n\ttransitionToTurnSent,\n\ttransitionToTurnStreaming,\n\ttransitionToTurnWaiting,\n} from \"./session-registry-state.ts\";\nimport {\n\tbufferBeforeReplay,\n\tclaimTurn,\n\tdeliver,\n\tendForeignTurnBeforeReplay,\n\tisForeignResult,\n\tisReplayFor,\n\tresultMatchesTurn,\n} from \"./session-turn-claim.ts\";\nimport type { ActiveTurn, PreReplayBufferLimits, SessionTurnResult } from \"./session-turn-types.ts\";\n\nexport type { SessionTurnResult } from \"./session-turn-types.ts\";\n\nimport { SessionTurnAttributionError } from \"./session-turn-types.ts\";\n\nexport const DEFAULT_PRE_REPLAY_MAX_MESSAGES = 64;\nexport const DEFAULT_PRE_REPLAY_MAX_BYTES = 256 * 1024;\nexport const SESSION_TURN_ABORT_GRACE_MS = 1_000;\n\nexport interface SessionTurnRequest {\n\tmessage: SDKUserMessage[\"message\"];\n\tsignal?: AbortSignal;\n\tonMessage?: (message: SDKMessage) => void;\n\tscheduleAbort?: (callback: () => void, delayMs: number) => () => void;\n}\n\nexport class ConcurrentSessionTurnAdmissionError extends Error {\n\treadonly code = \"claude_sdk_oauth_concurrent_turn_admission\";\n\n\tconstructor(sessionId: string) {\n\t\tsuper(`Concurrent Anthropic Subscription turn admission for session ${sessionId}`);\n\t\tthis.name = \"ConcurrentSessionTurnAdmissionError\";\n\t}\n}\n\nfunction currentTurn(entry: AnthropicSubscriptionSessionEntry): ActiveTurn | null {\n\treturn entry.activeTurn as ActiveTurn | null;\n}\n\nfunction scheduleAbort(callback: () => void, delayMs: number): () => void {\n\tconst timer = setTimeout(callback, delayMs);\n\ttimer.unref();\n\treturn () => clearTimeout(timer);\n}\n\nfunction removeAbortListener(turn: ActiveTurn): void {\n\tturn.signal?.removeEventListener(\"abort\", turn.onAbort);\n\tturn.cancelAbort?.();\n\tturn.cancelAbort = undefined;\n}\n\nfunction failTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\terror: Error,\n): void {\n\tconst turn = currentTurn(entry);\n\tif (turn) {\n\t\tremoveAbortListener(turn);\n\t\tentry.activeTurn = null;\n\t\tturn.reject(error);\n\t}\n\tif (registry.isCurrentGeneration(entry.senpiSessionId, entry.generation)) {\n\t\tregistry.closeSession(entry.senpiSessionId, error.message);\n\t}\n}\n\n/**\n * An interrupt that never produces a terminal result still ends the user's turn:\n * settle it as aborted and close only the query, so the binding survives and the\n * next turn reattaches. Rejecting here would drop the turn's continuity\n * observation and hand the following turn two.\n */\nfunction abortTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tturn: ActiveTurn,\n\t_error: Error,\n): void {\n\tif (currentTurn(entry) !== turn || !registry.isCurrentGeneration(entry.senpiSessionId, turn.generation)) return;\n\tremoveAbortListener(turn);\n\tentry.activeTurn = null;\n\tregistry.closeSession(entry.senpiSessionId, \"abort_uncertain\");\n\tturn.resolve({ uuid: turn.uuid, messages: turn.messages, aborted: true });\n}\n\nfunction finishTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tturn: ActiveTurn,\n\tmessage: Extract<SDKMessage, { type: \"result\" }>,\n): void {\n\tif (!resultMatchesTurn(message, turn)) {\n\t\tthrow new SessionTurnAttributionError(\n\t\t\t\"Anthropic Subscription result user_message_uuid did not match the active turn\",\n\t\t);\n\t}\n\tif (entry.state === \"TURN_CLAIMED\") transitionToTurnStreaming(entry);\n\tif (!turn.aborted) deliver(entry, turn, message);\n\ttransitionToTurnResultSeen(entry);\n\tremoveAbortListener(turn);\n\tentry.activeTurn = null;\n\tif (!turn.aborted || evaluateAbortOutcome(turn.interruptReceipt) === \"keep\") transitionToIdleSynced(entry);\n\telse registry.closeSession(entry.senpiSessionId, \"abort_uncertain\");\n\tturn.resolve({ uuid: turn.uuid, messages: turn.messages, aborted: turn.aborted });\n}\n\nfunction handleMessage(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tmessage: SDKMessage,\n): boolean {\n\t// A forked query mints a NEW session id (forkSession: true + resume): the\n\t// init message carries it, and it must be persisted BEFORE any turn-state\n\t// guard — otherwise subsequent reattach targets the original session and\n\t// the fork's content is lost.\n\tif (message.type === \"system\" && message.subtype === \"init\" && typeof message.session_id === \"string\") {\n\t\tif (message.session_id !== entry.sdkSessionId) entry.sdkSessionId = message.session_id;\n\t\tentry.sdkSessionIdConfirmed = true;\n\t}\n\tconst turn = currentTurn(entry);\n\tif (!turn || !registry.isCurrentGeneration(entry.senpiSessionId, turn.generation)) return false;\n\tif (!turn.claimed) {\n\t\tif (isReplayFor(message, turn.uuid)) {\n\t\t\tentry.sdkSessionIdConfirmed = true;\n\t\t\tfor (const buffered of claimTurn(entry, turn)) {\n\t\t\t\tif (buffered.type === \"result\") finishTurn(registry, entry, turn, buffered);\n\t\t\t\telse deliver(entry, turn, buffered);\n\t\t\t}\n\t\t} else if (message.type === \"stream_event\") bufferBeforeReplay(registry, entry, turn, message);\n\t\telse if (message.type === \"result\" && resultMatchesTurn(message, turn)) {\n\t\t\tconst failure = sdkResultFailure(message);\n\t\t\tif (failure) throw failure;\n\t\t\tfor (const buffered of claimTurn(entry, turn)) deliver(entry, turn, buffered);\n\t\t\tfinishTurn(registry, entry, turn, message);\n\t\t\treturn false;\n\t\t} else if (message.type === \"result\" && isForeignResult(message, turn)) {\n\t\t\tendForeignTurnBeforeReplay(turn);\n\t\t} else if (message.type === \"result\") {\n\t\t\t// A result that fails before the SDK ever echoed our user message (a\n\t\t\t// 400 version floor, a session limit) must surface as that failure so\n\t\t\t// failover can classify and rotate; only a genuine success-before-claim\n\t\t\t// is an attribution error.\n\t\t\tthrow (\n\t\t\t\tsdkResultFailure(message) ??\n\t\t\t\tnew SessionTurnAttributionError(\"Anthropic Subscription result arrived before replay claim\")\n\t\t\t);\n\t\t}\n\t\treturn false;\n\t}\n\tif (message.type === \"user\" && \"isReplay\" in message && message.isReplay === true) return false;\n\tconst refusal = refusalError(message);\n\tif (refusal) {\n\t\tfailTurn(registry, entry, refusal);\n\t\treturn true;\n\t}\n\tif (message.type === \"result\") {\n\t\tconst failure = sdkResultFailure(message);\n\t\tif (failure) {\n\t\t\tfailTurn(registry, entry, failure);\n\t\t\treturn true;\n\t\t}\n\t\tfinishTurn(registry, entry, turn, message);\n\t} else deliver(entry, turn, message);\n\treturn false;\n}\n\nasync function runPump(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n): Promise<void> {\n\tconst iterator = entry.query[Symbol.asyncIterator]();\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { value, done } = await iterator.next();\n\t\t\tif (done) {\n\t\t\t\tfailTurn(registry, entry, new Error(\"Anthropic Subscription query ended before the active turn completed\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (handleMessage(registry, entry, value)) return;\n\t\t}\n\t} catch (error) {\n\t\tfailTurn(registry, entry, error instanceof Error ? error : new Error(String(error)));\n\t}\n}\n\nexport function submitSessionTurn(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\trequest: SessionTurnRequest,\n\tlimits: PreReplayBufferLimits = {\n\t\tmaxMessages: DEFAULT_PRE_REPLAY_MAX_MESSAGES,\n\t\tmaxBytes: DEFAULT_PRE_REPLAY_MAX_BYTES,\n\t},\n): Promise<SessionTurnResult> {\n\tif (currentTurn(entry)) throw new ConcurrentSessionTurnAdmissionError(entry.senpiSessionId);\n\tif (entry.state === \"STARTING\") transitionToIdleSynced(entry);\n\ttransitionToTurnWaiting(entry);\n\tconst uuid = createSessionUuid();\n\tlet turn!: ActiveTurn;\n\tconst promise = new Promise<SessionTurnResult>((resolve, reject) => {\n\t\tconst onAbort = (): void => {\n\t\t\tif (turn.aborted) return;\n\t\t\tturn.aborted = true;\n\t\t\tturn.cancelAbort = (request.scheduleAbort ?? scheduleAbort)(\n\t\t\t\t() =>\n\t\t\t\t\tabortTurn(registry, entry, turn, new Error(\"Anthropic Subscription interrupted turn did not terminate\")),\n\t\t\t\tSESSION_TURN_ABORT_GRACE_MS,\n\t\t\t);\n\t\t\tvoid entry.query\n\t\t\t\t.interrupt()\n\t\t\t\t.then((receipt: unknown) => {\n\t\t\t\t\tturn.interruptReceipt = receipt;\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst detail = error instanceof Error ? error.message : String(error);\n\t\t\t\t\tabortTurn(registry, entry, turn, new Error(`Anthropic Subscription query interrupt failed: ${detail}`));\n\t\t\t\t});\n\t\t};\n\t\tturn = {\n\t\t\tuuid,\n\t\t\tgeneration: entry.generation,\n\t\t\tmessages: [],\n\t\t\tpreReplay: [],\n\t\t\tpreReplayBytes: 0,\n\t\t\tpreReplayOverflowed: false,\n\t\t\tclaimed: false,\n\t\t\taborted: false,\n\t\t\tonMessage: request.onMessage,\n\t\t\tsignal: request.signal,\n\t\t\tonAbort,\n\t\t\tresolve,\n\t\t\treject,\n\t\t\tlimits,\n\t\t};\n\t});\n\tentry.activeTurn = turn;\n\tif (!entry.pumpTask) entry.pumpTask = runPump(registry, entry);\n\tentry.inputController.push({\n\t\ttype: \"user\",\n\t\tmessage: request.message,\n\t\tparent_tool_use_id: null,\n\t\tuuid,\n\t\tsession_id: entry.sdkSessionId,\n\t});\n\ttransitionToTurnSent(entry);\n\tif (request.signal?.aborted) turn.onAbort();\n\telse request.signal?.addEventListener(\"abort\", turn.onAbort, { once: true });\n\treturn promise;\n}\n"]}
|
|
@@ -2,12 +2,24 @@ import type { SDKMessage } from "./sdk-boundary.ts";
|
|
|
2
2
|
import type { AnthropicSubscriptionSessionEntry, AnthropicSubscriptionSessionRegistry } from "./session-registry.ts";
|
|
3
3
|
import type { ActiveTurn } from "./session-turn-types.ts";
|
|
4
4
|
export declare function deliver(entry: AnthropicSubscriptionSessionEntry, turn: ActiveTurn, message: SDKMessage): void;
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Claude Code echoes a submitted prompt before that turn's first API call, on the same ordered stream,
|
|
7
|
+
* so events ahead of our replay belong to a turn it is already running (an autonomous turn or a
|
|
8
|
+
* background subagent). Only main-thread events are held, as a bounded courtesy for an early event; a
|
|
9
|
+
* segment that outgrows the caps is another turn's and is dropped until that turn ends (senpi#2192).
|
|
10
|
+
*/
|
|
11
|
+
export declare function bufferBeforeReplay(registry: AnthropicSubscriptionSessionRegistry, entry: AnthropicSubscriptionSessionEntry, turn: ActiveTurn, message: Extract<SDKMessage, {
|
|
12
|
+
type: "stream_event";
|
|
13
|
+
}>): void;
|
|
14
|
+
export declare function endForeignTurnBeforeReplay(turn: ActiveTurn): void;
|
|
6
15
|
export declare function claimTurn(entry: AnthropicSubscriptionSessionEntry, turn: ActiveTurn): SDKMessage[];
|
|
7
16
|
export declare function isReplayFor(message: SDKMessage, uuid: string): boolean;
|
|
8
17
|
export declare function isAutonomousResult(message: Extract<SDKMessage, {
|
|
9
18
|
type: "result";
|
|
10
19
|
}>): boolean;
|
|
20
|
+
export declare function isForeignResult(message: Extract<SDKMessage, {
|
|
21
|
+
type: "result";
|
|
22
|
+
}>, turn: ActiveTurn): boolean;
|
|
11
23
|
export declare function resultMatchesTurn(message: Extract<SDKMessage, {
|
|
12
24
|
type: "result";
|
|
13
25
|
}>, turn: ActiveTurn): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-turn-claim.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-turn-claim.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iCAAiC,EAAE,oCAAoC,EAAE,MAAM,uBAAuB,CAAC;AAErH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-turn-claim.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-turn-claim.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iCAAiC,EAAE,oCAAoC,EAAE,MAAM,uBAAuB,CAAC;AAErH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,wBAAgB,OAAO,CAAC,KAAK,EAAE,iCAAiC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAI7G;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,oCAAoC,EAC9C,KAAK,EAAE,iCAAiC,EACxC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,GACpD,IAAI,CAUN;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAGjE;AAOD,wBAAgB,SAAS,CAAC,KAAK,EAAE,iCAAiC,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,CAMlG;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,GAAG,OAAO,CAQ5F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAK3G;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAK7G"}
|
|
@@ -1,21 +1,38 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { transitionToTurnClaimed, transitionToTurnStreaming } from "./session-registry-state.js";
|
|
3
|
-
import { SessionTurnAttributionError } from "./session-turn-types.js";
|
|
4
3
|
export function deliver(entry, turn, message) {
|
|
5
4
|
if (entry.state === "TURN_CLAIMED")
|
|
6
5
|
transitionToTurnStreaming(entry);
|
|
7
6
|
turn.messages.push(message);
|
|
8
7
|
turn.onMessage?.(message);
|
|
9
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Claude Code echoes a submitted prompt before that turn's first API call, on the same ordered stream,
|
|
11
|
+
* so events ahead of our replay belong to a turn it is already running (an autonomous turn or a
|
|
12
|
+
* background subagent). Only main-thread events are held, as a bounded courtesy for an early event; a
|
|
13
|
+
* segment that outgrows the caps is another turn's and is dropped until that turn ends (senpi#2192).
|
|
14
|
+
*/
|
|
10
15
|
export function bufferBeforeReplay(registry, entry, turn, message) {
|
|
16
|
+
if (message.parent_tool_use_id !== null || turn.preReplayOverflowed)
|
|
17
|
+
return;
|
|
11
18
|
turn.preReplay.push(message);
|
|
12
19
|
turn.preReplayBytes += Buffer.byteLength(JSON.stringify(message));
|
|
13
20
|
if (turn.preReplay.length > turn.limits.maxMessages || turn.preReplayBytes > turn.limits.maxBytes) {
|
|
14
|
-
|
|
21
|
+
dropPreReplay(turn);
|
|
22
|
+
turn.preReplayOverflowed = true;
|
|
23
|
+
return;
|
|
15
24
|
}
|
|
16
25
|
if (!registry.isCurrentGeneration(entry.senpiSessionId, turn.generation))
|
|
17
26
|
turn.preReplay.length = 0;
|
|
18
27
|
}
|
|
28
|
+
export function endForeignTurnBeforeReplay(turn) {
|
|
29
|
+
dropPreReplay(turn);
|
|
30
|
+
turn.preReplayOverflowed = false;
|
|
31
|
+
}
|
|
32
|
+
function dropPreReplay(turn) {
|
|
33
|
+
turn.preReplay.length = 0;
|
|
34
|
+
turn.preReplayBytes = 0;
|
|
35
|
+
}
|
|
19
36
|
export function claimTurn(entry, turn) {
|
|
20
37
|
turn.claimed = true;
|
|
21
38
|
transitionToTurnClaimed(entry);
|
|
@@ -32,6 +49,12 @@ export function isAutonomousResult(message) {
|
|
|
32
49
|
const wire = message;
|
|
33
50
|
return wire.parent_tool_use_id != null || wire.subagent_type != null || wire.isSynthetic === true;
|
|
34
51
|
}
|
|
52
|
+
export function isForeignResult(message, turn) {
|
|
53
|
+
if ("user_message_uuid" in message && message.user_message_uuid !== undefined) {
|
|
54
|
+
return message.user_message_uuid !== turn.uuid;
|
|
55
|
+
}
|
|
56
|
+
return isAutonomousResult(message);
|
|
57
|
+
}
|
|
35
58
|
export function resultMatchesTurn(message, turn) {
|
|
36
59
|
if ("user_message_uuid" in message && message.user_message_uuid !== undefined) {
|
|
37
60
|
return message.user_message_uuid === turn.uuid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-turn-claim.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-turn-claim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"session-turn-claim.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-turn-claim.ts"],"names":[],"mappings":"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","sourcesContent":["import { Buffer } from \"node:buffer\";\nimport type { SDKMessage } from \"./sdk-boundary.ts\";\nimport type { AnthropicSubscriptionSessionEntry, AnthropicSubscriptionSessionRegistry } from \"./session-registry.ts\";\nimport { transitionToTurnClaimed, transitionToTurnStreaming } from \"./session-registry-state.ts\";\nimport type { ActiveTurn } from \"./session-turn-types.ts\";\n\nexport function deliver(entry: AnthropicSubscriptionSessionEntry, turn: ActiveTurn, message: SDKMessage): void {\n\tif (entry.state === \"TURN_CLAIMED\") transitionToTurnStreaming(entry);\n\tturn.messages.push(message);\n\tturn.onMessage?.(message);\n}\n\n/**\n * Claude Code echoes a submitted prompt before that turn's first API call, on the same ordered stream,\n * so events ahead of our replay belong to a turn it is already running (an autonomous turn or a\n * background subagent). Only main-thread events are held, as a bounded courtesy for an early event; a\n * segment that outgrows the caps is another turn's and is dropped until that turn ends (senpi#2192).\n */\nexport function bufferBeforeReplay(\n\tregistry: AnthropicSubscriptionSessionRegistry,\n\tentry: AnthropicSubscriptionSessionEntry,\n\tturn: ActiveTurn,\n\tmessage: Extract<SDKMessage, { type: \"stream_event\" }>,\n): void {\n\tif (message.parent_tool_use_id !== null || turn.preReplayOverflowed) return;\n\tturn.preReplay.push(message);\n\tturn.preReplayBytes += Buffer.byteLength(JSON.stringify(message));\n\tif (turn.preReplay.length > turn.limits.maxMessages || turn.preReplayBytes > turn.limits.maxBytes) {\n\t\tdropPreReplay(turn);\n\t\tturn.preReplayOverflowed = true;\n\t\treturn;\n\t}\n\tif (!registry.isCurrentGeneration(entry.senpiSessionId, turn.generation)) turn.preReplay.length = 0;\n}\n\nexport function endForeignTurnBeforeReplay(turn: ActiveTurn): void {\n\tdropPreReplay(turn);\n\tturn.preReplayOverflowed = false;\n}\n\nfunction dropPreReplay(turn: ActiveTurn): void {\n\tturn.preReplay.length = 0;\n\tturn.preReplayBytes = 0;\n}\n\nexport function claimTurn(entry: AnthropicSubscriptionSessionEntry, turn: ActiveTurn): SDKMessage[] {\n\tturn.claimed = true;\n\ttransitionToTurnClaimed(entry);\n\tconst buffered = turn.preReplay.splice(0);\n\tturn.preReplayBytes = 0;\n\treturn buffered;\n}\n\nexport function isReplayFor(message: SDKMessage, uuid: string): boolean {\n\treturn message.type === \"user\" && \"isReplay\" in message && message.isReplay === true && message.uuid === uuid;\n}\n\nexport function isAutonomousResult(message: Extract<SDKMessage, { type: \"result\" }>): boolean {\n\tif (message.origin && message.origin.kind !== \"human\") return true;\n\tconst wire = message as SDKMessage & {\n\t\tparent_tool_use_id?: unknown;\n\t\tsubagent_type?: unknown;\n\t\tisSynthetic?: unknown;\n\t};\n\treturn wire.parent_tool_use_id != null || wire.subagent_type != null || wire.isSynthetic === true;\n}\n\nexport function isForeignResult(message: Extract<SDKMessage, { type: \"result\" }>, turn: ActiveTurn): boolean {\n\tif (\"user_message_uuid\" in message && message.user_message_uuid !== undefined) {\n\t\treturn message.user_message_uuid !== turn.uuid;\n\t}\n\treturn isAutonomousResult(message);\n}\n\nexport function resultMatchesTurn(message: Extract<SDKMessage, { type: \"result\" }>, turn: ActiveTurn): boolean {\n\tif (\"user_message_uuid\" in message && message.user_message_uuid !== undefined) {\n\t\treturn message.user_message_uuid === turn.uuid;\n\t}\n\treturn turn.claimed && !isAutonomousResult(message);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-turn-types.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-turn-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,uCAAuC;IAEpD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD"}
|
|
1
|
+
{"version":3,"file":"session-turn-types.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-turn-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,uCAAuC;IAEpD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-turn-types.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-turn-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-turn-types.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-subscription/session-turn-types.ts"],"names":[],"mappings":"AAgCA,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAGrD,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHP,SAAI,GAAG,mCAAmC,CAAC;QAInD,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC3C,CAAC;CACD","sourcesContent":["import type { SDKMessage } from \"./sdk-boundary.ts\";\n\nexport interface SessionTurnResult {\n\tuuid: string;\n\tmessages: SDKMessage[];\n\taborted: boolean;\n}\n\nexport interface ActiveTurn {\n\tuuid: string;\n\tgeneration: number;\n\tmessages: SDKMessage[];\n\tpreReplay: SDKMessage[];\n\tpreReplayBytes: number;\n\tpreReplayOverflowed: boolean;\n\tclaimed: boolean;\n\taborted: boolean;\n\tinterruptReceipt?: unknown;\n\tonMessage?: (message: SDKMessage) => void;\n\tsignal?: AbortSignal;\n\tonAbort: () => void;\n\tcancelAbort?: () => void;\n\tresolve: (result: SessionTurnResult) => void;\n\treject: (error: Error) => void;\n\tlimits: PreReplayBufferLimits;\n}\n\nexport interface PreReplayBufferLimits {\n\tmaxMessages: number;\n\tmaxBytes: number;\n}\n\nexport class SessionTurnAttributionError extends Error {\n\treadonly code = \"claude_sdk_oauth_turn_attribution\";\n\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"SessionTurnAttributionError\";\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYpD,OAAO,aAAa,MAAM,WAAW,CAAC;AACtC,OAAO,cAAc,MAAM,YAAY,CAAC;AAoBxC,OAAO,wBAAwB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYpD,OAAO,aAAa,MAAM,WAAW,CAAC;AACtC,OAAO,cAAc,MAAM,YAAY,CAAC;AAoBxC,OAAO,wBAAwB,MAAM,wBAAwB,CAAC;AAW9D,OAAO,YAAY,MAAM,UAAU,CAAC;AAMpC,MAAM,WAAW,uBAAuB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,gBAAgB,CAAC;CAC1B;AAED,eAAO,MAAM,yBAAyB,YAAI,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,CAAU,CAAC;AAEhG,eAAO,MAAM,+BAA+B;;;;;CAKoC,CAAC;AAEjF,eAAO,MAAM,iBAAiB,EAAE,uBAAuB,EAyDtD,CAAC"}
|
|
@@ -34,6 +34,7 @@ import promptUrlWidgetExtension from "./prompt-url-widget.js";
|
|
|
34
34
|
import reasoningExtension from "./reasoning/index.js";
|
|
35
35
|
import recommendedModelsExtension from "./recommended-models/index.js";
|
|
36
36
|
import redrawsExtension from "./redraws.js";
|
|
37
|
+
import repositoryIdentityExtension from "./repository-identity.js";
|
|
37
38
|
import piRulesExtension from "./rules/index.js";
|
|
38
39
|
import serviceTierExtension from "./service-tier.js";
|
|
39
40
|
import terminalExtension from "./terminal/index.js";
|
|
@@ -84,6 +85,7 @@ export const builtinExtensions = [
|
|
|
84
85
|
{ id: "history-search", factory: historySearchExtension },
|
|
85
86
|
{ id: "help", factory: helpExtension },
|
|
86
87
|
{ id: "import-repro", factory: importReproExtension },
|
|
88
|
+
{ id: "repository-identity", factory: repositoryIdentityExtension },
|
|
87
89
|
{ id: "websearch", factory: websearchExtension },
|
|
88
90
|
{ id: "webfetch", factory: webfetchExtension },
|
|
89
91
|
{ id: "video-in", factory: videoInExtension },
|
|
@@ -1 +1 @@
|
|
|
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 accountExtension from \"./account/index.ts\";\nimport anthropicBashExtension from \"./anthropic-bash/index.ts\";\nimport anthropicSubscriptionExtension from \"./anthropic-subscription/index.ts\";\nimport anthropicWebSearchExtension from \"./anthropic-web-search/index.ts\";\nimport askUserExtension from \"./ask-user/index.ts\";\nimport bashTimeoutExtension from \"./bash-timeout/index.ts\";\nimport btwExtension from \"./btw/index.ts\";\nimport cacheKeepAliveExtension from \"./cache-keepalive/index.ts\";\nimport compactionExtension from \"./compaction/index.ts\";\nimport configReloadExtension from \"./config-reload/index.ts\";\nimport cursorCliOauthExtension from \"./cursor-cli-oauth/index.ts\";\nimport diffExtension from \"./diff.ts\";\nimport filesExtension from \"./files.ts\";\nimport goalExtension from \"./goal/index.ts\";\nimport gptAccountExtension from \"./gpt-account.ts\";\nimport gptApplyPatchExtension from \"./gpt-apply-patch/index.ts\";\nimport helpExtension from \"./help/index.ts\";\nimport herdrExtension from \"./herdr/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 loopExtension from \"./loop/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 reasoningExtension from \"./reasoning/index.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// Loop guard owns the first veto opportunity so repeated calls never re-run hooks or permission prompts.\n\t{ id: \"loop-guard\", factory: loopGuardExtension },\n\t{ id: \"hooks\", factory: hooksExtension },\n\t{ id: \"permission-system\", factory: permissionSystemExtension },\n\t{ id: \"gpt-apply-patch\", factory: gptApplyPatchExtension },\n\t{ id: \"ask-user\", factory: askUserExtension },\n\t{ id: \"herdr\", factory: herdrExtension },\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// Sits beside service-tier: both are capability-aware model-control commands that only read\n\t// the active model and notify; neither mutates payloads, so relative order is not load-bearing.\n\t{ id: \"reasoning\", factory: reasoningExtension },\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: \"loop\", factory: loopExtension },\n\t{ id: \"cache-keepalive\", factory: cacheKeepAliveExtension },\n\t{ id: \"ttsr\", factory: ttsrExtension },\n\t{ id: \"btw\", factory: btwExtension },\n\t// Provider-neutral account listing; sits before the provider lanes so their\n\t// dedicated commands (claude-account, cursor accounts) keep their own names.\n\t{ id: \"account\", factory: accountExtension },\n\t{ id: \"gpt-account\", factory: gptAccountExtension },\n\t{ id: \"claude-sdk-oauth\", factory: anthropicSubscriptionExtension },\n\t// Registers unconditionally and reports executable/auth state through its oauth check, so it stays beside the other provider lane.\n\t{ id: \"cursor-cli-oauth\", factory: cursorCliOauthExtension },\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"]}
|
|
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 accountExtension from \"./account/index.ts\";\nimport anthropicBashExtension from \"./anthropic-bash/index.ts\";\nimport anthropicSubscriptionExtension from \"./anthropic-subscription/index.ts\";\nimport anthropicWebSearchExtension from \"./anthropic-web-search/index.ts\";\nimport askUserExtension from \"./ask-user/index.ts\";\nimport bashTimeoutExtension from \"./bash-timeout/index.ts\";\nimport btwExtension from \"./btw/index.ts\";\nimport cacheKeepAliveExtension from \"./cache-keepalive/index.ts\";\nimport compactionExtension from \"./compaction/index.ts\";\nimport configReloadExtension from \"./config-reload/index.ts\";\nimport cursorCliOauthExtension from \"./cursor-cli-oauth/index.ts\";\nimport diffExtension from \"./diff.ts\";\nimport filesExtension from \"./files.ts\";\nimport goalExtension from \"./goal/index.ts\";\nimport gptAccountExtension from \"./gpt-account.ts\";\nimport gptApplyPatchExtension from \"./gpt-apply-patch/index.ts\";\nimport helpExtension from \"./help/index.ts\";\nimport herdrExtension from \"./herdr/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 loopExtension from \"./loop/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 reasoningExtension from \"./reasoning/index.ts\";\nimport recommendedModelsExtension from \"./recommended-models/index.ts\";\nimport redrawsExtension from \"./redraws.ts\";\nimport repositoryIdentityExtension from \"./repository-identity.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// Loop guard owns the first veto opportunity so repeated calls never re-run hooks or permission prompts.\n\t{ id: \"loop-guard\", factory: loopGuardExtension },\n\t{ id: \"hooks\", factory: hooksExtension },\n\t{ id: \"permission-system\", factory: permissionSystemExtension },\n\t{ id: \"gpt-apply-patch\", factory: gptApplyPatchExtension },\n\t{ id: \"ask-user\", factory: askUserExtension },\n\t{ id: \"herdr\", factory: herdrExtension },\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// Sits beside service-tier: both are capability-aware model-control commands that only read\n\t// the active model and notify; neither mutates payloads, so relative order is not load-bearing.\n\t{ id: \"reasoning\", factory: reasoningExtension },\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: \"repository-identity\", factory: repositoryIdentityExtension },\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: \"loop\", factory: loopExtension },\n\t{ id: \"cache-keepalive\", factory: cacheKeepAliveExtension },\n\t{ id: \"ttsr\", factory: ttsrExtension },\n\t{ id: \"btw\", factory: btwExtension },\n\t// Provider-neutral account listing; sits before the provider lanes so their\n\t// dedicated commands (claude-account, cursor accounts) keep their own names.\n\t{ id: \"account\", factory: accountExtension },\n\t{ id: \"gpt-account\", factory: gptAccountExtension },\n\t{ id: \"claude-sdk-oauth\", factory: anthropicSubscriptionExtension },\n\t// Registers unconditionally and reports executable/auth state through its oauth check, so it stays beside the other provider lane.\n\t{ id: \"cursor-cli-oauth\", factory: cursorCliOauthExtension },\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"]}
|
|
@@ -21,6 +21,9 @@ export interface McpToolCatalogEntry {
|
|
|
21
21
|
}
|
|
22
22
|
type McpToolCatalogOptions = Pick<McpToolCatalogEntry, "agentDir" | "artifacts" | "ensureFresh" | "outputGuard">;
|
|
23
23
|
export declare function collectToolCatalog(server: string, connection: ServerConnection, config: McpServerConfig, options?: McpToolCatalogOptions): Promise<McpToolCatalogEntry[]>;
|
|
24
|
+
/** What registering these tools with this catalog's resources and prompts exposes;
|
|
25
|
+
* equal identities register identical definitions. */
|
|
26
|
+
export declare function mcpRegistrationIdentity(tools: readonly McpToolCatalogEntry[], catalog: McpCachedServerCatalog | undefined): string;
|
|
24
27
|
export declare function cachedToolsToCatalogEntries(server: string, catalog: McpCachedServerCatalog, connection: ServerConnection, requestTimeoutMs: number, ensureConnected: () => Promise<void>, options?: McpToolCatalogOptions): McpToolCatalogEntry[];
|
|
25
28
|
export {};
|
|
26
29
|
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CACzC;AAED,KAAK,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC;AAEjH,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiBhC;AAED,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,EAC/B,UAAU,EAAE,gBAAgB,EAC5B,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,OAAO,GAAE,qBAA0B,GACjC,mBAAmB,EAAE,CAevB"}
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CACzC;AAED,KAAK,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC;AAEjH,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiBhC;AAED;sDACsD;AACtD,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,OAAO,EAAE,sBAAsB,GAAG,SAAS,GACzC,MAAM,CAMR;AAED,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,EAC/B,UAAU,EAAE,gBAAgB,EAC5B,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,OAAO,GAAE,qBAA0B,GACjC,mBAAmB,EAAE,CAevB"}
|
|
@@ -15,6 +15,15 @@ export async function collectToolCatalog(server, connection, config, options = {
|
|
|
15
15
|
tool: tool.name,
|
|
16
16
|
}));
|
|
17
17
|
}
|
|
18
|
+
/** What registering these tools with this catalog's resources and prompts exposes;
|
|
19
|
+
* equal identities register identical definitions. */
|
|
20
|
+
export function mcpRegistrationIdentity(tools, catalog) {
|
|
21
|
+
return JSON.stringify([
|
|
22
|
+
tools.map((entry) => [entry.tool, entry.description, entry.schema, entry.annotations]),
|
|
23
|
+
catalog?.resources ?? [],
|
|
24
|
+
catalog?.prompts ?? [],
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
18
27
|
export function cachedToolsToCatalogEntries(server, catalog, connection, requestTimeoutMs, ensureConnected, options = {}) {
|
|
19
28
|
return catalog.tools.map((tool) => ({
|
|
20
29
|
annotations: tool.annotations,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuBzD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,MAAc,EACd,UAA4B,EAC5B,MAAuB,EACvB,OAAO,GAA0B,EAAE;IAEnC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAa,CAAC,MAAM,EAAE,EAAE,CAC3D,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CACzG,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU;QACV,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,MAAM,EAAE,IAAI,CAAC,WAAW;QACxB,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;KACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAC1C,MAAc,EACd,OAA+B,EAC/B,UAA4B,EAC5B,gBAAwB,EACxB,eAAoC,EACpC,OAAO,GAA0B,EAAE;IAEnC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU;QACV,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,eAAe;QACf,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,gBAAgB;QAChB,MAAM,EAAE,IAAI,CAAC,WAAW;QACxB,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;KACf,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport type { McpCachedServerCatalog } from \"./catalog-cache.ts\";\nimport type { McpServerConfig, McpSettings } from \"./config-schema.ts\";\nimport type { ServerConnection } from \"./connection.ts\";\nimport { collectAllPages } from \"./expose/pagination.ts\";\nimport type { McpOutputArtifacts } from \"./guard/output-guard.ts\";\nimport type { McpEnsureFreshAuth } from \"./health.ts\";\n\ntype ListedTool = Awaited<ReturnType<Client[\"listTools\"]>>[\"tools\"][number];\n\nexport interface McpToolCatalogEntry {\n\tserver: string;\n\ttool: string;\n\tschema: ListedTool[\"inputSchema\"];\n\tdescription?: string;\n\tannotations?: ListedTool[\"annotations\"];\n\trequestTimeoutMs: number;\n\tconnection: ServerConnection;\n\tensureConnected?: () => Promise<void>;\n\tensureFresh?: McpEnsureFreshAuth;\n\tagentDir?: string;\n\tartifacts?: McpOutputArtifacts;\n\toutputGuard?: McpSettings[\"outputGuard\"];\n}\n\ntype McpToolCatalogOptions = Pick<McpToolCatalogEntry, \"agentDir\" | \"artifacts\" | \"ensureFresh\" | \"outputGuard\">;\n\nexport async function collectToolCatalog(\n\tserver: string,\n\tconnection: ServerConnection,\n\tconfig: McpServerConfig,\n\toptions: McpToolCatalogOptions = {},\n): Promise<McpToolCatalogEntry[]> {\n\tconst result = await collectAllPages<ListedTool>((cursor) =>\n\t\tconnection.client.listTools(cursor === undefined ? {} : { cursor }, { timeout: config.requestTimeoutMs }),\n\t);\n\treturn result.items.map((tool) => ({\n\t\tannotations: tool.annotations,\n\t\tagentDir: options.agentDir,\n\t\tartifacts: options.artifacts,\n\t\tconnection,\n\t\tdescription: tool.description,\n\t\tensureFresh: options.ensureFresh,\n\t\toutputGuard: options.outputGuard,\n\t\trequestTimeoutMs: config.requestTimeoutMs,\n\t\tschema: tool.inputSchema,\n\t\tserver,\n\t\ttool: tool.name,\n\t}));\n}\n\nexport function cachedToolsToCatalogEntries(\n\tserver: string,\n\tcatalog: McpCachedServerCatalog,\n\tconnection: ServerConnection,\n\trequestTimeoutMs: number,\n\tensureConnected: () => Promise<void>,\n\toptions: McpToolCatalogOptions = {},\n): McpToolCatalogEntry[] {\n\treturn catalog.tools.map((tool) => ({\n\t\tannotations: tool.annotations,\n\t\tagentDir: options.agentDir,\n\t\tartifacts: options.artifacts,\n\t\tconnection,\n\t\tdescription: tool.description,\n\t\tensureConnected,\n\t\tensureFresh: options.ensureFresh,\n\t\toutputGuard: options.outputGuard,\n\t\trequestTimeoutMs,\n\t\tschema: tool.inputSchema,\n\t\tserver,\n\t\ttool: tool.name,\n\t}));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuBzD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,MAAc,EACd,UAA4B,EAC5B,MAAuB,EACvB,OAAO,GAA0B,EAAE;IAEnC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAa,CAAC,MAAM,EAAE,EAAE,CAC3D,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CACzG,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU;QACV,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,MAAM,EAAE,IAAI,CAAC,WAAW;QACxB,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;KACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;sDACsD;AACtD,MAAM,UAAU,uBAAuB,CACtC,KAAqC,EACrC,OAA2C;IAE3C,OAAO,IAAI,CAAC,SAAS,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACtF,OAAO,EAAE,SAAS,IAAI,EAAE;QACxB,OAAO,EAAE,OAAO,IAAI,EAAE;KACtB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAC1C,MAAc,EACd,OAA+B,EAC/B,UAA4B,EAC5B,gBAAwB,EACxB,eAAoC,EACpC,OAAO,GAA0B,EAAE;IAEnC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU;QACV,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,eAAe;QACf,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,gBAAgB;QAChB,MAAM,EAAE,IAAI,CAAC,WAAW;QACxB,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;KACf,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport type { McpCachedServerCatalog } from \"./catalog-cache.ts\";\nimport type { McpServerConfig, McpSettings } from \"./config-schema.ts\";\nimport type { ServerConnection } from \"./connection.ts\";\nimport { collectAllPages } from \"./expose/pagination.ts\";\nimport type { McpOutputArtifacts } from \"./guard/output-guard.ts\";\nimport type { McpEnsureFreshAuth } from \"./health.ts\";\n\ntype ListedTool = Awaited<ReturnType<Client[\"listTools\"]>>[\"tools\"][number];\n\nexport interface McpToolCatalogEntry {\n\tserver: string;\n\ttool: string;\n\tschema: ListedTool[\"inputSchema\"];\n\tdescription?: string;\n\tannotations?: ListedTool[\"annotations\"];\n\trequestTimeoutMs: number;\n\tconnection: ServerConnection;\n\tensureConnected?: () => Promise<void>;\n\tensureFresh?: McpEnsureFreshAuth;\n\tagentDir?: string;\n\tartifacts?: McpOutputArtifacts;\n\toutputGuard?: McpSettings[\"outputGuard\"];\n}\n\ntype McpToolCatalogOptions = Pick<McpToolCatalogEntry, \"agentDir\" | \"artifacts\" | \"ensureFresh\" | \"outputGuard\">;\n\nexport async function collectToolCatalog(\n\tserver: string,\n\tconnection: ServerConnection,\n\tconfig: McpServerConfig,\n\toptions: McpToolCatalogOptions = {},\n): Promise<McpToolCatalogEntry[]> {\n\tconst result = await collectAllPages<ListedTool>((cursor) =>\n\t\tconnection.client.listTools(cursor === undefined ? {} : { cursor }, { timeout: config.requestTimeoutMs }),\n\t);\n\treturn result.items.map((tool) => ({\n\t\tannotations: tool.annotations,\n\t\tagentDir: options.agentDir,\n\t\tartifacts: options.artifacts,\n\t\tconnection,\n\t\tdescription: tool.description,\n\t\tensureFresh: options.ensureFresh,\n\t\toutputGuard: options.outputGuard,\n\t\trequestTimeoutMs: config.requestTimeoutMs,\n\t\tschema: tool.inputSchema,\n\t\tserver,\n\t\ttool: tool.name,\n\t}));\n}\n\n/** What registering these tools with this catalog's resources and prompts exposes;\n * equal identities register identical definitions. */\nexport function mcpRegistrationIdentity(\n\ttools: readonly McpToolCatalogEntry[],\n\tcatalog: McpCachedServerCatalog | undefined,\n): string {\n\treturn JSON.stringify([\n\t\ttools.map((entry) => [entry.tool, entry.description, entry.schema, entry.annotations]),\n\t\tcatalog?.resources ?? [],\n\t\tcatalog?.prompts ?? [],\n\t]);\n}\n\nexport function cachedToolsToCatalogEntries(\n\tserver: string,\n\tcatalog: McpCachedServerCatalog,\n\tconnection: ServerConnection,\n\trequestTimeoutMs: number,\n\tensureConnected: () => Promise<void>,\n\toptions: McpToolCatalogOptions = {},\n): McpToolCatalogEntry[] {\n\treturn catalog.tools.map((tool) => ({\n\t\tannotations: tool.annotations,\n\t\tagentDir: options.agentDir,\n\t\tartifacts: options.artifacts,\n\t\tconnection,\n\t\tdescription: tool.description,\n\t\tensureConnected,\n\t\tensureFresh: options.ensureFresh,\n\t\toutputGuard: options.outputGuard,\n\t\trequestTimeoutMs,\n\t\tschema: tool.inputSchema,\n\t\tserver,\n\t\ttool: tool.name,\n\t}));\n}\n"]}
|
|
@@ -15,6 +15,8 @@ export type ServerConnectionToolsChangedEvent = {
|
|
|
15
15
|
readonly type: "tools_changed";
|
|
16
16
|
readonly serverName: string;
|
|
17
17
|
readonly generation: number;
|
|
18
|
+
/** `connect`: raised by every successful connect; `notification`: anything that reports a change. */
|
|
19
|
+
readonly cause: "connect" | "notification";
|
|
18
20
|
};
|
|
19
21
|
export interface ServerConnectionOptions {
|
|
20
22
|
readonly serverName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-types.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/connection-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAC9B,UAAU,GACV,MAAM,GACN,YAAY,GACZ,WAAW,GACX,UAAU,GACV,WAAW,GACX,YAAY,GACZ,2BAA2B,CAAC;AAE/B,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"connection-types.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/connection-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAC9B,UAAU,GACV,MAAM,GACN,YAAY,GACZ,WAAW,GACX,UAAU,GACV,WAAW,GACX,YAAY,GACZ,2BAA2B,CAAC;AAE/B,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qGAAqG;IACrG,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CAAC;CAC3C,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,wBAAwB,CAAC;CAC1D;AAED,MAAM,MAAM,wBAAwB,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-types.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/connection-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { McpOAuthProvider } from \"./auth/oauth-provider.ts\";\nimport type { McpServerConfig } from \"./config-schema.ts\";\nimport type { McpElicitationUiProvider } from \"./elicitation.ts\";\nimport type { McpLogger } from \"./log.ts\";\n\nexport type ServerConnectionState =\n\t| \"disabled\"\n\t| \"idle\"\n\t| \"connecting\"\n\t| \"connected\"\n\t| \"degraded\"\n\t| \"suspended\"\n\t| \"needs_auth\"\n\t| \"needs_client_registration\";\n\nexport type ServerConnectionStateChangedEvent = {\n\treadonly type: \"state_changed\";\n\treadonly serverName: string;\n\treadonly generation: number;\n\treadonly state: ServerConnectionState;\n\treadonly previousState: ServerConnectionState;\n\treadonly error?: Error;\n};\n\nexport type ServerConnectionToolsChangedEvent = {\n\treadonly type: \"tools_changed\";\n\treadonly serverName: string;\n\treadonly generation: number;\n};\n\nexport interface ServerConnectionOptions {\n\treadonly serverName: string;\n\treadonly config: McpServerConfig;\n\treadonly logger: McpLogger;\n\treadonly env?: Record<string, string | undefined>;\n\treadonly authProvider?: McpOAuthProvider;\n\treadonly elicitationUiProvider?: McpElicitationUiProvider;\n}\n\nexport type ServerConnectionListener<TEvent> = (event: TEvent) => void | Promise<void>;\n"]}
|
|
1
|
+
{"version":3,"file":"connection-types.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/connection-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { McpOAuthProvider } from \"./auth/oauth-provider.ts\";\nimport type { McpServerConfig } from \"./config-schema.ts\";\nimport type { McpElicitationUiProvider } from \"./elicitation.ts\";\nimport type { McpLogger } from \"./log.ts\";\n\nexport type ServerConnectionState =\n\t| \"disabled\"\n\t| \"idle\"\n\t| \"connecting\"\n\t| \"connected\"\n\t| \"degraded\"\n\t| \"suspended\"\n\t| \"needs_auth\"\n\t| \"needs_client_registration\";\n\nexport type ServerConnectionStateChangedEvent = {\n\treadonly type: \"state_changed\";\n\treadonly serverName: string;\n\treadonly generation: number;\n\treadonly state: ServerConnectionState;\n\treadonly previousState: ServerConnectionState;\n\treadonly error?: Error;\n};\n\nexport type ServerConnectionToolsChangedEvent = {\n\treadonly type: \"tools_changed\";\n\treadonly serverName: string;\n\treadonly generation: number;\n\t/** `connect`: raised by every successful connect; `notification`: anything that reports a change. */\n\treadonly cause: \"connect\" | \"notification\";\n};\n\nexport interface ServerConnectionOptions {\n\treadonly serverName: string;\n\treadonly config: McpServerConfig;\n\treadonly logger: McpLogger;\n\treadonly env?: Record<string, string | undefined>;\n\treadonly authProvider?: McpOAuthProvider;\n\treadonly elicitationUiProvider?: McpElicitationUiProvider;\n}\n\nexport type ServerConnectionListener<TEvent> = (event: TEvent) => void | Promise<void>;\n"]}
|
|
@@ -20,7 +20,7 @@ export declare class ServerConnection {
|
|
|
20
20
|
markSuspended(error?: Error): void;
|
|
21
21
|
markNeedsAuth(error?: Error): void;
|
|
22
22
|
markNeedsClientRegistration(error?: Error): void;
|
|
23
|
-
markToolsChanged(): void;
|
|
23
|
+
markToolsChanged(cause?: ServerConnectionToolsChangedEvent["cause"]): void;
|
|
24
24
|
onStateChange(listener: ServerConnectionListener<ServerConnectionStateChangedEvent>): () => void;
|
|
25
25
|
onToolsChanged(listener: ServerConnectionListener<ServerConnectionToolsChangedEvent>): () => void;
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE,OAAO,KAAK,EACX,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,iCAAiC,EACjC,iCAAiC,EACjC,MAAM,uBAAuB,CAAC;AAgB/B,YAAY,EACX,uBAAuB,EACvB,qBAAqB,EACrB,iCAAiC,EACjC,iCAAiC,GACjC,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,gBAAgB;;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAgB5B,YAAY,OAAO,EAAE,uBAAuB,EAQ3C;IAED,IAAI,KAAK,IAAI,qBAAqB,CAEjC;IACD,IAAI,SAAS,IAAI,KAAK,GAAG,SAAS,CAEjC;IACD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,0BAA0B,IAAI,IAAI,CAajC;IAED,IAAI,MAAM,IAAI,MAAM,CAQnB;IAED,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1B;IACD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAYzB;IAgBK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAS7B;IAED,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAM9B;IAED,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7B;IAED,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE/B;IACD,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAEjC;IACD,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAEjC;IACD,2BAA2B,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAE/C;IAED,gBAAgB,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/mcp/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE,OAAO,KAAK,EACX,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,iCAAiC,EACjC,iCAAiC,EACjC,MAAM,uBAAuB,CAAC;AAgB/B,YAAY,EACX,uBAAuB,EACvB,qBAAqB,EACrB,iCAAiC,EACjC,iCAAiC,GACjC,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,gBAAgB;;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAgB5B,YAAY,OAAO,EAAE,uBAAuB,EAQ3C;IAED,IAAI,KAAK,IAAI,qBAAqB,CAEjC;IACD,IAAI,SAAS,IAAI,KAAK,GAAG,SAAS,CAEjC;IACD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,0BAA0B,IAAI,IAAI,CAajC;IAED,IAAI,MAAM,IAAI,MAAM,CAQnB;IAED,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1B;IACD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAYzB;IAgBK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAS7B;IAED,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAM9B;IAED,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7B;IAED,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE/B;IACD,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAEjC;IACD,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAEjC;IACD,2BAA2B,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAE/C;IAED,gBAAgB,CAAC,KAAK,GAAE,iCAAiC,CAAC,OAAO,CAAkB,GAAG,IAAI,CAOzF;IAED,aAAa,CAAC,QAAQ,EAAE,wBAAwB,CAAC,iCAAiC,CAAC,GAAG,MAAM,IAAI,CAG/F;IAED,cAAc,CAAC,QAAQ,EAAE,wBAAwB,CAAC,iCAAiC,CAAC,GAAG,MAAM,IAAI,CAGhG;CA+ID"}
|
|
@@ -140,11 +140,12 @@ export class ServerConnection {
|
|
|
140
140
|
markNeedsClientRegistration(error) {
|
|
141
141
|
this.#markFailure("needs_client_registration", error);
|
|
142
142
|
}
|
|
143
|
-
markToolsChanged() {
|
|
143
|
+
markToolsChanged(cause = "notification") {
|
|
144
144
|
this.#emit(this.#toolsListeners, {
|
|
145
145
|
type: "tools_changed",
|
|
146
146
|
serverName: this.serverName,
|
|
147
147
|
generation: this.#generation,
|
|
148
|
+
cause,
|
|
148
149
|
});
|
|
149
150
|
}
|
|
150
151
|
onStateChange(listener) {
|
|
@@ -233,7 +234,7 @@ export class ServerConnection {
|
|
|
233
234
|
// logger, filtered by config.logLevel, burst-capped.
|
|
234
235
|
subscribeMcpServerLogging(connection.client, { logLevel: this.#config.logLevel, logger: this.#logger });
|
|
235
236
|
this.#setState("connected");
|
|
236
|
-
this.markToolsChanged();
|
|
237
|
+
this.markToolsChanged("connect");
|
|
237
238
|
return connection.client;
|
|
238
239
|
}
|
|
239
240
|
async #disposeOwnedConnections() {
|