@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
package/dist/help.cjs
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_help = require("./src/schemas/help.cjs");
|
|
3
3
|
const require_index = require("./src/services/piHelpTools/index.cjs");
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.createDoomHelpService = require_help.createDoomHelpService;
|
|
4
|
+
exports.PO_HELP_ERROR_CODE = require_help.PO_HELP_ERROR_CODE;
|
|
5
|
+
exports.PO_HELP_MAX_CONTRIBUTORS = require_help.PO_HELP_MAX_CONTRIBUTORS;
|
|
6
|
+
exports.PO_HELP_MAX_DESCRIPTION_LENGTH = require_help.PO_HELP_MAX_DESCRIPTION_LENGTH;
|
|
7
|
+
exports.PO_HELP_MAX_DIAGNOSTICS = require_help.PO_HELP_MAX_DIAGNOSTICS;
|
|
8
|
+
exports.PO_HELP_MAX_DIAGNOSTIC_LENGTH = require_help.PO_HELP_MAX_DIAGNOSTIC_LENGTH;
|
|
9
|
+
exports.PO_HELP_MAX_SKILLS = require_help.PO_HELP_MAX_SKILLS;
|
|
10
|
+
exports.PO_HELP_SERVICE = require_help.PO_HELP_SERVICE;
|
|
11
|
+
exports.PO_HELP_WHEN = require_help.PO_HELP_WHEN;
|
|
12
|
+
exports.PoHelpActivationSchema = require_help.PoHelpActivationSchema;
|
|
13
|
+
exports.PoHelpContributionSchema = require_help.PoHelpContributionSchema;
|
|
14
|
+
exports.PoHelpDiagnosticSchema = require_help.PoHelpDiagnosticSchema;
|
|
15
|
+
exports.PoHelpError = require_help.PoHelpError;
|
|
16
|
+
exports.PoHelpSkillDescriptorSchema = require_help.PoHelpSkillDescriptorSchema;
|
|
17
|
+
exports.PoHelpSkillNameSchema = require_help.PoHelpSkillNameSchema;
|
|
18
|
+
exports.PoHelpSkillSchema = require_help.PoHelpSkillSchema;
|
|
19
|
+
exports.PoHelpSnapshotSchema = require_help.PoHelpSnapshotSchema;
|
|
20
|
+
exports.PoHelpSourceSchema = require_help.PoHelpSourceSchema;
|
|
22
21
|
exports.createPiHelpToolGate = require_index.createPiHelpToolGate;
|
|
23
|
-
exports.
|
|
24
|
-
exports.
|
|
22
|
+
exports.createPoHelpService = require_help.createPoHelpService;
|
|
23
|
+
exports.readPoHelpService = require_help.readPoHelpService;
|
|
24
|
+
exports.requirePoHelpService = require_help.requirePoHelpService;
|
package/dist/help.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PO_HELP_ERROR_CODE, PO_HELP_MAX_CONTRIBUTORS, PO_HELP_MAX_DESCRIPTION_LENGTH, PO_HELP_MAX_DIAGNOSTICS, PO_HELP_MAX_DIAGNOSTIC_LENGTH, PO_HELP_MAX_SKILLS, PO_HELP_SERVICE, PO_HELP_WHEN, PoHelpActivation, PoHelpActivationSchema, PoHelpContribution, PoHelpContributionHandle, PoHelpContributionSchema, PoHelpDiagnostic, PoHelpDiagnosticSchema, PoHelpError, PoHelpErrorCode, PoHelpService, PoHelpSkill, PoHelpSkillDescriptor, PoHelpSkillDescriptorSchema, PoHelpSkillNameSchema, PoHelpSkillSchema, PoHelpSnapshot, PoHelpSnapshotDraft, PoHelpSnapshotSchema, PoHelpSourceSchema, createPoHelpService, readPoHelpService, requirePoHelpService } from "./src/schemas/help.mjs";
|
|
2
2
|
import { createPiHelpToolGate } from "./src/services/piHelpTools/index.mjs";
|
|
3
|
-
export {
|
|
3
|
+
export { PO_HELP_ERROR_CODE, PO_HELP_MAX_CONTRIBUTORS, PO_HELP_MAX_DESCRIPTION_LENGTH, PO_HELP_MAX_DIAGNOSTICS, PO_HELP_MAX_DIAGNOSTIC_LENGTH, PO_HELP_MAX_SKILLS, PO_HELP_SERVICE, PO_HELP_WHEN, type PoHelpActivation, PoHelpActivationSchema, type PoHelpContribution, type PoHelpContributionHandle, PoHelpContributionSchema, type PoHelpDiagnostic, PoHelpDiagnosticSchema, PoHelpError, type PoHelpErrorCode, type PoHelpService, type PoHelpSkill, type PoHelpSkillDescriptor, PoHelpSkillDescriptorSchema, PoHelpSkillNameSchema, PoHelpSkillSchema, type PoHelpSnapshot, type PoHelpSnapshotDraft, PoHelpSnapshotSchema, PoHelpSourceSchema, createPiHelpToolGate, createPoHelpService, readPoHelpService, requirePoHelpService };
|
package/dist/help.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PO_HELP_ERROR_CODE, PO_HELP_MAX_CONTRIBUTORS, PO_HELP_MAX_DESCRIPTION_LENGTH, PO_HELP_MAX_DIAGNOSTICS, PO_HELP_MAX_DIAGNOSTIC_LENGTH, PO_HELP_MAX_SKILLS, PO_HELP_SERVICE, PO_HELP_WHEN, PoHelpActivationSchema, PoHelpContributionSchema, PoHelpDiagnosticSchema, PoHelpError, PoHelpSkillDescriptorSchema, PoHelpSkillNameSchema, PoHelpSkillSchema, PoHelpSnapshotSchema, PoHelpSourceSchema, createPoHelpService, readPoHelpService, requirePoHelpService } from "./src/schemas/help.mjs";
|
|
2
2
|
import { createPiHelpToolGate } from "./src/services/piHelpTools/index.mjs";
|
|
3
|
-
export {
|
|
3
|
+
export { PO_HELP_ERROR_CODE, PO_HELP_MAX_CONTRIBUTORS, PO_HELP_MAX_DESCRIPTION_LENGTH, PO_HELP_MAX_DIAGNOSTICS, PO_HELP_MAX_DIAGNOSTIC_LENGTH, PO_HELP_MAX_SKILLS, PO_HELP_SERVICE, PO_HELP_WHEN, PoHelpActivationSchema, PoHelpContributionSchema, PoHelpDiagnosticSchema, PoHelpError, PoHelpSkillDescriptorSchema, PoHelpSkillNameSchema, PoHelpSkillSchema, PoHelpSnapshotSchema, PoHelpSourceSchema, createPiHelpToolGate, createPoHelpService, readPoHelpService, requirePoHelpService };
|
package/dist/history.cjs
CHANGED
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_historyOwnership = require("./historyOwnership.cjs");
|
|
3
|
-
const
|
|
4
|
-
const require_index = require("./src/services/
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const require_index$4 = require("./src/services/
|
|
10
|
-
const require_index$5 = require("./src/services/requestReceipts/index.cjs");
|
|
3
|
+
const require_index = require("./src/services/sqliteSessionHistory/index.cjs");
|
|
4
|
+
const require_index$1 = require("./src/services/sqliteTranscriptReader/index.cjs");
|
|
5
|
+
const require_sync = require("./src/services/openSessionRegistry/sync.cjs");
|
|
6
|
+
require("./src/services/openSessionRegistry/index.cjs");
|
|
7
|
+
const require_sync$1 = require("./src/services/workspaceRegistry/sync.cjs");
|
|
8
|
+
require("./src/services/workspaceRegistry/index.cjs");
|
|
9
|
+
const require_index$4 = require("./src/services/durableRequestReceipts/index.cjs");
|
|
11
10
|
exports.createHistoryOwnership = require_historyOwnership.createHistoryOwnership;
|
|
12
|
-
exports.createOpenSessionRegistry =
|
|
13
|
-
exports.createRequestReceipts = require_index$
|
|
11
|
+
exports.createOpenSessionRegistry = require_sync.createOpenSessionRegistry;
|
|
12
|
+
exports.createRequestReceipts = require_index$4.createRequestReceipts;
|
|
14
13
|
exports.createV4HistoryOwnership = require_historyOwnership.createV4HistoryOwnership;
|
|
15
|
-
exports.createWorkspaceRegistry =
|
|
16
|
-
exports.exportV4ToV3 = require_v3Export.exportV4ToV3;
|
|
14
|
+
exports.createWorkspaceRegistry = require_sync$1.createWorkspaceRegistry;
|
|
17
15
|
exports.historyOwnershipLockPath = require_historyOwnership.historyOwnershipLockPath;
|
|
18
|
-
exports.identifyWorkspace =
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.readWorkspaceMarker = require_index$4.readWorkspaceMarker;
|
|
25
|
-
exports.writeWorkspaceMarker = require_index$4.writeWorkspaceMarker;
|
|
16
|
+
exports.identifyWorkspace = require_sync$1.identifyWorkspace;
|
|
17
|
+
exports.listSavedSessionRecords = require_index.listSavedSessionRecords;
|
|
18
|
+
exports.listSavedSessions = require_index.listSavedSessions;
|
|
19
|
+
exports.readSqliteTranscript = require_index$1.readSqliteTranscript;
|
|
20
|
+
exports.readWorkspaceMarker = require_sync$1.readWorkspaceMarker;
|
|
21
|
+
exports.writeWorkspaceMarker = require_sync$1.writeWorkspaceMarker;
|
package/dist/history.d.mts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HistoryOwnership, HistoryOwnershipLease } from "./src/services/historyOwnership/type.mjs";
|
|
2
2
|
import { HistoryOwnershipOptions, createHistoryOwnership, createV4HistoryOwnership, historyOwnershipLockPath } from "./historyOwnership.mjs";
|
|
3
|
-
import { importV3WithPinnedUpstream } from "./jsonlSessionRepo.mjs";
|
|
4
|
-
import { V3ExportLoss, V3ExportLossReport, V3ExportOptions, V3ExportResult, exportV4ToV3 } from "./v3Export.mjs";
|
|
5
3
|
import { SavedSessionExecution, SavedSessionRecord, listSavedSessionRecords, listSavedSessions } from "./src/services/sqliteSessionHistory/index.mjs";
|
|
6
4
|
import { SqliteTranscriptOwnership, readSqliteTranscript } from "./src/services/sqliteTranscriptReader/index.mjs";
|
|
7
|
-
import { OpenSessionRecord, OpenSessionRegistry, OpenSessionRegistryOptions
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
|
|
5
|
+
import { OpenSessionRecord, OpenSessionRegistry, OpenSessionRegistryOptions } from "./src/services/openSessionRegistry/openSessionRecords.mjs";
|
|
6
|
+
import { createOpenSessionRegistry } from "./src/services/openSessionRegistry/sync.mjs";
|
|
7
|
+
import "./src/services/openSessionRegistry/index.mjs";
|
|
8
|
+
import { WorkspaceIdentity, WorkspaceRecord, WorkspaceRegistry, WorkspaceRegistryOptions } from "./src/services/workspaceRegistry/workspaceRecords.mjs";
|
|
9
|
+
import { createWorkspaceRegistry, identifyWorkspace, readWorkspaceMarker, writeWorkspaceMarker } from "./src/services/workspaceRegistry/sync.mjs";
|
|
10
|
+
import "./src/services/workspaceRegistry/index.mjs";
|
|
11
|
+
import { createRequestReceipts } from "./src/services/durableRequestReceipts/index.mjs";
|
|
12
|
+
export { type HistoryOwnership, type HistoryOwnershipLease, type HistoryOwnershipOptions, type OpenSessionRecord, type OpenSessionRegistry, type OpenSessionRegistryOptions, type SavedSessionExecution, type SavedSessionRecord, type SqliteTranscriptOwnership, type WorkspaceIdentity, type WorkspaceRecord, type WorkspaceRegistry, type WorkspaceRegistryOptions, createHistoryOwnership, createOpenSessionRegistry, createRequestReceipts, createV4HistoryOwnership, createWorkspaceRegistry, historyOwnershipLockPath, identifyWorkspace, listSavedSessionRecords, listSavedSessions, readSqliteTranscript, readWorkspaceMarker, writeWorkspaceMarker };
|
package/dist/history.mjs
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { createHistoryOwnership, createV4HistoryOwnership, historyOwnershipLockPath } from "./historyOwnership.mjs";
|
|
2
|
-
import { importV3WithPinnedUpstream } from "./jsonlSessionRepo.mjs";
|
|
3
|
-
import { protectAndImportHistory } from "./src/services/historyImport/index.mjs";
|
|
4
|
-
import { exportV4ToV3 } from "./v3Export.mjs";
|
|
5
2
|
import { listSavedSessionRecords, listSavedSessions } from "./src/services/sqliteSessionHistory/index.mjs";
|
|
6
3
|
import { readSqliteTranscript } from "./src/services/sqliteTranscriptReader/index.mjs";
|
|
7
|
-
import { createOpenSessionRegistry } from "./src/services/openSessionRegistry/
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
|
|
4
|
+
import { createOpenSessionRegistry } from "./src/services/openSessionRegistry/sync.mjs";
|
|
5
|
+
import "./src/services/openSessionRegistry/index.mjs";
|
|
6
|
+
import { createWorkspaceRegistry, identifyWorkspace, readWorkspaceMarker, writeWorkspaceMarker } from "./src/services/workspaceRegistry/sync.mjs";
|
|
7
|
+
import "./src/services/workspaceRegistry/index.mjs";
|
|
8
|
+
import { createRequestReceipts } from "./src/services/durableRequestReceipts/index.mjs";
|
|
9
|
+
export { createHistoryOwnership, createOpenSessionRegistry, createRequestReceipts, createV4HistoryOwnership, createWorkspaceRegistry, historyOwnershipLockPath, identifyWorkspace, listSavedSessionRecords, listSavedSessions, readSqliteTranscript, readWorkspaceMarker, writeWorkspaceMarker };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyOwnership.cjs","names":["path","fs","randomUUID"],"sources":["../src/services/historyOwnership/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { HistoryOwnership, HistoryOwnershipLease } from '../historyImport';\n\nconst LOCK_SUFFIX = '.po-v4.lock';\nconst LOCK_VERSION = 1;\nconst LOCK_FORMAT = 'po-v4-history-ownership';\n\ninterface HistoryLockRecord {\n version: 1;\n format: 'po-v4-history-ownership';\n pid: number;\n sourcePath: string;\n token: string;\n}\n\ninterface HeldHistoryLock {\n lockPath: string;\n token: string;\n handle: number;\n}\n\nexport interface HistoryOwnershipOptions {\n /** Checks managed writers; this cannot account for an unmanaged Pi process. */\n assertQuiescent?: (sourcePath: string) => void | Promise<void>;\n /** The source format admitted by this owner. Defaults to canonical v4. */\n sourceFormat?: 'v3' | 'v4' | 'sqlite';\n /** Additional paths to lock for the lifetime of each acquired source lease. */\n additionalPaths?: readonly string[];\n}\n\nfunction canonicalSourcePath(sourcePath: string): string {\n const absolute = path.resolve(sourcePath);\n if (fs.existsSync(absolute)) return fs.realpathSync(absolute);\n const segments = [path.basename(absolute)];\n let parent = path.dirname(absolute);\n while (!fs.existsSync(parent)) {\n segments.unshift(path.basename(parent));\n parent = path.dirname(parent);\n }\n return path.join(fs.realpathSync(parent), ...segments);\n}\n\n/** Resolve aliases so every writer and exporter contends for the same lock. */\nexport function historyOwnershipLockPath(sourcePath: string): string {\n return `${canonicalSourcePath(sourcePath)}${LOCK_SUFFIX}`;\n}\n\nfunction isHistoryObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isV4Header(value: unknown): boolean {\n return isHistoryObject(value) && value.kind === 'header' && value.v === 4;\n}\n\nfunction isV3Header(value: unknown): boolean {\n return isHistoryObject(value) && value.type === 'session' && value.version === 3;\n}\n\nfunction readHeader(sourcePath: string, format: 'v3' | 'v4'): unknown {\n const firstLine = fs.readFileSync(sourcePath, 'utf8').split('\\n', 1)[0] ?? '';\n try {\n return JSON.parse(firstLine);\n } catch (error) {\n const message =\n format === 'v4'\n ? `History ownership source is not canonical v4 JSONL: ${sourcePath}`\n : `Offline history source is not canonical v3 JSONL: ${sourcePath}`;\n throw new Error(message, { cause: error });\n }\n}\n\nfunction assertIndependentRegularFile(sourcePath: string, label: string): void {\n const stat = fs.statSync(sourcePath);\n if (!stat.isFile() || stat.nlink !== 1) throw new Error(`${label} must be an independent regular file`);\n}\n\nfunction assertV4Source(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'Canonical history');\n if (!isV4Header(readHeader(sourcePath, 'v4')))\n throw new Error(`History ownership only supports canonical v4 sources: ${sourcePath}`);\n}\n\nfunction assertV3Source(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'Offline v3 history source');\n if (!isV3Header(readHeader(sourcePath, 'v3')))\n throw new Error(`Offline history import only supports v3 sources: ${sourcePath}`);\n}\n\nfunction assertSqliteSource(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'SQLite history');\n const descriptor = fs.openSync(sourcePath, 'r');\n try {\n const header = Buffer.alloc(16);\n if (\n fs.readSync(descriptor, header, 0, header.length, 0) !== header.length ||\n header.toString('utf8') !== 'SQLite format 3\\u0000'\n )\n throw new Error(`History ownership source is not SQLite: ${sourcePath}`);\n } finally {\n fs.closeSync(descriptor);\n }\n}\n\nfunction isFileSystemError(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && typeof (error as NodeJS.ErrnoException).code === 'string';\n}\n\nfunction readToken(lockPath: string): string | undefined {\n try {\n const value = JSON.parse(fs.readFileSync(lockPath, 'utf8')) as Partial<HistoryLockRecord>;\n return typeof value.token === 'string' ? value.token : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** A dead owner is recoverable only when the entire lock record is recognizable. */\nfunction readRecoverableLock(lockPath: string, sourcePath: string): HistoryLockRecord | undefined {\n try {\n const stat = fs.lstatSync(lockPath);\n if (!stat.isFile() || stat.nlink !== 1) return undefined;\n const value: unknown = JSON.parse(fs.readFileSync(lockPath, 'utf8'));\n if (\n !isHistoryObject(value) ||\n value.version !== LOCK_VERSION ||\n value.format !== LOCK_FORMAT ||\n value.sourcePath !== sourcePath ||\n !Number.isSafeInteger(value.pid) ||\n (value.pid as number) <= 0 ||\n typeof value.token !== 'string' ||\n !/^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu.test(value.token)\n )\n return undefined;\n return value as unknown as HistoryLockRecord;\n } catch {\n return undefined;\n }\n}\n\nfunction ownerMayBeAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return !(isFileSystemError(error) && error.code === 'ESRCH');\n }\n}\n/** A guard left by a dead acquirer can be retired without touching its source lock. */\nfunction retireDeadGuard(guard: string): boolean {\n try {\n const stat = fs.lstatSync(guard);\n if (!stat.isDirectory()) return false;\n const entries = fs.readdirSync(guard);\n // An empty guard might still belong to a process killed between mkdir and\n // publishing its marker. Fail closed rather than race a new acquirer.\n if (entries.length !== 1 || !/^owner-[\\da-f-]{36}\\.json$/iu.test(entries[0]!)) return false;\n const marker = path.join(guard, entries[0]!);\n const markerStat = fs.lstatSync(marker);\n if (!markerStat.isFile() || markerStat.nlink !== 1) return false;\n const owner: unknown = JSON.parse(fs.readFileSync(marker, 'utf8'));\n if (!isHistoryObject(owner) || !Number.isSafeInteger(owner.pid) || (owner.pid as number) <= 0) return false;\n if (ownerMayBeAlive(owner.pid as number)) return false;\n // Only the process that unlinks this unique marker may retire the directory.\n // Other cleaners see a newly empty guard and refuse to remove it.\n fs.unlinkSync(marker);\n fs.rmdirSync(guard);\n return true;\n } catch {\n return false;\n }\n}\n\n/** All new acquirers hold this guard until their ownership record is durable. */\nfunction withAcquisitionGuard<T>(lockPath: string, acquire: () => T): T {\n const guard = `${lockPath}.recovery`;\n try {\n fs.mkdirSync(guard, { mode: 0o700 });\n } catch (error) {\n if (!isFileSystemError(error) || error.code !== 'EEXIST' || !retireDeadGuard(guard)) throw error;\n fs.mkdirSync(guard, { mode: 0o700 });\n }\n const marker = path.join(guard, `owner-${randomUUID()}.json`);\n try {\n fs.writeFileSync(marker, JSON.stringify({ pid: process.pid }), { flag: 'wx', mode: 0o600 });\n return acquire();\n } finally {\n fs.rmSync(marker, { force: true });\n fs.rmdirSync(guard);\n }\n}\n\n/** Called only under the acquisition guard, before publishing a new owner. */\nfunction recoverDeadOwner(lockPath: string, sourcePath: string): boolean {\n try {\n const record = readRecoverableLock(lockPath, sourcePath);\n if (!record || ownerMayBeAlive(record.pid)) return false;\n const before = fs.lstatSync(lockPath);\n if (readRecoverableLock(lockPath, sourcePath)?.token !== record.token || ownerMayBeAlive(record.pid)) return false;\n const current = fs.lstatSync(lockPath);\n if (before.dev !== current.dev || before.ino !== current.ino) return false;\n // The owner is gone, and other recoverers cannot remove this lock while\n // the guard is held. Legacy writers still contend on the exclusive wx open.\n fs.unlinkSync(lockPath);\n return true;\n } catch (error) {\n if (isFileSystemError(error) && error.code === 'ENOENT') return false;\n throw error;\n }\n}\n\nfunction releaseLock(lockPath: string, token: string, handle: number): void {\n fs.closeSync(handle);\n // Recovery only retires a lock after its recorded owner has exited, so that\n // owner cannot be here releasing it concurrently. A replaced lock is ambiguous.\n if (readToken(lockPath) === token) fs.rmSync(lockPath, { force: true });\n}\n\nfunction createLease(\n locks: readonly HeldHistoryLock[],\n sourcePath: string,\n assertQuiescent: (sourcePath: string) => void | Promise<void>,\n): HistoryOwnershipLease {\n let released = false;\n return {\n assertQuiescent: () => {\n if (released) throw new Error('History ownership lease has been released');\n for (const lock of locks) {\n const held = fs.fstatSync(lock.handle);\n const current = fs.statSync(lock.lockPath);\n if (held.dev !== current.dev || held.ino !== current.ino || readToken(lock.lockPath) !== lock.token) {\n throw new Error('History ownership lock was replaced');\n }\n }\n return assertQuiescent(sourcePath);\n },\n release: () => {\n if (released) return;\n released = true;\n let firstError: unknown;\n for (const lock of [...locks].reverse()) {\n try {\n releaseLock(lock.lockPath, lock.token, lock.handle);\n } catch (error) {\n firstError ??= error;\n }\n }\n if (firstError !== undefined) throw firstError;\n },\n };\n}\n\n/**\n * Creates the canonical history owner used by runtime writers, export CLI, and\n * the explicit offline importer. The default source boundary remains v4.\n * Complete locks left by a dead process are recovered under an exclusive guard.\n * A live owner or an ambiguous sidecar still blocks acquisition.\n */\nexport function createHistoryOwnership(options: HistoryOwnershipOptions = {}): HistoryOwnership {\n const assertQuiescent = options.assertQuiescent ?? (() => undefined);\n const assertSource =\n options.sourceFormat === 'sqlite'\n ? assertSqliteSource\n : options.sourceFormat === 'v3'\n ? assertV3Source\n : assertV4Source;\n return {\n async acquire(sourcePath: string): Promise<HistoryOwnershipLease> {\n const absoluteSourcePath = canonicalSourcePath(sourcePath);\n const paths = [absoluteSourcePath, ...(options.additionalPaths ?? [])].map(canonicalSourcePath);\n const canonicalPaths = [...new Set(paths)].sort((left, right) => left.localeCompare(right));\n const locks: HeldHistoryLock[] = [];\n let conflictingLockPath = historyOwnershipLockPath(absoluteSourcePath);\n try {\n for (const lockedPath of canonicalPaths) {\n const lockPath = historyOwnershipLockPath(lockedPath);\n conflictingLockPath = lockPath;\n const token = randomUUID();\n const record: HistoryLockRecord = {\n version: LOCK_VERSION,\n format: LOCK_FORMAT,\n pid: process.pid,\n sourcePath: lockedPath,\n token,\n };\n fs.mkdirSync(path.dirname(lockPath), { recursive: true, mode: 0o700 });\n withAcquisitionGuard(lockPath, () => {\n let handle: number;\n try {\n handle = fs.openSync(lockPath, 'wx', 0o600);\n } catch (error) {\n if (!isFileSystemError(error) || error.code !== 'EEXIST' || !recoverDeadOwner(lockPath, lockedPath))\n throw error;\n handle = fs.openSync(lockPath, 'wx', 0o600);\n }\n const lock = { lockPath, token, handle };\n locks.push(lock);\n fs.writeFileSync(handle, `${JSON.stringify(record)}\\n`, 'utf8');\n fs.fsyncSync(handle);\n });\n }\n assertSource(absoluteSourcePath);\n } catch (error) {\n for (const lock of [...locks].reverse()) {\n try {\n releaseLock(lock.lockPath, lock.token, lock.handle);\n } catch {\n // Preserve the acquisition failure and never remove a replaced lock.\n }\n }\n if (isFileSystemError(error) && error.code === 'EEXIST') {\n throw new Error(`History ownership lock already exists or is ambiguous: ${conflictingLockPath}`, {\n cause: error,\n });\n }\n throw error;\n }\n return createLease(locks, absoluteSourcePath, assertQuiescent);\n },\n };\n}\n\n/** Explicitly named alias for hosts that want to document the v4 boundary. */\nexport const createV4HistoryOwnership = createHistoryOwnership;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"historyOwnership.cjs","names":["path","fs","randomUUID"],"sources":["../src/services/historyOwnership/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { HistoryOwnership, HistoryOwnershipLease } from './type';\n\nconst LOCK_SUFFIX = '.po-v4.lock';\nconst LOCK_VERSION = 1;\nconst LOCK_FORMAT = 'po-v4-history-ownership';\n\ninterface HistoryLockRecord {\n version: 1;\n format: 'po-v4-history-ownership';\n pid: number;\n sourcePath: string;\n token: string;\n}\n\ninterface HeldHistoryLock {\n lockPath: string;\n token: string;\n handle: number;\n}\n\nexport interface HistoryOwnershipOptions {\n /** Checks managed writers; this cannot account for an unmanaged Pi process. */\n assertQuiescent?: (sourcePath: string) => void | Promise<void>;\n /** The source format admitted by this owner. Defaults to canonical v4. */\n sourceFormat?: 'v3' | 'v4' | 'sqlite';\n /** Additional paths to lock for the lifetime of each acquired source lease. */\n additionalPaths?: readonly string[];\n}\n\nfunction canonicalSourcePath(sourcePath: string): string {\n const absolute = path.resolve(sourcePath);\n if (fs.existsSync(absolute)) return fs.realpathSync(absolute);\n const segments = [path.basename(absolute)];\n let parent = path.dirname(absolute);\n while (!fs.existsSync(parent)) {\n segments.unshift(path.basename(parent));\n parent = path.dirname(parent);\n }\n return path.join(fs.realpathSync(parent), ...segments);\n}\n\n/** Resolve aliases so every writer and exporter contends for the same lock. */\nexport function historyOwnershipLockPath(sourcePath: string): string {\n return `${canonicalSourcePath(sourcePath)}${LOCK_SUFFIX}`;\n}\n\nfunction isHistoryObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isV4Header(value: unknown): boolean {\n return isHistoryObject(value) && value.kind === 'header' && value.v === 4;\n}\n\nfunction isV3Header(value: unknown): boolean {\n return isHistoryObject(value) && value.type === 'session' && value.version === 3;\n}\n\nfunction readHeader(sourcePath: string, format: 'v3' | 'v4'): unknown {\n const firstLine = fs.readFileSync(sourcePath, 'utf8').split('\\n', 1)[0] ?? '';\n try {\n return JSON.parse(firstLine);\n } catch (error) {\n const message =\n format === 'v4'\n ? `History ownership source is not canonical v4 JSONL: ${sourcePath}`\n : `Offline history source is not canonical v3 JSONL: ${sourcePath}`;\n throw new Error(message, { cause: error });\n }\n}\n\nfunction assertIndependentRegularFile(sourcePath: string, label: string): void {\n const stat = fs.statSync(sourcePath);\n if (!stat.isFile() || stat.nlink !== 1) throw new Error(`${label} must be an independent regular file`);\n}\n\nfunction assertV4Source(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'Canonical history');\n if (!isV4Header(readHeader(sourcePath, 'v4')))\n throw new Error(`History ownership only supports canonical v4 sources: ${sourcePath}`);\n}\n\nfunction assertV3Source(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'Offline v3 history source');\n if (!isV3Header(readHeader(sourcePath, 'v3')))\n throw new Error(`Offline history import only supports v3 sources: ${sourcePath}`);\n}\n\nfunction assertSqliteSource(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'SQLite history');\n const descriptor = fs.openSync(sourcePath, 'r');\n try {\n const header = Buffer.alloc(16);\n if (\n fs.readSync(descriptor, header, 0, header.length, 0) !== header.length ||\n header.toString('utf8') !== 'SQLite format 3\\u0000'\n )\n throw new Error(`History ownership source is not SQLite: ${sourcePath}`);\n } finally {\n fs.closeSync(descriptor);\n }\n}\n\nfunction isFileSystemError(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && typeof (error as NodeJS.ErrnoException).code === 'string';\n}\n\nfunction readToken(lockPath: string): string | undefined {\n try {\n const value = JSON.parse(fs.readFileSync(lockPath, 'utf8')) as Partial<HistoryLockRecord>;\n return typeof value.token === 'string' ? value.token : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** A dead owner is recoverable only when the entire lock record is recognizable. */\nfunction readRecoverableLock(lockPath: string, sourcePath: string): HistoryLockRecord | undefined {\n try {\n const stat = fs.lstatSync(lockPath);\n if (!stat.isFile() || stat.nlink !== 1) return undefined;\n const value: unknown = JSON.parse(fs.readFileSync(lockPath, 'utf8'));\n if (\n !isHistoryObject(value) ||\n value.version !== LOCK_VERSION ||\n value.format !== LOCK_FORMAT ||\n value.sourcePath !== sourcePath ||\n !Number.isSafeInteger(value.pid) ||\n (value.pid as number) <= 0 ||\n typeof value.token !== 'string' ||\n !/^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu.test(value.token)\n )\n return undefined;\n return value as unknown as HistoryLockRecord;\n } catch {\n return undefined;\n }\n}\n\nfunction ownerMayBeAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return !(isFileSystemError(error) && error.code === 'ESRCH');\n }\n}\n/** A guard left by a dead acquirer can be retired without touching its source lock. */\nfunction retireDeadGuard(guard: string): boolean {\n try {\n const stat = fs.lstatSync(guard);\n if (!stat.isDirectory()) return false;\n const entries = fs.readdirSync(guard);\n // An empty guard might still belong to a process killed between mkdir and\n // publishing its marker. Fail closed rather than race a new acquirer.\n if (entries.length !== 1 || !/^owner-[\\da-f-]{36}\\.json$/iu.test(entries[0]!)) return false;\n const marker = path.join(guard, entries[0]!);\n const markerStat = fs.lstatSync(marker);\n if (!markerStat.isFile() || markerStat.nlink !== 1) return false;\n const owner: unknown = JSON.parse(fs.readFileSync(marker, 'utf8'));\n if (!isHistoryObject(owner) || !Number.isSafeInteger(owner.pid) || (owner.pid as number) <= 0) return false;\n if (ownerMayBeAlive(owner.pid as number)) return false;\n // Only the process that unlinks this unique marker may retire the directory.\n // Other cleaners see a newly empty guard and refuse to remove it.\n fs.unlinkSync(marker);\n fs.rmdirSync(guard);\n return true;\n } catch {\n return false;\n }\n}\n\n/** All new acquirers hold this guard until their ownership record is durable. */\nfunction withAcquisitionGuard<T>(lockPath: string, acquire: () => T): T {\n const guard = `${lockPath}.recovery`;\n try {\n fs.mkdirSync(guard, { mode: 0o700 });\n } catch (error) {\n if (!isFileSystemError(error) || error.code !== 'EEXIST' || !retireDeadGuard(guard)) throw error;\n fs.mkdirSync(guard, { mode: 0o700 });\n }\n const marker = path.join(guard, `owner-${randomUUID()}.json`);\n try {\n fs.writeFileSync(marker, JSON.stringify({ pid: process.pid }), { flag: 'wx', mode: 0o600 });\n return acquire();\n } finally {\n fs.rmSync(marker, { force: true });\n fs.rmdirSync(guard);\n }\n}\n\n/** Called only under the acquisition guard, before publishing a new owner. */\nfunction recoverDeadOwner(lockPath: string, sourcePath: string): boolean {\n try {\n const record = readRecoverableLock(lockPath, sourcePath);\n if (!record || ownerMayBeAlive(record.pid)) return false;\n const before = fs.lstatSync(lockPath);\n if (readRecoverableLock(lockPath, sourcePath)?.token !== record.token || ownerMayBeAlive(record.pid)) return false;\n const current = fs.lstatSync(lockPath);\n if (before.dev !== current.dev || before.ino !== current.ino) return false;\n // The owner is gone, and other recoverers cannot remove this lock while\n // the guard is held. Legacy writers still contend on the exclusive wx open.\n fs.unlinkSync(lockPath);\n return true;\n } catch (error) {\n if (isFileSystemError(error) && error.code === 'ENOENT') return false;\n throw error;\n }\n}\n\nfunction releaseLock(lockPath: string, token: string, handle: number): void {\n fs.closeSync(handle);\n // Recovery only retires a lock after its recorded owner has exited, so that\n // owner cannot be here releasing it concurrently. A replaced lock is ambiguous.\n if (readToken(lockPath) === token) fs.rmSync(lockPath, { force: true });\n}\n\nfunction createLease(\n locks: readonly HeldHistoryLock[],\n sourcePath: string,\n assertQuiescent: (sourcePath: string) => void | Promise<void>,\n): HistoryOwnershipLease {\n let released = false;\n return {\n assertQuiescent: () => {\n if (released) throw new Error('History ownership lease has been released');\n for (const lock of locks) {\n const held = fs.fstatSync(lock.handle);\n const current = fs.statSync(lock.lockPath);\n if (held.dev !== current.dev || held.ino !== current.ino || readToken(lock.lockPath) !== lock.token) {\n throw new Error('History ownership lock was replaced');\n }\n }\n return assertQuiescent(sourcePath);\n },\n release: () => {\n if (released) return;\n released = true;\n let firstError: unknown;\n for (const lock of [...locks].reverse()) {\n try {\n releaseLock(lock.lockPath, lock.token, lock.handle);\n } catch (error) {\n firstError ??= error;\n }\n }\n if (firstError !== undefined) throw firstError;\n },\n };\n}\n\n/**\n * Creates the canonical history owner used by runtime writers, export CLI, and\n * the explicit offline importer. The default source boundary remains v4.\n * Complete locks left by a dead process are recovered under an exclusive guard.\n * A live owner or an ambiguous sidecar still blocks acquisition.\n */\nexport function createHistoryOwnership(options: HistoryOwnershipOptions = {}): HistoryOwnership {\n const assertQuiescent = options.assertQuiescent ?? (() => undefined);\n const assertSource =\n options.sourceFormat === 'sqlite'\n ? assertSqliteSource\n : options.sourceFormat === 'v3'\n ? assertV3Source\n : assertV4Source;\n return {\n async acquire(sourcePath: string): Promise<HistoryOwnershipLease> {\n const absoluteSourcePath = canonicalSourcePath(sourcePath);\n const paths = [absoluteSourcePath, ...(options.additionalPaths ?? [])].map(canonicalSourcePath);\n const canonicalPaths = [...new Set(paths)].sort((left, right) => left.localeCompare(right));\n const locks: HeldHistoryLock[] = [];\n let conflictingLockPath = historyOwnershipLockPath(absoluteSourcePath);\n try {\n for (const lockedPath of canonicalPaths) {\n const lockPath = historyOwnershipLockPath(lockedPath);\n conflictingLockPath = lockPath;\n const token = randomUUID();\n const record: HistoryLockRecord = {\n version: LOCK_VERSION,\n format: LOCK_FORMAT,\n pid: process.pid,\n sourcePath: lockedPath,\n token,\n };\n fs.mkdirSync(path.dirname(lockPath), { recursive: true, mode: 0o700 });\n withAcquisitionGuard(lockPath, () => {\n let handle: number;\n try {\n handle = fs.openSync(lockPath, 'wx', 0o600);\n } catch (error) {\n if (!isFileSystemError(error) || error.code !== 'EEXIST' || !recoverDeadOwner(lockPath, lockedPath))\n throw error;\n handle = fs.openSync(lockPath, 'wx', 0o600);\n }\n const lock = { lockPath, token, handle };\n locks.push(lock);\n fs.writeFileSync(handle, `${JSON.stringify(record)}\\n`, 'utf8');\n fs.fsyncSync(handle);\n });\n }\n assertSource(absoluteSourcePath);\n } catch (error) {\n for (const lock of [...locks].reverse()) {\n try {\n releaseLock(lock.lockPath, lock.token, lock.handle);\n } catch {\n // Preserve the acquisition failure and never remove a replaced lock.\n }\n }\n if (isFileSystemError(error) && error.code === 'EEXIST') {\n throw new Error(`History ownership lock already exists or is ambiguous: ${conflictingLockPath}`, {\n cause: error,\n });\n }\n throw error;\n }\n return createLease(locks, absoluteSourcePath, assertQuiescent);\n },\n };\n}\n\n/** Explicitly named alias for hosts that want to document the v4 boundary. */\nexport const createV4HistoryOwnership = createHistoryOwnership;\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HistoryOwnership } from "./src/services/
|
|
1
|
+
import { HistoryOwnership } from "./src/services/historyOwnership/type.mjs";
|
|
2
2
|
//#region src/services/historyOwnership/index.d.ts
|
|
3
3
|
export interface HistoryOwnershipOptions {
|
|
4
4
|
/** Checks managed writers; this cannot account for an unmanaged Pi process. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyOwnership.mjs","names":[],"sources":["../src/services/historyOwnership/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { HistoryOwnership, HistoryOwnershipLease } from '../historyImport';\n\nconst LOCK_SUFFIX = '.po-v4.lock';\nconst LOCK_VERSION = 1;\nconst LOCK_FORMAT = 'po-v4-history-ownership';\n\ninterface HistoryLockRecord {\n version: 1;\n format: 'po-v4-history-ownership';\n pid: number;\n sourcePath: string;\n token: string;\n}\n\ninterface HeldHistoryLock {\n lockPath: string;\n token: string;\n handle: number;\n}\n\nexport interface HistoryOwnershipOptions {\n /** Checks managed writers; this cannot account for an unmanaged Pi process. */\n assertQuiescent?: (sourcePath: string) => void | Promise<void>;\n /** The source format admitted by this owner. Defaults to canonical v4. */\n sourceFormat?: 'v3' | 'v4' | 'sqlite';\n /** Additional paths to lock for the lifetime of each acquired source lease. */\n additionalPaths?: readonly string[];\n}\n\nfunction canonicalSourcePath(sourcePath: string): string {\n const absolute = path.resolve(sourcePath);\n if (fs.existsSync(absolute)) return fs.realpathSync(absolute);\n const segments = [path.basename(absolute)];\n let parent = path.dirname(absolute);\n while (!fs.existsSync(parent)) {\n segments.unshift(path.basename(parent));\n parent = path.dirname(parent);\n }\n return path.join(fs.realpathSync(parent), ...segments);\n}\n\n/** Resolve aliases so every writer and exporter contends for the same lock. */\nexport function historyOwnershipLockPath(sourcePath: string): string {\n return `${canonicalSourcePath(sourcePath)}${LOCK_SUFFIX}`;\n}\n\nfunction isHistoryObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isV4Header(value: unknown): boolean {\n return isHistoryObject(value) && value.kind === 'header' && value.v === 4;\n}\n\nfunction isV3Header(value: unknown): boolean {\n return isHistoryObject(value) && value.type === 'session' && value.version === 3;\n}\n\nfunction readHeader(sourcePath: string, format: 'v3' | 'v4'): unknown {\n const firstLine = fs.readFileSync(sourcePath, 'utf8').split('\\n', 1)[0] ?? '';\n try {\n return JSON.parse(firstLine);\n } catch (error) {\n const message =\n format === 'v4'\n ? `History ownership source is not canonical v4 JSONL: ${sourcePath}`\n : `Offline history source is not canonical v3 JSONL: ${sourcePath}`;\n throw new Error(message, { cause: error });\n }\n}\n\nfunction assertIndependentRegularFile(sourcePath: string, label: string): void {\n const stat = fs.statSync(sourcePath);\n if (!stat.isFile() || stat.nlink !== 1) throw new Error(`${label} must be an independent regular file`);\n}\n\nfunction assertV4Source(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'Canonical history');\n if (!isV4Header(readHeader(sourcePath, 'v4')))\n throw new Error(`History ownership only supports canonical v4 sources: ${sourcePath}`);\n}\n\nfunction assertV3Source(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'Offline v3 history source');\n if (!isV3Header(readHeader(sourcePath, 'v3')))\n throw new Error(`Offline history import only supports v3 sources: ${sourcePath}`);\n}\n\nfunction assertSqliteSource(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'SQLite history');\n const descriptor = fs.openSync(sourcePath, 'r');\n try {\n const header = Buffer.alloc(16);\n if (\n fs.readSync(descriptor, header, 0, header.length, 0) !== header.length ||\n header.toString('utf8') !== 'SQLite format 3\\u0000'\n )\n throw new Error(`History ownership source is not SQLite: ${sourcePath}`);\n } finally {\n fs.closeSync(descriptor);\n }\n}\n\nfunction isFileSystemError(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && typeof (error as NodeJS.ErrnoException).code === 'string';\n}\n\nfunction readToken(lockPath: string): string | undefined {\n try {\n const value = JSON.parse(fs.readFileSync(lockPath, 'utf8')) as Partial<HistoryLockRecord>;\n return typeof value.token === 'string' ? value.token : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** A dead owner is recoverable only when the entire lock record is recognizable. */\nfunction readRecoverableLock(lockPath: string, sourcePath: string): HistoryLockRecord | undefined {\n try {\n const stat = fs.lstatSync(lockPath);\n if (!stat.isFile() || stat.nlink !== 1) return undefined;\n const value: unknown = JSON.parse(fs.readFileSync(lockPath, 'utf8'));\n if (\n !isHistoryObject(value) ||\n value.version !== LOCK_VERSION ||\n value.format !== LOCK_FORMAT ||\n value.sourcePath !== sourcePath ||\n !Number.isSafeInteger(value.pid) ||\n (value.pid as number) <= 0 ||\n typeof value.token !== 'string' ||\n !/^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu.test(value.token)\n )\n return undefined;\n return value as unknown as HistoryLockRecord;\n } catch {\n return undefined;\n }\n}\n\nfunction ownerMayBeAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return !(isFileSystemError(error) && error.code === 'ESRCH');\n }\n}\n/** A guard left by a dead acquirer can be retired without touching its source lock. */\nfunction retireDeadGuard(guard: string): boolean {\n try {\n const stat = fs.lstatSync(guard);\n if (!stat.isDirectory()) return false;\n const entries = fs.readdirSync(guard);\n // An empty guard might still belong to a process killed between mkdir and\n // publishing its marker. Fail closed rather than race a new acquirer.\n if (entries.length !== 1 || !/^owner-[\\da-f-]{36}\\.json$/iu.test(entries[0]!)) return false;\n const marker = path.join(guard, entries[0]!);\n const markerStat = fs.lstatSync(marker);\n if (!markerStat.isFile() || markerStat.nlink !== 1) return false;\n const owner: unknown = JSON.parse(fs.readFileSync(marker, 'utf8'));\n if (!isHistoryObject(owner) || !Number.isSafeInteger(owner.pid) || (owner.pid as number) <= 0) return false;\n if (ownerMayBeAlive(owner.pid as number)) return false;\n // Only the process that unlinks this unique marker may retire the directory.\n // Other cleaners see a newly empty guard and refuse to remove it.\n fs.unlinkSync(marker);\n fs.rmdirSync(guard);\n return true;\n } catch {\n return false;\n }\n}\n\n/** All new acquirers hold this guard until their ownership record is durable. */\nfunction withAcquisitionGuard<T>(lockPath: string, acquire: () => T): T {\n const guard = `${lockPath}.recovery`;\n try {\n fs.mkdirSync(guard, { mode: 0o700 });\n } catch (error) {\n if (!isFileSystemError(error) || error.code !== 'EEXIST' || !retireDeadGuard(guard)) throw error;\n fs.mkdirSync(guard, { mode: 0o700 });\n }\n const marker = path.join(guard, `owner-${randomUUID()}.json`);\n try {\n fs.writeFileSync(marker, JSON.stringify({ pid: process.pid }), { flag: 'wx', mode: 0o600 });\n return acquire();\n } finally {\n fs.rmSync(marker, { force: true });\n fs.rmdirSync(guard);\n }\n}\n\n/** Called only under the acquisition guard, before publishing a new owner. */\nfunction recoverDeadOwner(lockPath: string, sourcePath: string): boolean {\n try {\n const record = readRecoverableLock(lockPath, sourcePath);\n if (!record || ownerMayBeAlive(record.pid)) return false;\n const before = fs.lstatSync(lockPath);\n if (readRecoverableLock(lockPath, sourcePath)?.token !== record.token || ownerMayBeAlive(record.pid)) return false;\n const current = fs.lstatSync(lockPath);\n if (before.dev !== current.dev || before.ino !== current.ino) return false;\n // The owner is gone, and other recoverers cannot remove this lock while\n // the guard is held. Legacy writers still contend on the exclusive wx open.\n fs.unlinkSync(lockPath);\n return true;\n } catch (error) {\n if (isFileSystemError(error) && error.code === 'ENOENT') return false;\n throw error;\n }\n}\n\nfunction releaseLock(lockPath: string, token: string, handle: number): void {\n fs.closeSync(handle);\n // Recovery only retires a lock after its recorded owner has exited, so that\n // owner cannot be here releasing it concurrently. A replaced lock is ambiguous.\n if (readToken(lockPath) === token) fs.rmSync(lockPath, { force: true });\n}\n\nfunction createLease(\n locks: readonly HeldHistoryLock[],\n sourcePath: string,\n assertQuiescent: (sourcePath: string) => void | Promise<void>,\n): HistoryOwnershipLease {\n let released = false;\n return {\n assertQuiescent: () => {\n if (released) throw new Error('History ownership lease has been released');\n for (const lock of locks) {\n const held = fs.fstatSync(lock.handle);\n const current = fs.statSync(lock.lockPath);\n if (held.dev !== current.dev || held.ino !== current.ino || readToken(lock.lockPath) !== lock.token) {\n throw new Error('History ownership lock was replaced');\n }\n }\n return assertQuiescent(sourcePath);\n },\n release: () => {\n if (released) return;\n released = true;\n let firstError: unknown;\n for (const lock of [...locks].reverse()) {\n try {\n releaseLock(lock.lockPath, lock.token, lock.handle);\n } catch (error) {\n firstError ??= error;\n }\n }\n if (firstError !== undefined) throw firstError;\n },\n };\n}\n\n/**\n * Creates the canonical history owner used by runtime writers, export CLI, and\n * the explicit offline importer. The default source boundary remains v4.\n * Complete locks left by a dead process are recovered under an exclusive guard.\n * A live owner or an ambiguous sidecar still blocks acquisition.\n */\nexport function createHistoryOwnership(options: HistoryOwnershipOptions = {}): HistoryOwnership {\n const assertQuiescent = options.assertQuiescent ?? (() => undefined);\n const assertSource =\n options.sourceFormat === 'sqlite'\n ? assertSqliteSource\n : options.sourceFormat === 'v3'\n ? assertV3Source\n : assertV4Source;\n return {\n async acquire(sourcePath: string): Promise<HistoryOwnershipLease> {\n const absoluteSourcePath = canonicalSourcePath(sourcePath);\n const paths = [absoluteSourcePath, ...(options.additionalPaths ?? [])].map(canonicalSourcePath);\n const canonicalPaths = [...new Set(paths)].sort((left, right) => left.localeCompare(right));\n const locks: HeldHistoryLock[] = [];\n let conflictingLockPath = historyOwnershipLockPath(absoluteSourcePath);\n try {\n for (const lockedPath of canonicalPaths) {\n const lockPath = historyOwnershipLockPath(lockedPath);\n conflictingLockPath = lockPath;\n const token = randomUUID();\n const record: HistoryLockRecord = {\n version: LOCK_VERSION,\n format: LOCK_FORMAT,\n pid: process.pid,\n sourcePath: lockedPath,\n token,\n };\n fs.mkdirSync(path.dirname(lockPath), { recursive: true, mode: 0o700 });\n withAcquisitionGuard(lockPath, () => {\n let handle: number;\n try {\n handle = fs.openSync(lockPath, 'wx', 0o600);\n } catch (error) {\n if (!isFileSystemError(error) || error.code !== 'EEXIST' || !recoverDeadOwner(lockPath, lockedPath))\n throw error;\n handle = fs.openSync(lockPath, 'wx', 0o600);\n }\n const lock = { lockPath, token, handle };\n locks.push(lock);\n fs.writeFileSync(handle, `${JSON.stringify(record)}\\n`, 'utf8');\n fs.fsyncSync(handle);\n });\n }\n assertSource(absoluteSourcePath);\n } catch (error) {\n for (const lock of [...locks].reverse()) {\n try {\n releaseLock(lock.lockPath, lock.token, lock.handle);\n } catch {\n // Preserve the acquisition failure and never remove a replaced lock.\n }\n }\n if (isFileSystemError(error) && error.code === 'EEXIST') {\n throw new Error(`History ownership lock already exists or is ambiguous: ${conflictingLockPath}`, {\n cause: error,\n });\n }\n throw error;\n }\n return createLease(locks, absoluteSourcePath, assertQuiescent);\n },\n };\n}\n\n/** Explicitly named alias for hosts that want to document the v4 boundary. */\nexport const createV4HistoryOwnership = createHistoryOwnership;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"historyOwnership.mjs","names":[],"sources":["../src/services/historyOwnership/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { HistoryOwnership, HistoryOwnershipLease } from './type';\n\nconst LOCK_SUFFIX = '.po-v4.lock';\nconst LOCK_VERSION = 1;\nconst LOCK_FORMAT = 'po-v4-history-ownership';\n\ninterface HistoryLockRecord {\n version: 1;\n format: 'po-v4-history-ownership';\n pid: number;\n sourcePath: string;\n token: string;\n}\n\ninterface HeldHistoryLock {\n lockPath: string;\n token: string;\n handle: number;\n}\n\nexport interface HistoryOwnershipOptions {\n /** Checks managed writers; this cannot account for an unmanaged Pi process. */\n assertQuiescent?: (sourcePath: string) => void | Promise<void>;\n /** The source format admitted by this owner. Defaults to canonical v4. */\n sourceFormat?: 'v3' | 'v4' | 'sqlite';\n /** Additional paths to lock for the lifetime of each acquired source lease. */\n additionalPaths?: readonly string[];\n}\n\nfunction canonicalSourcePath(sourcePath: string): string {\n const absolute = path.resolve(sourcePath);\n if (fs.existsSync(absolute)) return fs.realpathSync(absolute);\n const segments = [path.basename(absolute)];\n let parent = path.dirname(absolute);\n while (!fs.existsSync(parent)) {\n segments.unshift(path.basename(parent));\n parent = path.dirname(parent);\n }\n return path.join(fs.realpathSync(parent), ...segments);\n}\n\n/** Resolve aliases so every writer and exporter contends for the same lock. */\nexport function historyOwnershipLockPath(sourcePath: string): string {\n return `${canonicalSourcePath(sourcePath)}${LOCK_SUFFIX}`;\n}\n\nfunction isHistoryObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isV4Header(value: unknown): boolean {\n return isHistoryObject(value) && value.kind === 'header' && value.v === 4;\n}\n\nfunction isV3Header(value: unknown): boolean {\n return isHistoryObject(value) && value.type === 'session' && value.version === 3;\n}\n\nfunction readHeader(sourcePath: string, format: 'v3' | 'v4'): unknown {\n const firstLine = fs.readFileSync(sourcePath, 'utf8').split('\\n', 1)[0] ?? '';\n try {\n return JSON.parse(firstLine);\n } catch (error) {\n const message =\n format === 'v4'\n ? `History ownership source is not canonical v4 JSONL: ${sourcePath}`\n : `Offline history source is not canonical v3 JSONL: ${sourcePath}`;\n throw new Error(message, { cause: error });\n }\n}\n\nfunction assertIndependentRegularFile(sourcePath: string, label: string): void {\n const stat = fs.statSync(sourcePath);\n if (!stat.isFile() || stat.nlink !== 1) throw new Error(`${label} must be an independent regular file`);\n}\n\nfunction assertV4Source(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'Canonical history');\n if (!isV4Header(readHeader(sourcePath, 'v4')))\n throw new Error(`History ownership only supports canonical v4 sources: ${sourcePath}`);\n}\n\nfunction assertV3Source(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'Offline v3 history source');\n if (!isV3Header(readHeader(sourcePath, 'v3')))\n throw new Error(`Offline history import only supports v3 sources: ${sourcePath}`);\n}\n\nfunction assertSqliteSource(sourcePath: string): void {\n if (!fs.existsSync(sourcePath)) return;\n assertIndependentRegularFile(sourcePath, 'SQLite history');\n const descriptor = fs.openSync(sourcePath, 'r');\n try {\n const header = Buffer.alloc(16);\n if (\n fs.readSync(descriptor, header, 0, header.length, 0) !== header.length ||\n header.toString('utf8') !== 'SQLite format 3\\u0000'\n )\n throw new Error(`History ownership source is not SQLite: ${sourcePath}`);\n } finally {\n fs.closeSync(descriptor);\n }\n}\n\nfunction isFileSystemError(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && typeof (error as NodeJS.ErrnoException).code === 'string';\n}\n\nfunction readToken(lockPath: string): string | undefined {\n try {\n const value = JSON.parse(fs.readFileSync(lockPath, 'utf8')) as Partial<HistoryLockRecord>;\n return typeof value.token === 'string' ? value.token : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** A dead owner is recoverable only when the entire lock record is recognizable. */\nfunction readRecoverableLock(lockPath: string, sourcePath: string): HistoryLockRecord | undefined {\n try {\n const stat = fs.lstatSync(lockPath);\n if (!stat.isFile() || stat.nlink !== 1) return undefined;\n const value: unknown = JSON.parse(fs.readFileSync(lockPath, 'utf8'));\n if (\n !isHistoryObject(value) ||\n value.version !== LOCK_VERSION ||\n value.format !== LOCK_FORMAT ||\n value.sourcePath !== sourcePath ||\n !Number.isSafeInteger(value.pid) ||\n (value.pid as number) <= 0 ||\n typeof value.token !== 'string' ||\n !/^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu.test(value.token)\n )\n return undefined;\n return value as unknown as HistoryLockRecord;\n } catch {\n return undefined;\n }\n}\n\nfunction ownerMayBeAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return !(isFileSystemError(error) && error.code === 'ESRCH');\n }\n}\n/** A guard left by a dead acquirer can be retired without touching its source lock. */\nfunction retireDeadGuard(guard: string): boolean {\n try {\n const stat = fs.lstatSync(guard);\n if (!stat.isDirectory()) return false;\n const entries = fs.readdirSync(guard);\n // An empty guard might still belong to a process killed between mkdir and\n // publishing its marker. Fail closed rather than race a new acquirer.\n if (entries.length !== 1 || !/^owner-[\\da-f-]{36}\\.json$/iu.test(entries[0]!)) return false;\n const marker = path.join(guard, entries[0]!);\n const markerStat = fs.lstatSync(marker);\n if (!markerStat.isFile() || markerStat.nlink !== 1) return false;\n const owner: unknown = JSON.parse(fs.readFileSync(marker, 'utf8'));\n if (!isHistoryObject(owner) || !Number.isSafeInteger(owner.pid) || (owner.pid as number) <= 0) return false;\n if (ownerMayBeAlive(owner.pid as number)) return false;\n // Only the process that unlinks this unique marker may retire the directory.\n // Other cleaners see a newly empty guard and refuse to remove it.\n fs.unlinkSync(marker);\n fs.rmdirSync(guard);\n return true;\n } catch {\n return false;\n }\n}\n\n/** All new acquirers hold this guard until their ownership record is durable. */\nfunction withAcquisitionGuard<T>(lockPath: string, acquire: () => T): T {\n const guard = `${lockPath}.recovery`;\n try {\n fs.mkdirSync(guard, { mode: 0o700 });\n } catch (error) {\n if (!isFileSystemError(error) || error.code !== 'EEXIST' || !retireDeadGuard(guard)) throw error;\n fs.mkdirSync(guard, { mode: 0o700 });\n }\n const marker = path.join(guard, `owner-${randomUUID()}.json`);\n try {\n fs.writeFileSync(marker, JSON.stringify({ pid: process.pid }), { flag: 'wx', mode: 0o600 });\n return acquire();\n } finally {\n fs.rmSync(marker, { force: true });\n fs.rmdirSync(guard);\n }\n}\n\n/** Called only under the acquisition guard, before publishing a new owner. */\nfunction recoverDeadOwner(lockPath: string, sourcePath: string): boolean {\n try {\n const record = readRecoverableLock(lockPath, sourcePath);\n if (!record || ownerMayBeAlive(record.pid)) return false;\n const before = fs.lstatSync(lockPath);\n if (readRecoverableLock(lockPath, sourcePath)?.token !== record.token || ownerMayBeAlive(record.pid)) return false;\n const current = fs.lstatSync(lockPath);\n if (before.dev !== current.dev || before.ino !== current.ino) return false;\n // The owner is gone, and other recoverers cannot remove this lock while\n // the guard is held. Legacy writers still contend on the exclusive wx open.\n fs.unlinkSync(lockPath);\n return true;\n } catch (error) {\n if (isFileSystemError(error) && error.code === 'ENOENT') return false;\n throw error;\n }\n}\n\nfunction releaseLock(lockPath: string, token: string, handle: number): void {\n fs.closeSync(handle);\n // Recovery only retires a lock after its recorded owner has exited, so that\n // owner cannot be here releasing it concurrently. A replaced lock is ambiguous.\n if (readToken(lockPath) === token) fs.rmSync(lockPath, { force: true });\n}\n\nfunction createLease(\n locks: readonly HeldHistoryLock[],\n sourcePath: string,\n assertQuiescent: (sourcePath: string) => void | Promise<void>,\n): HistoryOwnershipLease {\n let released = false;\n return {\n assertQuiescent: () => {\n if (released) throw new Error('History ownership lease has been released');\n for (const lock of locks) {\n const held = fs.fstatSync(lock.handle);\n const current = fs.statSync(lock.lockPath);\n if (held.dev !== current.dev || held.ino !== current.ino || readToken(lock.lockPath) !== lock.token) {\n throw new Error('History ownership lock was replaced');\n }\n }\n return assertQuiescent(sourcePath);\n },\n release: () => {\n if (released) return;\n released = true;\n let firstError: unknown;\n for (const lock of [...locks].reverse()) {\n try {\n releaseLock(lock.lockPath, lock.token, lock.handle);\n } catch (error) {\n firstError ??= error;\n }\n }\n if (firstError !== undefined) throw firstError;\n },\n };\n}\n\n/**\n * Creates the canonical history owner used by runtime writers, export CLI, and\n * the explicit offline importer. The default source boundary remains v4.\n * Complete locks left by a dead process are recovered under an exclusive guard.\n * A live owner or an ambiguous sidecar still blocks acquisition.\n */\nexport function createHistoryOwnership(options: HistoryOwnershipOptions = {}): HistoryOwnership {\n const assertQuiescent = options.assertQuiescent ?? (() => undefined);\n const assertSource =\n options.sourceFormat === 'sqlite'\n ? assertSqliteSource\n : options.sourceFormat === 'v3'\n ? assertV3Source\n : assertV4Source;\n return {\n async acquire(sourcePath: string): Promise<HistoryOwnershipLease> {\n const absoluteSourcePath = canonicalSourcePath(sourcePath);\n const paths = [absoluteSourcePath, ...(options.additionalPaths ?? [])].map(canonicalSourcePath);\n const canonicalPaths = [...new Set(paths)].sort((left, right) => left.localeCompare(right));\n const locks: HeldHistoryLock[] = [];\n let conflictingLockPath = historyOwnershipLockPath(absoluteSourcePath);\n try {\n for (const lockedPath of canonicalPaths) {\n const lockPath = historyOwnershipLockPath(lockedPath);\n conflictingLockPath = lockPath;\n const token = randomUUID();\n const record: HistoryLockRecord = {\n version: LOCK_VERSION,\n format: LOCK_FORMAT,\n pid: process.pid,\n sourcePath: lockedPath,\n token,\n };\n fs.mkdirSync(path.dirname(lockPath), { recursive: true, mode: 0o700 });\n withAcquisitionGuard(lockPath, () => {\n let handle: number;\n try {\n handle = fs.openSync(lockPath, 'wx', 0o600);\n } catch (error) {\n if (!isFileSystemError(error) || error.code !== 'EEXIST' || !recoverDeadOwner(lockPath, lockedPath))\n throw error;\n handle = fs.openSync(lockPath, 'wx', 0o600);\n }\n const lock = { lockPath, token, handle };\n locks.push(lock);\n fs.writeFileSync(handle, `${JSON.stringify(record)}\\n`, 'utf8');\n fs.fsyncSync(handle);\n });\n }\n assertSource(absoluteSourcePath);\n } catch (error) {\n for (const lock of [...locks].reverse()) {\n try {\n releaseLock(lock.lockPath, lock.token, lock.handle);\n } catch {\n // Preserve the acquisition failure and never remove a replaced lock.\n }\n }\n if (isFileSystemError(error) && error.code === 'EEXIST') {\n throw new Error(`History ownership lock already exists or is ambiguous: ${conflictingLockPath}`, {\n cause: error,\n });\n }\n throw error;\n }\n return createLease(locks, absoluteSourcePath, assertQuiescent);\n },\n };\n}\n\n/** Explicitly named alias for hosts that want to document the v4 boundary. */\nexport const createV4HistoryOwnership = createHistoryOwnership;\n"],"mappings":"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"}
|
package/dist/hubChannel.cjs
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_hubChannel = require("./src/schemas/hubChannel.cjs");
|
|
3
|
+
const require_home = require("./src/schemas/home.cjs");
|
|
4
|
+
exports.HOME_ENTITY_LIMIT = require_home.HOME_ENTITY_LIMIT;
|
|
5
|
+
exports.HOME_KINDS = require_home.HOME_KINDS;
|
|
6
|
+
exports.HOME_PAGE_LIMIT = require_home.HOME_PAGE_LIMIT;
|
|
7
|
+
exports.REMOTE_CONVERSATION_SESSION_PROVENANCE = require_hubChannel.REMOTE_CONVERSATION_SESSION_PROVENANCE;
|
|
3
8
|
exports.WORKFLOW_DISPATCHER_SESSION_PROVENANCE = require_hubChannel.WORKFLOW_DISPATCHER_SESSION_PROVENANCE;
|
|
4
9
|
exports.WORKFLOW_STEP_SESSION_PROVENANCE = require_hubChannel.WORKFLOW_STEP_SESSION_PROVENANCE;
|
|
10
|
+
exports.parseHomeContribution = require_home.parseHomeContribution;
|
|
11
|
+
exports.parseHomeEntity = require_home.parseHomeEntity;
|
|
12
|
+
exports.parseHomeProjection = require_home.parseHomeProjection;
|
|
13
|
+
exports.parseHomeSnapshot = require_home.parseHomeSnapshot;
|
package/dist/hubChannel.d.mts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { HOME_ENTITY_LIMIT, HOME_KINDS, HOME_PAGE_LIMIT, HomeContribution, HomeCoverage, HomeEntity, HomeItem, HomeKind, HomeProjection, HomeRequest, HomeSnapshot, HomeSourceStatus, parseHomeContribution, parseHomeEntity, parseHomeProjection, parseHomeSnapshot } from "./src/schemas/home.mjs";
|
|
2
|
+
import { PoComputerUseHostBinding, PoComputerUseHostOperation, PoComputerUseHostRequest, PoComputerUseSessionAccess, PoDirectEventBus, PoDirectEventSubscriptionOptions, PoHubChannel, PoHubChannelConnection, PoHubChannelFrame, PoHubChannelHost, PoHubChannelLifecycle, PoHubChannelSource, PoHubReservedWorktreeProvisioner, PoHubReservedWorktreeRequest, PoHubSessionApiRequest, PoHubSessionCreateRequest, PoHubSessionExecutionState, PoHubSessionPromptOptions, PoHubSessionPromptReceipt, PoHubSessionReservations, PoHubSessionScope, PoHubSessionSelection, PoHubSessionService, PoPendingSessionSetup, PoSessionActivity, PoSessionCommunicationEndpoint, PoSessionContext, PoSessionPeerDescription, REMOTE_CONVERSATION_SESSION_PROVENANCE, WORKFLOW_DISPATCHER_SESSION_PROVENANCE, WORKFLOW_STEP_SESSION_PROVENANCE } from "./src/schemas/hubChannel.mjs";
|
|
3
|
+
export { HOME_ENTITY_LIMIT, HOME_KINDS, HOME_PAGE_LIMIT, HomeContribution, HomeCoverage, HomeEntity, HomeItem, HomeKind, HomeProjection, HomeRequest, HomeSnapshot, HomeSourceStatus, PoComputerUseHostBinding, PoComputerUseHostOperation, PoComputerUseHostRequest, PoComputerUseSessionAccess, PoDirectEventBus, PoDirectEventSubscriptionOptions, PoHubChannel, PoHubChannelConnection, PoHubChannelFrame, PoHubChannelHost, PoHubChannelLifecycle, PoHubChannelSource, PoHubReservedWorktreeProvisioner, PoHubReservedWorktreeRequest, PoHubSessionApiRequest, PoHubSessionCreateRequest, PoHubSessionExecutionState, PoHubSessionPromptOptions, PoHubSessionPromptReceipt, PoHubSessionReservations, PoHubSessionScope, PoHubSessionSelection, PoHubSessionService, PoPendingSessionSetup, PoSessionActivity, PoSessionCommunicationEndpoint, PoSessionContext, PoSessionPeerDescription, REMOTE_CONVERSATION_SESSION_PROVENANCE, WORKFLOW_DISPATCHER_SESSION_PROVENANCE, WORKFLOW_STEP_SESSION_PROVENANCE, parseHomeContribution, parseHomeEntity, parseHomeProjection, parseHomeSnapshot };
|
package/dist/hubChannel.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { WORKFLOW_DISPATCHER_SESSION_PROVENANCE, WORKFLOW_STEP_SESSION_PROVENANCE } from "./src/schemas/hubChannel.mjs";
|
|
2
|
-
|
|
1
|
+
import { REMOTE_CONVERSATION_SESSION_PROVENANCE, WORKFLOW_DISPATCHER_SESSION_PROVENANCE, WORKFLOW_STEP_SESSION_PROVENANCE } from "./src/schemas/hubChannel.mjs";
|
|
2
|
+
import { HOME_ENTITY_LIMIT, HOME_KINDS, HOME_PAGE_LIMIT, parseHomeContribution, parseHomeEntity, parseHomeProjection, parseHomeSnapshot } from "./src/schemas/home.mjs";
|
|
3
|
+
export { HOME_ENTITY_LIMIT, HOME_KINDS, HOME_PAGE_LIMIT, REMOTE_CONVERSATION_SESSION_PROVENANCE, WORKFLOW_DISPATCHER_SESSION_PROVENANCE, WORKFLOW_STEP_SESSION_PROVENANCE, parseHomeContribution, parseHomeEntity, parseHomeProjection, parseHomeSnapshot };
|
package/dist/index.cjs
CHANGED
|
@@ -8,37 +8,35 @@ exports.AskUserBlockedEventSchema = require_askUser.AskUserBlockedEventSchema;
|
|
|
8
8
|
exports.AskUserPromptEventSchema = require_askUser.AskUserPromptEventSchema;
|
|
9
9
|
exports.AskUserPromptOptionSchema = require_askUser.AskUserPromptOptionSchema;
|
|
10
10
|
exports.AskUserPromptQuestionSchema = require_askUser.AskUserPromptQuestionSchema;
|
|
11
|
-
exports.DOOM_ASK_USER_BLOCKED_EVENT = require_askUser.DOOM_ASK_USER_BLOCKED_EVENT;
|
|
12
|
-
exports.DOOM_ASK_USER_PROMPT_EVENT = require_askUser.DOOM_ASK_USER_PROMPT_EVENT;
|
|
13
|
-
exports.DOOM_COCKPIT_SERVER_ID = require_sessionProtocol.DOOM_COCKPIT_SERVER_ID;
|
|
14
|
-
exports.DOOM_NARRATION_SERVICE = require_narration.DOOM_NARRATION_SERVICE;
|
|
15
|
-
exports.DOOM_NOTIFICATION_ENTRY_TYPE = require_notification.DOOM_NOTIFICATION_ENTRY_TYPE;
|
|
16
|
-
exports.DOOM_NOTIFICATION_ENTRY_VERSION = require_notification.DOOM_NOTIFICATION_ENTRY_VERSION;
|
|
17
|
-
exports.DOOM_NOTIFICATION_SERVICE = require_notification.DOOM_NOTIFICATION_SERVICE;
|
|
18
|
-
exports.DOOM_SESSION_MANAGEMENT_SERVICE_ID = require_sessionProtocol.DOOM_SESSION_MANAGEMENT_SERVICE_ID;
|
|
19
|
-
exports.DOOM_SESSION_SERVICE_ID = require_sessionProtocol.DOOM_SESSION_SERVICE_ID;
|
|
20
|
-
exports.DoomHubService = require_sessionProtocol.DoomHubService;
|
|
21
|
-
exports.DoomNotificationEntryDataSchema = require_notification.DoomNotificationEntryDataSchema;
|
|
22
|
-
exports.DoomNotificationLevelSchema = require_notification.DoomNotificationLevelSchema;
|
|
23
|
-
exports.DoomNotificationRequestSchema = require_notification.DoomNotificationRequestSchema;
|
|
24
|
-
exports.DoomProtocolError = require_runtimeProtocol.DoomProtocolError;
|
|
25
|
-
exports.DoomProtocolValidationError = require_runtimeProtocol.DoomProtocolValidationError;
|
|
26
|
-
exports.DoomSessionManagementService = require_sessionProtocol.DoomSessionManagementService;
|
|
27
|
-
exports.DoomSessionService = require_sessionProtocol.DoomSessionService;
|
|
28
|
-
exports.MAX_DOOM_NOTIFICATION_BODY_CHARACTERS = require_notification.MAX_DOOM_NOTIFICATION_BODY_CHARACTERS;
|
|
29
|
-
exports.MAX_DOOM_NOTIFICATION_SUBTITLE_CHARACTERS = require_notification.MAX_DOOM_NOTIFICATION_SUBTITLE_CHARACTERS;
|
|
30
|
-
exports.MAX_DOOM_NOTIFICATION_TITLE_CHARACTERS = require_notification.MAX_DOOM_NOTIFICATION_TITLE_CHARACTERS;
|
|
31
11
|
exports.MAX_NARRATION_TEXT_CHARACTERS = require_narration.MAX_NARRATION_TEXT_CHARACTERS;
|
|
12
|
+
exports.MAX_PO_NOTIFICATION_BODY_CHARACTERS = require_notification.MAX_PO_NOTIFICATION_BODY_CHARACTERS;
|
|
13
|
+
exports.MAX_PO_NOTIFICATION_SUBTITLE_CHARACTERS = require_notification.MAX_PO_NOTIFICATION_SUBTITLE_CHARACTERS;
|
|
14
|
+
exports.MAX_PO_NOTIFICATION_TITLE_CHARACTERS = require_notification.MAX_PO_NOTIFICATION_TITLE_CHARACTERS;
|
|
15
|
+
exports.MAX_SESSION_GROUPS = require_sessionProtocol.MAX_SESSION_GROUPS;
|
|
16
|
+
exports.MAX_SESSION_GROUP_LENGTH = require_sessionProtocol.MAX_SESSION_GROUP_LENGTH;
|
|
32
17
|
exports.NarrationRequestSchema = require_narration.NarrationRequestSchema;
|
|
33
|
-
exports.
|
|
18
|
+
exports.PO_ASK_USER_BLOCKED_EVENT = require_askUser.PO_ASK_USER_BLOCKED_EVENT;
|
|
19
|
+
exports.PO_ASK_USER_PROMPT_EVENT = require_askUser.PO_ASK_USER_PROMPT_EVENT;
|
|
20
|
+
exports.PO_NARRATION_SERVICE = require_narration.PO_NARRATION_SERVICE;
|
|
21
|
+
exports.PO_NOTIFICATION_ENTRY_TYPE = require_notification.PO_NOTIFICATION_ENTRY_TYPE;
|
|
22
|
+
exports.PO_NOTIFICATION_ENTRY_VERSION = require_notification.PO_NOTIFICATION_ENTRY_VERSION;
|
|
23
|
+
exports.PO_NOTIFICATION_SERVICE = require_notification.PO_NOTIFICATION_SERVICE;
|
|
24
|
+
exports.PoNotificationEntryDataSchema = require_notification.PoNotificationEntryDataSchema;
|
|
25
|
+
exports.PoNotificationLevelSchema = require_notification.PoNotificationLevelSchema;
|
|
26
|
+
exports.PoNotificationRequestSchema = require_notification.PoNotificationRequestSchema;
|
|
27
|
+
exports.PoProtocolError = require_runtimeProtocol.PoProtocolError;
|
|
28
|
+
exports.PoProtocolValidationError = require_runtimeProtocol.PoProtocolValidationError;
|
|
29
|
+
exports.SESSION_GROUPS_CHANGED_FRAME = require_sessionProtocol.SESSION_GROUPS_CHANGED_FRAME;
|
|
34
30
|
exports.createNarrationRequest = require_narration.createNarrationRequest;
|
|
31
|
+
exports.createPoNotificationEntryData = require_notification.createPoNotificationEntryData;
|
|
35
32
|
exports.createProtocolRuntime = require_runtimeProtocol.createProtocolRuntime;
|
|
36
|
-
exports.isDoomNotificationEntryData = require_notification.isDoomNotificationEntryData;
|
|
37
|
-
exports.isDoomNotificationRequest = require_notification.isDoomNotificationRequest;
|
|
38
33
|
exports.isNarrationRequest = require_narration.isNarrationRequest;
|
|
39
|
-
exports.
|
|
34
|
+
exports.isPoNotificationEntryData = require_notification.isPoNotificationEntryData;
|
|
35
|
+
exports.isPoNotificationRequest = require_notification.isPoNotificationRequest;
|
|
40
36
|
exports.normalizeNarrationText = require_narration.normalizeNarrationText;
|
|
41
|
-
exports.
|
|
42
|
-
exports.
|
|
43
|
-
exports.
|
|
44
|
-
exports.
|
|
37
|
+
exports.normalizePoNotificationRequest = require_notification.normalizePoNotificationRequest;
|
|
38
|
+
exports.normalizeSessionGroups = require_sessionProtocol.normalizeSessionGroups;
|
|
39
|
+
exports.readPoNarrationService = require_narration.readPoNarrationService;
|
|
40
|
+
exports.readPoNotificationService = require_notification.readPoNotificationService;
|
|
41
|
+
exports.requirePoNarrationService = require_narration.requirePoNarrationService;
|
|
42
|
+
exports.requirePoNotificationService = require_notification.requirePoNotificationService;
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AskUserBlockedEvent, AskUserBlockedEventSchema, AskUserPromptEvent, AskUserPromptEventSchema, AskUserPromptOption, AskUserPromptOptionSchema, AskUserPromptQuestion, AskUserPromptQuestionSchema,
|
|
2
|
-
import { AssistantTranscriptItem, ClearQueueResult,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
export { AskUserBlockedEvent, AskUserBlockedEventSchema, AskUserPromptEvent, AskUserPromptEventSchema, AskUserPromptOption, AskUserPromptOptionSchema, AskUserPromptQuestion, AskUserPromptQuestionSchema, AssistantTranscriptItem, ClearQueueResult,
|
|
1
|
+
import { AskUserBlockedEvent, AskUserBlockedEventSchema, AskUserPromptEvent, AskUserPromptEventSchema, AskUserPromptOption, AskUserPromptOptionSchema, AskUserPromptQuestion, AskUserPromptQuestionSchema, PO_ASK_USER_BLOCKED_EVENT, PO_ASK_USER_PROMPT_EVENT } from "./src/schemas/askUser.mjs";
|
|
2
|
+
import { AssistantTranscriptItem, ClearQueueResult, ExtensionUiResponse, FollowUpArgs, ImageContentPart, JsonValue, MAX_SESSION_GROUPS, MAX_SESSION_GROUP_LENGTH, ModelRef, PromoteQueuedArgs, PromptArgs, ProtocolEvent, QueuedItemArgs, RewindArgs, RewindResult, RewindSummaryEntry, SESSION_GROUPS_CHANGED_FRAME, SessionCommand, SessionCommandSourceInfo, SessionLifecycle, SessionLive, SessionLiveTool, SessionMessageArgs, SessionPhase, SessionPresentation, SessionService, SessionServiceState, SessionSnapshot, SessionStateInfo, SessionStats, SessionUsage, SteerArgs, TextContentPart, ThinkingContentPart, ThinkingLevel, ToolCallContentPart, ToolTranscriptItem, TranscriptItem, TranscriptPage, TranscriptPageRequest, UserTranscriptItem, normalizeSessionGroups } from "./src/schemas/sessionProtocol.mjs";
|
|
3
|
+
import { MAX_PO_NOTIFICATION_BODY_CHARACTERS, MAX_PO_NOTIFICATION_SUBTITLE_CHARACTERS, MAX_PO_NOTIFICATION_TITLE_CHARACTERS, PO_NOTIFICATION_ENTRY_TYPE, PO_NOTIFICATION_ENTRY_VERSION, PO_NOTIFICATION_SERVICE, PoNotificationEntryData, PoNotificationEntryDataSchema, PoNotificationLevel, PoNotificationLevelSchema, PoNotificationRequest, PoNotificationRequestSchema, PoNotificationService, createPoNotificationEntryData, isPoNotificationEntryData, isPoNotificationRequest, normalizePoNotificationRequest, readPoNotificationService, requirePoNotificationService } from "./src/schemas/notification.mjs";
|
|
4
|
+
import { MAX_NARRATION_TEXT_CHARACTERS, NarrationRequest, NarrationRequestSchema, PO_NARRATION_SERVICE, PoNarrationService, createNarrationRequest, isNarrationRequest, normalizeNarrationText, readPoNarrationService, requirePoNarrationService } from "./src/schemas/narration.mjs";
|
|
5
|
+
import { EventBusLike, PoProtocolError, PoProtocolValidationError, ProtocolRuntime, ProtocolRuntimeOptions, RequestOptions, createProtocolRuntime } from "./runtimeProtocol.mjs";
|
|
6
|
+
export { AskUserBlockedEvent, AskUserBlockedEventSchema, AskUserPromptEvent, AskUserPromptEventSchema, AskUserPromptOption, AskUserPromptOptionSchema, AskUserPromptQuestion, AskUserPromptQuestionSchema, AssistantTranscriptItem, ClearQueueResult, type EventBusLike, ExtensionUiResponse, FollowUpArgs, ImageContentPart, JsonValue, MAX_NARRATION_TEXT_CHARACTERS, MAX_PO_NOTIFICATION_BODY_CHARACTERS, MAX_PO_NOTIFICATION_SUBTITLE_CHARACTERS, MAX_PO_NOTIFICATION_TITLE_CHARACTERS, MAX_SESSION_GROUPS, MAX_SESSION_GROUP_LENGTH, ModelRef, NarrationRequest, NarrationRequestSchema, PO_ASK_USER_BLOCKED_EVENT, PO_ASK_USER_PROMPT_EVENT, PO_NARRATION_SERVICE, PO_NOTIFICATION_ENTRY_TYPE, PO_NOTIFICATION_ENTRY_VERSION, PO_NOTIFICATION_SERVICE, PoNarrationService, PoNotificationEntryData, PoNotificationEntryDataSchema, PoNotificationLevel, PoNotificationLevelSchema, PoNotificationRequest, PoNotificationRequestSchema, PoNotificationService, PoProtocolError, PoProtocolValidationError, PromoteQueuedArgs, PromptArgs, ProtocolEvent, type ProtocolRuntime, type ProtocolRuntimeOptions, QueuedItemArgs, type RequestOptions, RewindArgs, RewindResult, RewindSummaryEntry, SESSION_GROUPS_CHANGED_FRAME, SessionCommand, SessionCommandSourceInfo, SessionLifecycle, SessionLive, SessionLiveTool, SessionMessageArgs, SessionPhase, SessionPresentation, SessionService, SessionServiceState, SessionSnapshot, SessionStateInfo, SessionStats, SessionUsage, SteerArgs, TextContentPart, ThinkingContentPart, ThinkingLevel, ToolCallContentPart, ToolTranscriptItem, TranscriptItem, TranscriptPage, TranscriptPageRequest, UserTranscriptItem, createNarrationRequest, createPoNotificationEntryData, createProtocolRuntime, isNarrationRequest, isPoNotificationEntryData, isPoNotificationRequest, normalizeNarrationText, normalizePoNotificationRequest, normalizeSessionGroups, readPoNarrationService, readPoNotificationService, requirePoNarrationService, requirePoNotificationService };
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AskUserBlockedEventSchema, AskUserPromptEventSchema, AskUserPromptOptionSchema, AskUserPromptQuestionSchema,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
export { AskUserBlockedEventSchema, AskUserPromptEventSchema, AskUserPromptOptionSchema, AskUserPromptQuestionSchema,
|
|
1
|
+
import { AskUserBlockedEventSchema, AskUserPromptEventSchema, AskUserPromptOptionSchema, AskUserPromptQuestionSchema, PO_ASK_USER_BLOCKED_EVENT, PO_ASK_USER_PROMPT_EVENT } from "./src/schemas/askUser.mjs";
|
|
2
|
+
import { MAX_NARRATION_TEXT_CHARACTERS, NarrationRequestSchema, PO_NARRATION_SERVICE, createNarrationRequest, isNarrationRequest, normalizeNarrationText, readPoNarrationService, requirePoNarrationService } from "./src/schemas/narration.mjs";
|
|
3
|
+
import { MAX_PO_NOTIFICATION_BODY_CHARACTERS, MAX_PO_NOTIFICATION_SUBTITLE_CHARACTERS, MAX_PO_NOTIFICATION_TITLE_CHARACTERS, PO_NOTIFICATION_ENTRY_TYPE, PO_NOTIFICATION_ENTRY_VERSION, PO_NOTIFICATION_SERVICE, PoNotificationEntryDataSchema, PoNotificationLevelSchema, PoNotificationRequestSchema, createPoNotificationEntryData, isPoNotificationEntryData, isPoNotificationRequest, normalizePoNotificationRequest, readPoNotificationService, requirePoNotificationService } from "./src/schemas/notification.mjs";
|
|
4
|
+
import { MAX_SESSION_GROUPS, MAX_SESSION_GROUP_LENGTH, SESSION_GROUPS_CHANGED_FRAME, normalizeSessionGroups } from "./src/schemas/sessionProtocol.mjs";
|
|
5
|
+
import { PoProtocolError, PoProtocolValidationError, createProtocolRuntime } from "./runtimeProtocol.mjs";
|
|
6
|
+
export { AskUserBlockedEventSchema, AskUserPromptEventSchema, AskUserPromptOptionSchema, AskUserPromptQuestionSchema, MAX_NARRATION_TEXT_CHARACTERS, MAX_PO_NOTIFICATION_BODY_CHARACTERS, MAX_PO_NOTIFICATION_SUBTITLE_CHARACTERS, MAX_PO_NOTIFICATION_TITLE_CHARACTERS, MAX_SESSION_GROUPS, MAX_SESSION_GROUP_LENGTH, NarrationRequestSchema, PO_ASK_USER_BLOCKED_EVENT, PO_ASK_USER_PROMPT_EVENT, PO_NARRATION_SERVICE, PO_NOTIFICATION_ENTRY_TYPE, PO_NOTIFICATION_ENTRY_VERSION, PO_NOTIFICATION_SERVICE, PoNotificationEntryDataSchema, PoNotificationLevelSchema, PoNotificationRequestSchema, PoProtocolError, PoProtocolValidationError, SESSION_GROUPS_CHANGED_FRAME, createNarrationRequest, createPoNotificationEntryData, createProtocolRuntime, isNarrationRequest, isPoNotificationEntryData, isPoNotificationRequest, normalizeNarrationText, normalizePoNotificationRequest, normalizeSessionGroups, readPoNarrationService, readPoNotificationService, requirePoNarrationService, requirePoNotificationService };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@earendil-works/chord';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@earendil-works/chord/context';
|
package/dist/json.cjs
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
2
|
+
const require_core = require("./src/services/json/core.cjs");
|
|
3
|
+
const require_sync = require("./src/services/json/sync.cjs");
|
|
4
|
+
require("./runtimeJson.cjs");
|
|
5
|
+
exports.isRecord = require_core.isRecord;
|
|
6
|
+
exports.parseJsonObject = require_core.parseJsonObject;
|
|
7
|
+
exports.readJson = require_sync.readJson;
|
|
8
|
+
exports.readJsonAsync = require_core.readJsonAsync;
|
|
9
|
+
exports.serializeJson = require_core.serializeJson;
|
|
10
|
+
exports.writeFileAtomic = require_sync.writeFileAtomic;
|
|
11
|
+
exports.writeJson = require_sync.writeJson;
|
|
12
|
+
exports.writeJsonAsync = require_core.writeJsonAsync;
|
package/dist/json.d.mts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import { JsonObject, isRecord,
|
|
2
|
-
|
|
1
|
+
import { JsonObject, isRecord, parseJsonObject, readJsonAsync, serializeJson, writeJsonAsync } from "./src/services/json/core.mjs";
|
|
2
|
+
import { readJson, writeFileAtomic, writeJson } from "./src/services/json/sync.mjs";
|
|
3
|
+
import "./runtimeJson.mjs";
|
|
4
|
+
export { JsonObject, isRecord, parseJsonObject, readJson, readJsonAsync, serializeJson, writeFileAtomic, writeJson, writeJsonAsync };
|
package/dist/json.mjs
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import { isRecord,
|
|
2
|
-
|
|
1
|
+
import { isRecord, parseJsonObject, readJsonAsync, serializeJson, writeJsonAsync } from "./src/services/json/core.mjs";
|
|
2
|
+
import { readJson, writeFileAtomic, writeJson } from "./src/services/json/sync.mjs";
|
|
3
|
+
import "./runtimeJson.mjs";
|
|
4
|
+
export { isRecord, parseJsonObject, readJson, readJsonAsync, serializeJson, writeFileAtomic, writeJson, writeJsonAsync };
|
package/dist/kernel.cjs
CHANGED
package/dist/kernel.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export { type
|
|
1
|
+
import { KernelContribution, KernelRegistration, KernelSlotHandle, KernelSlotSink, PoKernel } from "./src/types/kernel.mjs";
|
|
2
|
+
import { CreatePoKernelOptions, createPoKernel } from "./src/services/kernel/index.mjs";
|
|
3
|
+
export { type CreatePoKernelOptions, type KernelContribution, type KernelRegistration, type KernelSlotHandle, type KernelSlotSink, type PoKernel, createPoKernel };
|