@agimon-ai/po-core 0.0.0-alpha.2 → 0.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +149 -21
- package/NOTICE +41 -0
- package/dist/agentModel.cjs +1 -1
- package/dist/agentModel.d.mts +2 -2
- package/dist/agentModel.mjs +1 -2
- package/dist/apiContracts.cjs +623 -802
- package/dist/apiContracts.cjs.map +1 -1
- package/dist/apiContracts.d.mts +277 -615
- package/dist/apiContracts.d.mts.map +1 -1
- package/dist/apiContracts.mjs +617 -794
- package/dist/apiContracts.mjs.map +1 -1
- package/dist/askUser.cjs +2 -2
- package/dist/askUser.d.mts +2 -2
- package/dist/askUser.mjs +1 -2
- package/dist/authorTools.mjs +1 -2
- package/dist/backgroundWork.cjs +3 -3
- package/dist/backgroundWork.d.mts +2 -2
- package/dist/backgroundWork.mjs +1 -2
- package/dist/bundleAssetPolicy.mjs +1 -2
- package/dist/chatgptAuth.cjs +3 -2
- package/dist/chatgptAuth.d.mts +3 -2
- package/dist/chatgptAuth.mjs +2 -1
- package/dist/childProcess.cjs +1 -1
- package/dist/childProcess.d.mts +2 -2
- package/dist/childProcess.mjs +1 -2
- package/dist/childSession.cjs +11 -6
- package/dist/childSession.d.mts +3 -3
- package/dist/childSession.mjs +3 -3
- package/dist/cockpitContainer.mjs +1 -2
- package/dist/config.cjs +1 -1
- package/dist/config.d.mts +3 -3
- package/dist/config.mjs +1 -2
- package/dist/contextApi.cjs +1 -0
- package/dist/contextApi.d.mts +2 -2
- package/dist/contextApi.mjs +2 -2
- package/dist/contextContributions.cjs +4 -4
- package/dist/contextContributions.d.mts +3 -3
- package/dist/contextContributions.mjs +3 -3
- package/dist/contextDetailStore.cjs +7 -5
- package/dist/contextDetailStore.cjs.map +1 -1
- package/dist/contextDetailStore.d.mts +2 -1
- package/dist/contextDetailStore.d.mts.map +1 -1
- package/dist/contextDetailStore.mjs +6 -4
- package/dist/contextDetailStore.mjs.map +1 -1
- package/dist/contextProjection.cjs +7 -2
- package/dist/contextProjection.cjs.map +1 -1
- package/dist/contextProjection.d.mts +4 -1
- package/dist/contextProjection.d.mts.map +1 -1
- package/dist/contextProjection.mjs +5 -2
- package/dist/contextProjection.mjs.map +1 -1
- package/dist/cordisHost.cjs +11 -11
- package/dist/cordisHost.d.mts +2 -2
- package/dist/cordisHost.mjs +1 -2
- package/dist/delegation.cjs +8 -8
- package/dist/delegation.d.mts +2 -2
- package/dist/delegation.mjs +1 -2
- package/dist/executionBudget.cjs +4 -3
- package/dist/executionBudget.cjs.map +1 -1
- package/dist/executionBudget.d.mts +2 -2
- package/dist/executionBudget.d.mts.map +1 -1
- package/dist/executionBudget.mjs +4 -3
- package/dist/executionBudget.mjs.map +1 -1
- package/dist/extensionFile.cjs +5 -0
- package/dist/extensionFile.d.mts +4 -2
- package/dist/extensionFile.mjs +4 -2
- package/dist/footer.d.mts +2 -2
- package/dist/footer.mjs +1 -2
- package/dist/headless.cjs +14 -14
- package/dist/headless.d.mts +2 -2
- package/dist/headless.mjs +1 -2
- package/dist/headlessHub.cjs +308 -109
- package/dist/headlessHub.cjs.map +1 -1
- package/dist/headlessHub.d.mts +71 -36
- package/dist/headlessHub.d.mts.map +1 -1
- package/dist/headlessHub.mjs +309 -110
- package/dist/headlessHub.mjs.map +1 -1
- package/dist/headlessProtocol.cjs +327 -0
- package/dist/headlessProtocol.cjs.map +1 -0
- package/dist/headlessProtocol.d.mts +30 -0
- package/dist/headlessProtocol.d.mts.map +1 -0
- package/dist/headlessProtocol.mjs +326 -0
- package/dist/headlessProtocol.mjs.map +1 -0
- package/dist/headlessServer.cjs +166 -151
- package/dist/headlessServer.cjs.map +1 -1
- package/dist/headlessServer.d.mts +13 -5
- package/dist/headlessServer.d.mts.map +1 -1
- package/dist/headlessServer.mjs +166 -151
- package/dist/headlessServer.mjs.map +1 -1
- package/dist/headlessSessionHost.d.mts +58 -21
- package/dist/headlessSessionHost.d.mts.map +1 -1
- package/dist/help.cjs +20 -20
- package/dist/help.d.mts +2 -2
- package/dist/help.mjs +2 -2
- package/dist/history.cjs +16 -20
- package/dist/history.d.mts +9 -7
- package/dist/history.mjs +6 -7
- package/dist/historyOwnership.cjs.map +1 -1
- package/dist/historyOwnership.d.mts +1 -1
- package/dist/historyOwnership.mjs.map +1 -1
- package/dist/hubChannel.cjs +9 -0
- package/dist/hubChannel.d.mts +3 -2
- package/dist/hubChannel.mjs +3 -2
- package/dist/index.cjs +26 -28
- package/dist/index.d.mts +6 -6
- package/dist/index.mjs +6 -6
- package/dist/interop/chord.mjs +1 -0
- package/dist/interop/chordContext.mjs +1 -0
- package/dist/json.cjs +11 -5
- package/dist/json.d.mts +4 -2
- package/dist/json.mjs +4 -2
- package/dist/kernel.cjs +1 -1
- package/dist/kernel.d.mts +3 -3
- package/dist/kernel.mjs +1 -2
- package/dist/leader.d.mts +2 -2
- package/dist/leader.mjs +1 -2
- package/dist/logSinkTelemetry.mjs +1 -2
- package/dist/machineApi.cjs +80 -74
- package/dist/machineApi.cjs.map +1 -1
- package/dist/machineApi.d.mts +5 -2
- package/dist/machineApi.d.mts.map +1 -1
- package/dist/machineApi.mjs +78 -71
- package/dist/machineApi.mjs.map +1 -1
- package/dist/main.cjs +2 -1
- package/dist/main.d.mts +2 -1
- package/dist/main.mjs +2 -1
- package/dist/mcpFacet.d.mts +3 -3
- package/dist/mcpProjection.cjs +13 -13
- package/dist/mcpProjection.d.mts +2 -2
- package/dist/mcpProjection.mjs +1 -2
- package/dist/mcpSchemaCost.cjs +4 -4
- package/dist/mcpSchemaCost.cjs.map +1 -1
- package/dist/mcpSchemaCost.d.mts +2 -2
- package/dist/mcpSchemaCost.mjs +4 -4
- package/dist/mcpSchemaCost.mjs.map +1 -1
- package/dist/mcpSession.cjs +7 -7
- package/dist/mcpSession.d.mts +2 -2
- package/dist/mcpSession.mjs +1 -2
- package/dist/mcpStatus.cjs +2 -2
- package/dist/mcpStatus.d.mts +2 -2
- package/dist/mcpStatus.mjs +1 -2
- package/dist/mcpToolResolver.cjs +3 -3
- package/dist/mcpToolResolver.d.mts +2 -2
- package/dist/mcpToolResolver.mjs +1 -2
- package/dist/mcpWidget.d.mts +2 -2
- package/dist/moduleResolution.cjs +43 -8
- package/dist/moduleResolution.cjs.map +1 -1
- package/dist/moduleResolution.d.mts +10 -1
- package/dist/moduleResolution.d.mts.map +1 -1
- package/dist/moduleResolution.mjs +40 -7
- package/dist/moduleResolution.mjs.map +1 -1
- package/dist/narration.cjs +3 -3
- package/dist/narration.d.mts +2 -2
- package/dist/narration.mjs +1 -2
- package/dist/native.cjs +9 -0
- package/dist/native.d.mts +4 -3
- package/dist/native.mjs +3 -2
- package/dist/nodePlatform.cjs +77 -0
- package/dist/nodePlatform.cjs.map +1 -0
- package/dist/nodePlatform.d.mts +17 -0
- package/dist/nodePlatform.d.mts.map +1 -0
- package/dist/nodePlatform.mjs +72 -0
- package/dist/nodePlatform.mjs.map +1 -0
- package/dist/notification.cjs +15 -15
- package/dist/notification.d.mts +2 -2
- package/dist/notification.mjs +1 -2
- package/dist/packageApi.cjs +11 -11
- package/dist/packageApi.d.mts +2 -2
- package/dist/packageApi.mjs +2 -2
- package/dist/packageApiServer.cjs +45 -27
- package/dist/packageApiServer.cjs.map +1 -1
- package/dist/packageApiServer.d.mts +36 -26
- package/dist/packageApiServer.d.mts.map +1 -1
- package/dist/packageApiServer.mjs +44 -26
- package/dist/packageApiServer.mjs.map +1 -1
- package/dist/piSettings.cjs +41 -20
- package/dist/piSettings.d.mts +4 -2
- package/dist/piSettings.mjs +4 -2
- package/dist/platform.cjs +62 -0
- package/dist/platform.d.mts +10 -0
- package/dist/platform.mjs +10 -0
- package/dist/pluginProtocol.cjs +7 -8
- package/dist/pluginProtocol.d.mts +2 -2
- package/dist/pluginProtocol.mjs +1 -2
- package/dist/poPackage.cjs +12 -0
- package/dist/poPackage.d.mts +3 -0
- package/dist/poPackage.mjs +3 -0
- package/dist/profileIdentity.cjs +1 -1
- package/dist/profileIdentity.d.mts +2 -2
- package/dist/profileIdentity.mjs +1 -2
- package/dist/protocol.cjs +3 -3
- package/dist/protocol.d.mts +2 -2
- package/dist/protocol.mjs +1 -2
- package/dist/readiness.cjs +6 -6
- package/dist/readiness.d.mts +2 -2
- package/dist/readiness.mjs +1 -2
- package/dist/remoteApi.cjs.map +1 -1
- package/dist/remoteApi.d.mts +2 -2
- package/dist/remoteApi.mjs.map +1 -1
- package/dist/remoteRuntime.cjs +42 -65
- package/dist/remoteRuntime.cjs.map +1 -1
- package/dist/remoteRuntime.d.mts +3 -2
- package/dist/remoteRuntime.d.mts.map +1 -1
- package/dist/remoteRuntime.mjs +41 -62
- package/dist/remoteRuntime.mjs.map +1 -1
- package/dist/runtimeConfig.cjs +4 -4
- package/dist/runtimeConfig.cjs.map +1 -1
- package/dist/runtimeConfig.d.mts +10 -9
- package/dist/runtimeConfig.d.mts.map +1 -1
- package/dist/runtimeConfig.mjs +4 -4
- package/dist/runtimeConfig.mjs.map +1 -1
- package/dist/runtimeContextApi.cjs +10 -3
- package/dist/runtimeContextApi.cjs.map +1 -1
- package/dist/runtimeContextApi.d.mts +3 -3
- package/dist/runtimeContextApi.d.mts.map +1 -1
- package/dist/runtimeContextApi.mjs +10 -3
- package/dist/runtimeContextApi.mjs.map +1 -1
- package/dist/runtimeCordisHost.cjs +46 -46
- package/dist/runtimeCordisHost.cjs.map +1 -1
- package/dist/runtimeCordisHost.d.mts +29 -28
- package/dist/runtimeCordisHost.d.mts.map +1 -1
- package/dist/runtimeCordisHost.mjs +42 -42
- package/dist/runtimeCordisHost.mjs.map +1 -1
- package/dist/runtimeIdentity.cjs +6 -9
- package/dist/runtimeIdentity.cjs.map +1 -1
- package/dist/runtimeIdentity.d.mts +5 -1
- package/dist/runtimeIdentity.d.mts.map +1 -1
- package/dist/runtimeIdentity.mjs +5 -8
- package/dist/runtimeIdentity.mjs.map +1 -1
- package/dist/runtimeJson.cjs +10 -45
- package/dist/runtimeJson.d.mts +3 -22
- package/dist/runtimeJson.mjs +3 -39
- package/dist/runtimeLogSinkTelemetry.cjs +19 -19
- package/dist/runtimeLogSinkTelemetry.cjs.map +1 -1
- package/dist/runtimeLogSinkTelemetry.d.mts +19 -19
- package/dist/runtimeLogSinkTelemetry.mjs +19 -19
- package/dist/runtimeLogSinkTelemetry.mjs.map +1 -1
- package/dist/runtimePackages.cjs +7 -2
- package/dist/runtimePackages.cjs.map +1 -1
- package/dist/runtimePackages.d.mts +4 -1
- package/dist/runtimePackages.d.mts.map +1 -1
- package/dist/runtimePackages.mjs +7 -2
- package/dist/runtimePackages.mjs.map +1 -1
- package/dist/runtimePiSettings.cjs +40 -263
- package/dist/runtimePiSettings.d.mts +3 -72
- package/dist/runtimePiSettings.mjs +3 -241
- package/dist/runtimeProtocol.cjs +19 -19
- package/dist/runtimeProtocol.cjs.map +1 -1
- package/dist/runtimeProtocol.d.mts +7 -7
- package/dist/runtimeProtocol.d.mts.map +1 -1
- package/dist/runtimeProtocol.mjs +17 -17
- package/dist/runtimeProtocol.mjs.map +1 -1
- package/dist/runtimeTransition.cjs +9 -9
- package/dist/runtimeTransition.cjs.map +1 -1
- package/dist/runtimeTransition.d.mts +10 -10
- package/dist/runtimeTransition.d.mts.map +1 -1
- package/dist/runtimeTransition.mjs +7 -7
- package/dist/runtimeTransition.mjs.map +1 -1
- package/dist/sandboxHarness.mjs +1 -2
- package/dist/server.cjs +3 -7
- package/dist/server.d.mts +6 -6
- package/dist/server.mjs +3 -4
- package/dist/serverPlugin.cjs +39 -0
- package/dist/serverPlugin.d.mts +12 -0
- package/dist/serverPlugin.mjs +11 -0
- package/dist/serverTelemetry.cjs +1 -1
- package/dist/serverTelemetry.cjs.map +1 -1
- package/dist/serverTelemetry.d.mts +2 -2
- package/dist/serverTelemetry.mjs +2 -2
- package/dist/serverTelemetry.mjs.map +1 -1
- package/dist/sessionFilesApi.cjs +41 -37
- package/dist/sessionFilesApi.cjs.map +1 -1
- package/dist/sessionFilesApi.d.mts +6 -3
- package/dist/sessionFilesApi.d.mts.map +1 -1
- package/dist/sessionFilesApi.mjs +41 -36
- package/dist/sessionFilesApi.mjs.map +1 -1
- package/dist/sessionProtocol.cjs +31 -6
- package/dist/sessionProtocol.d.mts +8 -3
- package/dist/sessionProtocol.mjs +8 -2
- package/dist/skills.cjs +5 -5
- package/dist/skills.d.mts +2 -2
- package/dist/skills.mjs +1 -2
- package/dist/sqliteSessionStorage.cjs +28 -50
- package/dist/sqliteSessionStorage.cjs.map +1 -1
- package/dist/sqliteSessionStorage.d.mts +13 -20
- package/dist/sqliteSessionStorage.d.mts.map +1 -1
- package/dist/sqliteSessionStorage.mjs +25 -48
- package/dist/sqliteSessionStorage.mjs.map +1 -1
- package/dist/src/constants/agentSettled.cjs +7 -0
- package/dist/src/constants/agentSettled.cjs.map +1 -0
- package/dist/src/constants/agentSettled.mjs +7 -0
- package/dist/src/constants/agentSettled.mjs.map +1 -0
- package/dist/src/constants/contextApi.cjs +3 -1
- package/dist/src/constants/contextApi.cjs.map +1 -1
- package/dist/src/constants/contextApi.d.mts +2 -1
- package/dist/src/constants/contextApi.d.mts.map +1 -1
- package/dist/src/constants/contextApi.mjs +3 -2
- package/dist/src/constants/contextApi.mjs.map +1 -1
- package/dist/src/constants/voiceTools.cjs +6 -6
- package/dist/src/constants/voiceTools.cjs.map +1 -1
- package/dist/src/constants/voiceTools.d.mts +3 -3
- package/dist/src/constants/voiceTools.mjs +4 -4
- package/dist/src/constants/voiceTools.mjs.map +1 -1
- package/dist/src/extensions/extensionFile.cjs +22 -5
- package/dist/src/extensions/extensionFile.cjs.map +1 -1
- package/dist/src/extensions/extensionFile.d.mts +17 -4
- package/dist/src/extensions/extensionFile.d.mts.map +1 -1
- package/dist/src/extensions/extensionFile.mjs +22 -6
- package/dist/src/extensions/extensionFile.mjs.map +1 -1
- package/dist/src/extensions/serverPlugin.cjs +231 -92
- package/dist/src/extensions/serverPlugin.cjs.map +1 -1
- package/dist/src/extensions/serverPlugin.d.mts +2 -2
- package/dist/src/extensions/serverPlugin.d.mts.map +1 -1
- package/dist/src/extensions/serverPlugin.mjs +232 -93
- package/dist/src/extensions/serverPlugin.mjs.map +1 -1
- package/dist/src/pi/piSessionRuntime.cjs +349 -142
- package/dist/src/pi/piSessionRuntime.cjs.map +1 -1
- package/dist/src/pi/piSessionRuntime.d.mts +18 -17
- package/dist/src/pi/piSessionRuntime.d.mts.map +1 -1
- package/dist/src/pi/piSessionRuntime.mjs +342 -135
- package/dist/src/pi/piSessionRuntime.mjs.map +1 -1
- package/dist/src/schemas/agentModel.cjs +2 -2
- package/dist/src/schemas/agentModel.cjs.map +1 -1
- package/dist/src/schemas/agentModel.d.mts +1 -1
- package/dist/src/schemas/agentModel.mjs +2 -2
- package/dist/src/schemas/agentModel.mjs.map +1 -1
- package/dist/src/schemas/apiContracts.d.mts +2 -2
- package/dist/src/schemas/apiContracts.d.mts.map +1 -1
- package/dist/src/schemas/askUser.cjs +4 -4
- package/dist/src/schemas/askUser.cjs.map +1 -1
- package/dist/src/schemas/askUser.d.mts +4 -4
- package/dist/src/schemas/askUser.d.mts.map +1 -1
- package/dist/src/schemas/askUser.mjs +3 -3
- package/dist/src/schemas/askUser.mjs.map +1 -1
- package/dist/src/schemas/backgroundWork.cjs +10 -10
- package/dist/src/schemas/backgroundWork.cjs.map +1 -1
- package/dist/src/schemas/backgroundWork.d.mts +9 -9
- package/dist/src/schemas/backgroundWork.d.mts.map +1 -1
- package/dist/src/schemas/backgroundWork.mjs +8 -8
- package/dist/src/schemas/backgroundWork.mjs.map +1 -1
- package/dist/src/schemas/childProcess.cjs +5 -5
- package/dist/src/schemas/childProcess.cjs.map +1 -1
- package/dist/src/schemas/childProcess.d.mts +2 -2
- package/dist/src/schemas/childProcess.mjs +5 -5
- package/dist/src/schemas/childProcess.mjs.map +1 -1
- package/dist/src/schemas/contextContributions.cjs +10 -10
- package/dist/src/schemas/contextContributions.cjs.map +1 -1
- package/dist/src/schemas/contextContributions.d.mts +16 -16
- package/dist/src/schemas/contextContributions.d.mts.map +1 -1
- package/dist/src/schemas/contextContributions.mjs +8 -8
- package/dist/src/schemas/contextContributions.mjs.map +1 -1
- package/dist/src/schemas/delegation.cjs +17 -17
- package/dist/src/schemas/delegation.cjs.map +1 -1
- package/dist/src/schemas/delegation.d.mts +16 -16
- package/dist/src/schemas/delegation.d.mts.map +1 -1
- package/dist/src/schemas/delegation.mjs +10 -10
- package/dist/src/schemas/delegation.mjs.map +1 -1
- package/dist/src/schemas/extensionFile.d.mts +23 -19
- package/dist/src/schemas/extensionFile.d.mts.map +1 -1
- package/dist/src/schemas/footer.cjs.map +1 -1
- package/dist/src/schemas/footer.d.mts +5 -5
- package/dist/src/schemas/footer.d.mts.map +1 -1
- package/dist/src/schemas/footer.mjs.map +1 -1
- package/dist/src/schemas/headless.cjs +37 -37
- package/dist/src/schemas/headless.cjs.map +1 -1
- package/dist/src/schemas/headless.d.mts +100 -101
- package/dist/src/schemas/headless.d.mts.map +1 -1
- package/dist/src/schemas/headless.mjs +24 -24
- package/dist/src/schemas/headless.mjs.map +1 -1
- package/dist/src/schemas/help.cjs +60 -60
- package/dist/src/schemas/help.cjs.map +1 -1
- package/dist/src/schemas/help.d.mts +43 -43
- package/dist/src/schemas/help.d.mts.map +1 -1
- package/dist/src/schemas/help.mjs +41 -41
- package/dist/src/schemas/help.mjs.map +1 -1
- package/dist/src/schemas/home.cjs +127 -0
- package/dist/src/schemas/home.cjs.map +1 -0
- package/dist/src/schemas/home.d.mts +63 -0
- package/dist/src/schemas/home.d.mts.map +1 -0
- package/dist/src/schemas/home.mjs +121 -0
- package/dist/src/schemas/home.mjs.map +1 -0
- package/dist/src/schemas/httpApiContracts.cjs +441 -0
- package/dist/src/schemas/httpApiContracts.cjs.map +1 -0
- package/dist/src/schemas/httpApiContracts.d.mts +78 -0
- package/dist/src/schemas/httpApiContracts.d.mts.map +1 -0
- package/dist/src/schemas/httpApiContracts.mjs +434 -0
- package/dist/src/schemas/httpApiContracts.mjs.map +1 -0
- package/dist/src/schemas/hubChannel.cjs +3 -0
- package/dist/src/schemas/hubChannel.cjs.map +1 -1
- package/dist/src/schemas/hubChannel.d.mts +84 -60
- package/dist/src/schemas/hubChannel.d.mts.map +1 -1
- package/dist/src/schemas/hubChannel.mjs +3 -1
- package/dist/src/schemas/hubChannel.mjs.map +1 -1
- package/dist/src/schemas/leader.cjs.map +1 -1
- package/dist/src/schemas/leader.d.mts +3 -3
- package/dist/src/schemas/leader.d.mts.map +1 -1
- package/dist/src/schemas/leader.mjs.map +1 -1
- package/dist/src/schemas/mcpBundle.d.mts +3 -3
- package/dist/src/schemas/mcpFacet.cjs.map +1 -1
- package/dist/src/schemas/mcpFacet.d.mts +22 -22
- package/dist/src/schemas/mcpFacet.d.mts.map +1 -1
- package/dist/src/schemas/mcpFacet.mjs.map +1 -1
- package/dist/src/schemas/mcpProjection.cjs +41 -41
- package/dist/src/schemas/mcpProjection.cjs.map +1 -1
- package/dist/src/schemas/mcpProjection.d.mts +31 -30
- package/dist/src/schemas/mcpProjection.d.mts.map +1 -1
- package/dist/src/schemas/mcpProjection.mjs +29 -29
- package/dist/src/schemas/mcpProjection.mjs.map +1 -1
- package/dist/src/schemas/mcpSession.cjs +23 -23
- package/dist/src/schemas/mcpSession.cjs.map +1 -1
- package/dist/src/schemas/mcpSession.d.mts +12 -12
- package/dist/src/schemas/mcpSession.d.mts.map +1 -1
- package/dist/src/schemas/mcpSession.mjs +18 -18
- package/dist/src/schemas/mcpSession.mjs.map +1 -1
- package/dist/src/schemas/mcpStatus.cjs +5 -5
- package/dist/src/schemas/mcpStatus.cjs.map +1 -1
- package/dist/src/schemas/mcpStatus.d.mts +4 -4
- package/dist/src/schemas/mcpStatus.d.mts.map +1 -1
- package/dist/src/schemas/mcpStatus.mjs +4 -4
- package/dist/src/schemas/mcpStatus.mjs.map +1 -1
- package/dist/src/schemas/mcpToolResolver.cjs +9 -9
- package/dist/src/schemas/mcpToolResolver.cjs.map +1 -1
- package/dist/src/schemas/mcpToolResolver.d.mts +7 -7
- package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -1
- package/dist/src/schemas/mcpToolResolver.mjs +7 -7
- package/dist/src/schemas/mcpToolResolver.mjs.map +1 -1
- package/dist/src/schemas/narration.cjs +9 -9
- package/dist/src/schemas/narration.cjs.map +1 -1
- package/dist/src/schemas/narration.d.mts +5 -5
- package/dist/src/schemas/narration.d.mts.map +1 -1
- package/dist/src/schemas/narration.mjs +7 -7
- package/dist/src/schemas/narration.mjs.map +1 -1
- package/dist/src/schemas/notification.cjs +45 -45
- package/dist/src/schemas/notification.cjs.map +1 -1
- package/dist/src/schemas/notification.d.mts +22 -22
- package/dist/src/schemas/notification.d.mts.map +1 -1
- package/dist/src/schemas/notification.mjs +31 -31
- package/dist/src/schemas/notification.mjs.map +1 -1
- package/dist/src/schemas/packageApi.cjs +28 -28
- package/dist/src/schemas/packageApi.cjs.map +1 -1
- package/dist/src/schemas/packageApi.d.mts +91 -65
- package/dist/src/schemas/packageApi.d.mts.map +1 -1
- package/dist/src/schemas/packageApi.mjs +18 -18
- package/dist/src/schemas/packageApi.mjs.map +1 -1
- package/dist/src/schemas/platform.cjs +34 -0
- package/dist/src/schemas/platform.cjs.map +1 -0
- package/dist/src/schemas/platform.d.mts +75 -0
- package/dist/src/schemas/platform.d.mts.map +1 -0
- package/dist/src/schemas/platform.mjs +27 -0
- package/dist/src/schemas/platform.mjs.map +1 -0
- package/dist/src/schemas/pluginContributions.cjs.map +1 -1
- package/dist/src/schemas/pluginContributions.d.mts +12 -12
- package/dist/src/schemas/pluginContributions.d.mts.map +1 -1
- package/dist/src/schemas/pluginContributions.mjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.cjs +24 -27
- package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.d.mts +21 -21
- package/dist/src/schemas/pluginProtocol.d.mts.map +1 -1
- package/dist/src/schemas/pluginProtocol.mjs +18 -20
- package/dist/src/schemas/pluginProtocol.mjs.map +1 -1
- package/dist/src/schemas/profileIdentity.cjs +2 -2
- package/dist/src/schemas/profileIdentity.cjs.map +1 -1
- package/dist/src/schemas/profileIdentity.d.mts +1 -1
- package/dist/src/schemas/profileIdentity.mjs +2 -2
- package/dist/src/schemas/profileIdentity.mjs.map +1 -1
- package/dist/src/schemas/protocolChannelsContract.cjs +27 -0
- package/dist/src/schemas/protocolChannelsContract.cjs.map +1 -0
- package/dist/src/schemas/protocolChannelsContract.d.mts +37 -0
- package/dist/src/schemas/protocolChannelsContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolChannelsContract.mjs +25 -0
- package/dist/src/schemas/protocolChannelsContract.mjs.map +1 -0
- package/dist/src/schemas/protocolContracts.cjs +168 -0
- package/dist/src/schemas/protocolContracts.cjs.map +1 -0
- package/dist/src/schemas/protocolContracts.d.mts +69 -0
- package/dist/src/schemas/protocolContracts.d.mts.map +1 -0
- package/dist/src/schemas/protocolContracts.mjs +164 -0
- package/dist/src/schemas/protocolContracts.mjs.map +1 -0
- package/dist/src/schemas/protocolHubContract.cjs +51 -0
- package/dist/src/schemas/protocolHubContract.cjs.map +1 -0
- package/dist/src/schemas/protocolHubContract.d.mts +218 -0
- package/dist/src/schemas/protocolHubContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolHubContract.mjs +49 -0
- package/dist/src/schemas/protocolHubContract.mjs.map +1 -0
- package/dist/src/schemas/protocolSessionContract.cjs +22 -0
- package/dist/src/schemas/protocolSessionContract.cjs.map +1 -0
- package/dist/src/schemas/protocolSessionContract.d.mts +324 -0
- package/dist/src/schemas/protocolSessionContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolSessionContract.mjs +22 -0
- package/dist/src/schemas/protocolSessionContract.mjs.map +1 -0
- package/dist/src/schemas/protocolThreadContract.cjs +21 -0
- package/dist/src/schemas/protocolThreadContract.cjs.map +1 -0
- package/dist/src/schemas/protocolThreadContract.d.mts +29 -0
- package/dist/src/schemas/protocolThreadContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolThreadContract.mjs +20 -0
- package/dist/src/schemas/protocolThreadContract.mjs.map +1 -0
- package/dist/src/schemas/readiness.cjs +36 -36
- package/dist/src/schemas/readiness.cjs.map +1 -1
- package/dist/src/schemas/readiness.d.mts +37 -37
- package/dist/src/schemas/readiness.d.mts.map +1 -1
- package/dist/src/schemas/readiness.mjs +31 -31
- package/dist/src/schemas/readiness.mjs.map +1 -1
- package/dist/src/schemas/serverBundle.d.mts +5 -5
- package/dist/src/schemas/serverPlugin.cjs +103 -0
- package/dist/src/schemas/serverPlugin.cjs.map +1 -0
- package/dist/src/schemas/serverPlugin.d.mts +176 -0
- package/dist/src/schemas/serverPlugin.d.mts.map +1 -0
- package/dist/src/schemas/serverPlugin.mjs +95 -0
- package/dist/src/schemas/serverPlugin.mjs.map +1 -0
- package/dist/src/schemas/serverScope.cjs +37 -0
- package/dist/src/schemas/serverScope.cjs.map +1 -0
- package/dist/src/schemas/serverScope.d.mts +77 -0
- package/dist/src/schemas/serverScope.d.mts.map +1 -0
- package/dist/src/schemas/serverScope.mjs +33 -0
- package/dist/src/schemas/serverScope.mjs.map +1 -0
- package/dist/src/schemas/sessionApiContracts.cjs +320 -0
- package/dist/src/schemas/sessionApiContracts.cjs.map +1 -0
- package/dist/src/schemas/sessionApiContracts.mjs +318 -0
- package/dist/src/schemas/sessionApiContracts.mjs.map +1 -0
- package/dist/src/schemas/sessionProtocol.cjs +20 -13
- package/dist/src/schemas/sessionProtocol.cjs.map +1 -1
- package/dist/src/schemas/sessionProtocol.d.mts +37 -54
- package/dist/src/schemas/sessionProtocol.d.mts.map +1 -1
- package/dist/src/schemas/sessionProtocol.mjs +17 -8
- package/dist/src/schemas/sessionProtocol.mjs.map +1 -1
- package/dist/src/schemas/skills.cjs +16 -16
- package/dist/src/schemas/skills.cjs.map +1 -1
- package/dist/src/schemas/skills.d.mts +7 -7
- package/dist/src/schemas/skills.d.mts.map +1 -1
- package/dist/src/schemas/skills.mjs +12 -12
- package/dist/src/schemas/skills.mjs.map +1 -1
- package/dist/src/schemas/toolOverrides.cjs +9 -9
- package/dist/src/schemas/toolOverrides.cjs.map +1 -1
- package/dist/src/schemas/toolOverrides.d.mts +8 -8
- package/dist/src/schemas/toolOverrides.d.mts.map +1 -1
- package/dist/src/schemas/toolOverrides.mjs +7 -7
- package/dist/src/schemas/toolOverrides.mjs.map +1 -1
- package/dist/src/schemas/toolSurface.cjs +9 -9
- package/dist/src/schemas/toolSurface.cjs.map +1 -1
- package/dist/src/schemas/toolSurface.d.mts +13 -13
- package/dist/src/schemas/toolSurface.d.mts.map +1 -1
- package/dist/src/schemas/toolSurface.mjs +7 -7
- package/dist/src/schemas/toolSurface.mjs.map +1 -1
- package/dist/src/schemas/uiHub.cjs +9 -9
- package/dist/src/schemas/uiHub.cjs.map +1 -1
- package/dist/src/schemas/uiHub.d.mts +12 -12
- package/dist/src/schemas/uiHub.d.mts.map +1 -1
- package/dist/src/schemas/uiHub.mjs +7 -7
- package/dist/src/schemas/uiHub.mjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.cjs +691 -775
- package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.d.mts +5 -1
- package/dist/src/server/directHarnessRuntime.d.mts.map +1 -0
- package/dist/src/server/directHarnessRuntime.mjs +671 -754
- package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
- package/dist/src/server/largeFrameLink.cjs +47 -0
- package/dist/src/server/largeFrameLink.cjs.map +1 -0
- package/dist/src/server/largeFrameLink.mjs +47 -0
- package/dist/src/server/largeFrameLink.mjs.map +1 -0
- package/dist/src/server/liveImport.cjs +1 -1
- package/dist/src/server/liveImport.cjs.map +1 -1
- package/dist/src/server/liveImport.d.mts +1 -1
- package/dist/src/server/liveImport.mjs +1 -1
- package/dist/src/server/liveImport.mjs.map +1 -1
- package/dist/src/server/mcpBundleLoader.cjs.map +1 -1
- package/dist/src/server/mcpBundleLoader.d.mts +6 -6
- package/dist/src/server/mcpBundleLoader.d.mts.map +1 -1
- package/dist/src/server/mcpBundleLoader.mjs.map +1 -1
- package/dist/src/server/serverPackages.cjs +60 -0
- package/dist/src/server/serverPackages.cjs.map +1 -0
- package/dist/src/server/serverPackages.d.mts +44 -0
- package/dist/src/server/serverPackages.d.mts.map +1 -0
- package/dist/src/server/serverPackages.mjs +59 -0
- package/dist/src/server/serverPackages.mjs.map +1 -0
- package/dist/src/server/serverScope.cjs +510 -0
- package/dist/src/server/serverScope.cjs.map +1 -0
- package/dist/src/server/serverScope.d.mts +123 -0
- package/dist/src/server/serverScope.d.mts.map +1 -0
- package/dist/src/server/serverScope.mjs +510 -0
- package/dist/src/server/serverScope.mjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.cjs +3 -3
- package/dist/src/server/sessionMcpHandler.cjs.map +1 -1
- package/dist/src/server/sessionMcpHandler.mjs +4 -4
- package/dist/src/server/sessionMcpHandler.mjs.map +1 -1
- package/dist/src/server/sessionMcpRoutes.cjs +2 -1
- package/dist/src/server/sessionMcpRoutes.cjs.map +1 -1
- package/dist/src/server/sessionMcpRoutes.mjs +2 -1
- package/dist/src/server/sessionMcpRoutes.mjs.map +1 -1
- package/dist/src/server/threadJournals.cjs +38 -107
- package/dist/src/server/threadJournals.cjs.map +1 -1
- package/dist/src/server/threadJournals.mjs +38 -104
- package/dist/src/server/threadJournals.mjs.map +1 -1
- package/dist/src/services/apiSurfaceAssert/index.cjs +1 -1
- package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -1
- package/dist/src/services/apiSurfaceAssert/index.d.mts +6 -6
- package/dist/src/services/apiSurfaceAssert/index.mjs +1 -1
- package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -1
- package/dist/src/services/chatgptAuth/index.cjs +1 -220
- package/dist/src/services/chatgptAuth/index.cjs.map +1 -1
- package/dist/src/services/chatgptAuth/index.d.mts +0 -18
- package/dist/src/services/chatgptAuth/index.d.mts.map +1 -1
- package/dist/src/services/chatgptAuth/index.mjs +1 -217
- package/dist/src/services/chatgptAuth/index.mjs.map +1 -1
- package/dist/src/services/chatgptImages/index.cjs +1 -1
- package/dist/src/services/chatgptImages/index.cjs.map +1 -1
- package/dist/src/services/chatgptImages/index.mjs +1 -1
- package/dist/src/services/chatgptImages/index.mjs.map +1 -1
- package/dist/src/services/chatgptLogin/index.cjs +230 -0
- package/dist/src/services/chatgptLogin/index.cjs.map +1 -0
- package/dist/src/services/chatgptLogin/index.d.mts +21 -0
- package/dist/src/services/chatgptLogin/index.d.mts.map +1 -0
- package/dist/src/services/chatgptLogin/index.mjs +227 -0
- package/dist/src/services/chatgptLogin/index.mjs.map +1 -0
- package/dist/src/services/chatgptWebSearch/index.cjs +1 -1
- package/dist/src/services/chatgptWebSearch/index.cjs.map +1 -1
- package/dist/src/services/chatgptWebSearch/index.mjs +1 -1
- package/dist/src/services/chatgptWebSearch/index.mjs.map +1 -1
- package/dist/src/services/contextContributions/index.cjs +8 -8
- package/dist/src/services/contextContributions/index.cjs.map +1 -1
- package/dist/src/services/contextContributions/index.d.mts +3 -3
- package/dist/src/services/contextContributions/index.d.mts.map +1 -1
- package/dist/src/services/contextContributions/index.mjs +8 -8
- package/dist/src/services/contextContributions/index.mjs.map +1 -1
- package/dist/src/services/devProxyStore/devProxyRecords.cjs +59 -0
- package/dist/src/services/devProxyStore/devProxyRecords.cjs.map +1 -0
- package/dist/src/services/devProxyStore/devProxyRecords.mjs +56 -0
- package/dist/src/services/devProxyStore/devProxyRecords.mjs.map +1 -0
- package/dist/src/services/devProxyStore/index.cjs +7 -101
- package/dist/src/services/devProxyStore/index.cjs.map +1 -1
- package/dist/src/services/devProxyStore/index.mjs +7 -101
- package/dist/src/services/devProxyStore/index.mjs.map +1 -1
- package/dist/src/services/devProxyStore/sync.cjs +66 -0
- package/dist/src/services/devProxyStore/sync.cjs.map +1 -0
- package/dist/src/services/devProxyStore/sync.mjs +63 -0
- package/dist/src/services/devProxyStore/sync.mjs.map +1 -0
- package/dist/src/services/durableNavigation/docs.cjs +15 -0
- package/dist/src/services/durableNavigation/docs.cjs.map +1 -0
- package/dist/src/services/durableNavigation/docs.mjs +16 -0
- package/dist/src/services/durableNavigation/docs.mjs.map +1 -0
- package/dist/src/services/durableNavigation/index.cjs +3 -18
- package/dist/src/services/durableNavigation/index.cjs.map +1 -1
- package/dist/src/services/durableNavigation/index.mjs +2 -17
- package/dist/src/services/durableNavigation/index.mjs.map +1 -1
- package/dist/src/services/durableQueue/docs.cjs +12 -0
- package/dist/src/services/durableQueue/docs.cjs.map +1 -0
- package/dist/src/services/durableQueue/docs.mjs +13 -0
- package/dist/src/services/durableQueue/docs.mjs.map +1 -0
- package/dist/src/services/durableQueue/index.cjs +151 -0
- package/dist/src/services/durableQueue/index.cjs.map +1 -0
- package/dist/src/services/durableQueue/index.mjs +149 -0
- package/dist/src/services/durableQueue/index.mjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/docs.cjs +11 -0
- package/dist/src/services/durableRequestReceipts/docs.cjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/docs.mjs +12 -0
- package/dist/src/services/durableRequestReceipts/docs.mjs.map +1 -0
- package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.cjs +10 -16
- package/dist/src/services/durableRequestReceipts/index.cjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/index.d.mts +12 -0
- package/dist/src/services/durableRequestReceipts/index.d.mts.map +1 -0
- package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.mjs +7 -13
- package/dist/src/services/durableRequestReceipts/index.mjs.map +1 -0
- package/dist/src/services/durableSession/docs.cjs +65 -0
- package/dist/src/services/durableSession/docs.cjs.map +1 -0
- package/dist/src/services/durableSession/docs.d.mts +17 -0
- package/dist/src/services/durableSession/docs.d.mts.map +1 -0
- package/dist/src/services/durableSession/docs.mjs +60 -0
- package/dist/src/services/durableSession/docs.mjs.map +1 -0
- package/dist/src/services/durableSession/index.cjs +21 -0
- package/dist/src/services/durableSession/index.cjs.map +1 -0
- package/dist/src/services/durableSession/index.d.mts +13 -0
- package/dist/src/services/durableSession/index.d.mts.map +1 -0
- package/dist/src/services/durableSession/index.mjs +20 -0
- package/dist/src/services/durableSession/index.mjs.map +1 -0
- package/dist/src/services/durableSubagents/docs.cjs +15 -0
- package/dist/src/services/durableSubagents/docs.cjs.map +1 -0
- package/dist/src/services/durableSubagents/docs.mjs +16 -0
- package/dist/src/services/durableSubagents/docs.mjs.map +1 -0
- package/dist/src/services/durableSubagents/extension.cjs +11 -0
- package/dist/src/services/durableSubagents/extension.cjs.map +1 -0
- package/dist/src/services/durableSubagents/extension.mjs +12 -0
- package/dist/src/services/durableSubagents/extension.mjs.map +1 -0
- package/dist/src/services/durableSubagents/index.cjs +95 -0
- package/dist/src/services/durableSubagents/index.cjs.map +1 -0
- package/dist/src/services/durableSubagents/index.mjs +90 -0
- package/dist/src/services/durableSubagents/index.mjs.map +1 -0
- package/dist/src/services/durableSubagents/tasks.cjs +25 -0
- package/dist/src/services/durableSubagents/tasks.cjs.map +1 -0
- package/dist/src/services/durableSubagents/tasks.mjs +26 -0
- package/dist/src/services/durableSubagents/tasks.mjs.map +1 -0
- package/dist/src/services/headlessClient/index.cjs +20 -13
- package/dist/src/services/headlessClient/index.cjs.map +1 -1
- package/dist/src/services/headlessClient/index.mjs +21 -14
- package/dist/src/services/headlessClient/index.mjs.map +1 -1
- package/dist/src/services/historyOwnership/type.d.mts +15 -0
- package/dist/src/services/historyOwnership/type.d.mts.map +1 -0
- package/dist/src/services/hubChannelHarness/index.cjs +2 -2
- package/dist/src/services/hubChannelHarness/index.cjs.map +1 -1
- package/dist/src/services/hubChannelHarness/index.d.mts +8 -8
- package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -1
- package/dist/src/services/hubChannelHarness/index.mjs +2 -2
- package/dist/src/services/hubChannelHarness/index.mjs.map +1 -1
- package/dist/src/services/json/core.cjs +30 -0
- package/dist/src/services/json/core.cjs.map +1 -0
- package/dist/src/services/json/core.d.mts +21 -0
- package/dist/src/services/json/core.d.mts.map +1 -0
- package/dist/src/services/json/core.mjs +26 -0
- package/dist/src/services/json/core.mjs.map +1 -0
- package/dist/src/services/json/sync.cjs +48 -0
- package/dist/src/services/json/sync.cjs.map +1 -0
- package/dist/src/services/json/sync.d.mts +22 -0
- package/dist/src/services/json/sync.d.mts.map +1 -0
- package/dist/src/services/json/sync.mjs +43 -0
- package/dist/src/services/json/sync.mjs.map +1 -0
- package/dist/src/services/kernel/index.cjs +2 -2
- package/dist/src/services/kernel/index.cjs.map +1 -1
- package/dist/src/services/kernel/index.d.mts +3 -3
- package/dist/src/services/kernel/index.d.mts.map +1 -1
- package/dist/src/services/kernel/index.mjs +2 -2
- package/dist/src/services/kernel/index.mjs.map +1 -1
- package/dist/src/services/nativeChildTools/index.cjs +16 -0
- package/dist/src/services/nativeChildTools/index.cjs.map +1 -0
- package/dist/src/services/nativeChildTools/index.mjs +16 -0
- package/dist/src/services/nativeChildTools/index.mjs.map +1 -0
- package/dist/src/services/nodeHost/index.cjs +30 -0
- package/dist/src/services/nodeHost/index.cjs.map +1 -0
- package/dist/src/services/nodeHost/index.d.mts +16 -0
- package/dist/src/services/nodeHost/index.d.mts.map +1 -0
- package/dist/src/services/nodeHost/index.mjs +27 -0
- package/dist/src/services/nodeHost/index.mjs.map +1 -0
- package/dist/src/services/nodeModelDependencies/index.cjs +89 -0
- package/dist/src/services/nodeModelDependencies/index.cjs.map +1 -0
- package/dist/src/services/nodeModelDependencies/index.mjs +86 -0
- package/dist/src/services/nodeModelDependencies/index.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.cjs +6 -128
- package/dist/src/services/openSessionRegistry/index.cjs.map +1 -1
- package/dist/src/services/openSessionRegistry/index.d.mts +5 -36
- package/dist/src/services/openSessionRegistry/index.mjs +6 -128
- package/dist/src/services/openSessionRegistry/index.mjs.map +1 -1
- package/dist/src/services/openSessionRegistry/openSessionRecords.cjs +87 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts +30 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.mjs +81 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.cjs +71 -0
- package/dist/src/services/openSessionRegistry/sync.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.d.mts +14 -0
- package/dist/src/services/openSessionRegistry/sync.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.mjs +68 -0
- package/dist/src/services/openSessionRegistry/sync.mjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.cjs +1 -1
- package/dist/src/services/packageApiHarness/index.cjs.map +1 -1
- package/dist/src/services/packageApiHarness/index.d.mts +6 -6
- package/dist/src/services/packageApiHarness/index.d.mts.map +1 -1
- package/dist/src/services/packageApiHarness/index.mjs +2 -2
- package/dist/src/services/packageApiHarness/index.mjs.map +1 -1
- package/dist/src/services/piArgs/index.cjs +53 -0
- package/dist/src/services/piArgs/index.cjs.map +1 -0
- package/dist/src/services/piArgs/index.d.mts +6 -0
- package/dist/src/services/piArgs/index.d.mts.map +1 -0
- package/dist/src/services/piArgs/index.mjs +53 -0
- package/dist/src/services/piArgs/index.mjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.cjs +47 -39
- package/dist/src/services/piExtensionHost/index.cjs.map +1 -1
- package/dist/src/services/piExtensionHost/index.d.mts +83 -0
- package/dist/src/services/piExtensionHost/index.d.mts.map +1 -0
- package/dist/src/services/piExtensionHost/index.mjs +47 -38
- package/dist/src/services/piExtensionHost/index.mjs.map +1 -1
- package/dist/src/services/piHelpTools/index.cjs +5 -5
- package/dist/src/services/piHelpTools/index.cjs.map +1 -1
- package/dist/src/services/piHelpTools/index.d.mts.map +1 -1
- package/dist/src/services/piHelpTools/index.mjs +7 -7
- package/dist/src/services/piHelpTools/index.mjs.map +1 -1
- package/dist/src/services/piMessages/index.cjs +106 -0
- package/dist/src/services/piMessages/index.cjs.map +1 -0
- package/dist/src/services/piMessages/index.mjs +105 -0
- package/dist/src/services/piMessages/index.mjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.cjs +4 -4
- package/dist/src/services/piSessionEntries/index.cjs.map +1 -1
- package/dist/src/services/piSessionEntries/index.mjs +3 -3
- package/dist/src/services/piSessionEntries/index.mjs.map +1 -1
- package/dist/src/services/piSettings/core.cjs +308 -0
- package/dist/src/services/piSettings/core.cjs.map +1 -0
- package/dist/src/services/piSettings/core.d.mts +102 -0
- package/dist/src/services/piSettings/core.d.mts.map +1 -0
- package/dist/src/services/piSettings/core.mjs +276 -0
- package/dist/src/services/piSettings/core.mjs.map +1 -0
- package/dist/src/services/piSettings/sync.cjs +119 -0
- package/dist/src/services/piSettings/sync.cjs.map +1 -0
- package/dist/src/services/piSettings/sync.d.mts +44 -0
- package/dist/src/services/piSettings/sync.d.mts.map +1 -0
- package/dist/src/services/piSettings/sync.mjs +110 -0
- package/dist/src/services/piSettings/sync.mjs.map +1 -0
- package/dist/src/services/piSummary/index.cjs +7 -0
- package/dist/src/services/piSummary/index.cjs.map +1 -0
- package/dist/src/services/piSummary/index.mjs +7 -0
- package/dist/src/services/piSummary/index.mjs.map +1 -0
- package/dist/src/services/platformFiles/index.cjs +44 -0
- package/dist/src/services/platformFiles/index.cjs.map +1 -0
- package/dist/src/services/platformFiles/index.d.mts +16 -0
- package/dist/src/services/platformFiles/index.d.mts.map +1 -0
- package/dist/src/services/platformFiles/index.mjs +39 -0
- package/dist/src/services/platformFiles/index.mjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.cjs +19 -13
- package/dist/src/services/pluginLifecycle/index.cjs.map +1 -1
- package/dist/src/services/pluginLifecycle/index.d.mts +2 -0
- package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -1
- package/dist/src/services/pluginLifecycle/index.mjs +19 -14
- package/dist/src/services/pluginLifecycle/index.mjs.map +1 -1
- package/dist/src/services/poPackage/core.cjs +73 -0
- package/dist/src/services/poPackage/core.cjs.map +1 -0
- package/dist/src/services/poPackage/core.d.mts +32 -0
- package/dist/src/services/poPackage/core.d.mts.map +1 -0
- package/dist/src/services/poPackage/core.mjs +66 -0
- package/dist/src/services/poPackage/core.mjs.map +1 -0
- package/dist/src/services/poPackage/sync.cjs +55 -0
- package/dist/src/services/poPackage/sync.cjs.map +1 -0
- package/dist/src/services/poPackage/sync.d.mts +21 -0
- package/dist/src/services/poPackage/sync.d.mts.map +1 -0
- package/dist/src/services/poPackage/sync.mjs +50 -0
- package/dist/src/services/poPackage/sync.mjs.map +1 -0
- package/dist/src/services/providerAuth/index.cjs +11 -7
- package/dist/src/services/providerAuth/index.cjs.map +1 -1
- package/dist/src/services/providerAuth/index.mjs +11 -7
- package/dist/src/services/providerAuth/index.mjs.map +1 -1
- package/dist/src/services/publicFileShares/index.cjs +1 -1
- package/dist/src/services/publicFileShares/index.cjs.map +1 -1
- package/dist/src/services/publicFileShares/index.d.mts +2 -2
- package/dist/src/services/publicFileShares/index.mjs +2 -2
- package/dist/src/services/publicFileShares/index.mjs.map +1 -1
- package/dist/src/services/remoteAccess/index.d.mts +1 -0
- package/dist/src/services/remoteAccess/index.d.mts.map +1 -1
- package/dist/src/services/remoteAccessStore/index.cjs +8 -190
- package/dist/src/services/remoteAccessStore/index.cjs.map +1 -1
- package/dist/src/services/remoteAccessStore/index.d.mts +2 -0
- package/dist/src/services/remoteAccessStore/index.mjs +7 -187
- package/dist/src/services/remoteAccessStore/index.mjs.map +1 -1
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs +98 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs +88 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs.map +1 -0
- package/dist/src/services/remoteAccessStore/sync.cjs +111 -0
- package/dist/src/services/remoteAccessStore/sync.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/sync.mjs +108 -0
- package/dist/src/services/remoteAccessStore/sync.mjs.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.cjs +23 -0
- package/dist/src/services/runtimeIdentity/sync.cjs.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.d.mts +9 -0
- package/dist/src/services/runtimeIdentity/sync.d.mts.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.mjs +20 -0
- package/dist/src/services/runtimeIdentity/sync.mjs.map +1 -0
- package/dist/src/services/serialRunner/index.cjs +25 -0
- package/dist/src/services/serialRunner/index.cjs.map +1 -0
- package/dist/src/services/serialRunner/index.d.mts +10 -0
- package/dist/src/services/serialRunner/index.d.mts.map +1 -0
- package/dist/src/services/serialRunner/index.mjs +25 -0
- package/dist/src/services/serialRunner/index.mjs.map +1 -0
- package/dist/src/services/{serverFacet → serverHost}/index.cjs +5 -5
- package/dist/src/services/serverHost/index.cjs.map +1 -0
- package/dist/src/services/serverHost/index.d.mts +31 -0
- package/dist/src/services/serverHost/index.d.mts.map +1 -0
- package/dist/src/services/{serverFacet → serverHost}/index.mjs +5 -5
- package/dist/src/services/serverHost/index.mjs.map +1 -0
- package/dist/src/services/sessionAttachments/index.cjs +4 -3
- package/dist/src/services/sessionAttachments/index.cjs.map +1 -1
- package/dist/src/services/sessionAttachments/index.d.mts +1 -6
- package/dist/src/services/sessionAttachments/index.d.mts.map +1 -1
- package/dist/src/services/sessionAttachments/index.mjs +3 -2
- package/dist/src/services/sessionAttachments/index.mjs.map +1 -1
- package/dist/src/services/sessionAttachments/type.d.mts +9 -0
- package/dist/src/services/sessionAttachments/type.d.mts.map +1 -0
- package/dist/src/services/sessionFiles/index.cjs +96 -0
- package/dist/src/services/sessionFiles/index.cjs.map +1 -0
- package/dist/src/services/sessionFiles/index.d.mts +33 -0
- package/dist/src/services/sessionFiles/index.d.mts.map +1 -0
- package/dist/src/services/sessionFiles/index.mjs +89 -0
- package/dist/src/services/sessionFiles/index.mjs.map +1 -0
- package/dist/src/services/sessionFiles/sessionDirectory.cjs +66 -0
- package/dist/src/services/sessionFiles/sessionDirectory.cjs.map +1 -0
- package/dist/src/services/sessionFiles/sessionDirectory.mjs +62 -0
- package/dist/src/services/sessionFiles/sessionDirectory.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.cjs +31 -33
- package/dist/src/services/sessionGitStatus/index.cjs.map +1 -1
- package/dist/src/services/sessionGitStatus/index.mjs +31 -33
- package/dist/src/services/sessionGitStatus/index.mjs.map +1 -1
- package/dist/src/services/sessionPresentation/index.cjs +3 -27
- package/dist/src/services/sessionPresentation/index.cjs.map +1 -1
- package/dist/src/services/sessionPresentation/index.mjs +3 -27
- package/dist/src/services/sessionPresentation/index.mjs.map +1 -1
- package/dist/src/services/skillPrompt/index.cjs +11 -0
- package/dist/src/services/skillPrompt/index.cjs.map +1 -0
- package/dist/src/services/skillPrompt/index.mjs +11 -0
- package/dist/src/services/skillPrompt/index.mjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs +44 -30
- package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -1
- package/dist/src/services/sqliteSessionHistory/index.d.mts +7 -4
- package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -1
- package/dist/src/services/sqliteSessionHistory/index.mjs +43 -28
- package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.cjs +21 -45
- package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.d.mts +3 -2
- package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.mjs +16 -38
- package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -1
- package/dist/src/services/testMode/index.cjs +162 -0
- package/dist/src/services/testMode/index.cjs.map +1 -0
- package/dist/src/services/testMode/index.d.mts +17 -0
- package/dist/src/services/testMode/index.d.mts.map +1 -0
- package/dist/src/services/testMode/index.mjs +155 -0
- package/dist/src/services/testMode/index.mjs.map +1 -0
- package/dist/src/services/toolOverrides/index.cjs +6 -6
- package/dist/src/services/toolOverrides/index.cjs.map +1 -1
- package/dist/src/services/toolOverrides/index.d.mts +3 -3
- package/dist/src/services/toolOverrides/index.d.mts.map +1 -1
- package/dist/src/services/toolOverrides/index.mjs +6 -6
- package/dist/src/services/toolOverrides/index.mjs.map +1 -1
- package/dist/src/services/toolPrompt/index.d.mts +17 -0
- package/dist/src/services/toolPrompt/index.d.mts.map +1 -0
- package/dist/src/services/toolSurface/index.cjs +3 -3
- package/dist/src/services/toolSurface/index.cjs.map +1 -1
- package/dist/src/services/toolSurface/index.d.mts +3 -3
- package/dist/src/services/toolSurface/index.d.mts.map +1 -1
- package/dist/src/services/toolSurface/index.mjs +4 -4
- package/dist/src/services/toolSurface/index.mjs.map +1 -1
- package/dist/src/services/traceContext/index.cjs.map +1 -1
- package/dist/src/services/traceContext/index.mjs.map +1 -1
- package/dist/src/services/transcriptPages/index.cjs +159 -33
- package/dist/src/services/transcriptPages/index.cjs.map +1 -1
- package/dist/src/services/transcriptPages/index.mjs +158 -34
- package/dist/src/services/transcriptPages/index.mjs.map +1 -1
- package/dist/src/services/voiceToolsContract/index.cjs +7 -7
- package/dist/src/services/voiceToolsContract/index.cjs.map +1 -1
- package/dist/src/services/voiceToolsContract/index.d.mts +4 -4
- package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -1
- package/dist/src/services/voiceToolsContract/index.mjs +7 -7
- package/dist/src/services/voiceToolsContract/index.mjs.map +1 -1
- package/dist/src/services/workspaceRegistry/index.cjs +9 -179
- package/dist/src/services/workspaceRegistry/index.cjs.map +1 -1
- package/dist/src/services/workspaceRegistry/index.d.mts +5 -47
- package/dist/src/services/workspaceRegistry/index.mjs +7 -176
- package/dist/src/services/workspaceRegistry/index.mjs.map +1 -1
- package/dist/src/services/workspaceRegistry/sync.cjs +148 -0
- package/dist/src/services/workspaceRegistry/sync.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/sync.d.mts +34 -0
- package/dist/src/services/workspaceRegistry/sync.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/sync.mjs +140 -0
- package/dist/src/services/workspaceRegistry/sync.mjs.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.cjs +114 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts +31 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.mjs +101 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.mjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +339 -202
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -1
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +16 -21
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -1
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +329 -191
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -1
- package/dist/src/systems/child/services/childSession/index.cjs +94 -20
- package/dist/src/systems/child/services/childSession/index.cjs.map +1 -1
- package/dist/src/systems/child/services/childSession/index.d.mts +12 -3
- package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -1
- package/dist/src/systems/child/services/childSession/index.mjs +94 -20
- package/dist/src/systems/child/services/childSession/index.mjs.map +1 -1
- package/dist/src/systems/child/types/childSession.cjs +33 -13
- package/dist/src/systems/child/types/childSession.cjs.map +1 -1
- package/dist/src/systems/child/types/childSession.d.mts +143 -80
- package/dist/src/systems/child/types/childSession.d.mts.map +1 -1
- package/dist/src/systems/child/types/childSession.mjs +24 -9
- package/dist/src/systems/child/types/childSession.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.cjs +30 -27
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.d.mts +22 -22
- package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.mjs +33 -30
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +248 -229
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +4 -5
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +239 -219
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
- package/dist/src/systems/main/types/headlessHost.d.mts +16 -14
- package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -1
- package/dist/src/testing/pi/testHost.cjs +2 -2
- package/dist/src/testing/pi/testHost.cjs.map +1 -1
- package/dist/src/testing/pi/testHost.d.mts +3 -2
- package/dist/src/testing/pi/testHost.mjs +3 -3
- package/dist/src/testing/pi/testHost.mjs.map +1 -1
- package/dist/src/types/config.d.mts +1 -1
- package/dist/src/types/config.d.mts.map +1 -1
- package/dist/src/types/kernel.d.mts +3 -3
- package/dist/src/types/server/directHarnessRuntime.d.mts +54 -25
- package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -1
- package/dist/src/types/server/sessionToolSurface.d.mts +9 -9
- package/dist/src/web/services/apiClient/index.d.mts +1 -0
- package/dist/src/web/services/apiPaths/index.cjs.map +1 -1
- package/dist/src/web/services/apiPaths/index.d.mts +1 -1
- package/dist/src/web/services/apiPaths/index.mjs.map +1 -1
- package/dist/src/web/services/mcpWidget.cjs.map +1 -1
- package/dist/src/web/services/mcpWidget.d.mts +2 -2
- package/dist/src/web/services/mcpWidget.d.mts.map +1 -1
- package/dist/src/web/services/mcpWidget.mjs.map +1 -1
- package/dist/src/web/services/testing/templateRail.cjs +3 -0
- package/dist/src/web/services/testing/templateRail.cjs.map +1 -1
- package/dist/src/web/services/testing/templateRail.mjs +3 -0
- package/dist/src/web/services/testing/templateRail.mjs.map +1 -1
- package/dist/src/web/types/mcpWidget.d.mts +1 -1
- package/dist/src/web/types/nativeTemplate.d.mts +1 -1
- package/dist/src/web/types/nativeTemplate.d.mts.map +1 -1
- package/dist/src/web/types/template.d.mts +8 -0
- package/dist/src/web/types/template.d.mts.map +1 -1
- package/dist/src/web/types/webPlugin.d.mts +17 -5
- package/dist/src/web/types/webPlugin.d.mts.map +1 -1
- package/dist/testMode.cjs +4 -0
- package/dist/testMode.d.mts +2 -0
- package/dist/testMode.mjs +1 -0
- package/dist/testing.cjs +1 -1
- package/dist/testing.d.mts +2 -2
- package/dist/testing.mjs +2 -2
- package/dist/toolInventory.cjs.map +1 -1
- package/dist/toolInventory.mjs.map +1 -1
- package/dist/toolNames.mjs +1 -2
- package/dist/toolOverrides.cjs +4 -4
- package/dist/toolOverrides.d.mts +3 -3
- package/dist/toolOverrides.mjs +3 -3
- package/dist/toolSurface.cjs +4 -4
- package/dist/toolSurface.d.mts +3 -3
- package/dist/toolSurface.mjs +3 -3
- package/dist/transition.cjs +3 -3
- package/dist/transition.d.cjs +3 -3
- package/dist/transition.d.mts +2 -2
- package/dist/transition.mjs +1 -2
- package/dist/transitionClassifier.cjs.map +1 -1
- package/dist/transitionClassifier.d.mts +2 -2
- package/dist/transitionClassifier.d.mts.map +1 -1
- package/dist/transitionClassifier.mjs.map +1 -1
- package/dist/transitionCoordinator.cjs +3 -3
- package/dist/transitionCoordinator.cjs.map +1 -1
- package/dist/transitionCoordinator.d.mts +4 -4
- package/dist/transitionCoordinator.d.mts.map +1 -1
- package/dist/transitionCoordinator.mjs +3 -3
- package/dist/transitionCoordinator.mjs.map +1 -1
- package/dist/typesContextApi.d.mts +2 -1
- package/dist/typesContextApi.d.mts.map +1 -1
- package/dist/uiHub.cjs +3 -3
- package/dist/uiHub.d.mts +2 -2
- package/dist/uiHub.mjs +1 -2
- package/dist/voiceTools.cjs +5 -5
- package/dist/voiceTools.d.mts +3 -3
- package/dist/voiceTools.mjs +3 -3
- package/dist/web.cjs +8 -0
- package/dist/web.d.mts +3 -2
- package/dist/web.mjs +2 -1
- package/dist/webCompositions.cjs.map +1 -1
- package/dist/webCompositions.d.mts +7 -7
- package/dist/webCompositions.d.mts.map +1 -1
- package/dist/webCompositions.mjs.map +1 -1
- package/licenses/Codex-Apache-2.0.txt +201 -0
- package/package.json +58 -53
- package/dist/doomPackage.cjs +0 -61
- package/dist/doomPackage.cjs.map +0 -1
- package/dist/doomPackage.d.mts +0 -17
- package/dist/doomPackage.d.mts.map +0 -1
- package/dist/doomPackage.mjs +0 -54
- package/dist/doomPackage.mjs.map +0 -1
- package/dist/jsonlSessionRepo.cjs +0 -44
- package/dist/jsonlSessionRepo.cjs.map +0 -1
- package/dist/jsonlSessionRepo.d.mts +0 -7
- package/dist/jsonlSessionRepo.d.mts.map +0 -1
- package/dist/jsonlSessionRepo.mjs +0 -42
- package/dist/jsonlSessionRepo.mjs.map +0 -1
- package/dist/runtimeJson.cjs.map +0 -1
- package/dist/runtimeJson.d.mts.map +0 -1
- package/dist/runtimeJson.mjs.map +0 -1
- package/dist/runtimePiSettings.cjs.map +0 -1
- package/dist/runtimePiSettings.d.mts.map +0 -1
- package/dist/runtimePiSettings.mjs.map +0 -1
- package/dist/serverFacet.cjs +0 -34
- package/dist/serverFacet.d.mts +0 -10
- package/dist/serverFacet.mjs +0 -9
- package/dist/src/pi/piWebSocketListener.cjs +0 -115
- package/dist/src/pi/piWebSocketListener.cjs.map +0 -1
- package/dist/src/pi/piWebSocketListener.mjs +0 -115
- package/dist/src/pi/piWebSocketListener.mjs.map +0 -1
- package/dist/src/schemas/serverFacet.cjs +0 -111
- package/dist/src/schemas/serverFacet.cjs.map +0 -1
- package/dist/src/schemas/serverFacet.d.mts +0 -152
- package/dist/src/schemas/serverFacet.d.mts.map +0 -1
- package/dist/src/schemas/serverFacet.mjs +0 -101
- package/dist/src/schemas/serverFacet.mjs.map +0 -1
- package/dist/src/schemas/sessionUpdates.d.mts +0 -34
- package/dist/src/schemas/sessionUpdates.d.mts.map +0 -1
- package/dist/src/server/headlessProtocol.cjs +0 -382
- package/dist/src/server/headlessProtocol.cjs.map +0 -1
- package/dist/src/server/headlessProtocol.mjs +0 -382
- package/dist/src/server/headlessProtocol.mjs.map +0 -1
- package/dist/src/server/nativeChildTranscriptReader.cjs +0 -20
- package/dist/src/server/nativeChildTranscriptReader.cjs.map +0 -1
- package/dist/src/server/nativeChildTranscriptReader.mjs +0 -18
- package/dist/src/server/nativeChildTranscriptReader.mjs.map +0 -1
- package/dist/src/server/serverFacetLoader.cjs +0 -214
- package/dist/src/server/serverFacetLoader.cjs.map +0 -1
- package/dist/src/server/serverFacetLoader.d.mts +0 -72
- package/dist/src/server/serverFacetLoader.d.mts.map +0 -1
- package/dist/src/server/serverFacetLoader.mjs +0 -212
- package/dist/src/server/serverFacetLoader.mjs.map +0 -1
- package/dist/src/services/acpSessionUpdates/index.cjs +0 -129
- package/dist/src/services/acpSessionUpdates/index.cjs.map +0 -1
- package/dist/src/services/acpSessionUpdates/index.mjs +0 -129
- package/dist/src/services/acpSessionUpdates/index.mjs.map +0 -1
- package/dist/src/services/historyImport/index.cjs +0 -8
- package/dist/src/services/historyImport/index.cjs.map +0 -1
- package/dist/src/services/historyImport/index.d.mts +0 -68
- package/dist/src/services/historyImport/index.d.mts.map +0 -1
- package/dist/src/services/historyImport/index.mjs +0 -8
- package/dist/src/services/historyImport/index.mjs.map +0 -1
- package/dist/src/services/openSessionRegistry/index.d.mts.map +0 -1
- package/dist/src/services/requestReceipts/index.cjs.map +0 -1
- package/dist/src/services/requestReceipts/index.d.mts +0 -11
- package/dist/src/services/requestReceipts/index.d.mts.map +0 -1
- package/dist/src/services/requestReceipts/index.mjs.map +0 -1
- package/dist/src/services/rpcTranscript/index.cjs +0 -633
- package/dist/src/services/rpcTranscript/index.cjs.map +0 -1
- package/dist/src/services/rpcTranscript/index.d.mts +0 -50
- package/dist/src/services/rpcTranscript/index.d.mts.map +0 -1
- package/dist/src/services/rpcTranscript/index.mjs +0 -632
- package/dist/src/services/rpcTranscript/index.mjs.map +0 -1
- package/dist/src/services/serverFacet/index.cjs.map +0 -1
- package/dist/src/services/serverFacet/index.d.mts +0 -31
- package/dist/src/services/serverFacet/index.d.mts.map +0 -1
- package/dist/src/services/serverFacet/index.mjs.map +0 -1
- package/dist/src/services/workspaceRegistry/index.d.mts.map +0 -1
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +0 -28
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +0 -1
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +0 -25
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +0 -1
- package/dist/terminalPiChildSessionService.cjs +0 -324
- package/dist/terminalPiChildSessionService.cjs.map +0 -1
- package/dist/terminalPiChildSessionService.d.mts +0 -46
- package/dist/terminalPiChildSessionService.d.mts.map +0 -1
- package/dist/terminalPiChildSessionService.mjs +0 -318
- package/dist/terminalPiChildSessionService.mjs.map +0 -1
- package/dist/v3Export.cjs +0 -10
- package/dist/v3Export.cjs.map +0 -1
- package/dist/v3Export.d.mts +0 -35
- package/dist/v3Export.d.mts.map +0 -1
- package/dist/v3Export.mjs +0 -9
- package/dist/v3Export.mjs.map +0 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { HeldQueueDoc } from "./docs.mjs";
|
|
2
|
+
import { CompactionTask, GenerationTask, InboxDoc, LiveDoc, UserEntry } from "@earendil-works/pi-durable";
|
|
3
|
+
//#region src/services/durableQueue/index.ts
|
|
4
|
+
/** pi-durable deduplicates by request ID, so a held input can be handed over again after a crash. */
|
|
5
|
+
const heldRequestId = (id) => `po.queue:${id}`;
|
|
6
|
+
/** The pi.inbox content of a held or freshly submitted input. */
|
|
7
|
+
function heldContent(message, images) {
|
|
8
|
+
if (typeof message !== "string") {
|
|
9
|
+
if (message.role !== "user") throw new Error("Only user messages can admit an agent run");
|
|
10
|
+
return message.content;
|
|
11
|
+
}
|
|
12
|
+
return images?.length ? [{
|
|
13
|
+
type: "text",
|
|
14
|
+
text: message
|
|
15
|
+
}, ...images] : message;
|
|
16
|
+
}
|
|
17
|
+
/** Appends the entry an input is placed as: `entry`'s kind and data, or `pi.user`, as pi-durable's own boundary does. */
|
|
18
|
+
function appendInput(tx, conversationId, content, entry, now) {
|
|
19
|
+
const model = [{
|
|
20
|
+
role: "user",
|
|
21
|
+
content,
|
|
22
|
+
timestamp: now
|
|
23
|
+
}];
|
|
24
|
+
return entry ? tx.appendEntry(conversationId, {
|
|
25
|
+
kind: entry.kind,
|
|
26
|
+
...entry.data === void 0 ? {} : { data: entry.data },
|
|
27
|
+
model
|
|
28
|
+
}) : tx.appendEntry(UserEntry, conversationId, { model });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Promotes one explicitly queued input to steer its operation, or starts it from idle, in one commit with only public
|
|
32
|
+
* Tx operations: target validation and the move from held to pi.inbox happen on the same Session mutation line.
|
|
33
|
+
*
|
|
34
|
+
* Mirrors pi-durable `harness/inbox.d.ts:42-52` (`prepareBoundary`/`applyBoundary` at `final`) and `admitSubmission`
|
|
35
|
+
* in `harness/submissions.js`, which pi-durable does not export. Re-run the promote tests on every pi-durable upgrade.
|
|
36
|
+
*/
|
|
37
|
+
async function admitSelected(tx, conversationId, selection, modes, replay) {
|
|
38
|
+
const doc = await tx.doc(HeldQueueDoc);
|
|
39
|
+
const record = JSON.parse(doc.json);
|
|
40
|
+
const requestId = heldRequestId(selection.id);
|
|
41
|
+
const accepted = await tx.submissionByRequest(conversationId, requestId);
|
|
42
|
+
if (accepted && accepted.type !== "input") throw new Error(`Request ${requestId} already identifies a submission of type ${accepted.type}`);
|
|
43
|
+
if (accepted && replay) return accepted.id;
|
|
44
|
+
if (accepted) return accepted.status === "queued" ? "in_flight" : "not_found";
|
|
45
|
+
const index = record.held.findIndex((q) => q.id === selection.id && q.explicitQueue);
|
|
46
|
+
if (index === -1) return "not_found";
|
|
47
|
+
const q = record.held[index];
|
|
48
|
+
const live = await tx.doc(LiveDoc, conversationId);
|
|
49
|
+
const task = live.run ? await tx.task(live.run.taskId) : void 0;
|
|
50
|
+
if ((live.run ? String(live.run.inputs[0]) : void 0) !== selection.operationId || task?.abortRequested || live.run && record.abortOperationId === selection.operationId) return "target_changed";
|
|
51
|
+
if (!live.run) {
|
|
52
|
+
let page = await tx.scanTasks({
|
|
53
|
+
conversationId,
|
|
54
|
+
kind: CompactionTask.definition.name,
|
|
55
|
+
background: false
|
|
56
|
+
}, 128);
|
|
57
|
+
while (true) {
|
|
58
|
+
if (page.items.some((task) => task.state.status !== "terminal")) return "target_changed";
|
|
59
|
+
if (!page.next) break;
|
|
60
|
+
page = await tx.scanTasks({
|
|
61
|
+
conversationId,
|
|
62
|
+
kind: CompactionTask.definition.name,
|
|
63
|
+
background: false
|
|
64
|
+
}, 128, page.next);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const content = heldContent(q.message ?? q.text, q.images);
|
|
68
|
+
const inbox = await tx.doc(InboxDoc, conversationId);
|
|
69
|
+
let head = live.run ? void 0 : (await tx.latestHeadMarker(conversationId))?.head;
|
|
70
|
+
const now = Date.now();
|
|
71
|
+
let id;
|
|
72
|
+
if (!live.run && inbox.items.length === 0) {
|
|
73
|
+
const entry = await appendInput(tx, conversationId, content, q.entry, now);
|
|
74
|
+
id = (await tx.createSubmission({
|
|
75
|
+
conversationId,
|
|
76
|
+
requestId,
|
|
77
|
+
type: "input",
|
|
78
|
+
status: "placed",
|
|
79
|
+
entry: entry.id
|
|
80
|
+
})).id;
|
|
81
|
+
live.run = {
|
|
82
|
+
taskId: await tx.createTask(GenerationTask, {}, {
|
|
83
|
+
ownership: { kind: "conversation" },
|
|
84
|
+
conversationId
|
|
85
|
+
}),
|
|
86
|
+
inputs: [id]
|
|
87
|
+
};
|
|
88
|
+
} else {
|
|
89
|
+
id = (await tx.createSubmission({
|
|
90
|
+
conversationId,
|
|
91
|
+
requestId,
|
|
92
|
+
type: "input",
|
|
93
|
+
status: "queued"
|
|
94
|
+
})).id;
|
|
95
|
+
inbox.items.push({
|
|
96
|
+
id,
|
|
97
|
+
mode: "steer",
|
|
98
|
+
content: JSON.parse(JSON.stringify(content)),
|
|
99
|
+
...q.entry ? { entry: JSON.parse(JSON.stringify(q.entry)) } : {}
|
|
100
|
+
});
|
|
101
|
+
if (!live.run) {
|
|
102
|
+
const writes = inbox.items.flatMap((item, index) => item.mode === "write" ? [index] : []);
|
|
103
|
+
const pick = (mode) => {
|
|
104
|
+
const indexes = inbox.items.flatMap((item, index) => item.mode === mode ? [index] : []);
|
|
105
|
+
return (mode === "steer" ? modes.steeringMode : modes.followUpMode) === "all" ? indexes : indexes.slice(0, 1);
|
|
106
|
+
};
|
|
107
|
+
const users = [...pick("steer"), ...pick("followUp")].sort((a, b) => a - b);
|
|
108
|
+
for (const index of writes) {
|
|
109
|
+
const item = inbox.items[index];
|
|
110
|
+
if (item.mode !== "write") continue;
|
|
111
|
+
const draft = item.entry;
|
|
112
|
+
if (typeof draft.head === "number" && head !== void 0 && draft.head < head) {
|
|
113
|
+
tx.settleSubmission(item.id, {
|
|
114
|
+
status: "unanswered",
|
|
115
|
+
reason: "stale"
|
|
116
|
+
});
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
const entry = await tx.appendEntry(conversationId, draft);
|
|
120
|
+
if (draft.head !== void 0) head = draft.head === "self" ? entry.id : draft.head;
|
|
121
|
+
tx.placeSubmission(item.id, entry.id);
|
|
122
|
+
}
|
|
123
|
+
const inputs = [];
|
|
124
|
+
for (const index of users) {
|
|
125
|
+
const item = inbox.items[index];
|
|
126
|
+
if (item.mode === "write") continue;
|
|
127
|
+
const entry = await appendInput(tx, conversationId, item.content, item.entry, now);
|
|
128
|
+
tx.placeSubmission(item.id, entry.id);
|
|
129
|
+
inputs.push(item.id);
|
|
130
|
+
}
|
|
131
|
+
for (const index of [...writes, ...users].sort((a, b) => b - a)) inbox.items.splice(index, 1);
|
|
132
|
+
if (inputs.length) live.run = {
|
|
133
|
+
taskId: await tx.createTask(GenerationTask, {}, {
|
|
134
|
+
ownership: { kind: "conversation" },
|
|
135
|
+
conversationId
|
|
136
|
+
}),
|
|
137
|
+
inputs
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
record.held.splice(index, 1);
|
|
142
|
+
record.revision++;
|
|
143
|
+
doc.json = JSON.stringify(record);
|
|
144
|
+
return id;
|
|
145
|
+
}
|
|
146
|
+
//#endregion
|
|
147
|
+
export { admitSelected, heldContent, heldRequestId };
|
|
148
|
+
|
|
149
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/durableQueue/index.ts"],"sourcesContent":["/**\n * Po's queue around pi.inbox. Follow-ups that are not paused go straight to pi.inbox; only paused and explicitly\n * queued inputs stay in `po.queue.held`, and a held input enters pi.inbox under its stable request ID.\n */\nimport type { ImageContent } from '@earendil-works/pi-ai';\nimport {\n CompactionTask,\n GenerationTask,\n InboxDoc,\n LiveDoc,\n UserEntry,\n type Conversation,\n type ConversationId,\n type HarnessSettings,\n type InputEntry,\n type SubmissionId,\n type Tx,\n} from '@earendil-works/pi-durable';\n\nimport type { AgentMessage, DirectHarnessQueuedInput } from '../../types/server/directHarnessRuntime';\nimport { HeldQueueDoc } from './docs';\n\nexport type HeldInput = Omit<DirectHarnessQueuedInput, 'disposition'> & {\n message?: AgentMessage;\n // The entry the input is placed as instead of `pi.user`, kept when an abort moves a queued input here.\n entry?: InputEntry;\n // Only explicitly queued inputs are visible to, and removable or promotable by, the operator.\n explicitQueue: boolean;\n};\nexport type HeldQueue = { revision: number; paused: boolean; abortOperationId?: string; held: HeldInput[] };\n\n/** pi-durable deduplicates by request ID, so a held input can be handed over again after a crash. */\nexport const heldRequestId = (id: string) => `po.queue:${id}`;\n\n/** The pi.inbox content of a held or freshly submitted input. */\nexport function heldContent(message: string | AgentMessage, images?: ImageContent[]) {\n if (typeof message !== 'string') {\n if (message.role !== 'user') throw new Error('Only user messages can admit an agent run');\n return message.content;\n }\n return images?.length ? [{ type: 'text' as const, text: message }, ...images] : message;\n}\n\n/** Appends the entry an input is placed as: `entry`'s kind and data, or `pi.user`, as pi-durable's own boundary does. */\nfunction appendInput(\n tx: Tx,\n conversationId: ConversationId,\n content: ReturnType<typeof heldContent>,\n entry: InputEntry | undefined,\n now: number,\n) {\n const model = [{ role: 'user' as const, content, timestamp: now }];\n return entry\n ? tx.appendEntry(conversationId, {\n kind: entry.kind,\n ...(entry.data === undefined ? {} : { data: entry.data }),\n model,\n })\n : tx.appendEntry(UserEntry, conversationId, { model });\n}\n\n/**\n * Promotes one explicitly queued input to steer its operation, or starts it from idle, in one commit with only public\n * Tx operations: target validation and the move from held to pi.inbox happen on the same Session mutation line.\n *\n * Mirrors pi-durable `harness/inbox.d.ts:42-52` (`prepareBoundary`/`applyBoundary` at `final`) and `admitSubmission`\n * in `harness/submissions.js`, which pi-durable does not export. Re-run the promote tests on every pi-durable upgrade.\n */\nexport async function admitSelected(\n tx: Tx,\n conversationId: ConversationId,\n selection: { id: string; operationId?: string },\n modes: Pick<HarnessSettings, 'steeringMode' | 'followUpMode'>,\n replay: boolean,\n): Promise<SubmissionId | 'not_found' | 'in_flight' | 'target_changed'> {\n const doc = await tx.doc(HeldQueueDoc);\n const record = JSON.parse(doc.json) as HeldQueue;\n const requestId = heldRequestId(selection.id);\n // An accepted request survives completion/replacement and a lost acknowledgement.\n const accepted = await tx.submissionByRequest(conversationId, requestId);\n if (accepted && accepted.type !== 'input')\n throw new Error(`Request ${requestId} already identifies a submission of type ${accepted.type}`);\n if (accepted && replay) return accepted.id;\n if (accepted) return accepted.status === 'queued' ? 'in_flight' : 'not_found';\n const index = record.held.findIndex((q) => q.id === selection.id && q.explicitQueue);\n if (index === -1) return 'not_found';\n const q = record.held[index]!;\n const live = await tx.doc(LiveDoc, conversationId);\n const task = live.run ? await tx.task(live.run.taskId) : undefined;\n if (\n (live.run ? String(live.run.inputs[0]) : undefined) !== selection.operationId ||\n task?.abortRequested ||\n (live.run && record.abortOperationId === selection.operationId)\n )\n return 'target_changed';\n if (!live.run) {\n let page = await tx.scanTasks({ conversationId, kind: CompactionTask.definition.name, background: false }, 128);\n while (true) {\n if (page.items.some((task) => task.state.status !== 'terminal')) return 'target_changed';\n if (!page.next) break;\n page = await tx.scanTasks(\n { conversationId, kind: CompactionTask.definition.name, background: false },\n 128,\n page.next,\n );\n }\n }\n const content = heldContent(q.message ?? q.text, q.images);\n const inbox = await tx.doc(InboxDoc, conversationId);\n // Native final boundaries read the active head before any table writes.\n let head = live.run ? undefined : (await tx.latestHeadMarker(conversationId))?.head;\n const now = Date.now();\n let id: SubmissionId;\n if (!live.run && inbox.items.length === 0) {\n const entry = await appendInput(tx, conversationId, content, q.entry, now);\n id = (await tx.createSubmission({ conversationId, requestId, type: 'input', status: 'placed', entry: entry.id }))\n .id;\n live.run = {\n taskId: await tx.createTask(GenerationTask, {}, { ownership: { kind: 'conversation' }, conversationId }),\n inputs: [id],\n };\n } else {\n id = (await tx.createSubmission({ conversationId, requestId, type: 'input', status: 'queued' })).id;\n inbox.items.push({\n id,\n mode: 'steer',\n content: JSON.parse(JSON.stringify(content)) as typeof content,\n ...(q.entry ? { entry: JSON.parse(JSON.stringify(q.entry)) as InputEntry } : {}),\n });\n if (!live.run) {\n // Preserve native write-first placement, stale heads, queue modes and\n // positional input order rather than restarting just the selected input.\n const writes = inbox.items.flatMap((item, index) => (item.mode === 'write' ? [index] : []));\n const pick = (mode: 'steer' | 'followUp') => {\n const indexes = inbox.items.flatMap((item, index) => (item.mode === mode ? [index] : []));\n const queueMode = mode === 'steer' ? modes.steeringMode : modes.followUpMode;\n return queueMode === 'all' ? indexes : indexes.slice(0, 1);\n };\n const users = [...pick('steer'), ...pick('followUp')].sort((a, b) => a - b);\n for (const index of writes) {\n const item = inbox.items[index]!;\n if (item.mode !== 'write') continue;\n // Public InboxDoc represents native write drafts as JsonObject.\n const draft = item.entry as unknown as Extract<\n Parameters<Conversation['submit']>[0],\n { type: 'write' }\n >['entry'];\n if (typeof draft.head === 'number' && head !== undefined && draft.head < head) {\n tx.settleSubmission(item.id, { status: 'unanswered', reason: 'stale' });\n continue;\n }\n const entry = await tx.appendEntry(conversationId, draft);\n if (draft.head !== undefined) head = draft.head === 'self' ? entry.id : draft.head;\n tx.placeSubmission(item.id, entry.id);\n }\n const inputs: SubmissionId[] = [];\n for (const index of users) {\n const item = inbox.items[index]!;\n if (item.mode === 'write') continue;\n const entry = await appendInput(tx, conversationId, item.content, item.entry, now);\n tx.placeSubmission(item.id, entry.id);\n inputs.push(item.id);\n }\n for (const index of [...writes, ...users].sort((a, b) => b - a)) inbox.items.splice(index, 1);\n if (inputs.length)\n live.run = {\n taskId: await tx.createTask(GenerationTask, {}, { ownership: { kind: 'conversation' }, conversationId }),\n inputs,\n };\n }\n }\n record.held.splice(index, 1);\n record.revision++;\n doc.json = JSON.stringify(record);\n return id;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/services/durableRequestReceipts/docs.ts
|
|
2
|
+
const ReceiptsDoc = (0, require("@earendil-works/pi-durable").defineDoc)({
|
|
3
|
+
kind: "po.request-receipts",
|
|
4
|
+
version: 1,
|
|
5
|
+
scope: "session",
|
|
6
|
+
initial: () => ({ receipts: {} })
|
|
7
|
+
});
|
|
8
|
+
//#endregion
|
|
9
|
+
exports.ReceiptsDoc = ReceiptsDoc;
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=docs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableRequestReceipts/docs.ts"],"sourcesContent":["import { defineDoc, type JsonObject } from '@earendil-works/pi-durable';\n\nexport const ReceiptsDoc = defineDoc<{ receipts: JsonObject }>({\n kind: 'po.request-receipts',\n version: 1,\n scope: 'session',\n initial: () => ({ receipts: {} }),\n});\n"],"mappings":";AAEA,MAAa,eAAA,uCAAcA,CAAAA,CAAAA,UAAAA,CAAoC;CAC7D,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,UAAU,CAAC,EAAE;AACjC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineDoc } from "@earendil-works/pi-durable";
|
|
2
|
+
//#region src/services/durableRequestReceipts/docs.ts
|
|
3
|
+
const ReceiptsDoc = defineDoc({
|
|
4
|
+
kind: "po.request-receipts",
|
|
5
|
+
version: 1,
|
|
6
|
+
scope: "session",
|
|
7
|
+
initial: () => ({ receipts: {} })
|
|
8
|
+
});
|
|
9
|
+
//#endregion
|
|
10
|
+
export { ReceiptsDoc };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=docs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.mjs","names":[],"sources":["../../../../src/services/durableRequestReceipts/docs.ts"],"sourcesContent":["import { defineDoc, type JsonObject } from '@earendil-works/pi-durable';\n\nexport const ReceiptsDoc = defineDoc<{ receipts: JsonObject }>({\n kind: 'po.request-receipts',\n version: 1,\n scope: 'session',\n initial: () => ({ receipts: {} }),\n});\n"],"mappings":";;AAEA,MAAa,cAAc,UAAoC;CAC7D,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,UAAU,CAAC,EAAE;AACjC,CAAC"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
const require_historyOwnership = require("../../../historyOwnership.cjs");
|
|
2
2
|
const require_sqliteSessionStorage = require("../../../sqliteSessionStorage.cjs");
|
|
3
|
+
const require_docs = require("./docs.cjs");
|
|
3
4
|
let node_crypto = require("node:crypto");
|
|
4
|
-
|
|
5
|
-
//#region src/services/requestReceipts/index.ts
|
|
5
|
+
//#region src/services/durableRequestReceipts/index.ts
|
|
6
6
|
const RECEIPTS_SESSION_ID = "request_receipts";
|
|
7
|
-
const ReceiptsDoc = (0, _earendil_works_pi_durable.defineDoc)({
|
|
8
|
-
kind: "po.request-receipts",
|
|
9
|
-
version: 1,
|
|
10
|
-
scope: "session",
|
|
11
|
-
initial: () => ({ receipts: {} })
|
|
12
|
-
});
|
|
13
7
|
const FINGERPRINT = /^[a-f0-9]{64}$/u;
|
|
14
8
|
const NAMESPACE = /^[a-z][a-z0-9.-]*$/u;
|
|
9
|
+
const MAX_RECEIPTS = 1024;
|
|
15
10
|
function bounded(value, maximum) {
|
|
16
11
|
return typeof value === "string" && value.length > 0 && value.length <= maximum;
|
|
17
12
|
}
|
|
@@ -64,7 +59,7 @@ function createRequestReceipts(options) {
|
|
|
64
59
|
const receiptAddress = address(request);
|
|
65
60
|
if (!FINGERPRINT.test(request.fingerprint) || !bounded(request.destination, 512) || !bounded(request.transactionId, 256)) throw new Error("Invalid request receipt reservation.");
|
|
66
61
|
return operate((storage) => storage.commit(async (mutator) => {
|
|
67
|
-
const doc = await mutator.doc(ReceiptsDoc);
|
|
62
|
+
const doc = await mutator.doc(require_docs.ReceiptsDoc);
|
|
68
63
|
const existing = doc.receipts[receiptAddress];
|
|
69
64
|
if (existing !== void 0) {
|
|
70
65
|
const prior = storedReceipt(existing, request).receipt;
|
|
@@ -91,6 +86,10 @@ function createRequestReceipts(options) {
|
|
|
91
86
|
receipt,
|
|
92
87
|
token
|
|
93
88
|
}));
|
|
89
|
+
const older = Object.keys(doc.receipts).filter((key) => key !== receiptAddress);
|
|
90
|
+
const reserved = (key) => doc.receipts[key].receipt?.outcome === "reserved";
|
|
91
|
+
const excess = Math.max(0, older.length + 1 - (options.maxReceipts ?? MAX_RECEIPTS));
|
|
92
|
+
for (const key of [...older.filter((key) => !reserved(key)), ...older.filter(reserved)].slice(0, excess)) delete doc.receipts[key];
|
|
94
93
|
return {
|
|
95
94
|
kind: "reserved",
|
|
96
95
|
token
|
|
@@ -100,7 +99,7 @@ function createRequestReceipts(options) {
|
|
|
100
99
|
lookup(key) {
|
|
101
100
|
const receiptAddress = address(key);
|
|
102
101
|
return operate(async (storage) => {
|
|
103
|
-
const existing = (await storage.snapshot(ReceiptsDoc, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT))?.receipts[receiptAddress];
|
|
102
|
+
const existing = (await storage.snapshot(require_docs.ReceiptsDoc, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT))?.receipts[receiptAddress];
|
|
104
103
|
return existing === void 0 ? void 0 : storedReceipt(existing, key).receipt;
|
|
105
104
|
});
|
|
106
105
|
},
|
|
@@ -112,7 +111,7 @@ function createRequestReceipts(options) {
|
|
|
112
111
|
"uncertain"
|
|
113
112
|
].includes(request.outcome)) throw new Error("Invalid request receipt finish.");
|
|
114
113
|
return operate((storage) => storage.commit(async (mutator) => {
|
|
115
|
-
const doc = await mutator.doc(ReceiptsDoc);
|
|
114
|
+
const doc = await mutator.doc(require_docs.ReceiptsDoc);
|
|
116
115
|
const existing = doc.receipts[receiptAddress];
|
|
117
116
|
if (existing === void 0) throw new Error("Request receipt reservation does not exist.");
|
|
118
117
|
const prior = storedReceipt(existing, request);
|
|
@@ -145,11 +144,6 @@ function createRequestReceipts(options) {
|
|
|
145
144
|
} catch (error) {
|
|
146
145
|
errors.push(error);
|
|
147
146
|
}
|
|
148
|
-
try {
|
|
149
|
-
await storage.repository.close(require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
|
|
150
|
-
} catch (error) {
|
|
151
|
-
errors.push(error);
|
|
152
|
-
}
|
|
153
147
|
try {
|
|
154
148
|
await storage.historyLease.release();
|
|
155
149
|
} catch (error) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["createHistoryOwnership","openSqliteSessionStorage","BACKGROUND_CONTEXT","ReceiptsDoc","randomUUID"],"sources":["../../../../src/services/durableRequestReceipts/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { Session } from '@earendil-works/pi-durable';\n\nimport type {\n PoRequestReceipt,\n PoRequestReceiptKey,\n PoRequestReceiptReservation,\n PoRequestReceipts,\n} from '../../schemas/packageApi';\nimport { createHistoryOwnership } from '../historyOwnership';\nimport { DURABLE_BACKGROUND_CONTEXT as BACKGROUND_CONTEXT, openSqliteSessionStorage } from '../sqliteSessionStorage';\nimport { ReceiptsDoc } from './docs';\n\nconst RECEIPTS_SESSION_ID = 'request_receipts';\nconst FINGERPRINT = /^[a-f0-9]{64}$/u;\nconst NAMESPACE = /^[a-z][a-z0-9.-]*$/u;\n// ponytail: oldest receipts are dropped past this cap (the whole map is one doc rewritten per commit), so a\n// retry older than ~1k sends can duplicate. Upgrade: a doc family keyed by address.\nconst MAX_RECEIPTS = 1024;\n\ntype TerminalOutcome = Exclude<PoRequestReceipt['outcome'], 'reserved'>;\ninterface StoredReceipt {\n version: 1;\n receipt: PoRequestReceipt;\n token: string;\n}\n\nfunction bounded(value: unknown, maximum: number): value is string {\n return typeof value === 'string' && value.length > 0 && value.length <= maximum;\n}\n\nfunction address(key: PoRequestReceiptKey): string {\n if (\n !bounded(key.namespace, 64) ||\n !NAMESPACE.test(key.namespace) ||\n !bounded(key.activationId, 256) ||\n !bounded(key.requestId, 256)\n )\n throw new Error('Invalid request receipt address.');\n // JSON tuple encoding retains exact arbitrary provider IDs, including separators.\n return JSON.stringify([key.namespace, key.activationId, key.requestId]);\n}\n\nfunction storedReceipt(input: unknown, key: PoRequestReceiptKey): StoredReceipt {\n if (typeof input !== 'object' || input === null || Array.isArray(input))\n throw new Error('Request receipt storage is corrupt.');\n const stored = JSON.parse(JSON.stringify(input)) as Partial<StoredReceipt>;\n const receipt = stored.receipt;\n if (\n stored.version !== 1 ||\n !bounded(stored.token, 128) ||\n typeof receipt !== 'object' ||\n receipt === null ||\n receipt.namespace !== key.namespace ||\n receipt.activationId !== key.activationId ||\n receipt.requestId !== key.requestId ||\n !bounded(receipt.destination, 512) ||\n !bounded(receipt.transactionId, 256) ||\n !FINGERPRINT.test(receipt.fingerprint) ||\n !['reserved', 'admitted', 'rejected', 'uncertain'].includes(receipt.outcome)\n )\n throw new Error('Request receipt storage is corrupt.');\n return stored as StoredReceipt;\n}\n\n/** One native SQLite metadata history, independent of any selected agent session. */\nexport function createRequestReceipts(options: { directory: string; maxReceipts?: number }): {\n receipts: PoRequestReceipts;\n close(): Promise<void>;\n} {\n const ownership = createHistoryOwnership({ sourceFormat: 'sqlite' });\n let opened: ReturnType<typeof openSqliteSessionStorage> | undefined;\n let closed = false;\n let closing: Promise<void> | undefined;\n const operations = new Set<Promise<unknown>>();\n\n const session = async (): Promise<Session> => {\n if (closed) throw new Error('Request receipt storage is closed.');\n opened ??= openSqliteSessionStorage(\n { sessionsRoot: options.directory, sessionId: RECEIPTS_SESSION_ID, historyOwnership: ownership },\n BACKGROUND_CONTEXT,\n );\n return (await opened).session;\n };\n const operate = <T>(callback: (session: Session) => Promise<T>): Promise<T> => {\n if (closed) return Promise.reject(new Error('Request receipt storage is closed.'));\n const operation = session().then(callback);\n operations.add(operation);\n void operation.then(\n () => operations.delete(operation),\n () => operations.delete(operation),\n );\n return operation;\n };\n\n const receipts: PoRequestReceipts = {\n reserve(request: PoRequestReceiptReservation) {\n const receiptAddress = address(request);\n if (\n !FINGERPRINT.test(request.fingerprint) ||\n !bounded(request.destination, 512) ||\n !bounded(request.transactionId, 256)\n )\n throw new Error('Invalid request receipt reservation.');\n return operate((storage) =>\n storage.commit(async (mutator) => {\n const doc = await mutator.doc(ReceiptsDoc);\n const existing = doc.receipts[receiptAddress];\n if (existing !== undefined) {\n const prior = storedReceipt(existing, request).receipt;\n return prior.fingerprint === request.fingerprint &&\n prior.destination === request.destination &&\n prior.transactionId === request.transactionId\n ? { kind: 'existing' as const, receipt: prior }\n : { kind: 'conflict' as const, receipt: prior };\n }\n const token = randomUUID();\n const receipt: PoRequestReceipt = {\n namespace: request.namespace,\n activationId: request.activationId,\n requestId: request.requestId,\n fingerprint: request.fingerprint,\n destination: request.destination,\n transactionId: request.transactionId,\n outcome: 'reserved',\n };\n doc.receipts[receiptAddress] = JSON.parse(JSON.stringify({ version: 1, receipt, token }));\n // Object keys keep insertion order, so the first keys are the oldest. Finished receipts go first; a\n // reservation nothing finished (a crash mid-send) goes only once those run out, never the new one.\n const older = Object.keys(doc.receipts).filter((key) => key !== receiptAddress);\n const reserved = (key: string) =>\n (doc.receipts[key] as unknown as StoredReceipt).receipt?.outcome === 'reserved';\n const excess = Math.max(0, older.length + 1 - (options.maxReceipts ?? MAX_RECEIPTS));\n for (const key of [...older.filter((key) => !reserved(key)), ...older.filter(reserved)].slice(0, excess))\n delete doc.receipts[key];\n return { kind: 'reserved' as const, token };\n }, BACKGROUND_CONTEXT),\n );\n },\n lookup(key: PoRequestReceiptKey) {\n const receiptAddress = address(key);\n return operate(async (storage) => {\n const doc = await storage.snapshot(ReceiptsDoc, BACKGROUND_CONTEXT);\n const existing = doc?.receipts[receiptAddress];\n return existing === undefined ? undefined : storedReceipt(existing, key).receipt;\n });\n },\n finish(request: PoRequestReceiptKey & { token: string; outcome: TerminalOutcome }) {\n const receiptAddress = address(request);\n if (!bounded(request.token, 128) || !['admitted', 'rejected', 'uncertain'].includes(request.outcome))\n throw new Error('Invalid request receipt finish.');\n return operate((storage) =>\n storage.commit(async (mutator) => {\n const doc = await mutator.doc(ReceiptsDoc);\n const existing = doc.receipts[receiptAddress];\n if (existing === undefined) throw new Error('Request receipt reservation does not exist.');\n const prior = storedReceipt(existing, request);\n if (prior.token !== request.token) throw new Error('Request receipt token does not match.');\n if (prior.receipt.outcome === request.outcome) return prior.receipt;\n if (prior.receipt.outcome !== 'reserved') throw new Error('Request receipt has already been finished.');\n const receipt: PoRequestReceipt = { ...prior.receipt, outcome: request.outcome };\n doc.receipts[receiptAddress] = JSON.parse(JSON.stringify({ ...prior, receipt }));\n return receipt;\n }, BACKGROUND_CONTEXT),\n );\n },\n };\n\n return {\n receipts,\n close() {\n if (closing !== undefined) return closing;\n closed = true;\n closing = (async () => {\n await Promise.allSettled(operations);\n if (opened === undefined) return;\n const storage = await opened.catch(() => undefined);\n if (storage === undefined) return;\n const errors: unknown[] = [];\n try {\n await storage.session.close(BACKGROUND_CONTEXT);\n } catch (error) {\n errors.push(error);\n }\n try {\n await storage.historyLease.release();\n } catch (error) {\n errors.push(error);\n }\n if (errors.length > 0) throw new AggregateError(errors, 'Request receipt storage failed to close.');\n })();\n return closing;\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PoRequestReceipts } from "../../schemas/packageApi.mjs";
|
|
2
|
+
//#region src/services/durableRequestReceipts/index.d.ts
|
|
3
|
+
/** One native SQLite metadata history, independent of any selected agent session. */
|
|
4
|
+
export declare function createRequestReceipts(options: {
|
|
5
|
+
directory: string;
|
|
6
|
+
maxReceipts?: number;
|
|
7
|
+
}): {
|
|
8
|
+
receipts: PoRequestReceipts;
|
|
9
|
+
close(): Promise<void>;
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/durableRequestReceipts/index.ts"],"mappings":";;;wBAmEgB,sBAAsB;EAAW;EAAmB;;EAClE,UAAU;EACV,SAAS"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import { createHistoryOwnership } from "../../../historyOwnership.mjs";
|
|
2
2
|
import { DURABLE_BACKGROUND_CONTEXT, openSqliteSessionStorage } from "../../../sqliteSessionStorage.mjs";
|
|
3
|
+
import { ReceiptsDoc } from "./docs.mjs";
|
|
3
4
|
import { randomUUID } from "node:crypto";
|
|
4
|
-
|
|
5
|
-
//#region src/services/requestReceipts/index.ts
|
|
5
|
+
//#region src/services/durableRequestReceipts/index.ts
|
|
6
6
|
const RECEIPTS_SESSION_ID = "request_receipts";
|
|
7
|
-
const ReceiptsDoc = defineDoc({
|
|
8
|
-
kind: "po.request-receipts",
|
|
9
|
-
version: 1,
|
|
10
|
-
scope: "session",
|
|
11
|
-
initial: () => ({ receipts: {} })
|
|
12
|
-
});
|
|
13
7
|
const FINGERPRINT = /^[a-f0-9]{64}$/u;
|
|
14
8
|
const NAMESPACE = /^[a-z][a-z0-9.-]*$/u;
|
|
9
|
+
const MAX_RECEIPTS = 1024;
|
|
15
10
|
function bounded(value, maximum) {
|
|
16
11
|
return typeof value === "string" && value.length > 0 && value.length <= maximum;
|
|
17
12
|
}
|
|
@@ -91,6 +86,10 @@ function createRequestReceipts(options) {
|
|
|
91
86
|
receipt,
|
|
92
87
|
token
|
|
93
88
|
}));
|
|
89
|
+
const older = Object.keys(doc.receipts).filter((key) => key !== receiptAddress);
|
|
90
|
+
const reserved = (key) => doc.receipts[key].receipt?.outcome === "reserved";
|
|
91
|
+
const excess = Math.max(0, older.length + 1 - (options.maxReceipts ?? MAX_RECEIPTS));
|
|
92
|
+
for (const key of [...older.filter((key) => !reserved(key)), ...older.filter(reserved)].slice(0, excess)) delete doc.receipts[key];
|
|
94
93
|
return {
|
|
95
94
|
kind: "reserved",
|
|
96
95
|
token
|
|
@@ -145,11 +144,6 @@ function createRequestReceipts(options) {
|
|
|
145
144
|
} catch (error) {
|
|
146
145
|
errors.push(error);
|
|
147
146
|
}
|
|
148
|
-
try {
|
|
149
|
-
await storage.repository.close(DURABLE_BACKGROUND_CONTEXT);
|
|
150
|
-
} catch (error) {
|
|
151
|
-
errors.push(error);
|
|
152
|
-
}
|
|
153
147
|
try {
|
|
154
148
|
await storage.historyLease.release();
|
|
155
149
|
} catch (error) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["BACKGROUND_CONTEXT"],"sources":["../../../../src/services/durableRequestReceipts/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { Session } from '@earendil-works/pi-durable';\n\nimport type {\n PoRequestReceipt,\n PoRequestReceiptKey,\n PoRequestReceiptReservation,\n PoRequestReceipts,\n} from '../../schemas/packageApi';\nimport { createHistoryOwnership } from '../historyOwnership';\nimport { DURABLE_BACKGROUND_CONTEXT as BACKGROUND_CONTEXT, openSqliteSessionStorage } from '../sqliteSessionStorage';\nimport { ReceiptsDoc } from './docs';\n\nconst RECEIPTS_SESSION_ID = 'request_receipts';\nconst FINGERPRINT = /^[a-f0-9]{64}$/u;\nconst NAMESPACE = /^[a-z][a-z0-9.-]*$/u;\n// ponytail: oldest receipts are dropped past this cap (the whole map is one doc rewritten per commit), so a\n// retry older than ~1k sends can duplicate. Upgrade: a doc family keyed by address.\nconst MAX_RECEIPTS = 1024;\n\ntype TerminalOutcome = Exclude<PoRequestReceipt['outcome'], 'reserved'>;\ninterface StoredReceipt {\n version: 1;\n receipt: PoRequestReceipt;\n token: string;\n}\n\nfunction bounded(value: unknown, maximum: number): value is string {\n return typeof value === 'string' && value.length > 0 && value.length <= maximum;\n}\n\nfunction address(key: PoRequestReceiptKey): string {\n if (\n !bounded(key.namespace, 64) ||\n !NAMESPACE.test(key.namespace) ||\n !bounded(key.activationId, 256) ||\n !bounded(key.requestId, 256)\n )\n throw new Error('Invalid request receipt address.');\n // JSON tuple encoding retains exact arbitrary provider IDs, including separators.\n return JSON.stringify([key.namespace, key.activationId, key.requestId]);\n}\n\nfunction storedReceipt(input: unknown, key: PoRequestReceiptKey): StoredReceipt {\n if (typeof input !== 'object' || input === null || Array.isArray(input))\n throw new Error('Request receipt storage is corrupt.');\n const stored = JSON.parse(JSON.stringify(input)) as Partial<StoredReceipt>;\n const receipt = stored.receipt;\n if (\n stored.version !== 1 ||\n !bounded(stored.token, 128) ||\n typeof receipt !== 'object' ||\n receipt === null ||\n receipt.namespace !== key.namespace ||\n receipt.activationId !== key.activationId ||\n receipt.requestId !== key.requestId ||\n !bounded(receipt.destination, 512) ||\n !bounded(receipt.transactionId, 256) ||\n !FINGERPRINT.test(receipt.fingerprint) ||\n !['reserved', 'admitted', 'rejected', 'uncertain'].includes(receipt.outcome)\n )\n throw new Error('Request receipt storage is corrupt.');\n return stored as StoredReceipt;\n}\n\n/** One native SQLite metadata history, independent of any selected agent session. */\nexport function createRequestReceipts(options: { directory: string; maxReceipts?: number }): {\n receipts: PoRequestReceipts;\n close(): Promise<void>;\n} {\n const ownership = createHistoryOwnership({ sourceFormat: 'sqlite' });\n let opened: ReturnType<typeof openSqliteSessionStorage> | undefined;\n let closed = false;\n let closing: Promise<void> | undefined;\n const operations = new Set<Promise<unknown>>();\n\n const session = async (): Promise<Session> => {\n if (closed) throw new Error('Request receipt storage is closed.');\n opened ??= openSqliteSessionStorage(\n { sessionsRoot: options.directory, sessionId: RECEIPTS_SESSION_ID, historyOwnership: ownership },\n BACKGROUND_CONTEXT,\n );\n return (await opened).session;\n };\n const operate = <T>(callback: (session: Session) => Promise<T>): Promise<T> => {\n if (closed) return Promise.reject(new Error('Request receipt storage is closed.'));\n const operation = session().then(callback);\n operations.add(operation);\n void operation.then(\n () => operations.delete(operation),\n () => operations.delete(operation),\n );\n return operation;\n };\n\n const receipts: PoRequestReceipts = {\n reserve(request: PoRequestReceiptReservation) {\n const receiptAddress = address(request);\n if (\n !FINGERPRINT.test(request.fingerprint) ||\n !bounded(request.destination, 512) ||\n !bounded(request.transactionId, 256)\n )\n throw new Error('Invalid request receipt reservation.');\n return operate((storage) =>\n storage.commit(async (mutator) => {\n const doc = await mutator.doc(ReceiptsDoc);\n const existing = doc.receipts[receiptAddress];\n if (existing !== undefined) {\n const prior = storedReceipt(existing, request).receipt;\n return prior.fingerprint === request.fingerprint &&\n prior.destination === request.destination &&\n prior.transactionId === request.transactionId\n ? { kind: 'existing' as const, receipt: prior }\n : { kind: 'conflict' as const, receipt: prior };\n }\n const token = randomUUID();\n const receipt: PoRequestReceipt = {\n namespace: request.namespace,\n activationId: request.activationId,\n requestId: request.requestId,\n fingerprint: request.fingerprint,\n destination: request.destination,\n transactionId: request.transactionId,\n outcome: 'reserved',\n };\n doc.receipts[receiptAddress] = JSON.parse(JSON.stringify({ version: 1, receipt, token }));\n // Object keys keep insertion order, so the first keys are the oldest. Finished receipts go first; a\n // reservation nothing finished (a crash mid-send) goes only once those run out, never the new one.\n const older = Object.keys(doc.receipts).filter((key) => key !== receiptAddress);\n const reserved = (key: string) =>\n (doc.receipts[key] as unknown as StoredReceipt).receipt?.outcome === 'reserved';\n const excess = Math.max(0, older.length + 1 - (options.maxReceipts ?? MAX_RECEIPTS));\n for (const key of [...older.filter((key) => !reserved(key)), ...older.filter(reserved)].slice(0, excess))\n delete doc.receipts[key];\n return { kind: 'reserved' as const, token };\n }, BACKGROUND_CONTEXT),\n );\n },\n lookup(key: PoRequestReceiptKey) {\n const receiptAddress = address(key);\n return operate(async (storage) => {\n const doc = await storage.snapshot(ReceiptsDoc, BACKGROUND_CONTEXT);\n const existing = doc?.receipts[receiptAddress];\n return existing === undefined ? undefined : storedReceipt(existing, key).receipt;\n });\n },\n finish(request: PoRequestReceiptKey & { token: string; outcome: TerminalOutcome }) {\n const receiptAddress = address(request);\n if (!bounded(request.token, 128) || !['admitted', 'rejected', 'uncertain'].includes(request.outcome))\n throw new Error('Invalid request receipt finish.');\n return operate((storage) =>\n storage.commit(async (mutator) => {\n const doc = await mutator.doc(ReceiptsDoc);\n const existing = doc.receipts[receiptAddress];\n if (existing === undefined) throw new Error('Request receipt reservation does not exist.');\n const prior = storedReceipt(existing, request);\n if (prior.token !== request.token) throw new Error('Request receipt token does not match.');\n if (prior.receipt.outcome === request.outcome) return prior.receipt;\n if (prior.receipt.outcome !== 'reserved') throw new Error('Request receipt has already been finished.');\n const receipt: PoRequestReceipt = { ...prior.receipt, outcome: request.outcome };\n doc.receipts[receiptAddress] = JSON.parse(JSON.stringify({ ...prior, receipt }));\n return receipt;\n }, BACKGROUND_CONTEXT),\n );\n },\n };\n\n return {\n receipts,\n close() {\n if (closing !== undefined) return closing;\n closed = true;\n closing = (async () => {\n await Promise.allSettled(operations);\n if (opened === undefined) return;\n const storage = await opened.catch(() => undefined);\n if (storage === undefined) return;\n const errors: unknown[] = [];\n try {\n await storage.session.close(BACKGROUND_CONTEXT);\n } catch (error) {\n errors.push(error);\n }\n try {\n await storage.historyLease.release();\n } catch (error) {\n errors.push(error);\n }\n if (errors.length > 0) throw new AggregateError(errors, 'Request receipt storage failed to close.');\n })();\n return closing;\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
let _earendil_works_pi_durable = require("@earendil-works/pi-durable");
|
|
2
|
+
//#region src/services/durableSession/docs.ts
|
|
3
|
+
/** Public string identity belongs to Po, not the durable numeric ID namespace. */
|
|
4
|
+
const SessionIdentityDoc = (0, _earendil_works_pi_durable.defineDoc)({
|
|
5
|
+
kind: "po.session.identity",
|
|
6
|
+
version: 1,
|
|
7
|
+
scope: "session",
|
|
8
|
+
initial: () => ({
|
|
9
|
+
id: "",
|
|
10
|
+
createdAt: 0,
|
|
11
|
+
parentSessionId: ""
|
|
12
|
+
})
|
|
13
|
+
});
|
|
14
|
+
const SessionMetadataDoc = (0, _earendil_works_pi_durable.defineDoc)({
|
|
15
|
+
kind: "po.session.metadata",
|
|
16
|
+
version: 1,
|
|
17
|
+
scope: "session",
|
|
18
|
+
initial: () => ({
|
|
19
|
+
name: "",
|
|
20
|
+
workspaceRoot: "",
|
|
21
|
+
execution: "",
|
|
22
|
+
laneName: "main",
|
|
23
|
+
groups: []
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
const FastModeDoc = (0, _earendil_works_pi_durable.defineDoc)({
|
|
27
|
+
kind: "po.fast-mode",
|
|
28
|
+
version: 1,
|
|
29
|
+
scope: "session",
|
|
30
|
+
initial: () => ({ enabled: false })
|
|
31
|
+
});
|
|
32
|
+
const AgentLockDoc = (0, _earendil_works_pi_durable.defineDoc)({
|
|
33
|
+
kind: "po.agent-lock",
|
|
34
|
+
version: 1,
|
|
35
|
+
scope: "session",
|
|
36
|
+
initial: () => ({ locked: false })
|
|
37
|
+
});
|
|
38
|
+
const LabelsDoc = (0, _earendil_works_pi_durable.defineDoc)({
|
|
39
|
+
kind: "po.labels",
|
|
40
|
+
version: 1,
|
|
41
|
+
scope: "session",
|
|
42
|
+
initial: () => ({ labels: {} })
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Profile identity entries of one conversation, written in the identity entry's commit, so a transcript page finds
|
|
46
|
+
* the avatar in effect without scanning backwards. Rewindable with `asOf` forks: a fork keeps only the identities
|
|
47
|
+
* written before its fork point. Sessions written before this document have no entries and show the default avatar.
|
|
48
|
+
*/
|
|
49
|
+
const IdentityHistoryDoc = (0, _earendil_works_pi_durable.defineDoc)({
|
|
50
|
+
kind: "po.identity-history",
|
|
51
|
+
version: 1,
|
|
52
|
+
scope: "conversation",
|
|
53
|
+
history: "rewindable",
|
|
54
|
+
fork: "asOf",
|
|
55
|
+
initial: () => ({ items: [] })
|
|
56
|
+
});
|
|
57
|
+
//#endregion
|
|
58
|
+
exports.AgentLockDoc = AgentLockDoc;
|
|
59
|
+
exports.FastModeDoc = FastModeDoc;
|
|
60
|
+
exports.IdentityHistoryDoc = IdentityHistoryDoc;
|
|
61
|
+
exports.LabelsDoc = LabelsDoc;
|
|
62
|
+
exports.SessionIdentityDoc = SessionIdentityDoc;
|
|
63
|
+
exports.SessionMetadataDoc = SessionMetadataDoc;
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=docs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableSession/docs.ts"],"sourcesContent":["import type { JsonValue } from '@earendil-works/chord';\nimport { defineDoc } from '@earendil-works/pi-durable';\n\n/** Public string identity belongs to Po, not the durable numeric ID namespace. */\nexport const SessionIdentityDoc = defineDoc({\n kind: 'po.session.identity',\n version: 1,\n scope: 'session',\n initial: () => ({ id: '', createdAt: 0, parentSessionId: '' }),\n});\nexport const SessionMetadataDoc = defineDoc({\n kind: 'po.session.metadata',\n version: 1,\n scope: 'session',\n // `groups` arrived after version 1 shipped: older sessions have no field, so readers default it.\n initial: () => ({ name: '', workspaceRoot: '', execution: '', laneName: 'main', groups: [] as string[] }),\n});\nexport const FastModeDoc = defineDoc({\n kind: 'po.fast-mode',\n version: 1,\n scope: 'session',\n initial: (): { enabled: boolean } => ({ enabled: false }),\n});\n// Blocks local agent turns so a remote MCP agent can work without the local model acting.\nexport const AgentLockDoc = defineDoc({\n kind: 'po.agent-lock',\n version: 1,\n scope: 'session',\n initial: (): { locked: boolean } => ({ locked: false }),\n});\nexport const LabelsDoc = defineDoc({\n kind: 'po.labels',\n version: 1,\n scope: 'session',\n initial: () => ({ labels: {} as Record<string, string> }),\n});\nexport type IdentityHistory = { items: { seq: number; data: JsonValue }[] };\n/**\n * Profile identity entries of one conversation, written in the identity entry's commit, so a transcript page finds\n * the avatar in effect without scanning backwards. Rewindable with `asOf` forks: a fork keeps only the identities\n * written before its fork point. Sessions written before this document have no entries and show the default avatar.\n */\nexport const IdentityHistoryDoc = defineDoc({\n kind: 'po.identity-history',\n version: 1,\n scope: 'conversation',\n history: 'rewindable',\n fork: 'asOf',\n initial: (): IdentityHistory => ({ items: [] }),\n});\n"],"mappings":";;;AAIA,MAAa,sBAAA,GAAqBA,2BAAAA,UAAAA,CAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,IAAI;EAAI,WAAW;EAAG,iBAAiB;CAAG;AAC9D,CAAC;AACD,MAAa,sBAAA,GAAqBA,2BAAAA,UAAAA,CAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CAEP,gBAAgB;EAAE,MAAM;EAAI,eAAe;EAAI,WAAW;EAAI,UAAU;EAAQ,QAAQ,CAAC;CAAc;AACzG,CAAC;AACD,MAAa,eAAA,GAAcA,2BAAAA,UAAAA,CAAU;CACnC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAsC,EAAE,SAAS,MAAM;AACzD,CAAC;AAED,MAAa,gBAAA,GAAeA,2BAAAA,UAAAA,CAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAqC,EAAE,QAAQ,MAAM;AACvD,CAAC;AACD,MAAa,aAAA,GAAYA,2BAAAA,UAAAA,CAAU;CACjC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,QAAQ,CAAC,EAA4B;AACzD,CAAC;;;;;;AAOD,MAAa,sBAAA,GAAqBA,2BAAAA,UAAAA,CAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,SAAS;CACT,MAAM;CACN,gBAAiC,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { JsonValue } from "@earendil-works/chord";
|
|
2
|
+
//#region src/services/durableSession/docs.d.ts
|
|
3
|
+
/** Public string identity belongs to Po, not the durable numeric ID namespace. */
|
|
4
|
+
export declare const SessionIdentityDoc: import("@earendil-works/pi-durable").SessionDocToken<{
|
|
5
|
+
id: string;
|
|
6
|
+
createdAt: number;
|
|
7
|
+
parentSessionId: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const SessionMetadataDoc: import("@earendil-works/pi-durable").SessionDocToken<{
|
|
10
|
+
name: string;
|
|
11
|
+
workspaceRoot: string;
|
|
12
|
+
execution: string;
|
|
13
|
+
laneName: string;
|
|
14
|
+
groups: string[];
|
|
15
|
+
}>;
|
|
16
|
+
//#endregion
|
|
17
|
+
//# sourceMappingURL=docs.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.mts","names":[],"sources":["../../../../src/services/durableSession/docs.ts"],"mappings":";;;qBAIa,yDAAkB;;;;;qBAMlB,yDAAkB;;;;;EAKiE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { defineDoc } from "@earendil-works/pi-durable";
|
|
2
|
+
//#region src/services/durableSession/docs.ts
|
|
3
|
+
/** Public string identity belongs to Po, not the durable numeric ID namespace. */
|
|
4
|
+
const SessionIdentityDoc = defineDoc({
|
|
5
|
+
kind: "po.session.identity",
|
|
6
|
+
version: 1,
|
|
7
|
+
scope: "session",
|
|
8
|
+
initial: () => ({
|
|
9
|
+
id: "",
|
|
10
|
+
createdAt: 0,
|
|
11
|
+
parentSessionId: ""
|
|
12
|
+
})
|
|
13
|
+
});
|
|
14
|
+
const SessionMetadataDoc = defineDoc({
|
|
15
|
+
kind: "po.session.metadata",
|
|
16
|
+
version: 1,
|
|
17
|
+
scope: "session",
|
|
18
|
+
initial: () => ({
|
|
19
|
+
name: "",
|
|
20
|
+
workspaceRoot: "",
|
|
21
|
+
execution: "",
|
|
22
|
+
laneName: "main",
|
|
23
|
+
groups: []
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
const FastModeDoc = defineDoc({
|
|
27
|
+
kind: "po.fast-mode",
|
|
28
|
+
version: 1,
|
|
29
|
+
scope: "session",
|
|
30
|
+
initial: () => ({ enabled: false })
|
|
31
|
+
});
|
|
32
|
+
const AgentLockDoc = defineDoc({
|
|
33
|
+
kind: "po.agent-lock",
|
|
34
|
+
version: 1,
|
|
35
|
+
scope: "session",
|
|
36
|
+
initial: () => ({ locked: false })
|
|
37
|
+
});
|
|
38
|
+
const LabelsDoc = defineDoc({
|
|
39
|
+
kind: "po.labels",
|
|
40
|
+
version: 1,
|
|
41
|
+
scope: "session",
|
|
42
|
+
initial: () => ({ labels: {} })
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Profile identity entries of one conversation, written in the identity entry's commit, so a transcript page finds
|
|
46
|
+
* the avatar in effect without scanning backwards. Rewindable with `asOf` forks: a fork keeps only the identities
|
|
47
|
+
* written before its fork point. Sessions written before this document have no entries and show the default avatar.
|
|
48
|
+
*/
|
|
49
|
+
const IdentityHistoryDoc = defineDoc({
|
|
50
|
+
kind: "po.identity-history",
|
|
51
|
+
version: 1,
|
|
52
|
+
scope: "conversation",
|
|
53
|
+
history: "rewindable",
|
|
54
|
+
fork: "asOf",
|
|
55
|
+
initial: () => ({ items: [] })
|
|
56
|
+
});
|
|
57
|
+
//#endregion
|
|
58
|
+
export { AgentLockDoc, FastModeDoc, IdentityHistoryDoc, LabelsDoc, SessionIdentityDoc, SessionMetadataDoc };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=docs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.mjs","names":[],"sources":["../../../../src/services/durableSession/docs.ts"],"sourcesContent":["import type { JsonValue } from '@earendil-works/chord';\nimport { defineDoc } from '@earendil-works/pi-durable';\n\n/** Public string identity belongs to Po, not the durable numeric ID namespace. */\nexport const SessionIdentityDoc = defineDoc({\n kind: 'po.session.identity',\n version: 1,\n scope: 'session',\n initial: () => ({ id: '', createdAt: 0, parentSessionId: '' }),\n});\nexport const SessionMetadataDoc = defineDoc({\n kind: 'po.session.metadata',\n version: 1,\n scope: 'session',\n // `groups` arrived after version 1 shipped: older sessions have no field, so readers default it.\n initial: () => ({ name: '', workspaceRoot: '', execution: '', laneName: 'main', groups: [] as string[] }),\n});\nexport const FastModeDoc = defineDoc({\n kind: 'po.fast-mode',\n version: 1,\n scope: 'session',\n initial: (): { enabled: boolean } => ({ enabled: false }),\n});\n// Blocks local agent turns so a remote MCP agent can work without the local model acting.\nexport const AgentLockDoc = defineDoc({\n kind: 'po.agent-lock',\n version: 1,\n scope: 'session',\n initial: (): { locked: boolean } => ({ locked: false }),\n});\nexport const LabelsDoc = defineDoc({\n kind: 'po.labels',\n version: 1,\n scope: 'session',\n initial: () => ({ labels: {} as Record<string, string> }),\n});\nexport type IdentityHistory = { items: { seq: number; data: JsonValue }[] };\n/**\n * Profile identity entries of one conversation, written in the identity entry's commit, so a transcript page finds\n * the avatar in effect without scanning backwards. Rewindable with `asOf` forks: a fork keeps only the identities\n * written before its fork point. Sessions written before this document have no entries and show the default avatar.\n */\nexport const IdentityHistoryDoc = defineDoc({\n kind: 'po.identity-history',\n version: 1,\n scope: 'conversation',\n history: 'rewindable',\n fork: 'asOf',\n initial: (): IdentityHistory => ({ items: [] }),\n});\n"],"mappings":";;;AAIA,MAAa,qBAAqB,UAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,IAAI;EAAI,WAAW;EAAG,iBAAiB;CAAG;AAC9D,CAAC;AACD,MAAa,qBAAqB,UAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CAEP,gBAAgB;EAAE,MAAM;EAAI,eAAe;EAAI,WAAW;EAAI,UAAU;EAAQ,QAAQ,CAAC;CAAc;AACzG,CAAC;AACD,MAAa,cAAc,UAAU;CACnC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAsC,EAAE,SAAS,MAAM;AACzD,CAAC;AAED,MAAa,eAAe,UAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAqC,EAAE,QAAQ,MAAM;AACvD,CAAC;AACD,MAAa,YAAY,UAAU;CACjC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,QAAQ,CAAC,EAA4B;AACzD,CAAC;;;;;;AAOD,MAAa,qBAAqB,UAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,SAAS;CACT,MAAM;CACN,gBAAiC,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const require_docs = require("./docs.cjs");
|
|
2
|
+
//#region src/services/durableSession/index.ts
|
|
3
|
+
/** The directory every durable session journal lives in, under the sessions root. */
|
|
4
|
+
const DURABLE_DIRECTORY = "durable-v1";
|
|
5
|
+
/** Stamps a new session's identity, or checks an existing one matches the requested id. */
|
|
6
|
+
async function initializeSessionIdentity(session, request, context) {
|
|
7
|
+
const identity = await session.snapshot(require_docs.SessionIdentityDoc, context);
|
|
8
|
+
if (request.existing && (!identity || identity.id !== request.id)) throw new Error("SQLite session id does not match the requested session");
|
|
9
|
+
if (request.existing) return;
|
|
10
|
+
await session.commit(async (tx) => {
|
|
11
|
+
const doc = await tx.doc(require_docs.SessionIdentityDoc);
|
|
12
|
+
doc.id = request.id;
|
|
13
|
+
doc.createdAt = Date.now();
|
|
14
|
+
doc.parentSessionId = request.parentSessionId ?? "";
|
|
15
|
+
}, context);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
exports.DURABLE_DIRECTORY = DURABLE_DIRECTORY;
|
|
19
|
+
exports.initializeSessionIdentity = initializeSessionIdentity;
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["SessionIdentityDoc"],"sources":["../../../../src/services/durableSession/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport type { Session } from '@earendil-works/pi-durable';\n\nimport { SessionIdentityDoc } from './docs';\n\n/** The directory every durable session journal lives in, under the sessions root. */\nexport const DURABLE_DIRECTORY = 'durable-v1';\n/** Stamps a new session's identity, or checks an existing one matches the requested id. */\nexport async function initializeSessionIdentity(\n session: Session,\n request: { readonly id: string; readonly existing: boolean; readonly parentSessionId?: string },\n context: Context,\n): Promise<void> {\n const identity = await session.snapshot(SessionIdentityDoc, context);\n if (request.existing && (!identity || identity.id !== request.id))\n throw new Error('SQLite session id does not match the requested session');\n if (request.existing) return;\n await session.commit(async (tx) => {\n const doc = await tx.doc(SessionIdentityDoc);\n doc.id = request.id;\n doc.createdAt = Date.now();\n doc.parentSessionId = request.parentSessionId ?? '';\n }, context);\n}\n"],"mappings":";;;AAMA,MAAa,oBAAoB;;AAEjC,eAAsB,0BACpB,SACA,SACA,SACe;CACf,MAAM,WAAW,MAAM,QAAQ,SAASA,aAAAA,oBAAoB,OAAO;CACnE,IAAI,QAAQ,aAAa,CAAC,YAAY,SAAS,OAAO,QAAQ,KAC5D,MAAM,IAAI,MAAM,wDAAwD;CAC1E,IAAI,QAAQ,UAAU;CACtB,MAAM,QAAQ,OAAO,OAAO,OAAO;EACjC,MAAM,MAAM,MAAM,GAAG,IAAIA,aAAAA,kBAAkB;EAC3C,IAAI,KAAK,QAAQ;EACjB,IAAI,YAAY,KAAK,IAAI;EACzB,IAAI,kBAAkB,QAAQ,mBAAmB;CACnD,GAAG,OAAO;AACZ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Session } from "@earendil-works/pi-durable";
|
|
2
|
+
import { Context } from "@earendil-works/chord";
|
|
3
|
+
//#region src/services/durableSession/index.d.ts
|
|
4
|
+
/** The directory every durable session journal lives in, under the sessions root. */
|
|
5
|
+
export declare const DURABLE_DIRECTORY = "durable-v1";
|
|
6
|
+
/** Stamps a new session's identity, or checks an existing one matches the requested id. */
|
|
7
|
+
export declare function initializeSessionIdentity(session: Session, request: {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly existing: boolean;
|
|
10
|
+
readonly parentSessionId?: string;
|
|
11
|
+
}, context: Context): Promise<void>;
|
|
12
|
+
//#endregion
|
|
13
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/durableSession/index.ts"],"mappings":";;;;qBAMa;;wBAES,0BACpB,SAAS,SACT;WAAoB;WAAqB;WAA4B;GACrE,SAAS,UACR"}
|