@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":"index.mjs","names":[],"sources":["../../../../../src/web/services/apiClient/index.ts"],"sourcesContent":["/**\n * The typed call surface a cockpit plugin reaches its own API through.\n *\n * A route is declared once as data, and the build supplies the two facts the\n * declaration deliberately omits: which scopes the package mounts at, and under\n * which base path. So a page names a route and a session, never a URL.\n *\n * The shape is dictated by the transport rather than by taste. Over a tunnel\n * every request is resealed and relayed, and the relay honours only a method, a\n * set of headers and a buffered body against a root-relative target. Anything\n * this surface accepted beyond that would be silently discarded at exactly the\n * moment it mattered, so it accepts nothing beyond that.\n */\n\nimport { type ApiParams, type ApiQuery, type ApiScopeAddress, pluginApiUrl } from '../apiPaths';\n\n/** Scope names a package API can mount at. */\nexport type ApiScopeName = ApiScopeAddress['scope'];\n\n/** Methods a declared route may use. */\nexport type ApiRouteMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';\n\ndeclare const RESPONSE_TYPE: unique symbol;\n\n/** Carries a route's response type through the declaration. Erased at runtime. */\nexport interface ApiResponseOf<T> {\n readonly [RESPONSE_TYPE]: T;\n}\n\n/** Names the type a route answers with. Returns nothing; only its type is read. */\nexport function apiResponse<T>(): ApiResponseOf<T> {\n return undefined as unknown as ApiResponseOf<T>;\n}\n\n/**\n * One route, as the package declares it.\n *\n * No scope and no base path: both are mount identity, the build reads them off\n * the folder tree, and restating them here is how they came to disagree in the\n * first place.\n */\nexport interface ApiRouteSpec<T = void> {\n readonly method: ApiRouteMethod;\n /** Below the mount, leading slash. Exactly '/' addresses the mount itself. */\n readonly path: string;\n /** Query parameter names this route reads, for documentation and review. */\n readonly query?: readonly string[];\n /** A host-owned route: it hangs off the scope root rather than under /plugins/. */\n readonly host?: true;\n /**\n * Answers `text/event-stream`.\n *\n * A streaming route gets a URL and no call method. Its consumer is the\n * browser's own `EventSource`, which does not go through the sealed\n * transport, and a relayed request buffers the whole response before\n * returning, so calling one over a tunnel would never return at all.\n */\n readonly stream?: true;\n /**\n * Answers bytes rather than JSON.\n *\n * The body is left unread, so `data` is undefined and the caller takes\n * `result.response` and reads it however it needs: `arrayBuffer`, `blob`,\n * `text`. Without this the client would consume the body to parse it, and\n * hand back a `Response` that throws on the second read.\n */\n readonly raw?: true;\n readonly response?: ApiResponseOf<T>;\n}\n\nexport type ApiRoutes = Readonly<Record<string, ApiRouteSpec<unknown>>>;\n\ntype ResponseOf<TSpec> = TSpec extends { readonly response: ApiResponseOf<infer T> } ? T : void;\n\n/**\n * What a call may carry.\n *\n * No `cache`, `credentials`, `redirect` or `mode`. The sealed transport copies\n * only the method, the headers and the body, so those four would be discarded\n * on every remote session and honoured on no one's.\n *\n * `signal` is here because it is the one of the five that is not always a lie.\n * On loopback the transport is a plain `fetch` pass-through and cancellation\n * works, which callers already rely on to drop a superseded refresh. Over a\n * tunnel the request is resealed and relayed, and the signal goes no further\n * than this process: the call still settles, so a caller that treats an abort\n * as \"no answer is coming\" stays correct, but the work at the far end is not\n * stopped. Refusing the field outright would have regressed every caller that\n * cancels today, which is a worse trade than describing the limit.\n */\nexport interface ApiCallInit {\n /** Values for the route's `:name` path segments. */\n readonly params?: ApiParams;\n readonly query?: ApiQuery;\n readonly headers?: Readonly<Record<string, string>>;\n /** JSON-encoded unless it is already a string, Blob, buffer or URLSearchParams. */\n readonly body?: unknown;\n /** Honoured on loopback; dropped when the session is remote. */\n readonly signal?: AbortSignal;\n}\n\n/**\n * What a route answered.\n *\n * `status` and the raw `response` are always present on an answered call,\n * because status and headers carry protocol state across this codebase: a 409\n * returns the hash the file actually has, a 204 plus a header says a recording\n * is sealed, and the file route reports a digest. A client that returned only a\n * parsed body would lose all three.\n *\n * `status: 0` with no `response` is the one case the transport never answered.\n * A relay failure arrives as a synthetic 502 and is reported as 502, because\n * this layer cannot tell it from the real thing.\n */\nexport type ApiResult<T> =\n | { readonly ok: true; readonly status: number; readonly data: T; readonly response: Response }\n | {\n readonly ok: false;\n readonly status: number;\n readonly error: string;\n readonly data: unknown;\n readonly response?: Response;\n };\n\n/** Issues a request. The same shape as `fetch`, so the sealed transport and the step-up wrapper both fit. */\nexport type ApiTransport = (input: string, init?: RequestInit) => Promise<Response>;\n\nexport interface ApiMethod<T> {\n (init?: ApiCallInit): Promise<ApiResult<T>>;\n /** The absolute URL, for an `EventSource`, an `<img src>`, or a download. */\n url(init?: Pick<ApiCallInit, 'query' | 'params'>): string;\n readonly spec: ApiRouteSpec<unknown>;\n}\n\n/** A streaming route: addressable, not callable. */\nexport interface ApiStreamMethod {\n url(init?: Pick<ApiCallInit, 'query' | 'params'>): string;\n readonly spec: ApiRouteSpec<unknown>;\n}\n\nexport type ApiScopeClient<TRoutes extends ApiRoutes> = {\n readonly [K in keyof TRoutes]: TRoutes[K] extends { readonly stream: true }\n ? ApiStreamMethod\n : ApiMethod<ResponseOf<TRoutes[K]>>;\n};\n\ninterface ApiScopeAccessors<TRoutes extends ApiRoutes> {\n readonly global: ApiScopeClient<TRoutes>;\n readonly workspace: (workspaceId: string) => ApiScopeClient<TRoutes>;\n readonly session: (sessionId: string) => ApiScopeClient<TRoutes>;\n}\n\n/**\n * The client, carrying an accessor only for the scopes the package mounts at.\n *\n * A package serving sessions has `session` and nothing else, so addressing it\n * globally is a missing property rather than a 404 discovered at runtime. This\n * is the whole of the scope guarantee, and it costs no test.\n */\nexport type ApiClient<TScopes extends ApiScopeName, TRoutes extends ApiRoutes> = Pick<\n ApiScopeAccessors<TRoutes>,\n TScopes\n>;\n\n/** Identity with inference, so a route table keeps its literal types. */\nexport function defineApiRoutes<const TRoutes extends ApiRoutes>(routes: TRoutes): TRoutes {\n return routes;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/** The body a route answered, or undefined when it sent none or sent non-JSON. */\nasync function readBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (text === '') return undefined;\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return undefined;\n }\n}\n\n/**\n * The message a route reported, or an empty string.\n *\n * Empty rather than invented: callers own the words their users read, and a\n * generic sentence from here would appear in a dozen packages that each already\n * have their own.\n */\nfunction errorOf(data: unknown): string {\n return isRecord(data) && typeof data.error === 'string' ? data.error : '';\n}\n\n/**\n * What the sealed relay can carry verbatim.\n *\n * Named here rather than borrowed from `BodyInit`, which the node build has no\n * lib for, and which is anyway wider than the truth: `FormData` and a\n * `ReadableStream` are both refused when a session is remote.\n */\nexport type ApiRequestBody = string | Blob | ArrayBuffer | ArrayBufferView | URLSearchParams;\n\n/** Anything the sealed transport can carry verbatim; everything else becomes JSON. */\nfunction encodeBody(body: unknown): { body?: ApiRequestBody; contentType?: string } {\n if (body === undefined) return {};\n if (\n typeof body === 'string' ||\n body instanceof Blob ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n body instanceof URLSearchParams\n ) {\n return { body };\n }\n return { body: JSON.stringify(body), contentType: 'application/json' };\n}\n\nexport interface ApiClientOptions<TScopes extends ApiScopeName> {\n /** Scopes the package's routed api/ tree actually mounts at. The build supplies these. */\n readonly scopes: readonly TScopes[];\n /** The mount segment. The build reads it off the api/<base-path>/ folder. */\n readonly basePath: string;\n readonly transport: ApiTransport;\n /** Resolves which workspace owns a session; the host binds it from its own summaries. */\n readonly sessionAddress: (sessionId: string) => ApiScopeAddress;\n}\n\n/**\n * One route, as the page calls it.\n *\n * A streaming route is returned as a plain object with no call signature, not\n * merely typed as one. The type stops an author; the missing function stops a\n * cast, a JavaScript caller, and a generic helper that iterates the client.\n * Calling one over a tunnel would buffer forever rather than fail, and that is\n * too quiet a way to lose an afternoon.\n */\nfunction methodFor(\n spec: ApiRouteSpec<unknown>,\n address: ApiScopeAddress,\n options: ApiClientOptions<ApiScopeName>,\n): ApiMethod<unknown> | ApiStreamMethod {\n const basePath = spec.host === true ? undefined : options.basePath;\n const url = (init?: Pick<ApiCallInit, 'query' | 'params'>): string =>\n pluginApiUrl(address, basePath, spec.path, init?.query, init?.params);\n\n const call = async (init?: ApiCallInit): Promise<ApiResult<unknown>> => {\n const encoded = encodeBody(init?.body);\n const headers = {\n ...(encoded.contentType === undefined ? {} : { 'content-type': encoded.contentType }),\n ...init?.headers,\n };\n let response: Response;\n try {\n response = await options.transport(url(init), {\n method: spec.method,\n ...(init?.signal === undefined ? {} : { signal: init.signal }),\n ...(Object.keys(headers).length === 0 ? {} : { headers }),\n // Cast because the node build's `BodyInit` enumerates concrete typed\n // arrays rather than accepting `ArrayBufferView`. Every value reaching\n // here is one fetch already carries; the two libs disagree about the\n // type, not the runtime.\n ...(encoded.body === undefined ? {} : { body: encoded.body as RequestInit['body'] }),\n });\n } catch {\n return { ok: false, status: 0, error: '', data: undefined };\n }\n // A raw route's body belongs to the caller, and reading it here to look\n // for an `error` would spend the one read it gets.\n if (spec.raw === true) {\n if (!response.ok) return { ok: false, status: response.status, error: '', data: undefined, response };\n return { ok: true, status: response.status, data: undefined, response };\n }\n const data = await readBody(response);\n if (!response.ok) return { ok: false, status: response.status, error: errorOf(data), data, response };\n return { ok: true, status: response.status, data, response };\n };\n\n if (spec.stream === true) return { url, spec };\n return Object.assign(call, { url, spec });\n}\n\nfunction scopeClient<TRoutes extends ApiRoutes>(\n routes: TRoutes,\n address: ApiScopeAddress,\n options: ApiClientOptions<ApiScopeName>,\n): ApiScopeClient<TRoutes> {\n const client: Record<string, ApiMethod<unknown> | ApiStreamMethod> = {};\n for (const [key, spec] of Object.entries(routes)) client[key] = methodFor(spec, address, options);\n return client as ApiScopeClient<TRoutes>;\n}\n\n/**\n * Binds a route table to one package's mount.\n *\n * Only the scopes named in `options.scopes` get an accessor, so the returned\n * value describes exactly what this package serves and nothing else.\n */\nexport function createApiClient<const TScopes extends ApiScopeName, const TRoutes extends ApiRoutes>(\n routes: TRoutes,\n options: ApiClientOptions<TScopes>,\n): ApiClient<TScopes, TRoutes> {\n const wide = options as ApiClientOptions<ApiScopeName>;\n const accessors: { -readonly [K in keyof ApiScopeAccessors<TRoutes>]?: ApiScopeAccessors<TRoutes>[K] } = {};\n for (const scope of options.scopes) {\n if (scope === 'global') accessors.global = scopeClient(routes, { scope: 'global' }, wide);\n if (scope === 'workspace') {\n accessors.workspace = (workspaceId: string) => scopeClient(routes, { scope: 'workspace', workspaceId }, wide);\n }\n if (scope === 'session') {\n accessors.session = (sessionId: string) => scopeClient(routes, wide.sessionAddress(sessionId), wide);\n }\n }\n return accessors as ApiClient<TScopes, TRoutes>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA8BA,SAAgB,cAAmC,CAEnD;;AAqIA,SAAgB,gBAAiD,QAA0B;CACzF,OAAO;AACT;AAEA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;AAGA,eAAe,SAAS,UAAsC;CAC5D,MAAM,OAAO,MAAM,SAAS,KAAK;CACjC,IAAI,SAAS,IAAI,OAAO,KAAA;CACxB,IAAI;EACF,OAAO,KAAK,MAAM,IAAI;CACxB,QAAQ;EACN;CACF;AACF;;;;;;;;AASA,SAAS,QAAQ,MAAuB;CACtC,OAAO,SAAS,IAAI,KAAK,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ;AACzE;;AAYA,SAAS,WAAW,MAAgE;CAClF,IAAI,SAAS,KAAA,GAAW,OAAO,CAAC;CAChC,IACE,OAAO,SAAS,YAChB,gBAAgB,QAChB,gBAAgB,eAChB,YAAY,OAAO,IAAI,KACvB,gBAAgB,iBAEhB,OAAO,EAAE,KAAK;CAEhB,OAAO;EAAE,MAAM,KAAK,UAAU,IAAI;EAAG,aAAa;CAAmB;AACvE;;;;;;;;;;AAqBA,SAAS,UACP,MACA,SACA,SACsC;CACtC,MAAM,WAAW,KAAK,SAAS,OAAO,KAAA,IAAY,QAAQ;CAC1D,MAAM,OAAO,SACX,aAAa,SAAS,UAAU,KAAK,MAAM,MAAM,OAAO,MAAM,MAAM;CAEtE,MAAM,OAAO,OAAO,SAAoD;EACtE,MAAM,UAAU,WAAW,MAAM,IAAI;EACrC,MAAM,UAAU;GACd,GAAI,QAAQ,gBAAgB,KAAA,IAAY,CAAC,IAAI,EAAE,gBAAgB,QAAQ,YAAY;GACnF,GAAG,MAAM;EACX;EACA,IAAI;EACJ,IAAI;GACF,WAAW,MAAM,QAAQ,UAAU,IAAI,IAAI,GAAG;IAC5C,QAAQ,KAAK;IACb,GAAI,MAAM,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO;IAC5D,GAAI,OAAO,KAAK,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,QAAQ;IAKvD,GAAI,QAAQ,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,QAAQ,KAA4B;GACpF,CAAC;EACH,QAAQ;GACN,OAAO;IAAE,IAAI;IAAO,QAAQ;IAAG,OAAO;IAAI,MAAM,KAAA;GAAU;EAC5D;EAGA,IAAI,KAAK,QAAQ,MAAM;GACrB,IAAI,CAAC,SAAS,IAAI,OAAO;IAAE,IAAI;IAAO,QAAQ,SAAS;IAAQ,OAAO;IAAI,MAAM,KAAA;IAAW;GAAS;GACpG,OAAO;IAAE,IAAI;IAAM,QAAQ,SAAS;IAAQ,MAAM,KAAA;IAAW;GAAS;EACxE;EACA,MAAM,OAAO,MAAM,SAAS,QAAQ;EACpC,IAAI,CAAC,SAAS,IAAI,OAAO;GAAE,IAAI;GAAO,QAAQ,SAAS;GAAQ,OAAO,QAAQ,IAAI;GAAG;GAAM;EAAS;EACpG,OAAO;GAAE,IAAI;GAAM,QAAQ,SAAS;GAAQ;GAAM;EAAS;CAC7D;CAEA,IAAI,KAAK,WAAW,MAAM,OAAO;EAAE;EAAK;CAAK;CAC7C,OAAO,OAAO,OAAO,MAAM;EAAE;EAAK;CAAK,CAAC;AAC1C;AAEA,SAAS,YACP,QACA,SACA,SACyB;CACzB,MAAM,SAA+D,CAAC;CACtE,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,MAAM,GAAG,OAAO,OAAO,UAAU,MAAM,SAAS,OAAO;CAChG,OAAO;AACT;;;;;;;AAQA,SAAgB,gBACd,QACA,SAC6B;CAC7B,MAAM,OAAO;CACb,MAAM,YAAmG,CAAC;CAC1G,KAAK,MAAM,SAAS,QAAQ,QAAQ;EAClC,IAAI,UAAU,UAAU,UAAU,SAAS,YAAY,QAAQ,EAAE,OAAO,SAAS,GAAG,IAAI;EACxF,IAAI,UAAU,aACZ,UAAU,aAAa,gBAAwB,YAAY,QAAQ;GAAE,OAAO;GAAa;EAAY,GAAG,IAAI;EAE9G,IAAI,UAAU,WACZ,UAAU,WAAW,cAAsB,YAAY,QAAQ,KAAK,eAAe,SAAS,GAAG,IAAI;CAEvG;CACA,OAAO;AACT"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
//#region src/web/services/apiPaths/index.ts
|
|
2
|
+
/** The base path the host reserves for its own settings API, mounted outside /plugins/. */
|
|
3
|
+
const SETTINGS_BASE_PATH = "settings";
|
|
4
|
+
/** The scope's own resource root: what a host-owned route hangs off. */
|
|
5
|
+
function scopeApiRoot(address) {
|
|
6
|
+
if (address.scope === "global") return "/api";
|
|
7
|
+
const workspace = `/api/workspaces/${encodeURIComponent(address.workspaceId)}`;
|
|
8
|
+
if (address.scope === "workspace") return workspace;
|
|
9
|
+
return `${workspace}/sessions/${encodeURIComponent(address.sessionId)}`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The mount one package API answers on.
|
|
13
|
+
*
|
|
14
|
+
* `basePath` is omitted for a host-owned route, which the contract schema
|
|
15
|
+
* already spells that way, so the session file-bytes route and a plugin route
|
|
16
|
+
* are the same construction with one field different rather than two code
|
|
17
|
+
* paths. `settings` is the host's own API and sits beside `/plugins`, not
|
|
18
|
+
* under it.
|
|
19
|
+
*/
|
|
20
|
+
function pluginApiBase(address, basePath) {
|
|
21
|
+
const root = scopeApiRoot(address);
|
|
22
|
+
if (basePath === void 0) return root;
|
|
23
|
+
if (basePath === "settings") return `${root}/${SETTINGS_BASE_PATH}`;
|
|
24
|
+
return `${root}/plugins/${basePath}`;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The query string, `encodeURIComponent` per pair rather than `URLSearchParams`.
|
|
28
|
+
*
|
|
29
|
+
* `URLSearchParams` writes a space as `+`, which only decodes back to a space
|
|
30
|
+
* under form-urlencoded rules; `%20` decodes to a space everywhere. The
|
|
31
|
+
* cockpit already relied on that difference in both directions, so picking the
|
|
32
|
+
* unambiguous one is what lets a single encoder serve every route.
|
|
33
|
+
*/
|
|
34
|
+
function apiQueryString(query) {
|
|
35
|
+
if (query === void 0) return "";
|
|
36
|
+
const pairs = [];
|
|
37
|
+
for (const [key, value] of Object.entries(query)) {
|
|
38
|
+
if (value === void 0) continue;
|
|
39
|
+
pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
|
40
|
+
}
|
|
41
|
+
return pairs.length === 0 ? "" : `?${pairs.join("&")}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The absolute, root-relative URL for one route.
|
|
45
|
+
*
|
|
46
|
+
* Root-relative on purpose: the sealed transport refuses anything else, because
|
|
47
|
+
* a remote session relays its requests through a gateway that will not forward
|
|
48
|
+
* an arbitrary origin.
|
|
49
|
+
*
|
|
50
|
+
* A route whose path is exactly '/' addresses the mount itself, so the slash is
|
|
51
|
+
* dropped rather than doubled.
|
|
52
|
+
*/
|
|
53
|
+
function pluginApiUrl(address, basePath, path, query, params) {
|
|
54
|
+
const resolved = applyPathParams(path, params);
|
|
55
|
+
return `${pluginApiBase(address, basePath)}${resolved === "/" ? "" : resolved}${apiQueryString(query)}`;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Substitutes a route's `:name` segments, as Hono spells them.
|
|
59
|
+
*
|
|
60
|
+
* Encoded per segment, so a value containing a slash names one segment rather
|
|
61
|
+
* than inventing another. A declared parameter with no value is left as the
|
|
62
|
+
* literal `:name`, which fails visibly at the route instead of silently
|
|
63
|
+
* addressing the collection above it.
|
|
64
|
+
*/
|
|
65
|
+
function applyPathParams(path, params) {
|
|
66
|
+
if (params === void 0 || !path.includes(":")) return path;
|
|
67
|
+
return path.split("/").map((segment) => {
|
|
68
|
+
if (!segment.startsWith(":")) return segment;
|
|
69
|
+
const catchAll = segment.endsWith("}");
|
|
70
|
+
const value = params[catchAll ? segment.slice(1, segment.indexOf("{")) : segment.slice(1)];
|
|
71
|
+
if (value === void 0) return segment;
|
|
72
|
+
return catchAll ? value.split("/").map(encodeURIComponent).join("/") : encodeURIComponent(value);
|
|
73
|
+
}).join("/");
|
|
74
|
+
}
|
|
75
|
+
//#endregion
|
|
76
|
+
exports.SETTINGS_BASE_PATH = SETTINGS_BASE_PATH;
|
|
77
|
+
exports.apiQueryString = apiQueryString;
|
|
78
|
+
exports.applyPathParams = applyPathParams;
|
|
79
|
+
exports.pluginApiBase = pluginApiBase;
|
|
80
|
+
exports.pluginApiUrl = pluginApiUrl;
|
|
81
|
+
exports.scopeApiRoot = scopeApiRoot;
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../../src/web/services/apiPaths/index.ts"],"sourcesContent":["/**\n * The byte shape of every URL the browser addresses a package API with.\n *\n * One implementation, because the alternative is what the cockpit had: twelve\n * packages each concatenating `${sessionApiPath(id)}/plugins/${base}${path}` by\n * hand, three of them spelling the prefix a fourth way, and one rewriting it\n * with `String.replace`. A route that moves by one character is answered by the\n * service worker out of the signed bundle cache instead of the network, so the\n * failure is a 404 nowhere near its cause.\n *\n * The host builds the same strings from `doomApiMountPath` and, for OpenAPI\n * templating, from `createApiDocuments`. Those live in the node half of this\n * package and cannot be imported here: `src/web` is a separate tree that reads\n * neither `src/schemas` nor `src/services`. The three are held together by the\n * agreement test instead of by a call, which is the guarantee that matters.\n */\n\n/**\n * Who a request is addressed to. Ids are supplied decoded and encoded here, so\n * a caller never double-encodes and a workspace with a slash in its name cannot\n * forge a path segment.\n */\nexport type ApiScopeAddress =\n | { readonly scope: 'global' }\n | { readonly scope: 'workspace'; readonly workspaceId: string }\n | { readonly scope: 'session'; readonly workspaceId: string; readonly sessionId: string };\n\n/** Path parameter values, substituted into a route's `:name` segments. */\nexport type ApiParams = Readonly<Record<string, string>>;\n\n/** Query values a route may carry. `undefined` drops the parameter rather than sending 'undefined'. */\nexport type ApiQuery = Readonly<Record<string, string | number | boolean | undefined>>;\n\n/** The base path the host reserves for its own settings API, mounted outside /plugins/. */\nexport const SETTINGS_BASE_PATH = 'settings';\n\n/** The scope's own resource root: what a host-owned route hangs off. */\nexport function scopeApiRoot(address: ApiScopeAddress): string {\n if (address.scope === 'global') return '/api';\n const workspace = `/api/workspaces/${encodeURIComponent(address.workspaceId)}`;\n if (address.scope === 'workspace') return workspace;\n return `${workspace}/sessions/${encodeURIComponent(address.sessionId)}`;\n}\n\n/**\n * The mount one package API answers on.\n *\n * `basePath` is omitted for a host-owned route, which the contract schema\n * already spells that way, so the session file-bytes route and a plugin route\n * are the same construction with one field different rather than two code\n * paths. `settings` is the host's own API and sits beside `/plugins`, not\n * under it.\n */\nexport function pluginApiBase(address: ApiScopeAddress, basePath: string | undefined): string {\n const root = scopeApiRoot(address);\n if (basePath === undefined) return root;\n if (basePath === SETTINGS_BASE_PATH) return `${root}/${SETTINGS_BASE_PATH}`;\n return `${root}/plugins/${basePath}`;\n}\n\n/**\n * The query string, `encodeURIComponent` per pair rather than `URLSearchParams`.\n *\n * `URLSearchParams` writes a space as `+`, which only decodes back to a space\n * under form-urlencoded rules; `%20` decodes to a space everywhere. The\n * cockpit already relied on that difference in both directions, so picking the\n * unambiguous one is what lets a single encoder serve every route.\n */\nexport function apiQueryString(query: ApiQuery | undefined): string {\n if (query === undefined) return '';\n const pairs: string[] = [];\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined) continue;\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n return pairs.length === 0 ? '' : `?${pairs.join('&')}`;\n}\n\n/**\n * The absolute, root-relative URL for one route.\n *\n * Root-relative on purpose: the sealed transport refuses anything else, because\n * a remote session relays its requests through a gateway that will not forward\n * an arbitrary origin.\n *\n * A route whose path is exactly '/' addresses the mount itself, so the slash is\n * dropped rather than doubled.\n */\nexport function pluginApiUrl(\n address: ApiScopeAddress,\n basePath: string | undefined,\n path: string,\n query?: ApiQuery,\n params?: ApiParams,\n): string {\n const resolved = applyPathParams(path, params);\n return `${pluginApiBase(address, basePath)}${resolved === '/' ? '' : resolved}${apiQueryString(query)}`;\n}\n\n/**\n * Substitutes a route's `:name` segments, as Hono spells them.\n *\n * Encoded per segment, so a value containing a slash names one segment rather\n * than inventing another. A declared parameter with no value is left as the\n * literal `:name`, which fails visibly at the route instead of silently\n * addressing the collection above it.\n */\nexport function applyPathParams(path: string, params: ApiParams | undefined): string {\n if (params === undefined || !path.includes(':')) return path;\n return path\n .split('/')\n .map((segment) => {\n if (!segment.startsWith(':')) return segment;\n // Hono writes a multi-segment parameter as `:name{.+}`. Its value is a\n // relative path, so the slashes inside it are structure the route means\n // to keep; encoding them would address one oddly-named file instead of a\n // nested one. Each piece is still escaped on its own.\n const catchAll = segment.endsWith('}');\n const name = catchAll ? segment.slice(1, segment.indexOf('{')) : segment.slice(1);\n const value = params[name];\n if (value === undefined) return segment;\n return catchAll ? value.split('/').map(encodeURIComponent).join('/') : encodeURIComponent(value);\n })\n .join('/');\n}\n"],"mappings":";;AAkCA,MAAa,qBAAqB;;AAGlC,SAAgB,aAAa,SAAkC;CAC7D,IAAI,QAAQ,UAAU,UAAU,OAAO;CACvC,MAAM,YAAY,mBAAmB,mBAAmB,QAAQ,WAAW;CAC3E,IAAI,QAAQ,UAAU,aAAa,OAAO;CAC1C,OAAO,GAAG,UAAU,YAAY,mBAAmB,QAAQ,SAAS;AACtE;;;;;;;;;;AAWA,SAAgB,cAAc,SAA0B,UAAsC;CAC5F,MAAM,OAAO,aAAa,OAAO;CACjC,IAAI,aAAa,KAAA,GAAW,OAAO;CACnC,IAAI,aAAA,YAAiC,OAAO,GAAG,KAAK,GAAG;CACvD,OAAO,GAAG,KAAK,WAAW;AAC5B;;;;;;;;;AAUA,SAAgB,eAAe,OAAqC;CAClE,IAAI,UAAU,KAAA,GAAW,OAAO;CAChC,MAAM,QAAkB,CAAC;CACzB,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;EAChD,IAAI,UAAU,KAAA,GAAW;EACzB,MAAM,KAAK,GAAG,mBAAmB,GAAG,EAAE,GAAG,mBAAmB,OAAO,KAAK,CAAC,GAAG;CAC9E;CACA,OAAO,MAAM,WAAW,IAAI,KAAK,IAAI,MAAM,KAAK,GAAG;AACrD;;;;;;;;;;;AAYA,SAAgB,aACd,SACA,UACA,MACA,OACA,QACQ;CACR,MAAM,WAAW,gBAAgB,MAAM,MAAM;CAC7C,OAAO,GAAG,cAAc,SAAS,QAAQ,IAAI,aAAa,MAAM,KAAK,WAAW,eAAe,KAAK;AACtG;;;;;;;;;AAUA,SAAgB,gBAAgB,MAAc,QAAuC;CACnF,IAAI,WAAW,KAAA,KAAa,CAAC,KAAK,SAAS,GAAG,GAAG,OAAO;CACxD,OAAO,KACJ,MAAM,GAAG,CAAC,CACV,KAAK,YAAY;EAChB,IAAI,CAAC,QAAQ,WAAW,GAAG,GAAG,OAAO;EAKrC,MAAM,WAAW,QAAQ,SAAS,GAAG;EAErC,MAAM,QAAQ,OADD,WAAW,QAAQ,MAAM,GAAG,QAAQ,QAAQ,GAAG,CAAC,IAAI,QAAQ,MAAM,CAAC;EAEhF,IAAI,UAAU,KAAA,GAAW,OAAO;EAChC,OAAO,WAAW,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,KAAK,GAAG,IAAI,mBAAmB,KAAK;CACjG,CAAC,CAAC,CACD,KAAK,GAAG;AACb"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
//#region src/web/services/apiPaths/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The byte shape of every URL the browser addresses a package API with.
|
|
4
|
+
*
|
|
5
|
+
* One implementation, because the alternative is what the cockpit had: twelve
|
|
6
|
+
* packages each concatenating `${sessionApiPath(id)}/plugins/${base}${path}` by
|
|
7
|
+
* hand, three of them spelling the prefix a fourth way, and one rewriting it
|
|
8
|
+
* with `String.replace`. A route that moves by one character is answered by the
|
|
9
|
+
* service worker out of the signed bundle cache instead of the network, so the
|
|
10
|
+
* failure is a 404 nowhere near its cause.
|
|
11
|
+
*
|
|
12
|
+
* The host builds the same strings from `doomApiMountPath` and, for OpenAPI
|
|
13
|
+
* templating, from `createApiDocuments`. Those live in the node half of this
|
|
14
|
+
* package and cannot be imported here: `src/web` is a separate tree that reads
|
|
15
|
+
* neither `src/schemas` nor `src/services`. The three are held together by the
|
|
16
|
+
* agreement test instead of by a call, which is the guarantee that matters.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Who a request is addressed to. Ids are supplied decoded and encoded here, so
|
|
20
|
+
* a caller never double-encodes and a workspace with a slash in its name cannot
|
|
21
|
+
* forge a path segment.
|
|
22
|
+
*/
|
|
23
|
+
export type ApiScopeAddress = {
|
|
24
|
+
readonly scope: 'global';
|
|
25
|
+
} | {
|
|
26
|
+
readonly scope: 'workspace';
|
|
27
|
+
readonly workspaceId: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly scope: 'session';
|
|
30
|
+
readonly workspaceId: string;
|
|
31
|
+
readonly sessionId: string;
|
|
32
|
+
};
|
|
33
|
+
/** Path parameter values, substituted into a route's `:name` segments. */
|
|
34
|
+
export type ApiParams = Readonly<Record<string, string>>;
|
|
35
|
+
/** Query values a route may carry. `undefined` drops the parameter rather than sending 'undefined'. */
|
|
36
|
+
export type ApiQuery = Readonly<Record<string, string | number | boolean | undefined>>;
|
|
37
|
+
/** The base path the host reserves for its own settings API, mounted outside /plugins/. */
|
|
38
|
+
export declare const SETTINGS_BASE_PATH = "settings";
|
|
39
|
+
/** The scope's own resource root: what a host-owned route hangs off. */
|
|
40
|
+
export declare function scopeApiRoot(address: ApiScopeAddress): string;
|
|
41
|
+
/**
|
|
42
|
+
* The mount one package API answers on.
|
|
43
|
+
*
|
|
44
|
+
* `basePath` is omitted for a host-owned route, which the contract schema
|
|
45
|
+
* already spells that way, so the session file-bytes route and a plugin route
|
|
46
|
+
* are the same construction with one field different rather than two code
|
|
47
|
+
* paths. `settings` is the host's own API and sits beside `/plugins`, not
|
|
48
|
+
* under it.
|
|
49
|
+
*/
|
|
50
|
+
export declare function pluginApiBase(address: ApiScopeAddress, basePath: string | undefined): string;
|
|
51
|
+
/**
|
|
52
|
+
* The query string, `encodeURIComponent` per pair rather than `URLSearchParams`.
|
|
53
|
+
*
|
|
54
|
+
* `URLSearchParams` writes a space as `+`, which only decodes back to a space
|
|
55
|
+
* under form-urlencoded rules; `%20` decodes to a space everywhere. The
|
|
56
|
+
* cockpit already relied on that difference in both directions, so picking the
|
|
57
|
+
* unambiguous one is what lets a single encoder serve every route.
|
|
58
|
+
*/
|
|
59
|
+
export declare function apiQueryString(query: ApiQuery | undefined): string;
|
|
60
|
+
/**
|
|
61
|
+
* The absolute, root-relative URL for one route.
|
|
62
|
+
*
|
|
63
|
+
* Root-relative on purpose: the sealed transport refuses anything else, because
|
|
64
|
+
* a remote session relays its requests through a gateway that will not forward
|
|
65
|
+
* an arbitrary origin.
|
|
66
|
+
*
|
|
67
|
+
* A route whose path is exactly '/' addresses the mount itself, so the slash is
|
|
68
|
+
* dropped rather than doubled.
|
|
69
|
+
*/
|
|
70
|
+
export declare function pluginApiUrl(address: ApiScopeAddress, basePath: string | undefined, path: string, query?: ApiQuery, params?: ApiParams): string;
|
|
71
|
+
/**
|
|
72
|
+
* Substitutes a route's `:name` segments, as Hono spells them.
|
|
73
|
+
*
|
|
74
|
+
* Encoded per segment, so a value containing a slash names one segment rather
|
|
75
|
+
* than inventing another. A declared parameter with no value is left as the
|
|
76
|
+
* literal `:name`, which fails visibly at the route instead of silently
|
|
77
|
+
* addressing the collection above it.
|
|
78
|
+
*/
|
|
79
|
+
export declare function applyPathParams(path: string, params: ApiParams | undefined): string;
|
|
80
|
+
//#endregion
|
|
81
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../../src/web/services/apiPaths/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;YAsBY;WACG;;WACA;WAA6B;;WAC7B;WAA2B;WAA8B;;;YAG5D,YAAY,SAAS;;YAGrB,WAAW,SAAS;;qBAGnB;;wBAGG,aAAa,SAAS;;;;;;;;;;wBAgBtB,cAAc,SAAS,iBAAiB;;;;;;;;;wBAexC,eAAe,OAAO;;;;;;;;;;;wBAoBtB,aACd,SAAS,iBACT,8BACA,cACA,QAAQ,UACR,SAAS;;;;;;;;;wBAcK,gBAAgB,cAAc,QAAQ"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
//#region src/web/services/apiPaths/index.ts
|
|
2
|
+
/** The base path the host reserves for its own settings API, mounted outside /plugins/. */
|
|
3
|
+
const SETTINGS_BASE_PATH = "settings";
|
|
4
|
+
/** The scope's own resource root: what a host-owned route hangs off. */
|
|
5
|
+
function scopeApiRoot(address) {
|
|
6
|
+
if (address.scope === "global") return "/api";
|
|
7
|
+
const workspace = `/api/workspaces/${encodeURIComponent(address.workspaceId)}`;
|
|
8
|
+
if (address.scope === "workspace") return workspace;
|
|
9
|
+
return `${workspace}/sessions/${encodeURIComponent(address.sessionId)}`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The mount one package API answers on.
|
|
13
|
+
*
|
|
14
|
+
* `basePath` is omitted for a host-owned route, which the contract schema
|
|
15
|
+
* already spells that way, so the session file-bytes route and a plugin route
|
|
16
|
+
* are the same construction with one field different rather than two code
|
|
17
|
+
* paths. `settings` is the host's own API and sits beside `/plugins`, not
|
|
18
|
+
* under it.
|
|
19
|
+
*/
|
|
20
|
+
function pluginApiBase(address, basePath) {
|
|
21
|
+
const root = scopeApiRoot(address);
|
|
22
|
+
if (basePath === void 0) return root;
|
|
23
|
+
if (basePath === "settings") return `${root}/${SETTINGS_BASE_PATH}`;
|
|
24
|
+
return `${root}/plugins/${basePath}`;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The query string, `encodeURIComponent` per pair rather than `URLSearchParams`.
|
|
28
|
+
*
|
|
29
|
+
* `URLSearchParams` writes a space as `+`, which only decodes back to a space
|
|
30
|
+
* under form-urlencoded rules; `%20` decodes to a space everywhere. The
|
|
31
|
+
* cockpit already relied on that difference in both directions, so picking the
|
|
32
|
+
* unambiguous one is what lets a single encoder serve every route.
|
|
33
|
+
*/
|
|
34
|
+
function apiQueryString(query) {
|
|
35
|
+
if (query === void 0) return "";
|
|
36
|
+
const pairs = [];
|
|
37
|
+
for (const [key, value] of Object.entries(query)) {
|
|
38
|
+
if (value === void 0) continue;
|
|
39
|
+
pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
|
|
40
|
+
}
|
|
41
|
+
return pairs.length === 0 ? "" : `?${pairs.join("&")}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The absolute, root-relative URL for one route.
|
|
45
|
+
*
|
|
46
|
+
* Root-relative on purpose: the sealed transport refuses anything else, because
|
|
47
|
+
* a remote session relays its requests through a gateway that will not forward
|
|
48
|
+
* an arbitrary origin.
|
|
49
|
+
*
|
|
50
|
+
* A route whose path is exactly '/' addresses the mount itself, so the slash is
|
|
51
|
+
* dropped rather than doubled.
|
|
52
|
+
*/
|
|
53
|
+
function pluginApiUrl(address, basePath, path, query, params) {
|
|
54
|
+
const resolved = applyPathParams(path, params);
|
|
55
|
+
return `${pluginApiBase(address, basePath)}${resolved === "/" ? "" : resolved}${apiQueryString(query)}`;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Substitutes a route's `:name` segments, as Hono spells them.
|
|
59
|
+
*
|
|
60
|
+
* Encoded per segment, so a value containing a slash names one segment rather
|
|
61
|
+
* than inventing another. A declared parameter with no value is left as the
|
|
62
|
+
* literal `:name`, which fails visibly at the route instead of silently
|
|
63
|
+
* addressing the collection above it.
|
|
64
|
+
*/
|
|
65
|
+
function applyPathParams(path, params) {
|
|
66
|
+
if (params === void 0 || !path.includes(":")) return path;
|
|
67
|
+
return path.split("/").map((segment) => {
|
|
68
|
+
if (!segment.startsWith(":")) return segment;
|
|
69
|
+
const catchAll = segment.endsWith("}");
|
|
70
|
+
const value = params[catchAll ? segment.slice(1, segment.indexOf("{")) : segment.slice(1)];
|
|
71
|
+
if (value === void 0) return segment;
|
|
72
|
+
return catchAll ? value.split("/").map(encodeURIComponent).join("/") : encodeURIComponent(value);
|
|
73
|
+
}).join("/");
|
|
74
|
+
}
|
|
75
|
+
//#endregion
|
|
76
|
+
export { SETTINGS_BASE_PATH, apiQueryString, applyPathParams, pluginApiBase, pluginApiUrl, scopeApiRoot };
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../src/web/services/apiPaths/index.ts"],"sourcesContent":["/**\n * The byte shape of every URL the browser addresses a package API with.\n *\n * One implementation, because the alternative is what the cockpit had: twelve\n * packages each concatenating `${sessionApiPath(id)}/plugins/${base}${path}` by\n * hand, three of them spelling the prefix a fourth way, and one rewriting it\n * with `String.replace`. A route that moves by one character is answered by the\n * service worker out of the signed bundle cache instead of the network, so the\n * failure is a 404 nowhere near its cause.\n *\n * The host builds the same strings from `doomApiMountPath` and, for OpenAPI\n * templating, from `createApiDocuments`. Those live in the node half of this\n * package and cannot be imported here: `src/web` is a separate tree that reads\n * neither `src/schemas` nor `src/services`. The three are held together by the\n * agreement test instead of by a call, which is the guarantee that matters.\n */\n\n/**\n * Who a request is addressed to. Ids are supplied decoded and encoded here, so\n * a caller never double-encodes and a workspace with a slash in its name cannot\n * forge a path segment.\n */\nexport type ApiScopeAddress =\n | { readonly scope: 'global' }\n | { readonly scope: 'workspace'; readonly workspaceId: string }\n | { readonly scope: 'session'; readonly workspaceId: string; readonly sessionId: string };\n\n/** Path parameter values, substituted into a route's `:name` segments. */\nexport type ApiParams = Readonly<Record<string, string>>;\n\n/** Query values a route may carry. `undefined` drops the parameter rather than sending 'undefined'. */\nexport type ApiQuery = Readonly<Record<string, string | number | boolean | undefined>>;\n\n/** The base path the host reserves for its own settings API, mounted outside /plugins/. */\nexport const SETTINGS_BASE_PATH = 'settings';\n\n/** The scope's own resource root: what a host-owned route hangs off. */\nexport function scopeApiRoot(address: ApiScopeAddress): string {\n if (address.scope === 'global') return '/api';\n const workspace = `/api/workspaces/${encodeURIComponent(address.workspaceId)}`;\n if (address.scope === 'workspace') return workspace;\n return `${workspace}/sessions/${encodeURIComponent(address.sessionId)}`;\n}\n\n/**\n * The mount one package API answers on.\n *\n * `basePath` is omitted for a host-owned route, which the contract schema\n * already spells that way, so the session file-bytes route and a plugin route\n * are the same construction with one field different rather than two code\n * paths. `settings` is the host's own API and sits beside `/plugins`, not\n * under it.\n */\nexport function pluginApiBase(address: ApiScopeAddress, basePath: string | undefined): string {\n const root = scopeApiRoot(address);\n if (basePath === undefined) return root;\n if (basePath === SETTINGS_BASE_PATH) return `${root}/${SETTINGS_BASE_PATH}`;\n return `${root}/plugins/${basePath}`;\n}\n\n/**\n * The query string, `encodeURIComponent` per pair rather than `URLSearchParams`.\n *\n * `URLSearchParams` writes a space as `+`, which only decodes back to a space\n * under form-urlencoded rules; `%20` decodes to a space everywhere. The\n * cockpit already relied on that difference in both directions, so picking the\n * unambiguous one is what lets a single encoder serve every route.\n */\nexport function apiQueryString(query: ApiQuery | undefined): string {\n if (query === undefined) return '';\n const pairs: string[] = [];\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined) continue;\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n return pairs.length === 0 ? '' : `?${pairs.join('&')}`;\n}\n\n/**\n * The absolute, root-relative URL for one route.\n *\n * Root-relative on purpose: the sealed transport refuses anything else, because\n * a remote session relays its requests through a gateway that will not forward\n * an arbitrary origin.\n *\n * A route whose path is exactly '/' addresses the mount itself, so the slash is\n * dropped rather than doubled.\n */\nexport function pluginApiUrl(\n address: ApiScopeAddress,\n basePath: string | undefined,\n path: string,\n query?: ApiQuery,\n params?: ApiParams,\n): string {\n const resolved = applyPathParams(path, params);\n return `${pluginApiBase(address, basePath)}${resolved === '/' ? '' : resolved}${apiQueryString(query)}`;\n}\n\n/**\n * Substitutes a route's `:name` segments, as Hono spells them.\n *\n * Encoded per segment, so a value containing a slash names one segment rather\n * than inventing another. A declared parameter with no value is left as the\n * literal `:name`, which fails visibly at the route instead of silently\n * addressing the collection above it.\n */\nexport function applyPathParams(path: string, params: ApiParams | undefined): string {\n if (params === undefined || !path.includes(':')) return path;\n return path\n .split('/')\n .map((segment) => {\n if (!segment.startsWith(':')) return segment;\n // Hono writes a multi-segment parameter as `:name{.+}`. Its value is a\n // relative path, so the slashes inside it are structure the route means\n // to keep; encoding them would address one oddly-named file instead of a\n // nested one. Each piece is still escaped on its own.\n const catchAll = segment.endsWith('}');\n const name = catchAll ? segment.slice(1, segment.indexOf('{')) : segment.slice(1);\n const value = params[name];\n if (value === undefined) return segment;\n return catchAll ? value.split('/').map(encodeURIComponent).join('/') : encodeURIComponent(value);\n })\n .join('/');\n}\n"],"mappings":";;AAkCA,MAAa,qBAAqB;;AAGlC,SAAgB,aAAa,SAAkC;CAC7D,IAAI,QAAQ,UAAU,UAAU,OAAO;CACvC,MAAM,YAAY,mBAAmB,mBAAmB,QAAQ,WAAW;CAC3E,IAAI,QAAQ,UAAU,aAAa,OAAO;CAC1C,OAAO,GAAG,UAAU,YAAY,mBAAmB,QAAQ,SAAS;AACtE;;;;;;;;;;AAWA,SAAgB,cAAc,SAA0B,UAAsC;CAC5F,MAAM,OAAO,aAAa,OAAO;CACjC,IAAI,aAAa,KAAA,GAAW,OAAO;CACnC,IAAI,aAAA,YAAiC,OAAO,GAAG,KAAK,GAAG;CACvD,OAAO,GAAG,KAAK,WAAW;AAC5B;;;;;;;;;AAUA,SAAgB,eAAe,OAAqC;CAClE,IAAI,UAAU,KAAA,GAAW,OAAO;CAChC,MAAM,QAAkB,CAAC;CACzB,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;EAChD,IAAI,UAAU,KAAA,GAAW;EACzB,MAAM,KAAK,GAAG,mBAAmB,GAAG,EAAE,GAAG,mBAAmB,OAAO,KAAK,CAAC,GAAG;CAC9E;CACA,OAAO,MAAM,WAAW,IAAI,KAAK,IAAI,MAAM,KAAK,GAAG;AACrD;;;;;;;;;;;AAYA,SAAgB,aACd,SACA,UACA,MACA,OACA,QACQ;CACR,MAAM,WAAW,gBAAgB,MAAM,MAAM;CAC7C,OAAO,GAAG,cAAc,SAAS,QAAQ,IAAI,aAAa,MAAM,KAAK,WAAW,eAAe,KAAK;AACtG;;;;;;;;;AAUA,SAAgB,gBAAgB,MAAc,QAAuC;CACnF,IAAI,WAAW,KAAA,KAAa,CAAC,KAAK,SAAS,GAAG,GAAG,OAAO;CACxD,OAAO,KACJ,MAAM,GAAG,CAAC,CACV,KAAK,YAAY;EAChB,IAAI,CAAC,QAAQ,WAAW,GAAG,GAAG,OAAO;EAKrC,MAAM,WAAW,QAAQ,SAAS,GAAG;EAErC,MAAM,QAAQ,OADD,WAAW,QAAQ,MAAM,GAAG,QAAQ,QAAQ,GAAG,CAAC,IAAI,QAAQ,MAAM,CAAC;EAEhF,IAAI,UAAU,KAAA,GAAW,OAAO;EAChC,OAAO,WAAW,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,KAAK,GAAG,IAAI,mBAAmB,KAAK;CACjG,CAAC,CAAC,CACD,KAAK,GAAG;AACb"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const require_index = require("../apiPaths/index.cjs");
|
|
2
|
+
//#region src/web/services/apiRoutes/index.ts
|
|
3
|
+
let resolveWorkspace;
|
|
4
|
+
/** The host owns session summaries; package clients use the same ownership lookup. */
|
|
5
|
+
function bindSessionApiWorkspace(resolve) {
|
|
6
|
+
resolveWorkspace = resolve;
|
|
7
|
+
}
|
|
8
|
+
/** Canonical global resource. */
|
|
9
|
+
function globalApiPath() {
|
|
10
|
+
return require_index.scopeApiRoot({ scope: "global" });
|
|
11
|
+
}
|
|
12
|
+
/** Canonical workspace resource. */
|
|
13
|
+
function workspaceApiPath(workspaceId) {
|
|
14
|
+
return require_index.scopeApiRoot({
|
|
15
|
+
scope: "workspace",
|
|
16
|
+
workspaceId
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Who a session id names, resolved through the host's ownership lookup.
|
|
21
|
+
*
|
|
22
|
+
* A generated client takes a session id and nothing else, because a page knows
|
|
23
|
+
* which session it is showing and must not be trusted to say which workspace
|
|
24
|
+
* owns it. Unknown ownership throws rather than guessing, since guessing would
|
|
25
|
+
* address a different scope.
|
|
26
|
+
*/
|
|
27
|
+
function sessionApiAddress(sessionId) {
|
|
28
|
+
const workspaceId = resolveWorkspace?.(sessionId);
|
|
29
|
+
if (!workspaceId) throw new Error(`Workspace is unavailable for session '${sessionId}'.`);
|
|
30
|
+
return {
|
|
31
|
+
scope: "session",
|
|
32
|
+
workspaceId,
|
|
33
|
+
sessionId
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** Canonical session resource. Unknown ownership must never select a different scope. */
|
|
37
|
+
function sessionApiPath(sessionId) {
|
|
38
|
+
return require_index.scopeApiRoot(sessionApiAddress(sessionId));
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
exports.bindSessionApiWorkspace = bindSessionApiWorkspace;
|
|
42
|
+
exports.globalApiPath = globalApiPath;
|
|
43
|
+
exports.sessionApiAddress = sessionApiAddress;
|
|
44
|
+
exports.sessionApiPath = sessionApiPath;
|
|
45
|
+
exports.workspaceApiPath = workspaceApiPath;
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["scopeApiRoot"],"sources":["../../../../../src/web/services/apiRoutes/index.ts"],"sourcesContent":["import { type ApiScopeAddress, scopeApiRoot } from '../apiPaths';\n\nlet resolveWorkspace: ((sessionId: string) => string | undefined) | undefined;\n\n/** The host owns session summaries; package clients use the same ownership lookup. */\nexport function bindSessionApiWorkspace(resolve: (sessionId: string) => string | undefined): void {\n resolveWorkspace = resolve;\n}\n\n/** Canonical global resource. */\nexport function globalApiPath(): string {\n return scopeApiRoot({ scope: 'global' });\n}\n\n/** Canonical workspace resource. */\nexport function workspaceApiPath(workspaceId: string): string {\n return scopeApiRoot({ scope: 'workspace', workspaceId });\n}\n\n/**\n * Who a session id names, resolved through the host's ownership lookup.\n *\n * A generated client takes a session id and nothing else, because a page knows\n * which session it is showing and must not be trusted to say which workspace\n * owns it. Unknown ownership throws rather than guessing, since guessing would\n * address a different scope.\n */\nexport function sessionApiAddress(sessionId: string): ApiScopeAddress {\n const workspaceId = resolveWorkspace?.(sessionId);\n if (!workspaceId) throw new Error(`Workspace is unavailable for session '${sessionId}'.`);\n return { scope: 'session', workspaceId, sessionId };\n}\n\n/** Canonical session resource. Unknown ownership must never select a different scope. */\nexport function sessionApiPath(sessionId: string): string {\n return scopeApiRoot(sessionApiAddress(sessionId));\n}\n"],"mappings":";;AAEA,IAAI;;AAGJ,SAAgB,wBAAwB,SAA0D;CAChG,mBAAmB;AACrB;;AAGA,SAAgB,gBAAwB;CACtC,OAAOA,cAAAA,aAAa,EAAE,OAAO,SAAS,CAAC;AACzC;;AAGA,SAAgB,iBAAiB,aAA6B;CAC5D,OAAOA,cAAAA,aAAa;EAAE,OAAO;EAAa;CAAY,CAAC;AACzD;;;;;;;;;AAUA,SAAgB,kBAAkB,WAAoC;CACpE,MAAM,cAAc,mBAAmB,SAAS;CAChD,IAAI,CAAC,aAAa,MAAM,IAAI,MAAM,yCAAyC,UAAU,GAAG;CACxF,OAAO;EAAE,OAAO;EAAW;EAAa;CAAU;AACpD;;AAGA,SAAgB,eAAe,WAA2B;CACxD,OAAOA,cAAAA,aAAa,kBAAkB,SAAS,CAAC;AAClD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ApiScopeAddress } from "../apiPaths/index.mjs";
|
|
2
|
+
//#region src/web/services/apiRoutes/index.d.ts
|
|
3
|
+
/** The host owns session summaries; package clients use the same ownership lookup. */
|
|
4
|
+
export declare function bindSessionApiWorkspace(resolve: (sessionId: string) => string | undefined): void;
|
|
5
|
+
/** Canonical global resource. */
|
|
6
|
+
export declare function globalApiPath(): string;
|
|
7
|
+
/** Canonical workspace resource. */
|
|
8
|
+
export declare function workspaceApiPath(workspaceId: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Who a session id names, resolved through the host's ownership lookup.
|
|
11
|
+
*
|
|
12
|
+
* A generated client takes a session id and nothing else, because a page knows
|
|
13
|
+
* which session it is showing and must not be trusted to say which workspace
|
|
14
|
+
* owns it. Unknown ownership throws rather than guessing, since guessing would
|
|
15
|
+
* address a different scope.
|
|
16
|
+
*/
|
|
17
|
+
export declare function sessionApiAddress(sessionId: string): ApiScopeAddress;
|
|
18
|
+
/** Canonical session resource. Unknown ownership must never select a different scope. */
|
|
19
|
+
export declare function sessionApiPath(sessionId: string): string;
|
|
20
|
+
//#endregion
|
|
21
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../../src/web/services/apiRoutes/index.ts"],"mappings":";;;wBAKgB,wBAAwB,UAAU;;wBAKlC;;wBAKA,iBAAiB;;;;;;;;;wBAYjB,kBAAkB,oBAAoB;;wBAOtC,eAAe"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { scopeApiRoot } from "../apiPaths/index.mjs";
|
|
2
|
+
//#region src/web/services/apiRoutes/index.ts
|
|
3
|
+
let resolveWorkspace;
|
|
4
|
+
/** The host owns session summaries; package clients use the same ownership lookup. */
|
|
5
|
+
function bindSessionApiWorkspace(resolve) {
|
|
6
|
+
resolveWorkspace = resolve;
|
|
7
|
+
}
|
|
8
|
+
/** Canonical global resource. */
|
|
9
|
+
function globalApiPath() {
|
|
10
|
+
return scopeApiRoot({ scope: "global" });
|
|
11
|
+
}
|
|
12
|
+
/** Canonical workspace resource. */
|
|
13
|
+
function workspaceApiPath(workspaceId) {
|
|
14
|
+
return scopeApiRoot({
|
|
15
|
+
scope: "workspace",
|
|
16
|
+
workspaceId
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Who a session id names, resolved through the host's ownership lookup.
|
|
21
|
+
*
|
|
22
|
+
* A generated client takes a session id and nothing else, because a page knows
|
|
23
|
+
* which session it is showing and must not be trusted to say which workspace
|
|
24
|
+
* owns it. Unknown ownership throws rather than guessing, since guessing would
|
|
25
|
+
* address a different scope.
|
|
26
|
+
*/
|
|
27
|
+
function sessionApiAddress(sessionId) {
|
|
28
|
+
const workspaceId = resolveWorkspace?.(sessionId);
|
|
29
|
+
if (!workspaceId) throw new Error(`Workspace is unavailable for session '${sessionId}'.`);
|
|
30
|
+
return {
|
|
31
|
+
scope: "session",
|
|
32
|
+
workspaceId,
|
|
33
|
+
sessionId
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** Canonical session resource. Unknown ownership must never select a different scope. */
|
|
37
|
+
function sessionApiPath(sessionId) {
|
|
38
|
+
return scopeApiRoot(sessionApiAddress(sessionId));
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { bindSessionApiWorkspace, globalApiPath, sessionApiAddress, sessionApiPath, workspaceApiPath };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../src/web/services/apiRoutes/index.ts"],"sourcesContent":["import { type ApiScopeAddress, scopeApiRoot } from '../apiPaths';\n\nlet resolveWorkspace: ((sessionId: string) => string | undefined) | undefined;\n\n/** The host owns session summaries; package clients use the same ownership lookup. */\nexport function bindSessionApiWorkspace(resolve: (sessionId: string) => string | undefined): void {\n resolveWorkspace = resolve;\n}\n\n/** Canonical global resource. */\nexport function globalApiPath(): string {\n return scopeApiRoot({ scope: 'global' });\n}\n\n/** Canonical workspace resource. */\nexport function workspaceApiPath(workspaceId: string): string {\n return scopeApiRoot({ scope: 'workspace', workspaceId });\n}\n\n/**\n * Who a session id names, resolved through the host's ownership lookup.\n *\n * A generated client takes a session id and nothing else, because a page knows\n * which session it is showing and must not be trusted to say which workspace\n * owns it. Unknown ownership throws rather than guessing, since guessing would\n * address a different scope.\n */\nexport function sessionApiAddress(sessionId: string): ApiScopeAddress {\n const workspaceId = resolveWorkspace?.(sessionId);\n if (!workspaceId) throw new Error(`Workspace is unavailable for session '${sessionId}'.`);\n return { scope: 'session', workspaceId, sessionId };\n}\n\n/** Canonical session resource. Unknown ownership must never select a different scope. */\nexport function sessionApiPath(sessionId: string): string {\n return scopeApiRoot(sessionApiAddress(sessionId));\n}\n"],"mappings":";;AAEA,IAAI;;AAGJ,SAAgB,wBAAwB,SAA0D;CAChG,mBAAmB;AACrB;;AAGA,SAAgB,gBAAwB;CACtC,OAAO,aAAa,EAAE,OAAO,SAAS,CAAC;AACzC;;AAGA,SAAgB,iBAAiB,aAA6B;CAC5D,OAAO,aAAa;EAAE,OAAO;EAAa;CAAY,CAAC;AACzD;;;;;;;;;AAUA,SAAgB,kBAAkB,WAAoC;CACpE,MAAM,cAAc,mBAAmB,SAAS;CAChD,IAAI,CAAC,aAAa,MAAM,IAAI,MAAM,yCAAyC,UAAU,GAAG;CACxF,OAAO;EAAE,OAAO;EAAW;EAAa;CAAU;AACpD;;AAGA,SAAgB,eAAe,WAA2B;CACxD,OAAO,aAAa,kBAAkB,SAAS,CAAC;AAClD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/web/services/mcpWidget.ts
|
|
2
|
+
/** Types one package-owned MCP widget without coupling the route to the composed host. */
|
|
3
|
+
function defineMcpWidget(widget) {
|
|
4
|
+
return widget;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
exports.defineMcpWidget = defineMcpWidget;
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=mcpWidget.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpWidget.cjs","names":[],"sources":["../../../../src/web/services/mcpWidget.ts"],"sourcesContent":["import type { DoomMcpWidgetProps } from '../types/mcpWidget';\n\n/** Types one package-owned MCP widget without coupling the route to the composed host. */\nexport function defineMcpWidget<T extends (props: DoomMcpWidgetProps) => unknown>(widget: T): T {\n return widget;\n}\n"],"mappings":";;AAGA,SAAgB,gBAAkE,QAAc;CAC9F,OAAO;AACT"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DoomMcpWidgetProps } from "../types/mcpWidget.mjs";
|
|
2
|
+
//#region src/web/services/mcpWidget.d.ts
|
|
3
|
+
/** Types one package-owned MCP widget without coupling the route to the composed host. */
|
|
4
|
+
export declare function defineMcpWidget<T extends (props: DoomMcpWidgetProps) => unknown>(widget: T): T;
|
|
5
|
+
//#endregion
|
|
6
|
+
//# sourceMappingURL=mcpWidget.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpWidget.d.mts","names":[],"sources":["../../../../src/web/services/mcpWidget.ts"],"mappings":";;;wBAGgB,gBAAgB,WAAW,OAAO,gCAAgC,QAAQ,IAAI"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/web/services/mcpWidget.ts
|
|
2
|
+
/** Types one package-owned MCP widget without coupling the route to the composed host. */
|
|
3
|
+
function defineMcpWidget(widget) {
|
|
4
|
+
return widget;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
export { defineMcpWidget };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=mcpWidget.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpWidget.mjs","names":[],"sources":["../../../../src/web/services/mcpWidget.ts"],"sourcesContent":["import type { DoomMcpWidgetProps } from '../types/mcpWidget';\n\n/** Types one package-owned MCP widget without coupling the route to the composed host. */\nexport function defineMcpWidget<T extends (props: DoomMcpWidgetProps) => unknown>(widget: T): T {\n return widget;\n}\n"],"mappings":";;AAGA,SAAgB,gBAAkE,QAAc;CAC9F,OAAO;AACT"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
//#region src/web/services/sessionRegistry/index.ts
|
|
2
|
+
/** Overrides the runtime directory the hub and its session servers share. */
|
|
3
|
+
const REGISTRY_DIR_ENV = "DOOMPI_RUNTIME_DIR";
|
|
4
|
+
/** The version a hub advertisement must carry to be read at all. */
|
|
5
|
+
const HUB_ADVERTISEMENT_VERSION = 1;
|
|
6
|
+
const DEFAULT_RUN_DIR_SEGMENT = ".doompi/run";
|
|
7
|
+
const HUB_ADVERTISEMENT_FILE = "hub.json";
|
|
8
|
+
/**
|
|
9
|
+
* The single definition of where the session registry lives.
|
|
10
|
+
*
|
|
11
|
+
* The hub, the session server, and any package that spawns a session must land
|
|
12
|
+
* on the same directory or a spawned session never appears in the rail. This
|
|
13
|
+
* used to be copied into each of them; it lives here so there is one answer.
|
|
14
|
+
*/
|
|
15
|
+
function resolveRegistryDir(input) {
|
|
16
|
+
if (input.flagValue) return input.flagValue;
|
|
17
|
+
if (input.envValue) return input.envValue;
|
|
18
|
+
return `${input.homeDir}/${DEFAULT_RUN_DIR_SEGMENT}`;
|
|
19
|
+
}
|
|
20
|
+
/** Where the hub publishes its local address, at the registry root. */
|
|
21
|
+
function hubAdvertisementPath(registryDir) {
|
|
22
|
+
return `${registryDir}/${HUB_ADVERTISEMENT_FILE}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Reads a hub advertisement's contents.
|
|
26
|
+
*
|
|
27
|
+
* Like the lineage sidecar, every failure collapses to "no hub advertised",
|
|
28
|
+
* because a caller can do nothing different with a torn write than with a
|
|
29
|
+
* missing file. The url is required to be a loopback http origin: this file is
|
|
30
|
+
* a discovery hint for local processes, and honouring an arbitrary address out
|
|
31
|
+
* of it would let anything that can write the registry directory redirect a
|
|
32
|
+
* session-create call to a host of its choosing.
|
|
33
|
+
*/
|
|
34
|
+
function parseHubAdvertisement(raw) {
|
|
35
|
+
let parsed;
|
|
36
|
+
try {
|
|
37
|
+
parsed = JSON.parse(raw);
|
|
38
|
+
} catch {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (typeof parsed !== "object" || parsed === null) return void 0;
|
|
42
|
+
const record = parsed;
|
|
43
|
+
if (record.version !== 1) return void 0;
|
|
44
|
+
if (typeof record.url !== "string" || !isLoopbackHttpUrl(record.url)) return void 0;
|
|
45
|
+
if (typeof record.pid !== "number" || !Number.isInteger(record.pid) || record.pid <= 0) return void 0;
|
|
46
|
+
return {
|
|
47
|
+
version: 1,
|
|
48
|
+
url: record.url,
|
|
49
|
+
pid: record.pid
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** Whether a url is plain http to this machine, which is all this file may name. */
|
|
53
|
+
function isLoopbackHttpUrl(value) {
|
|
54
|
+
let url;
|
|
55
|
+
try {
|
|
56
|
+
url = new URL(value);
|
|
57
|
+
} catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (url.protocol !== "http:") return false;
|
|
61
|
+
return url.hostname === "127.0.0.1" || url.hostname === "localhost" || url.hostname === "[::1]" || url.hostname === "::1";
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
exports.HUB_ADVERTISEMENT_VERSION = HUB_ADVERTISEMENT_VERSION;
|
|
65
|
+
exports.REGISTRY_DIR_ENV = REGISTRY_DIR_ENV;
|
|
66
|
+
exports.hubAdvertisementPath = hubAdvertisementPath;
|
|
67
|
+
exports.parseHubAdvertisement = parseHubAdvertisement;
|
|
68
|
+
exports.resolveRegistryDir = resolveRegistryDir;
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../../src/web/services/sessionRegistry/index.ts"],"sourcesContent":["import type { HubAdvertisement, RegistryDirInput } from '../../types/sessionRegistry';\n\n/** Overrides the runtime directory the hub and its session servers share. */\nexport const REGISTRY_DIR_ENV = 'DOOMPI_RUNTIME_DIR';\n\n/** The version a hub advertisement must carry to be read at all. */\nexport const HUB_ADVERTISEMENT_VERSION = 1;\n\nconst DEFAULT_RUN_DIR_SEGMENT = '.doompi/run';\nconst HUB_ADVERTISEMENT_FILE = 'hub.json';\n\n/**\n * The single definition of where the session registry lives.\n *\n * The hub, the session server, and any package that spawns a session must land\n * on the same directory or a spawned session never appears in the rail. This\n * used to be copied into each of them; it lives here so there is one answer.\n */\nexport function resolveRegistryDir(input: RegistryDirInput): string {\n if (input.flagValue) return input.flagValue;\n if (input.envValue) return input.envValue;\n return `${input.homeDir}/${DEFAULT_RUN_DIR_SEGMENT}`;\n}\n\n/** Where the hub publishes its local address, at the registry root. */\nexport function hubAdvertisementPath(registryDir: string): string {\n return `${registryDir}/${HUB_ADVERTISEMENT_FILE}`;\n}\n\n/**\n * Reads a hub advertisement's contents.\n *\n * Like the lineage sidecar, every failure collapses to \"no hub advertised\",\n * because a caller can do nothing different with a torn write than with a\n * missing file. The url is required to be a loopback http origin: this file is\n * a discovery hint for local processes, and honouring an arbitrary address out\n * of it would let anything that can write the registry directory redirect a\n * session-create call to a host of its choosing.\n */\nexport function parseHubAdvertisement(raw: string): HubAdvertisement | undefined {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n return undefined;\n }\n if (typeof parsed !== 'object' || parsed === null) return undefined;\n const record = parsed as Partial<HubAdvertisement>;\n if (record.version !== HUB_ADVERTISEMENT_VERSION) return undefined;\n if (typeof record.url !== 'string' || !isLoopbackHttpUrl(record.url)) return undefined;\n if (typeof record.pid !== 'number' || !Number.isInteger(record.pid) || record.pid <= 0) return undefined;\n return { version: HUB_ADVERTISEMENT_VERSION, url: record.url, pid: record.pid };\n}\n\n/** Whether a url is plain http to this machine, which is all this file may name. */\nfunction isLoopbackHttpUrl(value: string): boolean {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n return false;\n }\n if (url.protocol !== 'http:') return false;\n return (\n url.hostname === '127.0.0.1' || url.hostname === 'localhost' || url.hostname === '[::1]' || url.hostname === '::1'\n );\n}\n"],"mappings":";;AAGA,MAAa,mBAAmB;;AAGhC,MAAa,4BAA4B;AAEzC,MAAM,0BAA0B;AAChC,MAAM,yBAAyB;;;;;;;;AAS/B,SAAgB,mBAAmB,OAAiC;CAClE,IAAI,MAAM,WAAW,OAAO,MAAM;CAClC,IAAI,MAAM,UAAU,OAAO,MAAM;CACjC,OAAO,GAAG,MAAM,QAAQ,GAAG;AAC7B;;AAGA,SAAgB,qBAAqB,aAA6B;CAChE,OAAO,GAAG,YAAY,GAAG;AAC3B;;;;;;;;;;;AAYA,SAAgB,sBAAsB,KAA2C;CAC/E,IAAI;CACJ,IAAI;EACF,SAAS,KAAK,MAAM,GAAG;CACzB,QAAQ;EACN;CACF;CACA,IAAI,OAAO,WAAW,YAAY,WAAW,MAAM,OAAO,KAAA;CAC1D,MAAM,SAAS;CACf,IAAI,OAAO,YAAA,GAAuC,OAAO,KAAA;CACzD,IAAI,OAAO,OAAO,QAAQ,YAAY,CAAC,kBAAkB,OAAO,GAAG,GAAG,OAAO,KAAA;CAC7E,IAAI,OAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,UAAU,OAAO,GAAG,KAAK,OAAO,OAAO,GAAG,OAAO,KAAA;CAC/F,OAAO;EAAE,SAAA;EAAoC,KAAK,OAAO;EAAK,KAAK,OAAO;CAAI;AAChF;;AAGA,SAAS,kBAAkB,OAAwB;CACjD,IAAI;CACJ,IAAI;EACF,MAAM,IAAI,IAAI,KAAK;CACrB,QAAQ;EACN,OAAO;CACT;CACA,IAAI,IAAI,aAAa,SAAS,OAAO;CACrC,OACE,IAAI,aAAa,eAAe,IAAI,aAAa,eAAe,IAAI,aAAa,WAAW,IAAI,aAAa;AAEjH"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { HubAdvertisement, RegistryDirInput } from "../../types/sessionRegistry.mjs";
|
|
2
|
+
//#region src/web/services/sessionRegistry/index.d.ts
|
|
3
|
+
/** Overrides the runtime directory the hub and its session servers share. */
|
|
4
|
+
export declare const REGISTRY_DIR_ENV = "DOOMPI_RUNTIME_DIR";
|
|
5
|
+
/** The version a hub advertisement must carry to be read at all. */
|
|
6
|
+
export declare const HUB_ADVERTISEMENT_VERSION = 1;
|
|
7
|
+
/**
|
|
8
|
+
* The single definition of where the session registry lives.
|
|
9
|
+
*
|
|
10
|
+
* The hub, the session server, and any package that spawns a session must land
|
|
11
|
+
* on the same directory or a spawned session never appears in the rail. This
|
|
12
|
+
* used to be copied into each of them; it lives here so there is one answer.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveRegistryDir(input: RegistryDirInput): string;
|
|
15
|
+
/** Where the hub publishes its local address, at the registry root. */
|
|
16
|
+
export declare function hubAdvertisementPath(registryDir: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Reads a hub advertisement's contents.
|
|
19
|
+
*
|
|
20
|
+
* Like the lineage sidecar, every failure collapses to "no hub advertised",
|
|
21
|
+
* because a caller can do nothing different with a torn write than with a
|
|
22
|
+
* missing file. The url is required to be a loopback http origin: this file is
|
|
23
|
+
* a discovery hint for local processes, and honouring an arbitrary address out
|
|
24
|
+
* of it would let anything that can write the registry directory redirect a
|
|
25
|
+
* session-create call to a host of its choosing.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseHubAdvertisement(raw: string): HubAdvertisement | undefined;
|
|
28
|
+
//#endregion
|
|
29
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../../src/web/services/sessionRegistry/index.ts"],"mappings":";;;qBAGa;;qBAGA;;;;;;;;wBAYG,mBAAmB,OAAO;;wBAO1B,qBAAqB;;;;;;;;;;;wBAcrB,sBAAsB,cAAc"}
|