@prestyj/cli 5.10.0 → 5.11.0
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/README.md +3 -4
- package/dist/app-sidecar-auth-broadcast.test.d.ts +2 -0
- package/dist/app-sidecar-auth-broadcast.test.d.ts.map +1 -0
- package/dist/app-sidecar-auth-broadcast.test.js +282 -0
- package/dist/app-sidecar-auth-broadcast.test.js.map +1 -0
- package/dist/app-sidecar-sessions.d.ts +5 -2
- package/dist/app-sidecar-sessions.d.ts.map +1 -1
- package/dist/app-sidecar-sessions.js +34 -8
- package/dist/app-sidecar-sessions.js.map +1 -1
- package/dist/app-sidecar-sessions.test.js +95 -0
- package/dist/app-sidecar-sessions.test.js.map +1 -1
- package/dist/app-sidecar.js +497 -128
- package/dist/app-sidecar.js.map +1 -1
- package/dist/cli/command-routing.d.ts +1 -1
- package/dist/cli/command-routing.d.ts.map +1 -1
- package/dist/cli/command-routing.js +1 -0
- package/dist/cli/command-routing.js.map +1 -1
- package/dist/cli/command-routing.test.js +1 -0
- package/dist/cli/command-routing.test.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +167 -47
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +10 -1
- package/dist/config.test.js.map +1 -1
- package/dist/core/agent-notifications.d.ts +62 -0
- package/dist/core/agent-notifications.d.ts.map +1 -0
- package/dist/core/agent-notifications.js +92 -0
- package/dist/core/agent-notifications.js.map +1 -0
- package/dist/core/agent-notifications.test.d.ts +2 -0
- package/dist/core/agent-notifications.test.d.ts.map +1 -0
- package/dist/core/agent-notifications.test.js +97 -0
- package/dist/core/agent-notifications.test.js.map +1 -0
- package/dist/core/agent-session-checkpoint-flush.test.d.ts +2 -0
- package/dist/core/agent-session-checkpoint-flush.test.d.ts.map +1 -0
- package/dist/core/agent-session-checkpoint-flush.test.js +201 -0
- package/dist/core/agent-session-checkpoint-flush.test.js.map +1 -0
- package/dist/core/agent-session-compaction.test.js +323 -6
- package/dist/core/agent-session-compaction.test.js.map +1 -1
- package/dist/core/agent-session-crash-durability.test.d.ts +2 -0
- package/dist/core/agent-session-crash-durability.test.d.ts.map +1 -0
- package/dist/core/agent-session-crash-durability.test.js +102 -0
- package/dist/core/agent-session-crash-durability.test.js.map +1 -0
- package/dist/core/agent-session-marker-anchors.test.js +181 -2
- package/dist/core/agent-session-marker-anchors.test.js.map +1 -1
- package/dist/core/agent-session-model-switch.test.d.ts +2 -0
- package/dist/core/agent-session-model-switch.test.d.ts.map +1 -0
- package/dist/core/agent-session-model-switch.test.js +161 -0
- package/dist/core/agent-session-model-switch.test.js.map +1 -0
- package/dist/core/agent-session-notifications.test.d.ts +2 -0
- package/dist/core/agent-session-notifications.test.d.ts.map +1 -0
- package/dist/core/agent-session-notifications.test.js +114 -0
- package/dist/core/agent-session-notifications.test.js.map +1 -0
- package/dist/core/agent-session-process-gate.test.d.ts +2 -0
- package/dist/core/agent-session-process-gate.test.d.ts.map +1 -0
- package/dist/core/agent-session-process-gate.test.js +92 -0
- package/dist/core/agent-session-process-gate.test.js.map +1 -0
- package/dist/core/agent-session-queue.test.js +65 -0
- package/dist/core/agent-session-queue.test.js.map +1 -1
- package/dist/core/agent-session-review-coverage.test.js +80 -23
- package/dist/core/agent-session-review-coverage.test.js.map +1 -1
- package/dist/core/agent-session-slash-restore.test.d.ts +2 -0
- package/dist/core/agent-session-slash-restore.test.d.ts.map +1 -0
- package/dist/core/agent-session-slash-restore.test.js +121 -0
- package/dist/core/agent-session-slash-restore.test.js.map +1 -0
- package/dist/core/agent-session.d.ts +214 -10
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +978 -212
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/active-context.test.js +21 -0
- package/dist/core/compaction/active-context.test.js.map +1 -1
- package/dist/core/compaction/compactor.d.ts +108 -8
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +423 -119
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +360 -8
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/policy.d.ts +17 -0
- package/dist/core/compaction/policy.d.ts.map +1 -0
- package/dist/core/compaction/policy.js +22 -0
- package/dist/core/compaction/policy.js.map +1 -0
- package/dist/core/compaction/policy.test.d.ts +2 -0
- package/dist/core/compaction/policy.test.d.ts.map +1 -0
- package/dist/core/compaction/policy.test.js +35 -0
- package/dist/core/compaction/policy.test.js.map +1 -0
- package/dist/core/compaction/query-aware-selector.d.ts +33 -0
- package/dist/core/compaction/query-aware-selector.d.ts.map +1 -0
- package/dist/core/compaction/query-aware-selector.js +202 -0
- package/dist/core/compaction/query-aware-selector.js.map +1 -0
- package/dist/core/compaction/query-aware-selector.test.d.ts +2 -0
- package/dist/core/compaction/query-aware-selector.test.d.ts.map +1 -0
- package/dist/core/compaction/query-aware-selector.test.js +96 -0
- package/dist/core/compaction/query-aware-selector.test.js.map +1 -0
- package/dist/core/compaction/tool-result-pruner.d.ts +24 -11
- package/dist/core/compaction/tool-result-pruner.d.ts.map +1 -1
- package/dist/core/compaction/tool-result-pruner.js +98 -26
- package/dist/core/compaction/tool-result-pruner.js.map +1 -1
- package/dist/core/compaction/tool-result-pruner.test.js +178 -6
- package/dist/core/compaction/tool-result-pruner.test.js.map +1 -1
- package/dist/core/event-bus.d.ts +23 -0
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +10 -0
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +28 -8
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/plugin-bundles.d.ts +23 -0
- package/dist/core/extensions/plugin-bundles.d.ts.map +1 -0
- package/dist/core/extensions/plugin-bundles.js +228 -0
- package/dist/core/extensions/plugin-bundles.js.map +1 -0
- package/dist/core/extensions/plugin-bundles.test.d.ts +2 -0
- package/dist/core/extensions/plugin-bundles.test.d.ts.map +1 -0
- package/dist/core/extensions/plugin-bundles.test.js +110 -0
- package/dist/core/extensions/plugin-bundles.test.js.map +1 -0
- package/dist/core/foreign-session-import.d.ts +120 -0
- package/dist/core/foreign-session-import.d.ts.map +1 -0
- package/dist/core/foreign-session-import.js +598 -0
- package/dist/core/foreign-session-import.js.map +1 -0
- package/dist/core/foreign-session-import.test.d.ts +2 -0
- package/dist/core/foreign-session-import.test.d.ts.map +1 -0
- package/dist/core/foreign-session-import.test.js +220 -0
- package/dist/core/foreign-session-import.test.js.map +1 -0
- package/dist/core/foreign-transcript-blocks.d.ts +51 -0
- package/dist/core/foreign-transcript-blocks.d.ts.map +1 -0
- package/dist/core/foreign-transcript-blocks.js +151 -0
- package/dist/core/foreign-transcript-blocks.js.map +1 -0
- package/dist/core/ideal-review.d.ts +20 -1
- package/dist/core/ideal-review.d.ts.map +1 -1
- package/dist/core/ideal-review.js +37 -2
- package/dist/core/ideal-review.js.map +1 -1
- package/dist/core/ideal-review.test.js +99 -3
- package/dist/core/ideal-review.test.js.map +1 -1
- package/dist/core/loop-breaker.d.ts.map +1 -1
- package/dist/core/loop-breaker.js +1 -0
- package/dist/core/loop-breaker.js.map +1 -1
- package/dist/core/lsp/client.d.ts +15 -0
- package/dist/core/lsp/client.d.ts.map +1 -1
- package/dist/core/lsp/client.js +39 -1
- package/dist/core/lsp/client.js.map +1 -1
- package/dist/core/lsp/manager.d.ts +47 -9
- package/dist/core/lsp/manager.d.ts.map +1 -1
- package/dist/core/lsp/manager.js +96 -69
- package/dist/core/lsp/manager.js.map +1 -1
- package/dist/core/lsp/manager.test.js +18 -0
- package/dist/core/lsp/manager.test.js.map +1 -1
- package/dist/core/lsp/pool.d.ts +113 -0
- package/dist/core/lsp/pool.d.ts.map +1 -0
- package/dist/core/lsp/pool.js +255 -0
- package/dist/core/lsp/pool.js.map +1 -0
- package/dist/core/lsp/pool.test.d.ts +2 -0
- package/dist/core/lsp/pool.test.d.ts.map +1 -0
- package/dist/core/lsp/pool.test.js +286 -0
- package/dist/core/lsp/pool.test.js.map +1 -0
- package/dist/core/lsp/servers.d.ts.map +1 -1
- package/dist/core/lsp/servers.js +43 -3
- package/dist/core/lsp/servers.js.map +1 -1
- package/dist/core/lsp/servers.test.d.ts +2 -0
- package/dist/core/lsp/servers.test.d.ts.map +1 -0
- package/dist/core/lsp/servers.test.js +67 -0
- package/dist/core/lsp/servers.test.js.map +1 -0
- package/dist/core/lsp/windows.test.js +2 -14
- package/dist/core/lsp/windows.test.js.map +1 -1
- package/dist/core/mcp/catalog-cache.d.ts +63 -0
- package/dist/core/mcp/catalog-cache.d.ts.map +1 -0
- package/dist/core/mcp/catalog-cache.js +163 -0
- package/dist/core/mcp/catalog-cache.js.map +1 -0
- package/dist/core/mcp/catalog-cache.test.d.ts +2 -0
- package/dist/core/mcp/catalog-cache.test.d.ts.map +1 -0
- package/dist/core/mcp/catalog-cache.test.js +99 -0
- package/dist/core/mcp/catalog-cache.test.js.map +1 -0
- package/dist/core/mcp/client-session-recovery.test.d.ts +2 -0
- package/dist/core/mcp/client-session-recovery.test.d.ts.map +1 -0
- package/dist/core/mcp/client-session-recovery.test.js +231 -0
- package/dist/core/mcp/client-session-recovery.test.js.map +1 -0
- package/dist/core/mcp/client.d.ts +158 -0
- package/dist/core/mcp/client.d.ts.map +1 -1
- package/dist/core/mcp/client.js +476 -35
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/mcp/elicitation-bridge.d.ts +41 -0
- package/dist/core/mcp/elicitation-bridge.d.ts.map +1 -0
- package/dist/core/mcp/elicitation-bridge.js +52 -0
- package/dist/core/mcp/elicitation-bridge.js.map +1 -0
- package/dist/core/mcp/elicitation.test.d.ts +2 -0
- package/dist/core/mcp/elicitation.test.d.ts.map +1 -0
- package/dist/core/mcp/elicitation.test.js +158 -0
- package/dist/core/mcp/elicitation.test.js.map +1 -0
- package/dist/core/mcp/index.d.ts +5 -1
- package/dist/core/mcp/index.d.ts.map +1 -1
- package/dist/core/mcp/index.js +2 -0
- package/dist/core/mcp/index.js.map +1 -1
- package/dist/core/mcp/legacy-negotiation.test.d.ts +2 -0
- package/dist/core/mcp/legacy-negotiation.test.d.ts.map +1 -0
- package/dist/core/mcp/legacy-negotiation.test.js +80 -0
- package/dist/core/mcp/legacy-negotiation.test.js.map +1 -0
- package/dist/core/mcp/oauth-provider.d.ts +1 -2
- package/dist/core/mcp/oauth-provider.d.ts.map +1 -1
- package/dist/core/mcp/oauth-provider.js +6 -2
- package/dist/core/mcp/oauth-provider.js.map +1 -1
- package/dist/core/mcp/oauth-store.d.ts +1 -1
- package/dist/core/mcp/oauth-store.d.ts.map +1 -1
- package/dist/core/mcp/oauth-store.js.map +1 -1
- package/dist/core/mcp/session-elicitation-wiring.test.d.ts +2 -0
- package/dist/core/mcp/session-elicitation-wiring.test.d.ts.map +1 -0
- package/dist/core/mcp/session-elicitation-wiring.test.js +138 -0
- package/dist/core/mcp/session-elicitation-wiring.test.js.map +1 -0
- package/dist/core/mcp/shared-pool.d.ts +158 -0
- package/dist/core/mcp/shared-pool.d.ts.map +1 -0
- package/dist/core/mcp/shared-pool.js +235 -0
- package/dist/core/mcp/shared-pool.js.map +1 -0
- package/dist/core/mcp/shared-pool.test.d.ts +2 -0
- package/dist/core/mcp/shared-pool.test.d.ts.map +1 -0
- package/dist/core/mcp/shared-pool.test.js +425 -0
- package/dist/core/mcp/shared-pool.test.js.map +1 -0
- package/dist/core/mcp/types.d.ts +12 -0
- package/dist/core/mcp/types.d.ts.map +1 -1
- package/dist/core/mcp/when-connected.test.d.ts +2 -0
- package/dist/core/mcp/when-connected.test.d.ts.map +1 -0
- package/dist/core/mcp/when-connected.test.js +46 -0
- package/dist/core/mcp/when-connected.test.js.map +1 -0
- package/dist/core/nolan-context.d.ts.map +1 -1
- package/dist/core/nolan-context.js +8 -0
- package/dist/core/nolan-context.js.map +1 -1
- package/dist/core/nolan-context.test.js +40 -0
- package/dist/core/nolan-context.test.js.map +1 -1
- package/dist/core/nolan-prompt.js +3 -0
- package/dist/core/nolan-prompt.js.map +1 -1
- package/dist/core/nolan-prompt.test.js +5 -0
- package/dist/core/nolan-prompt.test.js.map +1 -1
- package/dist/core/persistent-shell.d.ts +3 -2
- package/dist/core/persistent-shell.d.ts.map +1 -1
- package/dist/core/persistent-shell.js +10 -3
- package/dist/core/persistent-shell.js.map +1 -1
- package/dist/core/process-gate.d.ts +45 -0
- package/dist/core/process-gate.d.ts.map +1 -0
- package/dist/core/process-gate.js +79 -0
- package/dist/core/process-gate.js.map +1 -0
- package/dist/core/process-gate.test.d.ts +2 -0
- package/dist/core/process-gate.test.d.ts.map +1 -0
- package/dist/core/process-gate.test.js +87 -0
- package/dist/core/process-gate.test.js.map +1 -0
- package/dist/core/process-manager-notifications.test.d.ts +2 -0
- package/dist/core/process-manager-notifications.test.d.ts.map +1 -0
- package/dist/core/process-manager-notifications.test.js +217 -0
- package/dist/core/process-manager-notifications.test.js.map +1 -0
- package/dist/core/process-manager.d.ts +50 -1
- package/dist/core/process-manager.d.ts.map +1 -1
- package/dist/core/process-manager.js +189 -2
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/project-discovery.d.ts +31 -6
- package/dist/core/project-discovery.d.ts.map +1 -1
- package/dist/core/project-discovery.js +287 -31
- package/dist/core/project-discovery.js.map +1 -1
- package/dist/core/project-discovery.test.js +124 -0
- package/dist/core/project-discovery.test.js.map +1 -1
- package/dist/core/regrounding.d.ts.map +1 -1
- package/dist/core/regrounding.js +1 -0
- package/dist/core/regrounding.js.map +1 -1
- package/dist/core/run-claim.d.ts +37 -0
- package/dist/core/run-claim.d.ts.map +1 -0
- package/dist/core/run-claim.js +46 -0
- package/dist/core/run-claim.js.map +1 -0
- package/dist/core/run-claim.test.d.ts +2 -0
- package/dist/core/run-claim.test.d.ts.map +1 -0
- package/dist/core/run-claim.test.js +107 -0
- package/dist/core/run-claim.test.js.map +1 -0
- package/dist/core/run-journal.test.d.ts +2 -0
- package/dist/core/run-journal.test.d.ts.map +1 -0
- package/dist/core/run-journal.test.js +195 -0
- package/dist/core/run-journal.test.js.map +1 -0
- package/dist/core/run-lifecycle.d.ts +22 -3
- package/dist/core/run-lifecycle.d.ts.map +1 -1
- package/dist/core/run-lifecycle.js +12 -3
- package/dist/core/run-lifecycle.js.map +1 -1
- package/dist/core/sandbox-domains.d.ts +14 -0
- package/dist/core/sandbox-domains.d.ts.map +1 -0
- package/dist/core/sandbox-domains.js +76 -0
- package/dist/core/sandbox-domains.js.map +1 -0
- package/dist/core/sandbox-feedback.d.ts +22 -0
- package/dist/core/sandbox-feedback.d.ts.map +1 -0
- package/dist/core/sandbox-feedback.js +69 -0
- package/dist/core/sandbox-feedback.js.map +1 -0
- package/dist/core/sandbox-feedback.test.d.ts +2 -0
- package/dist/core/sandbox-feedback.test.d.ts.map +1 -0
- package/dist/core/sandbox-feedback.test.js +32 -0
- package/dist/core/sandbox-feedback.test.js.map +1 -0
- package/dist/core/sandbox.d.ts +91 -0
- package/dist/core/sandbox.d.ts.map +1 -0
- package/dist/core/sandbox.js +254 -0
- package/dist/core/sandbox.js.map +1 -0
- package/dist/core/sandbox.test.d.ts +2 -0
- package/dist/core/sandbox.test.d.ts.map +1 -0
- package/dist/core/sandbox.test.js +157 -0
- package/dist/core/sandbox.test.js.map +1 -0
- package/dist/core/session-compaction.d.ts +6 -0
- package/dist/core/session-compaction.d.ts.map +1 -1
- package/dist/core/session-compaction.js +11 -1
- package/dist/core/session-compaction.js.map +1 -1
- package/dist/core/session-compaction.test.js +18 -1
- package/dist/core/session-compaction.test.js.map +1 -1
- package/dist/core/session-export.d.ts.map +1 -1
- package/dist/core/session-export.js +12 -4
- package/dist/core/session-export.js.map +1 -1
- package/dist/core/session-history.d.ts +95 -6
- package/dist/core/session-history.d.ts.map +1 -1
- package/dist/core/session-history.js +261 -17
- package/dist/core/session-history.js.map +1 -1
- package/dist/core/session-history.test.js +173 -2
- package/dist/core/session-history.test.js.map +1 -1
- package/dist/core/session-manager.d.ts +223 -6
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +515 -26
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-manager.test.js +147 -3
- package/dist/core/session-manager.test.js.map +1 -1
- package/dist/core/session-notification-visibility.test.d.ts +2 -0
- package/dist/core/session-notification-visibility.test.d.ts.map +1 -0
- package/dist/core/session-notification-visibility.test.js +113 -0
- package/dist/core/session-notification-visibility.test.js.map +1 -0
- package/dist/core/session-preview.d.ts +5 -4
- package/dist/core/session-preview.d.ts.map +1 -1
- package/dist/core/session-preview.js +12 -5
- package/dist/core/session-preview.js.map +1 -1
- package/dist/core/session-restore-display.test.js +25 -0
- package/dist/core/session-restore-display.test.js.map +1 -1
- package/dist/core/session-storage.d.ts.map +1 -1
- package/dist/core/session-storage.js +39 -3
- package/dist/core/session-storage.js.map +1 -1
- package/dist/core/session-storage.test.js +6 -1
- package/dist/core/session-storage.test.js.map +1 -1
- package/dist/core/settings-manager.d.ts +8 -2
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +26 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/steering.d.ts +12 -0
- package/dist/core/steering.d.ts.map +1 -1
- package/dist/core/steering.js +16 -0
- package/dist/core/steering.js.map +1 -1
- package/dist/core/subagent-manager.d.ts +13 -0
- package/dist/core/subagent-manager.d.ts.map +1 -1
- package/dist/core/subagent-manager.js +39 -1
- package/dist/core/subagent-manager.js.map +1 -1
- package/dist/core/subagent-manager.test.js +43 -7
- package/dist/core/subagent-manager.test.js.map +1 -1
- package/dist/core/verification-evidence.d.ts +17 -0
- package/dist/core/verification-evidence.d.ts.map +1 -0
- package/dist/core/verification-evidence.js +283 -0
- package/dist/core/verification-evidence.js.map +1 -0
- package/dist/core/verification-evidence.test.d.ts +2 -0
- package/dist/core/verification-evidence.test.d.ts.map +1 -0
- package/dist/core/verification-evidence.test.js +103 -0
- package/dist/core/verification-evidence.test.js.map +1 -0
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +17 -3
- package/dist/interactive.js.map +1 -1
- package/dist/modes/acp-mode.d.ts +122 -0
- package/dist/modes/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp-mode.js +1366 -0
- package/dist/modes/acp-mode.js.map +1 -0
- package/dist/modes/acp-mode.test.d.ts +2 -0
- package/dist/modes/acp-mode.test.d.ts.map +1 -0
- package/dist/modes/acp-mode.test.js +1065 -0
- package/dist/modes/acp-mode.test.js.map +1 -0
- package/dist/modes/index.d.ts +1 -0
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js +1 -0
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/json-mode.d.ts +28 -0
- package/dist/modes/json-mode.d.ts.map +1 -1
- package/dist/modes/json-mode.js +37 -0
- package/dist/modes/json-mode.js.map +1 -1
- package/dist/modes/json-mode.test.d.ts +2 -0
- package/dist/modes/json-mode.test.d.ts.map +1 -0
- package/dist/modes/json-mode.test.js +84 -0
- package/dist/modes/json-mode.test.js.map +1 -0
- package/dist/modes/subagent-worker-mode.d.ts +3 -0
- package/dist/modes/subagent-worker-mode.d.ts.map +1 -1
- package/dist/modes/subagent-worker-mode.js +91 -11
- package/dist/modes/subagent-worker-mode.js.map +1 -1
- package/dist/modes/subagent-worker-mode.test.d.ts +2 -0
- package/dist/modes/subagent-worker-mode.test.d.ts.map +1 -0
- package/dist/modes/subagent-worker-mode.test.js +52 -0
- package/dist/modes/subagent-worker-mode.test.js.map +1 -0
- package/dist/session.d.ts +29 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +41 -0
- package/dist/session.js.map +1 -1
- package/dist/tools/bash.d.ts +2 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +55 -16
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/goals.d.ts +2 -2
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +2 -1
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/index.d.ts +13 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +20 -17
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/index.test.d.ts +2 -0
- package/dist/tools/index.test.d.ts.map +1 -0
- package/dist/tools/index.test.js +55 -0
- package/dist/tools/index.test.js.map +1 -0
- package/dist/tools/read-only-bash.d.ts +3 -0
- package/dist/tools/read-only-bash.d.ts.map +1 -1
- package/dist/tools/read-only-bash.js +7 -9
- package/dist/tools/read-only-bash.js.map +1 -1
- package/dist/tools/subagent-control.d.ts.map +1 -1
- package/dist/tools/subagent-control.js +6 -2
- package/dist/tools/subagent-control.js.map +1 -1
- package/dist/tools/subagent-shared.d.ts +6 -0
- package/dist/tools/subagent-shared.d.ts.map +1 -1
- package/dist/tools/subagent-shared.js +6 -0
- package/dist/tools/subagent-shared.js.map +1 -1
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +43 -8
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/subagent.test.js +65 -3
- package/dist/tools/subagent.test.js.map +1 -1
- package/dist/tools/task-output.d.ts.map +1 -1
- package/dist/tools/task-output.js +3 -1
- package/dist/tools/task-output.js.map +1 -1
- package/dist/tools/tool-search.d.ts +12 -1
- package/dist/tools/tool-search.d.ts.map +1 -1
- package/dist/tools/tool-search.js +22 -3
- package/dist/tools/tool-search.js.map +1 -1
- package/dist/tools/tool-search.test.d.ts +2 -0
- package/dist/tools/tool-search.test.d.ts.map +1 -0
- package/dist/tools/tool-search.test.js +69 -0
- package/dist/tools/tool-search.test.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +1 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +5 -2
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +27 -1
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +18 -4
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/utils/github.test.js +3 -3
- package/dist/utils/github.test.js.map +1 -1
- package/dist/utils/image.d.ts +26 -3
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +83 -14
- package/dist/utils/image.js.map +1 -1
- package/dist/utils/image.test.d.ts +2 -0
- package/dist/utils/image.test.d.ts.map +1 -0
- package/dist/utils/image.test.js +139 -0
- package/dist/utils/image.test.js.map +1 -0
- package/package.json +7 -6
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import http from "node:http";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
6
|
+
import { MCPClientManager } from "./client.js";
|
|
7
|
+
import { McpCatalogCache } from "./catalog-cache.js";
|
|
8
|
+
const PROTOCOL_VERSION = "2025-11-25";
|
|
9
|
+
async function startStubServer() {
|
|
10
|
+
const validSessions = new Set();
|
|
11
|
+
let generation = 0;
|
|
12
|
+
let holding = false;
|
|
13
|
+
let toolTrafficBroken = false;
|
|
14
|
+
const held = [];
|
|
15
|
+
const state = {
|
|
16
|
+
initializeCount: 0,
|
|
17
|
+
get heldCount() {
|
|
18
|
+
return held.length;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
const readBody = (req) => new Promise((resolve, reject) => {
|
|
22
|
+
let raw = "";
|
|
23
|
+
req.on("data", (chunk) => {
|
|
24
|
+
raw += chunk;
|
|
25
|
+
});
|
|
26
|
+
req.on("end", () => resolve(raw));
|
|
27
|
+
req.on("error", reject);
|
|
28
|
+
});
|
|
29
|
+
const server = http.createServer((req, res) => {
|
|
30
|
+
// The SDK opens a standalone GET for server→client streaming and DELETEs on
|
|
31
|
+
// teardown. 405 is the spec's "not offered", which it handles cleanly.
|
|
32
|
+
if (req.method !== "POST") {
|
|
33
|
+
res.writeHead(405).end();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
void readBody(req).then((raw) => {
|
|
37
|
+
let message;
|
|
38
|
+
try {
|
|
39
|
+
message = JSON.parse(raw);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
res.writeHead(400).end();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const isNotification = message.id === undefined || message.id === null;
|
|
46
|
+
const sendResult = (result, headers = {}) => {
|
|
47
|
+
const body = JSON.stringify({ jsonrpc: "2.0", id: message.id, result });
|
|
48
|
+
res.writeHead(200, { "content-type": "application/json", ...headers }).end(body);
|
|
49
|
+
};
|
|
50
|
+
if (message.method === "initialize") {
|
|
51
|
+
state.initializeCount += 1;
|
|
52
|
+
const sessionId = `session-${++generation}`;
|
|
53
|
+
validSessions.add(sessionId);
|
|
54
|
+
sendResult({
|
|
55
|
+
protocolVersion: PROTOCOL_VERSION,
|
|
56
|
+
capabilities: { tools: {} },
|
|
57
|
+
serverInfo: { name: "session-fixture", version: "1.0.0" },
|
|
58
|
+
}, { "mcp-session-id": sessionId });
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
62
|
+
const isToolTraffic = message.method === "tools/list" || message.method === "tools/call";
|
|
63
|
+
const expired = (typeof sessionId === "string" && !validSessions.has(sessionId)) ||
|
|
64
|
+
(toolTrafficBroken && isToolTraffic);
|
|
65
|
+
if (expired) {
|
|
66
|
+
const reply = () => {
|
|
67
|
+
res.writeHead(404, { "content-type": "text/plain" }).end("Session not found");
|
|
68
|
+
};
|
|
69
|
+
if (holding)
|
|
70
|
+
held.push(reply);
|
|
71
|
+
else
|
|
72
|
+
reply();
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (isNotification) {
|
|
76
|
+
res.writeHead(202).end();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
switch (message.method) {
|
|
80
|
+
case "ping":
|
|
81
|
+
sendResult({});
|
|
82
|
+
return;
|
|
83
|
+
case "tools/list":
|
|
84
|
+
sendResult({
|
|
85
|
+
tools: [
|
|
86
|
+
{
|
|
87
|
+
name: "echo",
|
|
88
|
+
description: "Echo the provided text back to the caller",
|
|
89
|
+
inputSchema: {
|
|
90
|
+
type: "object",
|
|
91
|
+
properties: { text: { type: "string" } },
|
|
92
|
+
required: ["text"],
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
case "tools/call": {
|
|
99
|
+
const args = message.params
|
|
100
|
+
?.arguments;
|
|
101
|
+
sendResult({ content: [{ type: "text", text: String(args?.text ?? "") }] });
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
default:
|
|
105
|
+
res.writeHead(200, { "content-type": "application/json" }).end(JSON.stringify({
|
|
106
|
+
jsonrpc: "2.0",
|
|
107
|
+
id: message.id,
|
|
108
|
+
error: { code: -32601, message: `Method not found: ${message.method}` },
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
await new Promise((resolve) => server.listen(0, "127.0.0.1", () => resolve()));
|
|
114
|
+
const { port } = server.address();
|
|
115
|
+
return {
|
|
116
|
+
url: `http://127.0.0.1:${port}/mcp`,
|
|
117
|
+
get initializeCount() {
|
|
118
|
+
return state.initializeCount;
|
|
119
|
+
},
|
|
120
|
+
get heldCount() {
|
|
121
|
+
return held.length;
|
|
122
|
+
},
|
|
123
|
+
expireAll: () => validSessions.clear(),
|
|
124
|
+
holdExpired: (hold) => {
|
|
125
|
+
holding = hold;
|
|
126
|
+
},
|
|
127
|
+
releaseHeld: () => {
|
|
128
|
+
holding = false;
|
|
129
|
+
while (held.length > 0)
|
|
130
|
+
held.shift()?.();
|
|
131
|
+
},
|
|
132
|
+
breakToolTraffic: (broken) => {
|
|
133
|
+
toolTrafficBroken = broken;
|
|
134
|
+
},
|
|
135
|
+
close: () => new Promise((resolve) => {
|
|
136
|
+
server.closeAllConnections?.();
|
|
137
|
+
server.close(() => resolve());
|
|
138
|
+
}),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function toolContext(signal) {
|
|
142
|
+
return { signal: signal ?? new AbortController().signal, toolCallId: "call-1" };
|
|
143
|
+
}
|
|
144
|
+
async function runTool(tool, text, signal) {
|
|
145
|
+
const result = await tool.execute({ text }, toolContext(signal));
|
|
146
|
+
return typeof result === "string" ? result : JSON.stringify(result);
|
|
147
|
+
}
|
|
148
|
+
let dir;
|
|
149
|
+
let stub;
|
|
150
|
+
const managers = [];
|
|
151
|
+
function manager() {
|
|
152
|
+
const instance = new MCPClientManager({
|
|
153
|
+
catalogCache: new McpCatalogCache(path.join(dir, "mcp-catalog.json")),
|
|
154
|
+
});
|
|
155
|
+
managers.push(instance);
|
|
156
|
+
return instance;
|
|
157
|
+
}
|
|
158
|
+
function httpConfig() {
|
|
159
|
+
return { name: "session-fixture", url: stub.url, timeout: 10_000 };
|
|
160
|
+
}
|
|
161
|
+
beforeEach(async () => {
|
|
162
|
+
dir = await fs.mkdtemp(path.join(os.tmpdir(), "gg-mcp-session-"));
|
|
163
|
+
stub = await startStubServer();
|
|
164
|
+
});
|
|
165
|
+
afterEach(async () => {
|
|
166
|
+
await Promise.all(managers.splice(0).map((instance) => instance.dispose()));
|
|
167
|
+
await stub.close();
|
|
168
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
169
|
+
});
|
|
170
|
+
describe("MCP HTTP session recovery", () => {
|
|
171
|
+
it("reconnects once and replays the call when the session has expired", async () => {
|
|
172
|
+
const mcp = manager();
|
|
173
|
+
const tools = await mcp.connectAll([httpConfig()]);
|
|
174
|
+
const echo = tools.find((t) => t.name === "mcp__session-fixture__echo");
|
|
175
|
+
expect(echo).toBeDefined();
|
|
176
|
+
expect(stub.initializeCount).toBe(1);
|
|
177
|
+
stub.expireAll();
|
|
178
|
+
expect(await runTool(echo, "after-expiry")).toBe("after-expiry");
|
|
179
|
+
expect(stub.initializeCount).toBe(2);
|
|
180
|
+
}, 30_000);
|
|
181
|
+
it("coalesces concurrent expiries into exactly one reconnect", async () => {
|
|
182
|
+
const mcp = manager();
|
|
183
|
+
const tools = await mcp.connectAll([httpConfig()]);
|
|
184
|
+
const echo = tools.find((t) => t.name === "mcp__session-fixture__echo");
|
|
185
|
+
// Park the 404s so all three calls are in flight at once. The manager
|
|
186
|
+
// paces calls to one server 2s apart, so without parking the first would
|
|
187
|
+
// have finished recovering long before the others even started.
|
|
188
|
+
stub.expireAll();
|
|
189
|
+
stub.holdExpired(true);
|
|
190
|
+
const calls = Promise.all([runTool(echo, "a"), runTool(echo, "b"), runTool(echo, "c")]);
|
|
191
|
+
await waitFor(() => stub.heldCount === 3, 15_000);
|
|
192
|
+
stub.releaseHeld();
|
|
193
|
+
expect(await calls).toEqual(["a", "b", "c"]);
|
|
194
|
+
// 1 initial + 1 shared reconnect. Three would mean the coalescing map leaked.
|
|
195
|
+
expect(stub.initializeCount).toBe(2);
|
|
196
|
+
}, 30_000);
|
|
197
|
+
it("fails after a single retry against a permanently expired server", async () => {
|
|
198
|
+
const mcp = manager();
|
|
199
|
+
const tools = await mcp.connectAll([httpConfig()]);
|
|
200
|
+
const echo = tools.find((t) => t.name === "mcp__session-fixture__echo");
|
|
201
|
+
// The handshake still works, but the server 404s all tool traffic — so a
|
|
202
|
+
// rebuilt session is no better than the old one.
|
|
203
|
+
stub.breakToolTraffic(true);
|
|
204
|
+
const result = await runTool(echo, "doomed");
|
|
205
|
+
expect(result).toContain("MCP tool error");
|
|
206
|
+
expect(result).toContain("404");
|
|
207
|
+
// Exactly one recovery attempt — a retry loop would keep climbing.
|
|
208
|
+
expect(stub.initializeCount).toBe(2);
|
|
209
|
+
}, 30_000);
|
|
210
|
+
it("does not resurrect a call that was aborted while in flight", async () => {
|
|
211
|
+
const mcp = manager();
|
|
212
|
+
const tools = await mcp.connectAll([httpConfig()]);
|
|
213
|
+
const echo = tools.find((t) => t.name === "mcp__session-fixture__echo");
|
|
214
|
+
const controller = new AbortController();
|
|
215
|
+
controller.abort();
|
|
216
|
+
stub.expireAll();
|
|
217
|
+
const result = await runTool(echo, "cancelled", controller.signal);
|
|
218
|
+
expect(result).toContain("MCP tool error");
|
|
219
|
+
// No reconnect: the user cancelled, so replaying the work would be wrong.
|
|
220
|
+
expect(stub.initializeCount).toBe(1);
|
|
221
|
+
}, 30_000);
|
|
222
|
+
});
|
|
223
|
+
async function waitFor(predicate, timeoutMs) {
|
|
224
|
+
const deadline = Date.now() + timeoutMs;
|
|
225
|
+
while (!predicate()) {
|
|
226
|
+
if (Date.now() > deadline)
|
|
227
|
+
throw new Error("timed out waiting for condition");
|
|
228
|
+
await new Promise((r) => setTimeout(r, 25));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=client-session-recovery.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-session-recovery.test.js","sourceRoot":"","sources":["../../../src/core/mcp/client-session-recovery.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import type { ElicitResult } from "@modelcontextprotocol/client";
|
|
1
2
|
import type { AgentTool } from "@prestyj/agent";
|
|
2
3
|
import type { MCPServerConfig } from "./types.js";
|
|
4
|
+
import { McpCatalogCache } from "./catalog-cache.js";
|
|
5
|
+
import { type SharedMcpPool } from "./shared-pool.js";
|
|
3
6
|
/** Per-server connection outcome for the dashboard / non-interactive list. */
|
|
4
7
|
export interface MCPConnectResult {
|
|
5
8
|
name: string;
|
|
@@ -17,13 +20,140 @@ export interface MCPLoginResult {
|
|
|
17
20
|
toolCount: number;
|
|
18
21
|
error?: string;
|
|
19
22
|
}
|
|
23
|
+
/** Terminal state of one server's connection attempt, awaited by `whenConnected`. */
|
|
24
|
+
type ConnectionOutcome = {
|
|
25
|
+
ok: true;
|
|
26
|
+
} | {
|
|
27
|
+
ok: false;
|
|
28
|
+
error: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* A server-initiated request for user input, mid tool call. The host resolves
|
|
32
|
+
* it by showing the user a form built from `requestedSchema` and returning
|
|
33
|
+
* their answer — or `decline` / `cancel`.
|
|
34
|
+
*/
|
|
35
|
+
export interface MCPElicitation {
|
|
36
|
+
/** Which configured server is asking. */
|
|
37
|
+
server: string;
|
|
38
|
+
/** Human-readable prompt from the server. */
|
|
39
|
+
message: string;
|
|
40
|
+
/** JSON Schema object describing the fields to collect. */
|
|
41
|
+
requestedSchema: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
export type MCPElicitHandler = (request: MCPElicitation) => Promise<ElicitResult>;
|
|
20
44
|
export declare class MCPClientManager {
|
|
21
45
|
private servers;
|
|
46
|
+
/**
|
|
47
|
+
* Per-server connection settlement, so a caller holding a cached-only tool
|
|
48
|
+
* can wait for the live client instead of failing or hanging forever.
|
|
49
|
+
*/
|
|
50
|
+
private connections;
|
|
51
|
+
/**
|
|
52
|
+
* In-flight session rebuilds, keyed by server name. N tool calls to the same
|
|
53
|
+
* server all 404 at once when its session expires; without coalescing each
|
|
54
|
+
* would spawn its own reconnect and they would race to replace each other in
|
|
55
|
+
* `this.servers`. Sharing one promise means exactly one reconnect per outage.
|
|
56
|
+
*/
|
|
57
|
+
private reconnecting;
|
|
58
|
+
/**
|
|
59
|
+
* Claims on process-wide shared connections, keyed by server name. Held so
|
|
60
|
+
* `dispose` can hand them back: the pooled child only exits once the LAST
|
|
61
|
+
* manager holding it releases, so leaking a claim here would pin the process
|
|
62
|
+
* for the daemon's lifetime — the exact bug sharing is meant to fix.
|
|
63
|
+
*/
|
|
64
|
+
private sharedHandles;
|
|
65
|
+
private readonly catalogCache;
|
|
66
|
+
/**
|
|
67
|
+
* Opt into the 2026-07-28 revision. Off by default: `mode: "auto"` probes with
|
|
68
|
+
* `server/discover` before falling back to `initialize`, and a legacy stdio
|
|
69
|
+
* server that ignores pre-`initialize` requests pays the full probe timeout.
|
|
70
|
+
*/
|
|
71
|
+
private readonly modernProtocol;
|
|
72
|
+
/**
|
|
73
|
+
* Host callback for server-initiated `elicitation/create`. Absent means we
|
|
74
|
+
* declare no elicitation capability at all — which is protocol-legal and is
|
|
75
|
+
* how the CLI runs, since it has nowhere to render the form.
|
|
76
|
+
*/
|
|
77
|
+
private readonly onElicit?;
|
|
78
|
+
/**
|
|
79
|
+
* Pool backing `shared: true` servers. Defaults to the daemon-wide singleton;
|
|
80
|
+
* injectable so tests can exercise sharing without touching global state.
|
|
81
|
+
*/
|
|
82
|
+
private readonly pool;
|
|
83
|
+
/**
|
|
84
|
+
* Fired when a connected server's transport closes on its own — a crashed or
|
|
85
|
+
* exited child, not our own `dispose`. The pool uses it to drop a dead
|
|
86
|
+
* connection so the next session rebuilds instead of inheriting a corpse.
|
|
87
|
+
*/
|
|
88
|
+
private readonly onServerClosed?;
|
|
89
|
+
/** Set while `dispose` runs, so our own teardown is not reported as a death. */
|
|
90
|
+
private disposing;
|
|
91
|
+
constructor(opts?: {
|
|
92
|
+
catalogCache?: McpCatalogCache;
|
|
93
|
+
modernProtocol?: boolean;
|
|
94
|
+
onElicit?: MCPElicitHandler;
|
|
95
|
+
sharedPool?: SharedMcpPool;
|
|
96
|
+
onServerClosed?: (name: string) => void;
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* Build a `Client` for one server, declaring elicitation support and wiring
|
|
100
|
+
* the handler when the host can actually prompt the user.
|
|
101
|
+
*
|
|
102
|
+
* Form mode only. URL mode would have us open a browser tab in the middle of
|
|
103
|
+
* a tool call with no user gesture behind it — the SDK rejects URL-mode
|
|
104
|
+
* requests for us when the `url` capability is undeclared.
|
|
105
|
+
*/
|
|
106
|
+
private createClient;
|
|
107
|
+
/**
|
|
108
|
+
* Version-negotiation options for a real (non-probe) connect. `probe()` is
|
|
109
|
+
* spawn-per-invocation and deliberately never negotiates: a legacy stdio
|
|
110
|
+
* server that ignores the discovery request would stall it for the whole
|
|
111
|
+
* probe timeout, turning "validate this server" into a 30s hang.
|
|
112
|
+
*
|
|
113
|
+
* The probe timeout is transport-aware because the SDK's timeout VERDICT is:
|
|
114
|
+
*
|
|
115
|
+
* - **stdio** — silence on a local pipe means a legacy server, and the SDK
|
|
116
|
+
* falls back to `initialize`. The probe runs on a disposable sibling
|
|
117
|
+
* process, so the fallback is clean. Waiting the full connect timeout to
|
|
118
|
+
* reach a conclusion we can draw in seconds is pure dead time, so cap it
|
|
119
|
+
* short.
|
|
120
|
+
* - **HTTP** — silence means an outage, and the SDK REJECTS the connect
|
|
121
|
+
* rather than falling back. A short timeout would therefore turn a slow
|
|
122
|
+
* cold start into a hard connection failure, so inherit the full connect
|
|
123
|
+
* timeout and let the normal timeout handling deal with a real outage.
|
|
124
|
+
*/
|
|
125
|
+
private negotiationOptions;
|
|
126
|
+
/**
|
|
127
|
+
* Claim the pooled connection for a shared server and adopt its tools.
|
|
128
|
+
*
|
|
129
|
+
* Shaped like `connectServer` (resolve tools / throw on failure) so the
|
|
130
|
+
* caller's `allSettled` handling is identical for both kinds. The pool
|
|
131
|
+
* reports failure in-band, so it is rethrown here with the message the pool
|
|
132
|
+
* already formatted.
|
|
133
|
+
*/
|
|
134
|
+
private connectShared;
|
|
135
|
+
/** Get-or-create the settlement record for one server name. */
|
|
136
|
+
private connectionSlot;
|
|
137
|
+
/**
|
|
138
|
+
* Resolve once a server's connection attempt has settled. Returns `ok:false`
|
|
139
|
+
* with the failure reason when that server could not connect, and times out
|
|
140
|
+
* rather than hanging when no attempt is ever made (e.g. a server that was
|
|
141
|
+
* removed from the config since the catalog cache was written).
|
|
142
|
+
*/
|
|
143
|
+
whenConnected(name: string, timeoutMs?: number): Promise<ConnectionOutcome>;
|
|
22
144
|
connectAll(configs: MCPServerConfig[]): Promise<AgentTool[]>;
|
|
23
145
|
/**
|
|
24
146
|
* Connect every enabled server and return one result per server (success →
|
|
25
147
|
* ok + toolCount; failure → ok:false with a human-readable error string).
|
|
26
148
|
* Keeps successfully connected servers in `this.servers`.
|
|
149
|
+
*
|
|
150
|
+
* Shareable servers — stdio, unless opted out with `shared: false` — are not
|
|
151
|
+
* connected here at all: they are claimed from the process-wide pool, so every
|
|
152
|
+
* session in the daemon multiplexes over one child process instead of spawning
|
|
153
|
+
* its own. The split is invisible to callers — results and tools come back in
|
|
154
|
+
* the same shape, `whenConnected` settles for both kinds, and `dispose`
|
|
155
|
+
* releases the pooled claims — so sharing applies wherever a manager is used
|
|
156
|
+
* (sessions, CLI, subagents) without each call site opting in.
|
|
27
157
|
*/
|
|
28
158
|
connectAllDetailed(configs: MCPServerConfig[]): Promise<MCPConnectResult[]>;
|
|
29
159
|
/**
|
|
@@ -45,6 +175,25 @@ export declare class MCPClientManager {
|
|
|
45
175
|
*/
|
|
46
176
|
login(config: MCPServerConfig, onAuthorizationUrl: (url: string) => void, timeoutMs?: number): Promise<MCPLoginResult>;
|
|
47
177
|
private connectServer;
|
|
178
|
+
/**
|
|
179
|
+
* Is this failure a recoverable expired HTTP session?
|
|
180
|
+
*
|
|
181
|
+
* Stdio servers are excluded: they have no HTTP session to expire, so a 404
|
|
182
|
+
* from one means something else entirely and respawning the child process
|
|
183
|
+
* mid-call would be a surprise. An already-aborted call is excluded too —
|
|
184
|
+
* reconnecting to replay work the user cancelled resurrects it.
|
|
185
|
+
*/
|
|
186
|
+
private canRecoverSession;
|
|
187
|
+
/** A local "the transport went away mid-request" failure, as the SDK reports it. */
|
|
188
|
+
private isConnectionClosed;
|
|
189
|
+
/**
|
|
190
|
+
* Rebuild one server's connection from its stored config, replacing the dead
|
|
191
|
+
* entry in `this.servers`. Concurrent callers share a single rebuild.
|
|
192
|
+
*
|
|
193
|
+
* Rejects if the reconnect itself fails, so the caller reports a real error
|
|
194
|
+
* rather than retrying against a client that was never replaced.
|
|
195
|
+
*/
|
|
196
|
+
private reconnectServer;
|
|
48
197
|
/**
|
|
49
198
|
* Connect a single HTTP (Streamable HTTP or SSE) server and return the live
|
|
50
199
|
* client + transport. Transport selection:
|
|
@@ -56,6 +205,15 @@ export declare class MCPClientManager {
|
|
|
56
205
|
* protocol mismatch as a login requirement.
|
|
57
206
|
*/
|
|
58
207
|
private connectHttp;
|
|
208
|
+
/**
|
|
209
|
+
* Protocol era actually negotiated with a server, as the SDK reports it.
|
|
210
|
+
* Undefined before a connect completes; with negotiation off the SDK always
|
|
211
|
+
* settles on `legacy` (the 2025 `initialize` handshake).
|
|
212
|
+
*/
|
|
213
|
+
private negotiatedEra;
|
|
214
|
+
/** Previously negotiated era for this exact server config, if still cached. */
|
|
215
|
+
private cachedEra;
|
|
59
216
|
dispose(): Promise<void>;
|
|
60
217
|
}
|
|
218
|
+
export {};
|
|
61
219
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/client.ts"],"names":[],"mappings":"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"}
|