@agimon-ai/po-core 0.0.0-alpha.2 → 0.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +149 -21
- package/NOTICE +41 -0
- package/dist/agentModel.cjs +1 -1
- package/dist/agentModel.d.mts +2 -2
- package/dist/agentModel.mjs +1 -2
- package/dist/apiContracts.cjs +623 -802
- package/dist/apiContracts.cjs.map +1 -1
- package/dist/apiContracts.d.mts +277 -615
- package/dist/apiContracts.d.mts.map +1 -1
- package/dist/apiContracts.mjs +617 -794
- package/dist/apiContracts.mjs.map +1 -1
- package/dist/askUser.cjs +2 -2
- package/dist/askUser.d.mts +2 -2
- package/dist/askUser.mjs +1 -2
- package/dist/authorTools.mjs +1 -2
- package/dist/backgroundWork.cjs +3 -3
- package/dist/backgroundWork.d.mts +2 -2
- package/dist/backgroundWork.mjs +1 -2
- package/dist/bundleAssetPolicy.mjs +1 -2
- package/dist/chatgptAuth.cjs +3 -2
- package/dist/chatgptAuth.d.mts +3 -2
- package/dist/chatgptAuth.mjs +2 -1
- package/dist/childProcess.cjs +1 -1
- package/dist/childProcess.d.mts +2 -2
- package/dist/childProcess.mjs +1 -2
- package/dist/childSession.cjs +11 -6
- package/dist/childSession.d.mts +3 -3
- package/dist/childSession.mjs +3 -3
- package/dist/cockpitContainer.mjs +1 -2
- package/dist/config.cjs +1 -1
- package/dist/config.d.mts +3 -3
- package/dist/config.mjs +1 -2
- package/dist/contextApi.cjs +1 -0
- package/dist/contextApi.d.mts +2 -2
- package/dist/contextApi.mjs +2 -2
- package/dist/contextContributions.cjs +4 -4
- package/dist/contextContributions.d.mts +3 -3
- package/dist/contextContributions.mjs +3 -3
- package/dist/contextDetailStore.cjs +7 -5
- package/dist/contextDetailStore.cjs.map +1 -1
- package/dist/contextDetailStore.d.mts +2 -1
- package/dist/contextDetailStore.d.mts.map +1 -1
- package/dist/contextDetailStore.mjs +6 -4
- package/dist/contextDetailStore.mjs.map +1 -1
- package/dist/contextProjection.cjs +7 -2
- package/dist/contextProjection.cjs.map +1 -1
- package/dist/contextProjection.d.mts +4 -1
- package/dist/contextProjection.d.mts.map +1 -1
- package/dist/contextProjection.mjs +5 -2
- package/dist/contextProjection.mjs.map +1 -1
- package/dist/cordisHost.cjs +11 -11
- package/dist/cordisHost.d.mts +2 -2
- package/dist/cordisHost.mjs +1 -2
- package/dist/delegation.cjs +8 -8
- package/dist/delegation.d.mts +2 -2
- package/dist/delegation.mjs +1 -2
- package/dist/executionBudget.cjs +4 -3
- package/dist/executionBudget.cjs.map +1 -1
- package/dist/executionBudget.d.mts +2 -2
- package/dist/executionBudget.d.mts.map +1 -1
- package/dist/executionBudget.mjs +4 -3
- package/dist/executionBudget.mjs.map +1 -1
- package/dist/extensionFile.cjs +5 -0
- package/dist/extensionFile.d.mts +4 -2
- package/dist/extensionFile.mjs +4 -2
- package/dist/footer.d.mts +2 -2
- package/dist/footer.mjs +1 -2
- package/dist/headless.cjs +14 -14
- package/dist/headless.d.mts +2 -2
- package/dist/headless.mjs +1 -2
- package/dist/headlessHub.cjs +308 -109
- package/dist/headlessHub.cjs.map +1 -1
- package/dist/headlessHub.d.mts +71 -36
- package/dist/headlessHub.d.mts.map +1 -1
- package/dist/headlessHub.mjs +309 -110
- package/dist/headlessHub.mjs.map +1 -1
- package/dist/headlessProtocol.cjs +327 -0
- package/dist/headlessProtocol.cjs.map +1 -0
- package/dist/headlessProtocol.d.mts +30 -0
- package/dist/headlessProtocol.d.mts.map +1 -0
- package/dist/headlessProtocol.mjs +326 -0
- package/dist/headlessProtocol.mjs.map +1 -0
- package/dist/headlessServer.cjs +166 -151
- package/dist/headlessServer.cjs.map +1 -1
- package/dist/headlessServer.d.mts +13 -5
- package/dist/headlessServer.d.mts.map +1 -1
- package/dist/headlessServer.mjs +166 -151
- package/dist/headlessServer.mjs.map +1 -1
- package/dist/headlessSessionHost.d.mts +58 -21
- package/dist/headlessSessionHost.d.mts.map +1 -1
- package/dist/help.cjs +20 -20
- package/dist/help.d.mts +2 -2
- package/dist/help.mjs +2 -2
- package/dist/history.cjs +16 -20
- package/dist/history.d.mts +9 -7
- package/dist/history.mjs +6 -7
- package/dist/historyOwnership.cjs.map +1 -1
- package/dist/historyOwnership.d.mts +1 -1
- package/dist/historyOwnership.mjs.map +1 -1
- package/dist/hubChannel.cjs +9 -0
- package/dist/hubChannel.d.mts +3 -2
- package/dist/hubChannel.mjs +3 -2
- package/dist/index.cjs +26 -28
- package/dist/index.d.mts +6 -6
- package/dist/index.mjs +6 -6
- package/dist/interop/chord.mjs +1 -0
- package/dist/interop/chordContext.mjs +1 -0
- package/dist/json.cjs +11 -5
- package/dist/json.d.mts +4 -2
- package/dist/json.mjs +4 -2
- package/dist/kernel.cjs +1 -1
- package/dist/kernel.d.mts +3 -3
- package/dist/kernel.mjs +1 -2
- package/dist/leader.d.mts +2 -2
- package/dist/leader.mjs +1 -2
- package/dist/logSinkTelemetry.mjs +1 -2
- package/dist/machineApi.cjs +80 -74
- package/dist/machineApi.cjs.map +1 -1
- package/dist/machineApi.d.mts +5 -2
- package/dist/machineApi.d.mts.map +1 -1
- package/dist/machineApi.mjs +78 -71
- package/dist/machineApi.mjs.map +1 -1
- package/dist/main.cjs +2 -1
- package/dist/main.d.mts +2 -1
- package/dist/main.mjs +2 -1
- package/dist/mcpFacet.d.mts +3 -3
- package/dist/mcpProjection.cjs +13 -13
- package/dist/mcpProjection.d.mts +2 -2
- package/dist/mcpProjection.mjs +1 -2
- package/dist/mcpSchemaCost.cjs +4 -4
- package/dist/mcpSchemaCost.cjs.map +1 -1
- package/dist/mcpSchemaCost.d.mts +2 -2
- package/dist/mcpSchemaCost.mjs +4 -4
- package/dist/mcpSchemaCost.mjs.map +1 -1
- package/dist/mcpSession.cjs +7 -7
- package/dist/mcpSession.d.mts +2 -2
- package/dist/mcpSession.mjs +1 -2
- package/dist/mcpStatus.cjs +2 -2
- package/dist/mcpStatus.d.mts +2 -2
- package/dist/mcpStatus.mjs +1 -2
- package/dist/mcpToolResolver.cjs +3 -3
- package/dist/mcpToolResolver.d.mts +2 -2
- package/dist/mcpToolResolver.mjs +1 -2
- package/dist/mcpWidget.d.mts +2 -2
- package/dist/moduleResolution.cjs +43 -8
- package/dist/moduleResolution.cjs.map +1 -1
- package/dist/moduleResolution.d.mts +10 -1
- package/dist/moduleResolution.d.mts.map +1 -1
- package/dist/moduleResolution.mjs +40 -7
- package/dist/moduleResolution.mjs.map +1 -1
- package/dist/narration.cjs +3 -3
- package/dist/narration.d.mts +2 -2
- package/dist/narration.mjs +1 -2
- package/dist/native.cjs +9 -0
- package/dist/native.d.mts +4 -3
- package/dist/native.mjs +3 -2
- package/dist/nodePlatform.cjs +77 -0
- package/dist/nodePlatform.cjs.map +1 -0
- package/dist/nodePlatform.d.mts +17 -0
- package/dist/nodePlatform.d.mts.map +1 -0
- package/dist/nodePlatform.mjs +72 -0
- package/dist/nodePlatform.mjs.map +1 -0
- package/dist/notification.cjs +15 -15
- package/dist/notification.d.mts +2 -2
- package/dist/notification.mjs +1 -2
- package/dist/packageApi.cjs +11 -11
- package/dist/packageApi.d.mts +2 -2
- package/dist/packageApi.mjs +2 -2
- package/dist/packageApiServer.cjs +45 -27
- package/dist/packageApiServer.cjs.map +1 -1
- package/dist/packageApiServer.d.mts +36 -26
- package/dist/packageApiServer.d.mts.map +1 -1
- package/dist/packageApiServer.mjs +44 -26
- package/dist/packageApiServer.mjs.map +1 -1
- package/dist/piSettings.cjs +41 -20
- package/dist/piSettings.d.mts +4 -2
- package/dist/piSettings.mjs +4 -2
- package/dist/platform.cjs +62 -0
- package/dist/platform.d.mts +10 -0
- package/dist/platform.mjs +10 -0
- package/dist/pluginProtocol.cjs +7 -8
- package/dist/pluginProtocol.d.mts +2 -2
- package/dist/pluginProtocol.mjs +1 -2
- package/dist/poPackage.cjs +12 -0
- package/dist/poPackage.d.mts +3 -0
- package/dist/poPackage.mjs +3 -0
- package/dist/profileIdentity.cjs +1 -1
- package/dist/profileIdentity.d.mts +2 -2
- package/dist/profileIdentity.mjs +1 -2
- package/dist/protocol.cjs +3 -3
- package/dist/protocol.d.mts +2 -2
- package/dist/protocol.mjs +1 -2
- package/dist/readiness.cjs +6 -6
- package/dist/readiness.d.mts +2 -2
- package/dist/readiness.mjs +1 -2
- package/dist/remoteApi.cjs.map +1 -1
- package/dist/remoteApi.d.mts +2 -2
- package/dist/remoteApi.mjs.map +1 -1
- package/dist/remoteRuntime.cjs +42 -65
- package/dist/remoteRuntime.cjs.map +1 -1
- package/dist/remoteRuntime.d.mts +3 -2
- package/dist/remoteRuntime.d.mts.map +1 -1
- package/dist/remoteRuntime.mjs +41 -62
- package/dist/remoteRuntime.mjs.map +1 -1
- package/dist/runtimeConfig.cjs +4 -4
- package/dist/runtimeConfig.cjs.map +1 -1
- package/dist/runtimeConfig.d.mts +10 -9
- package/dist/runtimeConfig.d.mts.map +1 -1
- package/dist/runtimeConfig.mjs +4 -4
- package/dist/runtimeConfig.mjs.map +1 -1
- package/dist/runtimeContextApi.cjs +10 -3
- package/dist/runtimeContextApi.cjs.map +1 -1
- package/dist/runtimeContextApi.d.mts +3 -3
- package/dist/runtimeContextApi.d.mts.map +1 -1
- package/dist/runtimeContextApi.mjs +10 -3
- package/dist/runtimeContextApi.mjs.map +1 -1
- package/dist/runtimeCordisHost.cjs +46 -46
- package/dist/runtimeCordisHost.cjs.map +1 -1
- package/dist/runtimeCordisHost.d.mts +29 -28
- package/dist/runtimeCordisHost.d.mts.map +1 -1
- package/dist/runtimeCordisHost.mjs +42 -42
- package/dist/runtimeCordisHost.mjs.map +1 -1
- package/dist/runtimeIdentity.cjs +6 -9
- package/dist/runtimeIdentity.cjs.map +1 -1
- package/dist/runtimeIdentity.d.mts +5 -1
- package/dist/runtimeIdentity.d.mts.map +1 -1
- package/dist/runtimeIdentity.mjs +5 -8
- package/dist/runtimeIdentity.mjs.map +1 -1
- package/dist/runtimeJson.cjs +10 -45
- package/dist/runtimeJson.d.mts +3 -22
- package/dist/runtimeJson.mjs +3 -39
- package/dist/runtimeLogSinkTelemetry.cjs +19 -19
- package/dist/runtimeLogSinkTelemetry.cjs.map +1 -1
- package/dist/runtimeLogSinkTelemetry.d.mts +19 -19
- package/dist/runtimeLogSinkTelemetry.mjs +19 -19
- package/dist/runtimeLogSinkTelemetry.mjs.map +1 -1
- package/dist/runtimePackages.cjs +7 -2
- package/dist/runtimePackages.cjs.map +1 -1
- package/dist/runtimePackages.d.mts +4 -1
- package/dist/runtimePackages.d.mts.map +1 -1
- package/dist/runtimePackages.mjs +7 -2
- package/dist/runtimePackages.mjs.map +1 -1
- package/dist/runtimePiSettings.cjs +40 -263
- package/dist/runtimePiSettings.d.mts +3 -72
- package/dist/runtimePiSettings.mjs +3 -241
- package/dist/runtimeProtocol.cjs +19 -19
- package/dist/runtimeProtocol.cjs.map +1 -1
- package/dist/runtimeProtocol.d.mts +7 -7
- package/dist/runtimeProtocol.d.mts.map +1 -1
- package/dist/runtimeProtocol.mjs +17 -17
- package/dist/runtimeProtocol.mjs.map +1 -1
- package/dist/runtimeTransition.cjs +9 -9
- package/dist/runtimeTransition.cjs.map +1 -1
- package/dist/runtimeTransition.d.mts +10 -10
- package/dist/runtimeTransition.d.mts.map +1 -1
- package/dist/runtimeTransition.mjs +7 -7
- package/dist/runtimeTransition.mjs.map +1 -1
- package/dist/sandboxHarness.mjs +1 -2
- package/dist/server.cjs +3 -7
- package/dist/server.d.mts +6 -6
- package/dist/server.mjs +3 -4
- package/dist/serverPlugin.cjs +39 -0
- package/dist/serverPlugin.d.mts +12 -0
- package/dist/serverPlugin.mjs +11 -0
- package/dist/serverTelemetry.cjs +1 -1
- package/dist/serverTelemetry.cjs.map +1 -1
- package/dist/serverTelemetry.d.mts +2 -2
- package/dist/serverTelemetry.mjs +2 -2
- package/dist/serverTelemetry.mjs.map +1 -1
- package/dist/sessionFilesApi.cjs +41 -37
- package/dist/sessionFilesApi.cjs.map +1 -1
- package/dist/sessionFilesApi.d.mts +6 -3
- package/dist/sessionFilesApi.d.mts.map +1 -1
- package/dist/sessionFilesApi.mjs +41 -36
- package/dist/sessionFilesApi.mjs.map +1 -1
- package/dist/sessionProtocol.cjs +31 -6
- package/dist/sessionProtocol.d.mts +8 -3
- package/dist/sessionProtocol.mjs +8 -2
- package/dist/skills.cjs +5 -5
- package/dist/skills.d.mts +2 -2
- package/dist/skills.mjs +1 -2
- package/dist/sqliteSessionStorage.cjs +28 -50
- package/dist/sqliteSessionStorage.cjs.map +1 -1
- package/dist/sqliteSessionStorage.d.mts +13 -20
- package/dist/sqliteSessionStorage.d.mts.map +1 -1
- package/dist/sqliteSessionStorage.mjs +25 -48
- package/dist/sqliteSessionStorage.mjs.map +1 -1
- package/dist/src/constants/agentSettled.cjs +7 -0
- package/dist/src/constants/agentSettled.cjs.map +1 -0
- package/dist/src/constants/agentSettled.mjs +7 -0
- package/dist/src/constants/agentSettled.mjs.map +1 -0
- package/dist/src/constants/contextApi.cjs +3 -1
- package/dist/src/constants/contextApi.cjs.map +1 -1
- package/dist/src/constants/contextApi.d.mts +2 -1
- package/dist/src/constants/contextApi.d.mts.map +1 -1
- package/dist/src/constants/contextApi.mjs +3 -2
- package/dist/src/constants/contextApi.mjs.map +1 -1
- package/dist/src/constants/voiceTools.cjs +6 -6
- package/dist/src/constants/voiceTools.cjs.map +1 -1
- package/dist/src/constants/voiceTools.d.mts +3 -3
- package/dist/src/constants/voiceTools.mjs +4 -4
- package/dist/src/constants/voiceTools.mjs.map +1 -1
- package/dist/src/extensions/extensionFile.cjs +22 -5
- package/dist/src/extensions/extensionFile.cjs.map +1 -1
- package/dist/src/extensions/extensionFile.d.mts +17 -4
- package/dist/src/extensions/extensionFile.d.mts.map +1 -1
- package/dist/src/extensions/extensionFile.mjs +22 -6
- package/dist/src/extensions/extensionFile.mjs.map +1 -1
- package/dist/src/extensions/serverPlugin.cjs +231 -92
- package/dist/src/extensions/serverPlugin.cjs.map +1 -1
- package/dist/src/extensions/serverPlugin.d.mts +2 -2
- package/dist/src/extensions/serverPlugin.d.mts.map +1 -1
- package/dist/src/extensions/serverPlugin.mjs +232 -93
- package/dist/src/extensions/serverPlugin.mjs.map +1 -1
- package/dist/src/pi/piSessionRuntime.cjs +349 -142
- package/dist/src/pi/piSessionRuntime.cjs.map +1 -1
- package/dist/src/pi/piSessionRuntime.d.mts +18 -17
- package/dist/src/pi/piSessionRuntime.d.mts.map +1 -1
- package/dist/src/pi/piSessionRuntime.mjs +342 -135
- package/dist/src/pi/piSessionRuntime.mjs.map +1 -1
- package/dist/src/schemas/agentModel.cjs +2 -2
- package/dist/src/schemas/agentModel.cjs.map +1 -1
- package/dist/src/schemas/agentModel.d.mts +1 -1
- package/dist/src/schemas/agentModel.mjs +2 -2
- package/dist/src/schemas/agentModel.mjs.map +1 -1
- package/dist/src/schemas/apiContracts.d.mts +2 -2
- package/dist/src/schemas/apiContracts.d.mts.map +1 -1
- package/dist/src/schemas/askUser.cjs +4 -4
- package/dist/src/schemas/askUser.cjs.map +1 -1
- package/dist/src/schemas/askUser.d.mts +4 -4
- package/dist/src/schemas/askUser.d.mts.map +1 -1
- package/dist/src/schemas/askUser.mjs +3 -3
- package/dist/src/schemas/askUser.mjs.map +1 -1
- package/dist/src/schemas/backgroundWork.cjs +10 -10
- package/dist/src/schemas/backgroundWork.cjs.map +1 -1
- package/dist/src/schemas/backgroundWork.d.mts +9 -9
- package/dist/src/schemas/backgroundWork.d.mts.map +1 -1
- package/dist/src/schemas/backgroundWork.mjs +8 -8
- package/dist/src/schemas/backgroundWork.mjs.map +1 -1
- package/dist/src/schemas/childProcess.cjs +5 -5
- package/dist/src/schemas/childProcess.cjs.map +1 -1
- package/dist/src/schemas/childProcess.d.mts +2 -2
- package/dist/src/schemas/childProcess.mjs +5 -5
- package/dist/src/schemas/childProcess.mjs.map +1 -1
- package/dist/src/schemas/contextContributions.cjs +10 -10
- package/dist/src/schemas/contextContributions.cjs.map +1 -1
- package/dist/src/schemas/contextContributions.d.mts +16 -16
- package/dist/src/schemas/contextContributions.d.mts.map +1 -1
- package/dist/src/schemas/contextContributions.mjs +8 -8
- package/dist/src/schemas/contextContributions.mjs.map +1 -1
- package/dist/src/schemas/delegation.cjs +17 -17
- package/dist/src/schemas/delegation.cjs.map +1 -1
- package/dist/src/schemas/delegation.d.mts +16 -16
- package/dist/src/schemas/delegation.d.mts.map +1 -1
- package/dist/src/schemas/delegation.mjs +10 -10
- package/dist/src/schemas/delegation.mjs.map +1 -1
- package/dist/src/schemas/extensionFile.d.mts +23 -19
- package/dist/src/schemas/extensionFile.d.mts.map +1 -1
- package/dist/src/schemas/footer.cjs.map +1 -1
- package/dist/src/schemas/footer.d.mts +5 -5
- package/dist/src/schemas/footer.d.mts.map +1 -1
- package/dist/src/schemas/footer.mjs.map +1 -1
- package/dist/src/schemas/headless.cjs +37 -37
- package/dist/src/schemas/headless.cjs.map +1 -1
- package/dist/src/schemas/headless.d.mts +100 -101
- package/dist/src/schemas/headless.d.mts.map +1 -1
- package/dist/src/schemas/headless.mjs +24 -24
- package/dist/src/schemas/headless.mjs.map +1 -1
- package/dist/src/schemas/help.cjs +60 -60
- package/dist/src/schemas/help.cjs.map +1 -1
- package/dist/src/schemas/help.d.mts +43 -43
- package/dist/src/schemas/help.d.mts.map +1 -1
- package/dist/src/schemas/help.mjs +41 -41
- package/dist/src/schemas/help.mjs.map +1 -1
- package/dist/src/schemas/home.cjs +127 -0
- package/dist/src/schemas/home.cjs.map +1 -0
- package/dist/src/schemas/home.d.mts +63 -0
- package/dist/src/schemas/home.d.mts.map +1 -0
- package/dist/src/schemas/home.mjs +121 -0
- package/dist/src/schemas/home.mjs.map +1 -0
- package/dist/src/schemas/httpApiContracts.cjs +441 -0
- package/dist/src/schemas/httpApiContracts.cjs.map +1 -0
- package/dist/src/schemas/httpApiContracts.d.mts +78 -0
- package/dist/src/schemas/httpApiContracts.d.mts.map +1 -0
- package/dist/src/schemas/httpApiContracts.mjs +434 -0
- package/dist/src/schemas/httpApiContracts.mjs.map +1 -0
- package/dist/src/schemas/hubChannel.cjs +3 -0
- package/dist/src/schemas/hubChannel.cjs.map +1 -1
- package/dist/src/schemas/hubChannel.d.mts +84 -60
- package/dist/src/schemas/hubChannel.d.mts.map +1 -1
- package/dist/src/schemas/hubChannel.mjs +3 -1
- package/dist/src/schemas/hubChannel.mjs.map +1 -1
- package/dist/src/schemas/leader.cjs.map +1 -1
- package/dist/src/schemas/leader.d.mts +3 -3
- package/dist/src/schemas/leader.d.mts.map +1 -1
- package/dist/src/schemas/leader.mjs.map +1 -1
- package/dist/src/schemas/mcpBundle.d.mts +3 -3
- package/dist/src/schemas/mcpFacet.cjs.map +1 -1
- package/dist/src/schemas/mcpFacet.d.mts +22 -22
- package/dist/src/schemas/mcpFacet.d.mts.map +1 -1
- package/dist/src/schemas/mcpFacet.mjs.map +1 -1
- package/dist/src/schemas/mcpProjection.cjs +41 -41
- package/dist/src/schemas/mcpProjection.cjs.map +1 -1
- package/dist/src/schemas/mcpProjection.d.mts +31 -30
- package/dist/src/schemas/mcpProjection.d.mts.map +1 -1
- package/dist/src/schemas/mcpProjection.mjs +29 -29
- package/dist/src/schemas/mcpProjection.mjs.map +1 -1
- package/dist/src/schemas/mcpSession.cjs +23 -23
- package/dist/src/schemas/mcpSession.cjs.map +1 -1
- package/dist/src/schemas/mcpSession.d.mts +12 -12
- package/dist/src/schemas/mcpSession.d.mts.map +1 -1
- package/dist/src/schemas/mcpSession.mjs +18 -18
- package/dist/src/schemas/mcpSession.mjs.map +1 -1
- package/dist/src/schemas/mcpStatus.cjs +5 -5
- package/dist/src/schemas/mcpStatus.cjs.map +1 -1
- package/dist/src/schemas/mcpStatus.d.mts +4 -4
- package/dist/src/schemas/mcpStatus.d.mts.map +1 -1
- package/dist/src/schemas/mcpStatus.mjs +4 -4
- package/dist/src/schemas/mcpStatus.mjs.map +1 -1
- package/dist/src/schemas/mcpToolResolver.cjs +9 -9
- package/dist/src/schemas/mcpToolResolver.cjs.map +1 -1
- package/dist/src/schemas/mcpToolResolver.d.mts +7 -7
- package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -1
- package/dist/src/schemas/mcpToolResolver.mjs +7 -7
- package/dist/src/schemas/mcpToolResolver.mjs.map +1 -1
- package/dist/src/schemas/narration.cjs +9 -9
- package/dist/src/schemas/narration.cjs.map +1 -1
- package/dist/src/schemas/narration.d.mts +5 -5
- package/dist/src/schemas/narration.d.mts.map +1 -1
- package/dist/src/schemas/narration.mjs +7 -7
- package/dist/src/schemas/narration.mjs.map +1 -1
- package/dist/src/schemas/notification.cjs +45 -45
- package/dist/src/schemas/notification.cjs.map +1 -1
- package/dist/src/schemas/notification.d.mts +22 -22
- package/dist/src/schemas/notification.d.mts.map +1 -1
- package/dist/src/schemas/notification.mjs +31 -31
- package/dist/src/schemas/notification.mjs.map +1 -1
- package/dist/src/schemas/packageApi.cjs +28 -28
- package/dist/src/schemas/packageApi.cjs.map +1 -1
- package/dist/src/schemas/packageApi.d.mts +91 -65
- package/dist/src/schemas/packageApi.d.mts.map +1 -1
- package/dist/src/schemas/packageApi.mjs +18 -18
- package/dist/src/schemas/packageApi.mjs.map +1 -1
- package/dist/src/schemas/platform.cjs +34 -0
- package/dist/src/schemas/platform.cjs.map +1 -0
- package/dist/src/schemas/platform.d.mts +75 -0
- package/dist/src/schemas/platform.d.mts.map +1 -0
- package/dist/src/schemas/platform.mjs +27 -0
- package/dist/src/schemas/platform.mjs.map +1 -0
- package/dist/src/schemas/pluginContributions.cjs.map +1 -1
- package/dist/src/schemas/pluginContributions.d.mts +12 -12
- package/dist/src/schemas/pluginContributions.d.mts.map +1 -1
- package/dist/src/schemas/pluginContributions.mjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.cjs +24 -27
- package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
- package/dist/src/schemas/pluginProtocol.d.mts +21 -21
- package/dist/src/schemas/pluginProtocol.d.mts.map +1 -1
- package/dist/src/schemas/pluginProtocol.mjs +18 -20
- package/dist/src/schemas/pluginProtocol.mjs.map +1 -1
- package/dist/src/schemas/profileIdentity.cjs +2 -2
- package/dist/src/schemas/profileIdentity.cjs.map +1 -1
- package/dist/src/schemas/profileIdentity.d.mts +1 -1
- package/dist/src/schemas/profileIdentity.mjs +2 -2
- package/dist/src/schemas/profileIdentity.mjs.map +1 -1
- package/dist/src/schemas/protocolChannelsContract.cjs +27 -0
- package/dist/src/schemas/protocolChannelsContract.cjs.map +1 -0
- package/dist/src/schemas/protocolChannelsContract.d.mts +37 -0
- package/dist/src/schemas/protocolChannelsContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolChannelsContract.mjs +25 -0
- package/dist/src/schemas/protocolChannelsContract.mjs.map +1 -0
- package/dist/src/schemas/protocolContracts.cjs +168 -0
- package/dist/src/schemas/protocolContracts.cjs.map +1 -0
- package/dist/src/schemas/protocolContracts.d.mts +69 -0
- package/dist/src/schemas/protocolContracts.d.mts.map +1 -0
- package/dist/src/schemas/protocolContracts.mjs +164 -0
- package/dist/src/schemas/protocolContracts.mjs.map +1 -0
- package/dist/src/schemas/protocolHubContract.cjs +51 -0
- package/dist/src/schemas/protocolHubContract.cjs.map +1 -0
- package/dist/src/schemas/protocolHubContract.d.mts +218 -0
- package/dist/src/schemas/protocolHubContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolHubContract.mjs +49 -0
- package/dist/src/schemas/protocolHubContract.mjs.map +1 -0
- package/dist/src/schemas/protocolSessionContract.cjs +22 -0
- package/dist/src/schemas/protocolSessionContract.cjs.map +1 -0
- package/dist/src/schemas/protocolSessionContract.d.mts +324 -0
- package/dist/src/schemas/protocolSessionContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolSessionContract.mjs +22 -0
- package/dist/src/schemas/protocolSessionContract.mjs.map +1 -0
- package/dist/src/schemas/protocolThreadContract.cjs +21 -0
- package/dist/src/schemas/protocolThreadContract.cjs.map +1 -0
- package/dist/src/schemas/protocolThreadContract.d.mts +29 -0
- package/dist/src/schemas/protocolThreadContract.d.mts.map +1 -0
- package/dist/src/schemas/protocolThreadContract.mjs +20 -0
- package/dist/src/schemas/protocolThreadContract.mjs.map +1 -0
- package/dist/src/schemas/readiness.cjs +36 -36
- package/dist/src/schemas/readiness.cjs.map +1 -1
- package/dist/src/schemas/readiness.d.mts +37 -37
- package/dist/src/schemas/readiness.d.mts.map +1 -1
- package/dist/src/schemas/readiness.mjs +31 -31
- package/dist/src/schemas/readiness.mjs.map +1 -1
- package/dist/src/schemas/serverBundle.d.mts +5 -5
- package/dist/src/schemas/serverPlugin.cjs +103 -0
- package/dist/src/schemas/serverPlugin.cjs.map +1 -0
- package/dist/src/schemas/serverPlugin.d.mts +176 -0
- package/dist/src/schemas/serverPlugin.d.mts.map +1 -0
- package/dist/src/schemas/serverPlugin.mjs +95 -0
- package/dist/src/schemas/serverPlugin.mjs.map +1 -0
- package/dist/src/schemas/serverScope.cjs +37 -0
- package/dist/src/schemas/serverScope.cjs.map +1 -0
- package/dist/src/schemas/serverScope.d.mts +77 -0
- package/dist/src/schemas/serverScope.d.mts.map +1 -0
- package/dist/src/schemas/serverScope.mjs +33 -0
- package/dist/src/schemas/serverScope.mjs.map +1 -0
- package/dist/src/schemas/sessionApiContracts.cjs +320 -0
- package/dist/src/schemas/sessionApiContracts.cjs.map +1 -0
- package/dist/src/schemas/sessionApiContracts.mjs +318 -0
- package/dist/src/schemas/sessionApiContracts.mjs.map +1 -0
- package/dist/src/schemas/sessionProtocol.cjs +20 -13
- package/dist/src/schemas/sessionProtocol.cjs.map +1 -1
- package/dist/src/schemas/sessionProtocol.d.mts +37 -54
- package/dist/src/schemas/sessionProtocol.d.mts.map +1 -1
- package/dist/src/schemas/sessionProtocol.mjs +17 -8
- package/dist/src/schemas/sessionProtocol.mjs.map +1 -1
- package/dist/src/schemas/skills.cjs +16 -16
- package/dist/src/schemas/skills.cjs.map +1 -1
- package/dist/src/schemas/skills.d.mts +7 -7
- package/dist/src/schemas/skills.d.mts.map +1 -1
- package/dist/src/schemas/skills.mjs +12 -12
- package/dist/src/schemas/skills.mjs.map +1 -1
- package/dist/src/schemas/toolOverrides.cjs +9 -9
- package/dist/src/schemas/toolOverrides.cjs.map +1 -1
- package/dist/src/schemas/toolOverrides.d.mts +8 -8
- package/dist/src/schemas/toolOverrides.d.mts.map +1 -1
- package/dist/src/schemas/toolOverrides.mjs +7 -7
- package/dist/src/schemas/toolOverrides.mjs.map +1 -1
- package/dist/src/schemas/toolSurface.cjs +9 -9
- package/dist/src/schemas/toolSurface.cjs.map +1 -1
- package/dist/src/schemas/toolSurface.d.mts +13 -13
- package/dist/src/schemas/toolSurface.d.mts.map +1 -1
- package/dist/src/schemas/toolSurface.mjs +7 -7
- package/dist/src/schemas/toolSurface.mjs.map +1 -1
- package/dist/src/schemas/uiHub.cjs +9 -9
- package/dist/src/schemas/uiHub.cjs.map +1 -1
- package/dist/src/schemas/uiHub.d.mts +12 -12
- package/dist/src/schemas/uiHub.d.mts.map +1 -1
- package/dist/src/schemas/uiHub.mjs +7 -7
- package/dist/src/schemas/uiHub.mjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.cjs +691 -775
- package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
- package/dist/src/server/directHarnessRuntime.d.mts +5 -1
- package/dist/src/server/directHarnessRuntime.d.mts.map +1 -0
- package/dist/src/server/directHarnessRuntime.mjs +671 -754
- package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
- package/dist/src/server/largeFrameLink.cjs +47 -0
- package/dist/src/server/largeFrameLink.cjs.map +1 -0
- package/dist/src/server/largeFrameLink.mjs +47 -0
- package/dist/src/server/largeFrameLink.mjs.map +1 -0
- package/dist/src/server/liveImport.cjs +1 -1
- package/dist/src/server/liveImport.cjs.map +1 -1
- package/dist/src/server/liveImport.d.mts +1 -1
- package/dist/src/server/liveImport.mjs +1 -1
- package/dist/src/server/liveImport.mjs.map +1 -1
- package/dist/src/server/mcpBundleLoader.cjs.map +1 -1
- package/dist/src/server/mcpBundleLoader.d.mts +6 -6
- package/dist/src/server/mcpBundleLoader.d.mts.map +1 -1
- package/dist/src/server/mcpBundleLoader.mjs.map +1 -1
- package/dist/src/server/serverPackages.cjs +60 -0
- package/dist/src/server/serverPackages.cjs.map +1 -0
- package/dist/src/server/serverPackages.d.mts +44 -0
- package/dist/src/server/serverPackages.d.mts.map +1 -0
- package/dist/src/server/serverPackages.mjs +59 -0
- package/dist/src/server/serverPackages.mjs.map +1 -0
- package/dist/src/server/serverScope.cjs +510 -0
- package/dist/src/server/serverScope.cjs.map +1 -0
- package/dist/src/server/serverScope.d.mts +123 -0
- package/dist/src/server/serverScope.d.mts.map +1 -0
- package/dist/src/server/serverScope.mjs +510 -0
- package/dist/src/server/serverScope.mjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.cjs +3 -3
- package/dist/src/server/sessionMcpHandler.cjs.map +1 -1
- package/dist/src/server/sessionMcpHandler.mjs +4 -4
- package/dist/src/server/sessionMcpHandler.mjs.map +1 -1
- package/dist/src/server/sessionMcpRoutes.cjs +2 -1
- package/dist/src/server/sessionMcpRoutes.cjs.map +1 -1
- package/dist/src/server/sessionMcpRoutes.mjs +2 -1
- package/dist/src/server/sessionMcpRoutes.mjs.map +1 -1
- package/dist/src/server/threadJournals.cjs +38 -107
- package/dist/src/server/threadJournals.cjs.map +1 -1
- package/dist/src/server/threadJournals.mjs +38 -104
- package/dist/src/server/threadJournals.mjs.map +1 -1
- package/dist/src/services/apiSurfaceAssert/index.cjs +1 -1
- package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -1
- package/dist/src/services/apiSurfaceAssert/index.d.mts +6 -6
- package/dist/src/services/apiSurfaceAssert/index.mjs +1 -1
- package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -1
- package/dist/src/services/chatgptAuth/index.cjs +1 -220
- package/dist/src/services/chatgptAuth/index.cjs.map +1 -1
- package/dist/src/services/chatgptAuth/index.d.mts +0 -18
- package/dist/src/services/chatgptAuth/index.d.mts.map +1 -1
- package/dist/src/services/chatgptAuth/index.mjs +1 -217
- package/dist/src/services/chatgptAuth/index.mjs.map +1 -1
- package/dist/src/services/chatgptImages/index.cjs +1 -1
- package/dist/src/services/chatgptImages/index.cjs.map +1 -1
- package/dist/src/services/chatgptImages/index.mjs +1 -1
- package/dist/src/services/chatgptImages/index.mjs.map +1 -1
- package/dist/src/services/chatgptLogin/index.cjs +230 -0
- package/dist/src/services/chatgptLogin/index.cjs.map +1 -0
- package/dist/src/services/chatgptLogin/index.d.mts +21 -0
- package/dist/src/services/chatgptLogin/index.d.mts.map +1 -0
- package/dist/src/services/chatgptLogin/index.mjs +227 -0
- package/dist/src/services/chatgptLogin/index.mjs.map +1 -0
- package/dist/src/services/chatgptWebSearch/index.cjs +1 -1
- package/dist/src/services/chatgptWebSearch/index.cjs.map +1 -1
- package/dist/src/services/chatgptWebSearch/index.mjs +1 -1
- package/dist/src/services/chatgptWebSearch/index.mjs.map +1 -1
- package/dist/src/services/contextContributions/index.cjs +8 -8
- package/dist/src/services/contextContributions/index.cjs.map +1 -1
- package/dist/src/services/contextContributions/index.d.mts +3 -3
- package/dist/src/services/contextContributions/index.d.mts.map +1 -1
- package/dist/src/services/contextContributions/index.mjs +8 -8
- package/dist/src/services/contextContributions/index.mjs.map +1 -1
- package/dist/src/services/devProxyStore/devProxyRecords.cjs +59 -0
- package/dist/src/services/devProxyStore/devProxyRecords.cjs.map +1 -0
- package/dist/src/services/devProxyStore/devProxyRecords.mjs +56 -0
- package/dist/src/services/devProxyStore/devProxyRecords.mjs.map +1 -0
- package/dist/src/services/devProxyStore/index.cjs +7 -101
- package/dist/src/services/devProxyStore/index.cjs.map +1 -1
- package/dist/src/services/devProxyStore/index.mjs +7 -101
- package/dist/src/services/devProxyStore/index.mjs.map +1 -1
- package/dist/src/services/devProxyStore/sync.cjs +66 -0
- package/dist/src/services/devProxyStore/sync.cjs.map +1 -0
- package/dist/src/services/devProxyStore/sync.mjs +63 -0
- package/dist/src/services/devProxyStore/sync.mjs.map +1 -0
- package/dist/src/services/durableNavigation/docs.cjs +15 -0
- package/dist/src/services/durableNavigation/docs.cjs.map +1 -0
- package/dist/src/services/durableNavigation/docs.mjs +16 -0
- package/dist/src/services/durableNavigation/docs.mjs.map +1 -0
- package/dist/src/services/durableNavigation/index.cjs +3 -18
- package/dist/src/services/durableNavigation/index.cjs.map +1 -1
- package/dist/src/services/durableNavigation/index.mjs +2 -17
- package/dist/src/services/durableNavigation/index.mjs.map +1 -1
- package/dist/src/services/durableQueue/docs.cjs +12 -0
- package/dist/src/services/durableQueue/docs.cjs.map +1 -0
- package/dist/src/services/durableQueue/docs.mjs +13 -0
- package/dist/src/services/durableQueue/docs.mjs.map +1 -0
- package/dist/src/services/durableQueue/index.cjs +151 -0
- package/dist/src/services/durableQueue/index.cjs.map +1 -0
- package/dist/src/services/durableQueue/index.mjs +149 -0
- package/dist/src/services/durableQueue/index.mjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/docs.cjs +11 -0
- package/dist/src/services/durableRequestReceipts/docs.cjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/docs.mjs +12 -0
- package/dist/src/services/durableRequestReceipts/docs.mjs.map +1 -0
- package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.cjs +10 -16
- package/dist/src/services/durableRequestReceipts/index.cjs.map +1 -0
- package/dist/src/services/durableRequestReceipts/index.d.mts +12 -0
- package/dist/src/services/durableRequestReceipts/index.d.mts.map +1 -0
- package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.mjs +7 -13
- package/dist/src/services/durableRequestReceipts/index.mjs.map +1 -0
- package/dist/src/services/durableSession/docs.cjs +65 -0
- package/dist/src/services/durableSession/docs.cjs.map +1 -0
- package/dist/src/services/durableSession/docs.d.mts +17 -0
- package/dist/src/services/durableSession/docs.d.mts.map +1 -0
- package/dist/src/services/durableSession/docs.mjs +60 -0
- package/dist/src/services/durableSession/docs.mjs.map +1 -0
- package/dist/src/services/durableSession/index.cjs +21 -0
- package/dist/src/services/durableSession/index.cjs.map +1 -0
- package/dist/src/services/durableSession/index.d.mts +13 -0
- package/dist/src/services/durableSession/index.d.mts.map +1 -0
- package/dist/src/services/durableSession/index.mjs +20 -0
- package/dist/src/services/durableSession/index.mjs.map +1 -0
- package/dist/src/services/durableSubagents/docs.cjs +15 -0
- package/dist/src/services/durableSubagents/docs.cjs.map +1 -0
- package/dist/src/services/durableSubagents/docs.mjs +16 -0
- package/dist/src/services/durableSubagents/docs.mjs.map +1 -0
- package/dist/src/services/durableSubagents/extension.cjs +11 -0
- package/dist/src/services/durableSubagents/extension.cjs.map +1 -0
- package/dist/src/services/durableSubagents/extension.mjs +12 -0
- package/dist/src/services/durableSubagents/extension.mjs.map +1 -0
- package/dist/src/services/durableSubagents/index.cjs +95 -0
- package/dist/src/services/durableSubagents/index.cjs.map +1 -0
- package/dist/src/services/durableSubagents/index.mjs +90 -0
- package/dist/src/services/durableSubagents/index.mjs.map +1 -0
- package/dist/src/services/durableSubagents/tasks.cjs +25 -0
- package/dist/src/services/durableSubagents/tasks.cjs.map +1 -0
- package/dist/src/services/durableSubagents/tasks.mjs +26 -0
- package/dist/src/services/durableSubagents/tasks.mjs.map +1 -0
- package/dist/src/services/headlessClient/index.cjs +20 -13
- package/dist/src/services/headlessClient/index.cjs.map +1 -1
- package/dist/src/services/headlessClient/index.mjs +21 -14
- package/dist/src/services/headlessClient/index.mjs.map +1 -1
- package/dist/src/services/historyOwnership/type.d.mts +15 -0
- package/dist/src/services/historyOwnership/type.d.mts.map +1 -0
- package/dist/src/services/hubChannelHarness/index.cjs +2 -2
- package/dist/src/services/hubChannelHarness/index.cjs.map +1 -1
- package/dist/src/services/hubChannelHarness/index.d.mts +8 -8
- package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -1
- package/dist/src/services/hubChannelHarness/index.mjs +2 -2
- package/dist/src/services/hubChannelHarness/index.mjs.map +1 -1
- package/dist/src/services/json/core.cjs +30 -0
- package/dist/src/services/json/core.cjs.map +1 -0
- package/dist/src/services/json/core.d.mts +21 -0
- package/dist/src/services/json/core.d.mts.map +1 -0
- package/dist/src/services/json/core.mjs +26 -0
- package/dist/src/services/json/core.mjs.map +1 -0
- package/dist/src/services/json/sync.cjs +48 -0
- package/dist/src/services/json/sync.cjs.map +1 -0
- package/dist/src/services/json/sync.d.mts +22 -0
- package/dist/src/services/json/sync.d.mts.map +1 -0
- package/dist/src/services/json/sync.mjs +43 -0
- package/dist/src/services/json/sync.mjs.map +1 -0
- package/dist/src/services/kernel/index.cjs +2 -2
- package/dist/src/services/kernel/index.cjs.map +1 -1
- package/dist/src/services/kernel/index.d.mts +3 -3
- package/dist/src/services/kernel/index.d.mts.map +1 -1
- package/dist/src/services/kernel/index.mjs +2 -2
- package/dist/src/services/kernel/index.mjs.map +1 -1
- package/dist/src/services/nativeChildTools/index.cjs +16 -0
- package/dist/src/services/nativeChildTools/index.cjs.map +1 -0
- package/dist/src/services/nativeChildTools/index.mjs +16 -0
- package/dist/src/services/nativeChildTools/index.mjs.map +1 -0
- package/dist/src/services/nodeHost/index.cjs +30 -0
- package/dist/src/services/nodeHost/index.cjs.map +1 -0
- package/dist/src/services/nodeHost/index.d.mts +16 -0
- package/dist/src/services/nodeHost/index.d.mts.map +1 -0
- package/dist/src/services/nodeHost/index.mjs +27 -0
- package/dist/src/services/nodeHost/index.mjs.map +1 -0
- package/dist/src/services/nodeModelDependencies/index.cjs +89 -0
- package/dist/src/services/nodeModelDependencies/index.cjs.map +1 -0
- package/dist/src/services/nodeModelDependencies/index.mjs +86 -0
- package/dist/src/services/nodeModelDependencies/index.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.cjs +6 -128
- package/dist/src/services/openSessionRegistry/index.cjs.map +1 -1
- package/dist/src/services/openSessionRegistry/index.d.mts +5 -36
- package/dist/src/services/openSessionRegistry/index.mjs +6 -128
- package/dist/src/services/openSessionRegistry/index.mjs.map +1 -1
- package/dist/src/services/openSessionRegistry/openSessionRecords.cjs +87 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts +30 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.mjs +81 -0
- package/dist/src/services/openSessionRegistry/openSessionRecords.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.cjs +71 -0
- package/dist/src/services/openSessionRegistry/sync.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.d.mts +14 -0
- package/dist/src/services/openSessionRegistry/sync.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/sync.mjs +68 -0
- package/dist/src/services/openSessionRegistry/sync.mjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.cjs +1 -1
- package/dist/src/services/packageApiHarness/index.cjs.map +1 -1
- package/dist/src/services/packageApiHarness/index.d.mts +6 -6
- package/dist/src/services/packageApiHarness/index.d.mts.map +1 -1
- package/dist/src/services/packageApiHarness/index.mjs +2 -2
- package/dist/src/services/packageApiHarness/index.mjs.map +1 -1
- package/dist/src/services/piArgs/index.cjs +53 -0
- package/dist/src/services/piArgs/index.cjs.map +1 -0
- package/dist/src/services/piArgs/index.d.mts +6 -0
- package/dist/src/services/piArgs/index.d.mts.map +1 -0
- package/dist/src/services/piArgs/index.mjs +53 -0
- package/dist/src/services/piArgs/index.mjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.cjs +47 -39
- package/dist/src/services/piExtensionHost/index.cjs.map +1 -1
- package/dist/src/services/piExtensionHost/index.d.mts +83 -0
- package/dist/src/services/piExtensionHost/index.d.mts.map +1 -0
- package/dist/src/services/piExtensionHost/index.mjs +47 -38
- package/dist/src/services/piExtensionHost/index.mjs.map +1 -1
- package/dist/src/services/piHelpTools/index.cjs +5 -5
- package/dist/src/services/piHelpTools/index.cjs.map +1 -1
- package/dist/src/services/piHelpTools/index.d.mts.map +1 -1
- package/dist/src/services/piHelpTools/index.mjs +7 -7
- package/dist/src/services/piHelpTools/index.mjs.map +1 -1
- package/dist/src/services/piMessages/index.cjs +106 -0
- package/dist/src/services/piMessages/index.cjs.map +1 -0
- package/dist/src/services/piMessages/index.mjs +105 -0
- package/dist/src/services/piMessages/index.mjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.cjs +4 -4
- package/dist/src/services/piSessionEntries/index.cjs.map +1 -1
- package/dist/src/services/piSessionEntries/index.mjs +3 -3
- package/dist/src/services/piSessionEntries/index.mjs.map +1 -1
- package/dist/src/services/piSettings/core.cjs +308 -0
- package/dist/src/services/piSettings/core.cjs.map +1 -0
- package/dist/src/services/piSettings/core.d.mts +102 -0
- package/dist/src/services/piSettings/core.d.mts.map +1 -0
- package/dist/src/services/piSettings/core.mjs +276 -0
- package/dist/src/services/piSettings/core.mjs.map +1 -0
- package/dist/src/services/piSettings/sync.cjs +119 -0
- package/dist/src/services/piSettings/sync.cjs.map +1 -0
- package/dist/src/services/piSettings/sync.d.mts +44 -0
- package/dist/src/services/piSettings/sync.d.mts.map +1 -0
- package/dist/src/services/piSettings/sync.mjs +110 -0
- package/dist/src/services/piSettings/sync.mjs.map +1 -0
- package/dist/src/services/piSummary/index.cjs +7 -0
- package/dist/src/services/piSummary/index.cjs.map +1 -0
- package/dist/src/services/piSummary/index.mjs +7 -0
- package/dist/src/services/piSummary/index.mjs.map +1 -0
- package/dist/src/services/platformFiles/index.cjs +44 -0
- package/dist/src/services/platformFiles/index.cjs.map +1 -0
- package/dist/src/services/platformFiles/index.d.mts +16 -0
- package/dist/src/services/platformFiles/index.d.mts.map +1 -0
- package/dist/src/services/platformFiles/index.mjs +39 -0
- package/dist/src/services/platformFiles/index.mjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.cjs +19 -13
- package/dist/src/services/pluginLifecycle/index.cjs.map +1 -1
- package/dist/src/services/pluginLifecycle/index.d.mts +2 -0
- package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -1
- package/dist/src/services/pluginLifecycle/index.mjs +19 -14
- package/dist/src/services/pluginLifecycle/index.mjs.map +1 -1
- package/dist/src/services/poPackage/core.cjs +73 -0
- package/dist/src/services/poPackage/core.cjs.map +1 -0
- package/dist/src/services/poPackage/core.d.mts +32 -0
- package/dist/src/services/poPackage/core.d.mts.map +1 -0
- package/dist/src/services/poPackage/core.mjs +66 -0
- package/dist/src/services/poPackage/core.mjs.map +1 -0
- package/dist/src/services/poPackage/sync.cjs +55 -0
- package/dist/src/services/poPackage/sync.cjs.map +1 -0
- package/dist/src/services/poPackage/sync.d.mts +21 -0
- package/dist/src/services/poPackage/sync.d.mts.map +1 -0
- package/dist/src/services/poPackage/sync.mjs +50 -0
- package/dist/src/services/poPackage/sync.mjs.map +1 -0
- package/dist/src/services/providerAuth/index.cjs +11 -7
- package/dist/src/services/providerAuth/index.cjs.map +1 -1
- package/dist/src/services/providerAuth/index.mjs +11 -7
- package/dist/src/services/providerAuth/index.mjs.map +1 -1
- package/dist/src/services/publicFileShares/index.cjs +1 -1
- package/dist/src/services/publicFileShares/index.cjs.map +1 -1
- package/dist/src/services/publicFileShares/index.d.mts +2 -2
- package/dist/src/services/publicFileShares/index.mjs +2 -2
- package/dist/src/services/publicFileShares/index.mjs.map +1 -1
- package/dist/src/services/remoteAccess/index.d.mts +1 -0
- package/dist/src/services/remoteAccess/index.d.mts.map +1 -1
- package/dist/src/services/remoteAccessStore/index.cjs +8 -190
- package/dist/src/services/remoteAccessStore/index.cjs.map +1 -1
- package/dist/src/services/remoteAccessStore/index.d.mts +2 -0
- package/dist/src/services/remoteAccessStore/index.mjs +7 -187
- package/dist/src/services/remoteAccessStore/index.mjs.map +1 -1
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs +98 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs +88 -0
- package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs.map +1 -0
- package/dist/src/services/remoteAccessStore/sync.cjs +111 -0
- package/dist/src/services/remoteAccessStore/sync.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/sync.mjs +108 -0
- package/dist/src/services/remoteAccessStore/sync.mjs.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.cjs +23 -0
- package/dist/src/services/runtimeIdentity/sync.cjs.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.d.mts +9 -0
- package/dist/src/services/runtimeIdentity/sync.d.mts.map +1 -0
- package/dist/src/services/runtimeIdentity/sync.mjs +20 -0
- package/dist/src/services/runtimeIdentity/sync.mjs.map +1 -0
- package/dist/src/services/serialRunner/index.cjs +25 -0
- package/dist/src/services/serialRunner/index.cjs.map +1 -0
- package/dist/src/services/serialRunner/index.d.mts +10 -0
- package/dist/src/services/serialRunner/index.d.mts.map +1 -0
- package/dist/src/services/serialRunner/index.mjs +25 -0
- package/dist/src/services/serialRunner/index.mjs.map +1 -0
- package/dist/src/services/{serverFacet → serverHost}/index.cjs +5 -5
- package/dist/src/services/serverHost/index.cjs.map +1 -0
- package/dist/src/services/serverHost/index.d.mts +31 -0
- package/dist/src/services/serverHost/index.d.mts.map +1 -0
- package/dist/src/services/{serverFacet → serverHost}/index.mjs +5 -5
- package/dist/src/services/serverHost/index.mjs.map +1 -0
- package/dist/src/services/sessionAttachments/index.cjs +4 -3
- package/dist/src/services/sessionAttachments/index.cjs.map +1 -1
- package/dist/src/services/sessionAttachments/index.d.mts +1 -6
- package/dist/src/services/sessionAttachments/index.d.mts.map +1 -1
- package/dist/src/services/sessionAttachments/index.mjs +3 -2
- package/dist/src/services/sessionAttachments/index.mjs.map +1 -1
- package/dist/src/services/sessionAttachments/type.d.mts +9 -0
- package/dist/src/services/sessionAttachments/type.d.mts.map +1 -0
- package/dist/src/services/sessionFiles/index.cjs +96 -0
- package/dist/src/services/sessionFiles/index.cjs.map +1 -0
- package/dist/src/services/sessionFiles/index.d.mts +33 -0
- package/dist/src/services/sessionFiles/index.d.mts.map +1 -0
- package/dist/src/services/sessionFiles/index.mjs +89 -0
- package/dist/src/services/sessionFiles/index.mjs.map +1 -0
- package/dist/src/services/sessionFiles/sessionDirectory.cjs +66 -0
- package/dist/src/services/sessionFiles/sessionDirectory.cjs.map +1 -0
- package/dist/src/services/sessionFiles/sessionDirectory.mjs +62 -0
- package/dist/src/services/sessionFiles/sessionDirectory.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.cjs +31 -33
- package/dist/src/services/sessionGitStatus/index.cjs.map +1 -1
- package/dist/src/services/sessionGitStatus/index.mjs +31 -33
- package/dist/src/services/sessionGitStatus/index.mjs.map +1 -1
- package/dist/src/services/sessionPresentation/index.cjs +3 -27
- package/dist/src/services/sessionPresentation/index.cjs.map +1 -1
- package/dist/src/services/sessionPresentation/index.mjs +3 -27
- package/dist/src/services/sessionPresentation/index.mjs.map +1 -1
- package/dist/src/services/skillPrompt/index.cjs +11 -0
- package/dist/src/services/skillPrompt/index.cjs.map +1 -0
- package/dist/src/services/skillPrompt/index.mjs +11 -0
- package/dist/src/services/skillPrompt/index.mjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs +44 -30
- package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -1
- package/dist/src/services/sqliteSessionHistory/index.d.mts +7 -4
- package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -1
- package/dist/src/services/sqliteSessionHistory/index.mjs +43 -28
- package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.cjs +21 -45
- package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.d.mts +3 -2
- package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -1
- package/dist/src/services/sqliteTranscriptReader/index.mjs +16 -38
- package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -1
- package/dist/src/services/testMode/index.cjs +162 -0
- package/dist/src/services/testMode/index.cjs.map +1 -0
- package/dist/src/services/testMode/index.d.mts +17 -0
- package/dist/src/services/testMode/index.d.mts.map +1 -0
- package/dist/src/services/testMode/index.mjs +155 -0
- package/dist/src/services/testMode/index.mjs.map +1 -0
- package/dist/src/services/toolOverrides/index.cjs +6 -6
- package/dist/src/services/toolOverrides/index.cjs.map +1 -1
- package/dist/src/services/toolOverrides/index.d.mts +3 -3
- package/dist/src/services/toolOverrides/index.d.mts.map +1 -1
- package/dist/src/services/toolOverrides/index.mjs +6 -6
- package/dist/src/services/toolOverrides/index.mjs.map +1 -1
- package/dist/src/services/toolPrompt/index.d.mts +17 -0
- package/dist/src/services/toolPrompt/index.d.mts.map +1 -0
- package/dist/src/services/toolSurface/index.cjs +3 -3
- package/dist/src/services/toolSurface/index.cjs.map +1 -1
- package/dist/src/services/toolSurface/index.d.mts +3 -3
- package/dist/src/services/toolSurface/index.d.mts.map +1 -1
- package/dist/src/services/toolSurface/index.mjs +4 -4
- package/dist/src/services/toolSurface/index.mjs.map +1 -1
- package/dist/src/services/traceContext/index.cjs.map +1 -1
- package/dist/src/services/traceContext/index.mjs.map +1 -1
- package/dist/src/services/transcriptPages/index.cjs +159 -33
- package/dist/src/services/transcriptPages/index.cjs.map +1 -1
- package/dist/src/services/transcriptPages/index.mjs +158 -34
- package/dist/src/services/transcriptPages/index.mjs.map +1 -1
- package/dist/src/services/voiceToolsContract/index.cjs +7 -7
- package/dist/src/services/voiceToolsContract/index.cjs.map +1 -1
- package/dist/src/services/voiceToolsContract/index.d.mts +4 -4
- package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -1
- package/dist/src/services/voiceToolsContract/index.mjs +7 -7
- package/dist/src/services/voiceToolsContract/index.mjs.map +1 -1
- package/dist/src/services/workspaceRegistry/index.cjs +9 -179
- package/dist/src/services/workspaceRegistry/index.cjs.map +1 -1
- package/dist/src/services/workspaceRegistry/index.d.mts +5 -47
- package/dist/src/services/workspaceRegistry/index.mjs +7 -176
- package/dist/src/services/workspaceRegistry/index.mjs.map +1 -1
- package/dist/src/services/workspaceRegistry/sync.cjs +148 -0
- package/dist/src/services/workspaceRegistry/sync.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/sync.d.mts +34 -0
- package/dist/src/services/workspaceRegistry/sync.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/sync.mjs +140 -0
- package/dist/src/services/workspaceRegistry/sync.mjs.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.cjs +114 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts +31 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.mjs +101 -0
- package/dist/src/services/workspaceRegistry/workspaceRecords.mjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +339 -202
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -1
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +16 -21
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -1
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +329 -191
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -1
- package/dist/src/systems/child/services/childSession/index.cjs +94 -20
- package/dist/src/systems/child/services/childSession/index.cjs.map +1 -1
- package/dist/src/systems/child/services/childSession/index.d.mts +12 -3
- package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -1
- package/dist/src/systems/child/services/childSession/index.mjs +94 -20
- package/dist/src/systems/child/services/childSession/index.mjs.map +1 -1
- package/dist/src/systems/child/types/childSession.cjs +33 -13
- package/dist/src/systems/child/types/childSession.cjs.map +1 -1
- package/dist/src/systems/child/types/childSession.d.mts +143 -80
- package/dist/src/systems/child/types/childSession.d.mts.map +1 -1
- package/dist/src/systems/child/types/childSession.mjs +24 -9
- package/dist/src/systems/child/types/childSession.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.cjs +30 -27
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.d.mts +22 -22
- package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessHost.mjs +33 -30
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +248 -229
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +4 -5
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +239 -219
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
- package/dist/src/systems/main/types/headlessHost.d.mts +16 -14
- package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -1
- package/dist/src/testing/pi/testHost.cjs +2 -2
- package/dist/src/testing/pi/testHost.cjs.map +1 -1
- package/dist/src/testing/pi/testHost.d.mts +3 -2
- package/dist/src/testing/pi/testHost.mjs +3 -3
- package/dist/src/testing/pi/testHost.mjs.map +1 -1
- package/dist/src/types/config.d.mts +1 -1
- package/dist/src/types/config.d.mts.map +1 -1
- package/dist/src/types/kernel.d.mts +3 -3
- package/dist/src/types/server/directHarnessRuntime.d.mts +54 -25
- package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -1
- package/dist/src/types/server/sessionToolSurface.d.mts +9 -9
- package/dist/src/web/services/apiClient/index.d.mts +1 -0
- package/dist/src/web/services/apiPaths/index.cjs.map +1 -1
- package/dist/src/web/services/apiPaths/index.d.mts +1 -1
- package/dist/src/web/services/apiPaths/index.mjs.map +1 -1
- package/dist/src/web/services/mcpWidget.cjs.map +1 -1
- package/dist/src/web/services/mcpWidget.d.mts +2 -2
- package/dist/src/web/services/mcpWidget.d.mts.map +1 -1
- package/dist/src/web/services/mcpWidget.mjs.map +1 -1
- package/dist/src/web/services/testing/templateRail.cjs +3 -0
- package/dist/src/web/services/testing/templateRail.cjs.map +1 -1
- package/dist/src/web/services/testing/templateRail.mjs +3 -0
- package/dist/src/web/services/testing/templateRail.mjs.map +1 -1
- package/dist/src/web/types/mcpWidget.d.mts +1 -1
- package/dist/src/web/types/nativeTemplate.d.mts +1 -1
- package/dist/src/web/types/nativeTemplate.d.mts.map +1 -1
- package/dist/src/web/types/template.d.mts +8 -0
- package/dist/src/web/types/template.d.mts.map +1 -1
- package/dist/src/web/types/webPlugin.d.mts +17 -5
- package/dist/src/web/types/webPlugin.d.mts.map +1 -1
- package/dist/testMode.cjs +4 -0
- package/dist/testMode.d.mts +2 -0
- package/dist/testMode.mjs +1 -0
- package/dist/testing.cjs +1 -1
- package/dist/testing.d.mts +2 -2
- package/dist/testing.mjs +2 -2
- package/dist/toolInventory.cjs.map +1 -1
- package/dist/toolInventory.mjs.map +1 -1
- package/dist/toolNames.mjs +1 -2
- package/dist/toolOverrides.cjs +4 -4
- package/dist/toolOverrides.d.mts +3 -3
- package/dist/toolOverrides.mjs +3 -3
- package/dist/toolSurface.cjs +4 -4
- package/dist/toolSurface.d.mts +3 -3
- package/dist/toolSurface.mjs +3 -3
- package/dist/transition.cjs +3 -3
- package/dist/transition.d.cjs +3 -3
- package/dist/transition.d.mts +2 -2
- package/dist/transition.mjs +1 -2
- package/dist/transitionClassifier.cjs.map +1 -1
- package/dist/transitionClassifier.d.mts +2 -2
- package/dist/transitionClassifier.d.mts.map +1 -1
- package/dist/transitionClassifier.mjs.map +1 -1
- package/dist/transitionCoordinator.cjs +3 -3
- package/dist/transitionCoordinator.cjs.map +1 -1
- package/dist/transitionCoordinator.d.mts +4 -4
- package/dist/transitionCoordinator.d.mts.map +1 -1
- package/dist/transitionCoordinator.mjs +3 -3
- package/dist/transitionCoordinator.mjs.map +1 -1
- package/dist/typesContextApi.d.mts +2 -1
- package/dist/typesContextApi.d.mts.map +1 -1
- package/dist/uiHub.cjs +3 -3
- package/dist/uiHub.d.mts +2 -2
- package/dist/uiHub.mjs +1 -2
- package/dist/voiceTools.cjs +5 -5
- package/dist/voiceTools.d.mts +3 -3
- package/dist/voiceTools.mjs +3 -3
- package/dist/web.cjs +8 -0
- package/dist/web.d.mts +3 -2
- package/dist/web.mjs +2 -1
- package/dist/webCompositions.cjs.map +1 -1
- package/dist/webCompositions.d.mts +7 -7
- package/dist/webCompositions.d.mts.map +1 -1
- package/dist/webCompositions.mjs.map +1 -1
- package/licenses/Codex-Apache-2.0.txt +201 -0
- package/package.json +58 -53
- package/dist/doomPackage.cjs +0 -61
- package/dist/doomPackage.cjs.map +0 -1
- package/dist/doomPackage.d.mts +0 -17
- package/dist/doomPackage.d.mts.map +0 -1
- package/dist/doomPackage.mjs +0 -54
- package/dist/doomPackage.mjs.map +0 -1
- package/dist/jsonlSessionRepo.cjs +0 -44
- package/dist/jsonlSessionRepo.cjs.map +0 -1
- package/dist/jsonlSessionRepo.d.mts +0 -7
- package/dist/jsonlSessionRepo.d.mts.map +0 -1
- package/dist/jsonlSessionRepo.mjs +0 -42
- package/dist/jsonlSessionRepo.mjs.map +0 -1
- package/dist/runtimeJson.cjs.map +0 -1
- package/dist/runtimeJson.d.mts.map +0 -1
- package/dist/runtimeJson.mjs.map +0 -1
- package/dist/runtimePiSettings.cjs.map +0 -1
- package/dist/runtimePiSettings.d.mts.map +0 -1
- package/dist/runtimePiSettings.mjs.map +0 -1
- package/dist/serverFacet.cjs +0 -34
- package/dist/serverFacet.d.mts +0 -10
- package/dist/serverFacet.mjs +0 -9
- package/dist/src/pi/piWebSocketListener.cjs +0 -115
- package/dist/src/pi/piWebSocketListener.cjs.map +0 -1
- package/dist/src/pi/piWebSocketListener.mjs +0 -115
- package/dist/src/pi/piWebSocketListener.mjs.map +0 -1
- package/dist/src/schemas/serverFacet.cjs +0 -111
- package/dist/src/schemas/serverFacet.cjs.map +0 -1
- package/dist/src/schemas/serverFacet.d.mts +0 -152
- package/dist/src/schemas/serverFacet.d.mts.map +0 -1
- package/dist/src/schemas/serverFacet.mjs +0 -101
- package/dist/src/schemas/serverFacet.mjs.map +0 -1
- package/dist/src/schemas/sessionUpdates.d.mts +0 -34
- package/dist/src/schemas/sessionUpdates.d.mts.map +0 -1
- package/dist/src/server/headlessProtocol.cjs +0 -382
- package/dist/src/server/headlessProtocol.cjs.map +0 -1
- package/dist/src/server/headlessProtocol.mjs +0 -382
- package/dist/src/server/headlessProtocol.mjs.map +0 -1
- package/dist/src/server/nativeChildTranscriptReader.cjs +0 -20
- package/dist/src/server/nativeChildTranscriptReader.cjs.map +0 -1
- package/dist/src/server/nativeChildTranscriptReader.mjs +0 -18
- package/dist/src/server/nativeChildTranscriptReader.mjs.map +0 -1
- package/dist/src/server/serverFacetLoader.cjs +0 -214
- package/dist/src/server/serverFacetLoader.cjs.map +0 -1
- package/dist/src/server/serverFacetLoader.d.mts +0 -72
- package/dist/src/server/serverFacetLoader.d.mts.map +0 -1
- package/dist/src/server/serverFacetLoader.mjs +0 -212
- package/dist/src/server/serverFacetLoader.mjs.map +0 -1
- package/dist/src/services/acpSessionUpdates/index.cjs +0 -129
- package/dist/src/services/acpSessionUpdates/index.cjs.map +0 -1
- package/dist/src/services/acpSessionUpdates/index.mjs +0 -129
- package/dist/src/services/acpSessionUpdates/index.mjs.map +0 -1
- package/dist/src/services/historyImport/index.cjs +0 -8
- package/dist/src/services/historyImport/index.cjs.map +0 -1
- package/dist/src/services/historyImport/index.d.mts +0 -68
- package/dist/src/services/historyImport/index.d.mts.map +0 -1
- package/dist/src/services/historyImport/index.mjs +0 -8
- package/dist/src/services/historyImport/index.mjs.map +0 -1
- package/dist/src/services/openSessionRegistry/index.d.mts.map +0 -1
- package/dist/src/services/requestReceipts/index.cjs.map +0 -1
- package/dist/src/services/requestReceipts/index.d.mts +0 -11
- package/dist/src/services/requestReceipts/index.d.mts.map +0 -1
- package/dist/src/services/requestReceipts/index.mjs.map +0 -1
- package/dist/src/services/rpcTranscript/index.cjs +0 -633
- package/dist/src/services/rpcTranscript/index.cjs.map +0 -1
- package/dist/src/services/rpcTranscript/index.d.mts +0 -50
- package/dist/src/services/rpcTranscript/index.d.mts.map +0 -1
- package/dist/src/services/rpcTranscript/index.mjs +0 -632
- package/dist/src/services/rpcTranscript/index.mjs.map +0 -1
- package/dist/src/services/serverFacet/index.cjs.map +0 -1
- package/dist/src/services/serverFacet/index.d.mts +0 -31
- package/dist/src/services/serverFacet/index.d.mts.map +0 -1
- package/dist/src/services/serverFacet/index.mjs.map +0 -1
- package/dist/src/services/workspaceRegistry/index.d.mts.map +0 -1
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +0 -28
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +0 -1
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +0 -25
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +0 -1
- package/dist/terminalPiChildSessionService.cjs +0 -324
- package/dist/terminalPiChildSessionService.cjs.map +0 -1
- package/dist/terminalPiChildSessionService.d.mts +0 -46
- package/dist/terminalPiChildSessionService.d.mts.map +0 -1
- package/dist/terminalPiChildSessionService.mjs +0 -318
- package/dist/terminalPiChildSessionService.mjs.map +0 -1
- package/dist/v3Export.cjs +0 -10
- package/dist/v3Export.cjs.map +0 -1
- package/dist/v3Export.d.mts +0 -35
- package/dist/v3Export.d.mts.map +0 -1
- package/dist/v3Export.mjs +0 -9
- package/dist/v3Export.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextProjection.mjs","names":[],"sources":["../src/services/contextProjection/index.ts"],"sourcesContent":["/** What admitted a package into the composition. */\nexport interface PackageAttribution {\n /** `major` for a layer package, `domain` for a plugin a domain carries. */\n kind: 'major' | 'domain';\n /** The major mode name, or the domain name. */\n mode: string;\n /** The layer the package was listed under; absent for a domain plugin. */\n layer?: string;\n}\n\nimport type { ContextPromptStage } from '../../types/contextApi';\nimport { type CountTokens, type ToolEntry, type ToolSource, tokensForTool } from '../toolInventory';\n\n/**\n * What the session is carrying, and what carrying it costs.\n *\n * Grouped by the mode that admitted each package rather than by where the tool\n * came from, because a mode is the thing a reader can switch off. The mechanism\n * (extension, MCP server, plugin) orders rows inside a group instead, so the\n * expensive thing is still easy to find.\n *\n * Schemas never travel. Only names, kinds, owners and integer counts do, which\n * keeps the payload small enough to republish whenever the composition changes.\n */\nexport const CONTEXT_PROJECTION_VERSION = 1;\n\n/** Journal entry the cockpit reads; mirrored by CONTEXT_ENTRY_TYPE in po-web. */\nexport const DOOM_CONTEXT_ENTRY_TYPE = 'doom-context';\n\n/** The tokenizer these counts came from, so a reader can judge them. */\nexport const CONTEXT_PROJECTION_ESTIMATOR = 'gpt-tokenizer';\n\nexport type ContextGroupKind = 'major' | 'minor' | 'domain' | 'core';\nexport type ContextItemSource = 'extension' | 'mcp' | 'plugin' | 'core';\n\n/** Everything the runtime could not attribute lands here rather than vanishing. */\nconst CORE_GROUP = 'core';\n/** Pi's own tools have no package; the runtime itself is the owner. */\nconst CORE_OWNER = 'pi';\nconst MCP_KEY_PREFIX = 'mcp:';\n\nconst KIND_ORDER: Record<ContextGroupKind, number> = { major: 0, minor: 1, domain: 2, core: 3 };\nconst SOURCE_ORDER: Record<ContextItemSource, number> = { extension: 0, mcp: 1, plugin: 2, core: 3 };\n\nexport interface ContextItemProjection {\n readonly name: string;\n readonly itemKind: 'tool' | 'skill';\n readonly source: ContextItemSource;\n /** The package, server, or plugin that registered it. */\n readonly owner: string;\n readonly tokens: number;\n readonly active: boolean;\n}\n\nexport interface ContextGroupProjection {\n readonly id: string;\n readonly label: string;\n readonly kind: ContextGroupKind;\n readonly items: readonly ContextItemProjection[];\n /** What the group costs now: active items only. */\n readonly tokens: number;\n /** What its gated items would add if switched on. */\n readonly inactiveTokens: number;\n}\n\n/**\n * What the assembled system prompt costs, and how complete the figure is.\n *\n * Kept out of `groups` on purpose. Every tool's prose and every skill's listing\n * already count inside the group subtotals, and those are slices of this same\n * text, so folding it into `totalTokens` would bill them twice.\n */\nexport interface ContextSystemPromptProjection {\n readonly tokens: number;\n readonly stage: ContextPromptStage;\n}\n\nexport interface ContextProjection {\n readonly version: typeof CONTEXT_PROJECTION_VERSION;\n readonly revision: number;\n /** Selection snapshot used to build this projection, replayable after reconnect. */\n readonly selection: {\n readonly majorMode: string;\n readonly domains: readonly string[];\n readonly profile?: string;\n };\n readonly groups: readonly ContextGroupProjection[];\n readonly totalTokens: number;\n readonly inactiveTokens: number;\n readonly systemPrompt?: ContextSystemPromptProjection;\n readonly estimator: typeof CONTEXT_PROJECTION_ESTIMATOR;\n}\n\nexport interface ContextConditionalAttribution {\n readonly kind: 'minor' | 'domain';\n readonly mode: string;\n readonly label?: string;\n}\n\nexport interface ContextToolInventory extends ToolEntry {\n /** A contribution-level gate is more specific than its package's major-mode owner. */\n readonly contextAttribution?: ContextConditionalAttribution;\n}\n\nexport interface ContextToolSource extends Omit<ToolSource, 'tools'> {\n readonly tools: readonly ContextToolInventory[];\n}\n\n/** Skill fields needed to project cost and serve detail. Virtual resources may not have a filesystem path. */\nexport interface ContextSkillInventory {\n readonly name: string;\n readonly description: string;\n readonly group: 'extensions' | 'help' | 'plugins' | 'default';\n readonly owner: string;\n readonly modelInvocable: boolean;\n readonly promptTokens?: number;\n readonly filePath?: string;\n /** The skill's instructions, when the host holds them; read only when a reader opens the row. */\n readonly body?: string;\n readonly contextAttribution?: ContextConditionalAttribution;\n}\n\nexport interface ContextProjectionInput {\n readonly revision: number;\n readonly majorMode: string;\n readonly profile?: string;\n /** Additional groups supplied by the composition owner, in display order. */\n readonly groups: readonly { readonly id: string; readonly label: string; readonly kind: ContextGroupKind }[];\n /** Domains the composition resolved under, whether or not they carried a plugin. */\n readonly domains: readonly string[];\n readonly sources: readonly ContextToolSource[];\n readonly skills: readonly ContextSkillInventory[];\n /**\n * Owner identifier to the mode that admitted it.\n *\n * Keys are package names for extensions and layer packages, and plugin or\n * server names for anything a domain carries. The caller owns this join\n * because only it knows how a given deployment resolved its plugins.\n */\n readonly attribution: Readonly<Record<string, PackageAttribution>>;\n readonly countTokens: CountTokens;\n /** Absent until the session has a prompt to report. */\n readonly systemPrompt?: ContextSystemPromptProjection;\n}\n\ninterface Bucket {\n kind: ContextGroupKind;\n label: string;\n items: ContextItemProjection[];\n}\n\nfunction skillSource(group: ContextSkillInventory['group']): ContextItemSource {\n if (group === 'plugins') return 'plugin';\n if (group === 'extensions') return 'extension';\n return 'core';\n}\n\nfunction byRow(left: ContextItemProjection, right: ContextItemProjection): number {\n return SOURCE_ORDER[left.source] - SOURCE_ORDER[right.source] || left.name.localeCompare(right.name);\n}\n\nexport function projectContext(input: ContextProjectionInput): ContextProjection {\n const buckets = new Map<string, Bucket>();\n\n // Declared before anything is placed, so a mode with nothing attributed to it\n // still appears. An empty group is a fact worth showing: it says the mode is\n // on and cheap, not that the runtime forgot about it.\n const declare = (id: string, label: string, kind: ContextGroupKind): void => {\n if (!buckets.has(id)) buckets.set(id, { kind, label, items: [] });\n };\n if (input.majorMode) declare(input.majorMode, input.majorMode, 'major');\n for (const group of input.groups) declare(group.id, group.label, group.kind);\n // A domain that contributed no plugin is still part of what the session is\n // running under, and a reader comparing the panel against the footer would\n // otherwise read its absence as the panel being out of date.\n for (const domain of input.domains) declare(domain, domain, 'domain');\n\n const place = (owner: string, item: ContextItemProjection, conditional?: ContextConditionalAttribution): void => {\n const attributed = conditional ?? input.attribution[owner];\n const id = attributed?.mode ?? CORE_GROUP;\n const kind = attributed?.kind ?? 'core';\n declare(id, attributed && 'label' in attributed ? (attributed.label ?? id) : id, kind);\n buckets.get(id)?.items.push(item);\n };\n\n for (const source of input.sources) {\n // An extension is owned by its package, an MCP tool by the server that\n // advertised it. `label` is display text like `scaffold · mcp`, so the\n // identifier comes from the key instead: an owner is joined on, not read.\n const owner =\n source.kind === 'extension'\n ? (source.packageName ?? source.key)\n : source.kind === 'mcp'\n ? source.key.slice(MCP_KEY_PREFIX.length)\n : CORE_OWNER;\n for (const tool of source.tools) {\n const cost = tokensForTool(tool, input.countTokens);\n const item: ContextItemProjection = {\n name: tool.name,\n itemKind: 'tool',\n source: source.kind === 'core' ? 'core' : source.kind,\n owner,\n tokens: cost.totalTokens,\n active: tool.active,\n };\n if (source.kind === 'core') {\n declare(CORE_GROUP, CORE_GROUP, 'core');\n buckets.get(CORE_GROUP)?.items.push(item);\n } else {\n place(owner, item, tool.contextAttribution);\n }\n }\n }\n\n for (const skill of input.skills) {\n place(\n skill.owner,\n {\n name: skill.name,\n itemKind: 'skill',\n source: skillSource(skill.group),\n owner: skill.owner,\n tokens: skill.promptTokens ?? 0,\n // A skill is always offered to the model; there is no inactive state for\n // it the way there is for a tool Pi has filtered out.\n active: true,\n },\n skill.contextAttribution,\n );\n }\n\n const groups: ContextGroupProjection[] = [...buckets.entries()]\n .map(([id, bucket]) => {\n const items = [...bucket.items].sort(byRow);\n // Only what is actually sent counts. Pi builds the prompt from its\n // active tools, so a gated one costs nothing until it is switched on,\n // and folding it into the total would overstate the bill by a third.\n return {\n id,\n label: bucket.label,\n kind: bucket.kind,\n items,\n tokens: items.reduce((total, item) => total + (item.active ? item.tokens : 0), 0),\n inactiveTokens: items.reduce((total, item) => total + (item.active ? 0 : item.tokens), 0),\n };\n })\n .sort((left, right) => KIND_ORDER[left.kind] - KIND_ORDER[right.kind] || left.label.localeCompare(right.label));\n\n return {\n version: CONTEXT_PROJECTION_VERSION,\n revision: input.revision,\n selection: {\n majorMode: input.majorMode,\n domains: [...input.domains],\n ...(input.profile === undefined ? {} : { profile: input.profile }),\n },\n groups,\n totalTokens: groups.reduce((total, group) => total + group.tokens, 0),\n inactiveTokens: groups.reduce((total, group) => total + group.inactiveTokens, 0),\n ...(input.systemPrompt === undefined ? {} : { systemPrompt: input.systemPrompt }),\n estimator: CONTEXT_PROJECTION_ESTIMATOR,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contextProjection.mjs","names":[],"sources":["../src/services/contextProjection/index.ts"],"sourcesContent":["/** What admitted a package into the composition. */\nexport interface PackageAttribution {\n /** `major` for a layer package, `domain` for a plugin a domain carries. */\n kind: 'major' | 'domain';\n /** The major mode name, or the domain name. */\n mode: string;\n /** The layer the package was listed under; absent for a domain plugin. */\n layer?: string;\n}\n\nimport type { ContextPromptStage } from '../../types/contextApi';\nimport { type CountTokens, type ToolEntry, type ToolSource, tokensForTool } from '../toolInventory';\n\n/**\n * What the session is carrying, and what carrying it costs.\n *\n * Grouped by the mode that admitted each package rather than by where the tool\n * came from, because a mode is the thing a reader can switch off. The mechanism\n * (extension, MCP server, plugin) orders rows inside a group instead, so the\n * expensive thing is still easy to find.\n *\n * Schemas never travel. Only names, kinds, owners and integer counts do, which\n * keeps the payload small enough to republish whenever the composition changes.\n */\nexport const CONTEXT_PROJECTION_VERSION = 1;\n\n/** Journal entry the cockpit reads; mirrored by CONTEXT_ENTRY_TYPE in po-web. */\nexport const PO_CONTEXT_ENTRY_TYPE = 'po-context';\n\n/** Session selection and transition journal identities, not transport channels. */\nexport const PO_CONFIG_ENTRY_TYPE = 'po:config:v1';\nexport const PO_CONFIG_TRANSITION_ENTRY_TYPE = 'po:transition:v1';\n\n/** The tokenizer these counts came from, so a reader can judge them. */\nexport const CONTEXT_PROJECTION_ESTIMATOR = 'gpt-tokenizer';\n\nexport type ContextGroupKind = 'major' | 'minor' | 'domain' | 'core';\nexport type ContextItemSource = 'extension' | 'mcp' | 'plugin' | 'core';\n\n/** Everything the runtime could not attribute lands here rather than vanishing. */\nconst CORE_GROUP = 'core';\n/** Pi's own tools have no package; the runtime itself is the owner. */\nconst CORE_OWNER = 'pi';\nconst MCP_KEY_PREFIX = 'mcp:';\n\nconst KIND_ORDER: Record<ContextGroupKind, number> = { major: 0, minor: 1, domain: 2, core: 3 };\nconst SOURCE_ORDER: Record<ContextItemSource, number> = { extension: 0, mcp: 1, plugin: 2, core: 3 };\n\nexport interface ContextItemProjection {\n readonly name: string;\n readonly itemKind: 'tool' | 'skill';\n readonly source: ContextItemSource;\n /** The package, server, or plugin that registered it. */\n readonly owner: string;\n readonly tokens: number;\n readonly active: boolean;\n}\n\nexport interface ContextGroupProjection {\n readonly id: string;\n readonly label: string;\n readonly kind: ContextGroupKind;\n readonly items: readonly ContextItemProjection[];\n /** What the group costs now: active items only. */\n readonly tokens: number;\n /** What its gated items would add if switched on. */\n readonly inactiveTokens: number;\n}\n\n/**\n * What the assembled system prompt costs, and how complete the figure is.\n *\n * Kept out of `groups` on purpose. Every tool's prose and every skill's listing\n * already count inside the group subtotals, and those are slices of this same\n * text, so folding it into `totalTokens` would bill them twice.\n */\nexport interface ContextSystemPromptProjection {\n readonly tokens: number;\n readonly stage: ContextPromptStage;\n}\n\nexport interface ContextProjection {\n readonly version: typeof CONTEXT_PROJECTION_VERSION;\n readonly revision: number;\n /** Selection snapshot used to build this projection, replayable after reconnect. */\n readonly selection: {\n readonly majorMode: string;\n readonly domains: readonly string[];\n readonly profile?: string;\n };\n readonly groups: readonly ContextGroupProjection[];\n readonly totalTokens: number;\n readonly inactiveTokens: number;\n readonly systemPrompt?: ContextSystemPromptProjection;\n readonly estimator: typeof CONTEXT_PROJECTION_ESTIMATOR;\n}\n\nexport interface ContextConditionalAttribution {\n readonly kind: 'minor' | 'domain';\n readonly mode: string;\n readonly label?: string;\n}\n\nexport interface ContextToolInventory extends ToolEntry {\n /** A contribution-level gate is more specific than its package's major-mode owner. */\n readonly contextAttribution?: ContextConditionalAttribution;\n}\n\nexport interface ContextToolSource extends Omit<ToolSource, 'tools'> {\n readonly tools: readonly ContextToolInventory[];\n}\n\n/** Skill fields needed to project cost and serve detail. Virtual resources may not have a filesystem path. */\nexport interface ContextSkillInventory {\n readonly name: string;\n readonly description: string;\n readonly group: 'extensions' | 'help' | 'plugins' | 'default';\n readonly owner: string;\n readonly modelInvocable: boolean;\n readonly promptTokens?: number;\n readonly filePath?: string;\n /** The skill's instructions, when the host holds them; read only when a reader opens the row. */\n readonly body?: string;\n readonly contextAttribution?: ContextConditionalAttribution;\n}\n\nexport interface ContextProjectionInput {\n readonly revision: number;\n readonly majorMode: string;\n readonly profile?: string;\n /** Additional groups supplied by the composition owner, in display order. */\n readonly groups: readonly { readonly id: string; readonly label: string; readonly kind: ContextGroupKind }[];\n /** Domains the composition resolved under, whether or not they carried a plugin. */\n readonly domains: readonly string[];\n readonly sources: readonly ContextToolSource[];\n readonly skills: readonly ContextSkillInventory[];\n /**\n * Owner identifier to the mode that admitted it.\n *\n * Keys are package names for extensions and layer packages, and plugin or\n * server names for anything a domain carries. The caller owns this join\n * because only it knows how a given deployment resolved its plugins.\n */\n readonly attribution: Readonly<Record<string, PackageAttribution>>;\n readonly countTokens: CountTokens;\n /** Absent until the session has a prompt to report. */\n readonly systemPrompt?: ContextSystemPromptProjection;\n}\n\ninterface Bucket {\n kind: ContextGroupKind;\n label: string;\n items: ContextItemProjection[];\n}\n\nfunction skillSource(group: ContextSkillInventory['group']): ContextItemSource {\n if (group === 'plugins') return 'plugin';\n if (group === 'extensions') return 'extension';\n return 'core';\n}\n\nfunction byRow(left: ContextItemProjection, right: ContextItemProjection): number {\n return SOURCE_ORDER[left.source] - SOURCE_ORDER[right.source] || left.name.localeCompare(right.name);\n}\n\nexport function projectContext(input: ContextProjectionInput): ContextProjection {\n const buckets = new Map<string, Bucket>();\n\n // Declared before anything is placed, so a mode with nothing attributed to it\n // still appears. An empty group is a fact worth showing: it says the mode is\n // on and cheap, not that the runtime forgot about it.\n const declare = (id: string, label: string, kind: ContextGroupKind): void => {\n if (!buckets.has(id)) buckets.set(id, { kind, label, items: [] });\n };\n if (input.majorMode) declare(input.majorMode, input.majorMode, 'major');\n for (const group of input.groups) declare(group.id, group.label, group.kind);\n // A domain that contributed no plugin is still part of what the session is\n // running under, and a reader comparing the panel against the footer would\n // otherwise read its absence as the panel being out of date.\n for (const domain of input.domains) declare(domain, domain, 'domain');\n\n const place = (owner: string, item: ContextItemProjection, conditional?: ContextConditionalAttribution): void => {\n const attributed = conditional ?? input.attribution[owner];\n const id = attributed?.mode ?? CORE_GROUP;\n const kind = attributed?.kind ?? 'core';\n declare(id, attributed && 'label' in attributed ? (attributed.label ?? id) : id, kind);\n buckets.get(id)?.items.push(item);\n };\n\n for (const source of input.sources) {\n // An extension is owned by its package, an MCP tool by the server that\n // advertised it. `label` is display text like `scaffold · mcp`, so the\n // identifier comes from the key instead: an owner is joined on, not read.\n const owner =\n source.kind === 'extension'\n ? (source.packageName ?? source.key)\n : source.kind === 'mcp'\n ? source.key.slice(MCP_KEY_PREFIX.length)\n : CORE_OWNER;\n for (const tool of source.tools) {\n const cost = tokensForTool(tool, input.countTokens);\n const item: ContextItemProjection = {\n name: tool.name,\n itemKind: 'tool',\n source: source.kind === 'core' ? 'core' : source.kind,\n owner,\n tokens: cost.totalTokens,\n active: tool.active,\n };\n if (source.kind === 'core') {\n declare(CORE_GROUP, CORE_GROUP, 'core');\n buckets.get(CORE_GROUP)?.items.push(item);\n } else {\n place(owner, item, tool.contextAttribution);\n }\n }\n }\n\n for (const skill of input.skills) {\n place(\n skill.owner,\n {\n name: skill.name,\n itemKind: 'skill',\n source: skillSource(skill.group),\n owner: skill.owner,\n tokens: skill.promptTokens ?? 0,\n // A skill is always offered to the model; there is no inactive state for\n // it the way there is for a tool Pi has filtered out.\n active: true,\n },\n skill.contextAttribution,\n );\n }\n\n const groups: ContextGroupProjection[] = [...buckets.entries()]\n .map(([id, bucket]) => {\n const items = [...bucket.items].sort(byRow);\n // Only what is actually sent counts. Pi builds the prompt from its\n // active tools, so a gated one costs nothing until it is switched on,\n // and folding it into the total would overstate the bill by a third.\n return {\n id,\n label: bucket.label,\n kind: bucket.kind,\n items,\n tokens: items.reduce((total, item) => total + (item.active ? item.tokens : 0), 0),\n inactiveTokens: items.reduce((total, item) => total + (item.active ? 0 : item.tokens), 0),\n };\n })\n .sort((left, right) => KIND_ORDER[left.kind] - KIND_ORDER[right.kind] || left.label.localeCompare(right.label));\n\n return {\n version: CONTEXT_PROJECTION_VERSION,\n revision: input.revision,\n selection: {\n majorMode: input.majorMode,\n domains: [...input.domains],\n ...(input.profile === undefined ? {} : { profile: input.profile }),\n },\n groups,\n totalTokens: groups.reduce((total, group) => total + group.tokens, 0),\n inactiveTokens: groups.reduce((total, group) => total + group.inactiveTokens, 0),\n ...(input.systemPrompt === undefined ? {} : { systemPrompt: input.systemPrompt }),\n estimator: CONTEXT_PROJECTION_ESTIMATOR,\n };\n}\n"],"mappings":"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"}
|
package/dist/cordisHost.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_runtimeCordisHost = require("./runtimeCordisHost.cjs");
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
3
|
+
exports.PO_CORDIS_HOST_ABI_VERSION = require_runtimeCordisHost.PO_CORDIS_HOST_ABI_VERSION;
|
|
4
|
+
exports.PO_CORDIS_HOST_QUERY_CHANNEL = require_runtimeCordisHost.PO_CORDIS_HOST_QUERY_CHANNEL;
|
|
5
|
+
exports.PO_CORDIS_RUNTIME_SERVICE = require_runtimeCordisHost.PO_CORDIS_RUNTIME_SERVICE;
|
|
6
|
+
exports.PO_CORDIS_SERVER_SERVICES = require_runtimeCordisHost.PO_CORDIS_SERVER_SERVICES;
|
|
7
|
+
exports.PO_CORDIS_SESSION_SERVICE = require_runtimeCordisHost.PO_CORDIS_SESSION_SERVICE;
|
|
8
|
+
exports.connectPoCordisHost = require_runtimeCordisHost.connectPoCordisHost;
|
|
9
|
+
exports.finalizePoCordisHost = require_runtimeCordisHost.finalizePoCordisHost;
|
|
10
|
+
exports.installPoCordisHost = require_runtimeCordisHost.installPoCordisHost;
|
|
11
|
+
exports.readPoSessionEnvironment = require_runtimeCordisHost.readPoSessionEnvironment;
|
|
12
|
+
exports.registerPoSessionEnvironment = require_runtimeCordisHost.registerPoSessionEnvironment;
|
|
13
|
+
exports.requirePoCordisSession = require_runtimeCordisHost.requirePoCordisSession;
|
package/dist/cordisHost.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { InstallPoCordisHostOptions, PO_CORDIS_HOST_ABI_VERSION, PO_CORDIS_HOST_QUERY_CHANNEL, PO_CORDIS_RUNTIME_SERVICE, PO_CORDIS_SERVER_SERVICES, PO_CORDIS_SESSION_SERVICE, PoCordisHostConnection, PoCordisHostController, PoCordisHostMode, PoCordisRuntimeService, PoCordisServerServices, PoCordisSessionService, connectPoCordisHost, finalizePoCordisHost, installPoCordisHost, readPoSessionEnvironment, registerPoSessionEnvironment, requirePoCordisSession } from "./runtimeCordisHost.mjs";
|
|
2
|
+
export { type InstallPoCordisHostOptions, PO_CORDIS_HOST_ABI_VERSION, PO_CORDIS_HOST_QUERY_CHANNEL, PO_CORDIS_RUNTIME_SERVICE, PO_CORDIS_SERVER_SERVICES, PO_CORDIS_SESSION_SERVICE, type PoCordisHostConnection, type PoCordisHostController, type PoCordisHostMode, type PoCordisRuntimeService, type PoCordisServerServices, type PoCordisSessionService, connectPoCordisHost, finalizePoCordisHost, installPoCordisHost, readPoSessionEnvironment, registerPoSessionEnvironment, requirePoCordisSession };
|
package/dist/cordisHost.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { DOOM_CORDIS_HOST_ABI_VERSION, DOOM_CORDIS_HOST_QUERY_CHANNEL, DOOM_CORDIS_RUNTIME_SERVICE, DOOM_CORDIS_SERVER_SERVICES, DOOM_CORDIS_SESSION_SERVICE, connectDoomCordisHost, finalizeDoomCordisHost, installDoomCordisHost, readDoomSessionEnvironment, registerDoomSessionEnvironment, requireDoomCordisSession };
|
|
1
|
+
export { PO_CORDIS_HOST_ABI_VERSION, PO_CORDIS_HOST_QUERY_CHANNEL, PO_CORDIS_RUNTIME_SERVICE, PO_CORDIS_SERVER_SERVICES, PO_CORDIS_SESSION_SERVICE, connectPoCordisHost, finalizePoCordisHost, installPoCordisHost, readPoSessionEnvironment, registerPoSessionEnvironment, requirePoCordisSession } from "./runtimeCordisHost.mjs";
|
package/dist/delegation.cjs
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_delegation = require("./src/schemas/delegation.cjs");
|
|
3
|
-
exports.DOOM_DELEGATION_ACCEPTED_EVENT = require_delegation.DOOM_DELEGATION_ACCEPTED_EVENT;
|
|
4
|
-
exports.DOOM_DELEGATION_CANCELLED_EVENT = require_delegation.DOOM_DELEGATION_CANCELLED_EVENT;
|
|
5
|
-
exports.DOOM_DELEGATION_FINISHED_EVENT = require_delegation.DOOM_DELEGATION_FINISHED_EVENT;
|
|
6
|
-
exports.DOOM_DELEGATION_REQUESTED_EVENT = require_delegation.DOOM_DELEGATION_REQUESTED_EVENT;
|
|
7
|
-
exports.DOOM_DELEGATION_SERVICE = require_delegation.DOOM_DELEGATION_SERVICE;
|
|
8
|
-
exports.DOOM_DELEGATION_STARTED_EVENT = require_delegation.DOOM_DELEGATION_STARTED_EVENT;
|
|
9
|
-
exports.DOOM_DELEGATION_UPDATED_EVENT = require_delegation.DOOM_DELEGATION_UPDATED_EVENT;
|
|
10
3
|
exports.DelegationAcceptedSchema = require_delegation.DelegationAcceptedSchema;
|
|
11
4
|
exports.DelegationCancelSchema = require_delegation.DelegationCancelSchema;
|
|
12
5
|
exports.DelegationRequestSchema = require_delegation.DelegationRequestSchema;
|
|
@@ -15,4 +8,11 @@ exports.DelegationStartedSchema = require_delegation.DelegationStartedSchema;
|
|
|
15
8
|
exports.DelegationStatusSchema = require_delegation.DelegationStatusSchema;
|
|
16
9
|
exports.DelegationUpdateSchema = require_delegation.DelegationUpdateSchema;
|
|
17
10
|
exports.InlineAgentSchema = require_delegation.InlineAgentSchema;
|
|
18
|
-
exports.
|
|
11
|
+
exports.PO_DELEGATION_ACCEPTED_EVENT = require_delegation.PO_DELEGATION_ACCEPTED_EVENT;
|
|
12
|
+
exports.PO_DELEGATION_CANCELLED_EVENT = require_delegation.PO_DELEGATION_CANCELLED_EVENT;
|
|
13
|
+
exports.PO_DELEGATION_FINISHED_EVENT = require_delegation.PO_DELEGATION_FINISHED_EVENT;
|
|
14
|
+
exports.PO_DELEGATION_REQUESTED_EVENT = require_delegation.PO_DELEGATION_REQUESTED_EVENT;
|
|
15
|
+
exports.PO_DELEGATION_SERVICE = require_delegation.PO_DELEGATION_SERVICE;
|
|
16
|
+
exports.PO_DELEGATION_STARTED_EVENT = require_delegation.PO_DELEGATION_STARTED_EVENT;
|
|
17
|
+
exports.PO_DELEGATION_UPDATED_EVENT = require_delegation.PO_DELEGATION_UPDATED_EVENT;
|
|
18
|
+
exports.readPoDelegationService = require_delegation.readPoDelegationService;
|
package/dist/delegation.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { DelegationAccepted, DelegationAcceptedSchema, DelegationCancel, DelegationCancelSchema, DelegationRequest, DelegationRequestSchema, DelegationResult, DelegationResultSchema, DelegationStarted, DelegationStartedSchema, DelegationStatus, DelegationStatusSchema, DelegationUpdate, DelegationUpdateSchema, InlineAgent, InlineAgentSchema, PO_DELEGATION_ACCEPTED_EVENT, PO_DELEGATION_CANCELLED_EVENT, PO_DELEGATION_FINISHED_EVENT, PO_DELEGATION_REQUESTED_EVENT, PO_DELEGATION_SERVICE, PO_DELEGATION_STARTED_EVENT, PO_DELEGATION_UPDATED_EVENT, PoDelegationService, readPoDelegationService } from "./src/schemas/delegation.mjs";
|
|
2
|
+
export { DelegationAccepted, DelegationAcceptedSchema, DelegationCancel, DelegationCancelSchema, DelegationRequest, DelegationRequestSchema, DelegationResult, DelegationResultSchema, DelegationStarted, DelegationStartedSchema, DelegationStatus, DelegationStatusSchema, DelegationUpdate, DelegationUpdateSchema, InlineAgent, InlineAgentSchema, PO_DELEGATION_ACCEPTED_EVENT, PO_DELEGATION_CANCELLED_EVENT, PO_DELEGATION_FINISHED_EVENT, PO_DELEGATION_REQUESTED_EVENT, PO_DELEGATION_SERVICE, PO_DELEGATION_STARTED_EVENT, PO_DELEGATION_UPDATED_EVENT, PoDelegationService, readPoDelegationService };
|
package/dist/delegation.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { DOOM_DELEGATION_ACCEPTED_EVENT, DOOM_DELEGATION_CANCELLED_EVENT, DOOM_DELEGATION_FINISHED_EVENT, DOOM_DELEGATION_REQUESTED_EVENT, DOOM_DELEGATION_SERVICE, DOOM_DELEGATION_STARTED_EVENT, DOOM_DELEGATION_UPDATED_EVENT, DelegationAcceptedSchema, DelegationCancelSchema, DelegationRequestSchema, DelegationResultSchema, DelegationStartedSchema, DelegationStatusSchema, DelegationUpdateSchema, InlineAgentSchema, readDoomDelegationService };
|
|
1
|
+
export { DelegationAcceptedSchema, DelegationCancelSchema, DelegationRequestSchema, DelegationResultSchema, DelegationStartedSchema, DelegationStatusSchema, DelegationUpdateSchema, InlineAgentSchema, PO_DELEGATION_ACCEPTED_EVENT, PO_DELEGATION_CANCELLED_EVENT, PO_DELEGATION_FINISHED_EVENT, PO_DELEGATION_REQUESTED_EVENT, PO_DELEGATION_SERVICE, PO_DELEGATION_STARTED_EVENT, PO_DELEGATION_UPDATED_EVENT, readPoDelegationService } from "./src/schemas/delegation.mjs";
|
package/dist/executionBudget.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
|
|
3
|
-
const
|
|
3
|
+
const require_core = require("./src/services/piSettings/core.cjs");
|
|
4
|
+
require("./runtimePiSettings.cjs");
|
|
4
5
|
let node_crypto = require("node:crypto");
|
|
5
6
|
let node_fs = require("node:fs");
|
|
6
7
|
let node_os = require("node:os");
|
|
@@ -200,8 +201,8 @@ function createExecutionBudget(limit = 2, databasePath = ":memory:") {
|
|
|
200
201
|
const processBudgets = /* @__PURE__ */ new Map();
|
|
201
202
|
function budgetConfig(environment) {
|
|
202
203
|
return {
|
|
203
|
-
file: environment.
|
|
204
|
-
limit: Number(environment.
|
|
204
|
+
file: environment.PO_RUNNER_BUDGET_DB ?? node_path.default.join(require_core.piAgentDirectory(environment, environment.HOME ?? node_os.default.homedir()), "execution-budget.db"),
|
|
205
|
+
limit: Number(environment.PO_RUNNER_MAX_HEAVY_JOBS ?? 2)
|
|
205
206
|
};
|
|
206
207
|
}
|
|
207
208
|
/** An independently owned handle sharing the same host-wide SQLite admission. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionBudget.cjs","names":["path","DatabaseSync","randomUUID","delay","piAgentDirectory","os"],"sources":["../src/services/executionBudget/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { mkdirSync } from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { DatabaseSync } from 'node:sqlite';\nimport { setTimeout as delay } from 'node:timers/promises';\n\nimport type { DoomHostExecutionBudget } from '../../schemas/packageApi';\nimport { piAgentDirectory } from '../piSettings';\n\ntype Lease = Awaited<ReturnType<DoomHostExecutionBudget['acquire']>>;\ninterface Waiter {\n signal?: AbortSignal;\n resolve(lease: Lease): void;\n reject(reason: unknown): void;\n detach(): void;\n}\ninterface StoredLease {\n token: string;\n owner_pid: number;\n child_pid: number | null;\n job_limit: number;\n}\nconst MAX_QUEUED_JOBS = 128;\nconst RETRY_MS = 100;\n\nfunction busy(error: unknown): boolean {\n return error instanceof Error && /database (?:is )?(?:locked|busy)/i.test(error.message);\n}\nfunction alive(pid: number | null): boolean {\n if (pid === null || !Number.isSafeInteger(pid) || pid < 1) return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return !(error instanceof Error && 'code' in error && error.code === 'ESRCH');\n }\n}\n\n/** A local FIFO with atomic host-wide permits. SQLite never waits on its calling thread. */\nexport function createExecutionBudget(\n limit = 2,\n databasePath = ':memory:',\n): DoomHostExecutionBudget & { close(): void } {\n if (!Number.isSafeInteger(limit) || limit < 1) throw new RangeError('Heavy-job limit must be a positive integer');\n const owned = new Set<string>();\n const released = new Set<string>();\n const queue: Waiter[] = [];\n let database: DatabaseSync | undefined;\n let closed = false;\n let draining = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const connection = (): DatabaseSync => {\n if (database) return database;\n if (databasePath !== ':memory:') mkdirSync(path.dirname(databasePath), { recursive: true, mode: 0o700 });\n const next = new DatabaseSync(databasePath, { timeout: 0 });\n try {\n next.exec(\n 'PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL; CREATE TABLE IF NOT EXISTS execution_leases (token TEXT PRIMARY KEY, owner_pid INTEGER NOT NULL, child_pid INTEGER, job_limit INTEGER NOT NULL)',\n );\n database = next;\n return next;\n } catch (error) {\n next.close();\n throw error;\n }\n };\n\n const claim = (): string | undefined => {\n if (owned.size >= limit) return undefined;\n let db: DatabaseSync | undefined;\n let transaction = false;\n try {\n db = connection();\n db.exec('BEGIN IMMEDIATE');\n transaction = true;\n const rows = db\n .prepare('SELECT token, owner_pid, child_pid, job_limit FROM execution_leases')\n .all() as unknown as StoredLease[];\n const live: StoredLease[] = [];\n for (const row of rows) {\n // A dead host may have left a supervised child alive. Do not grant its slot again.\n if (alive(row.owner_pid) || alive(row.child_pid)) live.push(row);\n else db.prepare('DELETE FROM execution_leases WHERE token = ?').run(row.token);\n }\n const effectiveLimit = Math.min(limit, ...live.map((row) => row.job_limit));\n const token = live.length < effectiveLimit ? randomUUID() : undefined;\n if (token) db.prepare('INSERT INTO execution_leases VALUES (?, ?, NULL, ?)').run(token, process.pid, limit);\n db.exec('COMMIT');\n transaction = false;\n return token;\n } catch (error) {\n if (transaction) db?.exec('ROLLBACK');\n if (busy(error)) return undefined;\n throw error;\n }\n };\n\n const lease = (token: string): Lease => {\n owned.add(token);\n const release: Lease = () => {\n if (!owned.has(token) || released.has(token)) return;\n released.add(token);\n drain();\n };\n release.attachProcess = async (pid: number): Promise<void> => {\n if (!Number.isSafeInteger(pid) || pid < 1) throw new RangeError('Child PID must be a positive integer');\n // Only admitted jobs use this retry, never every queued agent.\n for (let attempt = 0; ; attempt += 1) {\n if (!owned.has(token) || released.has(token)) return;\n try {\n connection().prepare('UPDATE execution_leases SET child_pid = ? WHERE token = ?').run(pid, token);\n return;\n } catch (error) {\n if (!busy(error) || attempt >= 49) throw error;\n await delay(RETRY_MS);\n }\n }\n };\n return release;\n };\n\n const schedule = (): void => {\n if (timer) {\n if (queue.length) timer.ref();\n else timer.unref();\n return;\n }\n if (!queue.length && !released.size) return;\n timer = setTimeout(() => {\n timer = undefined;\n drain();\n }, RETRY_MS);\n if (!queue.length) timer.unref();\n };\n\n const drain = (): void => {\n if (draining) return;\n draining = true;\n try {\n for (const token of released) {\n try {\n connection().prepare('DELETE FROM execution_leases WHERE token = ?').run(token);\n released.delete(token);\n owned.delete(token);\n } catch (error) {\n // Fail closed: an unreleased permit remains reserved, never over-admitted.\n if (!busy(error)) {\n for (const waiter of queue.splice(0)) {\n waiter.detach();\n waiter.reject(error);\n }\n }\n break;\n }\n }\n while (!closed && queue.length && owned.size < limit) {\n const waiter = queue[0]!;\n try {\n const token = claim();\n if (!token) break;\n queue.shift();\n waiter.detach();\n waiter.resolve(lease(token));\n } catch (error) {\n queue.shift();\n waiter.detach();\n waiter.reject(error);\n }\n }\n } finally {\n draining = false;\n if (!queue.length && !released.size && timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n if (closed && !owned.size) {\n database?.close();\n database = undefined;\n }\n schedule();\n }\n };\n\n return {\n async acquire(signal) {\n if (closed) throw new Error('The host execution budget is closed');\n signal?.throwIfAborted();\n if (!queue.length) {\n const token = claim();\n if (token) return lease(token);\n }\n if (queue.length >= MAX_QUEUED_JOBS) throw new Error('The host heavy-job queue is full');\n return new Promise<Lease>((resolve, reject) => {\n const onAbort = (): void => {\n const index = queue.indexOf(waiter);\n if (index >= 0) queue.splice(index, 1);\n waiter.detach();\n reject(signal?.reason);\n drain();\n };\n const waiter: Waiter = { signal, resolve, reject, detach: () => signal?.removeEventListener('abort', onAbort) };\n queue.push(waiter);\n signal?.addEventListener('abort', onAbort, { once: true });\n if (signal?.aborted) onAbort();\n else schedule();\n });\n },\n getSnapshot: () => ({ running: owned.size, queued: queue.length, limit }),\n close() {\n if (closed) return;\n closed = true;\n for (const waiter of queue.splice(0)) {\n waiter.detach();\n waiter.reject(new Error('The host execution budget is closed'));\n }\n // Active leases are released by process completion, not by host shutdown alone.\n drain();\n },\n };\n}\n\n/** Reused across standalone sessions in a process; server-owned sessions pass their budget explicitly. */\nconst processBudgets = new Map<string, ReturnType<typeof createExecutionBudget>>();\nfunction budgetConfig(environment: Readonly<Record<string, string | undefined>>): { file: string; limit: number } {\n return {\n file:\n environment.DOOM_RUNNER_BUDGET_DB ??\n path.join(piAgentDirectory(environment, environment.HOME ?? os.homedir()), 'execution-budget.db'),\n limit: Number(environment.DOOM_RUNNER_MAX_HEAVY_JOBS ?? 2),\n };\n}\n\n/** An independently owned handle sharing the same host-wide SQLite admission. */\nexport function createServerExecutionBudget(\n environment: Readonly<Record<string, string | undefined>>,\n): ReturnType<typeof createExecutionBudget> {\n const { file, limit } = budgetConfig(environment);\n return createExecutionBudget(limit, file);\n}\n\nexport function sharedExecutionBudget(\n environment: Readonly<Record<string, string | undefined>>,\n): ReturnType<typeof createExecutionBudget> {\n const { file, limit } = budgetConfig(environment);\n const key = `${file}:${limit}`;\n let budget = processBudgets.get(key);\n if (!budget) {\n budget = createExecutionBudget(limit, file);\n const close = budget.close.bind(budget);\n budget.close = () => {\n processBudgets.delete(key);\n close();\n };\n processBudgets.set(key, budget);\n }\n return budget;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executionBudget.cjs","names":["path","DatabaseSync","randomUUID","delay","piAgentDirectory","os"],"sources":["../src/services/executionBudget/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { mkdirSync } from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { DatabaseSync } from 'node:sqlite';\nimport { setTimeout as delay } from 'node:timers/promises';\n\nimport type { PoHostExecutionBudget } from '../../schemas/packageApi';\nimport { piAgentDirectory } from '../piSettings';\n\ntype Lease = Awaited<ReturnType<PoHostExecutionBudget['acquire']>>;\ninterface Waiter {\n signal?: AbortSignal;\n resolve(lease: Lease): void;\n reject(reason: unknown): void;\n detach(): void;\n}\ninterface StoredLease {\n token: string;\n owner_pid: number;\n child_pid: number | null;\n job_limit: number;\n}\nconst MAX_QUEUED_JOBS = 128;\nconst RETRY_MS = 100;\n\nfunction busy(error: unknown): boolean {\n return error instanceof Error && /database (?:is )?(?:locked|busy)/i.test(error.message);\n}\nfunction alive(pid: number | null): boolean {\n if (pid === null || !Number.isSafeInteger(pid) || pid < 1) return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return !(error instanceof Error && 'code' in error && error.code === 'ESRCH');\n }\n}\n\n/** A local FIFO with atomic host-wide permits. SQLite never waits on its calling thread. */\nexport function createExecutionBudget(limit = 2, databasePath = ':memory:'): PoHostExecutionBudget & { close(): void } {\n if (!Number.isSafeInteger(limit) || limit < 1) throw new RangeError('Heavy-job limit must be a positive integer');\n const owned = new Set<string>();\n const released = new Set<string>();\n const queue: Waiter[] = [];\n let database: DatabaseSync | undefined;\n let closed = false;\n let draining = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const connection = (): DatabaseSync => {\n if (database) return database;\n if (databasePath !== ':memory:') mkdirSync(path.dirname(databasePath), { recursive: true, mode: 0o700 });\n const next = new DatabaseSync(databasePath, { timeout: 0 });\n try {\n next.exec(\n 'PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL; CREATE TABLE IF NOT EXISTS execution_leases (token TEXT PRIMARY KEY, owner_pid INTEGER NOT NULL, child_pid INTEGER, job_limit INTEGER NOT NULL)',\n );\n database = next;\n return next;\n } catch (error) {\n next.close();\n throw error;\n }\n };\n\n const claim = (): string | undefined => {\n if (owned.size >= limit) return undefined;\n let db: DatabaseSync | undefined;\n let transaction = false;\n try {\n db = connection();\n db.exec('BEGIN IMMEDIATE');\n transaction = true;\n const rows = db\n .prepare('SELECT token, owner_pid, child_pid, job_limit FROM execution_leases')\n .all() as unknown as StoredLease[];\n const live: StoredLease[] = [];\n for (const row of rows) {\n // A dead host may have left a supervised child alive. Do not grant its slot again.\n if (alive(row.owner_pid) || alive(row.child_pid)) live.push(row);\n else db.prepare('DELETE FROM execution_leases WHERE token = ?').run(row.token);\n }\n const effectiveLimit = Math.min(limit, ...live.map((row) => row.job_limit));\n const token = live.length < effectiveLimit ? randomUUID() : undefined;\n if (token) db.prepare('INSERT INTO execution_leases VALUES (?, ?, NULL, ?)').run(token, process.pid, limit);\n db.exec('COMMIT');\n transaction = false;\n return token;\n } catch (error) {\n if (transaction) db?.exec('ROLLBACK');\n if (busy(error)) return undefined;\n throw error;\n }\n };\n\n const lease = (token: string): Lease => {\n owned.add(token);\n const release: Lease = () => {\n if (!owned.has(token) || released.has(token)) return;\n released.add(token);\n drain();\n };\n release.attachProcess = async (pid: number): Promise<void> => {\n if (!Number.isSafeInteger(pid) || pid < 1) throw new RangeError('Child PID must be a positive integer');\n // Only admitted jobs use this retry, never every queued agent.\n for (let attempt = 0; ; attempt += 1) {\n if (!owned.has(token) || released.has(token)) return;\n try {\n connection().prepare('UPDATE execution_leases SET child_pid = ? WHERE token = ?').run(pid, token);\n return;\n } catch (error) {\n if (!busy(error) || attempt >= 49) throw error;\n await delay(RETRY_MS);\n }\n }\n };\n return release;\n };\n\n const schedule = (): void => {\n if (timer) {\n if (queue.length) timer.ref();\n else timer.unref();\n return;\n }\n if (!queue.length && !released.size) return;\n timer = setTimeout(() => {\n timer = undefined;\n drain();\n }, RETRY_MS);\n if (!queue.length) timer.unref();\n };\n\n const drain = (): void => {\n if (draining) return;\n draining = true;\n try {\n for (const token of released) {\n try {\n connection().prepare('DELETE FROM execution_leases WHERE token = ?').run(token);\n released.delete(token);\n owned.delete(token);\n } catch (error) {\n // Fail closed: an unreleased permit remains reserved, never over-admitted.\n if (!busy(error)) {\n for (const waiter of queue.splice(0)) {\n waiter.detach();\n waiter.reject(error);\n }\n }\n break;\n }\n }\n while (!closed && queue.length && owned.size < limit) {\n const waiter = queue[0]!;\n try {\n const token = claim();\n if (!token) break;\n queue.shift();\n waiter.detach();\n waiter.resolve(lease(token));\n } catch (error) {\n queue.shift();\n waiter.detach();\n waiter.reject(error);\n }\n }\n } finally {\n draining = false;\n if (!queue.length && !released.size && timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n if (closed && !owned.size) {\n database?.close();\n database = undefined;\n }\n schedule();\n }\n };\n\n return {\n async acquire(signal) {\n if (closed) throw new Error('The host execution budget is closed');\n signal?.throwIfAborted();\n if (!queue.length) {\n const token = claim();\n if (token) return lease(token);\n }\n if (queue.length >= MAX_QUEUED_JOBS) throw new Error('The host heavy-job queue is full');\n return new Promise<Lease>((resolve, reject) => {\n const onAbort = (): void => {\n const index = queue.indexOf(waiter);\n if (index >= 0) queue.splice(index, 1);\n waiter.detach();\n reject(signal?.reason);\n drain();\n };\n const waiter: Waiter = { signal, resolve, reject, detach: () => signal?.removeEventListener('abort', onAbort) };\n queue.push(waiter);\n signal?.addEventListener('abort', onAbort, { once: true });\n if (signal?.aborted) onAbort();\n else schedule();\n });\n },\n getSnapshot: () => ({ running: owned.size, queued: queue.length, limit }),\n close() {\n if (closed) return;\n closed = true;\n for (const waiter of queue.splice(0)) {\n waiter.detach();\n waiter.reject(new Error('The host execution budget is closed'));\n }\n // Active leases are released by process completion, not by host shutdown alone.\n drain();\n },\n };\n}\n\n/** Reused across standalone sessions in a process; server-owned sessions pass their budget explicitly. */\nconst processBudgets = new Map<string, ReturnType<typeof createExecutionBudget>>();\nfunction budgetConfig(environment: Readonly<Record<string, string | undefined>>): { file: string; limit: number } {\n return {\n file:\n environment.PO_RUNNER_BUDGET_DB ??\n path.join(piAgentDirectory(environment, environment.HOME ?? os.homedir()), 'execution-budget.db'),\n limit: Number(environment.PO_RUNNER_MAX_HEAVY_JOBS ?? 2),\n };\n}\n\n/** An independently owned handle sharing the same host-wide SQLite admission. */\nexport function createServerExecutionBudget(\n environment: Readonly<Record<string, string | undefined>>,\n): ReturnType<typeof createExecutionBudget> {\n const { file, limit } = budgetConfig(environment);\n return createExecutionBudget(limit, file);\n}\n\nexport function sharedExecutionBudget(\n environment: Readonly<Record<string, string | undefined>>,\n): ReturnType<typeof createExecutionBudget> {\n const { file, limit } = budgetConfig(environment);\n const key = `${file}:${limit}`;\n let budget = processBudgets.get(key);\n if (!budget) {\n budget = createExecutionBudget(limit, file);\n const close = budget.close.bind(budget);\n budget.close = () => {\n processBudgets.delete(key);\n close();\n };\n processBudgets.set(key, budget);\n }\n return budget;\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PoHostExecutionBudget } from "./src/schemas/packageApi.mjs";
|
|
2
2
|
//#region src/services/executionBudget/index.d.ts
|
|
3
3
|
/** A local FIFO with atomic host-wide permits. SQLite never waits on its calling thread. */
|
|
4
|
-
export declare function createExecutionBudget(limit?: number, databasePath?: string):
|
|
4
|
+
export declare function createExecutionBudget(limit?: number, databasePath?: string): PoHostExecutionBudget & {
|
|
5
5
|
close(): void;
|
|
6
6
|
};
|
|
7
7
|
/** An independently owned handle sharing the same host-wide SQLite admission. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionBudget.d.mts","names":[],"sources":["../src/services/executionBudget/index.ts"],"mappings":";;;wBAwCgB,
|
|
1
|
+
{"version":3,"file":"executionBudget.d.mts","names":[],"sources":["../src/services/executionBudget/index.ts"],"mappings":";;;wBAwCgB,sBAAsB,gBAAW,wBAA4B;EAA0B;;;wBAgMvF,4BACd,aAAa,SAAS,sCACrB,kBAAkB;wBAKL,sBACd,aAAa,SAAS,sCACrB,kBAAkB"}
|
package/dist/executionBudget.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { piAgentDirectory } from "./
|
|
1
|
+
import { piAgentDirectory } from "./src/services/piSettings/core.mjs";
|
|
2
|
+
import "./runtimePiSettings.mjs";
|
|
2
3
|
import { randomUUID } from "node:crypto";
|
|
3
4
|
import { mkdirSync } from "node:fs";
|
|
4
5
|
import os from "node:os";
|
|
@@ -196,8 +197,8 @@ function createExecutionBudget(limit = 2, databasePath = ":memory:") {
|
|
|
196
197
|
const processBudgets = /* @__PURE__ */ new Map();
|
|
197
198
|
function budgetConfig(environment) {
|
|
198
199
|
return {
|
|
199
|
-
file: environment.
|
|
200
|
-
limit: Number(environment.
|
|
200
|
+
file: environment.PO_RUNNER_BUDGET_DB ?? path.join(piAgentDirectory(environment, environment.HOME ?? os.homedir()), "execution-budget.db"),
|
|
201
|
+
limit: Number(environment.PO_RUNNER_MAX_HEAVY_JOBS ?? 2)
|
|
201
202
|
};
|
|
202
203
|
}
|
|
203
204
|
/** An independently owned handle sharing the same host-wide SQLite admission. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionBudget.mjs","names":["delay"],"sources":["../src/services/executionBudget/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { mkdirSync } from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { DatabaseSync } from 'node:sqlite';\nimport { setTimeout as delay } from 'node:timers/promises';\n\nimport type { DoomHostExecutionBudget } from '../../schemas/packageApi';\nimport { piAgentDirectory } from '../piSettings';\n\ntype Lease = Awaited<ReturnType<DoomHostExecutionBudget['acquire']>>;\ninterface Waiter {\n signal?: AbortSignal;\n resolve(lease: Lease): void;\n reject(reason: unknown): void;\n detach(): void;\n}\ninterface StoredLease {\n token: string;\n owner_pid: number;\n child_pid: number | null;\n job_limit: number;\n}\nconst MAX_QUEUED_JOBS = 128;\nconst RETRY_MS = 100;\n\nfunction busy(error: unknown): boolean {\n return error instanceof Error && /database (?:is )?(?:locked|busy)/i.test(error.message);\n}\nfunction alive(pid: number | null): boolean {\n if (pid === null || !Number.isSafeInteger(pid) || pid < 1) return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return !(error instanceof Error && 'code' in error && error.code === 'ESRCH');\n }\n}\n\n/** A local FIFO with atomic host-wide permits. SQLite never waits on its calling thread. */\nexport function createExecutionBudget(\n limit = 2,\n databasePath = ':memory:',\n): DoomHostExecutionBudget & { close(): void } {\n if (!Number.isSafeInteger(limit) || limit < 1) throw new RangeError('Heavy-job limit must be a positive integer');\n const owned = new Set<string>();\n const released = new Set<string>();\n const queue: Waiter[] = [];\n let database: DatabaseSync | undefined;\n let closed = false;\n let draining = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const connection = (): DatabaseSync => {\n if (database) return database;\n if (databasePath !== ':memory:') mkdirSync(path.dirname(databasePath), { recursive: true, mode: 0o700 });\n const next = new DatabaseSync(databasePath, { timeout: 0 });\n try {\n next.exec(\n 'PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL; CREATE TABLE IF NOT EXISTS execution_leases (token TEXT PRIMARY KEY, owner_pid INTEGER NOT NULL, child_pid INTEGER, job_limit INTEGER NOT NULL)',\n );\n database = next;\n return next;\n } catch (error) {\n next.close();\n throw error;\n }\n };\n\n const claim = (): string | undefined => {\n if (owned.size >= limit) return undefined;\n let db: DatabaseSync | undefined;\n let transaction = false;\n try {\n db = connection();\n db.exec('BEGIN IMMEDIATE');\n transaction = true;\n const rows = db\n .prepare('SELECT token, owner_pid, child_pid, job_limit FROM execution_leases')\n .all() as unknown as StoredLease[];\n const live: StoredLease[] = [];\n for (const row of rows) {\n // A dead host may have left a supervised child alive. Do not grant its slot again.\n if (alive(row.owner_pid) || alive(row.child_pid)) live.push(row);\n else db.prepare('DELETE FROM execution_leases WHERE token = ?').run(row.token);\n }\n const effectiveLimit = Math.min(limit, ...live.map((row) => row.job_limit));\n const token = live.length < effectiveLimit ? randomUUID() : undefined;\n if (token) db.prepare('INSERT INTO execution_leases VALUES (?, ?, NULL, ?)').run(token, process.pid, limit);\n db.exec('COMMIT');\n transaction = false;\n return token;\n } catch (error) {\n if (transaction) db?.exec('ROLLBACK');\n if (busy(error)) return undefined;\n throw error;\n }\n };\n\n const lease = (token: string): Lease => {\n owned.add(token);\n const release: Lease = () => {\n if (!owned.has(token) || released.has(token)) return;\n released.add(token);\n drain();\n };\n release.attachProcess = async (pid: number): Promise<void> => {\n if (!Number.isSafeInteger(pid) || pid < 1) throw new RangeError('Child PID must be a positive integer');\n // Only admitted jobs use this retry, never every queued agent.\n for (let attempt = 0; ; attempt += 1) {\n if (!owned.has(token) || released.has(token)) return;\n try {\n connection().prepare('UPDATE execution_leases SET child_pid = ? WHERE token = ?').run(pid, token);\n return;\n } catch (error) {\n if (!busy(error) || attempt >= 49) throw error;\n await delay(RETRY_MS);\n }\n }\n };\n return release;\n };\n\n const schedule = (): void => {\n if (timer) {\n if (queue.length) timer.ref();\n else timer.unref();\n return;\n }\n if (!queue.length && !released.size) return;\n timer = setTimeout(() => {\n timer = undefined;\n drain();\n }, RETRY_MS);\n if (!queue.length) timer.unref();\n };\n\n const drain = (): void => {\n if (draining) return;\n draining = true;\n try {\n for (const token of released) {\n try {\n connection().prepare('DELETE FROM execution_leases WHERE token = ?').run(token);\n released.delete(token);\n owned.delete(token);\n } catch (error) {\n // Fail closed: an unreleased permit remains reserved, never over-admitted.\n if (!busy(error)) {\n for (const waiter of queue.splice(0)) {\n waiter.detach();\n waiter.reject(error);\n }\n }\n break;\n }\n }\n while (!closed && queue.length && owned.size < limit) {\n const waiter = queue[0]!;\n try {\n const token = claim();\n if (!token) break;\n queue.shift();\n waiter.detach();\n waiter.resolve(lease(token));\n } catch (error) {\n queue.shift();\n waiter.detach();\n waiter.reject(error);\n }\n }\n } finally {\n draining = false;\n if (!queue.length && !released.size && timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n if (closed && !owned.size) {\n database?.close();\n database = undefined;\n }\n schedule();\n }\n };\n\n return {\n async acquire(signal) {\n if (closed) throw new Error('The host execution budget is closed');\n signal?.throwIfAborted();\n if (!queue.length) {\n const token = claim();\n if (token) return lease(token);\n }\n if (queue.length >= MAX_QUEUED_JOBS) throw new Error('The host heavy-job queue is full');\n return new Promise<Lease>((resolve, reject) => {\n const onAbort = (): void => {\n const index = queue.indexOf(waiter);\n if (index >= 0) queue.splice(index, 1);\n waiter.detach();\n reject(signal?.reason);\n drain();\n };\n const waiter: Waiter = { signal, resolve, reject, detach: () => signal?.removeEventListener('abort', onAbort) };\n queue.push(waiter);\n signal?.addEventListener('abort', onAbort, { once: true });\n if (signal?.aborted) onAbort();\n else schedule();\n });\n },\n getSnapshot: () => ({ running: owned.size, queued: queue.length, limit }),\n close() {\n if (closed) return;\n closed = true;\n for (const waiter of queue.splice(0)) {\n waiter.detach();\n waiter.reject(new Error('The host execution budget is closed'));\n }\n // Active leases are released by process completion, not by host shutdown alone.\n drain();\n },\n };\n}\n\n/** Reused across standalone sessions in a process; server-owned sessions pass their budget explicitly. */\nconst processBudgets = new Map<string, ReturnType<typeof createExecutionBudget>>();\nfunction budgetConfig(environment: Readonly<Record<string, string | undefined>>): { file: string; limit: number } {\n return {\n file:\n environment.DOOM_RUNNER_BUDGET_DB ??\n path.join(piAgentDirectory(environment, environment.HOME ?? os.homedir()), 'execution-budget.db'),\n limit: Number(environment.DOOM_RUNNER_MAX_HEAVY_JOBS ?? 2),\n };\n}\n\n/** An independently owned handle sharing the same host-wide SQLite admission. */\nexport function createServerExecutionBudget(\n environment: Readonly<Record<string, string | undefined>>,\n): ReturnType<typeof createExecutionBudget> {\n const { file, limit } = budgetConfig(environment);\n return createExecutionBudget(limit, file);\n}\n\nexport function sharedExecutionBudget(\n environment: Readonly<Record<string, string | undefined>>,\n): ReturnType<typeof createExecutionBudget> {\n const { file, limit } = budgetConfig(environment);\n const key = `${file}:${limit}`;\n let budget = processBudgets.get(key);\n if (!budget) {\n budget = createExecutionBudget(limit, file);\n const close = budget.close.bind(budget);\n budget.close = () => {\n processBudgets.delete(key);\n close();\n };\n processBudgets.set(key, budget);\n }\n return budget;\n}\n"],"mappings":";;;;;;;;AAuBA,MAAM,kBAAkB;AACxB,MAAM,WAAW;AAEjB,SAAS,KAAK,OAAyB;CACrC,OAAO,iBAAiB,SAAS,oCAAoC,KAAK,MAAM,OAAO;AACzF;AACA,SAAS,MAAM,KAA6B;CAC1C,IAAI,QAAQ,QAAQ,CAAC,OAAO,cAAc,GAAG,KAAK,MAAM,GAAG,OAAO;CAClE,IAAI;EACF,QAAQ,KAAK,KAAK,CAAC;EACnB,OAAO;CACT,SAAS,OAAO;EACd,OAAO,EAAE,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS;CACvE;AACF;;AAGA,SAAgB,sBACd,QAAQ,GACR,eAAe,YAC8B;CAC7C,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG,MAAM,IAAI,WAAW,4CAA4C;CAChH,MAAM,wBAAQ,IAAI,IAAY;CAC9B,MAAM,2BAAW,IAAI,IAAY;CACjC,MAAM,QAAkB,CAAC;CACzB,IAAI;CACJ,IAAI,SAAS;CACb,IAAI,WAAW;CACf,IAAI;CAEJ,MAAM,mBAAiC;EACrC,IAAI,UAAU,OAAO;EACrB,IAAI,iBAAiB,YAAY,UAAU,KAAK,QAAQ,YAAY,GAAG;GAAE,WAAW;GAAM,MAAM;EAAM,CAAC;EACvG,MAAM,OAAO,IAAI,aAAa,cAAc,EAAE,SAAS,EAAE,CAAC;EAC1D,IAAI;GACF,KAAK,KACH,qMACF;GACA,WAAW;GACX,OAAO;EACT,SAAS,OAAO;GACd,KAAK,MAAM;GACX,MAAM;EACR;CACF;CAEA,MAAM,cAAkC;EACtC,IAAI,MAAM,QAAQ,OAAO,OAAO,KAAA;EAChC,IAAI;EACJ,IAAI,cAAc;EAClB,IAAI;GACF,KAAK,WAAW;GAChB,GAAG,KAAK,iBAAiB;GACzB,cAAc;GACd,MAAM,OAAO,GACV,QAAQ,qEAAqE,CAAC,CAC9E,IAAI;GACP,MAAM,OAAsB,CAAC;GAC7B,KAAK,MAAM,OAAO,MAEhB,IAAI,MAAM,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,GAAG,KAAK,KAAK,GAAG;QAC1D,GAAG,QAAQ,8CAA8C,CAAC,CAAC,IAAI,IAAI,KAAK;GAE/E,MAAM,iBAAiB,KAAK,IAAI,OAAO,GAAG,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC;GAC1E,MAAM,QAAQ,KAAK,SAAS,iBAAiB,WAAW,IAAI,KAAA;GAC5D,IAAI,OAAO,GAAG,QAAQ,qDAAqD,CAAC,CAAC,IAAI,OAAO,QAAQ,KAAK,KAAK;GAC1G,GAAG,KAAK,QAAQ;GAChB,cAAc;GACd,OAAO;EACT,SAAS,OAAO;GACd,IAAI,aAAa,IAAI,KAAK,UAAU;GACpC,IAAI,KAAK,KAAK,GAAG,OAAO,KAAA;GACxB,MAAM;EACR;CACF;CAEA,MAAM,SAAS,UAAyB;EACtC,MAAM,IAAI,KAAK;EACf,MAAM,gBAAuB;GAC3B,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG;GAC9C,SAAS,IAAI,KAAK;GAClB,MAAM;EACR;EACA,QAAQ,gBAAgB,OAAO,QAA+B;GAC5D,IAAI,CAAC,OAAO,cAAc,GAAG,KAAK,MAAM,GAAG,MAAM,IAAI,WAAW,sCAAsC;GAEtG,KAAK,IAAI,UAAU,IAAK,WAAW,GAAG;IACpC,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG;IAC9C,IAAI;KACF,WAAW,CAAC,CAAC,QAAQ,2DAA2D,CAAC,CAAC,IAAI,KAAK,KAAK;KAChG;IACF,SAAS,OAAO;KACd,IAAI,CAAC,KAAK,KAAK,KAAK,WAAW,IAAI,MAAM;KACzC,MAAMA,aAAM,QAAQ;IACtB;GACF;EACF;EACA,OAAO;CACT;CAEA,MAAM,iBAAuB;EAC3B,IAAI,OAAO;GACT,IAAI,MAAM,QAAQ,MAAM,IAAI;QACvB,MAAM,MAAM;GACjB;EACF;EACA,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS,MAAM;EACrC,QAAQ,iBAAiB;GACvB,QAAQ,KAAA;GACR,MAAM;EACR,GAAG,QAAQ;EACX,IAAI,CAAC,MAAM,QAAQ,MAAM,MAAM;CACjC;CAEA,MAAM,cAAoB;EACxB,IAAI,UAAU;EACd,WAAW;EACX,IAAI;GACF,KAAK,MAAM,SAAS,UAClB,IAAI;IACF,WAAW,CAAC,CAAC,QAAQ,8CAA8C,CAAC,CAAC,IAAI,KAAK;IAC9E,SAAS,OAAO,KAAK;IACrB,MAAM,OAAO,KAAK;GACpB,SAAS,OAAO;IAEd,IAAI,CAAC,KAAK,KAAK,GACb,KAAK,MAAM,UAAU,MAAM,OAAO,CAAC,GAAG;KACpC,OAAO,OAAO;KACd,OAAO,OAAO,KAAK;IACrB;IAEF;GACF;GAEF,OAAO,CAAC,UAAU,MAAM,UAAU,MAAM,OAAO,OAAO;IACpD,MAAM,SAAS,MAAM;IACrB,IAAI;KACF,MAAM,QAAQ,MAAM;KACpB,IAAI,CAAC,OAAO;KACZ,MAAM,MAAM;KACZ,OAAO,OAAO;KACd,OAAO,QAAQ,MAAM,KAAK,CAAC;IAC7B,SAAS,OAAO;KACd,MAAM,MAAM;KACZ,OAAO,OAAO;KACd,OAAO,OAAO,KAAK;IACrB;GACF;EACF,UAAU;GACR,WAAW;GACX,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS,QAAQ,OAAO;IAC5C,aAAa,KAAK;IAClB,QAAQ,KAAA;GACV;GACA,IAAI,UAAU,CAAC,MAAM,MAAM;IACzB,UAAU,MAAM;IAChB,WAAW,KAAA;GACb;GACA,SAAS;EACX;CACF;CAEA,OAAO;EACL,MAAM,QAAQ,QAAQ;GACpB,IAAI,QAAQ,MAAM,IAAI,MAAM,qCAAqC;GACjE,QAAQ,eAAe;GACvB,IAAI,CAAC,MAAM,QAAQ;IACjB,MAAM,QAAQ,MAAM;IACpB,IAAI,OAAO,OAAO,MAAM,KAAK;GAC/B;GACA,IAAI,MAAM,UAAU,iBAAiB,MAAM,IAAI,MAAM,kCAAkC;GACvF,OAAO,IAAI,SAAgB,SAAS,WAAW;IAC7C,MAAM,gBAAsB;KAC1B,MAAM,QAAQ,MAAM,QAAQ,MAAM;KAClC,IAAI,SAAS,GAAG,MAAM,OAAO,OAAO,CAAC;KACrC,OAAO,OAAO;KACd,OAAO,QAAQ,MAAM;KACrB,MAAM;IACR;IACA,MAAM,SAAiB;KAAE;KAAQ;KAAS;KAAQ,cAAc,QAAQ,oBAAoB,SAAS,OAAO;IAAE;IAC9G,MAAM,KAAK,MAAM;IACjB,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;IACzD,IAAI,QAAQ,SAAS,QAAQ;SACxB,SAAS;GAChB,CAAC;EACH;EACA,oBAAoB;GAAE,SAAS,MAAM;GAAM,QAAQ,MAAM;GAAQ;EAAM;EACvE,QAAQ;GACN,IAAI,QAAQ;GACZ,SAAS;GACT,KAAK,MAAM,UAAU,MAAM,OAAO,CAAC,GAAG;IACpC,OAAO,OAAO;IACd,OAAO,uBAAO,IAAI,MAAM,qCAAqC,CAAC;GAChE;GAEA,MAAM;EACR;CACF;AACF;;AAGA,MAAM,iCAAiB,IAAI,IAAsD;AACjF,SAAS,aAAa,aAA4F;CAChH,OAAO;EACL,MACE,YAAY,yBACZ,KAAK,KAAK,iBAAiB,aAAa,YAAY,QAAQ,GAAG,QAAQ,CAAC,GAAG,qBAAqB;EAClG,OAAO,OAAO,YAAY,8BAA8B,CAAC;CAC3D;AACF;;AAGA,SAAgB,4BACd,aAC0C;CAC1C,MAAM,EAAE,MAAM,UAAU,aAAa,WAAW;CAChD,OAAO,sBAAsB,OAAO,IAAI;AAC1C;AAEA,SAAgB,sBACd,aAC0C;CAC1C,MAAM,EAAE,MAAM,UAAU,aAAa,WAAW;CAChD,MAAM,MAAM,GAAG,KAAK,GAAG;CACvB,IAAI,SAAS,eAAe,IAAI,GAAG;CACnC,IAAI,CAAC,QAAQ;EACX,SAAS,sBAAsB,OAAO,IAAI;EAC1C,MAAM,QAAQ,OAAO,MAAM,KAAK,MAAM;EACtC,OAAO,cAAc;GACnB,eAAe,OAAO,GAAG;GACzB,MAAM;EACR;EACA,eAAe,IAAI,KAAK,MAAM;CAChC;CACA,OAAO;AACT"}
|
|
1
|
+
{"version":3,"file":"executionBudget.mjs","names":["delay"],"sources":["../src/services/executionBudget/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { mkdirSync } from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { DatabaseSync } from 'node:sqlite';\nimport { setTimeout as delay } from 'node:timers/promises';\n\nimport type { PoHostExecutionBudget } from '../../schemas/packageApi';\nimport { piAgentDirectory } from '../piSettings';\n\ntype Lease = Awaited<ReturnType<PoHostExecutionBudget['acquire']>>;\ninterface Waiter {\n signal?: AbortSignal;\n resolve(lease: Lease): void;\n reject(reason: unknown): void;\n detach(): void;\n}\ninterface StoredLease {\n token: string;\n owner_pid: number;\n child_pid: number | null;\n job_limit: number;\n}\nconst MAX_QUEUED_JOBS = 128;\nconst RETRY_MS = 100;\n\nfunction busy(error: unknown): boolean {\n return error instanceof Error && /database (?:is )?(?:locked|busy)/i.test(error.message);\n}\nfunction alive(pid: number | null): boolean {\n if (pid === null || !Number.isSafeInteger(pid) || pid < 1) return false;\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return !(error instanceof Error && 'code' in error && error.code === 'ESRCH');\n }\n}\n\n/** A local FIFO with atomic host-wide permits. SQLite never waits on its calling thread. */\nexport function createExecutionBudget(limit = 2, databasePath = ':memory:'): PoHostExecutionBudget & { close(): void } {\n if (!Number.isSafeInteger(limit) || limit < 1) throw new RangeError('Heavy-job limit must be a positive integer');\n const owned = new Set<string>();\n const released = new Set<string>();\n const queue: Waiter[] = [];\n let database: DatabaseSync | undefined;\n let closed = false;\n let draining = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const connection = (): DatabaseSync => {\n if (database) return database;\n if (databasePath !== ':memory:') mkdirSync(path.dirname(databasePath), { recursive: true, mode: 0o700 });\n const next = new DatabaseSync(databasePath, { timeout: 0 });\n try {\n next.exec(\n 'PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL; CREATE TABLE IF NOT EXISTS execution_leases (token TEXT PRIMARY KEY, owner_pid INTEGER NOT NULL, child_pid INTEGER, job_limit INTEGER NOT NULL)',\n );\n database = next;\n return next;\n } catch (error) {\n next.close();\n throw error;\n }\n };\n\n const claim = (): string | undefined => {\n if (owned.size >= limit) return undefined;\n let db: DatabaseSync | undefined;\n let transaction = false;\n try {\n db = connection();\n db.exec('BEGIN IMMEDIATE');\n transaction = true;\n const rows = db\n .prepare('SELECT token, owner_pid, child_pid, job_limit FROM execution_leases')\n .all() as unknown as StoredLease[];\n const live: StoredLease[] = [];\n for (const row of rows) {\n // A dead host may have left a supervised child alive. Do not grant its slot again.\n if (alive(row.owner_pid) || alive(row.child_pid)) live.push(row);\n else db.prepare('DELETE FROM execution_leases WHERE token = ?').run(row.token);\n }\n const effectiveLimit = Math.min(limit, ...live.map((row) => row.job_limit));\n const token = live.length < effectiveLimit ? randomUUID() : undefined;\n if (token) db.prepare('INSERT INTO execution_leases VALUES (?, ?, NULL, ?)').run(token, process.pid, limit);\n db.exec('COMMIT');\n transaction = false;\n return token;\n } catch (error) {\n if (transaction) db?.exec('ROLLBACK');\n if (busy(error)) return undefined;\n throw error;\n }\n };\n\n const lease = (token: string): Lease => {\n owned.add(token);\n const release: Lease = () => {\n if (!owned.has(token) || released.has(token)) return;\n released.add(token);\n drain();\n };\n release.attachProcess = async (pid: number): Promise<void> => {\n if (!Number.isSafeInteger(pid) || pid < 1) throw new RangeError('Child PID must be a positive integer');\n // Only admitted jobs use this retry, never every queued agent.\n for (let attempt = 0; ; attempt += 1) {\n if (!owned.has(token) || released.has(token)) return;\n try {\n connection().prepare('UPDATE execution_leases SET child_pid = ? WHERE token = ?').run(pid, token);\n return;\n } catch (error) {\n if (!busy(error) || attempt >= 49) throw error;\n await delay(RETRY_MS);\n }\n }\n };\n return release;\n };\n\n const schedule = (): void => {\n if (timer) {\n if (queue.length) timer.ref();\n else timer.unref();\n return;\n }\n if (!queue.length && !released.size) return;\n timer = setTimeout(() => {\n timer = undefined;\n drain();\n }, RETRY_MS);\n if (!queue.length) timer.unref();\n };\n\n const drain = (): void => {\n if (draining) return;\n draining = true;\n try {\n for (const token of released) {\n try {\n connection().prepare('DELETE FROM execution_leases WHERE token = ?').run(token);\n released.delete(token);\n owned.delete(token);\n } catch (error) {\n // Fail closed: an unreleased permit remains reserved, never over-admitted.\n if (!busy(error)) {\n for (const waiter of queue.splice(0)) {\n waiter.detach();\n waiter.reject(error);\n }\n }\n break;\n }\n }\n while (!closed && queue.length && owned.size < limit) {\n const waiter = queue[0]!;\n try {\n const token = claim();\n if (!token) break;\n queue.shift();\n waiter.detach();\n waiter.resolve(lease(token));\n } catch (error) {\n queue.shift();\n waiter.detach();\n waiter.reject(error);\n }\n }\n } finally {\n draining = false;\n if (!queue.length && !released.size && timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n if (closed && !owned.size) {\n database?.close();\n database = undefined;\n }\n schedule();\n }\n };\n\n return {\n async acquire(signal) {\n if (closed) throw new Error('The host execution budget is closed');\n signal?.throwIfAborted();\n if (!queue.length) {\n const token = claim();\n if (token) return lease(token);\n }\n if (queue.length >= MAX_QUEUED_JOBS) throw new Error('The host heavy-job queue is full');\n return new Promise<Lease>((resolve, reject) => {\n const onAbort = (): void => {\n const index = queue.indexOf(waiter);\n if (index >= 0) queue.splice(index, 1);\n waiter.detach();\n reject(signal?.reason);\n drain();\n };\n const waiter: Waiter = { signal, resolve, reject, detach: () => signal?.removeEventListener('abort', onAbort) };\n queue.push(waiter);\n signal?.addEventListener('abort', onAbort, { once: true });\n if (signal?.aborted) onAbort();\n else schedule();\n });\n },\n getSnapshot: () => ({ running: owned.size, queued: queue.length, limit }),\n close() {\n if (closed) return;\n closed = true;\n for (const waiter of queue.splice(0)) {\n waiter.detach();\n waiter.reject(new Error('The host execution budget is closed'));\n }\n // Active leases are released by process completion, not by host shutdown alone.\n drain();\n },\n };\n}\n\n/** Reused across standalone sessions in a process; server-owned sessions pass their budget explicitly. */\nconst processBudgets = new Map<string, ReturnType<typeof createExecutionBudget>>();\nfunction budgetConfig(environment: Readonly<Record<string, string | undefined>>): { file: string; limit: number } {\n return {\n file:\n environment.PO_RUNNER_BUDGET_DB ??\n path.join(piAgentDirectory(environment, environment.HOME ?? os.homedir()), 'execution-budget.db'),\n limit: Number(environment.PO_RUNNER_MAX_HEAVY_JOBS ?? 2),\n };\n}\n\n/** An independently owned handle sharing the same host-wide SQLite admission. */\nexport function createServerExecutionBudget(\n environment: Readonly<Record<string, string | undefined>>,\n): ReturnType<typeof createExecutionBudget> {\n const { file, limit } = budgetConfig(environment);\n return createExecutionBudget(limit, file);\n}\n\nexport function sharedExecutionBudget(\n environment: Readonly<Record<string, string | undefined>>,\n): ReturnType<typeof createExecutionBudget> {\n const { file, limit } = budgetConfig(environment);\n const key = `${file}:${limit}`;\n let budget = processBudgets.get(key);\n if (!budget) {\n budget = createExecutionBudget(limit, file);\n const close = budget.close.bind(budget);\n budget.close = () => {\n processBudgets.delete(key);\n close();\n };\n processBudgets.set(key, budget);\n }\n return budget;\n}\n"],"mappings":"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"}
|
package/dist/extensionFile.cjs
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_index = require("./src/services/pluginLifecycle/index.cjs");
|
|
2
3
|
const require_extensionFile = require("./src/extensions/extensionFile.cjs");
|
|
4
|
+
const require_serverScope = require("./src/schemas/serverScope.cjs");
|
|
3
5
|
exports.composeRootHooks = require_extensionFile.composeRootHooks;
|
|
6
|
+
exports.composeRootInjects = require_extensionFile.composeRootInjects;
|
|
4
7
|
exports.defineActivity = require_extensionFile.defineActivity;
|
|
5
8
|
exports.defineChannel = require_extensionFile.defineChannel;
|
|
6
9
|
exports.defineCommand = require_extensionFile.defineCommand;
|
|
@@ -15,5 +18,7 @@ exports.defineRoutedContribution = require_extensionFile.defineRoutedContributio
|
|
|
15
18
|
exports.defineServerCommand = require_extensionFile.defineServerCommand;
|
|
16
19
|
exports.defineServerTool = require_extensionFile.defineServerTool;
|
|
17
20
|
exports.defineService = require_extensionFile.defineService;
|
|
21
|
+
exports.defineServiceContract = require_serverScope.defineServiceContract;
|
|
18
22
|
exports.defineTool = require_extensionFile.defineTool;
|
|
19
23
|
exports.defineToolRestriction = require_extensionFile.defineToolRestriction;
|
|
24
|
+
exports.runCleanups = require_index.runCleanups;
|
package/dist/extensionFile.d.mts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { runCleanups } from "./src/services/pluginLifecycle/index.mjs";
|
|
2
|
+
import { defineServiceContract } from "./src/schemas/serverScope.mjs";
|
|
1
3
|
import { ActivityFile, ChannelFile, CommandContribution, CommandFile, HookFile, MethodFile, OrFactory, PathSupplied, RootDeclaration, RootFile, RouteFile, RoutedCardinality, RoutedFileOptions, ServerCommandFile, ServerToolFile, ServiceFile, ToolContribution, ToolFile, WithRoot } from "./src/schemas/extensionFile.mjs";
|
|
2
|
-
import { composeRootHooks, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineTool, defineToolRestriction } from "./src/extensions/extensionFile.mjs";
|
|
3
|
-
export { type ActivityFile, type ChannelFile, type CommandContribution, type CommandFile, type HookFile, type MethodFile, type OrFactory, type PathSupplied, type RootDeclaration, type RootFile, type RouteFile, type RoutedCardinality, type RoutedFileOptions, type ServerCommandFile, type ServerToolFile, type ServiceFile, type ToolContribution, type ToolFile, type WithRoot, composeRootHooks, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineTool, defineToolRestriction };
|
|
4
|
+
import { composeRootHooks, composeRootInjects, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineTool, defineToolRestriction } from "./src/extensions/extensionFile.mjs";
|
|
5
|
+
export { type ActivityFile, type ChannelFile, type CommandContribution, type CommandFile, type HookFile, type MethodFile, type OrFactory, type PathSupplied, type RootDeclaration, type RootFile, type RouteFile, type RoutedCardinality, type RoutedFileOptions, type ServerCommandFile, type ServerToolFile, type ServiceFile, type ToolContribution, type ToolFile, type WithRoot, composeRootHooks, composeRootInjects, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineServiceContract, defineTool, defineToolRestriction, runCleanups };
|
package/dist/extensionFile.mjs
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { runCleanups } from "./src/services/pluginLifecycle/index.mjs";
|
|
2
|
+
import { composeRootHooks, composeRootInjects, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineTool, defineToolRestriction } from "./src/extensions/extensionFile.mjs";
|
|
3
|
+
import { defineServiceContract } from "./src/schemas/serverScope.mjs";
|
|
4
|
+
export { composeRootHooks, composeRootInjects, defineActivity, defineChannel, defineCommand, defineHook, defineMethod, defineMode, defineProvider, defineResource, defineRoot, defineRoute, defineRoutedContribution, defineServerCommand, defineServerTool, defineService, defineServiceContract, defineTool, defineToolRestriction, runCleanups };
|
package/dist/footer.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { type
|
|
1
|
+
import { FooterStatusItem, FooterStatusItemSchema, FooterStatusPlacement, FooterStatusPlacementSchema, FooterTextColor, FooterTextColorSchema, FooterTextSegment, FooterTextSegmentSchema, PoFooterContributionDefinition, PoFooterContributionHandle, PoFooterContributionValue, PoFooterStatus } from "./src/schemas/footer.mjs";
|
|
2
|
+
export { type FooterStatusItem, FooterStatusItemSchema, type FooterStatusPlacement, FooterStatusPlacementSchema, type FooterTextColor, FooterTextColorSchema, type FooterTextSegment, FooterTextSegmentSchema, type PoFooterContributionDefinition, type PoFooterContributionHandle, type PoFooterContributionValue, type PoFooterStatus };
|
package/dist/footer.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { FooterStatusItemSchema, FooterStatusPlacementSchema, FooterTextColorSchema, FooterTextSegmentSchema };
|
|
1
|
+
export { FooterStatusItemSchema, FooterStatusPlacementSchema, FooterTextColorSchema, FooterTextSegmentSchema } from "./src/schemas/footer.mjs";
|
package/dist/headless.cjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_headless = require("./src/schemas/headless.cjs");
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
3
|
+
exports.PO_HEADLESS_HOST_SERVICE = require_headless.PO_HEADLESS_HOST_SERVICE;
|
|
4
|
+
exports.PO_HEADLESS_OWNER = require_headless.PO_HEADLESS_OWNER;
|
|
5
|
+
exports.PO_LOAD_SKILL_TOOL = require_headless.PO_LOAD_SKILL_TOOL;
|
|
6
|
+
exports.PoHeadlessPromptAdmissionError = require_headless.PoHeadlessPromptAdmissionError;
|
|
7
|
+
exports.PoHeadlessToolBusyError = require_headless.PoHeadlessToolBusyError;
|
|
8
|
+
exports.PoSessionSetupError = require_headless.PoSessionSetupError;
|
|
9
|
+
exports.isPoHeadlessPromptAdmissionError = require_headless.isPoHeadlessPromptAdmissionError;
|
|
10
|
+
exports.isPoHeadlessToolBusyError = require_headless.isPoHeadlessToolBusyError;
|
|
11
|
+
exports.isPoHeadlessToolModelVisible = require_headless.isPoHeadlessToolModelVisible;
|
|
12
|
+
exports.isPoSessionSetupError = require_headless.isPoSessionSetupError;
|
|
13
|
+
exports.readPoHeadlessHost = require_headless.readPoHeadlessHost;
|
|
14
|
+
exports.readPoHeadlessOwner = require_headless.readPoHeadlessOwner;
|
|
15
|
+
exports.requirePoHeadlessHost = require_headless.requirePoHeadlessHost;
|
|
16
|
+
exports.toPoHeadlessToolResult = require_headless.toPoHeadlessToolResult;
|
package/dist/headless.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { PO_HEADLESS_HOST_SERVICE, PO_HEADLESS_OWNER, PO_LOAD_SKILL_TOOL, PoHeadlessActivity, PoHeadlessCapability, PoHeadlessCapabilitySnapshot, PoHeadlessClient, PoHeadlessClientRequest, PoHeadlessCommand, PoHeadlessCompactionResult, PoHeadlessCondition, PoHeadlessContent, PoHeadlessEventName, PoHeadlessExecutionContext, PoHeadlessHook, PoHeadlessHookEvent, PoHeadlessHookResult, PoHeadlessHostService, PoHeadlessModelMetadata, PoHeadlessModelSettings, PoHeadlessPromptAdmissionError, PoHeadlessRegistration, PoHeadlessResource, PoHeadlessSelection, PoHeadlessSelectionChange, PoHeadlessSession, PoHeadlessTool, PoHeadlessToolBusyError, PoHeadlessToolCompletionRequest, PoHeadlessToolCompletionResult, PoHeadlessToolRestriction, PoHeadlessToolResult, PoMcpSkillAccess, PoSessionSetupError, isPoHeadlessPromptAdmissionError, isPoHeadlessToolBusyError, isPoHeadlessToolModelVisible, isPoSessionSetupError, readPoHeadlessHost, readPoHeadlessOwner, requirePoHeadlessHost, toPoHeadlessToolResult } from "./src/schemas/headless.mjs";
|
|
2
|
+
export { PO_HEADLESS_HOST_SERVICE, PO_HEADLESS_OWNER, PO_LOAD_SKILL_TOOL, PoHeadlessActivity, PoHeadlessCapability, PoHeadlessCapabilitySnapshot, PoHeadlessClient, PoHeadlessClientRequest, PoHeadlessCommand, PoHeadlessCompactionResult, PoHeadlessCondition, PoHeadlessContent, PoHeadlessEventName, PoHeadlessExecutionContext, PoHeadlessHook, PoHeadlessHookEvent, PoHeadlessHookResult, PoHeadlessHostService, PoHeadlessModelMetadata, PoHeadlessModelSettings, PoHeadlessPromptAdmissionError, PoHeadlessRegistration, PoHeadlessResource, PoHeadlessSelection, PoHeadlessSelectionChange, PoHeadlessSession, PoHeadlessTool, PoHeadlessToolBusyError, PoHeadlessToolCompletionRequest, PoHeadlessToolCompletionResult, PoHeadlessToolRestriction, PoHeadlessToolResult, PoMcpSkillAccess, PoSessionSetupError, isPoHeadlessPromptAdmissionError, isPoHeadlessToolBusyError, isPoHeadlessToolModelVisible, isPoSessionSetupError, readPoHeadlessHost, readPoHeadlessOwner, requirePoHeadlessHost, toPoHeadlessToolResult };
|
package/dist/headless.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { DOOM_HEADLESS_HOST_SERVICE, DOOM_HEADLESS_OWNER, DOOM_LOAD_SKILL_TOOL, DoomHeadlessPromptAdmissionError, DoomHeadlessToolBusyError, DoomSessionSetupError, isDoomHeadlessPromptAdmissionError, isDoomHeadlessToolBusyError, isDoomHeadlessToolModelVisible, isDoomSessionSetupError, readDoomHeadlessHost, readDoomHeadlessOwner, requireDoomHeadlessHost, toDoomHeadlessToolResult };
|
|
1
|
+
export { PO_HEADLESS_HOST_SERVICE, PO_HEADLESS_OWNER, PO_LOAD_SKILL_TOOL, PoHeadlessPromptAdmissionError, PoHeadlessToolBusyError, PoSessionSetupError, isPoHeadlessPromptAdmissionError, isPoHeadlessToolBusyError, isPoHeadlessToolModelVisible, isPoSessionSetupError, readPoHeadlessHost, readPoHeadlessOwner, requirePoHeadlessHost, toPoHeadlessToolResult } from "./src/schemas/headless.mjs";
|