@agimon-ai/po-core 0.0.0-alpha.2 → 0.0.0-alpha.21
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 +149 -21
- package/NOTICE +41 -0
- package/dist/agentModel.cjs +1 -1
- package/dist/agentModel.d.mts +2 -2
- package/dist/agentModel.mjs +1 -2
- package/dist/apiContracts.cjs +623 -802
- package/dist/apiContracts.cjs.map +1 -1
- package/dist/apiContracts.d.mts +277 -615
- package/dist/apiContracts.d.mts.map +1 -1
- package/dist/apiContracts.mjs +617 -794
- package/dist/apiContracts.mjs.map +1 -1
- package/dist/askUser.cjs +2 -2
- package/dist/askUser.d.mts +2 -2
- package/dist/askUser.mjs +1 -2
- package/dist/authorTools.mjs +1 -2
- package/dist/backgroundWork.cjs +3 -3
- package/dist/backgroundWork.d.mts +2 -2
- package/dist/backgroundWork.mjs +1 -2
- package/dist/bundleAssetPolicy.mjs +1 -2
- package/dist/chatgptAuth.cjs +3 -2
- package/dist/chatgptAuth.d.mts +3 -2
- package/dist/chatgptAuth.mjs +2 -1
- package/dist/childProcess.cjs +1 -1
- package/dist/childProcess.d.mts +2 -2
- package/dist/childProcess.mjs +1 -2
- package/dist/childSession.cjs +11 -6
- package/dist/childSession.d.mts +3 -3
- package/dist/childSession.mjs +3 -3
- package/dist/cockpitContainer.mjs +1 -2
- package/dist/config.cjs +1 -1
- package/dist/config.d.mts +3 -3
- package/dist/config.mjs +1 -2
- package/dist/contextApi.cjs +1 -0
- package/dist/contextApi.d.mts +2 -2
- package/dist/contextApi.mjs +2 -2
- package/dist/contextContributions.cjs +4 -4
- package/dist/contextContributions.d.mts +3 -3
- package/dist/contextContributions.mjs +3 -3
- package/dist/contextDetailStore.cjs +7 -5
- package/dist/contextDetailStore.cjs.map +1 -1
- package/dist/contextDetailStore.d.mts +2 -1
- package/dist/contextDetailStore.d.mts.map +1 -1
- package/dist/contextDetailStore.mjs +6 -4
- package/dist/contextDetailStore.mjs.map +1 -1
- package/dist/contextProjection.cjs +7 -2
- package/dist/contextProjection.cjs.map +1 -1
- package/dist/contextProjection.d.mts +4 -1
- package/dist/contextProjection.d.mts.map +1 -1
- package/dist/contextProjection.mjs +5 -2
- package/dist/contextProjection.mjs.map +1 -1
- package/dist/cordisHost.cjs +11 -11
- package/dist/cordisHost.d.mts +2 -2
- package/dist/cordisHost.mjs +1 -2
- package/dist/delegation.cjs +8 -8
- package/dist/delegation.d.mts +2 -2
- package/dist/delegation.mjs +1 -2
- package/dist/executionBudget.cjs +4 -3
- package/dist/executionBudget.cjs.map +1 -1
- package/dist/executionBudget.d.mts +2 -2
- package/dist/executionBudget.d.mts.map +1 -1
- package/dist/executionBudget.mjs +4 -3
- package/dist/executionBudget.mjs.map +1 -1
- package/dist/extensionFile.cjs +5 -0
- package/dist/extensionFile.d.mts +4 -2
- package/dist/extensionFile.mjs +4 -2
- package/dist/footer.d.mts +2 -2
- package/dist/footer.mjs +1 -2
- package/dist/headless.cjs +14 -14
- package/dist/headless.d.mts +2 -2
- package/dist/headless.mjs +1 -2
- package/dist/headlessHub.cjs +308 -109
- package/dist/headlessHub.cjs.map +1 -1
- package/dist/headlessHub.d.mts +71 -36
- package/dist/headlessHub.d.mts.map +1 -1
- package/dist/headlessHub.mjs +309 -110
- package/dist/headlessHub.mjs.map +1 -1
- package/dist/headlessProtocol.cjs +327 -0
- package/dist/headlessProtocol.cjs.map +1 -0
- package/dist/headlessProtocol.d.mts +30 -0
- package/dist/headlessProtocol.d.mts.map +1 -0
- package/dist/headlessProtocol.mjs +326 -0
- package/dist/headlessProtocol.mjs.map +1 -0
- package/dist/headlessServer.cjs +166 -151
- package/dist/headlessServer.cjs.map +1 -1
- package/dist/headlessServer.d.mts +13 -5
- package/dist/headlessServer.d.mts.map +1 -1
- package/dist/headlessServer.mjs +166 -151
- package/dist/headlessServer.mjs.map +1 -1
- package/dist/headlessSessionHost.d.mts +58 -21
- package/dist/headlessSessionHost.d.mts.map +1 -1
- package/dist/help.cjs +20 -20
- package/dist/help.d.mts +2 -2
- package/dist/help.mjs +2 -2
- package/dist/history.cjs +16 -20
- package/dist/history.d.mts +9 -7
- package/dist/history.mjs +6 -7
- package/dist/historyOwnership.cjs.map +1 -1
- package/dist/historyOwnership.d.mts +1 -1
- package/dist/historyOwnership.mjs.map +1 -1
- package/dist/hubChannel.cjs +9 -0
- package/dist/hubChannel.d.mts +3 -2
- package/dist/hubChannel.mjs +3 -2
- package/dist/index.cjs +26 -28
- package/dist/index.d.mts +6 -6
- package/dist/index.mjs +6 -6
- package/dist/interop/chord.mjs +1 -0
- package/dist/interop/chordContext.mjs +1 -0
- package/dist/json.cjs +11 -5
- package/dist/json.d.mts +4 -2
- package/dist/json.mjs +4 -2
- package/dist/kernel.cjs +1 -1
- package/dist/kernel.d.mts +3 -3
- package/dist/kernel.mjs +1 -2
- package/dist/leader.d.mts +2 -2
- package/dist/leader.mjs +1 -2
- package/dist/logSinkTelemetry.mjs +1 -2
- package/dist/machineApi.cjs +80 -74
- package/dist/machineApi.cjs.map +1 -1
- package/dist/machineApi.d.mts +5 -2
- package/dist/machineApi.d.mts.map +1 -1
- package/dist/machineApi.mjs +78 -71
- package/dist/machineApi.mjs.map +1 -1
- package/dist/main.cjs +2 -1
- package/dist/main.d.mts +2 -1
- package/dist/main.mjs +2 -1
- package/dist/mcpFacet.d.mts +3 -3
- package/dist/mcpProjection.cjs +13 -13
- package/dist/mcpProjection.d.mts +2 -2
- package/dist/mcpProjection.mjs +1 -2
- package/dist/mcpSchemaCost.cjs +4 -4
- package/dist/mcpSchemaCost.cjs.map +1 -1
- package/dist/mcpSchemaCost.d.mts +2 -2
- package/dist/mcpSchemaCost.mjs +4 -4
- package/dist/mcpSchemaCost.mjs.map +1 -1
- package/dist/mcpSession.cjs +7 -7
- package/dist/mcpSession.d.mts +2 -2
- package/dist/mcpSession.mjs +1 -2
- package/dist/mcpStatus.cjs +2 -2
- package/dist/mcpStatus.d.mts +2 -2
- package/dist/mcpStatus.mjs +1 -2
- package/dist/mcpToolResolver.cjs +3 -3
- package/dist/mcpToolResolver.d.mts +2 -2
- package/dist/mcpToolResolver.mjs +1 -2
- package/dist/mcpWidget.d.mts +2 -2
- package/dist/moduleResolution.cjs +43 -8
- package/dist/moduleResolution.cjs.map +1 -1
- package/dist/moduleResolution.d.mts +10 -1
- package/dist/moduleResolution.d.mts.map +1 -1
- package/dist/moduleResolution.mjs +40 -7
- package/dist/moduleResolution.mjs.map +1 -1
- package/dist/narration.cjs +3 -3
- package/dist/narration.d.mts +2 -2
- package/dist/narration.mjs +1 -2
- package/dist/native.cjs +9 -0
- package/dist/native.d.mts +4 -3
- package/dist/native.mjs +3 -2
- package/dist/nodePlatform.cjs +77 -0
- package/dist/nodePlatform.cjs.map +1 -0
- package/dist/nodePlatform.d.mts +17 -0
- package/dist/nodePlatform.d.mts.map +1 -0
- package/dist/nodePlatform.mjs +72 -0
- package/dist/nodePlatform.mjs.map +1 -0
- package/dist/notification.cjs +15 -15
- package/dist/notification.d.mts +2 -2
- package/dist/notification.mjs +1 -2
- package/dist/packageApi.cjs +11 -11
- package/dist/packageApi.d.mts +2 -2
- package/dist/packageApi.mjs +2 -2
- package/dist/packageApiServer.cjs +45 -27
- package/dist/packageApiServer.cjs.map +1 -1
- package/dist/packageApiServer.d.mts +36 -26
- package/dist/packageApiServer.d.mts.map +1 -1
- package/dist/packageApiServer.mjs +44 -26
- package/dist/packageApiServer.mjs.map +1 -1
- package/dist/piSettings.cjs +41 -20
- package/dist/piSettings.d.mts +4 -2
- package/dist/piSettings.mjs +4 -2
- package/dist/platform.cjs +62 -0
- package/dist/platform.d.mts +10 -0
- package/dist/platform.mjs +10 -0
- package/dist/pluginProtocol.cjs +7 -8
- package/dist/pluginProtocol.d.mts +2 -2
- package/dist/pluginProtocol.mjs +1 -2
- package/dist/poPackage.cjs +12 -0
- package/dist/poPackage.d.mts +3 -0
- package/dist/poPackage.mjs +3 -0
- package/dist/profileIdentity.cjs +1 -1
- package/dist/profileIdentity.d.mts +2 -2
- package/dist/profileIdentity.mjs +1 -2
- package/dist/protocol.cjs +3 -3
- package/dist/protocol.d.mts +2 -2
- package/dist/protocol.mjs +1 -2
- package/dist/readiness.cjs +6 -6
- package/dist/readiness.d.mts +2 -2
- package/dist/readiness.mjs +1 -2
- package/dist/remoteApi.cjs.map +1 -1
- package/dist/remoteApi.d.mts +2 -2
- package/dist/remoteApi.mjs.map +1 -1
- package/dist/remoteRuntime.cjs +42 -65
- package/dist/remoteRuntime.cjs.map +1 -1
- package/dist/remoteRuntime.d.mts +3 -2
- package/dist/remoteRuntime.d.mts.map +1 -1
- package/dist/remoteRuntime.mjs +41 -62
- package/dist/remoteRuntime.mjs.map +1 -1
- package/dist/runtimeConfig.cjs +4 -4
- package/dist/runtimeConfig.cjs.map +1 -1
- package/dist/runtimeConfig.d.mts +10 -9
- package/dist/runtimeConfig.d.mts.map +1 -1
- package/dist/runtimeConfig.mjs +4 -4
- package/dist/runtimeConfig.mjs.map +1 -1
- package/dist/runtimeContextApi.cjs +10 -3
- package/dist/runtimeContextApi.cjs.map +1 -1
- package/dist/runtimeContextApi.d.mts +3 -3
- package/dist/runtimeContextApi.d.mts.map +1 -1
- package/dist/runtimeContextApi.mjs +10 -3
- package/dist/runtimeContextApi.mjs.map +1 -1
- package/dist/runtimeCordisHost.cjs +46 -46
- package/dist/runtimeCordisHost.cjs.map +1 -1
- package/dist/runtimeCordisHost.d.mts +29 -28
- package/dist/runtimeCordisHost.d.mts.map +1 -1
- package/dist/runtimeCordisHost.mjs +42 -42
- package/dist/runtimeCordisHost.mjs.map +1 -1
- package/dist/runtimeIdentity.cjs +6 -9
- package/dist/runtimeIdentity.cjs.map +1 -1
- package/dist/runtimeIdentity.d.mts +5 -1
- package/dist/runtimeIdentity.d.mts.map +1 -1
- package/dist/runtimeIdentity.mjs +5 -8
- package/dist/runtimeIdentity.mjs.map +1 -1
- package/dist/runtimeJson.cjs +10 -45
- package/dist/runtimeJson.d.mts +3 -22
- package/dist/runtimeJson.mjs +3 -39
- package/dist/runtimeLogSinkTelemetry.cjs +19 -19
- package/dist/runtimeLogSinkTelemetry.cjs.map +1 -1
- package/dist/runtimeLogSinkTelemetry.d.mts +19 -19
- package/dist/runtimeLogSinkTelemetry.mjs +19 -19
- package/dist/runtimeLogSinkTelemetry.mjs.map +1 -1
- package/dist/runtimePackages.cjs +7 -2
- package/dist/runtimePackages.cjs.map +1 -1
- package/dist/runtimePackages.d.mts +4 -1
- package/dist/runtimePackages.d.mts.map +1 -1
- package/dist/runtimePackages.mjs +7 -2
- package/dist/runtimePackages.mjs.map +1 -1
- package/dist/runtimePiSettings.cjs +40 -263
- package/dist/runtimePiSettings.d.mts +3 -72
- package/dist/runtimePiSettings.mjs +3 -241
- package/dist/runtimeProtocol.cjs +19 -19
- package/dist/runtimeProtocol.cjs.map +1 -1
- package/dist/runtimeProtocol.d.mts +7 -7
- package/dist/runtimeProtocol.d.mts.map +1 -1
- package/dist/runtimeProtocol.mjs +17 -17
- package/dist/runtimeProtocol.mjs.map +1 -1
- package/dist/runtimeTransition.cjs +9 -9
- package/dist/runtimeTransition.cjs.map +1 -1
- package/dist/runtimeTransition.d.mts +10 -10
- package/dist/runtimeTransition.d.mts.map +1 -1
- package/dist/runtimeTransition.mjs +7 -7
- package/dist/runtimeTransition.mjs.map +1 -1
- package/dist/sandboxHarness.mjs +1 -2
- package/dist/server.cjs +3 -7
- package/dist/server.d.mts +6 -6
- package/dist/server.mjs +3 -4
- package/dist/serverPlugin.cjs +39 -0
- package/dist/serverPlugin.d.mts +12 -0
- package/dist/serverPlugin.mjs +11 -0
- package/dist/serverTelemetry.cjs +1 -1
- package/dist/serverTelemetry.cjs.map +1 -1
- package/dist/serverTelemetry.d.mts +2 -2
- package/dist/serverTelemetry.mjs +2 -2
- package/dist/serverTelemetry.mjs.map +1 -1
- package/dist/sessionFilesApi.cjs +41 -37
- package/dist/sessionFilesApi.cjs.map +1 -1
- package/dist/sessionFilesApi.d.mts +6 -3
- package/dist/sessionFilesApi.d.mts.map +1 -1
- package/dist/sessionFilesApi.mjs +41 -36
- package/dist/sessionFilesApi.mjs.map +1 -1
- package/dist/sessionProtocol.cjs +31 -6
- package/dist/sessionProtocol.d.mts +8 -3
- package/dist/sessionProtocol.mjs +8 -2
- package/dist/skills.cjs +5 -5
- package/dist/skills.d.mts +2 -2
- package/dist/skills.mjs +1 -2
- package/dist/sqliteSessionStorage.cjs +28 -50
- package/dist/sqliteSessionStorage.cjs.map +1 -1
- package/dist/sqliteSessionStorage.d.mts +13 -20
- package/dist/sqliteSessionStorage.d.mts.map +1 -1
- package/dist/sqliteSessionStorage.mjs +25 -48
- package/dist/sqliteSessionStorage.mjs.map +1 -1
- package/dist/src/constants/agentSettled.cjs +7 -0
- package/dist/src/constants/agentSettled.cjs.map +1 -0
- package/dist/src/constants/agentSettled.mjs +7 -0
- package/dist/src/constants/agentSettled.mjs.map +1 -0
- package/dist/src/constants/contextApi.cjs +3 -1
- package/dist/src/constants/contextApi.cjs.map +1 -1
- package/dist/src/constants/contextApi.d.mts +2 -1
- package/dist/src/constants/contextApi.d.mts.map +1 -1
- package/dist/src/constants/contextApi.mjs +3 -2
- package/dist/src/constants/contextApi.mjs.map +1 -1
- package/dist/src/constants/voiceTools.cjs +6 -6
- package/dist/src/constants/voiceTools.cjs.map +1 -1
- package/dist/src/constants/voiceTools.d.mts +3 -3
- package/dist/src/constants/voiceTools.mjs +4 -4
- package/dist/src/constants/voiceTools.mjs.map +1 -1
- package/dist/src/extensions/extensionFile.cjs +22 -5
- package/dist/src/extensions/extensionFile.cjs.map +1 -1
- package/dist/src/extensions/extensionFile.d.mts +17 -4
- package/dist/src/extensions/extensionFile.d.mts.map +1 -1
- package/dist/src/extensions/extensionFile.mjs +22 -6
- package/dist/src/extensions/extensionFile.mjs.map +1 -1
- package/dist/src/extensions/serverPlugin.cjs +231 -92
- package/dist/src/extensions/serverPlugin.cjs.map +1 -1
- package/dist/src/extensions/serverPlugin.d.mts +2 -2
- package/dist/src/extensions/serverPlugin.d.mts.map +1 -1
- package/dist/src/extensions/serverPlugin.mjs +232 -93
- package/dist/src/extensions/serverPlugin.mjs.map +1 -1
- package/dist/src/pi/piSessionRuntime.cjs +349 -142
- package/dist/src/pi/piSessionRuntime.cjs.map +1 -1
- package/dist/src/pi/piSessionRuntime.d.mts +18 -17
- package/dist/src/pi/piSessionRuntime.d.mts.map +1 -1
- package/dist/src/pi/piSessionRuntime.mjs +342 -135
- package/dist/src/pi/piSessionRuntime.mjs.map +1 -1
- package/dist/src/schemas/agentModel.cjs +2 -2
- package/dist/src/schemas/agentModel.cjs.map +1 -1
- package/dist/src/schemas/agentModel.d.mts +1 -1
- package/dist/src/schemas/agentModel.mjs +2 -2
- package/dist/src/schemas/agentModel.mjs.map +1 -1
- package/dist/src/schemas/apiContracts.d.mts +2 -2
- package/dist/src/schemas/apiContracts.d.mts.map +1 -1
- package/dist/src/schemas/askUser.cjs +4 -4
- package/dist/src/schemas/askUser.cjs.map +1 -1
- package/dist/src/schemas/askUser.d.mts +4 -4
- package/dist/src/schemas/askUser.d.mts.map +1 -1
- package/dist/src/schemas/askUser.mjs +3 -3
- package/dist/src/schemas/askUser.mjs.map +1 -1
- package/dist/src/schemas/backgroundWork.cjs +10 -10
- package/dist/src/schemas/backgroundWork.cjs.map +1 -1
- package/dist/src/schemas/backgroundWork.d.mts +9 -9
- package/dist/src/schemas/backgroundWork.d.mts.map +1 -1
- package/dist/src/schemas/backgroundWork.mjs +8 -8
- package/dist/src/schemas/backgroundWork.mjs.map +1 -1
- package/dist/src/schemas/childProcess.cjs +5 -5
- package/dist/src/schemas/childProcess.cjs.map +1 -1
- package/dist/src/schemas/childProcess.d.mts +2 -2
- package/dist/src/schemas/childProcess.mjs +5 -5
- package/dist/src/schemas/childProcess.mjs.map +1 -1
- package/dist/src/schemas/contextContributions.cjs +10 -10
- package/dist/src/schemas/contextContributions.cjs.map +1 -1
- package/dist/src/schemas/contextContributions.d.mts +16 -16
- package/dist/src/schemas/contextContributions.d.mts.map +1 -1
- package/dist/src/schemas/contextContributions.mjs +8 -8
- package/dist/src/schemas/contextContributions.mjs.map +1 -1
- package/dist/src/schemas/delegation.cjs +17 -17
- package/dist/src/schemas/delegation.cjs.map +1 -1
- package/dist/src/schemas/delegation.d.mts +16 -16
- package/dist/src/schemas/delegation.d.mts.map +1 -1
- package/dist/src/schemas/delegation.mjs +10 -10
- package/dist/src/schemas/delegation.mjs.map +1 -1
- package/dist/src/schemas/extensionFile.d.mts +23 -19
- package/dist/src/schemas/extensionFile.d.mts.map +1 -1
- package/dist/src/schemas/footer.cjs.map +1 -1
- package/dist/src/schemas/footer.d.mts +5 -5
- package/dist/src/schemas/footer.d.mts.map +1 -1
- package/dist/src/schemas/footer.mjs.map +1 -1
- package/dist/src/schemas/headless.cjs +37 -37
- package/dist/src/schemas/headless.cjs.map +1 -1
- package/dist/src/schemas/headless.d.mts +100 -101
- package/dist/src/schemas/headless.d.mts.map +1 -1
- package/dist/src/schemas/headless.mjs +24 -24
- package/dist/src/schemas/headless.mjs.map +1 -1
- package/dist/src/schemas/help.cjs +60 -60
- package/dist/src/schemas/help.cjs.map +1 -1
- package/dist/src/schemas/help.d.mts +43 -43
- package/dist/src/schemas/help.d.mts.map +1 -1
- package/dist/src/schemas/help.mjs +41 -41
- package/dist/src/schemas/help.mjs.map +1 -1
- package/dist/src/schemas/home.cjs +127 -0
- package/dist/src/schemas/home.cjs.map +1 -0
- package/dist/src/schemas/home.d.mts +63 -0
- package/dist/src/schemas/home.d.mts.map +1 -0
- package/dist/src/schemas/home.mjs +121 -0
- package/dist/src/schemas/home.mjs.map +1 -0
- package/dist/src/schemas/httpApiContracts.cjs +441 -0
- package/dist/src/schemas/httpApiContracts.cjs.map +1 -0
- package/dist/src/schemas/httpApiContracts.d.mts +78 -0
- package/dist/src/schemas/httpApiContracts.d.mts.map +1 -0
- package/dist/src/schemas/httpApiContracts.mjs +434 -0
- package/dist/src/schemas/httpApiContracts.mjs.map +1 -0
- package/dist/src/schemas/hubChannel.cjs +3 -0
- package/dist/src/schemas/hubChannel.cjs.map +1 -1
- package/dist/src/schemas/hubChannel.d.mts +84 -60
- package/dist/src/schemas/hubChannel.d.mts.map +1 -1
- package/dist/src/schemas/hubChannel.mjs +3 -1
- package/dist/src/schemas/hubChannel.mjs.map +1 -1
- package/dist/src/schemas/leader.cjs.map +1 -1
- package/dist/src/schemas/leader.d.mts +3 -3
- package/dist/src/schemas/leader.d.mts.map +1 -1
- package/dist/src/schemas/leader.mjs.map +1 -1
- package/dist/src/schemas/mcpBundle.d.mts +3 -3
- package/dist/src/schemas/mcpFacet.cjs.map +1 -1
- package/dist/src/schemas/mcpFacet.d.mts +22 -22
- package/dist/src/schemas/mcpFacet.d.mts.map +1 -1
- package/dist/src/schemas/mcpFacet.mjs.map +1 -1
- package/dist/src/schemas/mcpProjection.cjs +41 -41
- package/dist/src/schemas/mcpProjection.cjs.map +1 -1
- package/dist/src/schemas/mcpProjection.d.mts +31 -30
- package/dist/src/schemas/mcpProjection.d.mts.map +1 -1
- package/dist/src/schemas/mcpProjection.mjs +29 -29
- package/dist/src/schemas/mcpProjection.mjs.map +1 -1
- package/dist/src/schemas/mcpSession.cjs +23 -23
- package/dist/src/schemas/mcpSession.cjs.map +1 -1
- package/dist/src/schemas/mcpSession.d.mts +12 -12
- package/dist/src/schemas/mcpSession.d.mts.map +1 -1
- package/dist/src/schemas/mcpSession.mjs +18 -18
- package/dist/src/schemas/mcpSession.mjs.map +1 -1
- package/dist/src/schemas/mcpStatus.cjs +5 -5
- package/dist/src/schemas/mcpStatus.cjs.map +1 -1
- package/dist/src/schemas/mcpStatus.d.mts +4 -4
- package/dist/src/schemas/mcpStatus.d.mts.map +1 -1
- package/dist/src/schemas/mcpStatus.mjs +4 -4
- package/dist/src/schemas/mcpStatus.mjs.map +1 -1
- package/dist/src/schemas/mcpToolResolver.cjs +9 -9
- package/dist/src/schemas/mcpToolResolver.cjs.map +1 -1
- package/dist/src/schemas/mcpToolResolver.d.mts +7 -7
- package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -1
- package/dist/src/schemas/mcpToolResolver.mjs +7 -7
- package/dist/src/schemas/mcpToolResolver.mjs.map +1 -1
- package/dist/src/schemas/narration.cjs +9 -9
- package/dist/src/schemas/narration.cjs.map +1 -1
- package/dist/src/schemas/narration.d.mts +5 -5
- package/dist/src/schemas/narration.d.mts.map +1 -1
- package/dist/src/schemas/narration.mjs +7 -7
- package/dist/src/schemas/narration.mjs.map +1 -1
- package/dist/src/schemas/notification.cjs +45 -45
- package/dist/src/schemas/notification.cjs.map +1 -1
- package/dist/src/schemas/notification.d.mts +22 -22
- package/dist/src/schemas/notification.d.mts.map +1 -1
- package/dist/src/schemas/notification.mjs +31 -31
- package/dist/src/schemas/notification.mjs.map +1 -1
- package/dist/src/schemas/packageApi.cjs +28 -28
- package/dist/src/schemas/packageApi.cjs.map +1 -1
- package/dist/src/schemas/packageApi.d.mts +91 -65
- package/dist/src/schemas/packageApi.d.mts.map +1 -1
- package/dist/src/schemas/packageApi.mjs +18 -18
- package/dist/src/schemas/packageApi.mjs.map +1 -1
- package/dist/src/schemas/platform.cjs +34 -0
- package/dist/src/schemas/platform.cjs.map +1 -0
- package/dist/src/schemas/platform.d.mts +75 -0
- package/dist/src/schemas/platform.d.mts.map +1 -0
- package/dist/src/schemas/platform.mjs +27 -0
- package/dist/src/schemas/platform.mjs.map +1 -0
- package/dist/src/schemas/pluginContributions.cjs.map +1 -1
- package/dist/src/schemas/pluginContributions.d.mts +12 -12
- package/dist/src/schemas/pluginContributions.d.mts.map +1 -1
- package/dist/src/schemas/pluginContributions.mjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.cjs +24 -27
- package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.d.mts +21 -21
- package/dist/src/schemas/pluginProtocol.d.mts.map +1 -1
- package/dist/src/schemas/pluginProtocol.mjs +18 -20
- package/dist/src/schemas/pluginProtocol.mjs.map +1 -1
- package/dist/src/schemas/profileIdentity.cjs +2 -2
- package/dist/src/schemas/profileIdentity.cjs.map +1 -1
- package/dist/src/schemas/profileIdentity.d.mts +1 -1
- package/dist/src/schemas/profileIdentity.mjs +2 -2
- package/dist/src/schemas/profileIdentity.mjs.map +1 -1
- package/dist/src/schemas/protocolChannelsContract.cjs +27 -0
- package/dist/src/schemas/protocolChannelsContract.cjs.map +1 -0
- package/dist/src/schemas/protocolChannelsContract.d.mts +37 -0
- package/dist/src/schemas/protocolChannelsContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolChannelsContract.mjs +25 -0
- package/dist/src/schemas/protocolChannelsContract.mjs.map +1 -0
- package/dist/src/schemas/protocolContracts.cjs +168 -0
- package/dist/src/schemas/protocolContracts.cjs.map +1 -0
- package/dist/src/schemas/protocolContracts.d.mts +69 -0
- package/dist/src/schemas/protocolContracts.d.mts.map +1 -0
- package/dist/src/schemas/protocolContracts.mjs +164 -0
- package/dist/src/schemas/protocolContracts.mjs.map +1 -0
- package/dist/src/schemas/protocolHubContract.cjs +51 -0
- package/dist/src/schemas/protocolHubContract.cjs.map +1 -0
- package/dist/src/schemas/protocolHubContract.d.mts +218 -0
- package/dist/src/schemas/protocolHubContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolHubContract.mjs +49 -0
- package/dist/src/schemas/protocolHubContract.mjs.map +1 -0
- package/dist/src/schemas/protocolSessionContract.cjs +22 -0
- package/dist/src/schemas/protocolSessionContract.cjs.map +1 -0
- package/dist/src/schemas/protocolSessionContract.d.mts +324 -0
- package/dist/src/schemas/protocolSessionContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolSessionContract.mjs +22 -0
- package/dist/src/schemas/protocolSessionContract.mjs.map +1 -0
- package/dist/src/schemas/protocolThreadContract.cjs +21 -0
- package/dist/src/schemas/protocolThreadContract.cjs.map +1 -0
- package/dist/src/schemas/protocolThreadContract.d.mts +29 -0
- package/dist/src/schemas/protocolThreadContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolThreadContract.mjs +20 -0
- package/dist/src/schemas/protocolThreadContract.mjs.map +1 -0
- package/dist/src/schemas/readiness.cjs +36 -36
- package/dist/src/schemas/readiness.cjs.map +1 -1
- package/dist/src/schemas/readiness.d.mts +37 -37
- package/dist/src/schemas/readiness.d.mts.map +1 -1
- package/dist/src/schemas/readiness.mjs +31 -31
- package/dist/src/schemas/readiness.mjs.map +1 -1
- package/dist/src/schemas/serverBundle.d.mts +5 -5
- package/dist/src/schemas/serverPlugin.cjs +103 -0
- package/dist/src/schemas/serverPlugin.cjs.map +1 -0
- package/dist/src/schemas/serverPlugin.d.mts +176 -0
- package/dist/src/schemas/serverPlugin.d.mts.map +1 -0
- package/dist/src/schemas/serverPlugin.mjs +95 -0
- package/dist/src/schemas/serverPlugin.mjs.map +1 -0
- package/dist/src/schemas/serverScope.cjs +37 -0
- package/dist/src/schemas/serverScope.cjs.map +1 -0
- package/dist/src/schemas/serverScope.d.mts +77 -0
- package/dist/src/schemas/serverScope.d.mts.map +1 -0
- package/dist/src/schemas/serverScope.mjs +33 -0
- package/dist/src/schemas/serverScope.mjs.map +1 -0
- package/dist/src/schemas/sessionApiContracts.cjs +320 -0
- package/dist/src/schemas/sessionApiContracts.cjs.map +1 -0
- package/dist/src/schemas/sessionApiContracts.mjs +318 -0
- package/dist/src/schemas/sessionApiContracts.mjs.map +1 -0
- package/dist/src/schemas/sessionProtocol.cjs +20 -13
- package/dist/src/schemas/sessionProtocol.cjs.map +1 -1
- package/dist/src/schemas/sessionProtocol.d.mts +37 -54
- package/dist/src/schemas/sessionProtocol.d.mts.map +1 -1
- package/dist/src/schemas/sessionProtocol.mjs +17 -8
- package/dist/src/schemas/sessionProtocol.mjs.map +1 -1
- package/dist/src/schemas/skills.cjs +16 -16
- package/dist/src/schemas/skills.cjs.map +1 -1
- package/dist/src/schemas/skills.d.mts +7 -7
- package/dist/src/schemas/skills.d.mts.map +1 -1
- package/dist/src/schemas/skills.mjs +12 -12
- package/dist/src/schemas/skills.mjs.map +1 -1
- package/dist/src/schemas/toolOverrides.cjs +9 -9
- package/dist/src/schemas/toolOverrides.cjs.map +1 -1
- package/dist/src/schemas/toolOverrides.d.mts +8 -8
- package/dist/src/schemas/toolOverrides.d.mts.map +1 -1
- package/dist/src/schemas/toolOverrides.mjs +7 -7
- package/dist/src/schemas/toolOverrides.mjs.map +1 -1
- package/dist/src/schemas/toolSurface.cjs +9 -9
- package/dist/src/schemas/toolSurface.cjs.map +1 -1
- package/dist/src/schemas/toolSurface.d.mts +13 -13
- package/dist/src/schemas/toolSurface.d.mts.map +1 -1
- package/dist/src/schemas/toolSurface.mjs +7 -7
- package/dist/src/schemas/toolSurface.mjs.map +1 -1
- package/dist/src/schemas/uiHub.cjs +9 -9
- package/dist/src/schemas/uiHub.cjs.map +1 -1
- package/dist/src/schemas/uiHub.d.mts +12 -12
- package/dist/src/schemas/uiHub.d.mts.map +1 -1
- package/dist/src/schemas/uiHub.mjs +7 -7
- package/dist/src/schemas/uiHub.mjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.cjs +691 -775
- package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.d.mts +5 -1
- package/dist/src/server/directHarnessRuntime.d.mts.map +1 -0
- package/dist/src/server/directHarnessRuntime.mjs +671 -754
- package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
- package/dist/src/server/largeFrameLink.cjs +47 -0
- package/dist/src/server/largeFrameLink.cjs.map +1 -0
- package/dist/src/server/largeFrameLink.mjs +47 -0
- package/dist/src/server/largeFrameLink.mjs.map +1 -0
- package/dist/src/server/liveImport.cjs +1 -1
- package/dist/src/server/liveImport.cjs.map +1 -1
- package/dist/src/server/liveImport.d.mts +1 -1
- package/dist/src/server/liveImport.mjs +1 -1
- package/dist/src/server/liveImport.mjs.map +1 -1
- package/dist/src/server/mcpBundleLoader.cjs.map +1 -1
- package/dist/src/server/mcpBundleLoader.d.mts +6 -6
- package/dist/src/server/mcpBundleLoader.d.mts.map +1 -1
- package/dist/src/server/mcpBundleLoader.mjs.map +1 -1
- package/dist/src/server/serverPackages.cjs +60 -0
- package/dist/src/server/serverPackages.cjs.map +1 -0
- package/dist/src/server/serverPackages.d.mts +44 -0
- package/dist/src/server/serverPackages.d.mts.map +1 -0
- package/dist/src/server/serverPackages.mjs +59 -0
- package/dist/src/server/serverPackages.mjs.map +1 -0
- package/dist/src/server/serverScope.cjs +510 -0
- package/dist/src/server/serverScope.cjs.map +1 -0
- package/dist/src/server/serverScope.d.mts +123 -0
- package/dist/src/server/serverScope.d.mts.map +1 -0
- package/dist/src/server/serverScope.mjs +510 -0
- package/dist/src/server/serverScope.mjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.cjs +3 -3
- package/dist/src/server/sessionMcpHandler.cjs.map +1 -1
- package/dist/src/server/sessionMcpHandler.mjs +4 -4
- package/dist/src/server/sessionMcpHandler.mjs.map +1 -1
- package/dist/src/server/sessionMcpRoutes.cjs +2 -1
- package/dist/src/server/sessionMcpRoutes.cjs.map +1 -1
- package/dist/src/server/sessionMcpRoutes.mjs +2 -1
- package/dist/src/server/sessionMcpRoutes.mjs.map +1 -1
- package/dist/src/server/threadJournals.cjs +38 -107
- package/dist/src/server/threadJournals.cjs.map +1 -1
- package/dist/src/server/threadJournals.mjs +38 -104
- package/dist/src/server/threadJournals.mjs.map +1 -1
- package/dist/src/services/apiSurfaceAssert/index.cjs +1 -1
- package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -1
- package/dist/src/services/apiSurfaceAssert/index.d.mts +6 -6
- package/dist/src/services/apiSurfaceAssert/index.mjs +1 -1
- package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -1
- package/dist/src/services/chatgptAuth/index.cjs +1 -220
- package/dist/src/services/chatgptAuth/index.cjs.map +1 -1
- package/dist/src/services/chatgptAuth/index.d.mts +0 -18
- package/dist/src/services/chatgptAuth/index.d.mts.map +1 -1
- package/dist/src/services/chatgptAuth/index.mjs +1 -217
- package/dist/src/services/chatgptAuth/index.mjs.map +1 -1
- package/dist/src/services/chatgptImages/index.cjs +1 -1
- package/dist/src/services/chatgptImages/index.cjs.map +1 -1
- package/dist/src/services/chatgptImages/index.mjs +1 -1
- package/dist/src/services/chatgptImages/index.mjs.map +1 -1
- package/dist/src/services/chatgptLogin/index.cjs +230 -0
- package/dist/src/services/chatgptLogin/index.cjs.map +1 -0
- package/dist/src/services/chatgptLogin/index.d.mts +21 -0
- package/dist/src/services/chatgptLogin/index.d.mts.map +1 -0
- package/dist/src/services/chatgptLogin/index.mjs +227 -0
- package/dist/src/services/chatgptLogin/index.mjs.map +1 -0
- package/dist/src/services/chatgptWebSearch/index.cjs +1 -1
- package/dist/src/services/chatgptWebSearch/index.cjs.map +1 -1
- package/dist/src/services/chatgptWebSearch/index.mjs +1 -1
- package/dist/src/services/chatgptWebSearch/index.mjs.map +1 -1
- package/dist/src/services/contextContributions/index.cjs +8 -8
- package/dist/src/services/contextContributions/index.cjs.map +1 -1
- package/dist/src/services/contextContributions/index.d.mts +3 -3
- package/dist/src/services/contextContributions/index.d.mts.map +1 -1
- package/dist/src/services/contextContributions/index.mjs +8 -8
- package/dist/src/services/contextContributions/index.mjs.map +1 -1
- package/dist/src/services/devProxyStore/devProxyRecords.cjs +59 -0
- package/dist/src/services/devProxyStore/devProxyRecords.cjs.map +1 -0
- package/dist/src/services/devProxyStore/devProxyRecords.mjs +56 -0
- package/dist/src/services/devProxyStore/devProxyRecords.mjs.map +1 -0
- package/dist/src/services/devProxyStore/index.cjs +7 -101
- package/dist/src/services/devProxyStore/index.cjs.map +1 -1
- package/dist/src/services/devProxyStore/index.mjs +7 -101
- package/dist/src/services/devProxyStore/index.mjs.map +1 -1
- package/dist/src/services/devProxyStore/sync.cjs +66 -0
- package/dist/src/services/devProxyStore/sync.cjs.map +1 -0
- package/dist/src/services/devProxyStore/sync.mjs +63 -0
- package/dist/src/services/devProxyStore/sync.mjs.map +1 -0
- package/dist/src/services/durableNavigation/docs.cjs +15 -0
- package/dist/src/services/durableNavigation/docs.cjs.map +1 -0
- package/dist/src/services/durableNavigation/docs.mjs +16 -0
- package/dist/src/services/durableNavigation/docs.mjs.map +1 -0
- package/dist/src/services/durableNavigation/index.cjs +3 -18
- package/dist/src/services/durableNavigation/index.cjs.map +1 -1
- package/dist/src/services/durableNavigation/index.mjs +2 -17
- package/dist/src/services/durableNavigation/index.mjs.map +1 -1
- package/dist/src/services/durableQueue/docs.cjs +12 -0
- package/dist/src/services/durableQueue/docs.cjs.map +1 -0
- package/dist/src/services/durableQueue/docs.mjs +13 -0
- package/dist/src/services/durableQueue/docs.mjs.map +1 -0
- package/dist/src/services/durableQueue/index.cjs +151 -0
- package/dist/src/services/durableQueue/index.cjs.map +1 -0
- package/dist/src/services/durableQueue/index.mjs +149 -0
- package/dist/src/services/durableQueue/index.mjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/docs.cjs +11 -0
- package/dist/src/services/durableRequestReceipts/docs.cjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/docs.mjs +12 -0
- package/dist/src/services/durableRequestReceipts/docs.mjs.map +1 -0
- package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.cjs +10 -16
- package/dist/src/services/durableRequestReceipts/index.cjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/index.d.mts +12 -0
- package/dist/src/services/durableRequestReceipts/index.d.mts.map +1 -0
- package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.mjs +7 -13
- package/dist/src/services/durableRequestReceipts/index.mjs.map +1 -0
- package/dist/src/services/durableSession/docs.cjs +65 -0
- package/dist/src/services/durableSession/docs.cjs.map +1 -0
- package/dist/src/services/durableSession/docs.d.mts +17 -0
- package/dist/src/services/durableSession/docs.d.mts.map +1 -0
- package/dist/src/services/durableSession/docs.mjs +60 -0
- package/dist/src/services/durableSession/docs.mjs.map +1 -0
- package/dist/src/services/durableSession/index.cjs +21 -0
- package/dist/src/services/durableSession/index.cjs.map +1 -0
- package/dist/src/services/durableSession/index.d.mts +13 -0
- package/dist/src/services/durableSession/index.d.mts.map +1 -0
- package/dist/src/services/durableSession/index.mjs +20 -0
- package/dist/src/services/durableSession/index.mjs.map +1 -0
- package/dist/src/services/durableSubagents/docs.cjs +15 -0
- package/dist/src/services/durableSubagents/docs.cjs.map +1 -0
- package/dist/src/services/durableSubagents/docs.mjs +16 -0
- package/dist/src/services/durableSubagents/docs.mjs.map +1 -0
- package/dist/src/services/durableSubagents/extension.cjs +11 -0
- package/dist/src/services/durableSubagents/extension.cjs.map +1 -0
- package/dist/src/services/durableSubagents/extension.mjs +12 -0
- package/dist/src/services/durableSubagents/extension.mjs.map +1 -0
- package/dist/src/services/durableSubagents/index.cjs +95 -0
- package/dist/src/services/durableSubagents/index.cjs.map +1 -0
- package/dist/src/services/durableSubagents/index.mjs +90 -0
- package/dist/src/services/durableSubagents/index.mjs.map +1 -0
- package/dist/src/services/durableSubagents/tasks.cjs +25 -0
- package/dist/src/services/durableSubagents/tasks.cjs.map +1 -0
- package/dist/src/services/durableSubagents/tasks.mjs +26 -0
- package/dist/src/services/durableSubagents/tasks.mjs.map +1 -0
- package/dist/src/services/headlessClient/index.cjs +20 -13
- package/dist/src/services/headlessClient/index.cjs.map +1 -1
- package/dist/src/services/headlessClient/index.mjs +21 -14
- package/dist/src/services/headlessClient/index.mjs.map +1 -1
- package/dist/src/services/historyOwnership/type.d.mts +15 -0
- package/dist/src/services/historyOwnership/type.d.mts.map +1 -0
- package/dist/src/services/hubChannelHarness/index.cjs +2 -2
- package/dist/src/services/hubChannelHarness/index.cjs.map +1 -1
- package/dist/src/services/hubChannelHarness/index.d.mts +8 -8
- package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -1
- package/dist/src/services/hubChannelHarness/index.mjs +2 -2
- package/dist/src/services/hubChannelHarness/index.mjs.map +1 -1
- package/dist/src/services/json/core.cjs +30 -0
- package/dist/src/services/json/core.cjs.map +1 -0
- package/dist/src/services/json/core.d.mts +21 -0
- package/dist/src/services/json/core.d.mts.map +1 -0
- package/dist/src/services/json/core.mjs +26 -0
- package/dist/src/services/json/core.mjs.map +1 -0
- package/dist/src/services/json/sync.cjs +48 -0
- package/dist/src/services/json/sync.cjs.map +1 -0
- package/dist/src/services/json/sync.d.mts +22 -0
- package/dist/src/services/json/sync.d.mts.map +1 -0
- package/dist/src/services/json/sync.mjs +43 -0
- package/dist/src/services/json/sync.mjs.map +1 -0
- package/dist/src/services/kernel/index.cjs +2 -2
- package/dist/src/services/kernel/index.cjs.map +1 -1
- package/dist/src/services/kernel/index.d.mts +3 -3
- package/dist/src/services/kernel/index.d.mts.map +1 -1
- package/dist/src/services/kernel/index.mjs +2 -2
- package/dist/src/services/kernel/index.mjs.map +1 -1
- package/dist/src/services/nativeChildTools/index.cjs +16 -0
- package/dist/src/services/nativeChildTools/index.cjs.map +1 -0
- package/dist/src/services/nativeChildTools/index.mjs +16 -0
- package/dist/src/services/nativeChildTools/index.mjs.map +1 -0
- package/dist/src/services/nodeHost/index.cjs +30 -0
- package/dist/src/services/nodeHost/index.cjs.map +1 -0
- package/dist/src/services/nodeHost/index.d.mts +16 -0
- package/dist/src/services/nodeHost/index.d.mts.map +1 -0
- package/dist/src/services/nodeHost/index.mjs +27 -0
- package/dist/src/services/nodeHost/index.mjs.map +1 -0
- package/dist/src/services/nodeModelDependencies/index.cjs +89 -0
- package/dist/src/services/nodeModelDependencies/index.cjs.map +1 -0
- package/dist/src/services/nodeModelDependencies/index.mjs +86 -0
- package/dist/src/services/nodeModelDependencies/index.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.cjs +6 -128
- package/dist/src/services/openSessionRegistry/index.cjs.map +1 -1
- package/dist/src/services/openSessionRegistry/index.d.mts +5 -36
- package/dist/src/services/openSessionRegistry/index.mjs +6 -128
- package/dist/src/services/openSessionRegistry/index.mjs.map +1 -1
- package/dist/src/services/openSessionRegistry/openSessionRecords.cjs +87 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts +30 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.mjs +81 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.cjs +71 -0
- package/dist/src/services/openSessionRegistry/sync.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.d.mts +14 -0
- package/dist/src/services/openSessionRegistry/sync.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.mjs +68 -0
- package/dist/src/services/openSessionRegistry/sync.mjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.cjs +1 -1
- package/dist/src/services/packageApiHarness/index.cjs.map +1 -1
- package/dist/src/services/packageApiHarness/index.d.mts +6 -6
- package/dist/src/services/packageApiHarness/index.d.mts.map +1 -1
- package/dist/src/services/packageApiHarness/index.mjs +2 -2
- package/dist/src/services/packageApiHarness/index.mjs.map +1 -1
- package/dist/src/services/piArgs/index.cjs +53 -0
- package/dist/src/services/piArgs/index.cjs.map +1 -0
- package/dist/src/services/piArgs/index.d.mts +6 -0
- package/dist/src/services/piArgs/index.d.mts.map +1 -0
- package/dist/src/services/piArgs/index.mjs +53 -0
- package/dist/src/services/piArgs/index.mjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.cjs +47 -39
- package/dist/src/services/piExtensionHost/index.cjs.map +1 -1
- package/dist/src/services/piExtensionHost/index.d.mts +83 -0
- package/dist/src/services/piExtensionHost/index.d.mts.map +1 -0
- package/dist/src/services/piExtensionHost/index.mjs +47 -38
- package/dist/src/services/piExtensionHost/index.mjs.map +1 -1
- package/dist/src/services/piHelpTools/index.cjs +5 -5
- package/dist/src/services/piHelpTools/index.cjs.map +1 -1
- package/dist/src/services/piHelpTools/index.d.mts.map +1 -1
- package/dist/src/services/piHelpTools/index.mjs +7 -7
- package/dist/src/services/piHelpTools/index.mjs.map +1 -1
- package/dist/src/services/piMessages/index.cjs +106 -0
- package/dist/src/services/piMessages/index.cjs.map +1 -0
- package/dist/src/services/piMessages/index.mjs +105 -0
- package/dist/src/services/piMessages/index.mjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.cjs +4 -4
- package/dist/src/services/piSessionEntries/index.cjs.map +1 -1
- package/dist/src/services/piSessionEntries/index.mjs +3 -3
- package/dist/src/services/piSessionEntries/index.mjs.map +1 -1
- package/dist/src/services/piSettings/core.cjs +308 -0
- package/dist/src/services/piSettings/core.cjs.map +1 -0
- package/dist/src/services/piSettings/core.d.mts +102 -0
- package/dist/src/services/piSettings/core.d.mts.map +1 -0
- package/dist/src/services/piSettings/core.mjs +276 -0
- package/dist/src/services/piSettings/core.mjs.map +1 -0
- package/dist/src/services/piSettings/sync.cjs +119 -0
- package/dist/src/services/piSettings/sync.cjs.map +1 -0
- package/dist/src/services/piSettings/sync.d.mts +44 -0
- package/dist/src/services/piSettings/sync.d.mts.map +1 -0
- package/dist/src/services/piSettings/sync.mjs +110 -0
- package/dist/src/services/piSettings/sync.mjs.map +1 -0
- package/dist/src/services/piSummary/index.cjs +7 -0
- package/dist/src/services/piSummary/index.cjs.map +1 -0
- package/dist/src/services/piSummary/index.mjs +7 -0
- package/dist/src/services/piSummary/index.mjs.map +1 -0
- package/dist/src/services/platformFiles/index.cjs +44 -0
- package/dist/src/services/platformFiles/index.cjs.map +1 -0
- package/dist/src/services/platformFiles/index.d.mts +16 -0
- package/dist/src/services/platformFiles/index.d.mts.map +1 -0
- package/dist/src/services/platformFiles/index.mjs +39 -0
- package/dist/src/services/platformFiles/index.mjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.cjs +19 -13
- package/dist/src/services/pluginLifecycle/index.cjs.map +1 -1
- package/dist/src/services/pluginLifecycle/index.d.mts +2 -0
- package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -1
- package/dist/src/services/pluginLifecycle/index.mjs +19 -14
- package/dist/src/services/pluginLifecycle/index.mjs.map +1 -1
- package/dist/src/services/poPackage/core.cjs +73 -0
- package/dist/src/services/poPackage/core.cjs.map +1 -0
- package/dist/src/services/poPackage/core.d.mts +32 -0
- package/dist/src/services/poPackage/core.d.mts.map +1 -0
- package/dist/src/services/poPackage/core.mjs +66 -0
- package/dist/src/services/poPackage/core.mjs.map +1 -0
- package/dist/src/services/poPackage/sync.cjs +55 -0
- package/dist/src/services/poPackage/sync.cjs.map +1 -0
- package/dist/src/services/poPackage/sync.d.mts +21 -0
- package/dist/src/services/poPackage/sync.d.mts.map +1 -0
- package/dist/src/services/poPackage/sync.mjs +50 -0
- package/dist/src/services/poPackage/sync.mjs.map +1 -0
- package/dist/src/services/providerAuth/index.cjs +11 -7
- package/dist/src/services/providerAuth/index.cjs.map +1 -1
- package/dist/src/services/providerAuth/index.mjs +11 -7
- package/dist/src/services/providerAuth/index.mjs.map +1 -1
- package/dist/src/services/publicFileShares/index.cjs +1 -1
- package/dist/src/services/publicFileShares/index.cjs.map +1 -1
- package/dist/src/services/publicFileShares/index.d.mts +2 -2
- package/dist/src/services/publicFileShares/index.mjs +2 -2
- package/dist/src/services/publicFileShares/index.mjs.map +1 -1
- package/dist/src/services/remoteAccess/index.d.mts +1 -0
- package/dist/src/services/remoteAccess/index.d.mts.map +1 -1
- package/dist/src/services/remoteAccessStore/index.cjs +8 -190
- package/dist/src/services/remoteAccessStore/index.cjs.map +1 -1
- package/dist/src/services/remoteAccessStore/index.d.mts +2 -0
- package/dist/src/services/remoteAccessStore/index.mjs +7 -187
- package/dist/src/services/remoteAccessStore/index.mjs.map +1 -1
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs +98 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs +88 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs.map +1 -0
- package/dist/src/services/remoteAccessStore/sync.cjs +111 -0
- package/dist/src/services/remoteAccessStore/sync.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/sync.mjs +108 -0
- package/dist/src/services/remoteAccessStore/sync.mjs.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.cjs +23 -0
- package/dist/src/services/runtimeIdentity/sync.cjs.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.d.mts +9 -0
- package/dist/src/services/runtimeIdentity/sync.d.mts.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.mjs +20 -0
- package/dist/src/services/runtimeIdentity/sync.mjs.map +1 -0
- package/dist/src/services/serialRunner/index.cjs +25 -0
- package/dist/src/services/serialRunner/index.cjs.map +1 -0
- package/dist/src/services/serialRunner/index.d.mts +10 -0
- package/dist/src/services/serialRunner/index.d.mts.map +1 -0
- package/dist/src/services/serialRunner/index.mjs +25 -0
- package/dist/src/services/serialRunner/index.mjs.map +1 -0
- package/dist/src/services/{serverFacet → serverHost}/index.cjs +5 -5
- package/dist/src/services/serverHost/index.cjs.map +1 -0
- package/dist/src/services/serverHost/index.d.mts +31 -0
- package/dist/src/services/serverHost/index.d.mts.map +1 -0
- package/dist/src/services/{serverFacet → serverHost}/index.mjs +5 -5
- package/dist/src/services/serverHost/index.mjs.map +1 -0
- package/dist/src/services/sessionAttachments/index.cjs +4 -3
- package/dist/src/services/sessionAttachments/index.cjs.map +1 -1
- package/dist/src/services/sessionAttachments/index.d.mts +1 -6
- package/dist/src/services/sessionAttachments/index.d.mts.map +1 -1
- package/dist/src/services/sessionAttachments/index.mjs +3 -2
- package/dist/src/services/sessionAttachments/index.mjs.map +1 -1
- package/dist/src/services/sessionAttachments/type.d.mts +9 -0
- package/dist/src/services/sessionAttachments/type.d.mts.map +1 -0
- package/dist/src/services/sessionFiles/index.cjs +96 -0
- package/dist/src/services/sessionFiles/index.cjs.map +1 -0
- package/dist/src/services/sessionFiles/index.d.mts +33 -0
- package/dist/src/services/sessionFiles/index.d.mts.map +1 -0
- package/dist/src/services/sessionFiles/index.mjs +89 -0
- package/dist/src/services/sessionFiles/index.mjs.map +1 -0
- package/dist/src/services/sessionFiles/sessionDirectory.cjs +66 -0
- package/dist/src/services/sessionFiles/sessionDirectory.cjs.map +1 -0
- package/dist/src/services/sessionFiles/sessionDirectory.mjs +62 -0
- package/dist/src/services/sessionFiles/sessionDirectory.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.cjs +31 -33
- package/dist/src/services/sessionGitStatus/index.cjs.map +1 -1
- package/dist/src/services/sessionGitStatus/index.mjs +31 -33
- package/dist/src/services/sessionGitStatus/index.mjs.map +1 -1
- package/dist/src/services/sessionPresentation/index.cjs +3 -27
- package/dist/src/services/sessionPresentation/index.cjs.map +1 -1
- package/dist/src/services/sessionPresentation/index.mjs +3 -27
- package/dist/src/services/sessionPresentation/index.mjs.map +1 -1
- package/dist/src/services/skillPrompt/index.cjs +11 -0
- package/dist/src/services/skillPrompt/index.cjs.map +1 -0
- package/dist/src/services/skillPrompt/index.mjs +11 -0
- package/dist/src/services/skillPrompt/index.mjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs +44 -30
- package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -1
- package/dist/src/services/sqliteSessionHistory/index.d.mts +7 -4
- package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -1
- package/dist/src/services/sqliteSessionHistory/index.mjs +43 -28
- package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.cjs +21 -45
- package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.d.mts +3 -2
- package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.mjs +16 -38
- package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -1
- package/dist/src/services/testMode/index.cjs +162 -0
- package/dist/src/services/testMode/index.cjs.map +1 -0
- package/dist/src/services/testMode/index.d.mts +17 -0
- package/dist/src/services/testMode/index.d.mts.map +1 -0
- package/dist/src/services/testMode/index.mjs +155 -0
- package/dist/src/services/testMode/index.mjs.map +1 -0
- package/dist/src/services/toolOverrides/index.cjs +6 -6
- package/dist/src/services/toolOverrides/index.cjs.map +1 -1
- package/dist/src/services/toolOverrides/index.d.mts +3 -3
- package/dist/src/services/toolOverrides/index.d.mts.map +1 -1
- package/dist/src/services/toolOverrides/index.mjs +6 -6
- package/dist/src/services/toolOverrides/index.mjs.map +1 -1
- package/dist/src/services/toolPrompt/index.d.mts +17 -0
- package/dist/src/services/toolPrompt/index.d.mts.map +1 -0
- package/dist/src/services/toolSurface/index.cjs +3 -3
- package/dist/src/services/toolSurface/index.cjs.map +1 -1
- package/dist/src/services/toolSurface/index.d.mts +3 -3
- package/dist/src/services/toolSurface/index.d.mts.map +1 -1
- package/dist/src/services/toolSurface/index.mjs +4 -4
- package/dist/src/services/toolSurface/index.mjs.map +1 -1
- package/dist/src/services/traceContext/index.cjs.map +1 -1
- package/dist/src/services/traceContext/index.mjs.map +1 -1
- package/dist/src/services/transcriptPages/index.cjs +159 -33
- package/dist/src/services/transcriptPages/index.cjs.map +1 -1
- package/dist/src/services/transcriptPages/index.mjs +158 -34
- package/dist/src/services/transcriptPages/index.mjs.map +1 -1
- package/dist/src/services/voiceToolsContract/index.cjs +7 -7
- package/dist/src/services/voiceToolsContract/index.cjs.map +1 -1
- package/dist/src/services/voiceToolsContract/index.d.mts +4 -4
- package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -1
- package/dist/src/services/voiceToolsContract/index.mjs +7 -7
- package/dist/src/services/voiceToolsContract/index.mjs.map +1 -1
- package/dist/src/services/workspaceRegistry/index.cjs +9 -179
- package/dist/src/services/workspaceRegistry/index.cjs.map +1 -1
- package/dist/src/services/workspaceRegistry/index.d.mts +5 -47
- package/dist/src/services/workspaceRegistry/index.mjs +7 -176
- package/dist/src/services/workspaceRegistry/index.mjs.map +1 -1
- package/dist/src/services/workspaceRegistry/sync.cjs +148 -0
- package/dist/src/services/workspaceRegistry/sync.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/sync.d.mts +34 -0
- package/dist/src/services/workspaceRegistry/sync.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/sync.mjs +140 -0
- package/dist/src/services/workspaceRegistry/sync.mjs.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.cjs +114 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts +31 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.mjs +101 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.mjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +339 -202
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -1
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +16 -21
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -1
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +329 -191
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -1
- package/dist/src/systems/child/services/childSession/index.cjs +94 -20
- package/dist/src/systems/child/services/childSession/index.cjs.map +1 -1
- package/dist/src/systems/child/services/childSession/index.d.mts +12 -3
- package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -1
- package/dist/src/systems/child/services/childSession/index.mjs +94 -20
- package/dist/src/systems/child/services/childSession/index.mjs.map +1 -1
- package/dist/src/systems/child/types/childSession.cjs +33 -13
- package/dist/src/systems/child/types/childSession.cjs.map +1 -1
- package/dist/src/systems/child/types/childSession.d.mts +143 -80
- package/dist/src/systems/child/types/childSession.d.mts.map +1 -1
- package/dist/src/systems/child/types/childSession.mjs +24 -9
- package/dist/src/systems/child/types/childSession.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.cjs +30 -27
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.d.mts +22 -22
- package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.mjs +33 -30
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +248 -229
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +4 -5
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +239 -219
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
- package/dist/src/systems/main/types/headlessHost.d.mts +16 -14
- package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -1
- package/dist/src/testing/pi/testHost.cjs +2 -2
- package/dist/src/testing/pi/testHost.cjs.map +1 -1
- package/dist/src/testing/pi/testHost.d.mts +3 -2
- package/dist/src/testing/pi/testHost.mjs +3 -3
- package/dist/src/testing/pi/testHost.mjs.map +1 -1
- package/dist/src/types/config.d.mts +1 -1
- package/dist/src/types/config.d.mts.map +1 -1
- package/dist/src/types/kernel.d.mts +3 -3
- package/dist/src/types/server/directHarnessRuntime.d.mts +54 -25
- package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -1
- package/dist/src/types/server/sessionToolSurface.d.mts +9 -9
- package/dist/src/web/services/apiClient/index.d.mts +1 -0
- package/dist/src/web/services/apiPaths/index.cjs.map +1 -1
- package/dist/src/web/services/apiPaths/index.d.mts +1 -1
- package/dist/src/web/services/apiPaths/index.mjs.map +1 -1
- package/dist/src/web/services/mcpWidget.cjs.map +1 -1
- package/dist/src/web/services/mcpWidget.d.mts +2 -2
- package/dist/src/web/services/mcpWidget.d.mts.map +1 -1
- package/dist/src/web/services/mcpWidget.mjs.map +1 -1
- package/dist/src/web/services/testing/templateRail.cjs +3 -0
- package/dist/src/web/services/testing/templateRail.cjs.map +1 -1
- package/dist/src/web/services/testing/templateRail.mjs +3 -0
- package/dist/src/web/services/testing/templateRail.mjs.map +1 -1
- package/dist/src/web/types/mcpWidget.d.mts +1 -1
- package/dist/src/web/types/nativeTemplate.d.mts +1 -1
- package/dist/src/web/types/nativeTemplate.d.mts.map +1 -1
- package/dist/src/web/types/template.d.mts +8 -0
- package/dist/src/web/types/template.d.mts.map +1 -1
- package/dist/src/web/types/webPlugin.d.mts +17 -5
- package/dist/src/web/types/webPlugin.d.mts.map +1 -1
- package/dist/testMode.cjs +4 -0
- package/dist/testMode.d.mts +2 -0
- package/dist/testMode.mjs +1 -0
- package/dist/testing.cjs +1 -1
- package/dist/testing.d.mts +2 -2
- package/dist/testing.mjs +2 -2
- package/dist/toolInventory.cjs.map +1 -1
- package/dist/toolInventory.mjs.map +1 -1
- package/dist/toolNames.mjs +1 -2
- package/dist/toolOverrides.cjs +4 -4
- package/dist/toolOverrides.d.mts +3 -3
- package/dist/toolOverrides.mjs +3 -3
- package/dist/toolSurface.cjs +4 -4
- package/dist/toolSurface.d.mts +3 -3
- package/dist/toolSurface.mjs +3 -3
- package/dist/transition.cjs +3 -3
- package/dist/transition.d.cjs +3 -3
- package/dist/transition.d.mts +2 -2
- package/dist/transition.mjs +1 -2
- package/dist/transitionClassifier.cjs.map +1 -1
- package/dist/transitionClassifier.d.mts +2 -2
- package/dist/transitionClassifier.d.mts.map +1 -1
- package/dist/transitionClassifier.mjs.map +1 -1
- package/dist/transitionCoordinator.cjs +3 -3
- package/dist/transitionCoordinator.cjs.map +1 -1
- package/dist/transitionCoordinator.d.mts +4 -4
- package/dist/transitionCoordinator.d.mts.map +1 -1
- package/dist/transitionCoordinator.mjs +3 -3
- package/dist/transitionCoordinator.mjs.map +1 -1
- package/dist/typesContextApi.d.mts +2 -1
- package/dist/typesContextApi.d.mts.map +1 -1
- package/dist/uiHub.cjs +3 -3
- package/dist/uiHub.d.mts +2 -2
- package/dist/uiHub.mjs +1 -2
- package/dist/voiceTools.cjs +5 -5
- package/dist/voiceTools.d.mts +3 -3
- package/dist/voiceTools.mjs +3 -3
- package/dist/web.cjs +8 -0
- package/dist/web.d.mts +3 -2
- package/dist/web.mjs +2 -1
- package/dist/webCompositions.cjs.map +1 -1
- package/dist/webCompositions.d.mts +7 -7
- package/dist/webCompositions.d.mts.map +1 -1
- package/dist/webCompositions.mjs.map +1 -1
- package/licenses/Codex-Apache-2.0.txt +201 -0
- package/package.json +58 -53
- package/dist/doomPackage.cjs +0 -61
- package/dist/doomPackage.cjs.map +0 -1
- package/dist/doomPackage.d.mts +0 -17
- package/dist/doomPackage.d.mts.map +0 -1
- package/dist/doomPackage.mjs +0 -54
- package/dist/doomPackage.mjs.map +0 -1
- package/dist/jsonlSessionRepo.cjs +0 -44
- package/dist/jsonlSessionRepo.cjs.map +0 -1
- package/dist/jsonlSessionRepo.d.mts +0 -7
- package/dist/jsonlSessionRepo.d.mts.map +0 -1
- package/dist/jsonlSessionRepo.mjs +0 -42
- package/dist/jsonlSessionRepo.mjs.map +0 -1
- package/dist/runtimeJson.cjs.map +0 -1
- package/dist/runtimeJson.d.mts.map +0 -1
- package/dist/runtimeJson.mjs.map +0 -1
- package/dist/runtimePiSettings.cjs.map +0 -1
- package/dist/runtimePiSettings.d.mts.map +0 -1
- package/dist/runtimePiSettings.mjs.map +0 -1
- package/dist/serverFacet.cjs +0 -34
- package/dist/serverFacet.d.mts +0 -10
- package/dist/serverFacet.mjs +0 -9
- package/dist/src/pi/piWebSocketListener.cjs +0 -115
- package/dist/src/pi/piWebSocketListener.cjs.map +0 -1
- package/dist/src/pi/piWebSocketListener.mjs +0 -115
- package/dist/src/pi/piWebSocketListener.mjs.map +0 -1
- package/dist/src/schemas/serverFacet.cjs +0 -111
- package/dist/src/schemas/serverFacet.cjs.map +0 -1
- package/dist/src/schemas/serverFacet.d.mts +0 -152
- package/dist/src/schemas/serverFacet.d.mts.map +0 -1
- package/dist/src/schemas/serverFacet.mjs +0 -101
- package/dist/src/schemas/serverFacet.mjs.map +0 -1
- package/dist/src/schemas/sessionUpdates.d.mts +0 -34
- package/dist/src/schemas/sessionUpdates.d.mts.map +0 -1
- package/dist/src/server/headlessProtocol.cjs +0 -382
- package/dist/src/server/headlessProtocol.cjs.map +0 -1
- package/dist/src/server/headlessProtocol.mjs +0 -382
- package/dist/src/server/headlessProtocol.mjs.map +0 -1
- package/dist/src/server/nativeChildTranscriptReader.cjs +0 -20
- package/dist/src/server/nativeChildTranscriptReader.cjs.map +0 -1
- package/dist/src/server/nativeChildTranscriptReader.mjs +0 -18
- package/dist/src/server/nativeChildTranscriptReader.mjs.map +0 -1
- package/dist/src/server/serverFacetLoader.cjs +0 -214
- package/dist/src/server/serverFacetLoader.cjs.map +0 -1
- package/dist/src/server/serverFacetLoader.d.mts +0 -72
- package/dist/src/server/serverFacetLoader.d.mts.map +0 -1
- package/dist/src/server/serverFacetLoader.mjs +0 -212
- package/dist/src/server/serverFacetLoader.mjs.map +0 -1
- package/dist/src/services/acpSessionUpdates/index.cjs +0 -129
- package/dist/src/services/acpSessionUpdates/index.cjs.map +0 -1
- package/dist/src/services/acpSessionUpdates/index.mjs +0 -129
- package/dist/src/services/acpSessionUpdates/index.mjs.map +0 -1
- package/dist/src/services/historyImport/index.cjs +0 -8
- package/dist/src/services/historyImport/index.cjs.map +0 -1
- package/dist/src/services/historyImport/index.d.mts +0 -68
- package/dist/src/services/historyImport/index.d.mts.map +0 -1
- package/dist/src/services/historyImport/index.mjs +0 -8
- package/dist/src/services/historyImport/index.mjs.map +0 -1
- package/dist/src/services/openSessionRegistry/index.d.mts.map +0 -1
- package/dist/src/services/requestReceipts/index.cjs.map +0 -1
- package/dist/src/services/requestReceipts/index.d.mts +0 -11
- package/dist/src/services/requestReceipts/index.d.mts.map +0 -1
- package/dist/src/services/requestReceipts/index.mjs.map +0 -1
- package/dist/src/services/rpcTranscript/index.cjs +0 -633
- package/dist/src/services/rpcTranscript/index.cjs.map +0 -1
- package/dist/src/services/rpcTranscript/index.d.mts +0 -50
- package/dist/src/services/rpcTranscript/index.d.mts.map +0 -1
- package/dist/src/services/rpcTranscript/index.mjs +0 -632
- package/dist/src/services/rpcTranscript/index.mjs.map +0 -1
- package/dist/src/services/serverFacet/index.cjs.map +0 -1
- package/dist/src/services/serverFacet/index.d.mts +0 -31
- package/dist/src/services/serverFacet/index.d.mts.map +0 -1
- package/dist/src/services/serverFacet/index.mjs.map +0 -1
- package/dist/src/services/workspaceRegistry/index.d.mts.map +0 -1
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +0 -28
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +0 -1
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +0 -25
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +0 -1
- package/dist/terminalPiChildSessionService.cjs +0 -324
- package/dist/terminalPiChildSessionService.cjs.map +0 -1
- package/dist/terminalPiChildSessionService.d.mts +0 -46
- package/dist/terminalPiChildSessionService.d.mts.map +0 -1
- package/dist/terminalPiChildSessionService.mjs +0 -318
- package/dist/terminalPiChildSessionService.mjs.map +0 -1
- package/dist/v3Export.cjs +0 -10
- package/dist/v3Export.cjs.map +0 -1
- package/dist/v3Export.d.mts +0 -35
- package/dist/v3Export.d.mts.map +0 -1
- package/dist/v3Export.mjs +0 -9
- package/dist/v3Export.mjs.map +0 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { nodeHost } from "../nodeHost/index.mjs";
|
|
2
|
+
import { poHomeDirectory } from "../piSettings/core.mjs";
|
|
3
|
+
import "../../../runtimePiSettings.mjs";
|
|
4
|
+
import "../../constants/remote.mjs";
|
|
5
|
+
import { DEFAULT_REMOTE_SETTINGS, parseRemoteAccessSettings } from "../remoteAccessSettings/index.mjs";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
const SETTINGS_FILE = "remote-access.json";
|
|
8
|
+
const CREDENTIALS_FILE = "credentials.json";
|
|
9
|
+
const TRUSTED_DEVICES_FILE = "trusted-devices.json";
|
|
10
|
+
const TRUSTED_DEVICE_PLATFORMS = /* @__PURE__ */ new Set(["ios", "android"]);
|
|
11
|
+
const STORED_ID = /^[A-Za-z0-9_-]{1,64}$/u;
|
|
12
|
+
const STORED_KEY = /^[A-Za-z0-9_-]{1,512}$/u;
|
|
13
|
+
const MAX_STORED_LABEL = 200;
|
|
14
|
+
function defaultRemoteStateDir(homeDir = nodeHost.homeDirectory()) {
|
|
15
|
+
return path.join(poHomeDirectory(homeDir), "web");
|
|
16
|
+
}
|
|
17
|
+
/** Whether a file mode lets another account read the file. */
|
|
18
|
+
function isLooseMode(mode) {
|
|
19
|
+
return (mode & 63) !== 0;
|
|
20
|
+
}
|
|
21
|
+
/** Whether one parsed entry is a complete trusted-device record; anything else is dropped. */
|
|
22
|
+
function isTrustedDeviceRecord(value) {
|
|
23
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
24
|
+
const record = value;
|
|
25
|
+
return typeof record.id === "string" && STORED_ID.test(record.id) && typeof record.identityPublicKey === "string" && STORED_KEY.test(record.identityPublicKey) && typeof record.stepUpPublicKey === "string" && STORED_KEY.test(record.stepUpPublicKey) && record.identityPublicKey !== record.stepUpPublicKey && typeof record.label === "string" && record.label.length <= MAX_STORED_LABEL && typeof record.platform === "string" && TRUSTED_DEVICE_PLATFORMS.has(record.platform) && Number.isFinite(record.createdAt) && Number.isFinite(record.lastSeenAt);
|
|
26
|
+
}
|
|
27
|
+
function parseSettingsFile(raw, settingsPath, notice) {
|
|
28
|
+
let parsed;
|
|
29
|
+
try {
|
|
30
|
+
parsed = JSON.parse(raw);
|
|
31
|
+
} catch {
|
|
32
|
+
notice(`remote access settings at ${settingsPath} are not valid JSON; using defaults`);
|
|
33
|
+
return DEFAULT_REMOTE_SETTINGS;
|
|
34
|
+
}
|
|
35
|
+
const outcome = parseRemoteAccessSettings(parsed);
|
|
36
|
+
for (const warning of outcome.warnings) notice(`remote access settings: ${warning}`);
|
|
37
|
+
return outcome.settings;
|
|
38
|
+
}
|
|
39
|
+
function parseCredentialsFile(raw, credentialsPath, notice) {
|
|
40
|
+
try {
|
|
41
|
+
const parsed = JSON.parse(raw);
|
|
42
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
43
|
+
} catch {
|
|
44
|
+
notice(`registered passkeys at ${credentialsPath} are not valid JSON; none will load`);
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function parseTrustedDevicesFile(raw, trustedDevicesPath, notice) {
|
|
49
|
+
let parsed;
|
|
50
|
+
try {
|
|
51
|
+
parsed = JSON.parse(raw);
|
|
52
|
+
} catch {
|
|
53
|
+
notice(`trusted devices at ${trustedDevicesPath} are not valid JSON; none will load`);
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
if (!Array.isArray(parsed)) {
|
|
57
|
+
notice(`trusted devices at ${trustedDevicesPath} are not a list; none will load`);
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
const loaded = [];
|
|
61
|
+
for (const entry of parsed) {
|
|
62
|
+
if (!isTrustedDeviceRecord(entry) || loaded.some((held) => held.id === entry.id)) {
|
|
63
|
+
notice(`dropped an invalid trusted device record from ${trustedDevicesPath}`);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (loaded.length >= 32) {
|
|
67
|
+
notice(`dropped trusted devices beyond the limit of ${String(32)} from ${trustedDevicesPath}`);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
loaded.push({
|
|
71
|
+
id: entry.id,
|
|
72
|
+
identityPublicKey: entry.identityPublicKey,
|
|
73
|
+
stepUpPublicKey: entry.stepUpPublicKey,
|
|
74
|
+
label: entry.label,
|
|
75
|
+
platform: entry.platform,
|
|
76
|
+
createdAt: entry.createdAt,
|
|
77
|
+
lastSeenAt: entry.lastSeenAt
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return loaded;
|
|
81
|
+
}
|
|
82
|
+
function serializeStateFile(body) {
|
|
83
|
+
return `${JSON.stringify(body, void 0, 2)}\n`;
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
export { CREDENTIALS_FILE, SETTINGS_FILE, TRUSTED_DEVICES_FILE, defaultRemoteStateDir, isLooseMode, parseCredentialsFile, parseSettingsFile, parseTrustedDevicesFile, serializeStateFile };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=remoteAccessRecords.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteAccessRecords.mjs","names":[],"sources":["../../../../src/services/remoteAccessStore/remoteAccessRecords.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { TRUSTED_DEVICE_LIMIT } from '../../constants/remote';\nimport type { RemoteAccessSettings, TrustedDeviceRecord } from '../../types/remote';\nimport { nodeHost } from '../nodeHost';\nimport { poHomeDirectory } from '../piSettings';\nimport { DEFAULT_REMOTE_SETTINGS, parseRemoteAccessSettings } from '../remoteAccessSettings';\nimport type { StoredCredential } from '../webauthnPolicy';\n\n/** Where the cockpit keeps machine-local state; `po sync` already writes its bundle here. */\nexport const STATE_DIRECTORY = 'web';\nexport const SETTINGS_FILE = 'remote-access.json';\nexport const CREDENTIALS_FILE = 'credentials.json';\nexport const TRUSTED_DEVICES_FILE = 'trusted-devices.json';\nconst TRUSTED_DEVICE_PLATFORMS: ReadonlySet<string> = new Set(['ios', 'android']);\nconst STORED_ID = /^[A-Za-z0-9_-]{1,64}$/u;\nconst STORED_KEY = /^[A-Za-z0-9_-]{1,512}$/u;\nconst MAX_STORED_LABEL = 200;\nexport const DIRECTORY_MODE = 0o700;\nexport const FILE_MODE = 0o600;\n/** Any bit set for group or other; a state file readable by another account is worth repairing. */\nexport const LOOSE_MODE_MASK = 0o077;\n\nexport interface RemoteAccessStoreOptions {\n /** Overridden by --state-dir and by tests; the default is ~/.po/web. */\n stateDir?: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface RemoteAccessStore {\n readonly directory: string;\n settings(): RemoteAccessSettings;\n save(settings: RemoteAccessSettings): void;\n /**\n * Registered passkeys. Public keys only, so the file is not a bearer secret\n * and losing it costs a re-enrolment rather than an account.\n */\n credentials(): readonly StoredCredential[];\n saveCredential(credential: StoredCredential): void;\n removeCredential(id: string): boolean;\n /** Registered native devices. Public keys only, at most `TRUSTED_DEVICE_LIMIT`. */\n trustedDevices(): readonly TrustedDeviceRecord[];\n /** Adds or replaces one record by id. False when a new record would exceed the limit. */\n saveTrustedDevice(record: TrustedDeviceRecord): boolean;\n removeTrustedDevice(id: string): boolean;\n}\n\nexport function defaultRemoteStateDir(homeDir: string = nodeHost.homeDirectory()): string {\n return path.join(poHomeDirectory(homeDir), STATE_DIRECTORY);\n}\n\n/** Whether a file mode lets another account read the file. */\nexport function isLooseMode(mode: number): boolean {\n return (mode & LOOSE_MODE_MASK) !== 0;\n}\n\n/** Whether one parsed entry is a complete trusted-device record; anything else is dropped. */\nfunction isTrustedDeviceRecord(value: unknown): value is TrustedDeviceRecord {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n return (\n typeof record.id === 'string' &&\n STORED_ID.test(record.id) &&\n typeof record.identityPublicKey === 'string' &&\n STORED_KEY.test(record.identityPublicKey) &&\n typeof record.stepUpPublicKey === 'string' &&\n STORED_KEY.test(record.stepUpPublicKey) &&\n record.identityPublicKey !== record.stepUpPublicKey &&\n typeof record.label === 'string' &&\n record.label.length <= MAX_STORED_LABEL &&\n typeof record.platform === 'string' &&\n TRUSTED_DEVICE_PLATFORMS.has(record.platform) &&\n Number.isFinite(record.createdAt) &&\n Number.isFinite(record.lastSeenAt)\n );\n}\n\nexport function parseSettingsFile(\n raw: string,\n settingsPath: string,\n notice: (message: string) => void,\n): RemoteAccessSettings {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n // Left in place rather than rewritten: silently overwriting a file\n // somebody hand-edited is worse than ignoring it for this run.\n notice(`remote access settings at ${settingsPath} are not valid JSON; using defaults`);\n return DEFAULT_REMOTE_SETTINGS;\n }\n const outcome = parseRemoteAccessSettings(parsed);\n for (const warning of outcome.warnings) notice(`remote access settings: ${warning}`);\n return outcome.settings;\n}\n\nexport function parseCredentialsFile(\n raw: string,\n credentialsPath: string,\n notice: (message: string) => void,\n): StoredCredential[] {\n try {\n const parsed: unknown = JSON.parse(raw);\n return Array.isArray(parsed) ? (parsed as StoredCredential[]) : [];\n } catch {\n // Fails closed: a half-readable credential file means enrolling again,\n // not guessing which entries survived.\n notice(`registered passkeys at ${credentialsPath} are not valid JSON; none will load`);\n return [];\n }\n}\n\nexport function parseTrustedDevicesFile(\n raw: string,\n trustedDevicesPath: string,\n notice: (message: string) => void,\n): TrustedDeviceRecord[] {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n // Fails closed like passkeys: a device signs in only from a record read whole.\n notice(`trusted devices at ${trustedDevicesPath} are not valid JSON; none will load`);\n return [];\n }\n if (!Array.isArray(parsed)) {\n notice(`trusted devices at ${trustedDevicesPath} are not a list; none will load`);\n return [];\n }\n const loaded: TrustedDeviceRecord[] = [];\n for (const entry of parsed) {\n if (!isTrustedDeviceRecord(entry) || loaded.some((held) => held.id === entry.id)) {\n notice(`dropped an invalid trusted device record from ${trustedDevicesPath}`);\n continue;\n }\n if (loaded.length >= TRUSTED_DEVICE_LIMIT) {\n notice(`dropped trusted devices beyond the limit of ${String(TRUSTED_DEVICE_LIMIT)} from ${trustedDevicesPath}`);\n break;\n }\n loaded.push({\n id: entry.id,\n identityPublicKey: entry.identityPublicKey,\n stepUpPublicKey: entry.stepUpPublicKey,\n label: entry.label,\n platform: entry.platform,\n createdAt: entry.createdAt,\n lastSeenAt: entry.lastSeenAt,\n });\n }\n return loaded;\n}\n\nexport function serializeStateFile(body: unknown): string {\n return `${JSON.stringify(body, undefined, 2)}\\n`;\n}\n"],"mappings":";;;;;;AAWA,MAAa,gBAAgB;AAC7B,MAAa,mBAAmB;AAChC,MAAa,uBAAuB;AACpC,MAAM,2CAAgD,IAAI,IAAI,CAAC,OAAO,SAAS,CAAC;AAChF,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM,mBAAmB;AA8BzB,SAAgB,sBAAsB,UAAkB,SAAS,cAAc,GAAW;CACxF,OAAO,KAAK,KAAK,gBAAgB,OAAO,GAAA,KAAkB;AAC5D;;AAGA,SAAgB,YAAY,MAAuB;CACjD,QAAQ,OAAA,QAA4B;AACtC;;AAGA,SAAS,sBAAsB,OAA8C;CAC3E,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG,OAAO;CAChF,MAAM,SAAS;CACf,OACE,OAAO,OAAO,OAAO,YACrB,UAAU,KAAK,OAAO,EAAE,KACxB,OAAO,OAAO,sBAAsB,YACpC,WAAW,KAAK,OAAO,iBAAiB,KACxC,OAAO,OAAO,oBAAoB,YAClC,WAAW,KAAK,OAAO,eAAe,KACtC,OAAO,sBAAsB,OAAO,mBACpC,OAAO,OAAO,UAAU,YACxB,OAAO,MAAM,UAAU,oBACvB,OAAO,OAAO,aAAa,YAC3B,yBAAyB,IAAI,OAAO,QAAQ,KAC5C,OAAO,SAAS,OAAO,SAAS,KAChC,OAAO,SAAS,OAAO,UAAU;AAErC;AAEA,SAAgB,kBACd,KACA,cACA,QACsB;CACtB,IAAI;CACJ,IAAI;EACF,SAAS,KAAK,MAAM,GAAG;CACzB,QAAQ;EAGN,OAAO,6BAA6B,aAAa,oCAAoC;EACrF,OAAO;CACT;CACA,MAAM,UAAU,0BAA0B,MAAM;CAChD,KAAK,MAAM,WAAW,QAAQ,UAAU,OAAO,2BAA2B,SAAS;CACnF,OAAO,QAAQ;AACjB;AAEA,SAAgB,qBACd,KACA,iBACA,QACoB;CACpB,IAAI;EACF,MAAM,SAAkB,KAAK,MAAM,GAAG;EACtC,OAAO,MAAM,QAAQ,MAAM,IAAK,SAAgC,CAAC;CACnE,QAAQ;EAGN,OAAO,0BAA0B,gBAAgB,oCAAoC;EACrF,OAAO,CAAC;CACV;AACF;AAEA,SAAgB,wBACd,KACA,oBACA,QACuB;CACvB,IAAI;CACJ,IAAI;EACF,SAAS,KAAK,MAAM,GAAG;CACzB,QAAQ;EAEN,OAAO,sBAAsB,mBAAmB,oCAAoC;EACpF,OAAO,CAAC;CACV;CACA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;EAC1B,OAAO,sBAAsB,mBAAmB,gCAAgC;EAChF,OAAO,CAAC;CACV;CACA,MAAM,SAAgC,CAAC;CACvC,KAAK,MAAM,SAAS,QAAQ;EAC1B,IAAI,CAAC,sBAAsB,KAAK,KAAK,OAAO,MAAM,SAAS,KAAK,OAAO,MAAM,EAAE,GAAG;GAChF,OAAO,iDAAiD,oBAAoB;GAC5E;EACF;EACA,IAAI,OAAO,UAAA,IAAgC;GACzC,OAAO,+CAA+C,OAAA,EAA2B,EAAE,QAAQ,oBAAoB;GAC/G;EACF;EACA,OAAO,KAAK;GACV,IAAI,MAAM;GACV,mBAAmB,MAAM;GACzB,iBAAiB,MAAM;GACvB,OAAO,MAAM;GACb,UAAU,MAAM;GAChB,WAAW,MAAM;GACjB,YAAY,MAAM;EACpB,CAAC;CACH;CACA,OAAO;AACT;AAEA,SAAgB,mBAAmB,MAAuB;CACxD,OAAO,GAAG,KAAK,UAAU,MAAM,KAAA,GAAW,CAAC,EAAE;AAC/C"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
require("../../constants/remote.cjs");
|
|
3
|
+
const require_index = require("../remoteAccessSettings/index.cjs");
|
|
4
|
+
const require_remoteAccessRecords = require("./remoteAccessRecords.cjs");
|
|
5
|
+
let node_fs = require("node:fs");
|
|
6
|
+
node_fs = require_runtime.__toESM(node_fs, 1);
|
|
7
|
+
let node_path = require("node:path");
|
|
8
|
+
node_path = require_runtime.__toESM(node_path, 1);
|
|
9
|
+
//#region src/services/remoteAccessStore/sync.ts
|
|
10
|
+
/**
|
|
11
|
+
* Repairs a state file another account can read.
|
|
12
|
+
*
|
|
13
|
+
* Cheap, and it catches the cases a fresh write never would: a file restored
|
|
14
|
+
* from a backup, copied with a permissive umask, or checked out of somewhere it
|
|
15
|
+
* should not have been.
|
|
16
|
+
*/
|
|
17
|
+
function tightenMode(filePath, notice) {
|
|
18
|
+
try {
|
|
19
|
+
if (!require_remoteAccessRecords.isLooseMode(node_fs.default.statSync(filePath).mode)) return;
|
|
20
|
+
node_fs.default.chmodSync(filePath, 384);
|
|
21
|
+
notice(`tightened permissions on ${filePath}`);
|
|
22
|
+
} catch {}
|
|
23
|
+
}
|
|
24
|
+
function readState(filePath, notice) {
|
|
25
|
+
let raw;
|
|
26
|
+
try {
|
|
27
|
+
raw = node_fs.default.readFileSync(filePath, "utf8");
|
|
28
|
+
} catch {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
tightenMode(filePath, notice);
|
|
32
|
+
return raw;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Settings and passkeys on disk. Sessions deliberately not.
|
|
36
|
+
*
|
|
37
|
+
* A session is revoked when remote access is switched off, and a hub restart is
|
|
38
|
+
* a switch-off, so persisting one would buy nothing while creating a bearer
|
|
39
|
+
* secret worth stealing. A passkey is the opposite: surviving is its whole
|
|
40
|
+
* point, and what is stored is a public key.
|
|
41
|
+
*
|
|
42
|
+
* @deprecated Node-only sync shim; use createRemoteAccessStoreAsync. Removed in M2.
|
|
43
|
+
*/
|
|
44
|
+
function createRemoteAccessStore(options = {}) {
|
|
45
|
+
const directory = options.stateDir ?? require_remoteAccessRecords.defaultRemoteStateDir();
|
|
46
|
+
const notice = options.onNotice ?? (() => {});
|
|
47
|
+
const settingsPath = node_path.default.join(directory, require_remoteAccessRecords.SETTINGS_FILE);
|
|
48
|
+
const credentialsPath = node_path.default.join(directory, require_remoteAccessRecords.CREDENTIALS_FILE);
|
|
49
|
+
const trustedDevicesPath = node_path.default.join(directory, require_remoteAccessRecords.TRUSTED_DEVICES_FILE);
|
|
50
|
+
const settingsRaw = readState(settingsPath, notice);
|
|
51
|
+
let current = settingsRaw === void 0 ? require_index.DEFAULT_REMOTE_SETTINGS : require_remoteAccessRecords.parseSettingsFile(settingsRaw, settingsPath, notice);
|
|
52
|
+
const credentialsRaw = readState(credentialsPath, notice);
|
|
53
|
+
let registered = credentialsRaw === void 0 ? [] : require_remoteAccessRecords.parseCredentialsFile(credentialsRaw, credentialsPath, notice);
|
|
54
|
+
const devicesRaw = readState(trustedDevicesPath, notice);
|
|
55
|
+
let trusted = devicesRaw === void 0 ? [] : require_remoteAccessRecords.parseTrustedDevicesFile(devicesRaw, trustedDevicesPath, notice);
|
|
56
|
+
function writeJson(target, body) {
|
|
57
|
+
const temporary = `${target}.${String(process.pid)}.tmp`;
|
|
58
|
+
try {
|
|
59
|
+
node_fs.default.mkdirSync(directory, {
|
|
60
|
+
recursive: true,
|
|
61
|
+
mode: 448
|
|
62
|
+
});
|
|
63
|
+
node_fs.default.writeFileSync(temporary, require_remoteAccessRecords.serializeStateFile(body), { mode: 384 });
|
|
64
|
+
node_fs.default.renameSync(temporary, target);
|
|
65
|
+
} catch (error) {
|
|
66
|
+
notice(`${target} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
|
|
67
|
+
try {
|
|
68
|
+
node_fs.default.rmSync(temporary, { force: true });
|
|
69
|
+
} catch {}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
directory,
|
|
74
|
+
settings: () => current,
|
|
75
|
+
credentials: () => registered,
|
|
76
|
+
saveCredential(credential) {
|
|
77
|
+
registered = [...registered.filter((held) => held.id !== credential.id), credential];
|
|
78
|
+
writeJson(credentialsPath, registered);
|
|
79
|
+
},
|
|
80
|
+
removeCredential(id) {
|
|
81
|
+
const next = registered.filter((held) => held.id !== id);
|
|
82
|
+
if (next.length === registered.length) return false;
|
|
83
|
+
registered = next;
|
|
84
|
+
writeJson(credentialsPath, registered);
|
|
85
|
+
return true;
|
|
86
|
+
},
|
|
87
|
+
trustedDevices: () => trusted,
|
|
88
|
+
saveTrustedDevice(record) {
|
|
89
|
+
const others = trusted.filter((held) => held.id !== record.id);
|
|
90
|
+
if (others.length === trusted.length && trusted.length >= 32) return false;
|
|
91
|
+
trusted = [...others, record];
|
|
92
|
+
writeJson(trustedDevicesPath, trusted);
|
|
93
|
+
return true;
|
|
94
|
+
},
|
|
95
|
+
removeTrustedDevice(id) {
|
|
96
|
+
const next = trusted.filter((held) => held.id !== id);
|
|
97
|
+
if (next.length === trusted.length) return false;
|
|
98
|
+
trusted = next;
|
|
99
|
+
writeJson(trustedDevicesPath, trusted);
|
|
100
|
+
return true;
|
|
101
|
+
},
|
|
102
|
+
save(settings) {
|
|
103
|
+
current = settings;
|
|
104
|
+
writeJson(settingsPath, require_index.serializeRemoteAccessSettings(settings));
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
exports.createRemoteAccessStore = createRemoteAccessStore;
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=sync.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.cjs","names":["isLooseMode","fs","defaultRemoteStateDir","path","SETTINGS_FILE","CREDENTIALS_FILE","TRUSTED_DEVICES_FILE","DEFAULT_REMOTE_SETTINGS","parseSettingsFile","parseCredentialsFile","parseTrustedDevicesFile","serializeStateFile","serializeRemoteAccessSettings"],"sources":["../../../../src/services/remoteAccessStore/sync.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { TRUSTED_DEVICE_LIMIT } from '../../constants/remote';\nimport type { RemoteAccessSettings } from '../../types/remote';\nimport { DEFAULT_REMOTE_SETTINGS, serializeRemoteAccessSettings } from '../remoteAccessSettings';\nimport {\n CREDENTIALS_FILE,\n defaultRemoteStateDir,\n DIRECTORY_MODE,\n FILE_MODE,\n isLooseMode,\n parseCredentialsFile,\n parseSettingsFile,\n parseTrustedDevicesFile,\n serializeStateFile,\n SETTINGS_FILE,\n TRUSTED_DEVICES_FILE,\n type RemoteAccessStore,\n type RemoteAccessStoreOptions,\n} from './remoteAccessRecords';\n\n/**\n * Repairs a state file another account can read.\n *\n * Cheap, and it catches the cases a fresh write never would: a file restored\n * from a backup, copied with a permissive umask, or checked out of somewhere it\n * should not have been.\n */\nfunction tightenMode(filePath: string, notice: (message: string) => void): void {\n try {\n if (!isLooseMode(fs.statSync(filePath).mode)) return;\n fs.chmodSync(filePath, FILE_MODE);\n notice(`tightened permissions on ${filePath}`);\n } catch {\n // The file is missing or unreadable; the caller's own read reports that.\n }\n}\n\nfunction readState(filePath: string, notice: (message: string) => void): string | undefined {\n let raw: string;\n try {\n raw = fs.readFileSync(filePath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return undefined;\n }\n tightenMode(filePath, notice);\n return raw;\n}\n\n/**\n * Settings and passkeys on disk. Sessions deliberately not.\n *\n * A session is revoked when remote access is switched off, and a hub restart is\n * a switch-off, so persisting one would buy nothing while creating a bearer\n * secret worth stealing. A passkey is the opposite: surviving is its whole\n * point, and what is stored is a public key.\n *\n * @deprecated Node-only sync shim; use createRemoteAccessStoreAsync. Removed in M2.\n */\nexport function createRemoteAccessStore(options: RemoteAccessStoreOptions = {}): RemoteAccessStore {\n const directory = options.stateDir ?? defaultRemoteStateDir();\n const notice = options.onNotice ?? ((): void => {});\n const settingsPath = path.join(directory, SETTINGS_FILE);\n const credentialsPath = path.join(directory, CREDENTIALS_FILE);\n const trustedDevicesPath = path.join(directory, TRUSTED_DEVICES_FILE);\n\n const settingsRaw = readState(settingsPath, notice);\n let current: RemoteAccessSettings =\n settingsRaw === undefined ? DEFAULT_REMOTE_SETTINGS : parseSettingsFile(settingsRaw, settingsPath, notice);\n const credentialsRaw = readState(credentialsPath, notice);\n let registered = credentialsRaw === undefined ? [] : parseCredentialsFile(credentialsRaw, credentialsPath, notice);\n const devicesRaw = readState(trustedDevicesPath, notice);\n let trusted = devicesRaw === undefined ? [] : parseTrustedDevicesFile(devicesRaw, trustedDevicesPath, notice);\n\n function writeJson(target: string, body: unknown): void {\n const temporary = `${target}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(directory, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, serializeStateFile(body), { mode: FILE_MODE });\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, target);\n } catch (error) {\n notice(`${target} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n }\n }\n\n return {\n directory,\n settings: () => current,\n credentials: () => registered,\n\n saveCredential(credential) {\n registered = [...registered.filter((held) => held.id !== credential.id), credential];\n writeJson(credentialsPath, registered);\n },\n\n removeCredential(id) {\n const next = registered.filter((held) => held.id !== id);\n if (next.length === registered.length) return false;\n registered = next;\n writeJson(credentialsPath, registered);\n return true;\n },\n\n trustedDevices: () => trusted,\n\n saveTrustedDevice(record) {\n const others = trusted.filter((held) => held.id !== record.id);\n if (others.length === trusted.length && trusted.length >= TRUSTED_DEVICE_LIMIT) return false;\n trusted = [...others, record];\n writeJson(trustedDevicesPath, trusted);\n return true;\n },\n\n removeTrustedDevice(id) {\n const next = trusted.filter((held) => held.id !== id);\n if (next.length === trusted.length) return false;\n trusted = next;\n writeJson(trustedDevicesPath, trusted);\n return true;\n },\n\n save(settings) {\n current = settings;\n writeJson(settingsPath, serializeRemoteAccessSettings(settings));\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import "../../constants/remote.mjs";
|
|
2
|
+
import { DEFAULT_REMOTE_SETTINGS, serializeRemoteAccessSettings } from "../remoteAccessSettings/index.mjs";
|
|
3
|
+
import { CREDENTIALS_FILE, SETTINGS_FILE, TRUSTED_DEVICES_FILE, defaultRemoteStateDir, isLooseMode, parseCredentialsFile, parseSettingsFile, parseTrustedDevicesFile, serializeStateFile } from "./remoteAccessRecords.mjs";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
//#region src/services/remoteAccessStore/sync.ts
|
|
7
|
+
/**
|
|
8
|
+
* Repairs a state file another account can read.
|
|
9
|
+
*
|
|
10
|
+
* Cheap, and it catches the cases a fresh write never would: a file restored
|
|
11
|
+
* from a backup, copied with a permissive umask, or checked out of somewhere it
|
|
12
|
+
* should not have been.
|
|
13
|
+
*/
|
|
14
|
+
function tightenMode(filePath, notice) {
|
|
15
|
+
try {
|
|
16
|
+
if (!isLooseMode(fs.statSync(filePath).mode)) return;
|
|
17
|
+
fs.chmodSync(filePath, 384);
|
|
18
|
+
notice(`tightened permissions on ${filePath}`);
|
|
19
|
+
} catch {}
|
|
20
|
+
}
|
|
21
|
+
function readState(filePath, notice) {
|
|
22
|
+
let raw;
|
|
23
|
+
try {
|
|
24
|
+
raw = fs.readFileSync(filePath, "utf8");
|
|
25
|
+
} catch {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
tightenMode(filePath, notice);
|
|
29
|
+
return raw;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Settings and passkeys on disk. Sessions deliberately not.
|
|
33
|
+
*
|
|
34
|
+
* A session is revoked when remote access is switched off, and a hub restart is
|
|
35
|
+
* a switch-off, so persisting one would buy nothing while creating a bearer
|
|
36
|
+
* secret worth stealing. A passkey is the opposite: surviving is its whole
|
|
37
|
+
* point, and what is stored is a public key.
|
|
38
|
+
*
|
|
39
|
+
* @deprecated Node-only sync shim; use createRemoteAccessStoreAsync. Removed in M2.
|
|
40
|
+
*/
|
|
41
|
+
function createRemoteAccessStore(options = {}) {
|
|
42
|
+
const directory = options.stateDir ?? defaultRemoteStateDir();
|
|
43
|
+
const notice = options.onNotice ?? (() => {});
|
|
44
|
+
const settingsPath = path.join(directory, SETTINGS_FILE);
|
|
45
|
+
const credentialsPath = path.join(directory, CREDENTIALS_FILE);
|
|
46
|
+
const trustedDevicesPath = path.join(directory, TRUSTED_DEVICES_FILE);
|
|
47
|
+
const settingsRaw = readState(settingsPath, notice);
|
|
48
|
+
let current = settingsRaw === void 0 ? DEFAULT_REMOTE_SETTINGS : parseSettingsFile(settingsRaw, settingsPath, notice);
|
|
49
|
+
const credentialsRaw = readState(credentialsPath, notice);
|
|
50
|
+
let registered = credentialsRaw === void 0 ? [] : parseCredentialsFile(credentialsRaw, credentialsPath, notice);
|
|
51
|
+
const devicesRaw = readState(trustedDevicesPath, notice);
|
|
52
|
+
let trusted = devicesRaw === void 0 ? [] : parseTrustedDevicesFile(devicesRaw, trustedDevicesPath, notice);
|
|
53
|
+
function writeJson(target, body) {
|
|
54
|
+
const temporary = `${target}.${String(process.pid)}.tmp`;
|
|
55
|
+
try {
|
|
56
|
+
fs.mkdirSync(directory, {
|
|
57
|
+
recursive: true,
|
|
58
|
+
mode: 448
|
|
59
|
+
});
|
|
60
|
+
fs.writeFileSync(temporary, serializeStateFile(body), { mode: 384 });
|
|
61
|
+
fs.renameSync(temporary, target);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
notice(`${target} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
|
|
64
|
+
try {
|
|
65
|
+
fs.rmSync(temporary, { force: true });
|
|
66
|
+
} catch {}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
directory,
|
|
71
|
+
settings: () => current,
|
|
72
|
+
credentials: () => registered,
|
|
73
|
+
saveCredential(credential) {
|
|
74
|
+
registered = [...registered.filter((held) => held.id !== credential.id), credential];
|
|
75
|
+
writeJson(credentialsPath, registered);
|
|
76
|
+
},
|
|
77
|
+
removeCredential(id) {
|
|
78
|
+
const next = registered.filter((held) => held.id !== id);
|
|
79
|
+
if (next.length === registered.length) return false;
|
|
80
|
+
registered = next;
|
|
81
|
+
writeJson(credentialsPath, registered);
|
|
82
|
+
return true;
|
|
83
|
+
},
|
|
84
|
+
trustedDevices: () => trusted,
|
|
85
|
+
saveTrustedDevice(record) {
|
|
86
|
+
const others = trusted.filter((held) => held.id !== record.id);
|
|
87
|
+
if (others.length === trusted.length && trusted.length >= 32) return false;
|
|
88
|
+
trusted = [...others, record];
|
|
89
|
+
writeJson(trustedDevicesPath, trusted);
|
|
90
|
+
return true;
|
|
91
|
+
},
|
|
92
|
+
removeTrustedDevice(id) {
|
|
93
|
+
const next = trusted.filter((held) => held.id !== id);
|
|
94
|
+
if (next.length === trusted.length) return false;
|
|
95
|
+
trusted = next;
|
|
96
|
+
writeJson(trustedDevicesPath, trusted);
|
|
97
|
+
return true;
|
|
98
|
+
},
|
|
99
|
+
save(settings) {
|
|
100
|
+
current = settings;
|
|
101
|
+
writeJson(settingsPath, serializeRemoteAccessSettings(settings));
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { createRemoteAccessStore };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=sync.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.mjs","names":[],"sources":["../../../../src/services/remoteAccessStore/sync.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { TRUSTED_DEVICE_LIMIT } from '../../constants/remote';\nimport type { RemoteAccessSettings } from '../../types/remote';\nimport { DEFAULT_REMOTE_SETTINGS, serializeRemoteAccessSettings } from '../remoteAccessSettings';\nimport {\n CREDENTIALS_FILE,\n defaultRemoteStateDir,\n DIRECTORY_MODE,\n FILE_MODE,\n isLooseMode,\n parseCredentialsFile,\n parseSettingsFile,\n parseTrustedDevicesFile,\n serializeStateFile,\n SETTINGS_FILE,\n TRUSTED_DEVICES_FILE,\n type RemoteAccessStore,\n type RemoteAccessStoreOptions,\n} from './remoteAccessRecords';\n\n/**\n * Repairs a state file another account can read.\n *\n * Cheap, and it catches the cases a fresh write never would: a file restored\n * from a backup, copied with a permissive umask, or checked out of somewhere it\n * should not have been.\n */\nfunction tightenMode(filePath: string, notice: (message: string) => void): void {\n try {\n if (!isLooseMode(fs.statSync(filePath).mode)) return;\n fs.chmodSync(filePath, FILE_MODE);\n notice(`tightened permissions on ${filePath}`);\n } catch {\n // The file is missing or unreadable; the caller's own read reports that.\n }\n}\n\nfunction readState(filePath: string, notice: (message: string) => void): string | undefined {\n let raw: string;\n try {\n raw = fs.readFileSync(filePath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return undefined;\n }\n tightenMode(filePath, notice);\n return raw;\n}\n\n/**\n * Settings and passkeys on disk. Sessions deliberately not.\n *\n * A session is revoked when remote access is switched off, and a hub restart is\n * a switch-off, so persisting one would buy nothing while creating a bearer\n * secret worth stealing. A passkey is the opposite: surviving is its whole\n * point, and what is stored is a public key.\n *\n * @deprecated Node-only sync shim; use createRemoteAccessStoreAsync. Removed in M2.\n */\nexport function createRemoteAccessStore(options: RemoteAccessStoreOptions = {}): RemoteAccessStore {\n const directory = options.stateDir ?? defaultRemoteStateDir();\n const notice = options.onNotice ?? ((): void => {});\n const settingsPath = path.join(directory, SETTINGS_FILE);\n const credentialsPath = path.join(directory, CREDENTIALS_FILE);\n const trustedDevicesPath = path.join(directory, TRUSTED_DEVICES_FILE);\n\n const settingsRaw = readState(settingsPath, notice);\n let current: RemoteAccessSettings =\n settingsRaw === undefined ? DEFAULT_REMOTE_SETTINGS : parseSettingsFile(settingsRaw, settingsPath, notice);\n const credentialsRaw = readState(credentialsPath, notice);\n let registered = credentialsRaw === undefined ? [] : parseCredentialsFile(credentialsRaw, credentialsPath, notice);\n const devicesRaw = readState(trustedDevicesPath, notice);\n let trusted = devicesRaw === undefined ? [] : parseTrustedDevicesFile(devicesRaw, trustedDevicesPath, notice);\n\n function writeJson(target: string, body: unknown): void {\n const temporary = `${target}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(directory, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, serializeStateFile(body), { mode: FILE_MODE });\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, target);\n } catch (error) {\n notice(`${target} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n }\n }\n\n return {\n directory,\n settings: () => current,\n credentials: () => registered,\n\n saveCredential(credential) {\n registered = [...registered.filter((held) => held.id !== credential.id), credential];\n writeJson(credentialsPath, registered);\n },\n\n removeCredential(id) {\n const next = registered.filter((held) => held.id !== id);\n if (next.length === registered.length) return false;\n registered = next;\n writeJson(credentialsPath, registered);\n return true;\n },\n\n trustedDevices: () => trusted,\n\n saveTrustedDevice(record) {\n const others = trusted.filter((held) => held.id !== record.id);\n if (others.length === trusted.length && trusted.length >= TRUSTED_DEVICE_LIMIT) return false;\n trusted = [...others, record];\n writeJson(trustedDevicesPath, trusted);\n return true;\n },\n\n removeTrustedDevice(id) {\n const next = trusted.filter((held) => held.id !== id);\n if (next.length === trusted.length) return false;\n trusted = next;\n writeJson(trustedDevicesPath, trusted);\n return true;\n },\n\n save(settings) {\n current = settings;\n writeJson(settingsPath, serializeRemoteAccessSettings(settings));\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;AA6BA,SAAS,YAAY,UAAkB,QAAyC;CAC9E,IAAI;EACF,IAAI,CAAC,YAAY,GAAG,SAAS,QAAQ,CAAC,CAAC,IAAI,GAAG;EAC9C,GAAG,UAAU,UAAA,GAAmB;EAChC,OAAO,4BAA4B,UAAU;CAC/C,QAAQ,CAER;AACF;AAEA,SAAS,UAAU,UAAkB,QAAuD;CAC1F,IAAI;CACJ,IAAI;EACF,MAAM,GAAG,aAAa,UAAU,MAAM;CACxC,QAAQ;EAEN;CACF;CACA,YAAY,UAAU,MAAM;CAC5B,OAAO;AACT;;;;;;;;;;;AAYA,SAAgB,wBAAwB,UAAoC,CAAC,GAAsB;CACjG,MAAM,YAAY,QAAQ,YAAY,sBAAsB;CAC5D,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,eAAe,KAAK,KAAK,WAAW,aAAa;CACvD,MAAM,kBAAkB,KAAK,KAAK,WAAW,gBAAgB;CAC7D,MAAM,qBAAqB,KAAK,KAAK,WAAW,oBAAoB;CAEpE,MAAM,cAAc,UAAU,cAAc,MAAM;CAClD,IAAI,UACF,gBAAgB,KAAA,IAAY,0BAA0B,kBAAkB,aAAa,cAAc,MAAM;CAC3G,MAAM,iBAAiB,UAAU,iBAAiB,MAAM;CACxD,IAAI,aAAa,mBAAmB,KAAA,IAAY,CAAC,IAAI,qBAAqB,gBAAgB,iBAAiB,MAAM;CACjH,MAAM,aAAa,UAAU,oBAAoB,MAAM;CACvD,IAAI,UAAU,eAAe,KAAA,IAAY,CAAC,IAAI,wBAAwB,YAAY,oBAAoB,MAAM;CAE5G,SAAS,UAAU,QAAgB,MAAqB;EACtD,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,QAAQ,GAAG,EAAE;EACnD,IAAI;GACF,GAAG,UAAU,WAAW;IAAE,WAAW;IAAM,MAAA;GAAqB,CAAC;GACjE,GAAG,cAAc,WAAW,mBAAmB,IAAI,GAAG,EAAE,MAAA,IAAgB,CAAC;GAGzE,GAAG,WAAW,WAAW,MAAM;EACjC,SAAS,OAAO;GACd,OAAO,GAAG,OAAO,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GAChG,IAAI;IACF,GAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL;EACA,gBAAgB;EAChB,mBAAmB;EAEnB,eAAe,YAAY;GACzB,aAAa,CAAC,GAAG,WAAW,QAAQ,SAAS,KAAK,OAAO,WAAW,EAAE,GAAG,UAAU;GACnF,UAAU,iBAAiB,UAAU;EACvC;EAEA,iBAAiB,IAAI;GACnB,MAAM,OAAO,WAAW,QAAQ,SAAS,KAAK,OAAO,EAAE;GACvD,IAAI,KAAK,WAAW,WAAW,QAAQ,OAAO;GAC9C,aAAa;GACb,UAAU,iBAAiB,UAAU;GACrC,OAAO;EACT;EAEA,sBAAsB;EAEtB,kBAAkB,QAAQ;GACxB,MAAM,SAAS,QAAQ,QAAQ,SAAS,KAAK,OAAO,OAAO,EAAE;GAC7D,IAAI,OAAO,WAAW,QAAQ,UAAU,QAAQ,UAAA,IAAgC,OAAO;GACvF,UAAU,CAAC,GAAG,QAAQ,MAAM;GAC5B,UAAU,oBAAoB,OAAO;GACrC,OAAO;EACT;EAEA,oBAAoB,IAAI;GACtB,MAAM,OAAO,QAAQ,QAAQ,SAAS,KAAK,OAAO,EAAE;GACpD,IAAI,KAAK,WAAW,QAAQ,QAAQ,OAAO;GAC3C,UAAU;GACV,UAAU,oBAAoB,OAAO;GACrC,OAAO;EACT;EAEA,KAAK,UAAU;GACb,UAAU;GACV,UAAU,cAAc,8BAA8B,QAAQ,CAAC;EACjE;CACF;AACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
let node_fs = require("node:fs");
|
|
3
|
+
node_fs = require_runtime.__toESM(node_fs, 1);
|
|
4
|
+
let node_path = require("node:path");
|
|
5
|
+
node_path = require_runtime.__toESM(node_path, 1);
|
|
6
|
+
//#region src/services/runtimeIdentity/sync.ts
|
|
7
|
+
/**
|
|
8
|
+
* Canonical on-disk identity used for activation deduplication and fingerprints.
|
|
9
|
+
*
|
|
10
|
+
* @deprecated Node-only sync shim; use canonicalModulePathAsync. Removed in M2.
|
|
11
|
+
*/
|
|
12
|
+
function canonicalModulePath(target) {
|
|
13
|
+
const absolute = node_path.default.resolve(target);
|
|
14
|
+
let resolved = absolute;
|
|
15
|
+
try {
|
|
16
|
+
resolved = node_fs.default.realpathSync.native(absolute);
|
|
17
|
+
} catch {}
|
|
18
|
+
return resolved.split(node_path.default.sep).join("/");
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
exports.canonicalModulePath = canonicalModulePath;
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=sync.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.cjs","names":["path","fs"],"sources":["../../../../src/services/runtimeIdentity/sync.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\n/**\n * Canonical on-disk identity used for activation deduplication and fingerprints.\n *\n * @deprecated Node-only sync shim; use canonicalModulePathAsync. Removed in M2.\n */\nexport function canonicalModulePath(target: string): string {\n const absolute = path.resolve(target);\n let resolved = absolute;\n try {\n resolved = fs.realpathSync.native(absolute);\n } catch {\n // Missing synthetic/test paths still receive an absolute normalized identity.\n }\n return resolved.split(path.sep).join('/');\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAgB,oBAAoB,QAAwB;CAC1D,MAAM,WAAWA,UAAAA,QAAK,QAAQ,MAAM;CACpC,IAAI,WAAW;CACf,IAAI;EACF,WAAWC,QAAAA,QAAG,aAAa,OAAO,QAAQ;CAC5C,QAAQ,CAER;CACA,OAAO,SAAS,MAAMD,UAAAA,QAAK,GAAG,CAAC,CAAC,KAAK,GAAG;AAC1C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/services/runtimeIdentity/sync.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Canonical on-disk identity used for activation deduplication and fingerprints.
|
|
4
|
+
*
|
|
5
|
+
* @deprecated Node-only sync shim; use canonicalModulePathAsync. Removed in M2.
|
|
6
|
+
*/
|
|
7
|
+
export declare function canonicalModulePath(target: string): string;
|
|
8
|
+
//#endregion
|
|
9
|
+
//# sourceMappingURL=sync.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.mts","names":[],"sources":["../../../../src/services/runtimeIdentity/sync.ts"],"mappings":";;;;;;wBAQgB,oBAAoB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
//#region src/services/runtimeIdentity/sync.ts
|
|
4
|
+
/**
|
|
5
|
+
* Canonical on-disk identity used for activation deduplication and fingerprints.
|
|
6
|
+
*
|
|
7
|
+
* @deprecated Node-only sync shim; use canonicalModulePathAsync. Removed in M2.
|
|
8
|
+
*/
|
|
9
|
+
function canonicalModulePath(target) {
|
|
10
|
+
const absolute = path.resolve(target);
|
|
11
|
+
let resolved = absolute;
|
|
12
|
+
try {
|
|
13
|
+
resolved = fs.realpathSync.native(absolute);
|
|
14
|
+
} catch {}
|
|
15
|
+
return resolved.split(path.sep).join("/");
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { canonicalModulePath };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=sync.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.mjs","names":[],"sources":["../../../../src/services/runtimeIdentity/sync.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\n/**\n * Canonical on-disk identity used for activation deduplication and fingerprints.\n *\n * @deprecated Node-only sync shim; use canonicalModulePathAsync. Removed in M2.\n */\nexport function canonicalModulePath(target: string): string {\n const absolute = path.resolve(target);\n let resolved = absolute;\n try {\n resolved = fs.realpathSync.native(absolute);\n } catch {\n // Missing synthetic/test paths still receive an absolute normalized identity.\n }\n return resolved.split(path.sep).join('/');\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,oBAAoB,QAAwB;CAC1D,MAAM,WAAW,KAAK,QAAQ,MAAM;CACpC,IAAI,WAAW;CACf,IAAI;EACF,WAAW,GAAG,aAAa,OAAO,QAAQ;CAC5C,QAAQ,CAER;CACA,OAAO,SAAS,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;AAC1C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/services/serialRunner/index.ts
|
|
2
|
+
/** Runs operations one at a time in call order; a rejection reaches its caller and never stalls the queue. */
|
|
3
|
+
function createSerialRunner() {
|
|
4
|
+
let tail = Promise.resolve();
|
|
5
|
+
const tails = /* @__PURE__ */ new Map();
|
|
6
|
+
const run = (operation) => {
|
|
7
|
+
const result = tail.then(operation);
|
|
8
|
+
tail = result.catch(() => void 0);
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
11
|
+
const forKey = (key) => (operation) => {
|
|
12
|
+
const result = (tails.get(key) ?? Promise.resolve()).then(operation);
|
|
13
|
+
const settled = result.catch(() => void 0);
|
|
14
|
+
tails.set(key, settled);
|
|
15
|
+
settled.then(() => {
|
|
16
|
+
if (tails.get(key) === settled) tails.delete(key);
|
|
17
|
+
});
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
return Object.assign(run, { forKey });
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.createSerialRunner = createSerialRunner;
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/services/serialRunner/index.ts"],"sourcesContent":["export type SerialTask = <T>(operation: () => Promise<T>) => Promise<T>;\n\nexport interface SerialRunner extends SerialTask {\n /** A queue per key, so read-modify-write on one path never interleaves while other paths run freely. */\n forKey(key: string): SerialTask;\n}\n\n/** Runs operations one at a time in call order; a rejection reaches its caller and never stalls the queue. */\nexport function createSerialRunner(): SerialRunner {\n let tail: Promise<unknown> = Promise.resolve();\n const tails = new Map<string, Promise<unknown>>();\n const run = <T>(operation: () => Promise<T>): Promise<T> => {\n const result = tail.then(operation);\n // The caller owns `result` and its rejection; the tail only orders the next operation.\n tail = result.catch(() => undefined);\n return result;\n };\n const forKey =\n (key: string): SerialTask =>\n <T>(operation: () => Promise<T>): Promise<T> => {\n const result = (tails.get(key) ?? Promise.resolve()).then(operation);\n // As above: the rejection belongs to the caller; the stored tail only orders this key.\n const settled = result.catch(() => undefined);\n tails.set(key, settled);\n void settled.then(() => {\n if (tails.get(key) === settled) tails.delete(key);\n });\n return result;\n };\n return Object.assign(run, { forKey });\n}\n"],"mappings":";;AAQA,SAAgB,qBAAmC;CACjD,IAAI,OAAyB,QAAQ,QAAQ;CAC7C,MAAM,wBAAQ,IAAI,IAA8B;CAChD,MAAM,OAAU,cAA4C;EAC1D,MAAM,SAAS,KAAK,KAAK,SAAS;EAElC,OAAO,OAAO,YAAY,KAAA,CAAS;EACnC,OAAO;CACT;CACA,MAAM,UACH,SACG,cAA4C;EAC9C,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAA,CAAG,KAAK,SAAS;EAEnE,MAAM,UAAU,OAAO,YAAY,KAAA,CAAS;EAC5C,MAAM,IAAI,KAAK,OAAO;EACtB,QAAa,WAAW;GACtB,IAAI,MAAM,IAAI,GAAG,MAAM,SAAS,MAAM,OAAO,GAAG;EAClD,CAAC;EACD,OAAO;CACT;CACF,OAAO,OAAO,OAAO,KAAK,EAAE,OAAO,CAAC;AACtC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/services/serialRunner/index.d.ts
|
|
2
|
+
export type SerialTask = <T>(operation: () => Promise<T>) => Promise<T>;
|
|
3
|
+
export interface SerialRunner extends SerialTask {
|
|
4
|
+
/** A queue per key, so read-modify-write on one path never interleaves while other paths run freely. */
|
|
5
|
+
forKey(key: string): SerialTask;
|
|
6
|
+
}
|
|
7
|
+
/** Runs operations one at a time in call order; a rejection reaches its caller and never stalls the queue. */
|
|
8
|
+
export declare function createSerialRunner(): SerialRunner;
|
|
9
|
+
//#endregion
|
|
10
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/serialRunner/index.ts"],"mappings":";YAAY,cAAc,GAAG,iBAAiB,QAAQ,OAAO,QAAQ;iBAEpD,qBAAqB;;EAEpC,OAAO,cAAc;;;wBAIP,sBAAsB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/services/serialRunner/index.ts
|
|
2
|
+
/** Runs operations one at a time in call order; a rejection reaches its caller and never stalls the queue. */
|
|
3
|
+
function createSerialRunner() {
|
|
4
|
+
let tail = Promise.resolve();
|
|
5
|
+
const tails = /* @__PURE__ */ new Map();
|
|
6
|
+
const run = (operation) => {
|
|
7
|
+
const result = tail.then(operation);
|
|
8
|
+
tail = result.catch(() => void 0);
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
11
|
+
const forKey = (key) => (operation) => {
|
|
12
|
+
const result = (tails.get(key) ?? Promise.resolve()).then(operation);
|
|
13
|
+
const settled = result.catch(() => void 0);
|
|
14
|
+
tails.set(key, settled);
|
|
15
|
+
settled.then(() => {
|
|
16
|
+
if (tails.get(key) === settled) tails.delete(key);
|
|
17
|
+
});
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
return Object.assign(run, { forKey });
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { createSerialRunner };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/serialRunner/index.ts"],"sourcesContent":["export type SerialTask = <T>(operation: () => Promise<T>) => Promise<T>;\n\nexport interface SerialRunner extends SerialTask {\n /** A queue per key, so read-modify-write on one path never interleaves while other paths run freely. */\n forKey(key: string): SerialTask;\n}\n\n/** Runs operations one at a time in call order; a rejection reaches its caller and never stalls the queue. */\nexport function createSerialRunner(): SerialRunner {\n let tail: Promise<unknown> = Promise.resolve();\n const tails = new Map<string, Promise<unknown>>();\n const run = <T>(operation: () => Promise<T>): Promise<T> => {\n const result = tail.then(operation);\n // The caller owns `result` and its rejection; the tail only orders the next operation.\n tail = result.catch(() => undefined);\n return result;\n };\n const forKey =\n (key: string): SerialTask =>\n <T>(operation: () => Promise<T>): Promise<T> => {\n const result = (tails.get(key) ?? Promise.resolve()).then(operation);\n // As above: the rejection belongs to the caller; the stored tail only orders this key.\n const settled = result.catch(() => undefined);\n tails.set(key, settled);\n void settled.then(() => {\n if (tails.get(key) === settled) tails.delete(key);\n });\n return result;\n };\n return Object.assign(run, { forKey });\n}\n"],"mappings":";;AAQA,SAAgB,qBAAmC;CACjD,IAAI,OAAyB,QAAQ,QAAQ;CAC7C,MAAM,wBAAQ,IAAI,IAA8B;CAChD,MAAM,OAAU,cAA4C;EAC1D,MAAM,SAAS,KAAK,KAAK,SAAS;EAElC,OAAO,OAAO,YAAY,KAAA,CAAS;EACnC,OAAO;CACT;CACA,MAAM,UACH,SACG,cAA4C;EAC9C,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAA,CAAG,KAAK,SAAS;EAEnE,MAAM,UAAU,OAAO,YAAY,KAAA,CAAS;EAC5C,MAAM,IAAI,KAAK,OAAO;EACtB,QAAa,WAAW;GACtB,IAAI,MAAM,IAAI,GAAG,MAAM,SAAS,MAAM,OAAO,GAAG;EAClD,CAAC;EACD,OAAO;CACT;CACF,OAAO,OAAO,OAAO,KAAK,EAAE,OAAO,CAAC;AACtC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
//#region src/services/
|
|
2
|
-
function
|
|
1
|
+
//#region src/services/serverHost/index.ts
|
|
2
|
+
function createPoServerHost(options) {
|
|
3
3
|
const { scope, context } = options;
|
|
4
4
|
const notice = (message) => context.onNotice(message);
|
|
5
5
|
const mounts = [];
|
|
@@ -18,7 +18,7 @@ function createDoomServerHost(options) {
|
|
|
18
18
|
return noop;
|
|
19
19
|
}
|
|
20
20
|
if (mounts.find((mount) => mount.basePath === api.basePath) !== void 0) {
|
|
21
|
-
notice(`package API '${api.basePath}' is skipped: another
|
|
21
|
+
notice(`package API '${api.basePath}' is skipped: another package already claims it.`);
|
|
22
22
|
return noop;
|
|
23
23
|
}
|
|
24
24
|
let handler;
|
|
@@ -94,7 +94,7 @@ function createDoomServerHost(options) {
|
|
|
94
94
|
return noop;
|
|
95
95
|
}
|
|
96
96
|
if (channels.some((mount) => mount.channel.frameType === channel.frameType)) {
|
|
97
|
-
notice(`hub channel '${channel.frameType}' is skipped: another
|
|
97
|
+
notice(`hub channel '${channel.frameType}' is skipped: another package already claims it.`);
|
|
98
98
|
return noop;
|
|
99
99
|
}
|
|
100
100
|
let source;
|
|
@@ -192,6 +192,6 @@ function createDoomServerHost(options) {
|
|
|
192
192
|
};
|
|
193
193
|
}
|
|
194
194
|
//#endregion
|
|
195
|
-
exports.
|
|
195
|
+
exports.createPoServerHost = createPoServerHost;
|
|
196
196
|
|
|
197
197
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/services/serverHost/index.ts"],"sourcesContent":["/**\n * The server host a package registers through at one scope level.\n *\n * DESIGN PATTERNS:\n * - One mount table per level. Every package registers through this service, so\n * the level has a single ordered record of what is mounted and under what.\n * - Base paths are first-come. A collision is reported and skipped, so one\n * misdeclared package cannot take a server down.\n * - Handlers are started lazily on first mount and closed on dispose, so a\n * package that registers and immediately unwinds leaves nothing running.\n *\n * AVOID:\n * - Letting a throwing `start` escape. A package whose API cannot start is\n * reported and skipped; the remaining packages still mount.\n * - Reaching for node:*. The host owns the listener; this only owns the table.\n */\n\nimport type { PoHubChannel, PoHubChannelHost, PoHubChannelSource } from '../../schemas/hubChannel';\nimport type { PoApi, PoApiContext, PoApiHandler, PoApiScope } from '../../schemas/packageApi';\nimport type { PoPluginRegistry } from '../../schemas/pluginProtocol';\nimport type { PoServerHostService, PoServerRegistration } from '../../schemas/serverPlugin';\n\ninterface MountedApi {\n readonly basePath: string;\n readonly handler: PoApiHandler;\n}\n\ninterface MountedChannel {\n readonly channel: PoHubChannel;\n readonly source?: PoHubChannelSource;\n readonly registration?: PoServerRegistration;\n}\n\nexport interface CreatePoServerHostOptions {\n scope: PoApiScope;\n context: PoApiContext;\n /** Required when packages may register live channels. */\n channelHost?: PoHubChannelHost;\n /** Supplies a channel-specific host when one host serves multiple channels. */\n channelHostFor?: (channel: PoHubChannel) => PoHubChannelHost;\n /** Delegates channel mounting to an owner of the canonical channel table. */\n mountChannel?: (channel: PoHubChannel) => PoServerRegistration;\n /** Shared exact-scope dispatch table, owned by the server composition. */\n pluginRegistry?: PoPluginRegistry;\n /** Called when an API mount table entry appears or disappears. */\n onChange?: (mounted: readonly string[]) => void;\n /** Called when a channel mount table entry appears or disappears. */\n onChannelsChange?: (mounted: readonly string[]) => void;\n}\n\n/** The mount table a server host exposes to its packages, plus the router's read side. */\nexport interface PoServerHost extends PoServerHostService {\n /** The handler owning a base path, for the router that dispatches to it. */\n handlerFor(basePath: string): PoApiHandler | undefined;\n /** Close every mounted handler and empty the table. */\n dispose(): void;\n}\n\nexport function createPoServerHost(options: CreatePoServerHostOptions): PoServerHost {\n const { scope, context } = options;\n const notice = (message: string): void => context.onNotice(message);\n const mounts: MountedApi[] = [];\n const channels: MountedChannel[] = [];\n const methods = new Set<() => void>();\n let disposed = false;\n\n const changed = (): void => options.onChange?.(mounts.map((mount) => mount.basePath));\n const channelsChanged = (): void => options.onChannelsChange?.(channels.map((mount) => mount.channel.frameType));\n\n const noop: PoServerRegistration = { mounted: false, dispose: () => undefined };\n\n const registerApi = (api: PoApi): PoServerRegistration => {\n if (disposed) {\n notice(`package API '${api.basePath}' is skipped: the server host is already disposed.`);\n return noop;\n }\n const holder = mounts.find((mount) => mount.basePath === api.basePath);\n if (holder !== undefined) {\n notice(`package API '${api.basePath}' is skipped: another package already claims it.`);\n return noop;\n }\n let handler: PoApiHandler;\n try {\n handler = api.start(context);\n } catch (error) {\n notice(`package API '${api.basePath}' did not start (${String(error)}); it is skipped.`);\n return noop;\n }\n const mount: MountedApi = { basePath: api.basePath, handler };\n mounts.push(mount);\n changed();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = mounts.indexOf(mount);\n if (index >= 0) mounts.splice(index, 1);\n try {\n handler.close();\n } catch (error) {\n notice(`package API '${mount.basePath}' did not close cleanly (${String(error)}).`);\n }\n changed();\n },\n };\n };\n\n const registerChannel = (channel: PoHubChannel): PoServerRegistration => {\n if (disposed) {\n notice(`hub channel '${channel.frameType}' is skipped: the server host is already disposed.`);\n return noop;\n }\n if (options.mountChannel !== undefined) {\n let registration: PoServerRegistration;\n try {\n registration = options.mountChannel(channel);\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not mount (${String(error)}); it is skipped.`);\n return noop;\n }\n if (registration.mounted !== true) return registration;\n const mount: MountedChannel = { channel, registration };\n channels.push(mount);\n channelsChanged();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = channels.indexOf(mount);\n if (index >= 0) channels.splice(index, 1);\n try {\n registration.dispose();\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n channelsChanged();\n },\n };\n }\n const channelHost = options.channelHostFor?.(channel) ?? options.channelHost;\n if (!channelHost) {\n notice(`hub channel '${channel.frameType}' is skipped: this server host has no channel capability.`);\n return noop;\n }\n if (channels.some((mount) => mount.channel.frameType === channel.frameType)) {\n notice(`hub channel '${channel.frameType}' is skipped: another package already claims it.`);\n return noop;\n }\n let source: PoHubChannelSource;\n try {\n source = channel.start(channelHost);\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not start (${String(error)}); it is skipped.`);\n return noop;\n }\n const mount: MountedChannel = { channel, source };\n channels.push(mount);\n channelsChanged();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = channels.indexOf(mount);\n if (index >= 0) channels.splice(index, 1);\n try {\n source.close();\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n channelsChanged();\n },\n };\n };\n\n const registerMethod: PoServerHostService['registerMethod'] = (definition, handler) => {\n if (disposed || !options.pluginRegistry) {\n notice(\n `plugin method '${definition.service}.${definition.method}' is skipped: this host has no plugin dispatcher.`,\n );\n return noop;\n }\n const mount =\n scope === 'global'\n ? { scope: 'global' as const }\n : scope === 'workspace' && context.workspaceId\n ? { scope: 'workspace' as const, workspaceId: context.workspaceId }\n : scope === 'session' && context.sessionId\n ? { scope: 'session' as const, sessionId: context.sessionId }\n : undefined;\n if (!mount) {\n notice(`plugin method '${definition.service}.${definition.method}' is skipped: this host has no mount identity.`);\n return noop;\n }\n try {\n const release = options.pluginRegistry.register(mount, definition, handler);\n let released = false;\n const dispose = () => {\n if (released) return;\n released = true;\n methods.delete(dispose);\n release();\n };\n methods.add(dispose);\n return { mounted: true, dispose };\n } catch (error) {\n notice(`plugin method '${definition.service}.${definition.method}' did not mount (${String(error)}).`);\n return noop;\n }\n };\n\n return {\n scope,\n context,\n registerApi,\n registerChannel,\n registerMethod,\n mounted: () => mounts.map((mount) => mount.basePath),\n mountedChannels: () => channels.map((mount) => mount.channel.frameType),\n handlerFor: (basePath) => mounts.find((mount) => mount.basePath === basePath)?.handler,\n dispose: () => {\n if (disposed) return;\n disposed = true;\n for (const release of [...methods].reverse()) release();\n for (const mount of channels.splice(0).reverse()) {\n try {\n if (mount.registration !== undefined) mount.registration.dispose();\n else mount.source?.close();\n } catch (error) {\n notice(`hub channel '${mount.channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n }\n for (const mount of mounts.splice(0).reverse()) {\n try {\n mount.handler.close();\n } catch (error) {\n notice(`package API '${mount.basePath}' did not close cleanly (${String(error)}).`);\n }\n }\n channelsChanged();\n changed();\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { PoHubChannel, PoHubChannelHost } from "../../schemas/hubChannel.mjs";
|
|
2
|
+
import { PoApiContext, PoApiHandler, PoApiScope } from "../../schemas/packageApi.mjs";
|
|
3
|
+
import { PoPluginRegistry } from "../../schemas/pluginProtocol.mjs";
|
|
4
|
+
import { PoServerHostService, PoServerRegistration } from "../../schemas/serverPlugin.mjs";
|
|
5
|
+
//#region src/services/serverHost/index.d.ts
|
|
6
|
+
export interface CreatePoServerHostOptions {
|
|
7
|
+
scope: PoApiScope;
|
|
8
|
+
context: PoApiContext;
|
|
9
|
+
/** Required when packages may register live channels. */
|
|
10
|
+
channelHost?: PoHubChannelHost;
|
|
11
|
+
/** Supplies a channel-specific host when one host serves multiple channels. */
|
|
12
|
+
channelHostFor?: (channel: PoHubChannel) => PoHubChannelHost;
|
|
13
|
+
/** Delegates channel mounting to an owner of the canonical channel table. */
|
|
14
|
+
mountChannel?: (channel: PoHubChannel) => PoServerRegistration;
|
|
15
|
+
/** Shared exact-scope dispatch table, owned by the server composition. */
|
|
16
|
+
pluginRegistry?: PoPluginRegistry;
|
|
17
|
+
/** Called when an API mount table entry appears or disappears. */
|
|
18
|
+
onChange?: (mounted: readonly string[]) => void;
|
|
19
|
+
/** Called when a channel mount table entry appears or disappears. */
|
|
20
|
+
onChannelsChange?: (mounted: readonly string[]) => void;
|
|
21
|
+
}
|
|
22
|
+
/** The mount table a server host exposes to its packages, plus the router's read side. */
|
|
23
|
+
export interface PoServerHost extends PoServerHostService {
|
|
24
|
+
/** The handler owning a base path, for the router that dispatches to it. */
|
|
25
|
+
handlerFor(basePath: string): PoApiHandler | undefined;
|
|
26
|
+
/** Close every mounted handler and empty the table. */
|
|
27
|
+
dispose(): void;
|
|
28
|
+
}
|
|
29
|
+
export declare function createPoServerHost(options: CreatePoServerHostOptions): PoServerHost;
|
|
30
|
+
//#endregion
|
|
31
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/serverHost/index.ts"],"mappings":";;;;;iBAiCiB;EACf,OAAO;EACP,SAAS;;EAET,cAAc;;EAEd,kBAAkB,SAAS,iBAAiB;;EAE5C,gBAAgB,SAAS,iBAAiB;;EAE1C,iBAAiB;;EAEjB,YAAY;;EAEZ,oBAAoB;;;iBAIL,qBAAqB;;EAEpC,WAAW,mBAAmB;;EAE9B;;wBAGc,mBAAmB,SAAS,4BAA4B"}
|