@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.cjs","names":[],"sources":["../../../src/schemas/readiness.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\n\n/** Cordis service name for session-scoped package initialization. */\nexport const DOOM_READINESS_SERVICE = 'doom/readiness';\n\n/** Stable machine-readable failures produced by the readiness contract. */\nexport const DOOM_READINESS_ERROR_CODE = {\n cancelled: 'DOOM_READINESS_CANCELLED',\n disposed: 'DOOM_READINESS_DISPOSED',\n duplicate: 'DOOM_READINESS_DUPLICATE',\n failed: 'DOOM_READINESS_FAILED',\n invalidArgument: 'DOOM_READINESS_INVALID_ARGUMENT',\n unavailable: 'DOOM_READINESS_UNAVAILABLE',\n waitAborted: 'DOOM_READINESS_WAIT_ABORTED',\n} as const;\n\nexport type DoomReadinessErrorCode = (typeof DOOM_READINESS_ERROR_CODE)[keyof typeof DOOM_READINESS_ERROR_CODE];\nexport type DoomReadinessState = 'pending' | 'ready' | 'degraded' | 'failed' | 'cancelled';\n\nexport interface DoomReadinessErrorDetail {\n readonly code: DoomReadinessErrorCode;\n readonly message: string;\n}\n\n/** Immutable public state for the latest generation of one package. */\nexport interface DoomReadinessSnapshot {\n readonly packageId: string;\n readonly generation: string;\n readonly state: DoomReadinessState;\n readonly diagnostics: readonly string[];\n readonly error?: DoomReadinessErrorDetail;\n}\n\nexport interface DoomReadinessTaskResult<TValue> {\n readonly value: TValue;\n readonly diagnostics?: readonly string[];\n}\n\nexport type DoomReadinessTask<TValue> = (signal: AbortSignal) => Promise<DoomReadinessTaskResult<TValue>>;\n\nexport interface DoomReadinessWaitOptions {\n readonly signal?: AbortSignal;\n}\n\nexport interface DoomReadinessHandle<TValue> {\n readonly packageId: string;\n readonly generation: string;\n /** Waits for this package only. Degraded initialization still returns its value. */\n wait(options?: DoomReadinessWaitOptions): Promise<TValue>;\n /** Reads this handle's generation, even after a newer generation replaces it. */\n snapshot(): DoomReadinessSnapshot;\n}\n\nexport interface DoomReadinessNotification {\n readonly packageId: string;\n readonly generation: string;\n readonly state: 'degraded' | 'failed';\n readonly diagnostics: readonly string[];\n readonly error?: DoomReadinessErrorDetail;\n}\n\nexport interface DoomReadinessCoordinatorOptions {\n /** Called once when a task becomes degraded or failed. */\n readonly notify?: (notification: DoomReadinessNotification) => void | Promise<void>;\n}\n\nexport interface DoomReadinessCoordinator {\n start<TValue>(packageId: string, generation: string, task: DoomReadinessTask<TValue>): DoomReadinessHandle<TValue>;\n /** Reads the latest generation registered for a package. */\n read(packageId: string): DoomReadinessSnapshot | undefined;\n /** Reads the latest generation of every registered package. */\n snapshots(): readonly DoomReadinessSnapshot[];\n /** Aborts pending work and waits for every started task to settle. */\n dispose(): Promise<void>;\n}\n\ninterface ReadinessRecord {\n readonly token: symbol;\n readonly packageId: string;\n readonly generation: string;\n readonly controller: AbortController;\n readonly terminal: Promise<void>;\n readonly resolveTerminal: () => void;\n operation: Promise<unknown>;\n state: DoomReadinessState;\n diagnostics: readonly string[];\n error?: DoomReadinessError;\n value?: unknown;\n hasValue: boolean;\n notified: boolean;\n}\n\nexport interface DoomReadinessErrorOptions {\n readonly packageId?: string;\n readonly generation?: string;\n readonly cause?: unknown;\n}\n\n/** Error returned to package callers without exposing task-specific rejection shapes. */\nexport class DoomReadinessError extends Error {\n readonly code: DoomReadinessErrorCode;\n readonly packageId?: string;\n readonly generation?: string;\n\n constructor(code: DoomReadinessErrorCode, message: string, input: DoomReadinessErrorOptions = {}) {\n super(message, input.cause === undefined ? undefined : { cause: input.cause });\n this.name = 'DoomReadinessError';\n this.code = code;\n this.packageId = input.packageId;\n this.generation = input.generation;\n }\n}\n\nfunction createTerminal(): { readonly promise: Promise<void>; readonly resolve: () => void } {\n let resolve = (): void => undefined;\n const promise = new Promise<void>((settle) => {\n resolve = settle;\n });\n return { promise, resolve };\n}\n\nfunction frozenDiagnostics(diagnostics: readonly string[] | undefined): readonly string[] {\n if (diagnostics === undefined) return Object.freeze([]);\n if (!Array.isArray(diagnostics) || diagnostics.some((diagnostic) => typeof diagnostic !== 'string')) {\n throw new TypeError('Doom readiness task diagnostics must be an array of strings.');\n }\n return Object.freeze([...diagnostics]);\n}\n\nfunction errorDetail(error: DoomReadinessError | undefined): DoomReadinessErrorDetail | undefined {\n return error === undefined ? undefined : Object.freeze({ code: error.code, message: error.message });\n}\n\nfunction recordSnapshot(record: ReadinessRecord): DoomReadinessSnapshot {\n return Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n state: record.state,\n diagnostics: record.diagnostics,\n ...(record.error === undefined ? {} : { error: errorDetail(record.error) }),\n });\n}\n\nfunction rethrowAsync(error: unknown): void {\n queueMicrotask(() => {\n throw error instanceof Error ? error : new Error(String(error));\n });\n}\n\nfunction waitAbortedError(record: ReadinessRecord, signal: AbortSignal): DoomReadinessError {\n return new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.waitAborted,\n `Waiting for Doom package '${record.packageId}' readiness was aborted.`,\n { packageId: record.packageId, generation: record.generation, cause: signal.reason },\n );\n}\n\nfunction waitForTerminal(record: ReadinessRecord, signal: AbortSignal | undefined): Promise<void> {\n if (signal === undefined) return record.terminal;\n if (signal.aborted) return Promise.reject(waitAbortedError(record, signal));\n\n return new Promise<void>((resolve, reject) => {\n const onAbort = (): void => {\n reject(waitAbortedError(record, signal));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n void record.terminal.then(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n });\n });\n}\n\n/** Creates the session-scoped coordinator value published through Cordis. */\nexport function createDoomReadinessCoordinator(\n options: DoomReadinessCoordinatorOptions = {},\n): DoomReadinessCoordinator {\n const records = new Map<string, ReadinessRecord>();\n let disposed = false;\n let disposal: Promise<void> | undefined;\n\n const current = (record: ReadinessRecord): boolean =>\n !disposed && records.get(record.packageId)?.token === record.token && record.state === 'pending';\n\n const notify = (record: ReadinessRecord): void => {\n if (record.notified || (record.state !== 'degraded' && record.state !== 'failed')) return;\n record.notified = true;\n const notification = Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n state: record.state,\n diagnostics: record.diagnostics,\n ...(record.error === undefined ? {} : { error: errorDetail(record.error) }),\n });\n if (options.notify) void Promise.resolve(options.notify(notification)).catch(rethrowAsync);\n };\n\n const finish = (\n record: ReadinessRecord,\n state: Exclude<DoomReadinessState, 'pending'>,\n input: {\n readonly value?: unknown;\n readonly hasValue?: boolean;\n readonly diagnostics?: readonly string[];\n readonly error?: DoomReadinessError;\n } = {},\n ): void => {\n if (!current(record)) return;\n record.state = state;\n record.value = input.value;\n record.hasValue = input.hasValue ?? false;\n record.diagnostics = input.diagnostics ?? Object.freeze([]);\n record.error = input.error;\n record.resolveTerminal();\n notify(record);\n };\n\n const handleFor = <TValue>(record: ReadinessRecord): DoomReadinessHandle<TValue> =>\n Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n snapshot: () => recordSnapshot(record),\n wait: async (waitOptions: DoomReadinessWaitOptions = {}): Promise<TValue> => {\n await waitForTerminal(record, waitOptions.signal);\n if (record.state === 'ready' || record.state === 'degraded') {\n if (!record.hasValue) {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${record.packageId}' readiness completed without a value.`,\n { packageId: record.packageId, generation: record.generation },\n );\n }\n return record.value as TValue;\n }\n if (record.error) throw record.error;\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${record.packageId}' readiness did not complete.`,\n { packageId: record.packageId, generation: record.generation },\n );\n },\n });\n\n return Object.freeze({\n start<TValue>(packageId: string, generation: string, task: DoomReadinessTask<TValue>): DoomReadinessHandle<TValue> {\n if (disposed) {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.disposed,\n 'The Doom readiness coordinator has been disposed.',\n { packageId, generation },\n );\n }\n if (typeof packageId !== 'string' || packageId.trim().length === 0) {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.invalidArgument,\n 'Doom readiness requires a non-empty package id.',\n { packageId, generation },\n );\n }\n if (typeof generation !== 'string' || generation.trim().length === 0) {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.invalidArgument,\n 'Doom readiness requires a non-empty generation.',\n { packageId, generation },\n );\n }\n if (typeof task !== 'function') {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.invalidArgument,\n 'Doom readiness requires an initialization task.',\n { packageId, generation },\n );\n }\n\n const previous = records.get(packageId);\n if (previous?.state === 'pending') {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.duplicate,\n `Doom package '${packageId}' already has live readiness work.`,\n { packageId, generation },\n );\n }\n\n const terminal = createTerminal();\n const controller = new AbortController();\n const record: ReadinessRecord = {\n token: Symbol(packageId),\n packageId,\n generation,\n controller,\n terminal: terminal.promise,\n resolveTerminal: terminal.resolve,\n operation: Promise.resolve(),\n state: 'pending',\n diagnostics: Object.freeze([]),\n hasValue: false,\n notified: false,\n };\n records.set(packageId, record);\n\n const operation = Promise.resolve().then(() => {\n if (controller.signal.aborted) throw controller.signal.reason;\n return task(controller.signal);\n });\n record.operation = operation;\n void operation\n .then(\n (result) => {\n if (!current(record)) return;\n if (result === null || typeof result !== 'object' || !Object.hasOwn(result, 'value')) {\n finish(record, 'failed', {\n error: new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${packageId}' returned an invalid readiness result.`,\n { packageId, generation },\n ),\n });\n return;\n }\n try {\n const diagnostics = frozenDiagnostics(result.diagnostics);\n finish(record, diagnostics.length === 0 ? 'ready' : 'degraded', {\n value: result.value,\n hasValue: true,\n diagnostics,\n });\n } catch (error) {\n finish(record, 'failed', {\n error: new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${packageId}' returned an invalid readiness result.`,\n { packageId, generation, cause: error },\n ),\n });\n }\n },\n (error: unknown) => {\n finish(record, 'failed', {\n error: new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${packageId}' readiness failed: ${error instanceof Error ? error.message : String(error)}`,\n { packageId, generation, cause: error },\n ),\n });\n },\n )\n .catch(rethrowAsync);\n\n return handleFor<TValue>(record);\n },\n\n read(packageId: string): DoomReadinessSnapshot | undefined {\n const record = records.get(packageId);\n return record === undefined ? undefined : recordSnapshot(record);\n },\n\n snapshots(): readonly DoomReadinessSnapshot[] {\n return Object.freeze([...records.values()].map(recordSnapshot));\n },\n\n dispose(): Promise<void> {\n if (disposal) return disposal;\n disposed = true;\n const operations = [...records.values()].map((record) => {\n if (record.state === 'pending') {\n const error = new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.cancelled,\n `Doom package '${record.packageId}' readiness was cancelled.`,\n { packageId: record.packageId, generation: record.generation },\n );\n record.state = 'cancelled';\n record.error = error;\n record.resolveTerminal();\n record.controller.abort(error);\n }\n return record.operation;\n });\n disposal = Promise.allSettled(operations).then(() => undefined);\n return disposal;\n },\n });\n}\n\n/** Reads the coordinator visible to the current Cordis plugin context. */\nexport function readDoomReadinessCoordinator(ctx: Context): DoomReadinessCoordinator | undefined {\n return ctx.get(DOOM_READINESS_SERVICE) as DoomReadinessCoordinator | undefined;\n}\n\n/** Reads the coordinator or reports that Config has not published session readiness. */\nexport function requireDoomReadinessCoordinator(ctx: Context): DoomReadinessCoordinator {\n const coordinator = readDoomReadinessCoordinator(ctx);\n if (coordinator) return coordinator;\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.unavailable,\n 'Doom readiness is unavailable. Load the Po Config core.',\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"readiness.cjs","names":[],"sources":["../../../src/schemas/readiness.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\n\n/** Cordis service name for session-scoped package initialization. */\nexport const PO_READINESS_SERVICE = 'po/readiness';\n\n/** Stable machine-readable failures produced by the readiness contract. */\nexport const PO_READINESS_ERROR_CODE = {\n cancelled: 'PO_READINESS_CANCELLED',\n disposed: 'PO_READINESS_DISPOSED',\n duplicate: 'PO_READINESS_DUPLICATE',\n failed: 'PO_READINESS_FAILED',\n invalidArgument: 'PO_READINESS_INVALID_ARGUMENT',\n unavailable: 'PO_READINESS_UNAVAILABLE',\n waitAborted: 'PO_READINESS_WAIT_ABORTED',\n} as const;\n\nexport type PoReadinessErrorCode = (typeof PO_READINESS_ERROR_CODE)[keyof typeof PO_READINESS_ERROR_CODE];\nexport type PoReadinessState = 'pending' | 'ready' | 'degraded' | 'failed' | 'cancelled';\n\nexport interface PoReadinessErrorDetail {\n readonly code: PoReadinessErrorCode;\n readonly message: string;\n}\n\n/** Immutable public state for the latest generation of one package. */\nexport interface PoReadinessSnapshot {\n readonly packageId: string;\n readonly generation: string;\n readonly state: PoReadinessState;\n readonly diagnostics: readonly string[];\n readonly error?: PoReadinessErrorDetail;\n}\n\nexport interface PoReadinessTaskResult<TValue> {\n readonly value: TValue;\n readonly diagnostics?: readonly string[];\n}\n\nexport type PoReadinessTask<TValue> = (signal: AbortSignal) => Promise<PoReadinessTaskResult<TValue>>;\n\nexport interface PoReadinessWaitOptions {\n readonly signal?: AbortSignal;\n}\n\nexport interface PoReadinessHandle<TValue> {\n readonly packageId: string;\n readonly generation: string;\n /** Waits for this package only. Degraded initialization still returns its value. */\n wait(options?: PoReadinessWaitOptions): Promise<TValue>;\n /** Reads this handle's generation, even after a newer generation replaces it. */\n snapshot(): PoReadinessSnapshot;\n}\n\nexport interface PoReadinessNotification {\n readonly packageId: string;\n readonly generation: string;\n readonly state: 'degraded' | 'failed';\n readonly diagnostics: readonly string[];\n readonly error?: PoReadinessErrorDetail;\n}\n\nexport interface PoReadinessCoordinatorOptions {\n /** Called once when a task becomes degraded or failed. */\n readonly notify?: (notification: PoReadinessNotification) => void | Promise<void>;\n}\n\nexport interface PoReadinessCoordinator {\n start<TValue>(packageId: string, generation: string, task: PoReadinessTask<TValue>): PoReadinessHandle<TValue>;\n /** Reads the latest generation registered for a package. */\n read(packageId: string): PoReadinessSnapshot | undefined;\n /** Reads the latest generation of every registered package. */\n snapshots(): readonly PoReadinessSnapshot[];\n /** Aborts pending work and waits for every started task to settle. */\n dispose(): Promise<void>;\n}\n\ninterface ReadinessRecord {\n readonly token: symbol;\n readonly packageId: string;\n readonly generation: string;\n readonly controller: AbortController;\n readonly terminal: Promise<void>;\n readonly resolveTerminal: () => void;\n operation: Promise<unknown>;\n state: PoReadinessState;\n diagnostics: readonly string[];\n error?: PoReadinessError;\n value?: unknown;\n hasValue: boolean;\n notified: boolean;\n}\n\nexport interface PoReadinessErrorOptions {\n readonly packageId?: string;\n readonly generation?: string;\n readonly cause?: unknown;\n}\n\n/** Error returned to package callers without exposing task-specific rejection shapes. */\nexport class PoReadinessError extends Error {\n readonly code: PoReadinessErrorCode;\n readonly packageId?: string;\n readonly generation?: string;\n\n constructor(code: PoReadinessErrorCode, message: string, input: PoReadinessErrorOptions = {}) {\n super(message, input.cause === undefined ? undefined : { cause: input.cause });\n this.name = 'PoReadinessError';\n this.code = code;\n this.packageId = input.packageId;\n this.generation = input.generation;\n }\n}\n\nfunction createTerminal(): { readonly promise: Promise<void>; readonly resolve: () => void } {\n let resolve = (): void => undefined;\n const promise = new Promise<void>((settle) => {\n resolve = settle;\n });\n return { promise, resolve };\n}\n\nfunction frozenDiagnostics(diagnostics: readonly string[] | undefined): readonly string[] {\n if (diagnostics === undefined) return Object.freeze([]);\n if (!Array.isArray(diagnostics) || diagnostics.some((diagnostic) => typeof diagnostic !== 'string')) {\n throw new TypeError('Po readiness task diagnostics must be an array of strings.');\n }\n return Object.freeze([...diagnostics]);\n}\n\nfunction errorDetail(error: PoReadinessError | undefined): PoReadinessErrorDetail | undefined {\n return error === undefined ? undefined : Object.freeze({ code: error.code, message: error.message });\n}\n\nfunction recordSnapshot(record: ReadinessRecord): PoReadinessSnapshot {\n return Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n state: record.state,\n diagnostics: record.diagnostics,\n ...(record.error === undefined ? {} : { error: errorDetail(record.error) }),\n });\n}\n\nfunction rethrowAsync(error: unknown): void {\n queueMicrotask(() => {\n throw error instanceof Error ? error : new Error(String(error));\n });\n}\n\nfunction waitAbortedError(record: ReadinessRecord, signal: AbortSignal): PoReadinessError {\n return new PoReadinessError(\n PO_READINESS_ERROR_CODE.waitAborted,\n `Waiting for Po package '${record.packageId}' readiness was aborted.`,\n { packageId: record.packageId, generation: record.generation, cause: signal.reason },\n );\n}\n\nfunction waitForTerminal(record: ReadinessRecord, signal: AbortSignal | undefined): Promise<void> {\n if (signal === undefined) return record.terminal;\n if (signal.aborted) return Promise.reject(waitAbortedError(record, signal));\n\n return new Promise<void>((resolve, reject) => {\n const onAbort = (): void => {\n reject(waitAbortedError(record, signal));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n void record.terminal.then(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n });\n });\n}\n\n/** Creates the session-scoped coordinator value published through Cordis. */\nexport function createPoReadinessCoordinator(options: PoReadinessCoordinatorOptions = {}): PoReadinessCoordinator {\n const records = new Map<string, ReadinessRecord>();\n let disposed = false;\n let disposal: Promise<void> | undefined;\n\n const current = (record: ReadinessRecord): boolean =>\n !disposed && records.get(record.packageId)?.token === record.token && record.state === 'pending';\n\n const notify = (record: ReadinessRecord): void => {\n if (record.notified || (record.state !== 'degraded' && record.state !== 'failed')) return;\n record.notified = true;\n const notification = Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n state: record.state,\n diagnostics: record.diagnostics,\n ...(record.error === undefined ? {} : { error: errorDetail(record.error) }),\n });\n if (options.notify) void Promise.resolve(options.notify(notification)).catch(rethrowAsync);\n };\n\n const finish = (\n record: ReadinessRecord,\n state: Exclude<PoReadinessState, 'pending'>,\n input: {\n readonly value?: unknown;\n readonly hasValue?: boolean;\n readonly diagnostics?: readonly string[];\n readonly error?: PoReadinessError;\n } = {},\n ): void => {\n if (!current(record)) return;\n record.state = state;\n record.value = input.value;\n record.hasValue = input.hasValue ?? false;\n record.diagnostics = input.diagnostics ?? Object.freeze([]);\n record.error = input.error;\n record.resolveTerminal();\n notify(record);\n };\n\n const handleFor = <TValue>(record: ReadinessRecord): PoReadinessHandle<TValue> =>\n Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n snapshot: () => recordSnapshot(record),\n wait: async (waitOptions: PoReadinessWaitOptions = {}): Promise<TValue> => {\n await waitForTerminal(record, waitOptions.signal);\n if (record.state === 'ready' || record.state === 'degraded') {\n if (!record.hasValue) {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${record.packageId}' readiness completed without a value.`,\n { packageId: record.packageId, generation: record.generation },\n );\n }\n return record.value as TValue;\n }\n if (record.error) throw record.error;\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${record.packageId}' readiness did not complete.`,\n { packageId: record.packageId, generation: record.generation },\n );\n },\n });\n\n return Object.freeze({\n start<TValue>(packageId: string, generation: string, task: PoReadinessTask<TValue>): PoReadinessHandle<TValue> {\n if (disposed) {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.disposed,\n 'The Po readiness coordinator has been disposed.',\n { packageId, generation },\n );\n }\n if (typeof packageId !== 'string' || packageId.trim().length === 0) {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.invalidArgument,\n 'Po readiness requires a non-empty package id.',\n { packageId, generation },\n );\n }\n if (typeof generation !== 'string' || generation.trim().length === 0) {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.invalidArgument,\n 'Po readiness requires a non-empty generation.',\n { packageId, generation },\n );\n }\n if (typeof task !== 'function') {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.invalidArgument,\n 'Po readiness requires an initialization task.',\n { packageId, generation },\n );\n }\n\n const previous = records.get(packageId);\n if (previous?.state === 'pending') {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.duplicate,\n `Po package '${packageId}' already has live readiness work.`,\n { packageId, generation },\n );\n }\n\n const terminal = createTerminal();\n const controller = new AbortController();\n const record: ReadinessRecord = {\n token: Symbol(packageId),\n packageId,\n generation,\n controller,\n terminal: terminal.promise,\n resolveTerminal: terminal.resolve,\n operation: Promise.resolve(),\n state: 'pending',\n diagnostics: Object.freeze([]),\n hasValue: false,\n notified: false,\n };\n records.set(packageId, record);\n\n const operation = Promise.resolve().then(() => {\n if (controller.signal.aborted) throw controller.signal.reason;\n return task(controller.signal);\n });\n record.operation = operation;\n void operation\n .then(\n (result) => {\n if (!current(record)) return;\n if (result === null || typeof result !== 'object' || !Object.hasOwn(result, 'value')) {\n finish(record, 'failed', {\n error: new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${packageId}' returned an invalid readiness result.`,\n { packageId, generation },\n ),\n });\n return;\n }\n try {\n const diagnostics = frozenDiagnostics(result.diagnostics);\n finish(record, diagnostics.length === 0 ? 'ready' : 'degraded', {\n value: result.value,\n hasValue: true,\n diagnostics,\n });\n } catch (error) {\n finish(record, 'failed', {\n error: new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${packageId}' returned an invalid readiness result.`,\n { packageId, generation, cause: error },\n ),\n });\n }\n },\n (error: unknown) => {\n finish(record, 'failed', {\n error: new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${packageId}' readiness failed: ${error instanceof Error ? error.message : String(error)}`,\n { packageId, generation, cause: error },\n ),\n });\n },\n )\n .catch(rethrowAsync);\n\n return handleFor<TValue>(record);\n },\n\n read(packageId: string): PoReadinessSnapshot | undefined {\n const record = records.get(packageId);\n return record === undefined ? undefined : recordSnapshot(record);\n },\n\n snapshots(): readonly PoReadinessSnapshot[] {\n return Object.freeze([...records.values()].map(recordSnapshot));\n },\n\n dispose(): Promise<void> {\n if (disposal) return disposal;\n disposed = true;\n const operations = [...records.values()].map((record) => {\n if (record.state === 'pending') {\n const error = new PoReadinessError(\n PO_READINESS_ERROR_CODE.cancelled,\n `Po package '${record.packageId}' readiness was cancelled.`,\n { packageId: record.packageId, generation: record.generation },\n );\n record.state = 'cancelled';\n record.error = error;\n record.resolveTerminal();\n record.controller.abort(error);\n }\n return record.operation;\n });\n disposal = Promise.allSettled(operations).then(() => undefined);\n return disposal;\n },\n });\n}\n\n/** Reads the coordinator visible to the current Cordis plugin context. */\nexport function readPoReadinessCoordinator(ctx: Context): PoReadinessCoordinator | undefined {\n return ctx.get(PO_READINESS_SERVICE) as PoReadinessCoordinator | undefined;\n}\n\n/** Reads the coordinator or reports that Config has not published session readiness. */\nexport function requirePoReadinessCoordinator(ctx: Context): PoReadinessCoordinator {\n const coordinator = readPoReadinessCoordinator(ctx);\n if (coordinator) return coordinator;\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.unavailable,\n 'Po readiness is unavailable. Load the Po Config core.',\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,84 +1,84 @@
|
|
|
1
1
|
import { Context } from "@deepseek-ai/cordis";
|
|
2
2
|
//#region src/schemas/readiness.d.ts
|
|
3
3
|
/** Cordis service name for session-scoped package initialization. */
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const PO_READINESS_SERVICE = "po/readiness";
|
|
5
5
|
/** Stable machine-readable failures produced by the readiness contract. */
|
|
6
|
-
export declare const
|
|
7
|
-
readonly cancelled: '
|
|
8
|
-
readonly disposed: '
|
|
9
|
-
readonly duplicate: '
|
|
10
|
-
readonly failed: '
|
|
11
|
-
readonly invalidArgument: '
|
|
12
|
-
readonly unavailable: '
|
|
13
|
-
readonly waitAborted: '
|
|
6
|
+
export declare const PO_READINESS_ERROR_CODE: {
|
|
7
|
+
readonly cancelled: 'PO_READINESS_CANCELLED';
|
|
8
|
+
readonly disposed: 'PO_READINESS_DISPOSED';
|
|
9
|
+
readonly duplicate: 'PO_READINESS_DUPLICATE';
|
|
10
|
+
readonly failed: 'PO_READINESS_FAILED';
|
|
11
|
+
readonly invalidArgument: 'PO_READINESS_INVALID_ARGUMENT';
|
|
12
|
+
readonly unavailable: 'PO_READINESS_UNAVAILABLE';
|
|
13
|
+
readonly waitAborted: 'PO_READINESS_WAIT_ABORTED';
|
|
14
14
|
};
|
|
15
|
-
export type
|
|
16
|
-
export type
|
|
17
|
-
export interface
|
|
18
|
-
readonly code:
|
|
15
|
+
export type PoReadinessErrorCode = (typeof PO_READINESS_ERROR_CODE)[keyof typeof PO_READINESS_ERROR_CODE];
|
|
16
|
+
export type PoReadinessState = 'pending' | 'ready' | 'degraded' | 'failed' | 'cancelled';
|
|
17
|
+
export interface PoReadinessErrorDetail {
|
|
18
|
+
readonly code: PoReadinessErrorCode;
|
|
19
19
|
readonly message: string;
|
|
20
20
|
}
|
|
21
21
|
/** Immutable public state for the latest generation of one package. */
|
|
22
|
-
export interface
|
|
22
|
+
export interface PoReadinessSnapshot {
|
|
23
23
|
readonly packageId: string;
|
|
24
24
|
readonly generation: string;
|
|
25
|
-
readonly state:
|
|
25
|
+
readonly state: PoReadinessState;
|
|
26
26
|
readonly diagnostics: readonly string[];
|
|
27
|
-
readonly error?:
|
|
27
|
+
readonly error?: PoReadinessErrorDetail;
|
|
28
28
|
}
|
|
29
|
-
export interface
|
|
29
|
+
export interface PoReadinessTaskResult<TValue> {
|
|
30
30
|
readonly value: TValue;
|
|
31
31
|
readonly diagnostics?: readonly string[];
|
|
32
32
|
}
|
|
33
|
-
export type
|
|
34
|
-
export interface
|
|
33
|
+
export type PoReadinessTask<TValue> = (signal: AbortSignal) => Promise<PoReadinessTaskResult<TValue>>;
|
|
34
|
+
export interface PoReadinessWaitOptions {
|
|
35
35
|
readonly signal?: AbortSignal;
|
|
36
36
|
}
|
|
37
|
-
export interface
|
|
37
|
+
export interface PoReadinessHandle<TValue> {
|
|
38
38
|
readonly packageId: string;
|
|
39
39
|
readonly generation: string;
|
|
40
40
|
/** Waits for this package only. Degraded initialization still returns its value. */
|
|
41
|
-
wait(options?:
|
|
41
|
+
wait(options?: PoReadinessWaitOptions): Promise<TValue>;
|
|
42
42
|
/** Reads this handle's generation, even after a newer generation replaces it. */
|
|
43
|
-
snapshot():
|
|
43
|
+
snapshot(): PoReadinessSnapshot;
|
|
44
44
|
}
|
|
45
|
-
export interface
|
|
45
|
+
export interface PoReadinessNotification {
|
|
46
46
|
readonly packageId: string;
|
|
47
47
|
readonly generation: string;
|
|
48
48
|
readonly state: 'degraded' | 'failed';
|
|
49
49
|
readonly diagnostics: readonly string[];
|
|
50
|
-
readonly error?:
|
|
50
|
+
readonly error?: PoReadinessErrorDetail;
|
|
51
51
|
}
|
|
52
|
-
export interface
|
|
52
|
+
export interface PoReadinessCoordinatorOptions {
|
|
53
53
|
/** Called once when a task becomes degraded or failed. */
|
|
54
|
-
readonly notify?: (notification:
|
|
54
|
+
readonly notify?: (notification: PoReadinessNotification) => void | Promise<void>;
|
|
55
55
|
}
|
|
56
|
-
export interface
|
|
57
|
-
start<TValue>(packageId: string, generation: string, task:
|
|
56
|
+
export interface PoReadinessCoordinator {
|
|
57
|
+
start<TValue>(packageId: string, generation: string, task: PoReadinessTask<TValue>): PoReadinessHandle<TValue>;
|
|
58
58
|
/** Reads the latest generation registered for a package. */
|
|
59
|
-
read(packageId: string):
|
|
59
|
+
read(packageId: string): PoReadinessSnapshot | undefined;
|
|
60
60
|
/** Reads the latest generation of every registered package. */
|
|
61
|
-
snapshots(): readonly
|
|
61
|
+
snapshots(): readonly PoReadinessSnapshot[];
|
|
62
62
|
/** Aborts pending work and waits for every started task to settle. */
|
|
63
63
|
dispose(): Promise<void>;
|
|
64
64
|
}
|
|
65
|
-
export interface
|
|
65
|
+
export interface PoReadinessErrorOptions {
|
|
66
66
|
readonly packageId?: string;
|
|
67
67
|
readonly generation?: string;
|
|
68
68
|
readonly cause?: unknown;
|
|
69
69
|
}
|
|
70
70
|
/** Error returned to package callers without exposing task-specific rejection shapes. */
|
|
71
|
-
export declare class
|
|
72
|
-
readonly code:
|
|
71
|
+
export declare class PoReadinessError extends Error {
|
|
72
|
+
readonly code: PoReadinessErrorCode;
|
|
73
73
|
readonly packageId?: string;
|
|
74
74
|
readonly generation?: string;
|
|
75
|
-
constructor(code:
|
|
75
|
+
constructor(code: PoReadinessErrorCode, message: string, input?: PoReadinessErrorOptions);
|
|
76
76
|
}
|
|
77
77
|
/** Creates the session-scoped coordinator value published through Cordis. */
|
|
78
|
-
export declare function
|
|
78
|
+
export declare function createPoReadinessCoordinator(options?: PoReadinessCoordinatorOptions): PoReadinessCoordinator;
|
|
79
79
|
/** Reads the coordinator visible to the current Cordis plugin context. */
|
|
80
|
-
export declare function
|
|
80
|
+
export declare function readPoReadinessCoordinator(ctx: Context): PoReadinessCoordinator | undefined;
|
|
81
81
|
/** Reads the coordinator or reports that Config has not published session readiness. */
|
|
82
|
-
export declare function
|
|
82
|
+
export declare function requirePoReadinessCoordinator(ctx: Context): PoReadinessCoordinator;
|
|
83
83
|
//#endregion
|
|
84
84
|
//# sourceMappingURL=readiness.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.d.mts","names":[],"sources":["../../../src/schemas/readiness.ts"],"mappings":";;;qBAGa;;qBAGA;WACX;WACA;WACA;WACA;WACA;WACA;WACA;;YAGU,
|
|
1
|
+
{"version":3,"file":"readiness.d.mts","names":[],"sources":["../../../src/schemas/readiness.ts"],"mappings":";;;qBAGa;;qBAGA;WACX;WACA;WACA;WACA;WACA;WACA;WACA;;YAGU,+BAA+B,sCAAsC;YACrE;iBAEK;WACN,MAAM;WACN;;;iBAIM;WACN;WACA;WACA,OAAO;WACP;WACA,QAAQ;;iBAGF,sBAAsB;WAC5B,OAAO;WACP;;YAGC,gBAAgB,WAAW,QAAQ,gBAAgB,QAAQ,sBAAsB;iBAE5E;WACN,SAAS;;iBAGH,kBAAkB;WACxB;WACA;;EAET,KAAK,UAAU,yBAAyB,QAAQ;;EAEhD,YAAY;;iBAGG;WACN;WACA;WACA;WACA;WACA,QAAQ;;iBAGF;;WAEN,UAAU,cAAc,mCAAmC;;iBAGrD;EACf,MAAM,QAAQ,mBAAmB,oBAAoB,MAAM,gBAAgB,UAAU,kBAAkB;;EAEvG,KAAK,oBAAoB;;EAEzB,sBAAsB;;EAEtB,WAAW;;iBAmBI;WACN;WACA;WACA;;;qBAIE,yBAAyB;WAC3B,MAAM;WACN;WACA;EAET,YAAY,MAAM,sBAAsB,iBAAiB,QAAO;;;wBAsElD,6BAA6B,UAAS,gCAAqC;;wBAgN3E,2BAA2B,KAAK,UAAU;;wBAK1C,8BAA8B,KAAK,UAAU"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
//#region src/schemas/readiness.ts
|
|
2
2
|
/** Cordis service name for session-scoped package initialization. */
|
|
3
|
-
const
|
|
3
|
+
const PO_READINESS_SERVICE = "po/readiness";
|
|
4
4
|
/** Stable machine-readable failures produced by the readiness contract. */
|
|
5
|
-
const
|
|
6
|
-
cancelled: "
|
|
7
|
-
disposed: "
|
|
8
|
-
duplicate: "
|
|
9
|
-
failed: "
|
|
10
|
-
invalidArgument: "
|
|
11
|
-
unavailable: "
|
|
12
|
-
waitAborted: "
|
|
5
|
+
const PO_READINESS_ERROR_CODE = {
|
|
6
|
+
cancelled: "PO_READINESS_CANCELLED",
|
|
7
|
+
disposed: "PO_READINESS_DISPOSED",
|
|
8
|
+
duplicate: "PO_READINESS_DUPLICATE",
|
|
9
|
+
failed: "PO_READINESS_FAILED",
|
|
10
|
+
invalidArgument: "PO_READINESS_INVALID_ARGUMENT",
|
|
11
|
+
unavailable: "PO_READINESS_UNAVAILABLE",
|
|
12
|
+
waitAborted: "PO_READINESS_WAIT_ABORTED"
|
|
13
13
|
};
|
|
14
14
|
/** Error returned to package callers without exposing task-specific rejection shapes. */
|
|
15
|
-
var
|
|
15
|
+
var PoReadinessError = class extends Error {
|
|
16
16
|
code;
|
|
17
17
|
packageId;
|
|
18
18
|
generation;
|
|
19
19
|
constructor(code, message, input = {}) {
|
|
20
20
|
super(message, input.cause === void 0 ? void 0 : { cause: input.cause });
|
|
21
|
-
this.name = "
|
|
21
|
+
this.name = "PoReadinessError";
|
|
22
22
|
this.code = code;
|
|
23
23
|
this.packageId = input.packageId;
|
|
24
24
|
this.generation = input.generation;
|
|
@@ -35,7 +35,7 @@ function createTerminal() {
|
|
|
35
35
|
}
|
|
36
36
|
function frozenDiagnostics(diagnostics) {
|
|
37
37
|
if (diagnostics === void 0) return Object.freeze([]);
|
|
38
|
-
if (!Array.isArray(diagnostics) || diagnostics.some((diagnostic) => typeof diagnostic !== "string")) throw new TypeError("
|
|
38
|
+
if (!Array.isArray(diagnostics) || diagnostics.some((diagnostic) => typeof diagnostic !== "string")) throw new TypeError("Po readiness task diagnostics must be an array of strings.");
|
|
39
39
|
return Object.freeze([...diagnostics]);
|
|
40
40
|
}
|
|
41
41
|
function errorDetail(error) {
|
|
@@ -59,7 +59,7 @@ function rethrowAsync(error) {
|
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
function waitAbortedError(record, signal) {
|
|
62
|
-
return new
|
|
62
|
+
return new PoReadinessError(PO_READINESS_ERROR_CODE.waitAborted, `Waiting for Po package '${record.packageId}' readiness was aborted.`, {
|
|
63
63
|
packageId: record.packageId,
|
|
64
64
|
generation: record.generation,
|
|
65
65
|
cause: signal.reason
|
|
@@ -80,7 +80,7 @@ function waitForTerminal(record, signal) {
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
/** Creates the session-scoped coordinator value published through Cordis. */
|
|
83
|
-
function
|
|
83
|
+
function createPoReadinessCoordinator(options = {}) {
|
|
84
84
|
const records = /* @__PURE__ */ new Map();
|
|
85
85
|
let disposed = false;
|
|
86
86
|
let disposal;
|
|
@@ -114,14 +114,14 @@ function createDoomReadinessCoordinator(options = {}) {
|
|
|
114
114
|
wait: async (waitOptions = {}) => {
|
|
115
115
|
await waitForTerminal(record, waitOptions.signal);
|
|
116
116
|
if (record.state === "ready" || record.state === "degraded") {
|
|
117
|
-
if (!record.hasValue) throw new
|
|
117
|
+
if (!record.hasValue) throw new PoReadinessError(PO_READINESS_ERROR_CODE.failed, `Po package '${record.packageId}' readiness completed without a value.`, {
|
|
118
118
|
packageId: record.packageId,
|
|
119
119
|
generation: record.generation
|
|
120
120
|
});
|
|
121
121
|
return record.value;
|
|
122
122
|
}
|
|
123
123
|
if (record.error) throw record.error;
|
|
124
|
-
throw new
|
|
124
|
+
throw new PoReadinessError(PO_READINESS_ERROR_CODE.failed, `Po package '${record.packageId}' readiness did not complete.`, {
|
|
125
125
|
packageId: record.packageId,
|
|
126
126
|
generation: record.generation
|
|
127
127
|
});
|
|
@@ -129,23 +129,23 @@ function createDoomReadinessCoordinator(options = {}) {
|
|
|
129
129
|
});
|
|
130
130
|
return Object.freeze({
|
|
131
131
|
start(packageId, generation, task) {
|
|
132
|
-
if (disposed) throw new
|
|
132
|
+
if (disposed) throw new PoReadinessError(PO_READINESS_ERROR_CODE.disposed, "The Po readiness coordinator has been disposed.", {
|
|
133
133
|
packageId,
|
|
134
134
|
generation
|
|
135
135
|
});
|
|
136
|
-
if (typeof packageId !== "string" || packageId.trim().length === 0) throw new
|
|
136
|
+
if (typeof packageId !== "string" || packageId.trim().length === 0) throw new PoReadinessError(PO_READINESS_ERROR_CODE.invalidArgument, "Po readiness requires a non-empty package id.", {
|
|
137
137
|
packageId,
|
|
138
138
|
generation
|
|
139
139
|
});
|
|
140
|
-
if (typeof generation !== "string" || generation.trim().length === 0) throw new
|
|
140
|
+
if (typeof generation !== "string" || generation.trim().length === 0) throw new PoReadinessError(PO_READINESS_ERROR_CODE.invalidArgument, "Po readiness requires a non-empty generation.", {
|
|
141
141
|
packageId,
|
|
142
142
|
generation
|
|
143
143
|
});
|
|
144
|
-
if (typeof task !== "function") throw new
|
|
144
|
+
if (typeof task !== "function") throw new PoReadinessError(PO_READINESS_ERROR_CODE.invalidArgument, "Po readiness requires an initialization task.", {
|
|
145
145
|
packageId,
|
|
146
146
|
generation
|
|
147
147
|
});
|
|
148
|
-
if (records.get(packageId)?.state === "pending") throw new
|
|
148
|
+
if (records.get(packageId)?.state === "pending") throw new PoReadinessError(PO_READINESS_ERROR_CODE.duplicate, `Po package '${packageId}' already has live readiness work.`, {
|
|
149
149
|
packageId,
|
|
150
150
|
generation
|
|
151
151
|
});
|
|
@@ -173,7 +173,7 @@ function createDoomReadinessCoordinator(options = {}) {
|
|
|
173
173
|
operation.then((result) => {
|
|
174
174
|
if (!current(record)) return;
|
|
175
175
|
if (result === null || typeof result !== "object" || !Object.hasOwn(result, "value")) {
|
|
176
|
-
finish(record, "failed", { error: new
|
|
176
|
+
finish(record, "failed", { error: new PoReadinessError(PO_READINESS_ERROR_CODE.failed, `Po package '${packageId}' returned an invalid readiness result.`, {
|
|
177
177
|
packageId,
|
|
178
178
|
generation
|
|
179
179
|
}) });
|
|
@@ -187,14 +187,14 @@ function createDoomReadinessCoordinator(options = {}) {
|
|
|
187
187
|
diagnostics
|
|
188
188
|
});
|
|
189
189
|
} catch (error) {
|
|
190
|
-
finish(record, "failed", { error: new
|
|
190
|
+
finish(record, "failed", { error: new PoReadinessError(PO_READINESS_ERROR_CODE.failed, `Po package '${packageId}' returned an invalid readiness result.`, {
|
|
191
191
|
packageId,
|
|
192
192
|
generation,
|
|
193
193
|
cause: error
|
|
194
194
|
}) });
|
|
195
195
|
}
|
|
196
196
|
}, (error) => {
|
|
197
|
-
finish(record, "failed", { error: new
|
|
197
|
+
finish(record, "failed", { error: new PoReadinessError(PO_READINESS_ERROR_CODE.failed, `Po package '${packageId}' readiness failed: ${error instanceof Error ? error.message : String(error)}`, {
|
|
198
198
|
packageId,
|
|
199
199
|
generation,
|
|
200
200
|
cause: error
|
|
@@ -214,7 +214,7 @@ function createDoomReadinessCoordinator(options = {}) {
|
|
|
214
214
|
disposed = true;
|
|
215
215
|
const operations = [...records.values()].map((record) => {
|
|
216
216
|
if (record.state === "pending") {
|
|
217
|
-
const error = new
|
|
217
|
+
const error = new PoReadinessError(PO_READINESS_ERROR_CODE.cancelled, `Po package '${record.packageId}' readiness was cancelled.`, {
|
|
218
218
|
packageId: record.packageId,
|
|
219
219
|
generation: record.generation
|
|
220
220
|
});
|
|
@@ -231,16 +231,16 @@ function createDoomReadinessCoordinator(options = {}) {
|
|
|
231
231
|
});
|
|
232
232
|
}
|
|
233
233
|
/** Reads the coordinator visible to the current Cordis plugin context. */
|
|
234
|
-
function
|
|
235
|
-
return ctx.get(
|
|
234
|
+
function readPoReadinessCoordinator(ctx) {
|
|
235
|
+
return ctx.get(PO_READINESS_SERVICE);
|
|
236
236
|
}
|
|
237
237
|
/** Reads the coordinator or reports that Config has not published session readiness. */
|
|
238
|
-
function
|
|
239
|
-
const coordinator =
|
|
238
|
+
function requirePoReadinessCoordinator(ctx) {
|
|
239
|
+
const coordinator = readPoReadinessCoordinator(ctx);
|
|
240
240
|
if (coordinator) return coordinator;
|
|
241
|
-
throw new
|
|
241
|
+
throw new PoReadinessError(PO_READINESS_ERROR_CODE.unavailable, "Po readiness is unavailable. Load the Po Config core.");
|
|
242
242
|
}
|
|
243
243
|
//#endregion
|
|
244
|
-
export {
|
|
244
|
+
export { PO_READINESS_ERROR_CODE, PO_READINESS_SERVICE, PoReadinessError, createPoReadinessCoordinator, readPoReadinessCoordinator, requirePoReadinessCoordinator };
|
|
245
245
|
|
|
246
246
|
//# sourceMappingURL=readiness.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.mjs","names":[],"sources":["../../../src/schemas/readiness.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\n\n/** Cordis service name for session-scoped package initialization. */\nexport const DOOM_READINESS_SERVICE = 'doom/readiness';\n\n/** Stable machine-readable failures produced by the readiness contract. */\nexport const DOOM_READINESS_ERROR_CODE = {\n cancelled: 'DOOM_READINESS_CANCELLED',\n disposed: 'DOOM_READINESS_DISPOSED',\n duplicate: 'DOOM_READINESS_DUPLICATE',\n failed: 'DOOM_READINESS_FAILED',\n invalidArgument: 'DOOM_READINESS_INVALID_ARGUMENT',\n unavailable: 'DOOM_READINESS_UNAVAILABLE',\n waitAborted: 'DOOM_READINESS_WAIT_ABORTED',\n} as const;\n\nexport type DoomReadinessErrorCode = (typeof DOOM_READINESS_ERROR_CODE)[keyof typeof DOOM_READINESS_ERROR_CODE];\nexport type DoomReadinessState = 'pending' | 'ready' | 'degraded' | 'failed' | 'cancelled';\n\nexport interface DoomReadinessErrorDetail {\n readonly code: DoomReadinessErrorCode;\n readonly message: string;\n}\n\n/** Immutable public state for the latest generation of one package. */\nexport interface DoomReadinessSnapshot {\n readonly packageId: string;\n readonly generation: string;\n readonly state: DoomReadinessState;\n readonly diagnostics: readonly string[];\n readonly error?: DoomReadinessErrorDetail;\n}\n\nexport interface DoomReadinessTaskResult<TValue> {\n readonly value: TValue;\n readonly diagnostics?: readonly string[];\n}\n\nexport type DoomReadinessTask<TValue> = (signal: AbortSignal) => Promise<DoomReadinessTaskResult<TValue>>;\n\nexport interface DoomReadinessWaitOptions {\n readonly signal?: AbortSignal;\n}\n\nexport interface DoomReadinessHandle<TValue> {\n readonly packageId: string;\n readonly generation: string;\n /** Waits for this package only. Degraded initialization still returns its value. */\n wait(options?: DoomReadinessWaitOptions): Promise<TValue>;\n /** Reads this handle's generation, even after a newer generation replaces it. */\n snapshot(): DoomReadinessSnapshot;\n}\n\nexport interface DoomReadinessNotification {\n readonly packageId: string;\n readonly generation: string;\n readonly state: 'degraded' | 'failed';\n readonly diagnostics: readonly string[];\n readonly error?: DoomReadinessErrorDetail;\n}\n\nexport interface DoomReadinessCoordinatorOptions {\n /** Called once when a task becomes degraded or failed. */\n readonly notify?: (notification: DoomReadinessNotification) => void | Promise<void>;\n}\n\nexport interface DoomReadinessCoordinator {\n start<TValue>(packageId: string, generation: string, task: DoomReadinessTask<TValue>): DoomReadinessHandle<TValue>;\n /** Reads the latest generation registered for a package. */\n read(packageId: string): DoomReadinessSnapshot | undefined;\n /** Reads the latest generation of every registered package. */\n snapshots(): readonly DoomReadinessSnapshot[];\n /** Aborts pending work and waits for every started task to settle. */\n dispose(): Promise<void>;\n}\n\ninterface ReadinessRecord {\n readonly token: symbol;\n readonly packageId: string;\n readonly generation: string;\n readonly controller: AbortController;\n readonly terminal: Promise<void>;\n readonly resolveTerminal: () => void;\n operation: Promise<unknown>;\n state: DoomReadinessState;\n diagnostics: readonly string[];\n error?: DoomReadinessError;\n value?: unknown;\n hasValue: boolean;\n notified: boolean;\n}\n\nexport interface DoomReadinessErrorOptions {\n readonly packageId?: string;\n readonly generation?: string;\n readonly cause?: unknown;\n}\n\n/** Error returned to package callers without exposing task-specific rejection shapes. */\nexport class DoomReadinessError extends Error {\n readonly code: DoomReadinessErrorCode;\n readonly packageId?: string;\n readonly generation?: string;\n\n constructor(code: DoomReadinessErrorCode, message: string, input: DoomReadinessErrorOptions = {}) {\n super(message, input.cause === undefined ? undefined : { cause: input.cause });\n this.name = 'DoomReadinessError';\n this.code = code;\n this.packageId = input.packageId;\n this.generation = input.generation;\n }\n}\n\nfunction createTerminal(): { readonly promise: Promise<void>; readonly resolve: () => void } {\n let resolve = (): void => undefined;\n const promise = new Promise<void>((settle) => {\n resolve = settle;\n });\n return { promise, resolve };\n}\n\nfunction frozenDiagnostics(diagnostics: readonly string[] | undefined): readonly string[] {\n if (diagnostics === undefined) return Object.freeze([]);\n if (!Array.isArray(diagnostics) || diagnostics.some((diagnostic) => typeof diagnostic !== 'string')) {\n throw new TypeError('Doom readiness task diagnostics must be an array of strings.');\n }\n return Object.freeze([...diagnostics]);\n}\n\nfunction errorDetail(error: DoomReadinessError | undefined): DoomReadinessErrorDetail | undefined {\n return error === undefined ? undefined : Object.freeze({ code: error.code, message: error.message });\n}\n\nfunction recordSnapshot(record: ReadinessRecord): DoomReadinessSnapshot {\n return Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n state: record.state,\n diagnostics: record.diagnostics,\n ...(record.error === undefined ? {} : { error: errorDetail(record.error) }),\n });\n}\n\nfunction rethrowAsync(error: unknown): void {\n queueMicrotask(() => {\n throw error instanceof Error ? error : new Error(String(error));\n });\n}\n\nfunction waitAbortedError(record: ReadinessRecord, signal: AbortSignal): DoomReadinessError {\n return new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.waitAborted,\n `Waiting for Doom package '${record.packageId}' readiness was aborted.`,\n { packageId: record.packageId, generation: record.generation, cause: signal.reason },\n );\n}\n\nfunction waitForTerminal(record: ReadinessRecord, signal: AbortSignal | undefined): Promise<void> {\n if (signal === undefined) return record.terminal;\n if (signal.aborted) return Promise.reject(waitAbortedError(record, signal));\n\n return new Promise<void>((resolve, reject) => {\n const onAbort = (): void => {\n reject(waitAbortedError(record, signal));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n void record.terminal.then(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n });\n });\n}\n\n/** Creates the session-scoped coordinator value published through Cordis. */\nexport function createDoomReadinessCoordinator(\n options: DoomReadinessCoordinatorOptions = {},\n): DoomReadinessCoordinator {\n const records = new Map<string, ReadinessRecord>();\n let disposed = false;\n let disposal: Promise<void> | undefined;\n\n const current = (record: ReadinessRecord): boolean =>\n !disposed && records.get(record.packageId)?.token === record.token && record.state === 'pending';\n\n const notify = (record: ReadinessRecord): void => {\n if (record.notified || (record.state !== 'degraded' && record.state !== 'failed')) return;\n record.notified = true;\n const notification = Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n state: record.state,\n diagnostics: record.diagnostics,\n ...(record.error === undefined ? {} : { error: errorDetail(record.error) }),\n });\n if (options.notify) void Promise.resolve(options.notify(notification)).catch(rethrowAsync);\n };\n\n const finish = (\n record: ReadinessRecord,\n state: Exclude<DoomReadinessState, 'pending'>,\n input: {\n readonly value?: unknown;\n readonly hasValue?: boolean;\n readonly diagnostics?: readonly string[];\n readonly error?: DoomReadinessError;\n } = {},\n ): void => {\n if (!current(record)) return;\n record.state = state;\n record.value = input.value;\n record.hasValue = input.hasValue ?? false;\n record.diagnostics = input.diagnostics ?? Object.freeze([]);\n record.error = input.error;\n record.resolveTerminal();\n notify(record);\n };\n\n const handleFor = <TValue>(record: ReadinessRecord): DoomReadinessHandle<TValue> =>\n Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n snapshot: () => recordSnapshot(record),\n wait: async (waitOptions: DoomReadinessWaitOptions = {}): Promise<TValue> => {\n await waitForTerminal(record, waitOptions.signal);\n if (record.state === 'ready' || record.state === 'degraded') {\n if (!record.hasValue) {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${record.packageId}' readiness completed without a value.`,\n { packageId: record.packageId, generation: record.generation },\n );\n }\n return record.value as TValue;\n }\n if (record.error) throw record.error;\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${record.packageId}' readiness did not complete.`,\n { packageId: record.packageId, generation: record.generation },\n );\n },\n });\n\n return Object.freeze({\n start<TValue>(packageId: string, generation: string, task: DoomReadinessTask<TValue>): DoomReadinessHandle<TValue> {\n if (disposed) {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.disposed,\n 'The Doom readiness coordinator has been disposed.',\n { packageId, generation },\n );\n }\n if (typeof packageId !== 'string' || packageId.trim().length === 0) {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.invalidArgument,\n 'Doom readiness requires a non-empty package id.',\n { packageId, generation },\n );\n }\n if (typeof generation !== 'string' || generation.trim().length === 0) {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.invalidArgument,\n 'Doom readiness requires a non-empty generation.',\n { packageId, generation },\n );\n }\n if (typeof task !== 'function') {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.invalidArgument,\n 'Doom readiness requires an initialization task.',\n { packageId, generation },\n );\n }\n\n const previous = records.get(packageId);\n if (previous?.state === 'pending') {\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.duplicate,\n `Doom package '${packageId}' already has live readiness work.`,\n { packageId, generation },\n );\n }\n\n const terminal = createTerminal();\n const controller = new AbortController();\n const record: ReadinessRecord = {\n token: Symbol(packageId),\n packageId,\n generation,\n controller,\n terminal: terminal.promise,\n resolveTerminal: terminal.resolve,\n operation: Promise.resolve(),\n state: 'pending',\n diagnostics: Object.freeze([]),\n hasValue: false,\n notified: false,\n };\n records.set(packageId, record);\n\n const operation = Promise.resolve().then(() => {\n if (controller.signal.aborted) throw controller.signal.reason;\n return task(controller.signal);\n });\n record.operation = operation;\n void operation\n .then(\n (result) => {\n if (!current(record)) return;\n if (result === null || typeof result !== 'object' || !Object.hasOwn(result, 'value')) {\n finish(record, 'failed', {\n error: new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${packageId}' returned an invalid readiness result.`,\n { packageId, generation },\n ),\n });\n return;\n }\n try {\n const diagnostics = frozenDiagnostics(result.diagnostics);\n finish(record, diagnostics.length === 0 ? 'ready' : 'degraded', {\n value: result.value,\n hasValue: true,\n diagnostics,\n });\n } catch (error) {\n finish(record, 'failed', {\n error: new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${packageId}' returned an invalid readiness result.`,\n { packageId, generation, cause: error },\n ),\n });\n }\n },\n (error: unknown) => {\n finish(record, 'failed', {\n error: new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.failed,\n `Doom package '${packageId}' readiness failed: ${error instanceof Error ? error.message : String(error)}`,\n { packageId, generation, cause: error },\n ),\n });\n },\n )\n .catch(rethrowAsync);\n\n return handleFor<TValue>(record);\n },\n\n read(packageId: string): DoomReadinessSnapshot | undefined {\n const record = records.get(packageId);\n return record === undefined ? undefined : recordSnapshot(record);\n },\n\n snapshots(): readonly DoomReadinessSnapshot[] {\n return Object.freeze([...records.values()].map(recordSnapshot));\n },\n\n dispose(): Promise<void> {\n if (disposal) return disposal;\n disposed = true;\n const operations = [...records.values()].map((record) => {\n if (record.state === 'pending') {\n const error = new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.cancelled,\n `Doom package '${record.packageId}' readiness was cancelled.`,\n { packageId: record.packageId, generation: record.generation },\n );\n record.state = 'cancelled';\n record.error = error;\n record.resolveTerminal();\n record.controller.abort(error);\n }\n return record.operation;\n });\n disposal = Promise.allSettled(operations).then(() => undefined);\n return disposal;\n },\n });\n}\n\n/** Reads the coordinator visible to the current Cordis plugin context. */\nexport function readDoomReadinessCoordinator(ctx: Context): DoomReadinessCoordinator | undefined {\n return ctx.get(DOOM_READINESS_SERVICE) as DoomReadinessCoordinator | undefined;\n}\n\n/** Reads the coordinator or reports that Config has not published session readiness. */\nexport function requireDoomReadinessCoordinator(ctx: Context): DoomReadinessCoordinator {\n const coordinator = readDoomReadinessCoordinator(ctx);\n if (coordinator) return coordinator;\n throw new DoomReadinessError(\n DOOM_READINESS_ERROR_CODE.unavailable,\n 'Doom readiness is unavailable. Load the Po Config core.',\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"readiness.mjs","names":[],"sources":["../../../src/schemas/readiness.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\n\n/** Cordis service name for session-scoped package initialization. */\nexport const PO_READINESS_SERVICE = 'po/readiness';\n\n/** Stable machine-readable failures produced by the readiness contract. */\nexport const PO_READINESS_ERROR_CODE = {\n cancelled: 'PO_READINESS_CANCELLED',\n disposed: 'PO_READINESS_DISPOSED',\n duplicate: 'PO_READINESS_DUPLICATE',\n failed: 'PO_READINESS_FAILED',\n invalidArgument: 'PO_READINESS_INVALID_ARGUMENT',\n unavailable: 'PO_READINESS_UNAVAILABLE',\n waitAborted: 'PO_READINESS_WAIT_ABORTED',\n} as const;\n\nexport type PoReadinessErrorCode = (typeof PO_READINESS_ERROR_CODE)[keyof typeof PO_READINESS_ERROR_CODE];\nexport type PoReadinessState = 'pending' | 'ready' | 'degraded' | 'failed' | 'cancelled';\n\nexport interface PoReadinessErrorDetail {\n readonly code: PoReadinessErrorCode;\n readonly message: string;\n}\n\n/** Immutable public state for the latest generation of one package. */\nexport interface PoReadinessSnapshot {\n readonly packageId: string;\n readonly generation: string;\n readonly state: PoReadinessState;\n readonly diagnostics: readonly string[];\n readonly error?: PoReadinessErrorDetail;\n}\n\nexport interface PoReadinessTaskResult<TValue> {\n readonly value: TValue;\n readonly diagnostics?: readonly string[];\n}\n\nexport type PoReadinessTask<TValue> = (signal: AbortSignal) => Promise<PoReadinessTaskResult<TValue>>;\n\nexport interface PoReadinessWaitOptions {\n readonly signal?: AbortSignal;\n}\n\nexport interface PoReadinessHandle<TValue> {\n readonly packageId: string;\n readonly generation: string;\n /** Waits for this package only. Degraded initialization still returns its value. */\n wait(options?: PoReadinessWaitOptions): Promise<TValue>;\n /** Reads this handle's generation, even after a newer generation replaces it. */\n snapshot(): PoReadinessSnapshot;\n}\n\nexport interface PoReadinessNotification {\n readonly packageId: string;\n readonly generation: string;\n readonly state: 'degraded' | 'failed';\n readonly diagnostics: readonly string[];\n readonly error?: PoReadinessErrorDetail;\n}\n\nexport interface PoReadinessCoordinatorOptions {\n /** Called once when a task becomes degraded or failed. */\n readonly notify?: (notification: PoReadinessNotification) => void | Promise<void>;\n}\n\nexport interface PoReadinessCoordinator {\n start<TValue>(packageId: string, generation: string, task: PoReadinessTask<TValue>): PoReadinessHandle<TValue>;\n /** Reads the latest generation registered for a package. */\n read(packageId: string): PoReadinessSnapshot | undefined;\n /** Reads the latest generation of every registered package. */\n snapshots(): readonly PoReadinessSnapshot[];\n /** Aborts pending work and waits for every started task to settle. */\n dispose(): Promise<void>;\n}\n\ninterface ReadinessRecord {\n readonly token: symbol;\n readonly packageId: string;\n readonly generation: string;\n readonly controller: AbortController;\n readonly terminal: Promise<void>;\n readonly resolveTerminal: () => void;\n operation: Promise<unknown>;\n state: PoReadinessState;\n diagnostics: readonly string[];\n error?: PoReadinessError;\n value?: unknown;\n hasValue: boolean;\n notified: boolean;\n}\n\nexport interface PoReadinessErrorOptions {\n readonly packageId?: string;\n readonly generation?: string;\n readonly cause?: unknown;\n}\n\n/** Error returned to package callers without exposing task-specific rejection shapes. */\nexport class PoReadinessError extends Error {\n readonly code: PoReadinessErrorCode;\n readonly packageId?: string;\n readonly generation?: string;\n\n constructor(code: PoReadinessErrorCode, message: string, input: PoReadinessErrorOptions = {}) {\n super(message, input.cause === undefined ? undefined : { cause: input.cause });\n this.name = 'PoReadinessError';\n this.code = code;\n this.packageId = input.packageId;\n this.generation = input.generation;\n }\n}\n\nfunction createTerminal(): { readonly promise: Promise<void>; readonly resolve: () => void } {\n let resolve = (): void => undefined;\n const promise = new Promise<void>((settle) => {\n resolve = settle;\n });\n return { promise, resolve };\n}\n\nfunction frozenDiagnostics(diagnostics: readonly string[] | undefined): readonly string[] {\n if (diagnostics === undefined) return Object.freeze([]);\n if (!Array.isArray(diagnostics) || diagnostics.some((diagnostic) => typeof diagnostic !== 'string')) {\n throw new TypeError('Po readiness task diagnostics must be an array of strings.');\n }\n return Object.freeze([...diagnostics]);\n}\n\nfunction errorDetail(error: PoReadinessError | undefined): PoReadinessErrorDetail | undefined {\n return error === undefined ? undefined : Object.freeze({ code: error.code, message: error.message });\n}\n\nfunction recordSnapshot(record: ReadinessRecord): PoReadinessSnapshot {\n return Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n state: record.state,\n diagnostics: record.diagnostics,\n ...(record.error === undefined ? {} : { error: errorDetail(record.error) }),\n });\n}\n\nfunction rethrowAsync(error: unknown): void {\n queueMicrotask(() => {\n throw error instanceof Error ? error : new Error(String(error));\n });\n}\n\nfunction waitAbortedError(record: ReadinessRecord, signal: AbortSignal): PoReadinessError {\n return new PoReadinessError(\n PO_READINESS_ERROR_CODE.waitAborted,\n `Waiting for Po package '${record.packageId}' readiness was aborted.`,\n { packageId: record.packageId, generation: record.generation, cause: signal.reason },\n );\n}\n\nfunction waitForTerminal(record: ReadinessRecord, signal: AbortSignal | undefined): Promise<void> {\n if (signal === undefined) return record.terminal;\n if (signal.aborted) return Promise.reject(waitAbortedError(record, signal));\n\n return new Promise<void>((resolve, reject) => {\n const onAbort = (): void => {\n reject(waitAbortedError(record, signal));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n void record.terminal.then(() => {\n signal.removeEventListener('abort', onAbort);\n resolve();\n });\n });\n}\n\n/** Creates the session-scoped coordinator value published through Cordis. */\nexport function createPoReadinessCoordinator(options: PoReadinessCoordinatorOptions = {}): PoReadinessCoordinator {\n const records = new Map<string, ReadinessRecord>();\n let disposed = false;\n let disposal: Promise<void> | undefined;\n\n const current = (record: ReadinessRecord): boolean =>\n !disposed && records.get(record.packageId)?.token === record.token && record.state === 'pending';\n\n const notify = (record: ReadinessRecord): void => {\n if (record.notified || (record.state !== 'degraded' && record.state !== 'failed')) return;\n record.notified = true;\n const notification = Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n state: record.state,\n diagnostics: record.diagnostics,\n ...(record.error === undefined ? {} : { error: errorDetail(record.error) }),\n });\n if (options.notify) void Promise.resolve(options.notify(notification)).catch(rethrowAsync);\n };\n\n const finish = (\n record: ReadinessRecord,\n state: Exclude<PoReadinessState, 'pending'>,\n input: {\n readonly value?: unknown;\n readonly hasValue?: boolean;\n readonly diagnostics?: readonly string[];\n readonly error?: PoReadinessError;\n } = {},\n ): void => {\n if (!current(record)) return;\n record.state = state;\n record.value = input.value;\n record.hasValue = input.hasValue ?? false;\n record.diagnostics = input.diagnostics ?? Object.freeze([]);\n record.error = input.error;\n record.resolveTerminal();\n notify(record);\n };\n\n const handleFor = <TValue>(record: ReadinessRecord): PoReadinessHandle<TValue> =>\n Object.freeze({\n packageId: record.packageId,\n generation: record.generation,\n snapshot: () => recordSnapshot(record),\n wait: async (waitOptions: PoReadinessWaitOptions = {}): Promise<TValue> => {\n await waitForTerminal(record, waitOptions.signal);\n if (record.state === 'ready' || record.state === 'degraded') {\n if (!record.hasValue) {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${record.packageId}' readiness completed without a value.`,\n { packageId: record.packageId, generation: record.generation },\n );\n }\n return record.value as TValue;\n }\n if (record.error) throw record.error;\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${record.packageId}' readiness did not complete.`,\n { packageId: record.packageId, generation: record.generation },\n );\n },\n });\n\n return Object.freeze({\n start<TValue>(packageId: string, generation: string, task: PoReadinessTask<TValue>): PoReadinessHandle<TValue> {\n if (disposed) {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.disposed,\n 'The Po readiness coordinator has been disposed.',\n { packageId, generation },\n );\n }\n if (typeof packageId !== 'string' || packageId.trim().length === 0) {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.invalidArgument,\n 'Po readiness requires a non-empty package id.',\n { packageId, generation },\n );\n }\n if (typeof generation !== 'string' || generation.trim().length === 0) {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.invalidArgument,\n 'Po readiness requires a non-empty generation.',\n { packageId, generation },\n );\n }\n if (typeof task !== 'function') {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.invalidArgument,\n 'Po readiness requires an initialization task.',\n { packageId, generation },\n );\n }\n\n const previous = records.get(packageId);\n if (previous?.state === 'pending') {\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.duplicate,\n `Po package '${packageId}' already has live readiness work.`,\n { packageId, generation },\n );\n }\n\n const terminal = createTerminal();\n const controller = new AbortController();\n const record: ReadinessRecord = {\n token: Symbol(packageId),\n packageId,\n generation,\n controller,\n terminal: terminal.promise,\n resolveTerminal: terminal.resolve,\n operation: Promise.resolve(),\n state: 'pending',\n diagnostics: Object.freeze([]),\n hasValue: false,\n notified: false,\n };\n records.set(packageId, record);\n\n const operation = Promise.resolve().then(() => {\n if (controller.signal.aborted) throw controller.signal.reason;\n return task(controller.signal);\n });\n record.operation = operation;\n void operation\n .then(\n (result) => {\n if (!current(record)) return;\n if (result === null || typeof result !== 'object' || !Object.hasOwn(result, 'value')) {\n finish(record, 'failed', {\n error: new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${packageId}' returned an invalid readiness result.`,\n { packageId, generation },\n ),\n });\n return;\n }\n try {\n const diagnostics = frozenDiagnostics(result.diagnostics);\n finish(record, diagnostics.length === 0 ? 'ready' : 'degraded', {\n value: result.value,\n hasValue: true,\n diagnostics,\n });\n } catch (error) {\n finish(record, 'failed', {\n error: new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${packageId}' returned an invalid readiness result.`,\n { packageId, generation, cause: error },\n ),\n });\n }\n },\n (error: unknown) => {\n finish(record, 'failed', {\n error: new PoReadinessError(\n PO_READINESS_ERROR_CODE.failed,\n `Po package '${packageId}' readiness failed: ${error instanceof Error ? error.message : String(error)}`,\n { packageId, generation, cause: error },\n ),\n });\n },\n )\n .catch(rethrowAsync);\n\n return handleFor<TValue>(record);\n },\n\n read(packageId: string): PoReadinessSnapshot | undefined {\n const record = records.get(packageId);\n return record === undefined ? undefined : recordSnapshot(record);\n },\n\n snapshots(): readonly PoReadinessSnapshot[] {\n return Object.freeze([...records.values()].map(recordSnapshot));\n },\n\n dispose(): Promise<void> {\n if (disposal) return disposal;\n disposed = true;\n const operations = [...records.values()].map((record) => {\n if (record.state === 'pending') {\n const error = new PoReadinessError(\n PO_READINESS_ERROR_CODE.cancelled,\n `Po package '${record.packageId}' readiness was cancelled.`,\n { packageId: record.packageId, generation: record.generation },\n );\n record.state = 'cancelled';\n record.error = error;\n record.resolveTerminal();\n record.controller.abort(error);\n }\n return record.operation;\n });\n disposal = Promise.allSettled(operations).then(() => undefined);\n return disposal;\n },\n });\n}\n\n/** Reads the coordinator visible to the current Cordis plugin context. */\nexport function readPoReadinessCoordinator(ctx: Context): PoReadinessCoordinator | undefined {\n return ctx.get(PO_READINESS_SERVICE) as PoReadinessCoordinator | undefined;\n}\n\n/** Reads the coordinator or reports that Config has not published session readiness. */\nexport function requirePoReadinessCoordinator(ctx: Context): PoReadinessCoordinator {\n const coordinator = readPoReadinessCoordinator(ctx);\n if (coordinator) return coordinator;\n throw new PoReadinessError(\n PO_READINESS_ERROR_CODE.unavailable,\n 'Po readiness is unavailable. Load the Po Config core.',\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PoApiScope } from "./packageApi.mjs";
|
|
2
2
|
//#region src/schemas/serverBundle.d.ts
|
|
3
3
|
/** Every occurrence that can activate a package in this repository. */
|
|
4
|
-
export interface
|
|
4
|
+
export interface PoServerBundleOwner {
|
|
5
5
|
readonly majorMode: string;
|
|
6
6
|
readonly layer: string;
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
8
|
+
export interface PoServerBundleEntry {
|
|
9
9
|
readonly packageName: string;
|
|
10
10
|
/** The declared package-relative source entry, retained for attribution. */
|
|
11
11
|
readonly entry: string;
|
|
12
12
|
/** Absolute path of the package's built module; the live loader imports it from its content URL. */
|
|
13
13
|
readonly module: string;
|
|
14
|
-
readonly scopes: readonly
|
|
15
|
-
readonly owners: readonly
|
|
14
|
+
readonly scopes: readonly PoApiScope[];
|
|
15
|
+
readonly owners: readonly PoServerBundleOwner[];
|
|
16
16
|
readonly required: boolean;
|
|
17
17
|
}
|
|
18
18
|
//#endregion
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
//#region src/schemas/serverPlugin.ts
|
|
2
|
+
/** The host service each scope level publishes for the packages installed into it. */
|
|
3
|
+
const PO_SERVER_HOST_SERVICE = "po/server-host";
|
|
4
|
+
function readPoServerHost(context) {
|
|
5
|
+
return context.get(PO_SERVER_HOST_SERVICE);
|
|
6
|
+
}
|
|
7
|
+
function requirePoServerHost(context) {
|
|
8
|
+
const service = readPoServerHost(context);
|
|
9
|
+
if (!service) throw new Error("The Po server host is unavailable. Start a Po server first.");
|
|
10
|
+
return service;
|
|
11
|
+
}
|
|
12
|
+
/** The package.json field a package declares its server plugin under. */
|
|
13
|
+
const PO_SERVER_MANIFEST_FIELD = "poServer";
|
|
14
|
+
/** Read pure root metadata without initializing or mounting the root. */
|
|
15
|
+
function composeServerProviderOverrides(...roots) {
|
|
16
|
+
return (context) => roots.flatMap((root) => {
|
|
17
|
+
if (typeof root !== "function" && typeof root !== "object" || root === null) return [];
|
|
18
|
+
const callback = root.providerOverrides;
|
|
19
|
+
return typeof callback === "function" ? callback(context) : [];
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/** Capture schema inference before heterogeneous methods enter a contribution array. */
|
|
23
|
+
function defineServerMethod(definition, handler) {
|
|
24
|
+
return { register: (host) => host.registerMethod(definition, handler) };
|
|
25
|
+
}
|
|
26
|
+
var PoServerManifestError = class extends Error {
|
|
27
|
+
constructor(packageDir, message) {
|
|
28
|
+
super(`${PO_SERVER_MANIFEST_FIELD} manifest in ${packageDir}: ${message}`);
|
|
29
|
+
this.name = "PoServerManifestError";
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
function isRecord(value) {
|
|
33
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
34
|
+
}
|
|
35
|
+
function normalizePath(packageDir, field, value) {
|
|
36
|
+
if (typeof value !== "string" || !value.startsWith("./") || value.includes("..")) throw new PoServerManifestError(packageDir, `${field} must be a package-relative ./path with no '..'.`);
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
function normalizeScopes(packageDir, value) {
|
|
40
|
+
if (value === void 0) throw new PoServerManifestError(packageDir, "scopes must be declared explicitly.");
|
|
41
|
+
if (!Array.isArray(value) || value.length === 0) throw new PoServerManifestError(packageDir, "scopes must name 'global', 'workspace', or 'session'.");
|
|
42
|
+
const scopes = [];
|
|
43
|
+
for (const scope of value) {
|
|
44
|
+
if (scope !== "session" && scope !== "global" && scope !== "workspace") throw new PoServerManifestError(packageDir, `Unknown scope '${String(scope)}'; resync for the three-level host.`);
|
|
45
|
+
if (!scopes.includes(scope)) scopes.push(scope);
|
|
46
|
+
}
|
|
47
|
+
return scopes;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Validates one package.json's `poServer` block.
|
|
51
|
+
*
|
|
52
|
+
* `dist` is required because a host imports the built entry the package ships,
|
|
53
|
+
* never its source.
|
|
54
|
+
*/
|
|
55
|
+
function declaredServerPackagesOf(packageDir, manifest) {
|
|
56
|
+
const declared = manifest[PO_SERVER_MANIFEST_FIELD];
|
|
57
|
+
if (declared === void 0) return [];
|
|
58
|
+
if (!isRecord(declared)) throw new PoServerManifestError(packageDir, "the block must be an object naming entry and dist.");
|
|
59
|
+
const entry = normalizePath(packageDir, "entry", declared.entry);
|
|
60
|
+
if (declared.dist === void 0) throw new PoServerManifestError(packageDir, "dist is required: a host imports the built entry the package ships, never its source.");
|
|
61
|
+
const dist = normalizePath(packageDir, "dist", declared.dist);
|
|
62
|
+
if (declared.required !== void 0 && typeof declared.required !== "boolean") throw new PoServerManifestError(packageDir, "required must be a boolean.");
|
|
63
|
+
return [{
|
|
64
|
+
packageName: typeof manifest.name === "string" ? manifest.name : packageDir,
|
|
65
|
+
packageDir,
|
|
66
|
+
entry,
|
|
67
|
+
dist,
|
|
68
|
+
scopes: normalizeScopes(packageDir, declared.scopes),
|
|
69
|
+
...typeof declared.required === "boolean" ? { required: declared.required } : {}
|
|
70
|
+
}];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The deterministic order hosts install in. A package appears once: the first
|
|
74
|
+
* directory claiming a package name keeps it and the later one is dropped with
|
|
75
|
+
* a notice, so a duplicated install never installs a package twice.
|
|
76
|
+
*/
|
|
77
|
+
function orderServerPackages(packages, onNotice = () => void 0) {
|
|
78
|
+
const sorted = [...packages].sort((left, right) => left.packageName.localeCompare(right.packageName) || left.packageDir.localeCompare(right.packageDir));
|
|
79
|
+
const owners = /* @__PURE__ */ new Map();
|
|
80
|
+
const kept = [];
|
|
81
|
+
for (const declared of sorted) {
|
|
82
|
+
const holder = owners.get(declared.packageName);
|
|
83
|
+
if (holder !== void 0) {
|
|
84
|
+
onNotice(`server package '${declared.packageName}' from ${declared.packageDir} is skipped: ${holder.packageDir} already claims it.`);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
owners.set(declared.packageName, declared);
|
|
88
|
+
kept.push(declared);
|
|
89
|
+
}
|
|
90
|
+
return kept;
|
|
91
|
+
}
|
|
92
|
+
//#endregion
|
|
93
|
+
exports.PO_SERVER_HOST_SERVICE = PO_SERVER_HOST_SERVICE;
|
|
94
|
+
exports.PO_SERVER_MANIFEST_FIELD = PO_SERVER_MANIFEST_FIELD;
|
|
95
|
+
exports.PoServerManifestError = PoServerManifestError;
|
|
96
|
+
exports.composeServerProviderOverrides = composeServerProviderOverrides;
|
|
97
|
+
exports.declaredServerPackagesOf = declaredServerPackagesOf;
|
|
98
|
+
exports.defineServerMethod = defineServerMethod;
|
|
99
|
+
exports.orderServerPackages = orderServerPackages;
|
|
100
|
+
exports.readPoServerHost = readPoServerHost;
|
|
101
|
+
exports.requirePoServerHost = requirePoServerHost;
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=serverPlugin.cjs.map
|