@agimon-ai/doompi-core 0.0.1-alpha.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/agentModel.cjs +4 -0
- package/dist/agentModel.d.mts +2 -0
- package/dist/agentModel.mjs +2 -0
- package/dist/apiContracts.cjs +2009 -0
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/apiContracts.d.mts +1018 -0
- package/dist/apiContracts.d.mts.map +1 -0
- package/dist/apiContracts.mjs +1989 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/askUser.cjs +8 -0
- package/dist/askUser.d.mts +2 -0
- package/dist/askUser.mjs +2 -0
- package/dist/authorTools.cjs +5 -0
- package/dist/authorTools.d.mts +2 -0
- package/dist/authorTools.mjs +2 -0
- package/dist/backgroundWork.cjs +7 -0
- package/dist/backgroundWork.d.mts +2 -0
- package/dist/backgroundWork.mjs +2 -0
- package/dist/bundleAssetPolicy.cjs +5 -0
- package/dist/bundleAssetPolicy.d.mts +2 -0
- package/dist/bundleAssetPolicy.mjs +2 -0
- package/dist/childProcess.cjs +15 -0
- package/dist/childProcess.d.mts +2 -0
- package/dist/childProcess.mjs +2 -0
- package/dist/childSession.cjs +8 -0
- package/dist/childSession.d.mts +3 -0
- package/dist/childSession.mjs +3 -0
- package/dist/cockpitContainer.cjs +4 -0
- package/dist/cockpitContainer.d.mts +2 -0
- package/dist/cockpitContainer.mjs +2 -0
- package/dist/config.cjs +13 -0
- package/dist/config.d.mts +3 -0
- package/dist/config.mjs +2 -0
- package/dist/contextApi.cjs +10 -0
- package/dist/contextApi.d.mts +4 -0
- package/dist/contextApi.mjs +3 -0
- package/dist/contextContributions.cjs +7 -0
- package/dist/contextContributions.d.mts +3 -0
- package/dist/contextContributions.mjs +3 -0
- package/dist/contextDetail.cjs +65 -0
- package/dist/contextDetail.cjs.map +1 -0
- package/dist/contextDetail.d.mts +19 -0
- package/dist/contextDetail.d.mts.map +1 -0
- package/dist/contextDetail.mjs +64 -0
- package/dist/contextDetail.mjs.map +1 -0
- package/dist/contextDetailStore.cjs +100 -0
- package/dist/contextDetailStore.cjs.map +1 -0
- package/dist/contextDetailStore.d.mts +19 -0
- package/dist/contextDetailStore.d.mts.map +1 -0
- package/dist/contextDetailStore.mjs +91 -0
- package/dist/contextDetailStore.mjs.map +1 -0
- package/dist/contextProjection.cjs +121 -0
- package/dist/contextProjection.cjs.map +1 -0
- package/dist/contextProjection.d.mts +130 -0
- package/dist/contextProjection.d.mts.map +1 -0
- package/dist/contextProjection.mjs +117 -0
- package/dist/contextProjection.mjs.map +1 -0
- package/dist/cordisHost.cjs +11 -0
- package/dist/cordisHost.d.mts +2 -0
- package/dist/cordisHost.mjs +2 -0
- package/dist/delegation.cjs +18 -0
- package/dist/delegation.d.mts +2 -0
- package/dist/delegation.mjs +2 -0
- package/dist/doomPackage.cjs +61 -0
- package/dist/doomPackage.cjs.map +1 -0
- package/dist/doomPackage.d.mts +17 -0
- package/dist/doomPackage.d.mts.map +1 -0
- package/dist/doomPackage.mjs +54 -0
- package/dist/doomPackage.mjs.map +1 -0
- package/dist/executionBudget.cjs +231 -0
- package/dist/executionBudget.cjs.map +1 -0
- package/dist/executionBudget.d.mts +11 -0
- package/dist/executionBudget.d.mts.map +1 -0
- package/dist/executionBudget.mjs +225 -0
- package/dist/executionBudget.mjs.map +1 -0
- package/dist/extensionFile.cjs +24 -0
- package/dist/extensionFile.d.mts +3 -0
- package/dist/extensionFile.mjs +2 -0
- package/dist/footer.cjs +6 -0
- package/dist/footer.d.mts +2 -0
- package/dist/footer.mjs +2 -0
- package/dist/headless.cjs +9 -0
- package/dist/headless.d.mts +2 -0
- package/dist/headless.mjs +2 -0
- package/dist/headlessHub.cjs +914 -0
- package/dist/headlessHub.cjs.map +1 -0
- package/dist/headlessHub.d.mts +157 -0
- package/dist/headlessHub.d.mts.map +1 -0
- package/dist/headlessHub.mjs +911 -0
- package/dist/headlessHub.mjs.map +1 -0
- package/dist/headlessServer.cjs +910 -0
- package/dist/headlessServer.cjs.map +1 -0
- package/dist/headlessServer.d.mts +64 -0
- package/dist/headlessServer.d.mts.map +1 -0
- package/dist/headlessServer.mjs +904 -0
- package/dist/headlessServer.mjs.map +1 -0
- package/dist/headlessSessionHost.cjs +0 -0
- package/dist/headlessSessionHost.d.mts +71 -0
- package/dist/headlessSessionHost.d.mts.map +1 -0
- package/dist/headlessSessionHost.mjs +1 -0
- package/dist/headlessSessionManager.cjs +51 -0
- package/dist/headlessSessionManager.cjs.map +1 -0
- package/dist/headlessSessionManager.d.mts +6 -0
- package/dist/headlessSessionManager.d.mts.map +1 -0
- package/dist/headlessSessionManager.mjs +50 -0
- package/dist/headlessSessionManager.mjs.map +1 -0
- package/dist/help.cjs +24 -0
- package/dist/help.d.mts +3 -0
- package/dist/help.mjs +3 -0
- package/dist/history.cjs +25 -0
- package/dist/history.d.mts +10 -0
- package/dist/history.mjs +10 -0
- package/dist/historyImport.cjs +553 -0
- package/dist/historyImport.cjs.map +1 -0
- package/dist/historyImport.d.mts +76 -0
- package/dist/historyImport.d.mts.map +1 -0
- package/dist/historyImport.mjs +547 -0
- package/dist/historyImport.mjs.map +1 -0
- package/dist/historyOwnership.cjs +253 -0
- package/dist/historyOwnership.cjs.map +1 -0
- package/dist/historyOwnership.d.mts +23 -0
- package/dist/historyOwnership.d.mts.map +1 -0
- package/dist/historyOwnership.mjs +247 -0
- package/dist/historyOwnership.mjs.map +1 -0
- package/dist/hubChannel.cjs +4 -0
- package/dist/hubChannel.d.mts +2 -0
- package/dist/hubChannel.mjs +2 -0
- package/dist/index.cjs +44 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.mjs +6 -0
- package/dist/json.cjs +6 -0
- package/dist/json.d.mts +2 -0
- package/dist/json.mjs +2 -0
- package/dist/jsonlSessionRepo.cjs +217 -0
- package/dist/jsonlSessionRepo.cjs.map +1 -0
- package/dist/jsonlSessionRepo.d.mts +7 -0
- package/dist/jsonlSessionRepo.d.mts.map +1 -0
- package/dist/jsonlSessionRepo.mjs +212 -0
- package/dist/jsonlSessionRepo.mjs.map +1 -0
- package/dist/kernel.cjs +3 -0
- package/dist/kernel.d.mts +3 -0
- package/dist/kernel.mjs +2 -0
- package/dist/leader.cjs +9 -0
- package/dist/leader.d.mts +2 -0
- package/dist/leader.mjs +2 -0
- package/dist/logSinkTelemetry.cjs +5 -0
- package/dist/logSinkTelemetry.d.mts +2 -0
- package/dist/logSinkTelemetry.mjs +2 -0
- package/dist/machineApi.cjs +92 -0
- package/dist/machineApi.cjs.map +1 -0
- package/dist/machineApi.d.mts +7 -0
- package/dist/machineApi.d.mts.map +1 -0
- package/dist/machineApi.mjs +88 -0
- package/dist/machineApi.mjs.map +1 -0
- package/dist/main.cjs +11 -0
- package/dist/main.d.mts +5 -0
- package/dist/main.mjs +4 -0
- package/dist/mcpFacet.cjs +12 -0
- package/dist/mcpFacet.d.mts +4 -0
- package/dist/mcpFacet.mjs +4 -0
- package/dist/mcpProjection.cjs +16 -0
- package/dist/mcpProjection.d.mts +2 -0
- package/dist/mcpProjection.mjs +2 -0
- package/dist/mcpSchemaCost.cjs +195 -0
- package/dist/mcpSchemaCost.cjs.map +1 -0
- package/dist/mcpSchemaCost.d.mts +35 -0
- package/dist/mcpSchemaCost.d.mts.map +1 -0
- package/dist/mcpSchemaCost.mjs +190 -0
- package/dist/mcpSchemaCost.mjs.map +1 -0
- package/dist/mcpSession.cjs +9 -0
- package/dist/mcpSession.d.mts +2 -0
- package/dist/mcpSession.mjs +2 -0
- package/dist/mcpStatus.cjs +7 -0
- package/dist/mcpStatus.d.mts +2 -0
- package/dist/mcpStatus.mjs +2 -0
- package/dist/mcpToolResolver.cjs +5 -0
- package/dist/mcpToolResolver.d.mts +2 -0
- package/dist/mcpToolResolver.mjs +2 -0
- package/dist/mcpWidget.cjs +0 -0
- package/dist/mcpWidget.d.mts +2 -0
- package/dist/mcpWidget.mjs +1 -0
- package/dist/moduleResolution.cjs +405 -0
- package/dist/moduleResolution.cjs.map +1 -0
- package/dist/moduleResolution.d.mts +67 -0
- package/dist/moduleResolution.d.mts.map +1 -0
- package/dist/moduleResolution.mjs +389 -0
- package/dist/moduleResolution.mjs.map +1 -0
- package/dist/narration.cjs +10 -0
- package/dist/narration.d.mts +2 -0
- package/dist/narration.mjs +2 -0
- package/dist/notification.cjs +17 -0
- package/dist/notification.d.mts +2 -0
- package/dist/notification.mjs +2 -0
- package/dist/packageApi.cjs +16 -0
- package/dist/packageApi.d.mts +3 -0
- package/dist/packageApi.mjs +3 -0
- package/dist/packageApiServer.cjs +191 -0
- package/dist/packageApiServer.cjs.map +1 -0
- package/dist/packageApiServer.d.mts +57 -0
- package/dist/packageApiServer.d.mts.map +1 -0
- package/dist/packageApiServer.mjs +189 -0
- package/dist/packageApiServer.mjs.map +1 -0
- package/dist/piExtension.cjs +13 -0
- package/dist/piExtension.d.mts +5 -0
- package/dist/piExtension.mjs +4 -0
- package/dist/piSettings.cjs +12 -0
- package/dist/piSettings.d.mts +2 -0
- package/dist/piSettings.mjs +2 -0
- package/dist/pluginProtocol.cjs +10 -0
- package/dist/pluginProtocol.d.mts +2 -0
- package/dist/pluginProtocol.mjs +2 -0
- package/dist/profileIdentity.cjs +6 -0
- package/dist/profileIdentity.d.mts +2 -0
- package/dist/profileIdentity.mjs +2 -0
- package/dist/protocol.cjs +10 -0
- package/dist/protocol.d.mts +2 -0
- package/dist/protocol.mjs +2 -0
- package/dist/readiness.cjs +8 -0
- package/dist/readiness.d.mts +2 -0
- package/dist/readiness.mjs +2 -0
- package/dist/relaunchHandoff.cjs +6 -0
- package/dist/relaunchHandoff.d.mts +2 -0
- package/dist/relaunchHandoff.mjs +2 -0
- package/dist/remoteApi.cjs +42 -0
- package/dist/remoteApi.cjs.map +1 -0
- package/dist/remoteApi.d.mts +7 -0
- package/dist/remoteApi.d.mts.map +1 -0
- package/dist/remoteApi.mjs +41 -0
- package/dist/remoteApi.mjs.map +1 -0
- package/dist/remoteRuntime.cjs +460 -0
- package/dist/remoteRuntime.cjs.map +1 -0
- package/dist/remoteRuntime.d.mts +28 -0
- package/dist/remoteRuntime.d.mts.map +1 -0
- package/dist/remoteRuntime.mjs +456 -0
- package/dist/remoteRuntime.mjs.map +1 -0
- package/dist/runtimeConfig.cjs +232 -0
- package/dist/runtimeConfig.cjs.map +1 -0
- package/dist/runtimeConfig.d.mts +313 -0
- package/dist/runtimeConfig.d.mts.map +1 -0
- package/dist/runtimeConfig.mjs +221 -0
- package/dist/runtimeConfig.mjs.map +1 -0
- package/dist/runtimeContextApi.cjs +64 -0
- package/dist/runtimeContextApi.cjs.map +1 -0
- package/dist/runtimeContextApi.d.mts +16 -0
- package/dist/runtimeContextApi.d.mts.map +1 -0
- package/dist/runtimeContextApi.mjs +62 -0
- package/dist/runtimeContextApi.mjs.map +1 -0
- package/dist/runtimeCordisHost.cjs +193 -0
- package/dist/runtimeCordisHost.cjs.map +1 -0
- package/dist/runtimeCordisHost.d.mts +63 -0
- package/dist/runtimeCordisHost.d.mts.map +1 -0
- package/dist/runtimeCordisHost.mjs +184 -0
- package/dist/runtimeCordisHost.mjs.map +1 -0
- package/dist/runtimeHeadlessSessionManager.cjs +0 -0
- package/dist/runtimeHeadlessSessionManager.d.mts +18 -0
- package/dist/runtimeHeadlessSessionManager.d.mts.map +1 -0
- package/dist/runtimeHeadlessSessionManager.mjs +1 -0
- package/dist/runtimeIdentity.cjs +26 -0
- package/dist/runtimeIdentity.cjs.map +1 -0
- package/dist/runtimeIdentity.d.mts +7 -0
- package/dist/runtimeIdentity.d.mts.map +1 -0
- package/dist/runtimeIdentity.mjs +21 -0
- package/dist/runtimeIdentity.mjs.map +1 -0
- package/dist/runtimeJson.cjs +46 -0
- package/dist/runtimeJson.cjs.map +1 -0
- package/dist/runtimeJson.d.mts +22 -0
- package/dist/runtimeJson.d.mts.map +1 -0
- package/dist/runtimeJson.mjs +39 -0
- package/dist/runtimeJson.mjs.map +1 -0
- package/dist/runtimeLogSinkTelemetry.cjs +102 -0
- package/dist/runtimeLogSinkTelemetry.cjs.map +1 -0
- package/dist/runtimeLogSinkTelemetry.d.mts +49 -0
- package/dist/runtimeLogSinkTelemetry.d.mts.map +1 -0
- package/dist/runtimeLogSinkTelemetry.mjs +99 -0
- package/dist/runtimeLogSinkTelemetry.mjs.map +1 -0
- package/dist/runtimePiExtension.cjs +339 -0
- package/dist/runtimePiExtension.cjs.map +1 -0
- package/dist/runtimePiExtension.d.mts +160 -0
- package/dist/runtimePiExtension.d.mts.map +1 -0
- package/dist/runtimePiExtension.mjs +333 -0
- package/dist/runtimePiExtension.mjs.map +1 -0
- package/dist/runtimePiSettings.cjs +116 -0
- package/dist/runtimePiSettings.cjs.map +1 -0
- package/dist/runtimePiSettings.d.mts +29 -0
- package/dist/runtimePiSettings.d.mts.map +1 -0
- package/dist/runtimePiSettings.mjs +103 -0
- package/dist/runtimePiSettings.mjs.map +1 -0
- package/dist/runtimeProtocol.cjs +223 -0
- package/dist/runtimeProtocol.cjs.map +1 -0
- package/dist/runtimeProtocol.d.mts +84 -0
- package/dist/runtimeProtocol.d.mts.map +1 -0
- package/dist/runtimeProtocol.mjs +215 -0
- package/dist/runtimeProtocol.mjs.map +1 -0
- package/dist/runtimeToolNames.cjs +51 -0
- package/dist/runtimeToolNames.cjs.map +1 -0
- package/dist/runtimeToolNames.d.mts +24 -0
- package/dist/runtimeToolNames.d.mts.map +1 -0
- package/dist/runtimeToolNames.mjs +49 -0
- package/dist/runtimeToolNames.mjs.map +1 -0
- package/dist/runtimeTransition.cjs +27 -0
- package/dist/runtimeTransition.cjs.map +1 -0
- package/dist/runtimeTransition.d.mts +114 -0
- package/dist/runtimeTransition.d.mts.map +1 -0
- package/dist/runtimeTransition.mjs +24 -0
- package/dist/runtimeTransition.mjs.map +1 -0
- package/dist/sandboxHarness.cjs +6 -0
- package/dist/sandboxHarness.d.mts +2 -0
- package/dist/sandboxHarness.mjs +2 -0
- package/dist/server.cjs +17 -0
- package/dist/server.d.mts +10 -0
- package/dist/server.mjs +7 -0
- package/dist/serverFacet.cjs +30 -0
- package/dist/serverFacet.d.mts +8 -0
- package/dist/serverFacet.mjs +8 -0
- package/dist/serverTelemetry.cjs +25 -0
- package/dist/serverTelemetry.cjs.map +1 -0
- package/dist/serverTelemetry.d.mts +12 -0
- package/dist/serverTelemetry.d.mts.map +1 -0
- package/dist/serverTelemetry.mjs +23 -0
- package/dist/serverTelemetry.mjs.map +1 -0
- package/dist/sessionFilesApi.cjs +96 -0
- package/dist/sessionFilesApi.cjs.map +1 -0
- package/dist/sessionFilesApi.d.mts +7 -0
- package/dist/sessionFilesApi.d.mts.map +1 -0
- package/dist/sessionFilesApi.mjs +91 -0
- package/dist/sessionFilesApi.mjs.map +1 -0
- package/dist/sessionMcp.cjs +6 -0
- package/dist/sessionMcp.d.mts +5 -0
- package/dist/sessionMcp.mjs +3 -0
- package/dist/sessionProtocol.cjs +8 -0
- package/dist/sessionProtocol.d.mts +3 -0
- package/dist/sessionProtocol.mjs +2 -0
- package/dist/skills.cjs +9 -0
- package/dist/skills.d.mts +2 -0
- package/dist/skills.mjs +2 -0
- package/dist/sqliteHistoryImport.cjs +151 -0
- package/dist/sqliteHistoryImport.cjs.map +1 -0
- package/dist/sqliteHistoryImport.d.mts +8 -0
- package/dist/sqliteHistoryImport.d.mts.map +1 -0
- package/dist/sqliteHistoryImport.mjs +146 -0
- package/dist/sqliteHistoryImport.mjs.map +1 -0
- package/dist/sqliteSessionStorage.cjs +53 -0
- package/dist/sqliteSessionStorage.cjs.map +1 -0
- package/dist/sqliteSessionStorage.d.mts +7 -0
- package/dist/sqliteSessionStorage.d.mts.map +1 -0
- package/dist/sqliteSessionStorage.mjs +49 -0
- package/dist/sqliteSessionStorage.mjs.map +1 -0
- package/dist/src/constants/authorTools.cjs +10 -0
- package/dist/src/constants/authorTools.cjs.map +1 -0
- package/dist/src/constants/authorTools.d.mts +6 -0
- package/dist/src/constants/authorTools.d.mts.map +1 -0
- package/dist/src/constants/authorTools.mjs +8 -0
- package/dist/src/constants/authorTools.mjs.map +1 -0
- package/dist/src/constants/contextApi.cjs +28 -0
- package/dist/src/constants/contextApi.cjs.map +1 -0
- package/dist/src/constants/contextApi.d.mts +21 -0
- package/dist/src/constants/contextApi.d.mts.map +1 -0
- package/dist/src/constants/contextApi.mjs +23 -0
- package/dist/src/constants/contextApi.mjs.map +1 -0
- package/dist/src/constants/remote.cjs +90 -0
- package/dist/src/constants/remote.cjs.map +1 -0
- package/dist/src/constants/remote.mjs +69 -0
- package/dist/src/constants/remote.mjs.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.cjs +12 -0
- package/dist/src/constants/voiceReloadHandoff.cjs.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.d.mts +7 -0
- package/dist/src/constants/voiceReloadHandoff.d.mts.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.mjs +9 -0
- package/dist/src/constants/voiceReloadHandoff.mjs.map +1 -0
- package/dist/src/constants/voiceTools.cjs +96 -0
- package/dist/src/constants/voiceTools.cjs.map +1 -0
- package/dist/src/constants/voiceTools.d.mts +58 -0
- package/dist/src/constants/voiceTools.d.mts.map +1 -0
- package/dist/src/constants/voiceTools.mjs +60 -0
- package/dist/src/constants/voiceTools.mjs.map +1 -0
- package/dist/src/extensions/extensionFile.cjs +165 -0
- package/dist/src/extensions/extensionFile.cjs.map +1 -0
- package/dist/src/extensions/extensionFile.d.mts +79 -0
- package/dist/src/extensions/extensionFile.d.mts.map +1 -0
- package/dist/src/extensions/extensionFile.mjs +144 -0
- package/dist/src/extensions/extensionFile.mjs.map +1 -0
- package/dist/src/extensions/serverPlugin.cjs +106 -0
- package/dist/src/extensions/serverPlugin.cjs.map +1 -0
- package/dist/src/extensions/serverPlugin.d.mts +5 -0
- package/dist/src/extensions/serverPlugin.d.mts.map +1 -0
- package/dist/src/extensions/serverPlugin.mjs +106 -0
- package/dist/src/extensions/serverPlugin.mjs.map +1 -0
- package/dist/src/extensions/webPlugin.cjs +131 -0
- package/dist/src/extensions/webPlugin.cjs.map +1 -0
- package/dist/src/extensions/webPlugin.d.mts +66 -0
- package/dist/src/extensions/webPlugin.d.mts.map +1 -0
- package/dist/src/extensions/webPlugin.mjs +110 -0
- package/dist/src/extensions/webPlugin.mjs.map +1 -0
- package/dist/src/pi/piSessionRuntime.cjs +572 -0
- package/dist/src/pi/piSessionRuntime.cjs.map +1 -0
- package/dist/src/pi/piSessionRuntime.d.mts +43 -0
- package/dist/src/pi/piSessionRuntime.d.mts.map +1 -0
- package/dist/src/pi/piSessionRuntime.mjs +571 -0
- package/dist/src/pi/piSessionRuntime.mjs.map +1 -0
- package/dist/src/pi/piWebSocketListener.cjs +115 -0
- package/dist/src/pi/piWebSocketListener.cjs.map +1 -0
- package/dist/src/pi/piWebSocketListener.mjs +115 -0
- package/dist/src/pi/piWebSocketListener.mjs.map +1 -0
- package/dist/src/schemas/agentModel.cjs +33 -0
- package/dist/src/schemas/agentModel.cjs.map +1 -0
- package/dist/src/schemas/agentModel.d.mts +26 -0
- package/dist/src/schemas/agentModel.d.mts.map +1 -0
- package/dist/src/schemas/agentModel.mjs +32 -0
- package/dist/src/schemas/agentModel.mjs.map +1 -0
- package/dist/src/schemas/apiContracts.d.mts +58 -0
- package/dist/src/schemas/apiContracts.d.mts.map +1 -0
- package/dist/src/schemas/askUser.cjs +42 -0
- package/dist/src/schemas/askUser.cjs.map +1 -0
- package/dist/src/schemas/askUser.d.mts +47 -0
- package/dist/src/schemas/askUser.d.mts.map +1 -0
- package/dist/src/schemas/askUser.mjs +37 -0
- package/dist/src/schemas/askUser.mjs.map +1 -0
- package/dist/src/schemas/backgroundWork.cjs +31 -0
- package/dist/src/schemas/backgroundWork.cjs.map +1 -0
- package/dist/src/schemas/backgroundWork.d.mts +72 -0
- package/dist/src/schemas/backgroundWork.d.mts.map +1 -0
- package/dist/src/schemas/backgroundWork.mjs +27 -0
- package/dist/src/schemas/backgroundWork.mjs.map +1 -0
- package/dist/src/schemas/childProcess.cjs +67 -0
- package/dist/src/schemas/childProcess.cjs.map +1 -0
- package/dist/src/schemas/childProcess.d.mts +30 -0
- package/dist/src/schemas/childProcess.d.mts.map +1 -0
- package/dist/src/schemas/childProcess.mjs +55 -0
- package/dist/src/schemas/childProcess.mjs.map +1 -0
- package/dist/src/schemas/cockpitContainer.cjs +31 -0
- package/dist/src/schemas/cockpitContainer.cjs.map +1 -0
- package/dist/src/schemas/cockpitContainer.d.mts +80 -0
- package/dist/src/schemas/cockpitContainer.d.mts.map +1 -0
- package/dist/src/schemas/cockpitContainer.mjs +30 -0
- package/dist/src/schemas/cockpitContainer.mjs.map +1 -0
- package/dist/src/schemas/contextContributions.cjs +17 -0
- package/dist/src/schemas/contextContributions.cjs.map +1 -0
- package/dist/src/schemas/contextContributions.d.mts +49 -0
- package/dist/src/schemas/contextContributions.d.mts.map +1 -0
- package/dist/src/schemas/contextContributions.mjs +15 -0
- package/dist/src/schemas/contextContributions.mjs.map +1 -0
- package/dist/src/schemas/delegation.cjs +91 -0
- package/dist/src/schemas/delegation.cjs.map +1 -0
- package/dist/src/schemas/delegation.d.mts +95 -0
- package/dist/src/schemas/delegation.d.mts.map +1 -0
- package/dist/src/schemas/delegation.mjs +76 -0
- package/dist/src/schemas/delegation.mjs.map +1 -0
- package/dist/src/schemas/extensionFile.d.mts +136 -0
- package/dist/src/schemas/extensionFile.d.mts.map +1 -0
- package/dist/src/schemas/footer.cjs +48 -0
- package/dist/src/schemas/footer.cjs.map +1 -0
- package/dist/src/schemas/footer.d.mts +48 -0
- package/dist/src/schemas/footer.d.mts.map +1 -0
- package/dist/src/schemas/footer.mjs +45 -0
- package/dist/src/schemas/footer.mjs.map +1 -0
- package/dist/src/schemas/headless.cjs +44 -0
- package/dist/src/schemas/headless.cjs.map +1 -0
- package/dist/src/schemas/headless.d.mts +370 -0
- package/dist/src/schemas/headless.d.mts.map +1 -0
- package/dist/src/schemas/headless.mjs +38 -0
- package/dist/src/schemas/headless.mjs.map +1 -0
- package/dist/src/schemas/help.cjs +281 -0
- package/dist/src/schemas/help.cjs.map +1 -0
- package/dist/src/schemas/help.d.mts +119 -0
- package/dist/src/schemas/help.d.mts.map +1 -0
- package/dist/src/schemas/help.mjs +262 -0
- package/dist/src/schemas/help.mjs.map +1 -0
- package/dist/src/schemas/hubChannel.cjs +20 -0
- package/dist/src/schemas/hubChannel.cjs.map +1 -0
- package/dist/src/schemas/hubChannel.d.mts +236 -0
- package/dist/src/schemas/hubChannel.d.mts.map +1 -0
- package/dist/src/schemas/hubChannel.mjs +19 -0
- package/dist/src/schemas/hubChannel.mjs.map +1 -0
- package/dist/src/schemas/leader.cjs +57 -0
- package/dist/src/schemas/leader.cjs.map +1 -0
- package/dist/src/schemas/leader.d.mts +107 -0
- package/dist/src/schemas/leader.d.mts.map +1 -0
- package/dist/src/schemas/leader.mjs +51 -0
- package/dist/src/schemas/leader.mjs.map +1 -0
- package/dist/src/schemas/mcpBundle.cjs +92 -0
- package/dist/src/schemas/mcpBundle.cjs.map +1 -0
- package/dist/src/schemas/mcpBundle.d.mts +33 -0
- package/dist/src/schemas/mcpBundle.d.mts.map +1 -0
- package/dist/src/schemas/mcpBundle.mjs +90 -0
- package/dist/src/schemas/mcpBundle.mjs.map +1 -0
- package/dist/src/schemas/mcpFacet.cjs +24 -0
- package/dist/src/schemas/mcpFacet.cjs.map +1 -0
- package/dist/src/schemas/mcpFacet.d.mts +91 -0
- package/dist/src/schemas/mcpFacet.d.mts.map +1 -0
- package/dist/src/schemas/mcpFacet.mjs +21 -0
- package/dist/src/schemas/mcpFacet.mjs.map +1 -0
- package/dist/src/schemas/mcpProjection.cjs +117 -0
- package/dist/src/schemas/mcpProjection.cjs.map +1 -0
- package/dist/src/schemas/mcpProjection.d.mts +124 -0
- package/dist/src/schemas/mcpProjection.d.mts.map +1 -0
- package/dist/src/schemas/mcpProjection.mjs +104 -0
- package/dist/src/schemas/mcpProjection.mjs.map +1 -0
- package/dist/src/schemas/mcpSession.cjs +57 -0
- package/dist/src/schemas/mcpSession.cjs.map +1 -0
- package/dist/src/schemas/mcpSession.d.mts +57 -0
- package/dist/src/schemas/mcpSession.d.mts.map +1 -0
- package/dist/src/schemas/mcpSession.mjs +51 -0
- package/dist/src/schemas/mcpSession.mjs.map +1 -0
- package/dist/src/schemas/mcpStatus.cjs +52 -0
- package/dist/src/schemas/mcpStatus.cjs.map +1 -0
- package/dist/src/schemas/mcpStatus.d.mts +73 -0
- package/dist/src/schemas/mcpStatus.d.mts.map +1 -0
- package/dist/src/schemas/mcpStatus.mjs +48 -0
- package/dist/src/schemas/mcpStatus.mjs.map +1 -0
- package/dist/src/schemas/mcpToolResolver.cjs +17 -0
- package/dist/src/schemas/mcpToolResolver.cjs.map +1 -0
- package/dist/src/schemas/mcpToolResolver.d.mts +24 -0
- package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -0
- package/dist/src/schemas/mcpToolResolver.mjs +15 -0
- package/dist/src/schemas/mcpToolResolver.mjs.map +1 -0
- package/dist/src/schemas/narration.cjs +54 -0
- package/dist/src/schemas/narration.cjs.map +1 -0
- package/dist/src/schemas/narration.d.mts +29 -0
- package/dist/src/schemas/narration.d.mts.map +1 -0
- package/dist/src/schemas/narration.mjs +47 -0
- package/dist/src/schemas/narration.mjs.map +1 -0
- package/dist/src/schemas/notification.cjs +122 -0
- package/dist/src/schemas/notification.cjs.map +1 -0
- package/dist/src/schemas/notification.d.mts +48 -0
- package/dist/src/schemas/notification.d.mts.map +1 -0
- package/dist/src/schemas/notification.mjs +108 -0
- package/dist/src/schemas/notification.mjs.map +1 -0
- package/dist/src/schemas/packageApi.cjs +73 -0
- package/dist/src/schemas/packageApi.cjs.map +1 -0
- package/dist/src/schemas/packageApi.d.mts +249 -0
- package/dist/src/schemas/packageApi.d.mts.map +1 -0
- package/dist/src/schemas/packageApi.mjs +64 -0
- package/dist/src/schemas/packageApi.mjs.map +1 -0
- package/dist/src/schemas/piTool.cjs +26 -0
- package/dist/src/schemas/piTool.cjs.map +1 -0
- package/dist/src/schemas/piTool.d.mts +25 -0
- package/dist/src/schemas/piTool.d.mts.map +1 -0
- package/dist/src/schemas/piTool.mjs +26 -0
- package/dist/src/schemas/piTool.mjs.map +1 -0
- package/dist/src/schemas/pluginContributions.cjs +19 -0
- package/dist/src/schemas/pluginContributions.cjs.map +1 -0
- package/dist/src/schemas/pluginContributions.d.mts +56 -0
- package/dist/src/schemas/pluginContributions.d.mts.map +1 -0
- package/dist/src/schemas/pluginContributions.mjs +18 -0
- package/dist/src/schemas/pluginContributions.mjs.map +1 -0
- package/dist/src/schemas/pluginProtocol.cjs +103 -0
- package/dist/src/schemas/pluginProtocol.cjs.map +1 -0
- package/dist/src/schemas/pluginProtocol.d.mts +68 -0
- package/dist/src/schemas/pluginProtocol.d.mts.map +1 -0
- package/dist/src/schemas/pluginProtocol.mjs +96 -0
- package/dist/src/schemas/pluginProtocol.mjs.map +1 -0
- package/dist/src/schemas/profileIdentity.cjs +67 -0
- package/dist/src/schemas/profileIdentity.cjs.map +1 -0
- package/dist/src/schemas/profileIdentity.d.mts +50 -0
- package/dist/src/schemas/profileIdentity.d.mts.map +1 -0
- package/dist/src/schemas/profileIdentity.mjs +64 -0
- package/dist/src/schemas/profileIdentity.mjs.map +1 -0
- package/dist/src/schemas/readiness.cjs +251 -0
- package/dist/src/schemas/readiness.cjs.map +1 -0
- package/dist/src/schemas/readiness.d.mts +84 -0
- package/dist/src/schemas/readiness.d.mts.map +1 -0
- package/dist/src/schemas/readiness.mjs +246 -0
- package/dist/src/schemas/readiness.mjs.map +1 -0
- package/dist/src/schemas/relaunchHandoff.cjs +47 -0
- package/dist/src/schemas/relaunchHandoff.cjs.map +1 -0
- package/dist/src/schemas/relaunchHandoff.d.mts +25 -0
- package/dist/src/schemas/relaunchHandoff.d.mts.map +1 -0
- package/dist/src/schemas/relaunchHandoff.mjs +44 -0
- package/dist/src/schemas/relaunchHandoff.mjs.map +1 -0
- package/dist/src/schemas/sandboxHarness.cjs +29 -0
- package/dist/src/schemas/sandboxHarness.cjs.map +1 -0
- package/dist/src/schemas/sandboxHarness.d.mts +39 -0
- package/dist/src/schemas/sandboxHarness.d.mts.map +1 -0
- package/dist/src/schemas/sandboxHarness.mjs +26 -0
- package/dist/src/schemas/sandboxHarness.mjs.map +1 -0
- package/dist/src/schemas/serverBundle.cjs +79 -0
- package/dist/src/schemas/serverBundle.cjs.map +1 -0
- package/dist/src/schemas/serverBundle.d.mts +34 -0
- package/dist/src/schemas/serverBundle.d.mts.map +1 -0
- package/dist/src/schemas/serverBundle.mjs +77 -0
- package/dist/src/schemas/serverBundle.mjs.map +1 -0
- package/dist/src/schemas/serverFacet.cjs +102 -0
- package/dist/src/schemas/serverFacet.cjs.map +1 -0
- package/dist/src/schemas/serverFacet.d.mts +141 -0
- package/dist/src/schemas/serverFacet.d.mts.map +1 -0
- package/dist/src/schemas/serverFacet.mjs +93 -0
- package/dist/src/schemas/serverFacet.mjs.map +1 -0
- package/dist/src/schemas/sessionMcpActivity.d.mts +45 -0
- package/dist/src/schemas/sessionMcpActivity.d.mts.map +1 -0
- package/dist/src/schemas/sessionProtocol.cjs +17 -0
- package/dist/src/schemas/sessionProtocol.cjs.map +1 -0
- package/dist/src/schemas/sessionProtocol.d.mts +308 -0
- package/dist/src/schemas/sessionProtocol.d.mts.map +1 -0
- package/dist/src/schemas/sessionProtocol.mjs +12 -0
- package/dist/src/schemas/sessionProtocol.mjs.map +1 -0
- package/dist/src/schemas/sessionUpdates.d.mts +34 -0
- package/dist/src/schemas/sessionUpdates.d.mts.map +1 -0
- package/dist/src/schemas/skills.cjs +115 -0
- package/dist/src/schemas/skills.cjs.map +1 -0
- package/dist/src/schemas/skills.d.mts +65 -0
- package/dist/src/schemas/skills.d.mts.map +1 -0
- package/dist/src/schemas/skills.mjs +109 -0
- package/dist/src/schemas/skills.mjs.map +1 -0
- package/dist/src/schemas/toolOverrides.cjs +17 -0
- package/dist/src/schemas/toolOverrides.cjs.map +1 -0
- package/dist/src/schemas/toolOverrides.d.mts +29 -0
- package/dist/src/schemas/toolOverrides.d.mts.map +1 -0
- package/dist/src/schemas/toolOverrides.mjs +15 -0
- package/dist/src/schemas/toolOverrides.mjs.map +1 -0
- package/dist/src/schemas/toolSurface.cjs +17 -0
- package/dist/src/schemas/toolSurface.cjs.map +1 -0
- package/dist/src/schemas/toolSurface.d.mts +70 -0
- package/dist/src/schemas/toolSurface.d.mts.map +1 -0
- package/dist/src/schemas/toolSurface.mjs +15 -0
- package/dist/src/schemas/toolSurface.mjs.map +1 -0
- package/dist/src/schemas/uiHub.cjs +17 -0
- package/dist/src/schemas/uiHub.cjs.map +1 -0
- package/dist/src/schemas/uiHub.d.mts +23 -0
- package/dist/src/schemas/uiHub.d.mts.map +1 -0
- package/dist/src/schemas/uiHub.mjs +15 -0
- package/dist/src/schemas/uiHub.mjs.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.cjs +78 -0
- package/dist/src/schemas/voiceReloadHandoff.cjs.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.d.mts +31 -0
- package/dist/src/schemas/voiceReloadHandoff.d.mts.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.mjs +75 -0
- package/dist/src/schemas/voiceReloadHandoff.mjs.map +1 -0
- package/dist/src/schemas/voiceTools.cjs +205 -0
- package/dist/src/schemas/voiceTools.cjs.map +1 -0
- package/dist/src/schemas/voiceTools.d.mts +120 -0
- package/dist/src/schemas/voiceTools.d.mts.map +1 -0
- package/dist/src/schemas/voiceTools.mjs +194 -0
- package/dist/src/schemas/voiceTools.mjs.map +1 -0
- package/dist/src/server/devProxyForward.cjs +141 -0
- package/dist/src/server/devProxyForward.cjs.map +1 -0
- package/dist/src/server/devProxyForward.mjs +139 -0
- package/dist/src/server/devProxyForward.mjs.map +1 -0
- package/dist/src/server/devProxyRoutes.cjs +97 -0
- package/dist/src/server/devProxyRoutes.cjs.map +1 -0
- package/dist/src/server/devProxyRoutes.mjs +97 -0
- package/dist/src/server/devProxyRoutes.mjs.map +1 -0
- package/dist/src/server/devProxySocket.cjs +87 -0
- package/dist/src/server/devProxySocket.cjs.map +1 -0
- package/dist/src/server/devProxySocket.mjs +87 -0
- package/dist/src/server/devProxySocket.mjs.map +1 -0
- package/dist/src/server/directHarnessRuntime.cjs +1964 -0
- package/dist/src/server/directHarnessRuntime.cjs.map +1 -0
- package/dist/src/server/directHarnessRuntime.d.mts +3 -0
- package/dist/src/server/directHarnessRuntime.mjs +1958 -0
- package/dist/src/server/directHarnessRuntime.mjs.map +1 -0
- package/dist/src/server/harnessErrorMessage.cjs +13 -0
- package/dist/src/server/harnessErrorMessage.cjs.map +1 -0
- package/dist/src/server/harnessErrorMessage.mjs +13 -0
- package/dist/src/server/harnessErrorMessage.mjs.map +1 -0
- package/dist/src/server/headlessProtocol.cjs +366 -0
- package/dist/src/server/headlessProtocol.cjs.map +1 -0
- package/dist/src/server/headlessProtocol.mjs +366 -0
- package/dist/src/server/headlessProtocol.mjs.map +1 -0
- package/dist/src/server/jsonlTranscriptReader.cjs +85 -0
- package/dist/src/server/jsonlTranscriptReader.cjs.map +1 -0
- package/dist/src/server/jsonlTranscriptReader.mjs +83 -0
- package/dist/src/server/jsonlTranscriptReader.mjs.map +1 -0
- package/dist/src/server/mcpBundleLoader.cjs +115 -0
- package/dist/src/server/mcpBundleLoader.cjs.map +1 -0
- package/dist/src/server/mcpBundleLoader.d.mts +27 -0
- package/dist/src/server/mcpBundleLoader.d.mts.map +1 -0
- package/dist/src/server/mcpBundleLoader.mjs +111 -0
- package/dist/src/server/mcpBundleLoader.mjs.map +1 -0
- package/dist/src/server/nativeChildTranscriptReader.cjs +20 -0
- package/dist/src/server/nativeChildTranscriptReader.cjs.map +1 -0
- package/dist/src/server/nativeChildTranscriptReader.mjs +18 -0
- package/dist/src/server/nativeChildTranscriptReader.mjs.map +1 -0
- package/dist/src/server/remoteRoutes.cjs +386 -0
- package/dist/src/server/remoteRoutes.cjs.map +1 -0
- package/dist/src/server/remoteRoutes.mjs +386 -0
- package/dist/src/server/remoteRoutes.mjs.map +1 -0
- package/dist/src/server/serverFacetLoader.cjs +220 -0
- package/dist/src/server/serverFacetLoader.cjs.map +1 -0
- package/dist/src/server/serverFacetLoader.d.mts +77 -0
- package/dist/src/server/serverFacetLoader.d.mts.map +1 -0
- package/dist/src/server/serverFacetLoader.mjs +215 -0
- package/dist/src/server/serverFacetLoader.mjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.cjs +494 -0
- package/dist/src/server/sessionMcpHandler.cjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.d.mts +47 -0
- package/dist/src/server/sessionMcpHandler.d.mts.map +1 -0
- package/dist/src/server/sessionMcpHandler.mjs +493 -0
- package/dist/src/server/sessionMcpHandler.mjs.map +1 -0
- package/dist/src/server/sessionMcpRoutes.cjs +780 -0
- package/dist/src/server/sessionMcpRoutes.cjs.map +1 -0
- package/dist/src/server/sessionMcpRoutes.mjs +775 -0
- package/dist/src/server/sessionMcpRoutes.mjs.map +1 -0
- package/dist/src/server/threadJournals.cjs +172 -0
- package/dist/src/server/threadJournals.cjs.map +1 -0
- package/dist/src/server/threadJournals.mjs +169 -0
- package/dist/src/server/threadJournals.mjs.map +1 -0
- package/dist/src/services/acpSessionUpdates/index.cjs +129 -0
- package/dist/src/services/acpSessionUpdates/index.cjs.map +1 -0
- package/dist/src/services/acpSessionUpdates/index.mjs +129 -0
- package/dist/src/services/acpSessionUpdates/index.mjs.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.cjs +60 -0
- package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.d.mts +24 -0
- package/dist/src/services/apiSurfaceAssert/index.d.mts.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.mjs +60 -0
- package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -0
- package/dist/src/services/bundlePublication/index.cjs +88 -0
- package/dist/src/services/bundlePublication/index.cjs.map +1 -0
- package/dist/src/services/bundlePublication/index.mjs +85 -0
- package/dist/src/services/bundlePublication/index.mjs.map +1 -0
- package/dist/src/services/contextApiUrls/index.cjs +14 -0
- package/dist/src/services/contextApiUrls/index.cjs.map +1 -0
- package/dist/src/services/contextApiUrls/index.d.mts +6 -0
- package/dist/src/services/contextApiUrls/index.d.mts.map +1 -0
- package/dist/src/services/contextApiUrls/index.mjs +14 -0
- package/dist/src/services/contextApiUrls/index.mjs.map +1 -0
- package/dist/src/services/contextContributions/index.cjs +79 -0
- package/dist/src/services/contextContributions/index.cjs.map +1 -0
- package/dist/src/services/contextContributions/index.d.mts +6 -0
- package/dist/src/services/contextContributions/index.d.mts.map +1 -0
- package/dist/src/services/contextContributions/index.mjs +79 -0
- package/dist/src/services/contextContributions/index.mjs.map +1 -0
- package/dist/src/services/contextUsage/index.cjs +27 -0
- package/dist/src/services/contextUsage/index.cjs.map +1 -0
- package/dist/src/services/contextUsage/index.mjs +25 -0
- package/dist/src/services/contextUsage/index.mjs.map +1 -0
- package/dist/src/services/devProxyPolicy/index.cjs +168 -0
- package/dist/src/services/devProxyPolicy/index.cjs.map +1 -0
- package/dist/src/services/devProxyPolicy/index.mjs +165 -0
- package/dist/src/services/devProxyPolicy/index.mjs.map +1 -0
- package/dist/src/services/devProxyStore/index.cjs +107 -0
- package/dist/src/services/devProxyStore/index.cjs.map +1 -0
- package/dist/src/services/devProxyStore/index.mjs +104 -0
- package/dist/src/services/devProxyStore/index.mjs.map +1 -0
- package/dist/src/services/deviceAuth/index.cjs +125 -0
- package/dist/src/services/deviceAuth/index.cjs.map +1 -0
- package/dist/src/services/deviceAuth/index.d.mts +9 -0
- package/dist/src/services/deviceAuth/index.d.mts.map +1 -0
- package/dist/src/services/deviceAuth/index.mjs +125 -0
- package/dist/src/services/deviceAuth/index.mjs.map +1 -0
- package/dist/src/services/deviceSessions/index.cjs +147 -0
- package/dist/src/services/deviceSessions/index.cjs.map +1 -0
- package/dist/src/services/deviceSessions/index.d.mts +15 -0
- package/dist/src/services/deviceSessions/index.d.mts.map +1 -0
- package/dist/src/services/deviceSessions/index.mjs +141 -0
- package/dist/src/services/deviceSessions/index.mjs.map +1 -0
- package/dist/src/services/headlessClient/index.cjs +125 -0
- package/dist/src/services/headlessClient/index.cjs.map +1 -0
- package/dist/src/services/headlessClient/index.mjs +125 -0
- package/dist/src/services/headlessClient/index.mjs.map +1 -0
- package/dist/src/services/historyCreationFileSystem/index.cjs +115 -0
- package/dist/src/services/historyCreationFileSystem/index.cjs.map +1 -0
- package/dist/src/services/historyCreationFileSystem/index.mjs +115 -0
- package/dist/src/services/historyCreationFileSystem/index.mjs.map +1 -0
- package/dist/src/services/hubChannelHarness/index.cjs +50 -0
- package/dist/src/services/hubChannelHarness/index.cjs.map +1 -0
- package/dist/src/services/hubChannelHarness/index.d.mts +17 -0
- package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -0
- package/dist/src/services/hubChannelHarness/index.mjs +50 -0
- package/dist/src/services/hubChannelHarness/index.mjs.map +1 -0
- package/dist/src/services/kernel/index.cjs +147 -0
- package/dist/src/services/kernel/index.cjs.map +1 -0
- package/dist/src/services/kernel/index.d.mts +9 -0
- package/dist/src/services/kernel/index.d.mts.map +1 -0
- package/dist/src/services/kernel/index.mjs +147 -0
- package/dist/src/services/kernel/index.mjs.map +1 -0
- package/dist/src/services/loginFlow/index.cjs +131 -0
- package/dist/src/services/loginFlow/index.cjs.map +1 -0
- package/dist/src/services/loginFlow/index.mjs +131 -0
- package/dist/src/services/loginFlow/index.mjs.map +1 -0
- package/dist/src/services/loopbackAddress/index.cjs +58 -0
- package/dist/src/services/loopbackAddress/index.cjs.map +1 -0
- package/dist/src/services/loopbackAddress/index.mjs +56 -0
- package/dist/src/services/loopbackAddress/index.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.cjs +144 -0
- package/dist/src/services/openSessionRegistry/index.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.d.mts +40 -0
- package/dist/src/services/openSessionRegistry/index.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/index.mjs +141 -0
- package/dist/src/services/openSessionRegistry/index.mjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.cjs +36 -0
- package/dist/src/services/packageApiHarness/index.cjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.d.mts +40 -0
- package/dist/src/services/packageApiHarness/index.d.mts.map +1 -0
- package/dist/src/services/packageApiHarness/index.mjs +36 -0
- package/dist/src/services/packageApiHarness/index.mjs.map +1 -0
- package/dist/src/services/packageResource/index.cjs +54 -0
- package/dist/src/services/packageResource/index.cjs.map +1 -0
- package/dist/src/services/packageResource/index.d.mts +26 -0
- package/dist/src/services/packageResource/index.d.mts.map +1 -0
- package/dist/src/services/packageResource/index.mjs +51 -0
- package/dist/src/services/packageResource/index.mjs.map +1 -0
- package/dist/src/services/pairingFlow/index.cjs +145 -0
- package/dist/src/services/pairingFlow/index.cjs.map +1 -0
- package/dist/src/services/pairingFlow/index.d.mts +44 -0
- package/dist/src/services/pairingFlow/index.d.mts.map +1 -0
- package/dist/src/services/pairingFlow/index.mjs +145 -0
- package/dist/src/services/pairingFlow/index.mjs.map +1 -0
- package/dist/src/services/pairingPage/index.cjs +450 -0
- package/dist/src/services/pairingPage/index.cjs.map +1 -0
- package/dist/src/services/pairingPage/index.mjs +447 -0
- package/dist/src/services/pairingPage/index.mjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.cjs +821 -0
- package/dist/src/services/piExtensionHost/index.cjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.mjs +817 -0
- package/dist/src/services/piExtensionHost/index.mjs.map +1 -0
- package/dist/src/services/piHelpTools/index.cjs +68 -0
- package/dist/src/services/piHelpTools/index.cjs.map +1 -0
- package/dist/src/services/piHelpTools/index.d.mts +10 -0
- package/dist/src/services/piHelpTools/index.d.mts.map +1 -0
- package/dist/src/services/piHelpTools/index.mjs +68 -0
- package/dist/src/services/piHelpTools/index.mjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.cjs +112 -0
- package/dist/src/services/piSessionEntries/index.cjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.mjs +108 -0
- package/dist/src/services/piSessionEntries/index.mjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.cjs +71 -0
- package/dist/src/services/pluginLifecycle/index.cjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.d.mts +11 -0
- package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -0
- package/dist/src/services/pluginLifecycle/index.mjs +71 -0
- package/dist/src/services/pluginLifecycle/index.mjs.map +1 -0
- package/dist/src/services/providerAuth/index.cjs +156 -0
- package/dist/src/services/providerAuth/index.cjs.map +1 -0
- package/dist/src/services/providerAuth/index.mjs +154 -0
- package/dist/src/services/providerAuth/index.mjs.map +1 -0
- package/dist/src/services/remoteAccess/index.cjs +396 -0
- package/dist/src/services/remoteAccess/index.cjs.map +1 -0
- package/dist/src/services/remoteAccess/index.d.mts +81 -0
- package/dist/src/services/remoteAccess/index.d.mts.map +1 -0
- package/dist/src/services/remoteAccess/index.mjs +396 -0
- package/dist/src/services/remoteAccess/index.mjs.map +1 -0
- package/dist/src/services/remoteAccessSettings/index.cjs +151 -0
- package/dist/src/services/remoteAccessSettings/index.cjs.map +1 -0
- package/dist/src/services/remoteAccessSettings/index.mjs +149 -0
- package/dist/src/services/remoteAccessSettings/index.mjs.map +1 -0
- package/dist/src/services/remoteAccessStore/index.cjs +126 -0
- package/dist/src/services/remoteAccessStore/index.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/index.mjs +121 -0
- package/dist/src/services/remoteAccessStore/index.mjs.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.cjs +190 -0
- package/dist/src/services/remoteGuardPolicy/index.cjs.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.d.mts +7 -0
- package/dist/src/services/remoteGuardPolicy/index.d.mts.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.mjs +186 -0
- package/dist/src/services/remoteGuardPolicy/index.mjs.map +1 -0
- package/dist/src/services/requestReceipts/index.cjs +161 -0
- package/dist/src/services/requestReceipts/index.cjs.map +1 -0
- package/dist/src/services/requestReceipts/index.d.mts +11 -0
- package/dist/src/services/requestReceipts/index.d.mts.map +1 -0
- package/dist/src/services/requestReceipts/index.mjs +161 -0
- package/dist/src/services/requestReceipts/index.mjs.map +1 -0
- package/dist/src/services/rpcTranscript/index.cjs +590 -0
- package/dist/src/services/rpcTranscript/index.cjs.map +1 -0
- package/dist/src/services/rpcTranscript/index.d.mts +50 -0
- package/dist/src/services/rpcTranscript/index.d.mts.map +1 -0
- package/dist/src/services/rpcTranscript/index.mjs +589 -0
- package/dist/src/services/rpcTranscript/index.mjs.map +1 -0
- package/dist/src/services/serverFacet/index.cjs +197 -0
- package/dist/src/services/serverFacet/index.cjs.map +1 -0
- package/dist/src/services/serverFacet/index.d.mts +31 -0
- package/dist/src/services/serverFacet/index.d.mts.map +1 -0
- package/dist/src/services/serverFacet/index.mjs +197 -0
- package/dist/src/services/serverFacet/index.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.cjs +46 -0
- package/dist/src/services/sessionGitStatus/index.cjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.mjs +46 -0
- package/dist/src/services/sessionGitStatus/index.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/type.d.mts +8 -0
- package/dist/src/services/sessionGitStatus/type.d.mts.map +1 -0
- package/dist/src/services/sessionMcpActivity/index.cjs +115 -0
- package/dist/src/services/sessionMcpActivity/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpActivity/index.mjs +111 -0
- package/dist/src/services/sessionMcpActivity/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.cjs +432 -0
- package/dist/src/services/sessionMcpAuthorization/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.d.mts +123 -0
- package/dist/src/services/sessionMcpAuthorization/index.d.mts.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.mjs +430 -0
- package/dist/src/services/sessionMcpAuthorization/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpConversations/index.cjs +217 -0
- package/dist/src/services/sessionMcpConversations/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpConversations/index.mjs +212 -0
- package/dist/src/services/sessionMcpConversations/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.cjs +86 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.mjs +83 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.mjs.map +1 -0
- package/dist/src/services/sessionPresentation/index.cjs +119 -0
- package/dist/src/services/sessionPresentation/index.cjs.map +1 -0
- package/dist/src/services/sessionPresentation/index.mjs +119 -0
- package/dist/src/services/sessionPresentation/index.mjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs +105 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.d.mts +29 -0
- package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.mjs +100 -0
- package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.cjs +70 -0
- package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.d.mts +14 -0
- package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.mjs +67 -0
- package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -0
- package/dist/src/services/toolCost/index.cjs +47 -0
- package/dist/src/services/toolCost/index.cjs.map +1 -0
- package/dist/src/services/toolCost/index.d.mts +38 -0
- package/dist/src/services/toolCost/index.d.mts.map +1 -0
- package/dist/src/services/toolCost/index.mjs +46 -0
- package/dist/src/services/toolCost/index.mjs.map +1 -0
- package/dist/src/services/toolOverrides/index.cjs +45 -0
- package/dist/src/services/toolOverrides/index.cjs.map +1 -0
- package/dist/src/services/toolOverrides/index.d.mts +6 -0
- package/dist/src/services/toolOverrides/index.d.mts.map +1 -0
- package/dist/src/services/toolOverrides/index.mjs +45 -0
- package/dist/src/services/toolOverrides/index.mjs.map +1 -0
- package/dist/src/services/toolPrompt/index.cjs +13 -0
- package/dist/src/services/toolPrompt/index.cjs.map +1 -0
- package/dist/src/services/toolPrompt/index.mjs +13 -0
- package/dist/src/services/toolPrompt/index.mjs.map +1 -0
- package/dist/src/services/toolSurface/index.cjs +134 -0
- package/dist/src/services/toolSurface/index.cjs.map +1 -0
- package/dist/src/services/toolSurface/index.d.mts +19 -0
- package/dist/src/services/toolSurface/index.d.mts.map +1 -0
- package/dist/src/services/toolSurface/index.mjs +134 -0
- package/dist/src/services/toolSurface/index.mjs.map +1 -0
- package/dist/src/services/traceContext/index.cjs +13 -0
- package/dist/src/services/traceContext/index.cjs.map +1 -0
- package/dist/src/services/traceContext/index.mjs +13 -0
- package/dist/src/services/traceContext/index.mjs.map +1 -0
- package/dist/src/services/transcriptPages/index.cjs +74 -0
- package/dist/src/services/transcriptPages/index.cjs.map +1 -0
- package/dist/src/services/transcriptPages/index.mjs +73 -0
- package/dist/src/services/transcriptPages/index.mjs.map +1 -0
- package/dist/src/services/tunnelOutput/index.cjs +58 -0
- package/dist/src/services/tunnelOutput/index.cjs.map +1 -0
- package/dist/src/services/tunnelOutput/index.mjs +54 -0
- package/dist/src/services/tunnelOutput/index.mjs.map +1 -0
- package/dist/src/services/tunnelProcess/index.cjs +487 -0
- package/dist/src/services/tunnelProcess/index.cjs.map +1 -0
- package/dist/src/services/tunnelProcess/index.mjs +481 -0
- package/dist/src/services/tunnelProcess/index.mjs.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.cjs +136 -0
- package/dist/src/services/voiceReloadHandoff/index.cjs.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.d.mts +34 -0
- package/dist/src/services/voiceReloadHandoff/index.d.mts.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.mjs +135 -0
- package/dist/src/services/voiceReloadHandoff/index.mjs.map +1 -0
- package/dist/src/services/voiceToolsContract/index.cjs +26 -0
- package/dist/src/services/voiceToolsContract/index.cjs.map +1 -0
- package/dist/src/services/voiceToolsContract/index.d.mts +76 -0
- package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -0
- package/dist/src/services/voiceToolsContract/index.mjs +24 -0
- package/dist/src/services/voiceToolsContract/index.mjs.map +1 -0
- package/dist/src/services/webauthn/index.cjs +262 -0
- package/dist/src/services/webauthn/index.cjs.map +1 -0
- package/dist/src/services/webauthn/index.d.mts +39 -0
- package/dist/src/services/webauthn/index.d.mts.map +1 -0
- package/dist/src/services/webauthn/index.mjs +262 -0
- package/dist/src/services/webauthn/index.mjs.map +1 -0
- package/dist/src/services/webauthnPolicy/index.cjs +163 -0
- package/dist/src/services/webauthnPolicy/index.cjs.map +1 -0
- package/dist/src/services/webauthnPolicy/index.d.mts +41 -0
- package/dist/src/services/webauthnPolicy/index.d.mts.map +1 -0
- package/dist/src/services/webauthnPolicy/index.mjs +156 -0
- package/dist/src/services/webauthnPolicy/index.mjs.map +1 -0
- package/dist/src/services/workspaceRegistry/index.cjs +151 -0
- package/dist/src/services/workspaceRegistry/index.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/index.d.mts +47 -0
- package/dist/src/services/workspaceRegistry/index.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/index.mjs +144 -0
- package/dist/src/services/workspaceRegistry/index.mjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +261 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +32 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +254 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +28 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +1 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +25 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +1 -0
- package/dist/src/systems/child/services/childSession/index.cjs +219 -0
- package/dist/src/systems/child/services/childSession/index.cjs.map +1 -0
- package/dist/src/systems/child/services/childSession/index.d.mts +14 -0
- package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -0
- package/dist/src/systems/child/services/childSession/index.mjs +219 -0
- package/dist/src/systems/child/services/childSession/index.mjs.map +1 -0
- package/dist/src/systems/child/types/childSession.cjs +19 -0
- package/dist/src/systems/child/types/childSession.cjs.map +1 -0
- package/dist/src/systems/child/types/childSession.d.mts +148 -0
- package/dist/src/systems/child/types/childSession.d.mts.map +1 -0
- package/dist/src/systems/child/types/childSession.mjs +16 -0
- package/dist/src/systems/child/types/childSession.mjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.cjs +554 -0
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.d.mts +111 -0
- package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.mjs +552 -0
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +1293 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +14 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +1288 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -0
- package/dist/src/systems/main/types/headlessHost.d.mts +36 -0
- package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.cjs +73 -0
- package/dist/src/testing/pi/extensionScenarios.cjs.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.d.mts +41 -0
- package/dist/src/testing/pi/extensionScenarios.d.mts.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.mjs +73 -0
- package/dist/src/testing/pi/extensionScenarios.mjs.map +1 -0
- package/dist/src/testing/pi/testHost.cjs +398 -0
- package/dist/src/testing/pi/testHost.cjs.map +1 -0
- package/dist/src/testing/pi/testHost.d.mts +160 -0
- package/dist/src/testing/pi/testHost.d.mts.map +1 -0
- package/dist/src/testing/pi/testHost.mjs +398 -0
- package/dist/src/testing/pi/testHost.mjs.map +1 -0
- package/dist/src/types/config.d.mts +20 -0
- package/dist/src/types/config.d.mts.map +1 -0
- package/dist/src/types/kernel.d.mts +69 -0
- package/dist/src/types/kernel.d.mts.map +1 -0
- package/dist/src/types/remote.d.mts +124 -0
- package/dist/src/types/remote.d.mts.map +1 -0
- package/dist/src/types/server/directHarnessRuntime.d.mts +209 -0
- package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -0
- package/dist/src/types/server/session.d.mts +5 -0
- package/dist/src/types/server/session.d.mts.map +1 -0
- package/dist/src/types/server/sessionToolSurface.d.mts +44 -0
- package/dist/src/types/server/sessionToolSurface.d.mts.map +1 -0
- package/dist/src/web/models/globalStore.cjs +23 -0
- package/dist/src/web/models/globalStore.cjs.map +1 -0
- package/dist/src/web/models/globalStore.d.mts +6 -0
- package/dist/src/web/models/globalStore.d.mts.map +1 -0
- package/dist/src/web/models/globalStore.mjs +23 -0
- package/dist/src/web/models/globalStore.mjs.map +1 -0
- package/dist/src/web/models/sessionStore.cjs +56 -0
- package/dist/src/web/models/sessionStore.cjs.map +1 -0
- package/dist/src/web/models/sessionStore.d.mts +14 -0
- package/dist/src/web/models/sessionStore.d.mts.map +1 -0
- package/dist/src/web/models/sessionStore.mjs +56 -0
- package/dist/src/web/models/sessionStore.mjs.map +1 -0
- package/dist/src/web/models/workspaceStore.cjs +50 -0
- package/dist/src/web/models/workspaceStore.cjs.map +1 -0
- package/dist/src/web/models/workspaceStore.d.mts +18 -0
- package/dist/src/web/models/workspaceStore.d.mts.map +1 -0
- package/dist/src/web/models/workspaceStore.mjs +50 -0
- package/dist/src/web/models/workspaceStore.mjs.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.cjs +20 -0
- package/dist/src/web/schemas/bundleAssetPolicy.cjs.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.d.mts +10 -0
- package/dist/src/web/schemas/bundleAssetPolicy.d.mts.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.mjs +18 -0
- package/dist/src/web/schemas/bundleAssetPolicy.mjs.map +1 -0
- package/dist/src/web/schemas/template.cjs +15 -0
- package/dist/src/web/schemas/template.cjs.map +1 -0
- package/dist/src/web/schemas/template.d.mts +6 -0
- package/dist/src/web/schemas/template.d.mts.map +1 -0
- package/dist/src/web/schemas/template.mjs +15 -0
- package/dist/src/web/schemas/template.mjs.map +1 -0
- package/dist/src/web/services/apiClient/index.cjs +156 -0
- package/dist/src/web/services/apiClient/index.cjs.map +1 -0
- package/dist/src/web/services/apiClient/index.d.mts +152 -0
- package/dist/src/web/services/apiClient/index.d.mts.map +1 -0
- package/dist/src/web/services/apiClient/index.mjs +154 -0
- package/dist/src/web/services/apiClient/index.mjs.map +1 -0
- package/dist/src/web/services/apiPaths/index.cjs +83 -0
- package/dist/src/web/services/apiPaths/index.cjs.map +1 -0
- package/dist/src/web/services/apiPaths/index.d.mts +81 -0
- package/dist/src/web/services/apiPaths/index.d.mts.map +1 -0
- package/dist/src/web/services/apiPaths/index.mjs +78 -0
- package/dist/src/web/services/apiPaths/index.mjs.map +1 -0
- package/dist/src/web/services/apiRoutes/index.cjs +47 -0
- package/dist/src/web/services/apiRoutes/index.cjs.map +1 -0
- package/dist/src/web/services/apiRoutes/index.d.mts +21 -0
- package/dist/src/web/services/apiRoutes/index.d.mts.map +1 -0
- package/dist/src/web/services/apiRoutes/index.mjs +43 -0
- package/dist/src/web/services/apiRoutes/index.mjs.map +1 -0
- package/dist/src/web/services/mcpWidget.cjs +9 -0
- package/dist/src/web/services/mcpWidget.cjs.map +1 -0
- package/dist/src/web/services/mcpWidget.d.mts +6 -0
- package/dist/src/web/services/mcpWidget.d.mts.map +1 -0
- package/dist/src/web/services/mcpWidget.mjs +9 -0
- package/dist/src/web/services/mcpWidget.mjs.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.cjs +70 -0
- package/dist/src/web/services/sessionRegistry/index.cjs.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.d.mts +29 -0
- package/dist/src/web/services/sessionRegistry/index.d.mts.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.mjs +66 -0
- package/dist/src/web/services/sessionRegistry/index.mjs.map +1 -0
- package/dist/src/web/services/testing/channels.cjs +11 -0
- package/dist/src/web/services/testing/channels.cjs.map +1 -0
- package/dist/src/web/services/testing/channels.d.mts +8 -0
- package/dist/src/web/services/testing/channels.d.mts.map +1 -0
- package/dist/src/web/services/testing/channels.mjs +11 -0
- package/dist/src/web/services/testing/channels.mjs.map +1 -0
- package/dist/src/web/services/testing/index.cjs +27 -0
- package/dist/src/web/services/testing/index.cjs.map +1 -0
- package/dist/src/web/services/testing/index.d.mts +31 -0
- package/dist/src/web/services/testing/index.d.mts.map +1 -0
- package/dist/src/web/services/testing/index.mjs +27 -0
- package/dist/src/web/services/testing/index.mjs.map +1 -0
- package/dist/src/web/services/testing/rpcStub.cjs +58 -0
- package/dist/src/web/services/testing/rpcStub.cjs.map +1 -0
- package/dist/src/web/services/testing/rpcStub.d.mts +37 -0
- package/dist/src/web/services/testing/rpcStub.d.mts.map +1 -0
- package/dist/src/web/services/testing/rpcStub.mjs +58 -0
- package/dist/src/web/services/testing/rpcStub.mjs.map +1 -0
- package/dist/src/web/services/testing/slotProps.cjs +91 -0
- package/dist/src/web/services/testing/slotProps.cjs.map +1 -0
- package/dist/src/web/services/testing/slotProps.d.mts +69 -0
- package/dist/src/web/services/testing/slotProps.d.mts.map +1 -0
- package/dist/src/web/services/testing/slotProps.mjs +90 -0
- package/dist/src/web/services/testing/slotProps.mjs.map +1 -0
- package/dist/src/web/services/testing/templateRail.cjs +128 -0
- package/dist/src/web/services/testing/templateRail.cjs.map +1 -0
- package/dist/src/web/services/testing/templateRail.d.mts +31 -0
- package/dist/src/web/services/testing/templateRail.d.mts.map +1 -0
- package/dist/src/web/services/testing/templateRail.mjs +126 -0
- package/dist/src/web/services/testing/templateRail.mjs.map +1 -0
- package/dist/src/web/services/toolResult/index.cjs +30 -0
- package/dist/src/web/services/toolResult/index.cjs.map +1 -0
- package/dist/src/web/services/toolResult/index.d.mts +14 -0
- package/dist/src/web/services/toolResult/index.d.mts.map +1 -0
- package/dist/src/web/services/toolResult/index.mjs +29 -0
- package/dist/src/web/services/toolResult/index.mjs.map +1 -0
- package/dist/src/web/types/extensionFile.d.mts +59 -0
- package/dist/src/web/types/extensionFile.d.mts.map +1 -0
- package/dist/src/web/types/mcpWidget.d.mts +14 -0
- package/dist/src/web/types/mcpWidget.d.mts.map +1 -0
- package/dist/src/web/types/modelContext.d.mts +43 -0
- package/dist/src/web/types/modelContext.d.mts.map +1 -0
- package/dist/src/web/types/sessionRegistry.d.mts +43 -0
- package/dist/src/web/types/sessionRegistry.d.mts.map +1 -0
- package/dist/src/web/types/template.d.mts +155 -0
- package/dist/src/web/types/template.d.mts.map +1 -0
- package/dist/src/web/types/webPlugin.d.mts +896 -0
- package/dist/src/web/types/webPlugin.d.mts.map +1 -0
- package/dist/syncLocation.cjs +244 -0
- package/dist/syncLocation.cjs.map +1 -0
- package/dist/syncLocation.d.mts +37 -0
- package/dist/syncLocation.d.mts.map +1 -0
- package/dist/syncLocation.mjs +231 -0
- package/dist/syncLocation.mjs.map +1 -0
- package/dist/syncRegistration.cjs +171 -0
- package/dist/syncRegistration.cjs.map +1 -0
- package/dist/syncRegistration.d.mts +48 -0
- package/dist/syncRegistration.d.mts.map +1 -0
- package/dist/syncRegistration.mjs +159 -0
- package/dist/syncRegistration.mjs.map +1 -0
- package/dist/syncStateContract.cjs +19 -0
- package/dist/syncStateContract.cjs.map +1 -0
- package/dist/syncStateContract.d.mts +14 -0
- package/dist/syncStateContract.d.mts.map +1 -0
- package/dist/syncStateContract.mjs +16 -0
- package/dist/syncStateContract.mjs.map +1 -0
- package/dist/terminalPiChildSessionService.cjs +267 -0
- package/dist/terminalPiChildSessionService.cjs.map +1 -0
- package/dist/terminalPiChildSessionService.d.mts +42 -0
- package/dist/terminalPiChildSessionService.d.mts.map +1 -0
- package/dist/terminalPiChildSessionService.mjs +260 -0
- package/dist/terminalPiChildSessionService.mjs.map +1 -0
- package/dist/testing.cjs +11 -0
- package/dist/testing.d.mts +6 -0
- package/dist/testing.mjs +6 -0
- package/dist/toolInventory.cjs +136 -0
- package/dist/toolInventory.cjs.map +1 -0
- package/dist/toolInventory.d.mts +66 -0
- package/dist/toolInventory.d.mts.map +1 -0
- package/dist/toolInventory.mjs +133 -0
- package/dist/toolInventory.mjs.map +1 -0
- package/dist/toolNames.cjs +4 -0
- package/dist/toolNames.d.mts +2 -0
- package/dist/toolNames.mjs +2 -0
- package/dist/toolOverrides.cjs +7 -0
- package/dist/toolOverrides.d.mts +3 -0
- package/dist/toolOverrides.mjs +3 -0
- package/dist/toolSurface.cjs +7 -0
- package/dist/toolSurface.d.mts +3 -0
- package/dist/toolSurface.mjs +3 -0
- package/dist/transition.cjs +5 -0
- package/dist/transition.d.cjs +5 -0
- package/dist/transition.d.mts +2 -0
- package/dist/transition.mjs +2 -0
- package/dist/transitionClassifier.cjs +112 -0
- package/dist/transitionClassifier.cjs.map +1 -0
- package/dist/transitionClassifier.d.mts +18 -0
- package/dist/transitionClassifier.d.mts.map +1 -0
- package/dist/transitionClassifier.mjs +111 -0
- package/dist/transitionClassifier.mjs.map +1 -0
- package/dist/transitionCoordinator.cjs +131 -0
- package/dist/transitionCoordinator.cjs.map +1 -0
- package/dist/transitionCoordinator.d.mts +16 -0
- package/dist/transitionCoordinator.d.mts.map +1 -0
- package/dist/transitionCoordinator.mjs +130 -0
- package/dist/transitionCoordinator.mjs.map +1 -0
- package/dist/typesContextApi.cjs +0 -0
- package/dist/typesContextApi.d.mts +73 -0
- package/dist/typesContextApi.d.mts.map +1 -0
- package/dist/typesContextApi.mjs +1 -0
- package/dist/uiHub.cjs +5 -0
- package/dist/uiHub.d.mts +2 -0
- package/dist/uiHub.mjs +2 -0
- package/dist/v3Export.cjs +1004 -0
- package/dist/v3Export.cjs.map +1 -0
- package/dist/v3Export.d.mts +34 -0
- package/dist/v3Export.d.mts.map +1 -0
- package/dist/v3Export.mjs +1000 -0
- package/dist/v3Export.mjs.map +1 -0
- package/dist/voiceReloadHandoff.cjs +14 -0
- package/dist/voiceReloadHandoff.d.mts +4 -0
- package/dist/voiceReloadHandoff.mjs +4 -0
- package/dist/voiceTools.cjs +56 -0
- package/dist/voiceTools.d.mts +4 -0
- package/dist/voiceTools.mjs +4 -0
- package/dist/web.cjs +64 -0
- package/dist/web.d.mts +19 -0
- package/dist/web.mjs +13 -0
- package/dist/webCompositions.cjs +100 -0
- package/dist/webCompositions.cjs.map +1 -0
- package/dist/webCompositions.d.mts +20 -0
- package/dist/webCompositions.d.mts.map +1 -0
- package/dist/webCompositions.mjs +95 -0
- package/dist/webCompositions.mjs.map +1 -0
- package/dist/webTesting.cjs +14 -0
- package/dist/webTesting.d.mts +6 -0
- package/dist/webTesting.mjs +6 -0
- package/package.json +616 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionMcpHandler.d.mts","names":[],"sources":["../../../src/server/sessionMcpHandler.ts"],"mappings":";;;;;iBAkDiB;WACN,gBAAgB;WAChB;IAAmB;IAAc;;;iBAmD3B;WACN;WACA;WACA,aAAa;;iBAGP;;WAEN;WACA,eAAe,KAAK;WACpB,cAAc,OAAO,iCAAiC;WACtD;;WAEA;WACA,YAAY,YAAY;;WAExB,aAAa;WACb,iBAAiB,sBAAsB,+BAA+B,QAAQ;WAC9E,uBACP,OAAO,uBACP,gBACA,kBACA,SAAS,gBACN,mBAAmB,QAAQ;;WAEvB,YAAY;;WAEZ,gBAAgB,YAAY;WAC5B;WACA;;YAGC,8BAA8B;EAEtC,YAAY;EAAiB;EAAe;;YAGpC,yBAAyB,SAAS,YAAY,QAAQ;;wBAkElD,4BAA4B,SAAS,+BAA+B"}
|
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
import { SessionMcpConversationError, sessionMcpConversationDigest } from "../services/sessionMcpConversations/index.mjs";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import { isDeepStrictEqual } from "node:util";
|
|
4
|
+
import { ProtocolError, ProtocolErrorCode, Server, createMcpHandler } from "@modelcontextprotocol/server";
|
|
5
|
+
//#region src/server/sessionMcpHandler.ts
|
|
6
|
+
/** Stable transport tools stay available when a conversation changes its MCP composition. */
|
|
7
|
+
const SESSION_MCP_EXTRA_TOOLS = [
|
|
8
|
+
{
|
|
9
|
+
name: "load_extra_tools",
|
|
10
|
+
title: "Load extra tools",
|
|
11
|
+
description: "Discover tools and skills in this conversation that differ from the last parent catalog refresh.",
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: "object",
|
|
14
|
+
properties: {},
|
|
15
|
+
additionalProperties: false
|
|
16
|
+
},
|
|
17
|
+
annotations: { readOnlyHint: true },
|
|
18
|
+
_meta: { ui: { visibility: ["model"] } }
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "use_extra_tools",
|
|
22
|
+
title: "Use extra tools",
|
|
23
|
+
description: "Invoke one currently available extra tool by exact name with its declared arguments.",
|
|
24
|
+
inputSchema: {
|
|
25
|
+
type: "object",
|
|
26
|
+
properties: {
|
|
27
|
+
name: { type: "string" },
|
|
28
|
+
arguments: { type: "object" }
|
|
29
|
+
},
|
|
30
|
+
required: ["name"],
|
|
31
|
+
additionalProperties: false
|
|
32
|
+
},
|
|
33
|
+
_meta: { ui: { visibility: ["model"] } }
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "session_capabilities",
|
|
37
|
+
title: "Session capabilities",
|
|
38
|
+
description: "Inspect the tools and skills currently available in this conversation, independently of the parent catalog diff.",
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: "object",
|
|
41
|
+
properties: {},
|
|
42
|
+
additionalProperties: false
|
|
43
|
+
},
|
|
44
|
+
annotations: { readOnlyHint: true },
|
|
45
|
+
_meta: { ui: { visibility: ["model"] } }
|
|
46
|
+
}
|
|
47
|
+
];
|
|
48
|
+
function publicTool(tool) {
|
|
49
|
+
return {
|
|
50
|
+
name: tool.name,
|
|
51
|
+
title: tool.label,
|
|
52
|
+
description: tool.description,
|
|
53
|
+
inputSchema: tool.parameters,
|
|
54
|
+
...tool.annotations === void 0 ? {} : { annotations: tool.annotations },
|
|
55
|
+
...tool.outputSchema === void 0 ? {} : { outputSchema: tool.outputSchema },
|
|
56
|
+
_meta: {
|
|
57
|
+
...tool._meta,
|
|
58
|
+
ui: {
|
|
59
|
+
...tool._meta?.ui,
|
|
60
|
+
visibility: tool._meta?.ui?.visibility ?? ["model"]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function grantedExtraTools(grant) {
|
|
66
|
+
return grant.scope === "session" ? SESSION_MCP_EXTRA_TOOLS : SESSION_MCP_EXTRA_TOOLS.filter((tool) => grant.tools.includes(tool.name));
|
|
67
|
+
}
|
|
68
|
+
function extraTools(baseline, tools) {
|
|
69
|
+
return tools.map(publicTool).filter((tool) => !SESSION_MCP_EXTRA_TOOLS.some((wrapper) => wrapper.name === tool.name) && !isDeepStrictEqual(baseline.tools.find((original) => original.name === tool.name), tool));
|
|
70
|
+
}
|
|
71
|
+
function toolArguments(name, value) {
|
|
72
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new ProtocolError(ProtocolErrorCode.InvalidParams, `Invalid arguments for '${name}'.`);
|
|
73
|
+
const args = value;
|
|
74
|
+
if (Object.keys(args).some((key) => key !== "name" && key !== "arguments") || (name === "load_extra_tools" || name === "session_capabilities") && Object.keys(args).length !== 0 || name === "use_extra_tools" && (typeof args.name !== "string" || args.name.trim() === "" || args.arguments !== void 0 && (typeof args.arguments !== "object" || args.arguments === null || Array.isArray(args.arguments)))) throw new ProtocolError(ProtocolErrorCode.InvalidParams, `Invalid arguments for '${name}'.`);
|
|
75
|
+
return args;
|
|
76
|
+
}
|
|
77
|
+
function jsonError(status, message, authenticate = false, resourceMetadataUrl) {
|
|
78
|
+
return Response.json({
|
|
79
|
+
jsonrpc: "2.0",
|
|
80
|
+
error: {
|
|
81
|
+
code: -32e3,
|
|
82
|
+
message
|
|
83
|
+
},
|
|
84
|
+
id: null
|
|
85
|
+
}, {
|
|
86
|
+
status,
|
|
87
|
+
headers: {
|
|
88
|
+
"cache-control": "no-store",
|
|
89
|
+
...authenticate ? { "www-authenticate": resourceMetadataUrl === void 0 ? "Bearer" : `Bearer resource_metadata="${resourceMetadataUrl}"` } : {}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function bearerToken(request) {
|
|
94
|
+
const authorization = request.headers.get("authorization");
|
|
95
|
+
return (authorization === null ? void 0 : /^Bearer ([A-Za-z0-9_-]+)$/iu.exec(authorization))?.[1];
|
|
96
|
+
}
|
|
97
|
+
function currentUrl(request) {
|
|
98
|
+
try {
|
|
99
|
+
const url = new URL(request.url);
|
|
100
|
+
return url.search === "" && url.hash === "" ? url.href : void 0;
|
|
101
|
+
} catch {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function grantedSurface(grant, surface) {
|
|
106
|
+
const snapshot = surface.readSurface();
|
|
107
|
+
if (snapshot.tools.some((tool) => SESSION_MCP_EXTRA_TOOLS.some((wrapper) => wrapper.name === tool.name))) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "A session tool conflicts with a reserved remote tool name.");
|
|
108
|
+
const toolNames = new Set(grant.tools);
|
|
109
|
+
const skillNames = new Set(grant.skills);
|
|
110
|
+
const tools = grant.scope === "session" ? snapshot.tools : snapshot.tools.filter((tool) => toolNames.has(tool.name));
|
|
111
|
+
const resourceUris = new Set(tools.map((tool) => tool._meta?.ui?.resourceUri));
|
|
112
|
+
return {
|
|
113
|
+
snapshot,
|
|
114
|
+
tools,
|
|
115
|
+
skills: grant.scope === "session" ? snapshot.skills : snapshot.skills.filter((skill) => skillNames.has(skill.name)),
|
|
116
|
+
uiResources: (snapshot.uiResources ?? []).filter((resource) => resourceUris.has(resource.uri))
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** Identity is supplied by the approved tool descriptor, never by upstream result metadata. */
|
|
120
|
+
function widgetResult(tool, result) {
|
|
121
|
+
const widget = tool?._meta?.["doompi/widget"];
|
|
122
|
+
return typeof widget !== "string" ? result : {
|
|
123
|
+
...result,
|
|
124
|
+
_meta: {
|
|
125
|
+
...result._meta,
|
|
126
|
+
"doompi/widget": widget,
|
|
127
|
+
"doompi/toolName": tool.name
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/** Creates a stateless Streamable HTTP MCP request handler for session capabilities. */
|
|
132
|
+
function createSessionMcpHttpHandler(options) {
|
|
133
|
+
const audience = new URL(options.audience);
|
|
134
|
+
if (audience.protocol !== "https:" || audience.username !== "" || audience.password !== "" || audience.search !== "" || audience.hash !== "") throw new Error("Session MCP audience must be an absolute HTTPS URL without credentials, a query, or a fragment.");
|
|
135
|
+
const exactAudience = audience.href;
|
|
136
|
+
if (options.pathToken !== void 0 && !/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/u.test(options.pathToken)) throw new Error("Session MCP path token must be a compact JWT.");
|
|
137
|
+
const exactResource = options.pathToken === void 0 ? exactAudience : `${exactAudience}/${options.pathToken}`;
|
|
138
|
+
const authenticate = options.pathToken === void 0 ? options.authorization.authenticateAccessToken : options.authorization.authenticateUrlToken;
|
|
139
|
+
const operations = options.operations ?? /* @__PURE__ */ new Map();
|
|
140
|
+
const baselines = options.baselines ?? /* @__PURE__ */ new Map();
|
|
141
|
+
const operationOwner = (grant, requestId) => JSON.stringify([
|
|
142
|
+
grant.clientId,
|
|
143
|
+
grant.sessionId,
|
|
144
|
+
grant.sessionGeneration,
|
|
145
|
+
grant.id,
|
|
146
|
+
requestId
|
|
147
|
+
]);
|
|
148
|
+
return async (request) => {
|
|
149
|
+
if (currentUrl(request) !== exactResource) return jsonError(404, "MCP resource not found.");
|
|
150
|
+
const token = options.pathToken ?? bearerToken(request);
|
|
151
|
+
if (token === void 0) return jsonError(401, "A Bearer access token is required.", true, options.resourceMetadataUrl);
|
|
152
|
+
const grant = authenticate(token, exactAudience);
|
|
153
|
+
if (grant === void 0) return options.pathToken === void 0 ? jsonError(401, "The Bearer access token is invalid or expired.", true, options.resourceMetadataUrl) : jsonError(401, "The signed MCP URL is invalid or revoked.");
|
|
154
|
+
const authorizeOperation = async () => {
|
|
155
|
+
const activeGrant = authenticate(token, exactAudience);
|
|
156
|
+
if (activeGrant === void 0 || activeGrant.id !== grant.id) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The session grant is no longer active.");
|
|
157
|
+
const target = await options.resolveSession(activeGrant.sessionId);
|
|
158
|
+
const recheckedGrant = authenticate(token, exactAudience);
|
|
159
|
+
if (recheckedGrant === void 0 || recheckedGrant.id !== activeGrant.id || target === void 0 || target.generation !== recheckedGrant.sessionGeneration) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The session grant is no longer active.");
|
|
160
|
+
return {
|
|
161
|
+
grant: recheckedGrant,
|
|
162
|
+
target
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
try {
|
|
166
|
+
await authorizeOperation();
|
|
167
|
+
} catch {
|
|
168
|
+
return options.pathToken === void 0 ? jsonError(401, "The session grant is no longer active.", true, options.resourceMetadataUrl) : jsonError(401, "The signed MCP URL is invalid or revoked.");
|
|
169
|
+
}
|
|
170
|
+
const server = new Server({
|
|
171
|
+
name: options.serverName ?? "doompi-session",
|
|
172
|
+
version: options.serverVersion ?? "1.0.0"
|
|
173
|
+
}, {
|
|
174
|
+
capabilities: {
|
|
175
|
+
tools: {},
|
|
176
|
+
resources: {}
|
|
177
|
+
},
|
|
178
|
+
instructions: "Use only this bound DoomPi session. Call load_context before work and after selection changes. Call session_capabilities for the current inventory; load_extra_tools returns only conversation differences. Invoke extras with use_extra_tools and guidance with load_skill. Inspect before editing and follow repository checks. Do not assume UI, downloadable files, or background notifications. Read saved logs instead of relaunching work. Saving a plan does not authorize implementation."
|
|
179
|
+
});
|
|
180
|
+
server.setNotificationHandler("notifications/cancelled", async (notification) => {
|
|
181
|
+
const active = await authorizeOperation();
|
|
182
|
+
if (notification.params.requestId === void 0) return;
|
|
183
|
+
const owner = operationOwner(active.grant, notification.params.requestId);
|
|
184
|
+
const conversation = sessionMcpConversationDigest(notification.params._meta);
|
|
185
|
+
if (conversation === void 0) return;
|
|
186
|
+
const candidates = [...operations.values()].filter((operation) => operation.owner === owner && operation.conversation === conversation);
|
|
187
|
+
if (candidates.length === 1) candidates[0].controller.abort();
|
|
188
|
+
});
|
|
189
|
+
server.setRequestHandler("tools/list", async () => {
|
|
190
|
+
const active = await authorizeOperation();
|
|
191
|
+
await options.onVerified?.(active.grant);
|
|
192
|
+
const { tools, skills } = grantedSurface(active.grant, active.target.toolSurface);
|
|
193
|
+
const parentTools = tools.map(publicTool);
|
|
194
|
+
const wrappers = grantedExtraTools(active.grant);
|
|
195
|
+
const baseline = structuredClone({
|
|
196
|
+
tools: parentTools,
|
|
197
|
+
skills: skills.map(({ name, description }) => ({
|
|
198
|
+
name,
|
|
199
|
+
description
|
|
200
|
+
}))
|
|
201
|
+
});
|
|
202
|
+
await authorizeOperation();
|
|
203
|
+
baselines.set(active.grant.clientId, baseline);
|
|
204
|
+
return { tools: [...parentTools, ...wrappers] };
|
|
205
|
+
});
|
|
206
|
+
server.setRequestHandler("tools/call", async (message, ctx) => {
|
|
207
|
+
const conversation = sessionMcpConversationDigest(ctx.mcpReq._meta ?? message.params._meta);
|
|
208
|
+
const owner = operationOwner(grant, ctx.mcpReq.id);
|
|
209
|
+
const key = JSON.stringify([owner, conversation]);
|
|
210
|
+
if (operations.has(key)) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "A tool call with this request identity is already active.");
|
|
211
|
+
if (options.operations !== void 0 && operations.size >= 1024) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "Too many active MCP tool calls. Retry later.");
|
|
212
|
+
const controller = new AbortController();
|
|
213
|
+
operations.set(key, {
|
|
214
|
+
controller,
|
|
215
|
+
owner,
|
|
216
|
+
conversation
|
|
217
|
+
});
|
|
218
|
+
const signal = AbortSignal.any([
|
|
219
|
+
request.signal,
|
|
220
|
+
ctx.mcpReq.signal,
|
|
221
|
+
controller.signal
|
|
222
|
+
]);
|
|
223
|
+
const invocationId = randomUUID();
|
|
224
|
+
let skillAccessOpen = true;
|
|
225
|
+
let widgetTool;
|
|
226
|
+
let invocation;
|
|
227
|
+
const publishInvocation = () => {
|
|
228
|
+
if (invocation?.sessionId === void 0) return;
|
|
229
|
+
try {
|
|
230
|
+
options.onInvocation?.({ ...invocation });
|
|
231
|
+
} catch {
|
|
232
|
+
options.onNotice?.("session MCP call history could not be saved");
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
const completeInvocation = (result) => {
|
|
236
|
+
if (invocation !== void 0) {
|
|
237
|
+
invocation = {
|
|
238
|
+
...invocation,
|
|
239
|
+
status: signal.aborted ? "cancelled" : result.isError ? "failed" : "succeeded",
|
|
240
|
+
finishedAt: Date.now(),
|
|
241
|
+
output: result.structuredContent ?? result.content
|
|
242
|
+
};
|
|
243
|
+
publishInvocation();
|
|
244
|
+
}
|
|
245
|
+
return result;
|
|
246
|
+
};
|
|
247
|
+
try {
|
|
248
|
+
const parent = await authorizeOperation();
|
|
249
|
+
invocation = {
|
|
250
|
+
id: invocationId,
|
|
251
|
+
parentSessionId: parent.grant.sessionId,
|
|
252
|
+
clientId: parent.grant.clientId,
|
|
253
|
+
conversationDigest: conversation,
|
|
254
|
+
toolName: message.params.name,
|
|
255
|
+
startedAt: Date.now(),
|
|
256
|
+
status: "running",
|
|
257
|
+
input: message.params.arguments ?? {}
|
|
258
|
+
};
|
|
259
|
+
publishInvocation();
|
|
260
|
+
const wrapper = grantedExtraTools(parent.grant).some((tool) => tool.name === message.params.name);
|
|
261
|
+
const advertised = wrapper ? void 0 : grantedSurface(parent.grant, parent.target.toolSurface).tools.find((tool) => tool.name === message.params.name);
|
|
262
|
+
if (!wrapper && !advertised) throw new ProtocolError(ProtocolErrorCode.InvalidParams, `Tool '${message.params.name}' is not granted or active.`);
|
|
263
|
+
widgetTool = advertised;
|
|
264
|
+
const wrapperArgs = wrapper ? toolArguments(message.params.name, message.params.arguments ?? {}) : void 0;
|
|
265
|
+
await options.onVerified?.(parent.grant);
|
|
266
|
+
options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=started`);
|
|
267
|
+
const resolveTarget = async (reserve) => {
|
|
268
|
+
const active = await authorizeOperation();
|
|
269
|
+
if (!conversation) throw new SessionMcpConversationError("CONVERSATION_ID_REQUIRED", "This connection requires conversation metadata. Use a compatible ChatGPT conversation and retry.");
|
|
270
|
+
if (!options.resolveConversation) throw new SessionMcpConversationError("CONVERSATION_ROUTING_UNAVAILABLE", "Conversation routing is unavailable in this host.");
|
|
271
|
+
signal.throwIfAborted();
|
|
272
|
+
const target = await options.resolveConversation(active.grant, conversation, reserve, signal);
|
|
273
|
+
await authorizeOperation();
|
|
274
|
+
signal.throwIfAborted();
|
|
275
|
+
return {
|
|
276
|
+
grant: active.grant,
|
|
277
|
+
target
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
if (wrapper && !conversation) throw new SessionMcpConversationError("CONVERSATION_ID_REQUIRED", "This connection requires conversation metadata. Use a compatible ChatGPT conversation and retry.");
|
|
281
|
+
if ((message.params.name === "load_extra_tools" || message.params.name === "use_extra_tools") && !baselines.has(parent.grant.clientId)) throw new SessionMcpConversationError("SESSION_MCP_BASELINE_REQUIRED", "Refresh this MCP connection tool catalog before loading or using extra tools.");
|
|
282
|
+
const active = await resolveTarget(true);
|
|
283
|
+
invocation = {
|
|
284
|
+
...invocation,
|
|
285
|
+
sessionId: active.target.sessionId ?? parent.grant.sessionId
|
|
286
|
+
};
|
|
287
|
+
publishInvocation();
|
|
288
|
+
const { snapshot, tools, skills } = grantedSurface(active.grant, active.target.toolSurface);
|
|
289
|
+
const baseline = baselines.get(parent.grant.clientId);
|
|
290
|
+
const extras = wrapper && baseline ? extraTools(baseline, tools) : [];
|
|
291
|
+
if (message.params.name === "session_capabilities" && wrapper) {
|
|
292
|
+
const capabilities = {
|
|
293
|
+
sessionId: active.target.sessionId ?? parent.grant.sessionId,
|
|
294
|
+
generation: active.target.generation,
|
|
295
|
+
revision: snapshot.revision,
|
|
296
|
+
baseline: baseline === void 0 ? "missing" : "available",
|
|
297
|
+
inventory: "active_surface",
|
|
298
|
+
discovery: "unknown",
|
|
299
|
+
tools: [...tools.map(publicTool), ...grantedExtraTools(active.grant)],
|
|
300
|
+
skills: skills.map(({ name, description }) => ({
|
|
301
|
+
name,
|
|
302
|
+
description
|
|
303
|
+
}))
|
|
304
|
+
};
|
|
305
|
+
const current = await resolveTarget(false);
|
|
306
|
+
if (current.target.toolSurface !== active.target.toolSurface || current.target.generation !== active.target.generation || current.target.sessionId !== active.target.sessionId || current.target.toolSurface.readSurface().revision !== snapshot.revision) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The session tool surface has changed.");
|
|
307
|
+
options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=succeeded`);
|
|
308
|
+
return completeInvocation({
|
|
309
|
+
content: [{
|
|
310
|
+
type: "text",
|
|
311
|
+
text: JSON.stringify(capabilities)
|
|
312
|
+
}],
|
|
313
|
+
structuredContent: capabilities,
|
|
314
|
+
isError: false
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
if (message.params.name === "load_extra_tools" && wrapper) {
|
|
318
|
+
const discovery = {
|
|
319
|
+
tools: extras,
|
|
320
|
+
skills: (tools.some((tool) => tool.name === "load_skill") ? skills : []).map(({ name, description }) => ({
|
|
321
|
+
name,
|
|
322
|
+
description
|
|
323
|
+
})).filter((skill) => !isDeepStrictEqual(baseline.skills.find((original) => original.name === skill.name), skill))
|
|
324
|
+
};
|
|
325
|
+
const current = await resolveTarget(false);
|
|
326
|
+
if (current.target.toolSurface !== active.target.toolSurface || current.target.generation !== active.target.generation || current.target.sessionId !== active.target.sessionId || current.target.toolSurface.readSurface().revision !== snapshot.revision) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The session tool surface has changed.");
|
|
327
|
+
options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=succeeded`);
|
|
328
|
+
return completeInvocation({
|
|
329
|
+
content: [{
|
|
330
|
+
type: "text",
|
|
331
|
+
text: JSON.stringify(discovery)
|
|
332
|
+
}],
|
|
333
|
+
structuredContent: discovery,
|
|
334
|
+
isError: false
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
const name = wrapper ? wrapperArgs.name : message.params.name;
|
|
338
|
+
const selected = tools.find((tool) => tool.name === name);
|
|
339
|
+
if (wrapper && (!extras.some((tool) => tool.name === name) || !selected)) throw new ProtocolError(ProtocolErrorCode.InvalidParams, `Extra tool '${name}' is not granted or active.`);
|
|
340
|
+
if (!wrapper && (!selected || !isDeepStrictEqual(selected.parameters, advertised.parameters) || !isDeepStrictEqual(selected.outputSchema, advertised.outputSchema) || !isDeepStrictEqual(selected.annotations, advertised.annotations) || !isDeepStrictEqual(selected._meta, advertised._meta))) throw new SessionMcpConversationError("SESSION_TOOL_SURFACE_CHANGED", "The target session does not expose the approved tool contract. Refresh the connection or restore a compatible session selection.");
|
|
341
|
+
widgetTool = wrapper ? void 0 : selected;
|
|
342
|
+
const recheck = async () => {
|
|
343
|
+
const current = await resolveTarget(false);
|
|
344
|
+
if (current.target.toolSurface !== active.target.toolSurface || current.target.generation !== active.target.generation || current.target.sessionId !== active.target.sessionId) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The session tool surface has changed.");
|
|
345
|
+
if (wrapper) {
|
|
346
|
+
if (!grantedExtraTools(current.grant).some((tool) => tool.name === message.params.name)) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The connection tool surface has changed.");
|
|
347
|
+
} else {
|
|
348
|
+
const currentAdvertised = grantedSurface(current.grant, parent.target.toolSurface).tools.find((tool) => tool.name === message.params.name);
|
|
349
|
+
if (!currentAdvertised || !isDeepStrictEqual(currentAdvertised, advertised)) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The connection tool surface has changed.");
|
|
350
|
+
}
|
|
351
|
+
return current;
|
|
352
|
+
};
|
|
353
|
+
const authorizedSkills = async () => {
|
|
354
|
+
if (!skillAccessOpen) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "Remote skill access is no longer active.");
|
|
355
|
+
signal.throwIfAborted();
|
|
356
|
+
const current = await recheck();
|
|
357
|
+
signal.throwIfAborted();
|
|
358
|
+
return grantedSurface(current.grant, current.target.toolSurface);
|
|
359
|
+
};
|
|
360
|
+
const mcpSkills = {
|
|
361
|
+
async list() {
|
|
362
|
+
const { skills } = await authorizedSkills();
|
|
363
|
+
return skills.map(({ name, description }) => ({
|
|
364
|
+
name,
|
|
365
|
+
description
|
|
366
|
+
}));
|
|
367
|
+
},
|
|
368
|
+
async read(name) {
|
|
369
|
+
const current = await authorizedSkills();
|
|
370
|
+
const skill = current.skills.find((candidate) => candidate.name === name);
|
|
371
|
+
if (!skill) throw new ProtocolError(ProtocolErrorCode.InvalidParams, "Skill is not granted or active.");
|
|
372
|
+
const text = await active.target.toolSurface.readSkill(current.snapshot.revision, skill.uri);
|
|
373
|
+
signal.throwIfAborted();
|
|
374
|
+
if ((await authorizedSkills()).snapshot.revision !== current.snapshot.revision) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The session skill surface has changed.");
|
|
375
|
+
return text;
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
invocation = {
|
|
379
|
+
...invocation,
|
|
380
|
+
toolName: name,
|
|
381
|
+
input: wrapper ? wrapperArgs.arguments ?? {} : message.params.arguments ?? {}
|
|
382
|
+
};
|
|
383
|
+
publishInvocation();
|
|
384
|
+
const result = await active.target.toolSurface.invokeTool({
|
|
385
|
+
revision: snapshot.revision,
|
|
386
|
+
name,
|
|
387
|
+
arguments: wrapper ? wrapperArgs.arguments ?? {} : message.params.arguments ?? {},
|
|
388
|
+
signal,
|
|
389
|
+
mcpSkills,
|
|
390
|
+
authorize: async () => {
|
|
391
|
+
const current = await recheck();
|
|
392
|
+
if (wrapper) {
|
|
393
|
+
const currentTool = grantedSurface(current.grant, current.target.toolSurface).tools.find((tool) => tool.name === name);
|
|
394
|
+
if (!currentTool || !isDeepStrictEqual(currentTool, selected)) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The extra tool surface has changed.");
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
await recheck();
|
|
399
|
+
options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=succeeded`);
|
|
400
|
+
return completeInvocation(widgetResult(wrapper ? void 0 : selected, {
|
|
401
|
+
content: result.content,
|
|
402
|
+
...result.structuredContent === void 0 ? {} : { structuredContent: result.structuredContent },
|
|
403
|
+
...result._meta === void 0 ? {} : { _meta: result._meta },
|
|
404
|
+
isError: result.isError ?? false
|
|
405
|
+
}));
|
|
406
|
+
} catch (error) {
|
|
407
|
+
const cause = error instanceof SessionMcpConversationError ? error.code : signal.aborted ? "aborted" : error instanceof ProtocolError ? `mcp_${String(error.code)}` : error instanceof Error ? error.name : "unknown";
|
|
408
|
+
options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=failed cause=${cause}`);
|
|
409
|
+
if (invocation !== void 0) {
|
|
410
|
+
invocation = {
|
|
411
|
+
...invocation,
|
|
412
|
+
status: signal.aborted ? "cancelled" : "failed",
|
|
413
|
+
finishedAt: Date.now(),
|
|
414
|
+
output: {
|
|
415
|
+
cause,
|
|
416
|
+
message: error instanceof Error ? error.message : "Tool call failed."
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
publishInvocation();
|
|
420
|
+
}
|
|
421
|
+
if (!(error instanceof SessionMcpConversationError)) throw error;
|
|
422
|
+
return widgetResult(widgetTool, {
|
|
423
|
+
content: [{
|
|
424
|
+
type: "text",
|
|
425
|
+
text: error.message
|
|
426
|
+
}],
|
|
427
|
+
isError: true,
|
|
428
|
+
structuredContent: {
|
|
429
|
+
code: error.code,
|
|
430
|
+
message: error.message,
|
|
431
|
+
...error.bindingId === void 0 ? {} : { bindingId: error.bindingId }
|
|
432
|
+
}
|
|
433
|
+
});
|
|
434
|
+
} finally {
|
|
435
|
+
skillAccessOpen = false;
|
|
436
|
+
operations.delete(key);
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
server.setRequestHandler("resources/list", async () => {
|
|
440
|
+
const active = await authorizeOperation();
|
|
441
|
+
const { uiResources } = grantedSurface(active.grant, active.target.toolSurface);
|
|
442
|
+
return { resources: [...uiResources] };
|
|
443
|
+
});
|
|
444
|
+
server.setRequestHandler("resources/read", async (message, ctx) => {
|
|
445
|
+
const conversation = sessionMcpConversationDigest(ctx.mcpReq._meta ?? message.params._meta);
|
|
446
|
+
const active = await authorizeOperation();
|
|
447
|
+
const { snapshot, skills, uiResources } = grantedSurface(active.grant, active.target.toolSurface);
|
|
448
|
+
const skill = skills.find((candidate) => candidate.uri === message.params.uri);
|
|
449
|
+
if (skill !== void 0) {
|
|
450
|
+
if (!conversation) throw new ProtocolError(ProtocolErrorCode.InvalidParams, "Use load_skill with conversation metadata to read target-session guidance.");
|
|
451
|
+
if (!options.resolveConversation) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "Conversation routing is unavailable in this host.");
|
|
452
|
+
const text = await (await options.resolveConversation(active.grant, conversation, false, request.signal)).toolSurface.readSkill(snapshot.revision, skill.uri);
|
|
453
|
+
await authorizeOperation();
|
|
454
|
+
return { contents: [{
|
|
455
|
+
uri: skill.uri,
|
|
456
|
+
mimeType: "text/markdown",
|
|
457
|
+
text
|
|
458
|
+
}] };
|
|
459
|
+
}
|
|
460
|
+
const resource = uiResources.find((candidate) => candidate.uri === message.params.uri);
|
|
461
|
+
if (resource !== void 0 && active.target.toolSurface.readUiResource !== void 0) {
|
|
462
|
+
request.signal.throwIfAborted();
|
|
463
|
+
const text = await active.target.toolSurface.readUiResource(snapshot.revision, resource.uri);
|
|
464
|
+
request.signal.throwIfAborted();
|
|
465
|
+
const current = await authorizeOperation();
|
|
466
|
+
const after = grantedSurface(current.grant, current.target.toolSurface);
|
|
467
|
+
if (current.target.toolSurface !== active.target.toolSurface || after.snapshot.revision !== snapshot.revision || !isDeepStrictEqual(after.uiResources.find((candidate) => candidate.uri === resource.uri), resource)) throw new ProtocolError(ProtocolErrorCode.InvalidRequest, "The session UI resource surface has changed.");
|
|
468
|
+
return { contents: [{
|
|
469
|
+
...resource,
|
|
470
|
+
text
|
|
471
|
+
}] };
|
|
472
|
+
}
|
|
473
|
+
if (message.params.uri.startsWith("ui:")) throw new ProtocolError(ProtocolErrorCode.InvalidParams, "UI resource is not granted or active.");
|
|
474
|
+
throw new ProtocolError(ProtocolErrorCode.InvalidParams, "Use load_skill with conversation metadata to read target-session guidance.");
|
|
475
|
+
});
|
|
476
|
+
const handler = createMcpHandler(() => server, { legacy: "reject" });
|
|
477
|
+
try {
|
|
478
|
+
return await handler.fetch(request, { authInfo: {
|
|
479
|
+
token,
|
|
480
|
+
clientId: grant.clientId,
|
|
481
|
+
scopes: grant.scope === "session" ? ["session"] : [...grant.tools.map((name) => `tool:${name}`), ...grant.skills.map((name) => `skill:${name}`)],
|
|
482
|
+
expiresAt: Math.floor(grant.expiresAt / 1e3),
|
|
483
|
+
resource: new URL(exactResource)
|
|
484
|
+
} });
|
|
485
|
+
} catch {
|
|
486
|
+
return jsonError(500, "Internal MCP server error.");
|
|
487
|
+
}
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
//#endregion
|
|
491
|
+
export { SESSION_MCP_EXTRA_TOOLS, createSessionMcpHttpHandler };
|
|
492
|
+
|
|
493
|
+
//# sourceMappingURL=sessionMcpHandler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionMcpHandler.mjs","names":[],"sources":["../../../src/server/sessionMcpHandler.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { isDeepStrictEqual } from 'node:util';\n\nimport {\n createMcpHandler,\n ProtocolError,\n ProtocolErrorCode,\n Server,\n type CallToolResult,\n type Tool,\n} from '@modelcontextprotocol/server';\n\nimport type { SessionMcpInvocation } from '../schemas/sessionMcpActivity';\nimport type { SessionMcpAccessGrant, SessionMcpAuthorizationService } from '../services/sessionMcpAuthorization';\nimport { sessionMcpConversationDigest, SessionMcpConversationError } from '../services/sessionMcpConversations';\nimport type { SessionToolDescriptor, SessionToolSurface } from '../types/server/sessionToolSurface';\n\n/** Stable transport tools stay available when a conversation changes its MCP composition. */\nexport const SESSION_MCP_EXTRA_TOOLS: readonly Tool[] = [\n {\n name: 'load_extra_tools',\n title: 'Load extra tools',\n description: 'Discover tools and skills in this conversation that differ from the last parent catalog refresh.',\n inputSchema: { type: 'object', properties: {}, additionalProperties: false },\n annotations: { readOnlyHint: true },\n _meta: { ui: { visibility: ['model'] } },\n },\n {\n name: 'use_extra_tools',\n title: 'Use extra tools',\n description: 'Invoke one currently available extra tool by exact name with its declared arguments.',\n inputSchema: {\n type: 'object',\n properties: { name: { type: 'string' }, arguments: { type: 'object' } },\n required: ['name'],\n additionalProperties: false,\n },\n _meta: { ui: { visibility: ['model'] } },\n },\n {\n name: 'session_capabilities',\n title: 'Session capabilities',\n description:\n 'Inspect the tools and skills currently available in this conversation, independently of the parent catalog diff.',\n inputSchema: { type: 'object', properties: {}, additionalProperties: false },\n annotations: { readOnlyHint: true },\n _meta: { ui: { visibility: ['model'] } },\n },\n];\n\nexport interface SessionMcpBaseline {\n readonly tools: readonly Tool[];\n readonly skills: readonly { name: string; description: string }[];\n}\n\nfunction publicTool(tool: SessionToolDescriptor): Tool {\n return {\n name: tool.name,\n title: tool.label,\n description: tool.description,\n inputSchema: tool.parameters as Tool['inputSchema'],\n ...(tool.annotations === undefined ? {} : { annotations: tool.annotations }),\n ...(tool.outputSchema === undefined ? {} : { outputSchema: tool.outputSchema }),\n _meta: {\n ...tool._meta,\n ui: { ...tool._meta?.ui, visibility: tool._meta?.ui?.visibility ?? ['model'] },\n },\n };\n}\n\nfunction grantedExtraTools(grant: SessionMcpAccessGrant): readonly Tool[] {\n return grant.scope === 'session'\n ? SESSION_MCP_EXTRA_TOOLS\n : SESSION_MCP_EXTRA_TOOLS.filter((tool) => grant.tools.includes(tool.name));\n}\n\nfunction extraTools(baseline: SessionMcpBaseline, tools: readonly SessionToolDescriptor[]): Tool[] {\n return tools.map(publicTool).filter(\n (tool) =>\n !SESSION_MCP_EXTRA_TOOLS.some((wrapper) => wrapper.name === tool.name) &&\n !isDeepStrictEqual(\n baseline.tools.find((original) => original.name === tool.name),\n tool,\n ),\n );\n}\n\nfunction toolArguments(name: string, value: unknown): { name?: string; arguments?: Record<string, unknown> } {\n if (typeof value !== 'object' || value === null || Array.isArray(value))\n throw new ProtocolError(ProtocolErrorCode.InvalidParams, `Invalid arguments for '${name}'.`);\n const args = value as Record<string, unknown>;\n if (\n Object.keys(args).some((key) => key !== 'name' && key !== 'arguments') ||\n ((name === 'load_extra_tools' || name === 'session_capabilities') && Object.keys(args).length !== 0) ||\n (name === 'use_extra_tools' &&\n (typeof args.name !== 'string' ||\n args.name.trim() === '' ||\n (args.arguments !== undefined &&\n (typeof args.arguments !== 'object' || args.arguments === null || Array.isArray(args.arguments)))))\n )\n throw new ProtocolError(ProtocolErrorCode.InvalidParams, `Invalid arguments for '${name}'.`);\n return args as { name?: string; arguments?: Record<string, unknown> };\n}\nexport interface SessionMcpTarget {\n readonly generation: number;\n readonly sessionId?: string;\n readonly toolSurface: SessionToolSurface;\n}\n\nexport interface SessionMcpHttpHandlerOptions {\n /** Exact HTTPS resource indicator minted into access grants. */\n readonly audience: string;\n readonly authorization: Pick<SessionMcpAuthorizationService, 'authenticateAccessToken' | 'authenticateUrlToken'>;\n readonly onVerified?: (grant: SessionMcpAccessGrant) => void | Promise<void>;\n readonly resourceMetadataUrl?: string;\n /** Signed JWT carried as the final URL path segment instead of an Authorization header. */\n readonly pathToken?: string;\n readonly baselines?: Map<string, SessionMcpBaseline>;\n /** Shared only by signed-URL requests in one live session incarnation. */\n readonly operations?: SessionMcpOperationRegistry;\n readonly resolveSession: (sessionId: string) => SessionMcpTarget | undefined | Promise<SessionMcpTarget | undefined>;\n readonly resolveConversation?: (\n grant: SessionMcpAccessGrant,\n digest: string,\n reserve: boolean,\n signal?: AbortSignal,\n ) => SessionMcpTarget | Promise<SessionMcpTarget>;\n /** Only bounded, non-reversible correlation values are reported here. */\n readonly onNotice?: (message: string) => void;\n /** Host-only call history, separate from MCP notices and the agent transcript. */\n readonly onInvocation?: (invocation: SessionMcpInvocation) => void;\n readonly serverName?: string;\n readonly serverVersion?: string;\n}\n\nexport type SessionMcpOperationRegistry = Map<\n string,\n { controller: AbortController; owner: string; conversation?: string }\n>;\n\nexport type SessionMcpHttpHandler = (request: Request) => Promise<Response>;\n\nfunction jsonError(status: number, message: string, authenticate = false, resourceMetadataUrl?: string): Response {\n return Response.json(\n { jsonrpc: '2.0', error: { code: -32_000, message }, id: null },\n {\n status,\n headers: {\n 'cache-control': 'no-store',\n ...(authenticate\n ? {\n 'www-authenticate':\n resourceMetadataUrl === undefined ? 'Bearer' : `Bearer resource_metadata=\"${resourceMetadataUrl}\"`,\n }\n : {}),\n },\n },\n );\n}\n\nfunction bearerToken(request: Request): string | undefined {\n const authorization = request.headers.get('authorization');\n const match = authorization === null ? undefined : /^Bearer ([A-Za-z0-9_-]+)$/iu.exec(authorization);\n return match?.[1];\n}\n\nfunction currentUrl(request: Request): string | undefined {\n try {\n const url = new URL(request.url);\n return url.search === '' && url.hash === '' ? url.href : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction grantedSurface(grant: SessionMcpAccessGrant, surface: SessionToolSurface) {\n const snapshot = surface.readSurface();\n if (snapshot.tools.some((tool) => SESSION_MCP_EXTRA_TOOLS.some((wrapper) => wrapper.name === tool.name)))\n throw new ProtocolError(\n ProtocolErrorCode.InvalidRequest,\n 'A session tool conflicts with a reserved remote tool name.',\n );\n const toolNames = new Set(grant.tools);\n const skillNames = new Set(grant.skills);\n const tools = grant.scope === 'session' ? snapshot.tools : snapshot.tools.filter((tool) => toolNames.has(tool.name));\n const resourceUris = new Set(tools.map((tool) => tool._meta?.ui?.resourceUri));\n return {\n snapshot,\n tools,\n skills: grant.scope === 'session' ? snapshot.skills : snapshot.skills.filter((skill) => skillNames.has(skill.name)),\n uiResources: (snapshot.uiResources ?? []).filter((resource) => resourceUris.has(resource.uri)),\n };\n}\n\n/** Identity is supplied by the approved tool descriptor, never by upstream result metadata. */\nfunction widgetResult(tool: SessionToolDescriptor | undefined, result: CallToolResult): CallToolResult {\n const widget = tool?._meta?.['doompi/widget'];\n return typeof widget !== 'string'\n ? result\n : {\n ...result,\n _meta: { ...result._meta, 'doompi/widget': widget, 'doompi/toolName': tool!.name },\n };\n}\n\n/** Creates a stateless Streamable HTTP MCP request handler for session capabilities. */\nexport function createSessionMcpHttpHandler(options: SessionMcpHttpHandlerOptions): SessionMcpHttpHandler {\n const audience = new URL(options.audience);\n if (\n audience.protocol !== 'https:' ||\n audience.username !== '' ||\n audience.password !== '' ||\n audience.search !== '' ||\n audience.hash !== ''\n ) {\n throw new Error('Session MCP audience must be an absolute HTTPS URL without credentials, a query, or a fragment.');\n }\n const exactAudience = audience.href;\n if (options.pathToken !== undefined && !/^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$/u.test(options.pathToken)) {\n throw new Error('Session MCP path token must be a compact JWT.');\n }\n const exactResource = options.pathToken === undefined ? exactAudience : `${exactAudience}/${options.pathToken}`;\n const authenticate =\n options.pathToken === undefined\n ? options.authorization.authenticateAccessToken\n : options.authorization.authenticateUrlToken;\n const operations: SessionMcpOperationRegistry = options.operations ?? new Map();\n const baselines = options.baselines ?? new Map<string, SessionMcpBaseline>();\n const operationOwner = (grant: SessionMcpAccessGrant, requestId: string | number): string =>\n JSON.stringify([grant.clientId, grant.sessionId, grant.sessionGeneration, grant.id, requestId]);\n\n return async (request) => {\n if (currentUrl(request) !== exactResource) return jsonError(404, 'MCP resource not found.');\n const token = options.pathToken ?? bearerToken(request);\n if (token === undefined)\n return jsonError(401, 'A Bearer access token is required.', true, options.resourceMetadataUrl);\n const grant = authenticate(token, exactAudience);\n if (grant === undefined)\n return options.pathToken === undefined\n ? jsonError(401, 'The Bearer access token is invalid or expired.', true, options.resourceMetadataUrl)\n : jsonError(401, 'The signed MCP URL is invalid or revoked.');\n const authorizeOperation = async (): Promise<{\n grant: SessionMcpAccessGrant;\n target: SessionMcpTarget;\n }> => {\n const activeGrant = authenticate(token, exactAudience);\n if (activeGrant === undefined || activeGrant.id !== grant.id) {\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The session grant is no longer active.');\n }\n const target = await options.resolveSession(activeGrant.sessionId);\n const recheckedGrant = authenticate(token, exactAudience);\n if (\n recheckedGrant === undefined ||\n recheckedGrant.id !== activeGrant.id ||\n target === undefined ||\n target.generation !== recheckedGrant.sessionGeneration\n ) {\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The session grant is no longer active.');\n }\n return { grant: recheckedGrant, target };\n };\n try {\n await authorizeOperation();\n } catch {\n return options.pathToken === undefined\n ? jsonError(401, 'The session grant is no longer active.', true, options.resourceMetadataUrl)\n : jsonError(401, 'The signed MCP URL is invalid or revoked.');\n }\n\n const server = new Server(\n { name: options.serverName ?? 'doompi-session', version: options.serverVersion ?? '1.0.0' },\n {\n capabilities: { tools: {}, resources: {} },\n instructions:\n 'Use only this bound DoomPi session. Call load_context before work and after selection changes. ' +\n 'Call session_capabilities for the current inventory; load_extra_tools returns only conversation differences. ' +\n 'Invoke extras with use_extra_tools and guidance with load_skill. Inspect before editing and follow repository checks. ' +\n 'Do not assume UI, downloadable files, or background notifications. Read saved logs instead of relaunching work. ' +\n 'Saving a plan does not authorize implementation.',\n },\n );\n server.setNotificationHandler('notifications/cancelled', async (notification) => {\n const active = await authorizeOperation();\n if (notification.params.requestId === undefined) return;\n const owner = operationOwner(active.grant, notification.params.requestId);\n const conversation = sessionMcpConversationDigest(notification.params._meta);\n // A notification without a conversation identity cannot safely cancel one\n // of several child runtimes that may reuse its request ID.\n if (conversation === undefined) return;\n const candidates = [...operations.values()].filter(\n (operation) => operation.owner === owner && operation.conversation === conversation,\n );\n if (candidates.length === 1) candidates[0]!.controller.abort();\n });\n server.setRequestHandler('tools/list', async () => {\n const active = await authorizeOperation();\n await options.onVerified?.(active.grant);\n const { tools, skills } = grantedSurface(active.grant, active.target.toolSurface);\n const parentTools = tools.map(publicTool);\n const wrappers = grantedExtraTools(active.grant);\n const baseline = structuredClone({\n tools: parentTools,\n skills: skills.map(({ name, description }) => ({ name, description })),\n });\n await authorizeOperation();\n baselines.set(active.grant.clientId, baseline);\n return { tools: [...parentTools, ...wrappers] };\n });\n server.setRequestHandler('tools/call', async (message, ctx): Promise<CallToolResult> => {\n const conversation = sessionMcpConversationDigest(\n ctx.mcpReq._meta ?? (message.params as { _meta?: unknown })._meta,\n );\n const owner = operationOwner(grant, ctx.mcpReq.id);\n const key = JSON.stringify([owner, conversation]);\n if (operations.has(key))\n throw new ProtocolError(\n ProtocolErrorCode.InvalidRequest,\n 'A tool call with this request identity is already active.',\n );\n if (options.operations !== undefined && operations.size >= 1024)\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'Too many active MCP tool calls. Retry later.');\n const controller = new AbortController();\n operations.set(key, { controller, owner, conversation });\n const signal = AbortSignal.any([request.signal, ctx.mcpReq.signal, controller.signal]);\n const invocationId = randomUUID();\n let skillAccessOpen = true;\n let widgetTool: SessionToolDescriptor | undefined;\n let invocation: SessionMcpInvocation | undefined;\n const publishInvocation = (): void => {\n if (invocation?.sessionId === undefined) return;\n try {\n options.onInvocation?.({ ...invocation });\n } catch {\n // Observability failures must not turn an already executed tool into a retryable failure.\n options.onNotice?.('session MCP call history could not be saved');\n }\n };\n const completeInvocation = (result: CallToolResult): CallToolResult => {\n if (invocation !== undefined) {\n invocation = {\n ...invocation,\n status: signal.aborted ? 'cancelled' : result.isError ? 'failed' : 'succeeded',\n finishedAt: Date.now(),\n output: result.structuredContent ?? result.content,\n };\n publishInvocation();\n }\n return result;\n };\n try {\n const parent = await authorizeOperation();\n invocation = {\n id: invocationId,\n parentSessionId: parent.grant.sessionId,\n clientId: parent.grant.clientId,\n conversationDigest: conversation,\n toolName: message.params.name,\n startedAt: Date.now(),\n status: 'running',\n input: message.params.arguments ?? {},\n };\n publishInvocation();\n const wrapper = grantedExtraTools(parent.grant).some((tool) => tool.name === message.params.name);\n const advertised = wrapper\n ? undefined\n : grantedSurface(parent.grant, parent.target.toolSurface).tools.find(\n (tool) => tool.name === message.params.name,\n );\n if (!wrapper && !advertised)\n throw new ProtocolError(\n ProtocolErrorCode.InvalidParams,\n `Tool '${message.params.name}' is not granted or active.`,\n );\n widgetTool = advertised;\n const wrapperArgs = wrapper ? toolArguments(message.params.name, message.params.arguments ?? {}) : undefined;\n // A binding must not outlive an unpersisted registration when tools/call precedes tools/list.\n await options.onVerified?.(parent.grant);\n options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=started`);\n const resolveTarget = async (reserve: boolean) => {\n const active = await authorizeOperation();\n if (!conversation)\n throw new SessionMcpConversationError(\n 'CONVERSATION_ID_REQUIRED',\n 'This connection requires conversation metadata. Use a compatible ChatGPT conversation and retry.',\n );\n if (!options.resolveConversation)\n throw new SessionMcpConversationError(\n 'CONVERSATION_ROUTING_UNAVAILABLE',\n 'Conversation routing is unavailable in this host.',\n );\n signal.throwIfAborted();\n const target = await options.resolveConversation(active.grant, conversation, reserve, signal);\n await authorizeOperation();\n signal.throwIfAborted();\n return { grant: active.grant, target };\n };\n if (wrapper && !conversation)\n throw new SessionMcpConversationError(\n 'CONVERSATION_ID_REQUIRED',\n 'This connection requires conversation metadata. Use a compatible ChatGPT conversation and retry.',\n );\n if (\n (message.params.name === 'load_extra_tools' || message.params.name === 'use_extra_tools') &&\n !baselines.has(parent.grant.clientId)\n )\n throw new SessionMcpConversationError(\n 'SESSION_MCP_BASELINE_REQUIRED',\n 'Refresh this MCP connection tool catalog before loading or using extra tools.',\n );\n const active = await resolveTarget(true);\n invocation = { ...invocation, sessionId: active.target.sessionId ?? parent.grant.sessionId };\n publishInvocation();\n const { snapshot, tools, skills } = grantedSurface(active.grant, active.target.toolSurface);\n const baseline = baselines.get(parent.grant.clientId);\n const extras = wrapper && baseline ? extraTools(baseline, tools) : [];\n if (message.params.name === 'session_capabilities' && wrapper) {\n const capabilities = {\n sessionId: active.target.sessionId ?? parent.grant.sessionId,\n generation: active.target.generation,\n revision: snapshot.revision,\n baseline: baseline === undefined ? 'missing' : 'available',\n inventory: 'active_surface',\n discovery: 'unknown',\n tools: [...tools.map(publicTool), ...grantedExtraTools(active.grant)],\n skills: skills.map(({ name, description }) => ({ name, description })),\n };\n const current = await resolveTarget(false);\n if (\n current.target.toolSurface !== active.target.toolSurface ||\n current.target.generation !== active.target.generation ||\n current.target.sessionId !== active.target.sessionId ||\n current.target.toolSurface.readSurface().revision !== snapshot.revision\n )\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The session tool surface has changed.');\n options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=succeeded`);\n return completeInvocation({\n content: [{ type: 'text', text: JSON.stringify(capabilities) }],\n structuredContent: capabilities,\n isError: false,\n });\n }\n if (message.params.name === 'load_extra_tools' && wrapper) {\n const discovery = {\n tools: extras,\n skills: (tools.some((tool) => tool.name === 'load_skill') ? skills : [])\n .map(({ name, description }) => ({ name, description }))\n .filter(\n (skill) =>\n !isDeepStrictEqual(\n baseline!.skills.find((original) => original.name === skill.name),\n skill,\n ),\n ),\n };\n const current = await resolveTarget(false);\n if (\n current.target.toolSurface !== active.target.toolSurface ||\n current.target.generation !== active.target.generation ||\n current.target.sessionId !== active.target.sessionId ||\n current.target.toolSurface.readSurface().revision !== snapshot.revision\n )\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The session tool surface has changed.');\n options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=succeeded`);\n return completeInvocation({\n content: [{ type: 'text', text: JSON.stringify(discovery) }],\n structuredContent: discovery,\n isError: false,\n });\n }\n const name = wrapper ? wrapperArgs!.name! : message.params.name;\n const selected = tools.find((tool) => tool.name === name);\n if (wrapper && (!extras.some((tool) => tool.name === name) || !selected))\n throw new ProtocolError(ProtocolErrorCode.InvalidParams, `Extra tool '${name}' is not granted or active.`);\n if (\n !wrapper &&\n (!selected ||\n !isDeepStrictEqual(selected.parameters, advertised!.parameters) ||\n !isDeepStrictEqual(selected.outputSchema, advertised!.outputSchema) ||\n !isDeepStrictEqual(selected.annotations, advertised!.annotations) ||\n !isDeepStrictEqual(selected._meta, advertised!._meta))\n )\n throw new SessionMcpConversationError(\n 'SESSION_TOOL_SURFACE_CHANGED',\n 'The target session does not expose the approved tool contract. Refresh the connection or restore a compatible session selection.',\n );\n widgetTool = wrapper ? undefined : selected;\n const recheck = async () => {\n const current = await resolveTarget(false);\n if (\n current.target.toolSurface !== active.target.toolSurface ||\n current.target.generation !== active.target.generation ||\n current.target.sessionId !== active.target.sessionId\n )\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The session tool surface has changed.');\n if (wrapper) {\n if (!grantedExtraTools(current.grant).some((tool) => tool.name === message.params.name))\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The connection tool surface has changed.');\n } else {\n const currentAdvertised = grantedSurface(current.grant, parent.target.toolSurface).tools.find(\n (tool) => tool.name === message.params.name,\n );\n if (!currentAdvertised || !isDeepStrictEqual(currentAdvertised, advertised))\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The connection tool surface has changed.');\n }\n return current;\n };\n const authorizedSkills = async () => {\n if (!skillAccessOpen)\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'Remote skill access is no longer active.');\n signal.throwIfAborted();\n const current = await recheck();\n signal.throwIfAborted();\n return grantedSurface(current.grant, current.target.toolSurface);\n };\n const mcpSkills = {\n async list() {\n const { skills } = await authorizedSkills();\n return skills.map(({ name, description }) => ({ name, description }));\n },\n async read(name: string) {\n const current = await authorizedSkills();\n const skill = current.skills.find((candidate) => candidate.name === name);\n if (!skill) throw new ProtocolError(ProtocolErrorCode.InvalidParams, 'Skill is not granted or active.');\n const text = await active.target.toolSurface.readSkill(current.snapshot.revision, skill.uri);\n signal.throwIfAborted();\n const after = await authorizedSkills();\n if (after.snapshot.revision !== current.snapshot.revision)\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The session skill surface has changed.');\n return text;\n },\n };\n invocation = {\n ...invocation,\n toolName: name,\n input: wrapper ? (wrapperArgs!.arguments ?? {}) : (message.params.arguments ?? {}),\n };\n publishInvocation();\n const result = await active.target.toolSurface.invokeTool({\n revision: snapshot.revision,\n name,\n arguments: wrapper ? (wrapperArgs!.arguments ?? {}) : (message.params.arguments ?? {}),\n signal,\n mcpSkills,\n authorize: async () => {\n const current = await recheck();\n if (wrapper) {\n const currentTool = grantedSurface(current.grant, current.target.toolSurface).tools.find(\n (tool) => tool.name === name,\n );\n if (!currentTool || !isDeepStrictEqual(currentTool, selected))\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The extra tool surface has changed.');\n }\n },\n });\n await recheck();\n options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=succeeded`);\n return completeInvocation(\n widgetResult(wrapper ? undefined : selected, {\n content: result.content,\n ...(result.structuredContent === undefined ? {} : { structuredContent: result.structuredContent }),\n ...(result._meta === undefined ? {} : { _meta: result._meta }),\n isError: result.isError ?? false,\n }),\n );\n } catch (error) {\n // The cause is logged because the client may drop the answer, for example on a timeout\n // during a first call that provisions a worktree, and then nothing else records why. Only a\n // class or code: a message can carry tool arguments, which notices never do.\n const cause =\n error instanceof SessionMcpConversationError\n ? error.code\n : signal.aborted\n ? 'aborted'\n : error instanceof ProtocolError\n ? `mcp_${String(error.code)}`\n : error instanceof Error\n ? error.name\n : 'unknown';\n options.onNotice?.(`session MCP invocation id=${invocationId} lifecycle=failed cause=${cause}`);\n if (invocation !== undefined) {\n invocation = {\n ...invocation,\n status: signal.aborted ? 'cancelled' : 'failed',\n finishedAt: Date.now(),\n output: { cause, message: error instanceof Error ? error.message : 'Tool call failed.' },\n };\n publishInvocation();\n }\n if (!(error instanceof SessionMcpConversationError)) throw error;\n return widgetResult(widgetTool, {\n content: [{ type: 'text', text: error.message }],\n isError: true,\n structuredContent: {\n code: error.code,\n message: error.message,\n ...(error.bindingId === undefined ? {} : { bindingId: error.bindingId }),\n },\n });\n } finally {\n skillAccessOpen = false;\n operations.delete(key);\n }\n });\n server.setRequestHandler('resources/list', async () => {\n const active = await authorizeOperation();\n const { uiResources } = grantedSurface(active.grant, active.target.toolSurface);\n return {\n resources: [...uiResources],\n };\n });\n server.setRequestHandler('resources/read', async (message, ctx) => {\n const conversation = sessionMcpConversationDigest(\n ctx.mcpReq._meta ?? (message.params as { _meta?: unknown })._meta,\n );\n const active = await authorizeOperation();\n const { snapshot, skills, uiResources } = grantedSurface(active.grant, active.target.toolSurface);\n const skill = skills.find((candidate) => candidate.uri === message.params.uri);\n if (skill !== undefined) {\n if (!conversation)\n throw new ProtocolError(\n ProtocolErrorCode.InvalidParams,\n 'Use load_skill with conversation metadata to read target-session guidance.',\n );\n if (!options.resolveConversation)\n throw new ProtocolError(\n ProtocolErrorCode.InvalidRequest,\n 'Conversation routing is unavailable in this host.',\n );\n const target = await options.resolveConversation(active.grant, conversation, false, request.signal);\n const text = await target.toolSurface.readSkill(snapshot.revision, skill.uri);\n await authorizeOperation();\n return { contents: [{ uri: skill.uri, mimeType: 'text/markdown', text }] };\n }\n const resource = uiResources.find((candidate) => candidate.uri === message.params.uri);\n if (resource !== undefined && active.target.toolSurface.readUiResource !== undefined) {\n // Templates are immutable and session-independent, so hosts may prefetch them without a conversation ID.\n request.signal.throwIfAborted();\n const text = await active.target.toolSurface.readUiResource(snapshot.revision, resource.uri);\n request.signal.throwIfAborted();\n const current = await authorizeOperation();\n const after = grantedSurface(current.grant, current.target.toolSurface);\n if (\n current.target.toolSurface !== active.target.toolSurface ||\n after.snapshot.revision !== snapshot.revision ||\n !isDeepStrictEqual(\n after.uiResources.find((candidate) => candidate.uri === resource.uri),\n resource,\n )\n )\n throw new ProtocolError(ProtocolErrorCode.InvalidRequest, 'The session UI resource surface has changed.');\n return { contents: [{ ...resource, text }] };\n }\n if (message.params.uri.startsWith('ui:'))\n throw new ProtocolError(ProtocolErrorCode.InvalidParams, 'UI resource is not granted or active.');\n throw new ProtocolError(\n ProtocolErrorCode.InvalidParams,\n 'Use load_skill with conversation metadata to read target-session guidance.',\n );\n });\n\n // One server per request, as before. Only the 2026-07-28 revision is served; a 2025-era request\n // is refused with the versions this endpoint supports.\n const handler = createMcpHandler(() => server, { legacy: 'reject' });\n try {\n return await handler.fetch(request, {\n authInfo: {\n token,\n clientId: grant.clientId,\n scopes:\n grant.scope === 'session'\n ? ['session']\n : [...grant.tools.map((name) => `tool:${name}`), ...grant.skills.map((name) => `skill:${name}`)],\n expiresAt: Math.floor(grant.expiresAt / 1000),\n resource: new URL(exactResource),\n },\n });\n } catch {\n return jsonError(500, 'Internal MCP server error.');\n }\n };\n}\n"],"mappings":"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"}
|