@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,20 @@
|
|
|
1
|
+
import { SessionIdentityDoc } from "./docs.mjs";
|
|
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(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(SessionIdentityDoc);
|
|
12
|
+
doc.id = request.id;
|
|
13
|
+
doc.createdAt = Date.now();
|
|
14
|
+
doc.parentSessionId = request.parentSessionId ?? "";
|
|
15
|
+
}, context);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DURABLE_DIRECTORY, initializeSessionIdentity };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"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,SAAS,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,IAAI,kBAAkB;EAC3C,IAAI,KAAK,QAAQ;EACjB,IAAI,YAAY,KAAK,IAAI;EACzB,IAAI,kBAAkB,QAAQ,mBAAmB;CACnD,GAAG,OAAO;AACZ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/services/durableSubagents/docs.ts
|
|
2
|
+
/** This session's child runs by run ID, and the child conversations of reported runs dropped past the cap. */
|
|
3
|
+
const SubagentsDoc = (0, require("@earendil-works/pi-durable").defineDoc)({
|
|
4
|
+
kind: "po.subagents.identity",
|
|
5
|
+
version: 1,
|
|
6
|
+
scope: "session",
|
|
7
|
+
initial: () => ({
|
|
8
|
+
runs: {},
|
|
9
|
+
retired: []
|
|
10
|
+
})
|
|
11
|
+
});
|
|
12
|
+
//#endregion
|
|
13
|
+
exports.SubagentsDoc = SubagentsDoc;
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=docs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableSubagents/docs.ts"],"sourcesContent":["import { defineDoc, type JsonObject } from '@earendil-works/pi-durable';\n\n/** One child run in its parent's Harness, kept so it can be re-attached after a restart. */\nexport type StoredSubagent = {\n conversationId: number;\n anchorTaskId: number;\n /** Request ID of the task input given to the child. */\n inputRequestId: string;\n /** The launcher's request without its live parts; dropped once the run is reported. */\n request: JsonObject | null;\n /** Set once the run's completion reached its launcher. */\n reported: boolean;\n /** Kept from the request once it is reported, so a finished run still has a status. */\n agent?: string;\n task?: string;\n /** How the run ended, when its launcher reported it. */\n state?: 'completed' | 'failed' | 'stopped';\n};\n\n/** This session's child runs by run ID, and the child conversations of reported runs dropped past the cap. */\nexport const SubagentsDoc = defineDoc({\n kind: 'po.subagents.identity',\n version: 1,\n scope: 'session',\n initial: () => ({ runs: {} as Record<string, StoredSubagent>, retired: [] as number[] }),\n});\n"],"mappings":";;AAoBA,MAAa,gBAAA,uCAAeA,CAAAA,CAAAA,UAAAA,CAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,MAAM,CAAC;EAAqC,SAAS,CAAC;CAAc;AACxF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineDoc } from "@earendil-works/pi-durable";
|
|
2
|
+
//#region src/services/durableSubagents/docs.ts
|
|
3
|
+
/** This session's child runs by run ID, and the child conversations of reported runs dropped past the cap. */
|
|
4
|
+
const SubagentsDoc = defineDoc({
|
|
5
|
+
kind: "po.subagents.identity",
|
|
6
|
+
version: 1,
|
|
7
|
+
scope: "session",
|
|
8
|
+
initial: () => ({
|
|
9
|
+
runs: {},
|
|
10
|
+
retired: []
|
|
11
|
+
})
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
export { SubagentsDoc };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=docs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.mjs","names":[],"sources":["../../../../src/services/durableSubagents/docs.ts"],"sourcesContent":["import { defineDoc, type JsonObject } from '@earendil-works/pi-durable';\n\n/** One child run in its parent's Harness, kept so it can be re-attached after a restart. */\nexport type StoredSubagent = {\n conversationId: number;\n anchorTaskId: number;\n /** Request ID of the task input given to the child. */\n inputRequestId: string;\n /** The launcher's request without its live parts; dropped once the run is reported. */\n request: JsonObject | null;\n /** Set once the run's completion reached its launcher. */\n reported: boolean;\n /** Kept from the request once it is reported, so a finished run still has a status. */\n agent?: string;\n task?: string;\n /** How the run ended, when its launcher reported it. */\n state?: 'completed' | 'failed' | 'stopped';\n};\n\n/** This session's child runs by run ID, and the child conversations of reported runs dropped past the cap. */\nexport const SubagentsDoc = defineDoc({\n kind: 'po.subagents.identity',\n version: 1,\n scope: 'session',\n initial: () => ({ runs: {} as Record<string, StoredSubagent>, retired: [] as number[] }),\n});\n"],"mappings":";;;AAoBA,MAAa,eAAe,UAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,MAAM,CAAC;EAAqC,SAAS,CAAC;CAAc;AACxF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const require_tasks = require("./tasks.cjs");
|
|
2
|
+
//#region src/services/durableSubagents/extension.ts
|
|
3
|
+
/** Installed in every Harness so a live anchor's definition resolves after a restart. */
|
|
4
|
+
const SubagentsExtension = (0, require("@earendil-works/pi-durable").defineExtension)({
|
|
5
|
+
name: "po.subagents",
|
|
6
|
+
tasks: [require_tasks.SubagentAnchorTask]
|
|
7
|
+
});
|
|
8
|
+
//#endregion
|
|
9
|
+
exports.SubagentsExtension = SubagentsExtension;
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=extension.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.cjs","names":["defineExtension","SubagentAnchorTask"],"sources":["../../../../src/services/durableSubagents/extension.ts"],"sourcesContent":["import { defineExtension } from '@earendil-works/pi-durable';\n\nimport { SubagentAnchorTask } from './tasks';\n\n/** Installed in every Harness so a live anchor's definition resolves after a restart. */\nexport const SubagentsExtension = defineExtension({ name: 'po.subagents', tasks: [SubagentAnchorTask] });\n"],"mappings":";;;AAKA,MAAa,sBAAA,uCAAqBA,CAAAA,CAAAA,gBAAAA,CAAgB;CAAE,MAAM;CAAgB,OAAO,CAACC,cAAAA,kBAAkB;AAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SubagentAnchorTask } from "./tasks.mjs";
|
|
2
|
+
import { defineExtension } from "@earendil-works/pi-durable";
|
|
3
|
+
//#region src/services/durableSubagents/extension.ts
|
|
4
|
+
/** Installed in every Harness so a live anchor's definition resolves after a restart. */
|
|
5
|
+
const SubagentsExtension = defineExtension({
|
|
6
|
+
name: "po.subagents",
|
|
7
|
+
tasks: [SubagentAnchorTask]
|
|
8
|
+
});
|
|
9
|
+
//#endregion
|
|
10
|
+
export { SubagentsExtension };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=extension.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.mjs","names":[],"sources":["../../../../src/services/durableSubagents/extension.ts"],"sourcesContent":["import { defineExtension } from '@earendil-works/pi-durable';\n\nimport { SubagentAnchorTask } from './tasks';\n\n/** Installed in every Harness so a live anchor's definition resolves after a restart. */\nexport const SubagentsExtension = defineExtension({ name: 'po.subagents', tasks: [SubagentAnchorTask] });\n"],"mappings":";;;;AAKA,MAAa,qBAAqB,gBAAgB;CAAE,MAAM;CAAgB,OAAO,CAAC,kBAAkB;AAAE,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
const require_docs = require("./docs.cjs");
|
|
2
|
+
const require_tasks = require("./tasks.cjs");
|
|
3
|
+
const require_extension = require("./extension.cjs");
|
|
4
|
+
//#region src/services/durableSubagents/index.ts
|
|
5
|
+
/**
|
|
6
|
+
* Creates one run's child conversation, owned by a background anchor of `parent`, and records the run, in one
|
|
7
|
+
* commit. A fresh child starts as a copy of the parent's agent; a fork also keeps its history through `forkAt`.
|
|
8
|
+
*/
|
|
9
|
+
async function createSubagentConversation(harness, parent, launch, context) {
|
|
10
|
+
const { id, stored } = await parent.commit(async (tx) => {
|
|
11
|
+
const anchor = await tx.createTask(require_tasks.SubagentAnchorTask, null, {
|
|
12
|
+
ownership: { kind: "conversation" },
|
|
13
|
+
background: true
|
|
14
|
+
});
|
|
15
|
+
const ownership = {
|
|
16
|
+
kind: "task",
|
|
17
|
+
taskId: anchor
|
|
18
|
+
};
|
|
19
|
+
const child = launch.forkAt === void 0 ? await tx.createConversation({ ownership }) : await tx.forkConversation(parent.id, launch.forkAt, { ownership });
|
|
20
|
+
const runs = (await tx.doc(require_docs.SubagentsDoc)).runs;
|
|
21
|
+
if (Object.hasOwn(runs, launch.runId)) throw new Error(`Child run '${launch.runId}' already exists.`);
|
|
22
|
+
const record = {
|
|
23
|
+
conversationId: child.id,
|
|
24
|
+
anchorTaskId: anchor,
|
|
25
|
+
inputRequestId: `subagent:${anchor}:1`,
|
|
26
|
+
request: launch.request,
|
|
27
|
+
reported: false
|
|
28
|
+
};
|
|
29
|
+
runs[launch.runId] = record;
|
|
30
|
+
return {
|
|
31
|
+
id: child.id,
|
|
32
|
+
stored: record
|
|
33
|
+
};
|
|
34
|
+
}, context);
|
|
35
|
+
const conversation = await harness.conversation(id, context);
|
|
36
|
+
if (!conversation) throw new Error(`Child conversation ${id} is unavailable.`);
|
|
37
|
+
return {
|
|
38
|
+
conversation,
|
|
39
|
+
stored
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async function readSubagents(harness, context) {
|
|
43
|
+
return (await harness.snapshot(require_docs.SubagentsDoc, context))?.runs ?? {};
|
|
44
|
+
}
|
|
45
|
+
const MAX_REPORTED_RUNS = 256;
|
|
46
|
+
/**
|
|
47
|
+
* Marks a run reported and drops the request only a re-attach needed, keeping its agent, task and outcome. Returns
|
|
48
|
+
* the run's child conversation, or nothing when the run was already reported or is unknown.
|
|
49
|
+
*/
|
|
50
|
+
async function markSubagentReported(harness, runId, context, outcome, maxReported = MAX_REPORTED_RUNS) {
|
|
51
|
+
return harness.commit(async (tx) => {
|
|
52
|
+
const doc = await tx.doc(require_docs.SubagentsDoc);
|
|
53
|
+
const run = doc.runs[runId];
|
|
54
|
+
if (!run || run.reported) return void 0;
|
|
55
|
+
run.reported = true;
|
|
56
|
+
if (typeof run.request?.agent === "string") run.agent = run.request.agent;
|
|
57
|
+
if (typeof run.request?.task === "string") run.task = run.request.task;
|
|
58
|
+
if (outcome) run.state = outcome.state;
|
|
59
|
+
run.request = null;
|
|
60
|
+
const reported = Object.entries(doc.runs).filter(([, stored]) => stored.reported);
|
|
61
|
+
const dropped = reported.slice(0, Math.max(0, reported.length - maxReported));
|
|
62
|
+
if (dropped.length > 0) {
|
|
63
|
+
doc.retired = [...doc.retired ?? [], ...dropped.map(([, stored]) => stored.conversationId)];
|
|
64
|
+
for (const [id] of dropped) delete doc.runs[id];
|
|
65
|
+
}
|
|
66
|
+
return run.conversationId;
|
|
67
|
+
}, context);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Stops a run nothing could re-attach, before the Harness resumes: its child would otherwise run on without a
|
|
71
|
+
* launcher. Only marks its live tasks and withdraws its queued inputs, so scheduling stays paused, then reports it
|
|
72
|
+
* failed. Returns its child conversation, or nothing for an unknown or reported run.
|
|
73
|
+
*/
|
|
74
|
+
async function abandonSubagent(harness, runId, context) {
|
|
75
|
+
const run = (await readSubagents(harness, context))[runId];
|
|
76
|
+
if (!run || run.reported) return void 0;
|
|
77
|
+
const { tasks, submissions } = await harness.inspect(context);
|
|
78
|
+
for (const submission of submissions) if (submission.conversationId === run.conversationId && submission.status === "queued") await harness.abortSubmission(submission.id, context, submission.conversationId);
|
|
79
|
+
for (const task of tasks) if (task.record.conversationId === run.conversationId) await harness.abortTask(task.record.id, context);
|
|
80
|
+
return markSubagentReported(harness, runId, context, { state: "failed" });
|
|
81
|
+
}
|
|
82
|
+
/** Child conversations of this session; their launcher reports what they spend, not the parent. */
|
|
83
|
+
async function subagentConversations(harness, context) {
|
|
84
|
+
const doc = await harness.snapshot(require_docs.SubagentsDoc, context);
|
|
85
|
+
return [...Object.values(doc?.runs ?? {}).map((run) => run.conversationId), ...doc?.retired ?? []].map((id) => id);
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
exports.SubagentsExtension = require_extension.SubagentsExtension;
|
|
89
|
+
exports.abandonSubagent = abandonSubagent;
|
|
90
|
+
exports.createSubagentConversation = createSubagentConversation;
|
|
91
|
+
exports.markSubagentReported = markSubagentReported;
|
|
92
|
+
exports.readSubagents = readSubagents;
|
|
93
|
+
exports.subagentConversations = subagentConversations;
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["SubagentAnchorTask","SubagentsDoc"],"sources":["../../../../src/services/durableSubagents/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport type { Conversation, ConversationId, EntryId, Harness, JsonObject } from '@earendil-works/pi-durable';\n\nimport { SubagentsDoc, type StoredSubagent } from './docs';\nimport { SubagentAnchorTask } from './tasks';\n\nexport { SubagentsDoc, type StoredSubagent } from './docs';\nexport { SubagentsExtension } from './extension';\n\nexport interface SubagentLaunch {\n readonly runId: string;\n readonly request: JsonObject;\n /** Start from the parent's history through this entry instead of a fresh copy of its agent. */\n readonly forkAt?: EntryId;\n}\n\n/**\n * Creates one run's child conversation, owned by a background anchor of `parent`, and records the run, in one\n * commit. A fresh child starts as a copy of the parent's agent; a fork also keeps its history through `forkAt`.\n */\nexport async function createSubagentConversation(\n harness: Harness,\n parent: Conversation,\n launch: SubagentLaunch,\n context: Context,\n): Promise<{ conversation: Conversation; stored: StoredSubagent }> {\n const { id, stored } = await parent.commit(async (tx) => {\n const anchor = await tx.createTask(SubagentAnchorTask, null, {\n ownership: { kind: 'conversation' },\n background: true,\n });\n const ownership = { kind: 'task', taskId: anchor } as const;\n const child =\n launch.forkAt === undefined\n ? await tx.createConversation({ ownership })\n : await tx.forkConversation(parent.id, launch.forkAt, { ownership });\n const runs = (await tx.doc(SubagentsDoc)).runs;\n if (Object.hasOwn(runs, launch.runId)) throw new Error(`Child run '${launch.runId}' already exists.`);\n const record: StoredSubagent = {\n conversationId: child.id,\n anchorTaskId: anchor,\n // One task input per anchor, so a retried admission never posts it twice.\n inputRequestId: `subagent:${anchor}:1`,\n request: launch.request,\n reported: false,\n };\n runs[launch.runId] = record;\n return { id: child.id, stored: record };\n }, context);\n const conversation = await harness.conversation(id, context);\n if (!conversation) throw new Error(`Child conversation ${id} is unavailable.`);\n return { conversation, stored };\n}\n\nexport async function readSubagents(\n harness: Harness,\n context: Context,\n): Promise<Readonly<Record<string, StoredSubagent>>> {\n return (await harness.snapshot(SubagentsDoc, context))?.runs ?? {};\n}\n\n// ponytail: past this many reported runs the oldest records go and only their child conversation IDs stay, so a\n// long session's doc stays small while its usage still leaves those children out. Upgrade: a doc family per run.\nconst MAX_REPORTED_RUNS = 256;\n\n/**\n * Marks a run reported and drops the request only a re-attach needed, keeping its agent, task and outcome. Returns\n * the run's child conversation, or nothing when the run was already reported or is unknown.\n */\nexport async function markSubagentReported(\n harness: Harness,\n runId: string,\n context: Context,\n outcome?: { readonly state: NonNullable<StoredSubagent['state']> },\n maxReported = MAX_REPORTED_RUNS,\n): Promise<ConversationId | undefined> {\n return harness.commit(async (tx) => {\n const doc = await tx.doc(SubagentsDoc);\n const run = doc.runs[runId];\n if (!run || run.reported) return undefined;\n run.reported = true;\n if (typeof run.request?.agent === 'string') run.agent = run.request.agent;\n if (typeof run.request?.task === 'string') run.task = run.request.task;\n if (outcome) run.state = outcome.state;\n run.request = null;\n // Object keys keep insertion order, so the first reported runs are the oldest.\n const reported = Object.entries(doc.runs).filter(([, stored]) => stored.reported);\n const dropped = reported.slice(0, Math.max(0, reported.length - maxReported));\n if (dropped.length > 0) {\n doc.retired = [...(doc.retired ?? []), ...dropped.map(([, stored]) => stored.conversationId)];\n for (const [id] of dropped) delete doc.runs[id];\n }\n return run.conversationId as ConversationId;\n }, context);\n}\n\n/**\n * Stops a run nothing could re-attach, before the Harness resumes: its child would otherwise run on without a\n * launcher. Only marks its live tasks and withdraws its queued inputs, so scheduling stays paused, then reports it\n * failed. Returns its child conversation, or nothing for an unknown or reported run.\n */\nexport async function abandonSubagent(\n harness: Harness,\n runId: string,\n context: Context,\n): Promise<ConversationId | undefined> {\n const run = (await readSubagents(harness, context))[runId];\n if (!run || run.reported) return undefined;\n const { tasks, submissions } = await harness.inspect(context);\n for (const submission of submissions)\n if (submission.conversationId === run.conversationId && submission.status === 'queued')\n await harness.abortSubmission(submission.id, context, submission.conversationId);\n for (const task of tasks)\n if (task.record.conversationId === run.conversationId) await harness.abortTask(task.record.id, context);\n return markSubagentReported(harness, runId, context, { state: 'failed' });\n}\n\n/** Child conversations of this session; their launcher reports what they spend, not the parent. */\nexport async function subagentConversations(harness: Harness, context: Context): Promise<ConversationId[]> {\n const doc = await harness.snapshot(SubagentsDoc, context);\n return [...Object.values(doc?.runs ?? {}).map((run) => run.conversationId), ...(doc?.retired ?? [])].map(\n (id) => id as ConversationId,\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { SubagentsDoc } from "./docs.mjs";
|
|
2
|
+
import { SubagentAnchorTask } from "./tasks.mjs";
|
|
3
|
+
import { SubagentsExtension } from "./extension.mjs";
|
|
4
|
+
//#region src/services/durableSubagents/index.ts
|
|
5
|
+
/**
|
|
6
|
+
* Creates one run's child conversation, owned by a background anchor of `parent`, and records the run, in one
|
|
7
|
+
* commit. A fresh child starts as a copy of the parent's agent; a fork also keeps its history through `forkAt`.
|
|
8
|
+
*/
|
|
9
|
+
async function createSubagentConversation(harness, parent, launch, context) {
|
|
10
|
+
const { id, stored } = await parent.commit(async (tx) => {
|
|
11
|
+
const anchor = await tx.createTask(SubagentAnchorTask, null, {
|
|
12
|
+
ownership: { kind: "conversation" },
|
|
13
|
+
background: true
|
|
14
|
+
});
|
|
15
|
+
const ownership = {
|
|
16
|
+
kind: "task",
|
|
17
|
+
taskId: anchor
|
|
18
|
+
};
|
|
19
|
+
const child = launch.forkAt === void 0 ? await tx.createConversation({ ownership }) : await tx.forkConversation(parent.id, launch.forkAt, { ownership });
|
|
20
|
+
const runs = (await tx.doc(SubagentsDoc)).runs;
|
|
21
|
+
if (Object.hasOwn(runs, launch.runId)) throw new Error(`Child run '${launch.runId}' already exists.`);
|
|
22
|
+
const record = {
|
|
23
|
+
conversationId: child.id,
|
|
24
|
+
anchorTaskId: anchor,
|
|
25
|
+
inputRequestId: `subagent:${anchor}:1`,
|
|
26
|
+
request: launch.request,
|
|
27
|
+
reported: false
|
|
28
|
+
};
|
|
29
|
+
runs[launch.runId] = record;
|
|
30
|
+
return {
|
|
31
|
+
id: child.id,
|
|
32
|
+
stored: record
|
|
33
|
+
};
|
|
34
|
+
}, context);
|
|
35
|
+
const conversation = await harness.conversation(id, context);
|
|
36
|
+
if (!conversation) throw new Error(`Child conversation ${id} is unavailable.`);
|
|
37
|
+
return {
|
|
38
|
+
conversation,
|
|
39
|
+
stored
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async function readSubagents(harness, context) {
|
|
43
|
+
return (await harness.snapshot(SubagentsDoc, context))?.runs ?? {};
|
|
44
|
+
}
|
|
45
|
+
const MAX_REPORTED_RUNS = 256;
|
|
46
|
+
/**
|
|
47
|
+
* Marks a run reported and drops the request only a re-attach needed, keeping its agent, task and outcome. Returns
|
|
48
|
+
* the run's child conversation, or nothing when the run was already reported or is unknown.
|
|
49
|
+
*/
|
|
50
|
+
async function markSubagentReported(harness, runId, context, outcome, maxReported = MAX_REPORTED_RUNS) {
|
|
51
|
+
return harness.commit(async (tx) => {
|
|
52
|
+
const doc = await tx.doc(SubagentsDoc);
|
|
53
|
+
const run = doc.runs[runId];
|
|
54
|
+
if (!run || run.reported) return void 0;
|
|
55
|
+
run.reported = true;
|
|
56
|
+
if (typeof run.request?.agent === "string") run.agent = run.request.agent;
|
|
57
|
+
if (typeof run.request?.task === "string") run.task = run.request.task;
|
|
58
|
+
if (outcome) run.state = outcome.state;
|
|
59
|
+
run.request = null;
|
|
60
|
+
const reported = Object.entries(doc.runs).filter(([, stored]) => stored.reported);
|
|
61
|
+
const dropped = reported.slice(0, Math.max(0, reported.length - maxReported));
|
|
62
|
+
if (dropped.length > 0) {
|
|
63
|
+
doc.retired = [...doc.retired ?? [], ...dropped.map(([, stored]) => stored.conversationId)];
|
|
64
|
+
for (const [id] of dropped) delete doc.runs[id];
|
|
65
|
+
}
|
|
66
|
+
return run.conversationId;
|
|
67
|
+
}, context);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Stops a run nothing could re-attach, before the Harness resumes: its child would otherwise run on without a
|
|
71
|
+
* launcher. Only marks its live tasks and withdraws its queued inputs, so scheduling stays paused, then reports it
|
|
72
|
+
* failed. Returns its child conversation, or nothing for an unknown or reported run.
|
|
73
|
+
*/
|
|
74
|
+
async function abandonSubagent(harness, runId, context) {
|
|
75
|
+
const run = (await readSubagents(harness, context))[runId];
|
|
76
|
+
if (!run || run.reported) return void 0;
|
|
77
|
+
const { tasks, submissions } = await harness.inspect(context);
|
|
78
|
+
for (const submission of submissions) if (submission.conversationId === run.conversationId && submission.status === "queued") await harness.abortSubmission(submission.id, context, submission.conversationId);
|
|
79
|
+
for (const task of tasks) if (task.record.conversationId === run.conversationId) await harness.abortTask(task.record.id, context);
|
|
80
|
+
return markSubagentReported(harness, runId, context, { state: "failed" });
|
|
81
|
+
}
|
|
82
|
+
/** Child conversations of this session; their launcher reports what they spend, not the parent. */
|
|
83
|
+
async function subagentConversations(harness, context) {
|
|
84
|
+
const doc = await harness.snapshot(SubagentsDoc, context);
|
|
85
|
+
return [...Object.values(doc?.runs ?? {}).map((run) => run.conversationId), ...doc?.retired ?? []].map((id) => id);
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { SubagentsExtension, abandonSubagent, createSubagentConversation, markSubagentReported, readSubagents, subagentConversations };
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/durableSubagents/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport type { Conversation, ConversationId, EntryId, Harness, JsonObject } from '@earendil-works/pi-durable';\n\nimport { SubagentsDoc, type StoredSubagent } from './docs';\nimport { SubagentAnchorTask } from './tasks';\n\nexport { SubagentsDoc, type StoredSubagent } from './docs';\nexport { SubagentsExtension } from './extension';\n\nexport interface SubagentLaunch {\n readonly runId: string;\n readonly request: JsonObject;\n /** Start from the parent's history through this entry instead of a fresh copy of its agent. */\n readonly forkAt?: EntryId;\n}\n\n/**\n * Creates one run's child conversation, owned by a background anchor of `parent`, and records the run, in one\n * commit. A fresh child starts as a copy of the parent's agent; a fork also keeps its history through `forkAt`.\n */\nexport async function createSubagentConversation(\n harness: Harness,\n parent: Conversation,\n launch: SubagentLaunch,\n context: Context,\n): Promise<{ conversation: Conversation; stored: StoredSubagent }> {\n const { id, stored } = await parent.commit(async (tx) => {\n const anchor = await tx.createTask(SubagentAnchorTask, null, {\n ownership: { kind: 'conversation' },\n background: true,\n });\n const ownership = { kind: 'task', taskId: anchor } as const;\n const child =\n launch.forkAt === undefined\n ? await tx.createConversation({ ownership })\n : await tx.forkConversation(parent.id, launch.forkAt, { ownership });\n const runs = (await tx.doc(SubagentsDoc)).runs;\n if (Object.hasOwn(runs, launch.runId)) throw new Error(`Child run '${launch.runId}' already exists.`);\n const record: StoredSubagent = {\n conversationId: child.id,\n anchorTaskId: anchor,\n // One task input per anchor, so a retried admission never posts it twice.\n inputRequestId: `subagent:${anchor}:1`,\n request: launch.request,\n reported: false,\n };\n runs[launch.runId] = record;\n return { id: child.id, stored: record };\n }, context);\n const conversation = await harness.conversation(id, context);\n if (!conversation) throw new Error(`Child conversation ${id} is unavailable.`);\n return { conversation, stored };\n}\n\nexport async function readSubagents(\n harness: Harness,\n context: Context,\n): Promise<Readonly<Record<string, StoredSubagent>>> {\n return (await harness.snapshot(SubagentsDoc, context))?.runs ?? {};\n}\n\n// ponytail: past this many reported runs the oldest records go and only their child conversation IDs stay, so a\n// long session's doc stays small while its usage still leaves those children out. Upgrade: a doc family per run.\nconst MAX_REPORTED_RUNS = 256;\n\n/**\n * Marks a run reported and drops the request only a re-attach needed, keeping its agent, task and outcome. Returns\n * the run's child conversation, or nothing when the run was already reported or is unknown.\n */\nexport async function markSubagentReported(\n harness: Harness,\n runId: string,\n context: Context,\n outcome?: { readonly state: NonNullable<StoredSubagent['state']> },\n maxReported = MAX_REPORTED_RUNS,\n): Promise<ConversationId | undefined> {\n return harness.commit(async (tx) => {\n const doc = await tx.doc(SubagentsDoc);\n const run = doc.runs[runId];\n if (!run || run.reported) return undefined;\n run.reported = true;\n if (typeof run.request?.agent === 'string') run.agent = run.request.agent;\n if (typeof run.request?.task === 'string') run.task = run.request.task;\n if (outcome) run.state = outcome.state;\n run.request = null;\n // Object keys keep insertion order, so the first reported runs are the oldest.\n const reported = Object.entries(doc.runs).filter(([, stored]) => stored.reported);\n const dropped = reported.slice(0, Math.max(0, reported.length - maxReported));\n if (dropped.length > 0) {\n doc.retired = [...(doc.retired ?? []), ...dropped.map(([, stored]) => stored.conversationId)];\n for (const [id] of dropped) delete doc.runs[id];\n }\n return run.conversationId as ConversationId;\n }, context);\n}\n\n/**\n * Stops a run nothing could re-attach, before the Harness resumes: its child would otherwise run on without a\n * launcher. Only marks its live tasks and withdraws its queued inputs, so scheduling stays paused, then reports it\n * failed. Returns its child conversation, or nothing for an unknown or reported run.\n */\nexport async function abandonSubagent(\n harness: Harness,\n runId: string,\n context: Context,\n): Promise<ConversationId | undefined> {\n const run = (await readSubagents(harness, context))[runId];\n if (!run || run.reported) return undefined;\n const { tasks, submissions } = await harness.inspect(context);\n for (const submission of submissions)\n if (submission.conversationId === run.conversationId && submission.status === 'queued')\n await harness.abortSubmission(submission.id, context, submission.conversationId);\n for (const task of tasks)\n if (task.record.conversationId === run.conversationId) await harness.abortTask(task.record.id, context);\n return markSubagentReported(harness, runId, context, { state: 'failed' });\n}\n\n/** Child conversations of this session; their launcher reports what they spend, not the parent. */\nexport async function subagentConversations(harness: Harness, context: Context): Promise<ConversationId[]> {\n const doc = await harness.snapshot(SubagentsDoc, context);\n return [...Object.values(doc?.runs ?? {}).map((run) => run.conversationId), ...(doc?.retired ?? [])].map(\n (id) => id as ConversationId,\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/services/durableSubagents/tasks.ts
|
|
2
|
+
/**
|
|
3
|
+
* Owns a child conversation so it outlives the parent's turns. A background task that finishes at once: the
|
|
4
|
+
* parent's Esc and idle waits stop at it, while the child keeps working and resumes with the Harness.
|
|
5
|
+
*/
|
|
6
|
+
const SubagentAnchorTask = (0, require("@earendil-works/pi-durable").defineTask)({
|
|
7
|
+
name: "po.subagents.anchor",
|
|
8
|
+
version: 1,
|
|
9
|
+
initial: () => ({ phase: "done" }),
|
|
10
|
+
phases: { done: (_anchor, runtime, context) => runtime.commit(() => ({
|
|
11
|
+
status: "terminal",
|
|
12
|
+
outcome: {
|
|
13
|
+
status: "completed",
|
|
14
|
+
result: null
|
|
15
|
+
}
|
|
16
|
+
}), context) },
|
|
17
|
+
abort: (_anchor, runtime, context) => runtime.commit(() => ({
|
|
18
|
+
status: "terminal",
|
|
19
|
+
outcome: { status: "aborted" }
|
|
20
|
+
}), context)
|
|
21
|
+
});
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.SubagentAnchorTask = SubagentAnchorTask;
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=tasks.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.cjs","names":["defineTask"],"sources":["../../../../src/services/durableSubagents/tasks.ts"],"sourcesContent":["import { defineTask } from '@earendil-works/pi-durable';\n\n/**\n * Owns a child conversation so it outlives the parent's turns. A background task that finishes at once: the\n * parent's Esc and idle waits stop at it, while the child keeps working and resumes with the Harness.\n */\nexport const SubagentAnchorTask = defineTask<null, { phase: 'done' }, null>({\n name: 'po.subagents.anchor',\n version: 1,\n initial: () => ({ phase: 'done' }),\n phases: {\n done: (_anchor, runtime, context) =>\n runtime.commit(() => ({ status: 'terminal', outcome: { status: 'completed', result: null } }), context),\n },\n abort: (_anchor, runtime, context) =>\n runtime.commit(() => ({ status: 'terminal', outcome: { status: 'aborted' } }), context),\n});\n"],"mappings":";;;;;AAMA,MAAa,sBAAA,uCAAqBA,CAAAA,CAAAA,WAAAA,CAA0C;CAC1E,MAAM;CACN,SAAS;CACT,gBAAgB,EAAE,OAAO,OAAO;CAChC,QAAQ,EACN,OAAO,SAAS,SAAS,YACvB,QAAQ,cAAc;EAAE,QAAQ;EAAY,SAAS;GAAE,QAAQ;GAAa,QAAQ;EAAK;CAAE,IAAI,OAAO,EAC1G;CACA,QAAQ,SAAS,SAAS,YACxB,QAAQ,cAAc;EAAE,QAAQ;EAAY,SAAS,EAAE,QAAQ,UAAU;CAAE,IAAI,OAAO;AAC1F,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { defineTask } from "@earendil-works/pi-durable";
|
|
2
|
+
//#region src/services/durableSubagents/tasks.ts
|
|
3
|
+
/**
|
|
4
|
+
* Owns a child conversation so it outlives the parent's turns. A background task that finishes at once: the
|
|
5
|
+
* parent's Esc and idle waits stop at it, while the child keeps working and resumes with the Harness.
|
|
6
|
+
*/
|
|
7
|
+
const SubagentAnchorTask = defineTask({
|
|
8
|
+
name: "po.subagents.anchor",
|
|
9
|
+
version: 1,
|
|
10
|
+
initial: () => ({ phase: "done" }),
|
|
11
|
+
phases: { done: (_anchor, runtime, context) => runtime.commit(() => ({
|
|
12
|
+
status: "terminal",
|
|
13
|
+
outcome: {
|
|
14
|
+
status: "completed",
|
|
15
|
+
result: null
|
|
16
|
+
}
|
|
17
|
+
}), context) },
|
|
18
|
+
abort: (_anchor, runtime, context) => runtime.commit(() => ({
|
|
19
|
+
status: "terminal",
|
|
20
|
+
outcome: { status: "aborted" }
|
|
21
|
+
}), context)
|
|
22
|
+
});
|
|
23
|
+
//#endregion
|
|
24
|
+
export { SubagentAnchorTask };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=tasks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.mjs","names":[],"sources":["../../../../src/services/durableSubagents/tasks.ts"],"sourcesContent":["import { defineTask } from '@earendil-works/pi-durable';\n\n/**\n * Owns a child conversation so it outlives the parent's turns. A background task that finishes at once: the\n * parent's Esc and idle waits stop at it, while the child keeps working and resumes with the Harness.\n */\nexport const SubagentAnchorTask = defineTask<null, { phase: 'done' }, null>({\n name: 'po.subagents.anchor',\n version: 1,\n initial: () => ({ phase: 'done' }),\n phases: {\n done: (_anchor, runtime, context) =>\n runtime.commit(() => ({ status: 'terminal', outcome: { status: 'completed', result: null } }), context),\n },\n abort: (_anchor, runtime, context) =>\n runtime.commit(() => ({ status: 'terminal', outcome: { status: 'aborted' } }), context),\n});\n"],"mappings":";;;;;;AAMA,MAAa,qBAAqB,WAA0C;CAC1E,MAAM;CACN,SAAS;CACT,gBAAgB,EAAE,OAAO,OAAO;CAChC,QAAQ,EACN,OAAO,SAAS,SAAS,YACvB,QAAQ,cAAc;EAAE,QAAQ;EAAY,SAAS;GAAE,QAAQ;GAAa,QAAQ;EAAK;CAAE,IAAI,OAAO,EAC1G;CACA,QAAQ,SAAS,SAAS,YACxB,QAAQ,cAAc;EAAE,QAAQ;EAAY,SAAS,EAAE,QAAQ,UAAU;CAAE,IAAI,OAAO;AAC1F,CAAC"}
|
|
@@ -11,10 +11,10 @@ function createHeadlessClient(options) {
|
|
|
11
11
|
client: {
|
|
12
12
|
async notify(request) {
|
|
13
13
|
if (disposed) return;
|
|
14
|
-
const data = require_notification.
|
|
14
|
+
const data = require_notification.createPoNotificationEntryData(request);
|
|
15
15
|
if (!data) throw new Error("Invalid notification request");
|
|
16
16
|
try {
|
|
17
|
-
await options.appendCustomEntry(require_notification.
|
|
17
|
+
await options.appendCustomEntry(require_notification.PO_NOTIFICATION_ENTRY_TYPE, data);
|
|
18
18
|
} catch (error) {
|
|
19
19
|
if (disposed) return;
|
|
20
20
|
options.emitFrame({
|
|
@@ -25,7 +25,7 @@ function createHeadlessClient(options) {
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
setStatus(source, text) {
|
|
28
|
-
if (disposed)
|
|
28
|
+
if (disposed) return;
|
|
29
29
|
options.emitFrame({
|
|
30
30
|
type: "extension_ui_request",
|
|
31
31
|
method: "setStatus",
|
|
@@ -72,21 +72,25 @@ function createHeadlessClient(options) {
|
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
74
|
const abort = () => finish({ value: void 0 });
|
|
75
|
+
const frame = {
|
|
76
|
+
type: "extension_ui_request",
|
|
77
|
+
id,
|
|
78
|
+
method: request.kind === "input" && request.multiline ? "editor" : request.kind,
|
|
79
|
+
title: request.title,
|
|
80
|
+
message: request.message,
|
|
81
|
+
options: labels,
|
|
82
|
+
placeholder: request.message,
|
|
83
|
+
prefill: request.initialValue
|
|
84
|
+
};
|
|
75
85
|
pending.set(id, {
|
|
86
|
+
replay(listener) {
|
|
87
|
+
if (started) listener(frame);
|
|
88
|
+
},
|
|
76
89
|
start() {
|
|
77
90
|
if (started || disposed) return;
|
|
78
91
|
started = true;
|
|
79
92
|
try {
|
|
80
|
-
options.emitFrame(
|
|
81
|
-
type: "extension_ui_request",
|
|
82
|
-
id,
|
|
83
|
-
method: request.kind === "input" && request.multiline ? "editor" : request.kind,
|
|
84
|
-
title: request.title,
|
|
85
|
-
message: request.message,
|
|
86
|
-
options: labels,
|
|
87
|
-
placeholder: request.message,
|
|
88
|
-
prefill: request.initialValue
|
|
89
|
-
});
|
|
93
|
+
options.emitFrame(frame);
|
|
90
94
|
} catch (error) {
|
|
91
95
|
finish({ error });
|
|
92
96
|
}
|
|
@@ -113,6 +117,9 @@ function createHeadlessClient(options) {
|
|
|
113
117
|
if (typeof frame.id === "string") pending.get(frame.id)?.respond(frame);
|
|
114
118
|
return true;
|
|
115
119
|
},
|
|
120
|
+
replay(listener) {
|
|
121
|
+
pending.values().next().value?.replay(listener);
|
|
122
|
+
},
|
|
116
123
|
dispose() {
|
|
117
124
|
if (disposed) return;
|
|
118
125
|
disposed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["createPoNotificationEntryData","PO_NOTIFICATION_ENTRY_TYPE","randomUUID"],"sources":["../../../../src/services/headlessClient/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { createPoNotificationEntryData, PO_NOTIFICATION_ENTRY_TYPE } from '../../exports/notification';\nimport type {\n HeadlessClientBridge,\n HeadlessClientOptions,\n PendingClientRequest,\n} from '../../types/server/headlessClient';\n\n/** Explicit client interactions over the existing browser dialog protocol. */\nexport function createHeadlessClient(options: HeadlessClientOptions): HeadlessClientBridge {\n const pending = new Map<string, PendingClientRequest>();\n let disposed = false;\n const advance = (): void => pending.values().next().value?.start();\n\n return {\n client: {\n async notify(request) {\n // Detached callbacks can outlive their session. A closed client has no recipient.\n if (disposed) return;\n const data = createPoNotificationEntryData(request);\n if (!data) throw new Error('Invalid notification request');\n try {\n await options.appendCustomEntry(PO_NOTIFICATION_ENTRY_TYPE, data);\n } catch (error) {\n if (disposed) return;\n // Callers fire notify without awaiting, often to report a journal failure. A rejection here\n // would crash the session server, so a refused append still reaches the browser live.\n options.emitFrame({\n type: 'error',\n code: 'notification_undelivered',\n error: `${data.body} (not saved to history: ${error instanceof Error ? error.message : String(error)})`,\n });\n }\n },\n setStatus(source, text) {\n // Packages clear their status while they unwind, which is after their session shut down. A\n // throw here used to abort that teardown and leak everything after it.\n if (disposed) return;\n options.emitFrame({ type: 'extension_ui_request', method: 'setStatus', statusKey: source, statusText: text });\n },\n appendComposerText(text) {\n if (disposed) throw new Error('Headless client is closed');\n options.emitFrame({ type: 'extension_ui_request', method: 'append_composer_text', id: randomUUID(), text });\n },\n request(request, signal) {\n if (disposed) return Promise.reject(new Error('Headless client is closed'));\n if (signal?.aborted) return Promise.resolve(undefined);\n if (!['confirm', 'select', 'input'].includes(request.kind)) {\n return Promise.reject(new Error('Unsupported headless client request'));\n }\n const labels = request.options?.map((option) => option.label);\n if (labels && new Set(labels).size !== labels.length) {\n return Promise.reject(new Error('Select option labels must be unique'));\n }\n const id = `headless-ui:${randomUUID()}`;\n return new Promise((resolve, reject) => {\n let started = false;\n const finish = (outcome: { value: unknown } | { error: unknown }): void => {\n if (!pending.delete(id)) return;\n signal?.removeEventListener('abort', abort);\n try {\n if (started) options.emitFrame({ type: 'extension_ui_answered', id });\n if ('error' in outcome) reject(outcome.error);\n else resolve(outcome.value);\n } catch (error) {\n reject(error);\n } finally {\n advance();\n }\n };\n const abort = (): void => finish({ value: undefined });\n const frame = {\n type: 'extension_ui_request',\n id,\n method: request.kind === 'input' && request.multiline ? 'editor' : request.kind,\n title: request.title,\n message: request.message,\n options: labels,\n placeholder: request.message,\n prefill: request.initialValue,\n };\n pending.set(id, {\n replay(listener) {\n if (started) listener(frame);\n },\n start() {\n if (started || disposed) return;\n started = true;\n try {\n options.emitFrame(frame);\n } catch (error) {\n finish({ error });\n }\n },\n respond(frame) {\n if (!started) return;\n if (frame.cancelled === true) return finish({ value: undefined });\n if (request.kind === 'confirm') {\n if (typeof frame.confirmed === 'boolean') finish({ value: frame.confirmed });\n } else if (typeof frame.value === 'string') {\n // Rich questionnaire clients return an encoded whole-answer envelope here.\n const selected = request.options?.find((option) => option.label === frame.value);\n finish({ value: selected?.value ?? frame.value });\n }\n },\n close: () => finish({ error: new Error('Headless client is closed') }),\n });\n signal?.addEventListener('abort', abort, { once: true });\n advance();\n });\n },\n },\n receive(frame) {\n if (frame.type !== 'extension_ui_response') return false;\n if (typeof frame.id === 'string') pending.get(frame.id)?.respond(frame);\n return true;\n },\n replay(listener) {\n // A focused presentation may attach after the tool has started waiting.\n // Only its current request is replayed, not answered or queued dialogs.\n pending.values().next().value?.replay(listener);\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n for (const request of pending.values()) request.close();\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PO_NOTIFICATION_ENTRY_TYPE, createPoNotificationEntryData } from "../../schemas/notification.mjs";
|
|
2
2
|
import "../../../notification.mjs";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
//#region src/services/headlessClient/index.ts
|
|
@@ -11,10 +11,10 @@ function createHeadlessClient(options) {
|
|
|
11
11
|
client: {
|
|
12
12
|
async notify(request) {
|
|
13
13
|
if (disposed) return;
|
|
14
|
-
const data =
|
|
14
|
+
const data = createPoNotificationEntryData(request);
|
|
15
15
|
if (!data) throw new Error("Invalid notification request");
|
|
16
16
|
try {
|
|
17
|
-
await options.appendCustomEntry(
|
|
17
|
+
await options.appendCustomEntry(PO_NOTIFICATION_ENTRY_TYPE, data);
|
|
18
18
|
} catch (error) {
|
|
19
19
|
if (disposed) return;
|
|
20
20
|
options.emitFrame({
|
|
@@ -25,7 +25,7 @@ function createHeadlessClient(options) {
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
setStatus(source, text) {
|
|
28
|
-
if (disposed)
|
|
28
|
+
if (disposed) return;
|
|
29
29
|
options.emitFrame({
|
|
30
30
|
type: "extension_ui_request",
|
|
31
31
|
method: "setStatus",
|
|
@@ -72,21 +72,25 @@ function createHeadlessClient(options) {
|
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
74
|
const abort = () => finish({ value: void 0 });
|
|
75
|
+
const frame = {
|
|
76
|
+
type: "extension_ui_request",
|
|
77
|
+
id,
|
|
78
|
+
method: request.kind === "input" && request.multiline ? "editor" : request.kind,
|
|
79
|
+
title: request.title,
|
|
80
|
+
message: request.message,
|
|
81
|
+
options: labels,
|
|
82
|
+
placeholder: request.message,
|
|
83
|
+
prefill: request.initialValue
|
|
84
|
+
};
|
|
75
85
|
pending.set(id, {
|
|
86
|
+
replay(listener) {
|
|
87
|
+
if (started) listener(frame);
|
|
88
|
+
},
|
|
76
89
|
start() {
|
|
77
90
|
if (started || disposed) return;
|
|
78
91
|
started = true;
|
|
79
92
|
try {
|
|
80
|
-
options.emitFrame(
|
|
81
|
-
type: "extension_ui_request",
|
|
82
|
-
id,
|
|
83
|
-
method: request.kind === "input" && request.multiline ? "editor" : request.kind,
|
|
84
|
-
title: request.title,
|
|
85
|
-
message: request.message,
|
|
86
|
-
options: labels,
|
|
87
|
-
placeholder: request.message,
|
|
88
|
-
prefill: request.initialValue
|
|
89
|
-
});
|
|
93
|
+
options.emitFrame(frame);
|
|
90
94
|
} catch (error) {
|
|
91
95
|
finish({ error });
|
|
92
96
|
}
|
|
@@ -113,6 +117,9 @@ function createHeadlessClient(options) {
|
|
|
113
117
|
if (typeof frame.id === "string") pending.get(frame.id)?.respond(frame);
|
|
114
118
|
return true;
|
|
115
119
|
},
|
|
120
|
+
replay(listener) {
|
|
121
|
+
pending.values().next().value?.replay(listener);
|
|
122
|
+
},
|
|
116
123
|
dispose() {
|
|
117
124
|
if (disposed) return;
|
|
118
125
|
disposed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/headlessClient/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport {
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/headlessClient/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { createPoNotificationEntryData, PO_NOTIFICATION_ENTRY_TYPE } from '../../exports/notification';\nimport type {\n HeadlessClientBridge,\n HeadlessClientOptions,\n PendingClientRequest,\n} from '../../types/server/headlessClient';\n\n/** Explicit client interactions over the existing browser dialog protocol. */\nexport function createHeadlessClient(options: HeadlessClientOptions): HeadlessClientBridge {\n const pending = new Map<string, PendingClientRequest>();\n let disposed = false;\n const advance = (): void => pending.values().next().value?.start();\n\n return {\n client: {\n async notify(request) {\n // Detached callbacks can outlive their session. A closed client has no recipient.\n if (disposed) return;\n const data = createPoNotificationEntryData(request);\n if (!data) throw new Error('Invalid notification request');\n try {\n await options.appendCustomEntry(PO_NOTIFICATION_ENTRY_TYPE, data);\n } catch (error) {\n if (disposed) return;\n // Callers fire notify without awaiting, often to report a journal failure. A rejection here\n // would crash the session server, so a refused append still reaches the browser live.\n options.emitFrame({\n type: 'error',\n code: 'notification_undelivered',\n error: `${data.body} (not saved to history: ${error instanceof Error ? error.message : String(error)})`,\n });\n }\n },\n setStatus(source, text) {\n // Packages clear their status while they unwind, which is after their session shut down. A\n // throw here used to abort that teardown and leak everything after it.\n if (disposed) return;\n options.emitFrame({ type: 'extension_ui_request', method: 'setStatus', statusKey: source, statusText: text });\n },\n appendComposerText(text) {\n if (disposed) throw new Error('Headless client is closed');\n options.emitFrame({ type: 'extension_ui_request', method: 'append_composer_text', id: randomUUID(), text });\n },\n request(request, signal) {\n if (disposed) return Promise.reject(new Error('Headless client is closed'));\n if (signal?.aborted) return Promise.resolve(undefined);\n if (!['confirm', 'select', 'input'].includes(request.kind)) {\n return Promise.reject(new Error('Unsupported headless client request'));\n }\n const labels = request.options?.map((option) => option.label);\n if (labels && new Set(labels).size !== labels.length) {\n return Promise.reject(new Error('Select option labels must be unique'));\n }\n const id = `headless-ui:${randomUUID()}`;\n return new Promise((resolve, reject) => {\n let started = false;\n const finish = (outcome: { value: unknown } | { error: unknown }): void => {\n if (!pending.delete(id)) return;\n signal?.removeEventListener('abort', abort);\n try {\n if (started) options.emitFrame({ type: 'extension_ui_answered', id });\n if ('error' in outcome) reject(outcome.error);\n else resolve(outcome.value);\n } catch (error) {\n reject(error);\n } finally {\n advance();\n }\n };\n const abort = (): void => finish({ value: undefined });\n const frame = {\n type: 'extension_ui_request',\n id,\n method: request.kind === 'input' && request.multiline ? 'editor' : request.kind,\n title: request.title,\n message: request.message,\n options: labels,\n placeholder: request.message,\n prefill: request.initialValue,\n };\n pending.set(id, {\n replay(listener) {\n if (started) listener(frame);\n },\n start() {\n if (started || disposed) return;\n started = true;\n try {\n options.emitFrame(frame);\n } catch (error) {\n finish({ error });\n }\n },\n respond(frame) {\n if (!started) return;\n if (frame.cancelled === true) return finish({ value: undefined });\n if (request.kind === 'confirm') {\n if (typeof frame.confirmed === 'boolean') finish({ value: frame.confirmed });\n } else if (typeof frame.value === 'string') {\n // Rich questionnaire clients return an encoded whole-answer envelope here.\n const selected = request.options?.find((option) => option.label === frame.value);\n finish({ value: selected?.value ?? frame.value });\n }\n },\n close: () => finish({ error: new Error('Headless client is closed') }),\n });\n signal?.addEventListener('abort', abort, { once: true });\n advance();\n });\n },\n },\n receive(frame) {\n if (frame.type !== 'extension_ui_response') return false;\n if (typeof frame.id === 'string') pending.get(frame.id)?.respond(frame);\n return true;\n },\n replay(listener) {\n // A focused presentation may attach after the tool has started waiting.\n // Only its current request is replayed, not answered or queued dialogs.\n pending.values().next().value?.replay(listener);\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n for (const request of pending.values()) request.close();\n },\n };\n}\n"],"mappings":"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"}
|