@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":"apiContracts.mjs","names":["Text","Optional","Strings","Flag","NumberValue","Json","Text","NumberValue","Optional","Flag","Json"],"sources":["../src/schemas/apiContracts.ts","../src/services/apiContracts/index.ts","../src/constants/contextApi.ts","../src/schemas/httpApiContracts.ts","../src/schemas/remoteApiContracts.ts","../src/schemas/sessionProtocol.ts","../src/schemas/sessionApiContracts.ts","../src/schemas/pluginProtocol.ts","../src/schemas/transportApiContracts.ts","../src/schemas/builtinApiContracts.ts"],"sourcesContent":["import { type Static, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { DoomApiScope } from './packageApi';\nimport type { DoomServerBundleOwner } from './serverBundle';\n\nexport const DOOM_API_CONTRACT_VERSION = 1;\nexport const DOOM_API_CONTRACT_FILE = 'contracts.json';\nconst Schema = Type.Unsafe<object | boolean>(Type.Union([Type.Boolean(), Type.Record(Type.String(), Type.Unknown())]));\nconst Scope = Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]);\nconst Named = Type.String({ minLength: 1 });\nconst ResponseSchema = Type.Object({\n description: Named,\n contentType: Type.Optional(Named),\n schema: Type.Optional(Schema),\n events: Type.Optional(Type.Record(Named, Schema)),\n});\n\n/** Data-only package entry. Schemas use JSON Schema draft-07, including TypeBox output; OpenAPI export translates tuple keywords. */\nexport const DoomApiContractSchema = Type.Object({\n version: Type.Literal(DOOM_API_CONTRACT_VERSION),\n protocols: Type.Optional(Type.Record(Named, Named)),\n schemas: Type.Optional(Type.Record(Named, Schema)),\n http: Type.Array(\n Type.Object({\n id: Named,\n scope: Scope,\n /** Omit for host-owned absolute routes. */\n basePath: Type.Optional(Type.String({ pattern: '^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$' })),\n path: Type.String({ pattern: '^/' }),\n method: Type.Union([\n Type.Literal('GET'),\n Type.Literal('POST'),\n Type.Literal('PUT'),\n Type.Literal('PATCH'),\n Type.Literal('DELETE'),\n Type.Literal('HEAD'),\n Type.Literal('OPTIONS'),\n ]),\n description: Named,\n availability: Type.Optional(Named),\n authentication: Type.Union([Type.Literal('none'), Type.Literal('owner'), Type.Literal('device')]),\n parameters: Type.Optional(\n Type.Array(\n Type.Object({\n name: Named,\n in: Type.Union([Type.Literal('path'), Type.Literal('query'), Type.Literal('header')]),\n required: Type.Boolean(),\n schema: Schema,\n }),\n ),\n ),\n body: Type.Optional(\n Type.Object({\n contentType: Named,\n contentTypes: Type.Optional(Type.Array(Named, { minItems: 1 })),\n required: Type.Boolean(),\n schema: Schema,\n }),\n ),\n responses: Type.Record(Type.String({ pattern: '^(?:[1-5][0-9]{2}|default)$' }), ResponseSchema, {\n minProperties: 1,\n }),\n }),\n ),\n sockets: Type.Array(\n Type.Object({\n id: Named,\n scope: Scope,\n description: Named,\n availability: Type.Optional(Named),\n service: Named,\n member: Named,\n direction: Type.Union([Type.Literal('client-to-server'), Type.Literal('server-to-client')]),\n kind: Type.Union([Type.Literal('method'), Type.Literal('state'), Type.Literal('channel')]),\n input: Schema,\n output: Type.Optional(Schema),\n errors: Type.Optional(Schema),\n }),\n ),\n /** Explicitly enumerate dynamic values whose shape is supplied at runtime. */\n dynamic: Type.Array(Type.String({ minLength: 1 })),\n gaps: Type.Optional(Type.Array(Named)),\n});\n\nexport type DoomApiContract = Static<typeof DoomApiContractSchema>;\nexport type DoomHttpContract = DoomApiContract['http'][number];\nexport type DoomSocketContract = DoomApiContract['sockets'][number];\n\nexport function defineApiContract(contract: DoomApiContract): DoomApiContract {\n return contract;\n}\n\nexport function parseApiContract(value: unknown): DoomApiContract {\n if (!Check(DoomApiContractSchema, value)) throw new Error('Invalid Po API contract');\n const contract = value as DoomApiContract;\n const ids = new Set<string>();\n for (const entry of [...contract.http, ...contract.sockets]) {\n const key = `${entry.scope}:${entry.id}`;\n if (ids.has(key)) throw new Error(`Duplicate API contract operation: ${key}`);\n ids.add(key);\n }\n // Reject non-JSON data rather than silently losing it during export.\n const visit = (item: unknown, ancestors: Set<object>): void => {\n if (item === null || typeof item === 'string' || typeof item === 'boolean') return;\n if (typeof item === 'number' && Number.isFinite(item)) return;\n if (typeof item !== 'object' || ancestors.has(item)) throw new Error('API contracts must contain finite JSON data');\n ancestors.add(item);\n for (const child of Object.values(item)) visit(child, ancestors);\n ancestors.delete(item);\n };\n visit(contract, new Set());\n return contract;\n}\n\nexport interface DoomPackageContract {\n packageName: string;\n packageVersion: string;\n scopes: readonly DoomApiScope[];\n owners: readonly DoomServerBundleOwner[];\n contract?: DoomApiContract;\n problem?: string;\n /** Generation-relative compiler output, never imported by the export command. */\n module?: string;\n}\n\nexport interface DoomCompiledContracts {\n version: typeof DOOM_API_CONTRACT_VERSION;\n generation: string;\n fingerprint: string;\n packages: DoomPackageContract[];\n}\n\nexport function parseCompiledContracts(value: unknown): DoomCompiledContracts {\n const PackageSchema = Type.Object({\n packageName: Named,\n packageVersion: Named,\n scopes: Type.Array(Scope, { uniqueItems: true }),\n owners: Type.Array(Type.Object({ majorMode: Named, layer: Named }), { minItems: 1 }),\n contract: Type.Optional(DoomApiContractSchema),\n problem: Type.Optional(Named),\n module: Type.Optional(Type.String({ pattern: '^\\\\./[^\\\\\\\\%?#]+$' })),\n });\n const CompiledSchema = Type.Object({\n version: Type.Literal(DOOM_API_CONTRACT_VERSION),\n generation: Named,\n fingerprint: Type.String({ pattern: '^[a-f0-9]{64}$' }),\n packages: Type.Array(PackageSchema),\n });\n if (!Check(CompiledSchema, value)) throw new Error('Invalid compiled API contracts');\n const data = value as DoomCompiledContracts;\n const names = new Set<string>();\n for (const entry of data.packages) {\n if (names.has(entry.packageName) || entry.module?.split('/').includes('..'))\n throw new Error('Invalid compiled package contract');\n names.add(entry.packageName);\n if (entry.contract !== undefined) parseApiContract(entry.contract);\n }\n return data;\n}\n","import { parseApiContract, type DoomCompiledContracts } from '../../schemas/apiContracts';\nimport type { DoomApiScope } from '../../schemas/packageApi';\n\nexport interface ApiContractSelection {\n scope: DoomApiScope;\n majorMode: string;\n activeLayers: readonly string[];\n compiled: DoomCompiledContracts;\n}\n\nexport interface ApiDocuments {\n openapi: Record<string, unknown>;\n asyncapi: Record<string, unknown>;\n manifest: {\n version: 1;\n complete: boolean;\n protocols: Record<string, string>;\n selections: {\n scope: DoomApiScope;\n majorMode: string;\n activeLayers: string[];\n generation: string;\n fingerprint: string;\n }[];\n packages: { name: string; version: string; scope: DoomApiScope }[];\n gaps: { packageName: string; scope: DoomApiScope; reason: string }[];\n dynamic: string[];\n };\n}\n\n/** Stable bytes for diffs and hashes, independent of object insertion order. */\nexport function canonicalContractJson(value: unknown): string {\n const ordered = (item: unknown): unknown => {\n if (Array.isArray(item)) return item.map(ordered);\n if (item !== null && typeof item === 'object')\n return Object.fromEntries(\n Object.entries(item)\n .sort(([a], [b]) => a.localeCompare(b, 'en'))\n .map(([key, child]) => [key, ordered(child)]),\n );\n return item;\n };\n return `${JSON.stringify(ordered(value), null, 2)}\\n`;\n}\n\nconst componentName = (value: string): string =>\n value.replace(/[^a-zA-Z0-9.-]/gu, (character) => `_${character.codePointAt(0)!.toString(16)}_`);\nconst pluginPrefix = (scope: DoomApiScope): string =>\n scope === 'global'\n ? '/api/plugins'\n : scope === 'workspace'\n ? '/api/workspaces/{workspaceId}/plugins'\n : '/api/workspaces/{workspaceId}/sessions/{sessionId}/plugins';\n\n/** Compose declarations only. No handlers, lifecycle hooks, or platform resources are loaded. */\nexport function createApiDocuments(selections: readonly ApiContractSelection[]): ApiDocuments {\n const paths: Record<string, Record<string, unknown>> = {};\n const schemas: Record<string, unknown> = {};\n const messages: Record<string, unknown> = {};\n const operations: Record<string, unknown> = {};\n const channelMessages: Record<string, Record<string, unknown>> = { global: {}, workspace: {}, session: {} };\n const manifest: ApiDocuments['manifest'] = {\n version: 1,\n complete: true,\n protocols: {},\n selections: [],\n packages: [],\n gaps: [],\n dynamic: [],\n };\n const socketAddresses = new Set<string>();\n const schema = (id: string, value: unknown): { $ref: string } => {\n const name = componentName(id);\n if (schemas[name] !== undefined) throw new Error(`Conflicting schema: ${id}`);\n // Local $defs references must remain local after moving into components.\n const relocate = (child: unknown): unknown => {\n if (Array.isArray(child)) return child.map(relocate);\n if (child === null || typeof child !== 'object') return child;\n return Object.fromEntries(\n Object.entries(child).map(([key, entry]) => {\n if (key === '$id') throw new Error(`Schema ${id} must use local references, not $id`);\n if (key === '$ref' && typeof entry === 'string') {\n if (!entry.startsWith('#/')) throw new Error(`Unresolved schema reference in ${id}: ${entry}`);\n return [key, `#/components/schemas/${name}${entry.slice(1)}`];\n }\n return [key, relocate(entry)];\n }),\n );\n };\n schemas[name] = relocate(value);\n return { $ref: `#/components/schemas/${name}` };\n };\n for (const selected of [...selections].sort((a, b) => a.scope.localeCompare(b.scope))) {\n manifest.selections.push({\n scope: selected.scope,\n majorMode: selected.majorMode,\n activeLayers: [...selected.activeLayers].sort(),\n generation: selected.compiled.generation,\n fingerprint: selected.compiled.fingerprint,\n });\n for (const entry of [...selected.compiled.packages].sort((a, b) => a.packageName.localeCompare(b.packageName))) {\n if (\n !entry.scopes.includes(selected.scope) ||\n !entry.owners.some(\n (owner) =>\n owner.majorMode === selected.majorMode &&\n (owner.layer === 'default' || selected.activeLayers.includes(owner.layer)),\n )\n )\n continue;\n manifest.packages.push({ name: entry.packageName, version: entry.packageVersion, scope: selected.scope });\n if (!entry.contract || entry.problem) {\n manifest.gaps.push({\n packageName: entry.packageName,\n scope: selected.scope,\n reason: entry.problem ?? 'No contract declaration',\n });\n continue;\n }\n const contract = parseApiContract(entry.contract);\n for (const [name, value] of Object.entries(contract.schemas ?? {}))\n schema(`${entry.packageName}.${selected.scope}.${name}`, value);\n for (const [name, version] of Object.entries(contract.protocols ?? {})) {\n if (manifest.protocols[name] !== undefined && manifest.protocols[name] !== version)\n throw new Error(`Conflicting ${name} protocol versions`);\n manifest.protocols[name] = version;\n }\n manifest.gaps.push(\n ...(contract.gaps ?? []).map((reason) => ({ packageName: entry.packageName, scope: selected.scope, reason })),\n );\n manifest.dynamic.push(...contract.dynamic.map((value) => `${entry.packageName}: ${value}`));\n for (const route of contract.http.filter((route) => route.scope === selected.scope)) {\n const id = `${entry.packageName}.${route.scope}.${route.id}`;\n const mount =\n route.basePath === undefined\n ? ''\n : route.basePath === 'settings'\n ? `${route.scope === 'global' ? '/api' : '/api/workspaces/{workspaceId}'}/settings`\n : `${pluginPrefix(route.scope)}/${route.basePath}`;\n const pathname = `${mount}${route.path === '/' ? '' : route.path}`;\n const method = route.method.toLowerCase();\n const path = (paths[pathname] ??= {});\n if (path[method]) throw new Error(`Conflicting HTTP contract: ${route.method} ${pathname}`);\n const parameters = (route.parameters ?? []).map((parameter) => ({\n ...parameter,\n schema: schema(`${id}.${parameter.in}.${parameter.name}`, parameter.schema),\n }));\n for (const match of pathname.matchAll(/\\{([^}]+)\\}/gu)) {\n if (!parameters.some((parameter) => parameter.in === 'path' && parameter.name === match[1]))\n parameters.push({\n name: match[1],\n in: 'path',\n required: true,\n schema: schema(`${id}.path.${match[1]}`, { type: 'string', minLength: 1 }),\n });\n }\n path[method] = {\n operationId: componentName(id),\n description: route.description,\n parameters,\n security: route.authentication === 'none' ? [] : [{ [route.authentication]: [] }],\n 'x-po': {\n packageName: entry.packageName,\n scope: route.scope,\n ...(route.availability ? { availability: route.availability } : {}),\n },\n ...(route.body\n ? {\n requestBody: {\n required: route.body.required,\n content: Object.fromEntries(\n (route.body.contentTypes ?? [route.body.contentType]).map((mediaType) => [\n mediaType,\n { schema: schema(`${id}.body.${mediaType}`, route.body!.schema) },\n ]),\n ),\n },\n }\n : {}),\n responses: Object.fromEntries(\n Object.entries(route.responses).map(([status, response]) => [\n status,\n {\n description: response.description,\n ...(response.events\n ? {\n 'x-sse-events': Object.fromEntries(\n Object.entries(response.events).map(([name, payload]) => [\n name,\n schema(`${id}.event.${name}`, payload),\n ]),\n ),\n }\n : {}),\n ...(response.schema === undefined\n ? {}\n : {\n content: {\n [response.contentType ?? 'application/json']: {\n schema: schema(`${id}.response.${status}`, response.schema),\n },\n },\n }),\n },\n ]),\n ),\n };\n }\n for (const socket of contract.sockets.filter((socket) => socket.scope === selected.scope)) {\n const address = `${socket.scope}:${socket.direction}:${socket.kind}:${socket.service}:${socket.member}`;\n if (socketAddresses.has(address)) throw new Error(`Conflicting socket contract: ${address}`);\n socketAddresses.add(address);\n for (const channel of socket.scope === 'global' ? ['global'] : [socket.scope, 'global']) {\n const id = componentName(\n `${entry.packageName}.${socket.scope}.${socket.id}${channel === socket.scope ? '' : '.aggregate'}`,\n );\n const addMessage = (suffix: string, payload: unknown): string => {\n const name = `${id}.${suffix}`;\n messages[name] = { name, payload: schema(name, payload) };\n channelMessages[channel][name] = { $ref: `#/components/messages/${name}` };\n return `#/channels/${channel}/messages/${name}`;\n };\n const request = addMessage('input', socket.input);\n const replies = socket.output === undefined ? [] : [{ $ref: addMessage('output', socket.output) }];\n if (socket.errors !== undefined) replies.push({ $ref: addMessage('error', socket.errors) });\n operations[id] = {\n action: socket.direction === 'client-to-server' ? 'receive' : 'send',\n channel: { $ref: `#/channels/${channel}` },\n messages: [{ $ref: request }],\n description: socket.description,\n ...(replies.length ? { reply: { channel: { $ref: `#/channels/${channel}` }, messages: replies } } : {}),\n 'x-po': {\n service: socket.service,\n member: socket.member,\n scope: socket.scope,\n kind: socket.kind,\n transportScope: channel,\n ...(socket.availability ? { availability: socket.availability } : {}),\n },\n };\n }\n }\n }\n }\n manifest.complete = manifest.gaps.length === 0;\n manifest.dynamic = [...new Set(manifest.dynamic)].sort();\n const info = { title: 'Po compiled client API', version: '1' };\n const openapi = {\n openapi: '3.1.1',\n info,\n paths,\n components: {\n schemas: openApiSchemas(schemas),\n securitySchemes: {\n owner: { type: 'apiKey', in: 'header', name: 'x-po-token' },\n device: {\n type: 'apiKey',\n in: 'cookie',\n name: '__Host-po_device',\n description:\n 'Admitted device credentials and purpose-bound sealed channel; see remote authentication operations.',\n },\n },\n },\n };\n const asyncapi = {\n asyncapi: '3.0.0',\n info,\n channels: Object.fromEntries(\n Object.entries(channelMessages).map(([scope, messages]) => [\n scope,\n {\n address:\n scope === 'global'\n ? '/api/ws'\n : scope === 'workspace'\n ? '/api/workspaces/{workspaceId}/ws'\n : '/api/workspaces/{workspaceId}/sessions/{sessionId}/ws',\n ...(scope === 'global'\n ? {}\n : {\n parameters: {\n workspaceId: { description: 'Admitted workspace identity.' },\n ...(scope === 'session' ? { sessionId: { description: 'Session owned by this workspace.' } } : {}),\n },\n }),\n messages,\n description:\n 'Decoded Pi/Chord values over framed CBOR. The global hub socket aggregates all scopes; workspace and session sockets restrict session access and package calls to their addressed scope. Remote paired-device sockets seal the same bytes.',\n },\n ]),\n ),\n operations,\n components: { schemas: asyncApiSchemas(schemas), messages },\n };\n // References must resolve in each portable document before either is published.\n for (const document of [openapi, asyncapi]) {\n const visit = (value: unknown): void => {\n if (value === null || typeof value !== 'object') return;\n for (const [key, child] of Object.entries(value)) {\n if (key === '$ref' && typeof child === 'string') {\n let target: unknown = document;\n for (const segment of child.slice(2).split('/')) {\n if (target === null || typeof target !== 'object') throw new Error(`Unresolved API reference: ${child}`);\n target = Reflect.get(target, segment.replace(/~1/gu, '/').replace(/~0/gu, '~'));\n }\n if (target === undefined) throw new Error(`Unresolved API reference: ${child}`);\n } else visit(child);\n }\n };\n visit(document);\n }\n return { openapi, asyncapi, manifest };\n}\n\n/** TypeBox uses draft-07 tuple keywords; OpenAPI 3.1 evaluates the 2020-12 vocabulary. */\nfunction openApiSchemas(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(openApiSchemas);\n if (value === null || typeof value !== 'object') return value;\n const source = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(source)) {\n if (key === 'items' && Array.isArray(child)) {\n if (child.length) result.prefixItems = child.map(openApiSchemas);\n else {\n result.items = false;\n result.maxItems = 0;\n }\n } else if (key === 'additionalItems' && Array.isArray(source.items)) result.items = openApiSchemas(child);\n else if (key === 'dependencies' && child !== null && typeof child === 'object') {\n const required: Record<string, unknown> = {};\n const schemas: Record<string, unknown> = {};\n for (const [name, dependency] of Object.entries(child)) {\n if (Array.isArray(dependency)) required[name] = dependency;\n else schemas[name] = openApiSchemas(dependency);\n }\n if (Object.keys(required).length) result.dependentRequired = required;\n if (Object.keys(schemas).length) result.dependentSchemas = schemas;\n } else if (key === '$schema') result.$schema = 'https://json-schema.org/draft/2020-12/schema';\n else result[key] = openApiSchemas(child);\n }\n return result;\n}\n\nfunction asyncApiSchemas(schemas: Record<string, unknown>): Record<string, unknown> {\n const convert = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(convert);\n if (value === null || typeof value !== 'object') return value;\n const result: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(value)) {\n if (key === '$ref' && typeof child === 'string') {\n result[key] = child.replace(/^(#\\/components\\/schemas\\/[^/]+)(.*)$/u, '$1/schema$2');\n } else if (key === 'items' && Array.isArray(child) && child.length === 0) {\n result.items = false;\n result.maxItems = 0;\n } else result[key] = convert(child);\n }\n return result;\n };\n return Object.fromEntries(\n Object.entries(schemas).map(([name, schema]) => [\n name,\n {\n schemaFormat: 'application/schema+json;version=draft-07',\n schema: convert(schema),\n },\n ]),\n );\n}\n","/**\n * What one entry in the composition actually is, for a reader who clicked it.\n *\n * The projection prices the composition and stops there: names, owners, and\n * integer counts, small enough to republish whenever the composition changes.\n * The prose and the schema behind a figure are an order of magnitude larger and\n * are wanted one row at a time, so they travel on request instead. This module\n * is the contract both ends of that request share, and it is deliberately free\n * of Node imports so a browser can hold it too.\n */\n\n/** Where a host mounts this package's API; the segment after /api/plugins/. */\nexport const API_BASE_PATH = 'context';\n\n/** The session a proxied request belongs to; the hub strips it before forwarding. */\nexport const SESSION_QUERY_PARAM = 'session';\n\nexport const ITEM_ROUTE = '/item';\n\nexport const NAME_QUERY_PARAM = 'name';\n\nexport const KIND_QUERY_PARAM = 'kind';\n\nexport const CONTEXT_DETAIL_VERSION = 1;\n\n/** Plugin-agnostic status payload: a JSON map keyed by registered tool name. */\nexport const CONTEXT_TOOL_WARNINGS_STATUS_KEY = 'doom-context-tool-warnings';\n","import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, ITEM_ROUTE } from '../constants/contextApi';\nimport type { DoomHttpContract } from './apiContracts';\n\nconst Text = Type.String();\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Flag = Type.Boolean();\nconst NumberValue = Type.Number();\nexport const ApiErrorSchema = Type.Object({ error: Text, hash: Optional(Text) });\nexport const ApiOkSchema = Type.Object({ ok: Type.Literal(true) });\nconst Json = Type.Unknown({ description: 'Value whose schema is supplied by the selected runtime contribution.' });\n\n/** Common JSON response construction; status and payload remain explicit at the declaration. */\nexport function jsonApiResponses(schema: object | boolean, status = 200): DoomHttpContract['responses'] {\n return {\n [status]: { description: 'Successful response', contentType: 'application/json', schema },\n '400': { description: 'Invalid request', schema: ApiErrorSchema },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n '403': { description: 'Request is not authorized', schema: ApiErrorSchema },\n '404': { description: 'Resource or capability unavailable', schema: ApiErrorSchema },\n '409': { description: 'Conflicting state', schema: ApiErrorSchema },\n '422': { description: 'Invalid operation', schema: ApiErrorSchema },\n '500': { description: 'Host operation failed', schema: ApiErrorSchema },\n '502': { description: 'Provider failed', schema: ApiErrorSchema },\n '503': { description: 'Service unavailable', schema: ApiErrorSchema },\n };\n}\nexport const WebCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n verifiedAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n assetPaths: Strings,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const NativeCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n entryPath: Text,\n channels: Strings,\n plugins: Strings,\n});\n/** A configured template id and the mount whose compositions offer it. */\nconst TemplateDecisionSchema = Type.Object({\n id: Optional(Text),\n mount: Type.Union([\n Type.Object({ scope: Type.Literal('global') }),\n Type.Object({ scope: Type.Literal('workspace'), workspaceId: Text }),\n ]),\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n name: Text,\n cwd: Text,\n createdAt: Text,\n updatedAt: Text,\n phase: Type.Union([Type.Literal('idle'), Type.Literal('turn'), Type.Literal('compaction'), Type.Literal('retry')]),\n phaseSince: Text,\n attach: Type.Literal('attached'),\n pendingMessageCount: NumberValue,\n everPrompted: Flag,\n awaitingInput: Flag,\n lastSettledAt: Optional(Text),\n git: Optional(Type.Object({ branch: Text, dirty: Flag })),\n profile: Optional(Type.Object({ name: Text, displayName: Optional(Text), iconVersion: Optional(Text) })),\n parentSessionId: Optional(Text),\n sessionProvenance: Optional(Text),\n /** The line the session's extension published about background work it runs. */\n activity: Optional(Type.Object({ label: Text, attention: Optional(Flag), since: Optional(Text) })),\n pendingSetups: Optional(\n Type.Array(\n Type.Object({\n id: Text,\n name: Text,\n createdAt: Text,\n cwd: Optional(Text),\n setupKind: Optional(Type.Union([Type.Literal('managed-worktree'), Type.Literal('existing-directory')])),\n status: Optional(\n Type.Union([Type.Literal('provisioning'), Type.Literal('failed'), Type.Literal('interrupted')]),\n ),\n errorCode: Optional(\n Type.Union([Type.Literal('SESSION_WORKTREE_PROVISION_FAILED'), Type.Literal('SESSION_UNAVAILABLE')]),\n ),\n }),\n ),\n ),\n /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const HubSnapshotFrameSchema = Type.Object({\n type: Type.Literal('sessions_snapshot'),\n sessions: Type.Array(SessionSummarySchema),\n});\nexport const HubUpsertFrameSchema = Type.Object({\n type: Type.Literal('session_upsert'),\n session: SessionSummarySchema,\n});\nexport const HubRemovedFrameSchema = Type.Object({ type: Type.Literal('session_removed'), sessionId: Text });\nconst Workspace = Type.Object({ id: Text, root: Text, name: Optional(Text), available: Optional(Flag) });\nexport const WorkspaceSnapshotFrameSchema = Type.Object({\n type: Type.Literal('workspaces_snapshot'),\n workspaces: Type.Array(Workspace),\n});\nexport const WorkspaceUpsertFrameSchema = Type.Object({\n type: Type.Literal('workspace_upsert'),\n workspace: Workspace,\n});\nexport const WorkspaceRemovedFrameSchema = Type.Object({\n type: Type.Literal('workspace_removed'),\n workspaceId: Text,\n});\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n messageCount: NumberValue,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<DoomHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<DoomHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: DoomHttpContract['method'],\n result: TSchema,\n extra: Partial<DoomHttpContract> = {},\n): DoomHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: DoomHttpContract[] = [\n host(\n 'health',\n '/api/health',\n 'GET',\n Type.Object({\n ok: Type.Literal(true),\n role: Type.Literal('hub'),\n protocol: Type.Literal(1),\n sessions: NumberValue,\n }),\n { authentication: 'none' },\n ),\n host('telemetry.browser', '/api/telemetry/browser', 'POST', ApiOkSchema, {\n body: body(\n Type.Object({\n v: Type.Literal(1),\n events: Type.Array(\n Type.Object({\n name: Type.String({ pattern: '^web\\\\.browser\\\\.[a-z_]{1,40}$' }),\n duration_ms: Optional(NumberValue),\n count: Optional(NumberValue),\n }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n global: Optional(WebCompositionSchema),\n nativeGlobal: Optional(NativeCompositionSchema),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n template: Optional(TemplateDecisionSchema),\n /** The phone app's `native.template` choice, resolved the same way. */\n nativeTemplate: Optional(TemplateDecisionSchema),\n workspaces: Type.Array(\n Type.Object({\n id: Text,\n root: Text,\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n }),\n ),\n }),\n ),\n host('directories', '/api/directories', 'GET', Type.Object({ directories: Strings }), { parameters: [query('q')] }),\n host(\n 'directories.children',\n '/api/directories/children',\n 'GET',\n Type.Object({ path: Text, parent: Optional(Text), directories: Strings }),\n { parameters: [query('path')] },\n ),\n host(\n 'sessions.list',\n '/api/workspaces/{workspaceId}/sessions',\n 'GET',\n Type.Object({ sessions: Type.Array(SessionSummarySchema) }),\n ),\n host('sessions.create', '/api/workspaces/{workspaceId}/sessions', 'POST', Type.Object({ sessionId: Text }), {\n body: body(Type.Object({ name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ sessionId: Text }), 201),\n }),\n host('sessions.get', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'GET', SessionSummarySchema),\n host('sessions.delete', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'DELETE', ApiOkSchema),\n host(\n 'sessions.history',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n { availability: 'Host provides sessionHistory' },\n ),\n host('sessions.restart', '/api/workspaces/{workspaceId}/sessions/{sessionId}/restart', 'POST', ApiOkSchema, {\n availability: 'Host provides restartSession',\n }),\n host('sessions.revive', '/api/workspaces/{workspaceId}/sessions/{sessionId}/revive', 'POST', ApiOkSchema, {\n availability: 'Host provides reviveSession',\n }),\n host(\n 'sessions.resume',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/resume',\n 'POST',\n Type.Object({ sessionId: Text }),\n {\n availability: 'Host provides resumeSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n },\n ),\n host('sessions.file', '/api/workspaces/{workspaceId}/sessions/{sessionId}/file', 'GET', Binary, {\n parameters: [query('path', Text, true)],\n responses: {\n ...jsonApiResponses(Binary),\n '200': { description: 'File bytes, MIME type follows the file extension', contentType: '*/*', schema: Binary },\n },\n }),\n host(\n 'sessions.channels',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/channels',\n 'GET',\n Type.Object({ channels: Type.Array(Type.Object({ type: Text, sessionId: Text, payload: Json })) }),\n ),\n host(\n 'sessions.channel.send',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/channel/{frameType}',\n 'POST',\n ApiOkSchema,\n {\n body: body(Json),\n responses: jsonApiResponses(ApiOkSchema, 202),\n description: 'Deliver a payload to the selected channel contract identified by frameType.',\n },\n ),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(Workspace) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: Workspace }), {\n body: body(Type.Object({ root: Optional(Text), name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ workspace: Workspace }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: Workspace })),\n host(\n 'workspaces.history',\n '/api/workspaces/{workspaceId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n {\n availability: 'Host provides workspaceHistory',\n },\n ),\n host('workspaces.resume', '/api/workspaces/{workspaceId}/resume', 'POST', Type.Object({ sessionId: Text }), {\n availability: 'Host provides resumeWorkspaceSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n }),\n host('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n host('events', '/api/events', 'GET', Text, {\n responses: {\n '200': {\n description:\n 'SSE session and workspace snapshots, membership changes, and selected channel frames. Selected extension channel payloads are defined by the corresponding AsyncAPI channel operations.',\n events: {\n sessions_snapshot: HubSnapshotFrameSchema,\n session_upsert: HubUpsertFrameSchema,\n session_removed: HubRemovedFrameSchema,\n workspaces_snapshot: WorkspaceSnapshotFrameSchema,\n workspace_upsert: WorkspaceUpsertFrameSchema,\n workspace_removed: WorkspaceRemovedFrameSchema,\n },\n contentType: 'text/event-stream',\n schema: Text,\n },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n },\n }),\n];\nconst AuthType = Type.Union([Type.Literal('api_key'), Type.Literal('oauth')]);\nconst Provider = Type.Object({\n id: Text,\n name: Text,\n methods: Type.Array(Type.Object({ type: AuthType, label: Text })),\n authenticated: Optional(Type.Object({ type: AuthType, source: Optional(Text) })),\n});\nconst LoginEvent = Type.Union([\n Type.Object({\n type: Type.Literal('info'),\n message: Text,\n links: Optional(Type.Array(Type.Object({ url: Text, label: Optional(Text) }))),\n }),\n Type.Object({ type: Type.Literal('auth_url'), url: Text, instructions: Optional(Text) }),\n Type.Object({\n type: Type.Literal('device_code'),\n userCode: Text,\n verificationUri: Text,\n intervalSeconds: Optional(NumberValue),\n expiresInSeconds: Optional(NumberValue),\n }),\n Type.Object({ type: Type.Literal('progress'), message: Text }),\n]);\nexport const LoginFlowSchema = Type.Object({\n id: Text,\n providerId: Text,\n providerName: Text,\n type: AuthType,\n status: Type.Union([\n Type.Literal('running'),\n Type.Literal('succeeded'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n events: Type.Array(LoginEvent),\n prompt: Optional(\n Type.Object({\n id: Text,\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('secret'),\n Type.Literal('select'),\n Type.Literal('manual_code'),\n ]),\n message: Text,\n placeholder: Optional(Text),\n options: Optional(Type.Array(Type.Object({ id: Text, label: Text, description: Optional(Text) }))),\n }),\n ),\n remote: Optional(Flag),\n error: Optional(Text),\n});\nconst Flow = Type.Object({ flow: LoginFlowSchema });\nexport const machineHttpContracts: DoomHttpContract[] = [\n host('providers.list', '/providers', 'GET', Type.Object({ providers: Type.Array(Provider) })),\n host(\n 'models.list',\n '/models',\n 'GET',\n Type.Object({ models: Type.Array(Type.Object({ value: Text, label: Text, group: Text })) }),\n ),\n host('providers.logout', '/providers/{providerId}', 'DELETE', ApiOkSchema),\n host('logins.create', '/logins', 'POST', Flow, {\n body: body(Type.Object({ providerId: Text, type: AuthType })),\n responses: jsonApiResponses(Flow, 201),\n }),\n host('logins.get', '/logins/{flowId}', 'GET', Flow),\n host('logins.cancel', '/logins/{flowId}', 'DELETE', Flow),\n host('logins.answer', '/logins/{flowId}/answer', 'POST', Flow, {\n body: body(Type.Object({ promptId: Text, value: Text })),\n }),\n].map((route) => ({ ...route, basePath: 'po' }));\nconst Source = Type.Union([\n Type.Literal('extension'),\n Type.Literal('mcp'),\n Type.Literal('plugin'),\n Type.Literal('core'),\n]);\nconst Detail = Type.Union([\n Type.Object({\n itemKind: Type.Literal('tool'),\n name: Text,\n owner: Text,\n source: Source,\n active: Flag,\n tokens: Type.Object({ schemaTokens: NumberValue, promptTokens: NumberValue, totalTokens: NumberValue }),\n description: Optional(Text),\n promptSnippet: Optional(Text),\n promptGuidelines: Optional(Strings),\n parameters: Optional(Json),\n }),\n Type.Object({\n itemKind: Type.Literal('skill'),\n name: Text,\n owner: Text,\n source: Source,\n active: Type.Literal(true),\n tokens: NumberValue,\n description: Text,\n filePath: Optional(Text),\n modelInvocable: Flag,\n }),\n Type.Object({\n itemKind: Type.Literal('prompt'),\n name: Type.Literal('system'),\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n text: Text,\n }),\n]);\nexport const sessionHttpContracts: DoomHttpContract[] = [\n {\n ...host('context.item', ITEM_ROUTE, 'GET', Type.Object({ revision: NumberValue, item: Detail }), {\n parameters: [\n query('kind', Type.Union([Type.Literal('tool'), Type.Literal('skill'), Type.Literal('prompt')]), true),\n query('name', Text, true),\n ],\n }),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('files.complete', '/', 'GET', Type.Object({ files: Strings }), {\n parameters: [query('q', Type.String({ maxLength: 256 }))],\n }),\n scope: 'session',\n basePath: 'files',\n },\n];\n","import { Type, type TSchema } from 'typebox';\n\nimport type { DoomHttpContract } from './apiContracts';\nimport { ApiErrorSchema, ApiOkSchema, jsonApiResponses } from './httpApiContracts';\n\nconst Text = Type.String();\nconst NumberValue = Type.Number();\nconst Optional = Type.Optional;\nconst Flag = Type.Boolean();\nconst JsonObject = Type.Record(\n Text,\n Type.Unknown({\n description: 'WebAuthn ceremony fields supplied and verified by the installed WebAuthn implementation.',\n }),\n);\nconst Tunnel = Type.Union([\n Type.Object({ kind: Type.Literal('quick') }),\n Type.Object({\n kind: Type.Literal('named'),\n hostname: Text,\n name: Optional(Text),\n tokenFile: Optional(Text),\n configFile: Optional(Text),\n }),\n]);\nconst Settings = Type.Object({\n autoCloseEnabled: Flag,\n autoCloseMinutes: NumberValue,\n sessionExpiryEnabled: Flag,\n idleMinutes: NumberValue,\n absoluteHours: NumberValue,\n tunnel: Tunnel,\n sandbox: Type.Object({ enabled: Flag, workspaces: Type.Array(Text) }),\n});\nconst State = Type.Object({\n status: Type.Union([Type.Literal('off'), Type.Literal('starting'), Type.Literal('on'), Type.Literal('failed')]),\n publicUrl: Optional(Text),\n startedAt: Optional(Text),\n closesAt: Optional(Text),\n error: Optional(Text),\n devices: Type.Array(\n Type.Object({ id: Text, label: Text, userAgent: Text, createdAt: Text, lastSeenAt: Text, self: Flag }),\n ),\n pending: Type.Array(Type.Object({ id: Text, userAgent: Text, edgeIp: Text, createdAt: Text, expiresAt: Text })),\n trustedDevices: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n platform: Type.Union([Type.Literal('ios'), Type.Literal('android')]),\n createdAt: Text,\n lastSeenAt: Text,\n self: Flag,\n }),\n ),\n settings: Settings,\n});\nconst StateResponse = Type.Object({ state: State, handingOver: Optional(Flag) });\nconst Trust = Type.Object({ publicKey: Text, fingerprint: Text, revision: NumberValue });\nconst Begun = Type.Object({ ceremonyId: Text, options: JsonObject });\nconst DeviceKeyBegun = Type.Object({ ceremonyId: Text, challenge: Text, kind: Type.Literal('device-key') });\nconst ChannelKeys = Type.Object({ session: Text, protocol: Text, http: Text });\nconst Finish = Type.Object({ ceremonyId: Text, response: JsonObject });\nexport const SealedEnvelopeSchema = Type.Object({ v: Type.Literal(1), n: Text, c: Text });\nexport const SealedHttpRequestSchema = Type.Object({\n v: Type.Literal(1),\n method: Text,\n target: Text,\n headers: Type.Array(Type.Tuple([Text, Text])),\n body: Optional(Text),\n});\nexport const SealedHttpResponseSchema = Type.Object({\n v: Type.Literal(1),\n status: NumberValue,\n headers: Type.Array(Type.Tuple([Text, Text])),\n body: Text,\n});\nconst route = (\n id: string,\n path: string,\n method: DoomHttpContract['method'],\n result: TSchema,\n input?: TSchema,\n extra: Partial<DoomHttpContract> = {},\n): DoomHttpContract => ({\n id: `remote.${id}`,\n path: `/api/remote${path}`,\n method,\n scope: 'global',\n authentication: 'owner',\n description: `Remote Control ${id}.`,\n availability:\n 'Global host provides Remote Control. Tunnel routes additionally enforce device, origin and step-up policy.',\n responses: { ...jsonApiResponses(result), '429': { description: 'Rate limit exceeded', schema: ApiErrorSchema } },\n ...(input ? { body: { contentType: 'application/json', required: true, schema: input } } : {}),\n ...extra,\n});\nconst direct: DoomHttpContract[] = [\n route('state', '', 'GET', StateResponse),\n route('enable', '/enable', 'POST', StateResponse, undefined, {\n responses: {\n ...jsonApiResponses(StateResponse),\n '202': { description: 'Container handover started', schema: StateResponse },\n },\n }),\n route('disable', '/disable', 'POST', StateResponse, undefined, {\n responses: {\n ...jsonApiResponses(StateResponse),\n '202': { description: 'Tunnel closing', schema: Type.Object({ status: Type.Literal('closing') }) },\n },\n }),\n route(\n 'codes',\n '/codes',\n 'POST',\n Type.Object({ ...Trust.properties, code: Text, manualCode: Text, pairUrl: Text, expiresAt: Text }),\n undefined,\n {\n responses: jsonApiResponses(\n Type.Object({ ...Trust.properties, code: Text, manualCode: Text, pairUrl: Text, expiresAt: Text }),\n 201,\n ),\n },\n ),\n route('approve', '/pairing/{id}/approve', 'POST', StateResponse),\n route('deny', '/pairing/{id}/deny', 'POST', StateResponse),\n route('revoke', '/devices/{id}', 'DELETE', StateResponse),\n route('settings', '/settings', 'PUT', Type.Object({ settings: Settings }), Type.Partial(Settings)),\n route(\n 'passkeys',\n '/passkeys',\n 'GET',\n Type.Object({\n support: Type.Union([\n Type.Object({ supported: Type.Literal(true), rpId: Text }),\n Type.Object({ supported: Type.Literal(false), reason: Text }),\n ]),\n credentials: Type.Array(Type.Object({ id: Text, label: Text, createdAt: Text, lastUsedAt: Text })),\n }),\n ),\n route('passkeys.remove', '/passkeys/{id}', 'DELETE', ApiOkSchema),\n route('register.begin', '/passkeys/register/begin', 'POST', Begun, undefined, { authentication: 'device' }),\n route('register.finish', '/passkeys/register/finish', 'POST', Type.Object({ id: Text }), Finish, {\n authentication: 'device',\n }),\n route('authenticate.begin', '/passkeys/authenticate/begin', 'POST', Begun, undefined, { authentication: 'none' }),\n route(\n 'authenticate.finish',\n '/passkeys/authenticate/finish',\n 'POST',\n Type.Object({ ok: Type.Literal(true), hostPublicKey: Text }),\n Finish,\n { authentication: 'none' },\n ),\n route('challenge', '/challenge', 'POST', Type.Union([Begun, DeviceKeyBegun]), Type.Object({ action: Text }), {\n authentication: 'device',\n }),\n route(\n 'trusted-devices.register',\n '/trusted-devices',\n 'POST',\n Type.Object({ trustedDeviceId: Text }),\n Type.Object({\n identityPublicKey: Text,\n stepUpPublicKey: Text,\n label: Text,\n platform: Type.Union([Type.Literal('ios'), Type.Literal('android')]),\n identityProof: Text,\n stepUpProof: Text,\n }),\n {\n authentication: 'device',\n description: 'Registers a native device from a sealed, QR-approved pairing session.',\n responses: jsonApiResponses(Type.Object({ trustedDeviceId: Text }), 201),\n },\n ),\n route('trusted-devices.revoke', '/trusted-devices/{id}', 'DELETE', StateResponse, undefined, {\n description: 'Revokes a trusted native device. Local callers, or sealed callers with verified step-up.',\n }),\n route(\n 'device-auth.challenge',\n '/device-auth/challenge',\n 'POST',\n Type.Object({ challengeId: Text, challenge: Text, hostPublicKey: Text, attestation: Text }),\n Type.Object({ trustedDeviceId: Text, nonce: Text }),\n { authentication: 'none' },\n ),\n route(\n 'device-auth.authenticate',\n '/device-auth/authenticate',\n 'POST',\n Type.Object({ ok: Type.Literal(true) }),\n Type.Object({ challengeId: Text, trustedDeviceId: Text, signature: Text, channels: ChannelKeys }),\n { authentication: 'none' },\n ),\n route(\n 'channel',\n '/channel',\n 'POST',\n ApiOkSchema,\n Type.Object({\n clientPublicKey: Text,\n scope: Type.Union([Type.Literal('session'), Type.Literal('protocol'), Type.Literal('http')]),\n }),\n { authentication: 'device' },\n ),\n route('request', '/request', 'POST', SealedEnvelopeSchema, SealedEnvelopeSchema, {\n authentication: 'device',\n description:\n 'Sealed HTTP gateway. Decrypted requests/responses use the SealedHttpRequest and SealedHttpResponse envelopes.',\n }),\n route(\n 'pair',\n '/pair',\n 'POST',\n Type.Object({ requestId: Text, status: Type.Literal('pending') }),\n Type.Object({ code: Type.String({ minLength: 1 }) }),\n {\n authentication: 'none',\n responses: {\n ...jsonApiResponses(Type.Object({ requestId: Text, status: Type.Literal('pending') }), 202),\n '410': { description: 'Pairing code is no longer valid', schema: ApiErrorSchema },\n },\n },\n ),\n route(\n 'pair.status',\n '/pair/status',\n 'GET',\n Type.Object({\n status: Type.Union([\n Type.Literal('pending'),\n Type.Literal('approved'),\n Type.Literal('denied'),\n Type.Literal('expired'),\n Type.Literal('consumed'),\n ]),\n bundleTrust: Optional(Trust),\n hostPublicKey: Optional(Text),\n }),\n undefined,\n { authentication: 'none', parameters: [{ name: 'request', in: 'query', required: true, schema: Text }] },\n ),\n];\nexport const remoteHttpContracts: DoomHttpContract[] = [\n route('frontend', '/frontend', 'POST', ApiOkSchema, Type.Object({ origin: Text }), {\n authentication: 'owner',\n availability: 'Internal loopback frontend registration; blocked by the browser proxy.',\n parameters: [{ name: 'x-po-web-registration', in: 'header', required: true, schema: Text }],\n }),\n ...direct,\n ...direct.map((operation) => ({\n ...operation,\n id: `${operation.id}.plugin`,\n basePath: 'remote',\n path: operation.path.slice('/api/remote'.length) || '/',\n authentication: 'owner' as const,\n availability: 'Global Remote Control plugin mount, reached through the authenticated headless listener.',\n })),\n {\n id: 'remote.pair.page',\n scope: 'global',\n path: '/pair',\n method: 'GET',\n authentication: 'none',\n availability: 'Remote listener only',\n description: 'Pairing and passkey bootstrap page.',\n responses: { '200': { description: 'Pairing page', contentType: 'text/html', schema: Text } },\n },\n];\nconst Asset = Type.Object({\n path: Text,\n sha256: Type.String({ pattern: '^[a-f0-9]{64}$' }),\n byteLength: Type.Integer({ minimum: 0 }),\n contentType: Text,\n});\nconst Signed = Type.Object({\n manifest: Type.Object({\n version: Type.Literal(2),\n revision: Type.Integer({ minimum: 1 }),\n builtAt: NumberValue,\n assets: Type.Array(Asset),\n }),\n signature: Text,\n publicKey: Text,\n});\nexport const bundleHttpContracts: DoomHttpContract[] = [\n ...['/bundle-manifest.json', '/api/web-plugins/{id}/{revision}/manifest'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): DoomHttpContract => ({\n id: `bundle.${path}.${method}`,\n scope: 'global',\n path,\n method,\n authentication: 'owner',\n availability: 'Host publishes a web bundle',\n description: 'Read an immutable signed browser bundle manifest.',\n responses:\n method === 'HEAD'\n ? { '200': { description: 'Manifest response headers' }, '404': { description: 'Bundle not published' } }\n : jsonApiResponses(Signed),\n })),\n ),\n ...['/bundle-assets/{revision}/{assetPath}', '/api/web-plugins/{id}/{revision}/assets/{assetPath}'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): DoomHttpContract => ({\n id: `asset.${path}.${method}`,\n scope: 'global',\n path,\n method,\n authentication: 'owner',\n availability: 'Host publishes a web bundle',\n description: 'Read an asset from the signed manifest. assetPath may contain multiple path segments.',\n responses: {\n '200': {\n description: 'Manifest-listed asset, original MIME type',\n ...(method === 'GET' ? { contentType: '*/*', schema: Type.String({ contentEncoding: 'binary' }) } : {}),\n },\n '404': { description: 'Asset not published' },\n },\n })),\n ),\n];\n","import { defineService, type Context, type ReplicatedState } from '@earendil-works/chord';\n\nimport type { DoomSessionUpdateEvent } from './sessionUpdates';\n\nexport const DOOM_SESSION_SERVICE_ID = 'po.session.v2';\nexport const DOOM_SESSION_MANAGEMENT_SERVICE_ID = 'po.session-management.v1';\nexport const DOOM_COCKPIT_SERVER_ID = '646f6f6d-7069-4000-8000-000000000001';\n\nexport type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };\nexport type ThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';\nexport type SessionPhase = 'idle' | 'turn' | 'compaction' | 'retry';\n\n/** Native execution ownership plus Po's durable pending-input policy. */\nexport interface SessionLifecycle {\n revision: number;\n operation: { id: string; kind: 'run' | 'compaction' | 'navigation'; status: 'open' | 'aborting' } | null;\n paused: boolean;\n queue: Array<{\n id: string;\n text: string;\n images?: ImageContentPart[];\n delivery: 'steer' | 'followUp' | 'nextRun';\n scheduling: 'automatic' | 'held';\n disposition: 'pending' | 'handoff' | 'uncertain';\n }>;\n}\n\nexport interface ModelRef {\n provider: string;\n id: string;\n}\n\nexport interface TextContentPart {\n type: 'text';\n text: string;\n}\n\nexport interface ImageContentPart {\n type: 'image';\n data: string;\n mimeType: string;\n}\n\nexport interface ThinkingContentPart {\n type: 'thinking';\n thinking: string;\n redacted?: true;\n}\n\nexport interface ToolCallContentPart {\n type: 'toolCall';\n toolCallId: string;\n toolName: string;\n input: JsonValue;\n}\n\nexport interface UserTranscriptItem {\n id: string;\n role: 'user';\n content: Array<TextContentPart | ImageContentPart>;\n timestamp: number;\n}\n\nexport interface AssistantTranscriptItem {\n id: string;\n role: 'assistant';\n content: Array<TextContentPart | ThinkingContentPart | ToolCallContentPart>;\n model: ModelRef;\n status: 'streaming' | 'complete' | 'aborted' | 'error';\n stopReason?: 'stop' | 'length' | 'toolUse' | 'aborted' | 'error';\n errorMessage?: string;\n timestamp: number;\n}\n\nexport interface ToolTranscriptItem {\n id: string;\n role: 'tool';\n toolCallId: string;\n toolName: string;\n input: JsonValue;\n content: Array<TextContentPart | ImageContentPart>;\n details?: JsonValue;\n status: 'running' | 'complete' | 'error';\n isError: boolean;\n timestamp: number;\n}\n\nexport type TranscriptItem = UserTranscriptItem | AssistantTranscriptItem | ToolTranscriptItem;\n\nexport type TranscriptProgress =\n | { type: 'item_started'; item: TranscriptItem }\n | { type: 'item_updated'; item: TranscriptItem }\n | { type: 'item_finished'; item: TranscriptItem };\n\nexport interface SessionSnapshot {\n id: string;\n cwd: string;\n name?: string;\n createdAt: number;\n updatedAt: number;\n phase: SessionPhase;\n model: ModelRef;\n thinkingLevel: ThinkingLevel;\n fastMode: boolean;\n attached: boolean;\n locked: boolean;\n revision: number;\n transcript: TranscriptItem[];\n queuedSteer: UserTranscriptItem[];\n queuedSteerCount: number;\n /** Authoritative execution and queue state, independent of transcript replay. */\n lifecycle?: SessionLifecycle;\n}\n\nexport interface ProtocolEvent {\n sequence: number;\n frame: { type: string; [key: string]: JsonValue };\n}\n\nexport interface SessionPresentation {\n revision: number;\n dropped: number;\n /** A branch replacement invalidates earlier presentation state, even without ring overflow. */\n resetRevision?: number;\n events: ProtocolEvent[];\n projections: ProtocolEvent[];\n}\n\nexport interface HubService {\n readonly state: ReplicatedState<{ events: ProtocolEvent[] }>;\n send(frame: { type: string; [key: string]: JsonValue }, context: Context): Promise<void>;\n}\n\nexport const DoomHubService = defineService<HubService>('po.hub.v1');\n\nexport interface SessionServiceState {\n snapshot: Omit<SessionSnapshot, 'transcript'>;\n progress: TranscriptProgress | null;\n /** ACP v2-shaped agent events, replayed in sequence across fresh bindings. */\n updates?: DoomSessionUpdateEvent[];\n presentation?: SessionPresentation;\n /** Current concurrent drafts/tools, so a fresh attachment does not depend on missed progress events. */\n inFlight?: TranscriptItem[];\n}\n\nexport interface TranscriptPageRequest {\n cursor?: string;\n direction?: 'older' | 'newer';\n limit?: number;\n threadId?: string;\n}\n\nexport interface TranscriptPage {\n entries: JsonValue[];\n startCursor: string | null;\n endCursor: string | null;\n olderCursor: string | null;\n newerCursor: string | null;\n generation: number;\n revision: number;\n /** Profile and other context preceding this page. */\n context: JsonValue[];\n /** Current drafts are separate from committed history. */\n drafts: TranscriptItem[];\n}\n\nexport interface SessionMessageArgs {\n text: string;\n images?: ImageContentPart[];\n}\n\nexport interface PromptArgs extends SessionMessageArgs {\n /** Interactive clients acknowledge preflight without owning the supervised turn's lifetime. */\n waitFor?: 'accepted' | 'settled';\n}\nexport type SteerArgs = SessionMessageArgs;\nexport type FollowUpArgs = SessionMessageArgs;\nexport interface QueuedItemArgs {\n id: string;\n}\nexport interface PromoteQueuedArgs extends QueuedItemArgs {\n operationId?: string;\n}\n\nexport interface ClearQueueResult {\n steering: string[];\n followUp: string[];\n}\n\nexport interface RewindArgs {\n itemId: string;\n summarize?: boolean;\n customInstructions?: string;\n replaceInstructions?: boolean;\n label?: string;\n}\n\nexport interface SessionUsage {\n input: number;\n output: number;\n cacheRead: number;\n cacheWrite: number;\n total: number;\n}\n\nexport interface RewindSummaryEntry {\n id: string;\n parentId: string | null;\n timestamp: string;\n fromId: string;\n summary: string;\n details?: JsonValue;\n usage?: SessionUsage;\n fromHook?: boolean;\n}\n\nexport interface RewindResult {\n editorText?: string;\n cancelled: boolean;\n aborted?: boolean;\n summaryEntry?: RewindSummaryEntry;\n}\n\nexport type ExtensionUiResponse =\n | { id: string; value: string }\n | { id: string; confirmed: boolean }\n | { id: string; cancelled: true };\n\nexport interface SessionStateInfo {\n model?: ModelRef;\n thinkingLevel: ThinkingLevel;\n fastMode: boolean;\n agentLocked?: boolean;\n isStreaming: boolean;\n isCompacting: boolean;\n steeringMode: 'all' | 'one-at-a-time';\n followUpMode: 'all' | 'one-at-a-time';\n sessionFile?: string;\n sessionId: string;\n sessionName?: string;\n autoCompactionEnabled: boolean;\n messageCount: number;\n pendingMessageCount: number;\n operationId?: string;\n executionStatus?: 'open' | 'aborting';\n queuePaused?: boolean;\n queueRevision?: number;\n}\n\nexport interface SessionStats {\n sessionFile?: string;\n sessionId: string;\n totalMessages: number;\n tokens: SessionUsage;\n cost: number;\n contextUsage?: {\n tokens: number | null;\n contextWindow: number;\n percent: number | null;\n };\n}\n\nexport interface SessionCommandSourceInfo {\n path: string;\n source: string;\n scope: 'user' | 'project' | 'temporary';\n origin: 'package' | 'top-level';\n baseDir?: string;\n}\n\nexport interface SessionCommand {\n name: string;\n description?: string;\n source: 'extension' | 'prompt' | 'skill';\n sourceInfo?: SessionCommandSourceInfo;\n}\n\nexport interface SessionService {\n readonly state: ReplicatedState<SessionServiceState>;\n readTranscriptPage(args: TranscriptPageRequest, context: Context): Promise<TranscriptPage>;\n prompt(text: string, context: Context): Promise<void>;\n prompt(args: PromptArgs, context: Context): Promise<void>;\n steer(text: string, context: Context): Promise<void>;\n steer(args: SteerArgs, context: Context): Promise<void>;\n abort(context: Context): Promise<void>;\n abortOperation(args: { operationId: string }, context: Context): Promise<void>;\n setModel(model: ModelRef, context: Context): Promise<void>;\n setThinking(thinkingLevel: ThinkingLevel, context: Context): Promise<void>;\n setFastMode(enabled: boolean, context: Context): Promise<void>;\n setAgentLock(locked: boolean, context: Context): Promise<void>;\n followUp(args: FollowUpArgs, context: Context): Promise<void>;\n enqueueAutomatic(args: FollowUpArgs, context: Context): Promise<{ id: string }>;\n removeQueued(\n args: QueuedItemArgs,\n context: Context,\n ): Promise<'removed' | 'in_flight' | 'already_consumed' | 'not_found'>;\n promoteQueued(\n args: PromoteQueuedArgs,\n context: Context,\n ): Promise<'promoted' | 'in_flight' | 'target_changed' | 'not_found'>;\n resumeQueue(context: Context): Promise<void>;\n clearQueue(context: Context): Promise<ClearQueueResult>;\n rewind(args: RewindArgs, context: Context): Promise<RewindResult>;\n extensionUiResponse(response: ExtensionUiResponse, context: Context): Promise<void>;\n getState(context: Context): Promise<SessionStateInfo>;\n getSessionStats(context: Context): Promise<SessionStats>;\n getCommands(context: Context): Promise<SessionCommand[]>;\n getAvailableModels(context: Context): Promise<ModelRef[]>;\n getAvailableThinkingLevels(context: Context): Promise<ThinkingLevel[]>;\n compact(args: { customInstructions?: string }, context: Context): Promise<JsonValue>;\n setName(name: string, context: Context): Promise<void>;\n}\n\nexport interface SessionManagementService {\n attach(sessionId: string, context: Context): Promise<void>;\n detach(context: Context): Promise<void>;\n}\n\nexport const DoomSessionService = defineService<SessionService>(DOOM_SESSION_SERVICE_ID);\nexport const DoomSessionManagementService = defineService<SessionManagementService>(DOOM_SESSION_MANAGEMENT_SERVICE_ID);\n","import { Type } from 'typebox';\n\nimport type { DoomSocketContract } from './apiContracts';\nimport { HubSnapshotFrameSchema, HubUpsertFrameSchema, HubRemovedFrameSchema } from './httpApiContracts';\nimport { DOOM_SESSION_MANAGEMENT_SERVICE_ID, DOOM_SESSION_SERVICE_ID, type JsonValue } from './sessionProtocol';\n\nconst Text = Type.String();\nconst NumberValue = Type.Number();\nconst Flag = Type.Boolean();\nconst Json = Type.Unsafe<JsonValue>(\n Type.Unknown({\n description:\n 'Strict JSON application value supplied by the active tool, journal entry, or extension; validated by the Pi codec.',\n }),\n);\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Model = Type.Object({ provider: Text, id: Text });\nconst Thinking = Type.Union([\n Type.Literal('off'),\n Type.Literal('minimal'),\n Type.Literal('low'),\n Type.Literal('medium'),\n Type.Literal('high'),\n Type.Literal('max'),\n Type.Literal('xhigh'),\n]);\nconst Phase = Type.Union([\n Type.Literal('idle'),\n Type.Literal('turn'),\n Type.Literal('compaction'),\n Type.Literal('retry'),\n]);\nconst Image = Type.Object({ type: Type.Literal('image'), data: Text, mimeType: Text });\nconst TextPart = Type.Object({ type: Type.Literal('text'), text: Text });\nconst Content = Type.Union([Image, TextPart]);\nconst User = Type.Object({\n id: Text,\n role: Type.Literal('user'),\n content: Type.Array(Content),\n timestamp: NumberValue,\n});\nconst Transcript = Type.Union([\n User,\n Type.Object({\n id: Text,\n role: Type.Literal('assistant'),\n content: Type.Array(\n Type.Union([\n TextPart,\n Type.Object({ type: Type.Literal('thinking'), thinking: Text, redacted: Optional(Type.Literal(true)) }),\n Type.Object({ type: Type.Literal('toolCall'), toolCallId: Text, toolName: Text, input: Json }),\n ]),\n ),\n model: Model,\n status: Type.Union([\n Type.Literal('streaming'),\n Type.Literal('complete'),\n Type.Literal('aborted'),\n Type.Literal('error'),\n ]),\n stopReason: Optional(\n Type.Union([\n Type.Literal('stop'),\n Type.Literal('length'),\n Type.Literal('toolUse'),\n Type.Literal('aborted'),\n Type.Literal('error'),\n ]),\n ),\n errorMessage: Optional(Text),\n timestamp: NumberValue,\n }),\n Type.Object({\n id: Text,\n role: Type.Literal('tool'),\n toolCallId: Text,\n toolName: Text,\n input: Json,\n content: Type.Array(Content),\n details: Optional(Json),\n status: Type.Union([Type.Literal('running'), Type.Literal('complete'), Type.Literal('error')]),\n isError: Flag,\n timestamp: NumberValue,\n }),\n]);\nconst Usage = Type.Object({\n input: NumberValue,\n output: NumberValue,\n cacheRead: NumberValue,\n cacheWrite: NumberValue,\n total: NumberValue,\n});\nconst Message = Type.Object({ text: Text, images: Optional(Type.Array(Image)) });\nconst Lifecycle = Type.Object({\n revision: NumberValue,\n operation: Type.Union([\n Type.Null(),\n Type.Object({\n id: Text,\n kind: Type.Union([Type.Literal('run'), Type.Literal('compaction'), Type.Literal('navigation')]),\n status: Type.Union([Type.Literal('open'), Type.Literal('aborting')]),\n }),\n ]),\n paused: Flag,\n queue: Type.Array(\n Type.Object({\n id: Text,\n text: Text,\n images: Optional(Type.Array(Image)),\n delivery: Type.Union([Type.Literal('steer'), Type.Literal('followUp'), Type.Literal('nextRun')]),\n scheduling: Type.Union([Type.Literal('automatic'), Type.Literal('held')]),\n disposition: Type.Union([Type.Literal('pending'), Type.Literal('handoff'), Type.Literal('uncertain')]),\n }),\n ),\n});\nconst Frame = Type.Intersect([Type.Object({ type: Text }), Type.Record(Text, Json)], {\n description: 'Discriminated extension presentation frame; selected channel schemas describe package payloads.',\n});\nconst HubClientFrame = Type.Union([\n Type.Object({ type: Type.Union([Type.Literal('subscribe'), Type.Literal('unsubscribe')]), sessionId: Text }),\n Type.Object({\n type: Type.Union([Type.Literal('subscribe_thread'), Type.Literal('unsubscribe_thread')]),\n sessionId: Text,\n threadId: Text,\n }),\n Type.Object({\n type: Type.String({ not: { enum: ['subscribe', 'unsubscribe', 'subscribe_thread', 'unsubscribe_thread'] } }),\n sessionId: Text,\n payload: Json,\n }),\n]);\nconst HubServerFrame = Type.Union([\n HubSnapshotFrameSchema,\n HubUpsertFrameSchema,\n HubRemovedFrameSchema,\n Type.Object({ type: Type.Literal('thread_frame'), sessionId: Text, threadId: Text, frame: Frame }),\n Type.Object({ type: Type.Literal('thread_backlog'), sessionId: Text, threadId: Text, frames: Type.Array(Frame) }),\n Type.Object({\n type: Type.String({\n not: {\n enum: [\n 'sessions_snapshot',\n 'session_upsert',\n 'session_removed',\n 'workspaces_snapshot',\n 'workspace_upsert',\n 'workspace_removed',\n 'thread_frame',\n 'thread_backlog',\n ],\n },\n }),\n sessionId: Text,\n payload: Json,\n }),\n]);\nconst ProtocolEvent = Type.Object({ sequence: NumberValue, frame: Frame });\nconst Update = Type.Union([\n Type.Object({\n sessionUpdate: Type.Union([\n Type.Literal('user_message'),\n Type.Literal('agent_message'),\n Type.Literal('agent_thought'),\n ]),\n messageId: Text,\n content: Type.Array(Content),\n }),\n Type.Object({\n sessionUpdate: Type.Literal('tool_call_update'),\n toolCallId: Text,\n title: Optional(Text),\n kind: Optional(Text),\n status: Optional(\n Type.Union([\n Type.Literal('pending'),\n Type.Literal('in_progress'),\n Type.Literal('completed'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n ),\n content: Optional(Type.Array(Type.Object({ type: Type.Literal('content'), content: Content }))),\n rawInput: Optional(Json),\n rawOutput: Optional(Json),\n }),\n Type.Object({\n sessionUpdate: Type.Literal('state_update'),\n state: Type.Union([Type.Literal('running'), Type.Literal('idle'), Type.Literal('requires_action')]),\n stopReason: Optional(\n Type.Union([\n Type.Literal('end_turn'),\n Type.Literal('max_tokens'),\n Type.Literal('max_turn_requests'),\n Type.Literal('refusal'),\n Type.Literal('cancelled'),\n Type.Unsafe<`_${string}`>(Type.String({ pattern: '^_' })),\n ]),\n ),\n }),\n]);\nexport const SessionServiceStateSchema = Type.Object({\n snapshot: Type.Object({\n id: Text,\n cwd: Text,\n name: Optional(Text),\n createdAt: NumberValue,\n updatedAt: NumberValue,\n phase: Phase,\n model: Model,\n thinkingLevel: Thinking,\n fastMode: Flag,\n attached: Flag,\n locked: Flag,\n revision: NumberValue,\n queuedSteer: Type.Array(User),\n queuedSteerCount: NumberValue,\n lifecycle: Optional(Lifecycle),\n }),\n progress: Type.Union([\n Type.Null(),\n Type.Union([\n Type.Object({ type: Type.Literal('item_started'), item: Transcript }),\n Type.Object({ type: Type.Literal('item_updated'), item: Transcript }),\n Type.Object({ type: Type.Literal('item_finished'), item: Transcript }),\n ]),\n ]),\n updates: Optional(Type.Array(Type.Object({ sequence: NumberValue, update: Update }))),\n presentation: Optional(\n Type.Object({\n revision: NumberValue,\n dropped: NumberValue,\n resetRevision: Optional(NumberValue),\n events: Type.Array(ProtocolEvent),\n projections: Type.Array(ProtocolEvent),\n }),\n ),\n inFlight: Optional(Type.Array(Transcript)),\n});\nexport const SessionMethodSchemas = {\n readTranscriptPage: {\n input: Type.Tuple([\n Type.Object({\n cursor: Optional(Text),\n direction: Optional(Type.Union([Type.Literal('older'), Type.Literal('newer')])),\n limit: Optional(NumberValue),\n threadId: Optional(Text),\n }),\n ]),\n output: Type.Object({\n entries: Type.Array(Json),\n startCursor: Type.Union([Text, Type.Null()]),\n endCursor: Type.Union([Text, Type.Null()]),\n olderCursor: Type.Union([Text, Type.Null()]),\n newerCursor: Type.Union([Text, Type.Null()]),\n generation: NumberValue,\n revision: NumberValue,\n context: Type.Array(Json),\n drafts: Type.Array(Transcript),\n }),\n },\n prompt: {\n input: Type.Tuple([\n Type.Union([\n Text,\n Type.Object({\n ...Message.properties,\n waitFor: Optional(Type.Union([Type.Literal('accepted'), Type.Literal('settled')])),\n }),\n ]),\n ]),\n },\n steer: { input: Type.Tuple([Type.Union([Text, Message])]) },\n abort: { input: Type.Tuple([]) },\n abortOperation: { input: Type.Tuple([Type.Object({ operationId: Text })]) },\n setModel: { input: Type.Tuple([Model]) },\n setThinking: { input: Type.Tuple([Thinking]) },\n setFastMode: { input: Type.Tuple([Flag]) },\n setAgentLock: { input: Type.Tuple([Flag]) },\n followUp: { input: Type.Tuple([Message]) },\n enqueueAutomatic: { input: Type.Tuple([Message]), output: Type.Object({ id: Text }) },\n removeQueued: {\n input: Type.Tuple([Type.Object({ id: Text })]),\n output: Type.Union([\n Type.Literal('removed'),\n Type.Literal('in_flight'),\n Type.Literal('already_consumed'),\n Type.Literal('not_found'),\n ]),\n },\n promoteQueued: {\n input: Type.Tuple([Type.Object({ id: Text, operationId: Optional(Text) })]),\n output: Type.Union([\n Type.Literal('promoted'),\n Type.Literal('in_flight'),\n Type.Literal('target_changed'),\n Type.Literal('not_found'),\n ]),\n },\n resumeQueue: { input: Type.Tuple([]) },\n clearQueue: { input: Type.Tuple([]), output: Type.Object({ steering: Strings, followUp: Strings }) },\n rewind: {\n input: Type.Tuple([\n Type.Object({\n itemId: Text,\n summarize: Optional(Flag),\n customInstructions: Optional(Text),\n replaceInstructions: Optional(Flag),\n label: Optional(Text),\n }),\n ]),\n output: Type.Object({\n editorText: Optional(Text),\n cancelled: Flag,\n aborted: Optional(Flag),\n summaryEntry: Optional(\n Type.Object({\n id: Text,\n parentId: Type.Union([Text, Type.Null()]),\n timestamp: Text,\n fromId: Text,\n summary: Text,\n details: Optional(Json),\n usage: Optional(Usage),\n fromHook: Optional(Flag),\n }),\n ),\n }),\n },\n extensionUiResponse: {\n input: Type.Tuple([\n Type.Union([\n Type.Object({ id: Text, value: Text }),\n Type.Object({ id: Text, confirmed: Flag }),\n Type.Object({ id: Text, cancelled: Type.Literal(true) }),\n ]),\n ]),\n },\n getState: {\n input: Type.Tuple([]),\n output: Type.Object({\n model: Optional(Model),\n thinkingLevel: Thinking,\n fastMode: Flag,\n isStreaming: Flag,\n isCompacting: Flag,\n steeringMode: Type.Union([Type.Literal('all'), Type.Literal('one-at-a-time')]),\n followUpMode: Type.Union([Type.Literal('all'), Type.Literal('one-at-a-time')]),\n sessionFile: Optional(Text),\n sessionId: Text,\n sessionName: Optional(Text),\n autoCompactionEnabled: Flag,\n messageCount: NumberValue,\n pendingMessageCount: NumberValue,\n operationId: Optional(Text),\n executionStatus: Optional(Type.Union([Type.Literal('open'), Type.Literal('aborting')])),\n queuePaused: Optional(Flag),\n queueRevision: Optional(NumberValue),\n }),\n },\n getSessionStats: {\n input: Type.Tuple([]),\n output: Type.Object({\n sessionFile: Optional(Text),\n sessionId: Text,\n totalMessages: NumberValue,\n tokens: Usage,\n cost: NumberValue,\n contextUsage: Optional(\n Type.Object({\n tokens: Type.Union([NumberValue, Type.Null()]),\n contextWindow: NumberValue,\n percent: Type.Union([NumberValue, Type.Null()]),\n }),\n ),\n }),\n },\n getCommands: {\n input: Type.Tuple([]),\n output: Type.Array(\n Type.Object({\n name: Text,\n description: Optional(Text),\n source: Type.Union([Type.Literal('extension'), Type.Literal('prompt'), Type.Literal('skill')]),\n sourceInfo: Optional(\n Type.Object({\n path: Text,\n source: Text,\n scope: Type.Union([Type.Literal('user'), Type.Literal('project'), Type.Literal('temporary')]),\n origin: Type.Union([Type.Literal('package'), Type.Literal('top-level')]),\n baseDir: Optional(Text),\n }),\n ),\n }),\n ),\n },\n getAvailableModels: { input: Type.Tuple([]), output: Type.Array(Model) },\n getAvailableThinkingLevels: { input: Type.Tuple([]), output: Type.Array(Thinking) },\n compact: { input: Type.Tuple([Type.Object({ customInstructions: Optional(Text) })]), output: Json },\n setName: { input: Type.Tuple([Text]) },\n};\n\nconst ErrorSchema = Type.Object({ code: Text, message: Text });\nexport const sessionSocketContracts: DoomSocketContract[] = [\n ...Object.entries(SessionMethodSchemas).map(([member, definition]): DoomSocketContract => ({\n id: `session.${member}`,\n scope: 'session',\n service: DOOM_SESSION_SERVICE_ID,\n member,\n direction: 'client-to-server',\n kind: 'method',\n description: `Session ${member}. Arguments exclude the process-local Chord Context. A void result is omitted from the successful Pi response.`,\n ...definition,\n errors: ErrorSchema,\n })),\n {\n id: 'session.state',\n scope: 'session',\n service: DOOM_SESSION_SERVICE_ID,\n member: 'state',\n direction: 'server-to-client',\n kind: 'state',\n input: SessionServiceStateSchema,\n description: 'Reconstructed session state after Chord snapshot/delta decoding.',\n },\n {\n id: 'management.attach',\n scope: 'global',\n service: DOOM_SESSION_MANAGEMENT_SERVICE_ID,\n member: 'attach',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([Text]),\n errors: ErrorSchema,\n description: 'Attach this presentation to a session. Pi publishes an out-of-band attachment update.',\n },\n {\n id: 'management.detach',\n scope: 'global',\n service: DOOM_SESSION_MANAGEMENT_SERVICE_ID,\n member: 'detach',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([]),\n errors: ErrorSchema,\n description: 'Detach this presentation from its selected session.',\n },\n {\n id: 'hub.send',\n scope: 'global',\n service: 'po.hub.v1',\n member: 'send',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([HubClientFrame]),\n errors: ErrorSchema,\n description: 'Send a hub subscription, thread, history, or selected extension channel frame.',\n },\n {\n id: 'hub.state',\n scope: 'global',\n service: 'po.hub.v1',\n member: 'state',\n direction: 'server-to-client',\n kind: 'state',\n input: Type.Object({ events: Type.Array(Type.Object({ sequence: NumberValue, frame: HubServerFrame })) }),\n description:\n 'Reconstructed hub event replay window. Frame discriminators identify session and selected extension updates.',\n },\n];\n","import { defineService, type Context, type JsonValue } from '@earendil-works/chord';\nimport { type Static, type TSchema, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { DoomApiMount, DoomApiScope } from './packageApi';\n\n/** The address is always exact. A workspace call never resolves to a global service. */\nexport const DoomPluginMountSchema = Type.Union([\n Type.Object({ scope: Type.Literal('global') }, { additionalProperties: false }),\n Type.Object(\n { scope: Type.Literal('workspace'), workspaceId: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n ),\n Type.Object(\n { scope: Type.Literal('session'), sessionId: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n ),\n]);\n\nexport const DoomPluginCallSchema = Type.Object(\n {\n mount: DoomPluginMountSchema,\n service: Type.String({ minLength: 1 }),\n method: Type.String({ minLength: 1 }),\n input: Type.Unknown(),\n },\n { additionalProperties: false },\n);\n\nexport type DoomPluginCall = Static<typeof DoomPluginCallSchema>;\nexport type DoomPluginDirection = 'client-to-server' | 'server-to-client';\nexport interface DoomPluginCaller {\n /** Authenticated connection that owns client capabilities and leases. */\n connectionId?: string;\n /** Aborted when the authenticated browser connection closes. Never supplied over the wire. */\n signal?: AbortSignal;\n}\n\n/** Chord method shared by all authenticated Po clients. */\nexport interface DoomPluginService {\n invoke(\n call: {\n mount: DoomApiMount;\n service: string;\n method: string;\n input: JsonValue;\n },\n context: Context,\n ): Promise<JsonValue>;\n}\n\nexport const DoomPluginService = defineService<DoomPluginService>('po.plugin.v1');\n\nexport interface DoomPluginMethod<TInput extends TSchema, TOutput extends TSchema> {\n readonly service: string;\n readonly method: string;\n readonly scope: DoomApiScope;\n readonly direction: DoomPluginDirection;\n readonly input: TInput;\n readonly output: TOutput;\n}\n\nexport function defineDoomPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n definition: DoomPluginMethod<TInput, TOutput>,\n): DoomPluginMethod<TInput, TOutput> {\n if (!definition.service || !definition.method) throw new Error('Plugin service and method must be named.');\n return definition;\n}\n\nexport function doomPluginMountKey(mount: DoomApiMount): string {\n if (!Check(DoomPluginMountSchema, mount)) throw new Error('Invalid plugin mount.');\n switch (mount.scope) {\n case 'global':\n return 'global';\n case 'workspace':\n return `workspace:${mount.workspaceId}`;\n case 'session':\n return `session:${mount.sessionId}`;\n }\n}\n\nexport class DoomPluginCallError extends Error {\n constructor(\n readonly code: 'INVALID_CALL' | 'METHOD_NOT_FOUND' | 'INVALID_INPUT' | 'INVALID_OUTPUT',\n message: string,\n ) {\n super(message);\n this.name = 'DoomPluginCallError';\n }\n}\n\nexport interface DoomPluginRegistry {\n register<TInput extends TSchema, TOutput extends TSchema>(\n mount: DoomApiMount,\n definition: DoomPluginMethod<TInput, TOutput>,\n handler: (input: Static<TInput>, caller: DoomPluginCaller) => Static<TOutput> | Promise<Static<TOutput>>,\n ): () => void;\n invoke(call: unknown, direction: DoomPluginDirection, caller?: DoomPluginCaller): Promise<unknown>;\n dispose(): void;\n}\n\n/** Transport-neutral dispatch, shared by Chord server services and client capability hosts. */\nexport function createDoomPluginRegistry(): DoomPluginRegistry {\n const handlers = new Map<\n string,\n {\n definition: DoomPluginMethod<TSchema, TSchema>;\n handler: (input: never, caller: DoomPluginCaller) => unknown;\n }\n >();\n let disposed = false;\n const keyOf = (mount: DoomApiMount, service: string, method: string, direction: DoomPluginDirection): string =>\n `${doomPluginMountKey(mount)}\\0${direction}\\0${service}\\0${method}`;\n return {\n register(mount, definition, handler) {\n if (disposed) throw new Error('Plugin registry is disposed.');\n if (mount.scope !== definition.scope)\n throw new Error(`Method '${definition.service}.${definition.method}' requires ${definition.scope} scope.`);\n const key = keyOf(mount, definition.service, definition.method, definition.direction);\n if (handlers.has(key))\n throw new Error(`Plugin method '${definition.service}.${definition.method}' is already mounted.`);\n const entry = { definition, handler } as typeof handlers extends Map<string, infer TValue> ? TValue : never;\n handlers.set(key, entry);\n return () => {\n if (handlers.get(key) === entry) handlers.delete(key);\n };\n },\n async invoke(value, direction, caller = {}) {\n if (disposed) throw new Error('Plugin registry is disposed.');\n if (!Check(DoomPluginCallSchema, value)) throw new DoomPluginCallError('INVALID_CALL', 'Invalid plugin call.');\n const call = value as DoomPluginCall;\n const entry = handlers.get(keyOf(call.mount, call.service, call.method, direction));\n if (!entry)\n throw new DoomPluginCallError(\n 'METHOD_NOT_FOUND',\n `Plugin method '${call.service}.${call.method}' is not mounted at this scope.`,\n );\n if (!Check(entry.definition.input, call.input))\n throw new DoomPluginCallError('INVALID_INPUT', `Invalid input for '${call.service}.${call.method}'.`);\n const output = await entry.handler(call.input as never, caller);\n if (!Check(entry.definition.output, output))\n throw new DoomPluginCallError('INVALID_OUTPUT', `Invalid output from '${call.service}.${call.method}'.`);\n return output;\n },\n dispose() {\n disposed = true;\n handlers.clear();\n },\n };\n}\n\nexport async function invokeDoomPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n transport: (call: DoomPluginCall) => Promise<unknown>,\n mount: DoomApiMount,\n definition: DoomPluginMethod<TInput, TOutput>,\n input: Static<TInput>,\n): Promise<Static<TOutput>> {\n if (mount.scope !== definition.scope)\n throw new Error(`Method '${definition.service}.${definition.method}' requires ${definition.scope} scope.`);\n if (!Check(definition.input, input))\n throw new DoomPluginCallError('INVALID_INPUT', `Invalid input for '${definition.service}.${definition.method}'.`);\n const output = await transport({ mount, service: definition.service, method: definition.method, input });\n if (!Check(definition.output, output))\n throw new DoomPluginCallError(\n 'INVALID_OUTPUT',\n `Invalid output from '${definition.service}.${definition.method}'.`,\n );\n return output;\n}\n","import { PROTOCOL_VERSION } from '@earendil-works/pi-protocol';\nimport { Type } from 'typebox';\n\nimport type { DoomSocketContract } from './apiContracts';\nimport { DoomPluginCallSchema } from './pluginProtocol';\n\nconst S = Type.String({ minLength: 1 });\nconst Json = Type.Unknown({\n description: 'JSON value; its application shape is defined by the addressed service member.',\n});\nconst E = Type.Object({ code: S, message: Type.String() }, { additionalProperties: false });\nconst ServerId = Type.String({ pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$' });\nconst Address = Type.Object({ key: S, generation: Type.Integer({ minimum: 1 }) }, { additionalProperties: false });\nconst Mode = Type.Union([Type.Literal('singleton'), Type.Literal('keyed')]);\nconst SessionTarget = Type.Object(\n { serverId: ServerId, sessionId: S, attachmentId: S },\n { additionalProperties: false },\n);\nconst Target = Type.Union([Type.Object({ serverId: ServerId }, { additionalProperties: false }), SessionTarget]);\nexport const ChordCallSchema = Type.Object(\n { serviceId: S, member: S, args: Type.Array(Json), instance: Type.Optional(Address) },\n { additionalProperties: false },\n);\nconst Segment = Type.Union([Type.String(), Type.Integer({ minimum: 0 })]);\nconst Path = Type.Array(Segment);\nconst PathRef = Type.Union([Path, Type.Integer({ minimum: 0 })]);\nconst NonemptyPathRef = Type.Union([Type.Array(Segment, { minItems: 1 }), Type.Integer({ minimum: 0 })]);\nconst Index = Type.Integer({ minimum: 0 });\nexport const ChordWireOpSchema = Type.Union(\n [\n Type.Tuple([Type.Literal('r'), Json]),\n Type.Tuple([Type.Literal('s'), NonemptyPathRef, Json]),\n Type.Tuple([Type.Literal('s'), Json]),\n Type.Tuple([Type.Literal('d'), NonemptyPathRef]),\n Type.Tuple([Type.Literal('d')]),\n Type.Tuple([Type.Literal('a'), NonemptyPathRef, Type.String()]),\n Type.Tuple([Type.Literal('a'), Type.String()]),\n Type.Tuple([Type.Literal('t'), NonemptyPathRef, Index]),\n Type.Tuple([Type.Literal('t'), Index]),\n Type.Tuple([Type.Literal('p'), PathRef, Index, Index, Type.Array(Json)]),\n Type.Tuple([Type.Literal('p'), Index, Index, Type.Array(Json)]),\n Type.Tuple([Type.Literal('#'), Index, Path]),\n ],\n {\n description:\n 'Chord delta tuples. Path dictionary references and omitted paths depend on earlier operations in this subscription; decode with the Chord delta decoder.',\n },\n);\nconst Instance = Type.Object({\n instance: Type.Optional(Address),\n members: Type.Array(\n Type.Union([\n Type.Object({ name: S, kind: Type.Literal('method') }),\n Type.Object({\n name: S,\n kind: Type.Literal('state'),\n sequence: Type.Integer({ minimum: 0 }),\n ops: Type.Array(ChordWireOpSchema),\n }),\n ]),\n ),\n});\nexport const ChordSnapshotSchema = Type.Object({ serviceId: S, mode: Mode, instances: Type.Array(Instance) });\nexport const ChordUpdateSchema = Type.Union([\n Type.Object({\n type: Type.Literal('state'),\n instance: Type.Optional(Address),\n member: S,\n sequence: Type.Integer({ minimum: 1 }),\n ops: Type.Array(ChordWireOpSchema),\n }),\n Type.Object({ type: Type.Literal('unavailable') }),\n Type.Object({ type: Type.Literal('replaced'), snapshot: Instance }),\n Type.Object({ type: Type.Literal('spawned'), instance: Instance }),\n Type.Object({ type: Type.Literal('closed'), instance: Address }),\n]);\nexport const PiClientMessageSchema = Type.Union([\n Type.Object({ type: Type.Literal('hello'), version: Type.Integer({ minimum: 0 }) }),\n Type.Object({ type: Type.Literal('request'), id: S, target: Target, call: ChordCallSchema }),\n Type.Object({ type: Type.Literal('cancel'), id: S, target: Target }),\n]);\nexport const PiServerMessageSchema = Type.Union([\n Type.Object({ type: Type.Literal('hello'), version: Type.Literal(PROTOCOL_VERSION), serverId: ServerId }),\n Type.Object({ type: Type.Literal('hello_error'), error: E }),\n Type.Object({ type: Type.Literal('response'), id: S, ok: Type.Literal(true), result: Type.Optional(Json) }),\n Type.Object({ type: Type.Literal('response'), id: S, ok: Type.Literal(false), error: E }),\n Type.Object({ type: Type.Literal('service_update'), subscriptionId: S, update: ChordUpdateSchema }),\n Type.Object({ type: Type.Literal('attachment'), attachment: Type.Union([SessionTarget, Type.Null()]) }),\n]);\nexport const transportSocketContracts: DoomSocketContract[] = [\n {\n id: 'pi.client',\n scope: 'global',\n service: '$pi',\n member: 'client',\n direction: 'client-to-server',\n kind: 'channel',\n input: PiClientMessageSchema,\n description: `Pi protocol ${PROTOCOL_VERSION} decoded client envelope. Encode with the public Pi codec and framing functions, then seal for WebSocket delivery.`,\n },\n {\n id: 'pi.server',\n scope: 'global',\n service: '$pi',\n member: 'server',\n direction: 'server-to-client',\n kind: 'channel',\n input: PiServerMessageSchema,\n description: 'Pi decoded server envelope. Responses correlate by id; service updates correlate by subscriptionId.',\n },\n {\n id: 'chord.catalogue',\n scope: 'global',\n service: '$chord.service',\n member: 'catalogue',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([]),\n output: Type.Array(Type.Object({ serviceId: S, mode: Mode })),\n errors: E,\n description: 'Discover services at the selected Pi target.',\n },\n {\n id: 'chord.subscribe',\n scope: 'global',\n service: '$chord.service',\n member: 'subscribe',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([S, S, Mode]),\n output: ChordSnapshotSchema,\n errors: E,\n description:\n 'Subscribe with [subscriptionId, serviceId, mode]; subsequent Pi service_update messages contain Chord deltas.',\n },\n {\n id: 'chord.unsubscribe',\n scope: 'global',\n service: '$chord.service',\n member: 'unsubscribe',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([S]),\n errors: E,\n description: 'Unsubscribe by subscriptionId.',\n },\n {\n id: 'plugin.invoke',\n scope: 'global',\n service: 'po.plugin.v1',\n member: 'invoke',\n direction: 'client-to-server',\n kind: 'method',\n input: Type.Tuple([DoomPluginCallSchema]),\n output: Json,\n errors: E,\n description: 'Invoke the selected scoped plugin method. Its declaration supplies input and output shapes.',\n },\n];\n","import { PROTOCOL_VERSION } from '@earendil-works/pi-protocol';\n\nimport { defineApiContract } from './apiContracts';\nimport { headlessHttpContracts, machineHttpContracts, sessionHttpContracts } from './httpApiContracts';\nimport {\n SealedEnvelopeSchema,\n SealedHttpRequestSchema,\n SealedHttpResponseSchema,\n remoteHttpContracts,\n bundleHttpContracts,\n} from './remoteApiContracts';\nimport { sessionSocketContracts } from './sessionApiContracts';\nimport { transportSocketContracts } from './transportApiContracts';\n\nexport const builtinApiContract = defineApiContract({\n version: 1,\n schemas: {\n SealedEnvelope: SealedEnvelopeSchema,\n SealedHttpRequest: SealedHttpRequestSchema,\n SealedHttpResponse: SealedHttpResponseSchema,\n },\n protocols: { pi: String(PROTOCOL_VERSION), chord: '1.0.0', sealed: '1' },\n http: [\n ...headlessHttpContracts,\n ...machineHttpContracts,\n ...sessionHttpContracts,\n ...remoteHttpContracts,\n ...bundleHttpContracts,\n ],\n sockets: [...sessionSocketContracts, ...transportSocketContracts],\n dynamic: [\n 'WebAuthn options and credential responses follow the installed WebAuthn implementation.',\n 'Tool inputs/results and journal entries contain runtime-defined JSON.',\n 'Selected channel and presentation payload schemas are contributed by their owning package.',\n ],\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apiContracts.mjs","names":["Text","Optional","Strings","Flag","NumberValue","Json","Text","NumberValue","Optional","Flag","Json","Text","Json","Json"],"sources":["../src/schemas/apiContracts.ts","../src/services/apiContracts/index.ts","../src/constants/contextApi.ts","../src/schemas/httpApiContracts.ts","../src/schemas/remoteApiContracts.ts","../src/schemas/protocolContracts.ts","../src/schemas/protocolChannelsContract.ts","../src/schemas/pluginProtocol.ts","../src/schemas/protocolHubContract.ts","../src/schemas/protocolThreadContract.ts","../src/schemas/sessionApiContracts.ts","../src/schemas/transportApiContracts.ts","../src/schemas/builtinApiContracts.ts"],"sourcesContent":["import { type Static, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { PoApiScope } from './packageApi';\nimport type { PoServerBundleOwner } from './serverBundle';\n\nexport const PO_API_CONTRACT_VERSION = 1;\nexport const PO_API_CONTRACT_FILE = 'contracts.json';\nconst Schema = Type.Unsafe<object | boolean>(Type.Union([Type.Boolean(), Type.Record(Type.String(), Type.Unknown())]));\nconst Scope = Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]);\nconst Named = Type.String({ minLength: 1 });\nconst ResponseSchema = Type.Object({\n description: Named,\n contentType: Type.Optional(Named),\n schema: Type.Optional(Schema),\n events: Type.Optional(Type.Record(Named, Schema)),\n});\n\n/** Data-only package entry. Schemas use JSON Schema draft-07, including TypeBox output; OpenAPI export translates tuple keywords. */\nexport const PoApiContractSchema = Type.Object({\n version: Type.Literal(PO_API_CONTRACT_VERSION),\n protocols: Type.Optional(Type.Record(Named, Named)),\n schemas: Type.Optional(Type.Record(Named, Schema)),\n http: Type.Array(\n Type.Object({\n id: Named,\n scope: Scope,\n /** Omit for host-owned absolute routes. */\n basePath: Type.Optional(Type.String({ pattern: '^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$' })),\n path: Type.String({ pattern: '^/' }),\n method: Type.Union([\n Type.Literal('GET'),\n Type.Literal('POST'),\n Type.Literal('PUT'),\n Type.Literal('PATCH'),\n Type.Literal('DELETE'),\n Type.Literal('HEAD'),\n Type.Literal('OPTIONS'),\n ]),\n description: Named,\n availability: Type.Optional(Named),\n authentication: Type.Union([Type.Literal('none'), Type.Literal('owner'), Type.Literal('device')]),\n parameters: Type.Optional(\n Type.Array(\n Type.Object({\n name: Named,\n in: Type.Union([Type.Literal('path'), Type.Literal('query'), Type.Literal('header')]),\n required: Type.Boolean(),\n schema: Schema,\n }),\n ),\n ),\n body: Type.Optional(\n Type.Object({\n contentType: Named,\n contentTypes: Type.Optional(Type.Array(Named, { minItems: 1 })),\n required: Type.Boolean(),\n schema: Schema,\n }),\n ),\n responses: Type.Record(Type.String({ pattern: '^(?:[1-5][0-9]{2}|default)$' }), ResponseSchema, {\n minProperties: 1,\n }),\n }),\n ),\n sockets: Type.Array(\n Type.Object({\n id: Named,\n scope: Scope,\n description: Named,\n availability: Type.Optional(Named),\n service: Named,\n member: Named,\n direction: Type.Union([Type.Literal('client-to-server'), Type.Literal('server-to-client')]),\n kind: Type.Union([Type.Literal('method'), Type.Literal('state'), Type.Literal('channel')]),\n input: Schema,\n output: Type.Optional(Schema),\n errors: Type.Optional(Schema),\n }),\n ),\n /** Explicitly enumerate dynamic values whose shape is supplied at runtime. */\n dynamic: Type.Array(Type.String({ minLength: 1 })),\n gaps: Type.Optional(Type.Array(Named)),\n});\n\nexport type PoApiContract = Static<typeof PoApiContractSchema>;\nexport type PoHttpContract = PoApiContract['http'][number];\nexport type PoSocketContract = PoApiContract['sockets'][number];\n\nexport function defineApiContract(contract: PoApiContract): PoApiContract {\n return contract;\n}\n\nexport function parseApiContract(value: unknown): PoApiContract {\n if (!Check(PoApiContractSchema, value)) throw new Error('Invalid Po API contract');\n const contract = value as PoApiContract;\n const ids = new Set<string>();\n for (const entry of [...contract.http, ...contract.sockets]) {\n const key = `${entry.scope}:${entry.id}`;\n if (ids.has(key)) throw new Error(`Duplicate API contract operation: ${key}`);\n ids.add(key);\n }\n // Reject non-JSON data rather than silently losing it during export.\n const visit = (item: unknown, ancestors: Set<object>): void => {\n if (item === null || typeof item === 'string' || typeof item === 'boolean') return;\n if (typeof item === 'number' && Number.isFinite(item)) return;\n if (typeof item !== 'object' || ancestors.has(item)) throw new Error('API contracts must contain finite JSON data');\n ancestors.add(item);\n for (const child of Object.values(item)) visit(child, ancestors);\n ancestors.delete(item);\n };\n visit(contract, new Set());\n return contract;\n}\n\nexport interface PoPackageContract {\n packageName: string;\n packageVersion: string;\n scopes: readonly PoApiScope[];\n owners: readonly PoServerBundleOwner[];\n contract?: PoApiContract;\n problem?: string;\n /** Generation-relative compiler output, never imported by the export command. */\n module?: string;\n}\n\nexport interface PoCompiledContracts {\n version: typeof PO_API_CONTRACT_VERSION;\n generation: string;\n fingerprint: string;\n packages: PoPackageContract[];\n}\n\nexport function parseCompiledContracts(value: unknown): PoCompiledContracts {\n const PackageSchema = Type.Object({\n packageName: Named,\n packageVersion: Named,\n scopes: Type.Array(Scope, { uniqueItems: true }),\n owners: Type.Array(Type.Object({ majorMode: Named, layer: Named }), { minItems: 1 }),\n contract: Type.Optional(PoApiContractSchema),\n problem: Type.Optional(Named),\n module: Type.Optional(Type.String({ pattern: '^\\\\./[^\\\\\\\\%?#]+$' })),\n });\n const CompiledSchema = Type.Object({\n version: Type.Literal(PO_API_CONTRACT_VERSION),\n generation: Named,\n fingerprint: Type.String({ pattern: '^[a-f0-9]{64}$' }),\n packages: Type.Array(PackageSchema),\n });\n if (!Check(CompiledSchema, value)) throw new Error('Invalid compiled API contracts');\n const data = value as PoCompiledContracts;\n const names = new Set<string>();\n for (const entry of data.packages) {\n if (names.has(entry.packageName) || entry.module?.split('/').includes('..'))\n throw new Error('Invalid compiled package contract');\n names.add(entry.packageName);\n if (entry.contract !== undefined) parseApiContract(entry.contract);\n }\n return data;\n}\n","import { parseApiContract, type PoCompiledContracts } from '../../schemas/apiContracts';\nimport type { PoApiScope } from '../../schemas/packageApi';\n\nexport interface ApiContractSelection {\n scope: PoApiScope;\n majorMode: string;\n activeLayers: readonly string[];\n compiled: PoCompiledContracts;\n}\n\nexport interface ApiDocuments {\n openapi: Record<string, unknown>;\n asyncapi: Record<string, unknown>;\n manifest: {\n version: 1;\n complete: boolean;\n protocols: Record<string, string>;\n selections: {\n scope: PoApiScope;\n majorMode: string;\n activeLayers: string[];\n generation: string;\n fingerprint: string;\n }[];\n packages: { name: string; version: string; scope: PoApiScope }[];\n gaps: { packageName: string; scope: PoApiScope; reason: string }[];\n dynamic: string[];\n };\n}\n\n/** Stable bytes for diffs and hashes, independent of object insertion order. */\nexport function canonicalContractJson(value: unknown): string {\n const ordered = (item: unknown): unknown => {\n if (Array.isArray(item)) return item.map(ordered);\n if (item !== null && typeof item === 'object')\n return Object.fromEntries(\n Object.entries(item)\n .sort(([a], [b]) => a.localeCompare(b, 'en'))\n .map(([key, child]) => [key, ordered(child)]),\n );\n return item;\n };\n return `${JSON.stringify(ordered(value), null, 2)}\\n`;\n}\n\nconst componentName = (value: string): string =>\n value.replace(/[^a-zA-Z0-9.-]/gu, (character) => `_${character.codePointAt(0)!.toString(16)}_`);\nconst pluginPrefix = (scope: PoApiScope): string =>\n scope === 'global'\n ? '/api/plugins'\n : scope === 'workspace'\n ? '/api/workspaces/{workspaceId}/plugins'\n : '/api/workspaces/{workspaceId}/sessions/{sessionId}/plugins';\n\n/** Compose declarations only. No handlers, lifecycle hooks, or platform resources are loaded. */\nexport function createApiDocuments(selections: readonly ApiContractSelection[]): ApiDocuments {\n const paths: Record<string, Record<string, unknown>> = {};\n const schemas: Record<string, unknown> = {};\n const messages: Record<string, unknown> = {};\n const operations: Record<string, unknown> = {};\n const channelMessages: Record<string, Record<string, unknown>> = { global: {}, workspace: {}, session: {} };\n const manifest: ApiDocuments['manifest'] = {\n version: 1,\n complete: true,\n protocols: {},\n selections: [],\n packages: [],\n gaps: [],\n dynamic: [],\n };\n const socketAddresses = new Set<string>();\n const schema = (id: string, value: unknown): { $ref: string } => {\n const name = componentName(id);\n if (schemas[name] !== undefined) throw new Error(`Conflicting schema: ${id}`);\n // Local $defs references must remain local after moving into components.\n const relocate = (child: unknown): unknown => {\n if (Array.isArray(child)) return child.map(relocate);\n if (child === null || typeof child !== 'object') return child;\n return Object.fromEntries(\n Object.entries(child).map(([key, entry]) => {\n if (key === '$id') throw new Error(`Schema ${id} must use local references, not $id`);\n if (key === '$ref' && typeof entry === 'string') {\n if (!entry.startsWith('#/')) throw new Error(`Unresolved schema reference in ${id}: ${entry}`);\n return [key, `#/components/schemas/${name}${entry.slice(1)}`];\n }\n return [key, relocate(entry)];\n }),\n );\n };\n schemas[name] = relocate(value);\n return { $ref: `#/components/schemas/${name}` };\n };\n for (const selected of [...selections].sort((a, b) => a.scope.localeCompare(b.scope))) {\n manifest.selections.push({\n scope: selected.scope,\n majorMode: selected.majorMode,\n activeLayers: [...selected.activeLayers].sort(),\n generation: selected.compiled.generation,\n fingerprint: selected.compiled.fingerprint,\n });\n for (const entry of [...selected.compiled.packages].sort((a, b) => a.packageName.localeCompare(b.packageName))) {\n if (\n !entry.scopes.includes(selected.scope) ||\n !entry.owners.some(\n (owner) =>\n owner.majorMode === selected.majorMode &&\n (owner.layer === 'default' || selected.activeLayers.includes(owner.layer)),\n )\n )\n continue;\n manifest.packages.push({ name: entry.packageName, version: entry.packageVersion, scope: selected.scope });\n if (!entry.contract || entry.problem) {\n manifest.gaps.push({\n packageName: entry.packageName,\n scope: selected.scope,\n reason: entry.problem ?? 'No contract declaration',\n });\n continue;\n }\n const contract = parseApiContract(entry.contract);\n for (const [name, value] of Object.entries(contract.schemas ?? {}))\n schema(`${entry.packageName}.${selected.scope}.${name}`, value);\n for (const [name, version] of Object.entries(contract.protocols ?? {})) {\n if (manifest.protocols[name] !== undefined && manifest.protocols[name] !== version)\n throw new Error(`Conflicting ${name} protocol versions`);\n manifest.protocols[name] = version;\n }\n manifest.gaps.push(\n ...(contract.gaps ?? []).map((reason) => ({ packageName: entry.packageName, scope: selected.scope, reason })),\n );\n manifest.dynamic.push(...contract.dynamic.map((value) => `${entry.packageName}: ${value}`));\n for (const route of contract.http.filter((route) => route.scope === selected.scope)) {\n const id = `${entry.packageName}.${route.scope}.${route.id}`;\n const mount =\n route.basePath === undefined\n ? ''\n : route.basePath === 'settings'\n ? `${route.scope === 'global' ? '/api' : '/api/workspaces/{workspaceId}'}/settings`\n : `${pluginPrefix(route.scope)}/${route.basePath}`;\n const pathname = `${mount}${route.path === '/' ? '' : route.path}`;\n const method = route.method.toLowerCase();\n const path = (paths[pathname] ??= {});\n if (path[method]) throw new Error(`Conflicting HTTP contract: ${route.method} ${pathname}`);\n const parameters = (route.parameters ?? []).map((parameter) => ({\n ...parameter,\n schema: schema(`${id}.${parameter.in}.${parameter.name}`, parameter.schema),\n }));\n for (const match of pathname.matchAll(/\\{([^}]+)\\}/gu)) {\n if (!parameters.some((parameter) => parameter.in === 'path' && parameter.name === match[1]))\n parameters.push({\n name: match[1],\n in: 'path',\n required: true,\n schema: schema(`${id}.path.${match[1]}`, { type: 'string', minLength: 1 }),\n });\n }\n path[method] = {\n operationId: componentName(id),\n description: route.description,\n parameters,\n security: route.authentication === 'none' ? [] : [{ [route.authentication]: [] }],\n 'x-po': {\n packageName: entry.packageName,\n scope: route.scope,\n ...(route.availability ? { availability: route.availability } : {}),\n },\n ...(route.body\n ? {\n requestBody: {\n required: route.body.required,\n content: Object.fromEntries(\n (route.body.contentTypes ?? [route.body.contentType]).map((mediaType) => [\n mediaType,\n { schema: schema(`${id}.body.${mediaType}`, route.body!.schema) },\n ]),\n ),\n },\n }\n : {}),\n responses: Object.fromEntries(\n Object.entries(route.responses).map(([status, response]) => [\n status,\n {\n description: response.description,\n ...(response.events\n ? {\n 'x-sse-events': Object.fromEntries(\n Object.entries(response.events).map(([name, payload]) => [\n name,\n schema(`${id}.event.${name}`, payload),\n ]),\n ),\n }\n : {}),\n ...(response.schema === undefined\n ? {}\n : {\n content: {\n [response.contentType ?? 'application/json']: {\n schema: schema(`${id}.response.${status}`, response.schema),\n },\n },\n }),\n },\n ]),\n ),\n };\n }\n for (const socket of contract.sockets.filter((socket) => socket.scope === selected.scope)) {\n const address = `${socket.scope}:${socket.direction}:${socket.kind}:${socket.service}:${socket.member}`;\n if (socketAddresses.has(address)) throw new Error(`Conflicting socket contract: ${address}`);\n socketAddresses.add(address);\n for (const channel of socket.scope === 'global' ? ['global'] : [socket.scope, 'global']) {\n const id = componentName(\n `${entry.packageName}.${socket.scope}.${socket.id}${channel === socket.scope ? '' : '.aggregate'}`,\n );\n const addMessage = (suffix: string, payload: unknown): string => {\n const name = `${id}.${suffix}`;\n messages[name] = { name, payload: schema(name, payload) };\n channelMessages[channel][name] = { $ref: `#/components/messages/${name}` };\n return `#/channels/${channel}/messages/${name}`;\n };\n const request = addMessage('input', socket.input);\n const replies = socket.output === undefined ? [] : [{ $ref: addMessage('output', socket.output) }];\n if (socket.errors !== undefined) replies.push({ $ref: addMessage('error', socket.errors) });\n operations[id] = {\n action: socket.direction === 'client-to-server' ? 'receive' : 'send',\n channel: { $ref: `#/channels/${channel}` },\n messages: [{ $ref: request }],\n description: socket.description,\n ...(replies.length ? { reply: { channel: { $ref: `#/channels/${channel}` }, messages: replies } } : {}),\n 'x-po': {\n service: socket.service,\n member: socket.member,\n scope: socket.scope,\n kind: socket.kind,\n transportScope: channel,\n ...(socket.availability ? { availability: socket.availability } : {}),\n },\n };\n }\n }\n }\n }\n manifest.complete = manifest.gaps.length === 0;\n manifest.dynamic = [...new Set(manifest.dynamic)].sort();\n const info = { title: 'Po compiled client API', version: '1' };\n const openapi = {\n openapi: '3.1.1',\n info,\n paths,\n components: {\n schemas: openApiSchemas(schemas),\n securitySchemes: {\n owner: { type: 'apiKey', in: 'header', name: 'x-po-token' },\n device: {\n type: 'apiKey',\n in: 'cookie',\n name: '__Host-po_device',\n description:\n 'Admitted device credentials and purpose-bound sealed channel; see remote authentication operations.',\n },\n },\n },\n };\n const asyncapi = {\n asyncapi: '3.0.0',\n info,\n channels: Object.fromEntries(\n Object.entries(channelMessages).map(([scope, messages]) => [\n scope,\n {\n address:\n scope === 'global'\n ? '/api/ws'\n : scope === 'workspace'\n ? '/api/workspaces/{workspaceId}/ws'\n : '/api/workspaces/{workspaceId}/sessions/{sessionId}/ws',\n ...(scope === 'global'\n ? {}\n : {\n parameters: {\n workspaceId: { description: 'Admitted workspace identity.' },\n ...(scope === 'session' ? { sessionId: { description: 'Session owned by this workspace.' } } : {}),\n },\n }),\n messages,\n description:\n 'Decoded Pi/Chord values over framed CBOR. The global hub socket aggregates all scopes; workspace and session sockets restrict session access and package calls to their addressed scope. Remote paired-device sockets seal the same bytes.',\n },\n ]),\n ),\n operations,\n components: { schemas: asyncApiSchemas(schemas), messages },\n };\n // References must resolve in each portable document before either is published.\n for (const document of [openapi, asyncapi]) {\n const visit = (value: unknown): void => {\n if (value === null || typeof value !== 'object') return;\n for (const [key, child] of Object.entries(value)) {\n if (key === '$ref' && typeof child === 'string') {\n let target: unknown = document;\n for (const segment of child.slice(2).split('/')) {\n if (target === null || typeof target !== 'object') throw new Error(`Unresolved API reference: ${child}`);\n target = Reflect.get(target, segment.replace(/~1/gu, '/').replace(/~0/gu, '~'));\n }\n if (target === undefined) throw new Error(`Unresolved API reference: ${child}`);\n } else visit(child);\n }\n };\n visit(document);\n }\n return { openapi, asyncapi, manifest };\n}\n\n/** TypeBox uses draft-07 tuple keywords; OpenAPI 3.1 evaluates the 2020-12 vocabulary. */\nfunction openApiSchemas(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(openApiSchemas);\n if (value === null || typeof value !== 'object') return value;\n const source = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(source)) {\n if (key === 'items' && Array.isArray(child)) {\n if (child.length) result.prefixItems = child.map(openApiSchemas);\n else {\n result.items = false;\n result.maxItems = 0;\n }\n } else if (key === 'additionalItems' && Array.isArray(source.items)) result.items = openApiSchemas(child);\n else if (key === 'dependencies' && child !== null && typeof child === 'object') {\n const required: Record<string, unknown> = {};\n const schemas: Record<string, unknown> = {};\n for (const [name, dependency] of Object.entries(child)) {\n if (Array.isArray(dependency)) required[name] = dependency;\n else schemas[name] = openApiSchemas(dependency);\n }\n if (Object.keys(required).length) result.dependentRequired = required;\n if (Object.keys(schemas).length) result.dependentSchemas = schemas;\n } else if (key === '$schema') result.$schema = 'https://json-schema.org/draft/2020-12/schema';\n else result[key] = openApiSchemas(child);\n }\n return result;\n}\n\nfunction asyncApiSchemas(schemas: Record<string, unknown>): Record<string, unknown> {\n const convert = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(convert);\n if (value === null || typeof value !== 'object') return value;\n const result: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(value)) {\n if (key === '$ref' && typeof child === 'string') {\n result[key] = child.replace(/^(#\\/components\\/schemas\\/[^/]+)(.*)$/u, '$1/schema$2');\n } else if (key === 'items' && Array.isArray(child) && child.length === 0) {\n result.items = false;\n result.maxItems = 0;\n } else result[key] = convert(child);\n }\n return result;\n };\n return Object.fromEntries(\n Object.entries(schemas).map(([name, schema]) => [\n name,\n {\n schemaFormat: 'application/schema+json;version=draft-07',\n schema: convert(schema),\n },\n ]),\n );\n}\n","/**\n * What one entry in the composition actually is, for a reader who clicked it.\n *\n * The projection prices the composition and stops there: names, owners, and\n * integer counts, small enough to republish whenever the composition changes.\n * The prose and the schema behind a figure are an order of magnitude larger and\n * are wanted one row at a time, so they travel on request instead. This module\n * is the contract both ends of that request share, and it is deliberately free\n * of Node imports so a browser can hold it too.\n */\n\n/** Where a host mounts this package's API; the segment after /api/plugins/. */\nexport const API_BASE_PATH = 'context';\n\n/** The session a proxied request belongs to; the hub strips it before forwarding. */\nexport const SESSION_QUERY_PARAM = 'session';\n\nexport const ITEM_ROUTE = '/item';\n\nexport const CURRENT_ROUTE = '/current';\n\nexport const NAME_QUERY_PARAM = 'name';\n\nexport const KIND_QUERY_PARAM = 'kind';\n\nexport const CONTEXT_DETAIL_VERSION = 1;\n\n/** Plugin-agnostic status payload: a JSON map keyed by registered tool name. */\nexport const CONTEXT_TOOL_WARNINGS_STATUS_KEY = 'po-context-tool-warnings';\n","import { Type, type TSchema } from 'typebox';\n\nimport { API_BASE_PATH, CURRENT_ROUTE, ITEM_ROUTE } from '../constants/contextApi';\nimport type { PoHttpContract } from './apiContracts';\n\nconst Text = Type.String();\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Flag = Type.Boolean();\nconst NumberValue = Type.Number();\nexport const ApiErrorSchema = Type.Object({ error: Text, hash: Optional(Text) });\nexport const ApiOkSchema = Type.Object({ ok: Type.Literal(true) });\nconst Json = Type.Unknown({ description: 'Value whose schema is supplied by the selected runtime contribution.' });\n\n/** Common JSON response construction; status and payload remain explicit at the declaration. */\nexport function jsonApiResponses(schema: object | boolean, status = 200): PoHttpContract['responses'] {\n return {\n [status]: { description: 'Successful response', contentType: 'application/json', schema },\n '400': { description: 'Invalid request', schema: ApiErrorSchema },\n '401': { description: 'Authentication required', schema: ApiErrorSchema },\n '403': { description: 'Request is not authorized', schema: ApiErrorSchema },\n '404': { description: 'Resource or capability unavailable', schema: ApiErrorSchema },\n '409': { description: 'Conflicting state', schema: ApiErrorSchema },\n '422': { description: 'Invalid operation', schema: ApiErrorSchema },\n '500': { description: 'Host operation failed', schema: ApiErrorSchema },\n '502': { description: 'Provider failed', schema: ApiErrorSchema },\n '503': { description: 'Service unavailable', schema: ApiErrorSchema },\n };\n}\nexport const WebCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n verifiedAssetBaseUrl: Text,\n pluginEntries: Type.Array(Type.Tuple([Text, Text])),\n assetPaths: Strings,\n stylePaths: Strings,\n channels: Strings,\n});\nexport const NativeCompositionSchema = Type.Object({\n id: Text,\n scope: Type.Union([Type.Literal('global'), Type.Literal('workspace'), Type.Literal('session')]),\n revision: NumberValue,\n manifestUrl: Text,\n rawAssetBaseUrl: Text,\n entryPath: Text,\n channels: Strings,\n plugins: Strings,\n});\n/** A configured template id and the mount whose compositions offer it. */\nconst TemplateDecisionSchema = Type.Object({\n id: Optional(Text),\n mount: Type.Union([\n Type.Object({ scope: Type.Literal('global') }),\n Type.Object({ scope: Type.Literal('workspace'), workspaceId: Text }),\n ]),\n});\nexport const SessionSummarySchema = Type.Object({\n id: Text,\n workspaceId: Optional(Text),\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n name: Text,\n cwd: Text,\n createdAt: Text,\n updatedAt: Text,\n phase: Type.Union([Type.Literal('idle'), Type.Literal('turn'), Type.Literal('compaction'), Type.Literal('retry')]),\n phaseSince: Text,\n attach: Type.Literal('attached'),\n pendingMessageCount: NumberValue,\n everPrompted: Flag,\n awaitingInput: Flag,\n lastSettledAt: Optional(Text),\n git: Optional(Type.Object({ branch: Text, dirty: Flag })),\n profile: Optional(Type.Object({ name: Text, displayName: Optional(Text), iconVersion: Optional(Text) })),\n parentSessionId: Optional(Text),\n sessionProvenance: Optional(Text),\n /** The line the session's extension published about background work it runs. */\n activity: Optional(Type.Object({ label: Text, attention: Optional(Flag), since: Optional(Text) })),\n pendingSetups: Optional(\n Type.Array(\n Type.Object({\n id: Text,\n name: Text,\n createdAt: Text,\n cwd: Optional(Text),\n setupKind: Optional(Type.Union([Type.Literal('managed-worktree'), Type.Literal('existing-directory')])),\n status: Optional(\n Type.Union([Type.Literal('provisioning'), Type.Literal('failed'), Type.Literal('interrupted')]),\n ),\n errorCode: Optional(\n Type.Union([Type.Literal('SESSION_WORKTREE_PROVISION_FAILED'), Type.Literal('SESSION_UNAVAILABLE')]),\n ),\n }),\n ),\n ),\n groups: Optional(Strings),\n backgroundWorkActive: Optional(Flag),\n /** Present and true for a recorded session the server has not reopened yet. */\n dormant: Optional(Flag),\n});\nexport const WorkspaceSchema = Type.Object({ id: Text, root: Text, name: Optional(Text), available: Optional(Flag) });\nconst SavedSession = Type.Object({\n id: Text,\n name: Optional(Text),\n firstMessage: Text,\n createdAt: Text,\n updatedAt: Text,\n});\nconst query = (\n name: string,\n schema: TSchema = Text,\n required = false,\n): NonNullable<PoHttpContract['parameters']>[number] => ({ name, in: 'query', required, schema });\nconst body = (schema: TSchema): NonNullable<PoHttpContract['body']> => ({\n contentType: 'application/json',\n required: true,\n schema,\n});\nconst host = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id,\n path,\n method,\n scope: 'global',\n authentication: 'owner',\n description: id,\n responses: jsonApiResponses(result),\n ...extra,\n});\nconst Binary = Type.String({ contentEncoding: 'binary' });\nexport const headlessHttpContracts: PoHttpContract[] = [\n host(\n 'health',\n '/api/health',\n 'GET',\n Type.Object({\n ok: Type.Literal(true),\n role: Type.Literal('hub'),\n protocol: Type.Literal(1),\n sessions: NumberValue,\n }),\n { authentication: 'none' },\n ),\n host('telemetry.browser', '/api/telemetry/browser', 'POST', ApiOkSchema, {\n body: body(\n Type.Object({\n v: Type.Literal(1),\n events: Type.Array(\n Type.Object({\n name: Type.String({ pattern: '^web\\\\.browser\\\\.[a-z_]{1,40}$' }),\n duration_ms: Optional(NumberValue),\n count: Optional(NumberValue),\n }),\n { maxItems: 10 },\n ),\n }),\n ),\n }),\n host(\n 'compositions',\n '/api/compositions',\n 'GET',\n Type.Object({\n global: Optional(WebCompositionSchema),\n nativeGlobal: Optional(NativeCompositionSchema),\n publicKey: Optional(Text),\n shell: Optional(Type.Object({ publicKey: Text, revision: NumberValue })),\n template: Optional(TemplateDecisionSchema),\n /** The phone app's `native.template` choice, resolved the same way. */\n nativeTemplate: Optional(TemplateDecisionSchema),\n workspaces: Type.Array(\n Type.Object({\n id: Text,\n root: Text,\n webComposition: Optional(WebCompositionSchema),\n nativeComposition: Optional(NativeCompositionSchema),\n }),\n ),\n }),\n ),\n host('directories', '/api/directories', 'GET', Type.Object({ directories: Strings }), { parameters: [query('q')] }),\n host(\n 'directories.children',\n '/api/directories/children',\n 'GET',\n Type.Object({ path: Text, parent: Optional(Text), directories: Strings }),\n { parameters: [query('path')] },\n ),\n host('directories.po', '/api/directories/po', 'GET', Type.Object({ directories: Strings })),\n host(\n 'sessions.list',\n '/api/workspaces/{workspaceId}/sessions',\n 'GET',\n Type.Object({ sessions: Type.Array(SessionSummarySchema) }),\n ),\n host('sessions.create', '/api/workspaces/{workspaceId}/sessions', 'POST', Type.Object({ sessionId: Text }), {\n body: body(Type.Object({ name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ sessionId: Text }), 201),\n }),\n host('sessions.get', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'GET', SessionSummarySchema),\n host('sessions.delete', '/api/workspaces/{workspaceId}/sessions/{sessionId}', 'DELETE', ApiOkSchema),\n host(\n 'sessions.history',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n { availability: 'Host provides sessionHistory' },\n ),\n host('sessions.restart', '/api/workspaces/{workspaceId}/sessions/{sessionId}/restart', 'POST', ApiOkSchema, {\n availability: 'Host provides restartSession',\n }),\n host('sessions.revive', '/api/workspaces/{workspaceId}/sessions/{sessionId}/revive', 'POST', ApiOkSchema, {\n availability: 'Host provides reviveSession',\n }),\n host(\n 'sessions.resume',\n '/api/workspaces/{workspaceId}/sessions/{sessionId}/resume',\n 'POST',\n Type.Object({ sessionId: Text }),\n {\n availability: 'Host provides resumeSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n },\n ),\n host('sessions.file', '/api/workspaces/{workspaceId}/sessions/{sessionId}/file', 'GET', Binary, {\n parameters: [query('path', Text, true)],\n responses: {\n ...jsonApiResponses(Binary),\n '200': { description: 'File bytes, MIME type follows the file extension', contentType: '*/*', schema: Binary },\n },\n }),\n host('workspaces.list', '/api/workspaces', 'GET', Type.Object({ workspaces: Type.Array(WorkspaceSchema) })),\n host('workspaces.admit', '/api/workspaces', 'POST', Type.Object({ workspace: WorkspaceSchema }), {\n body: body(Type.Object({ root: Optional(Text), name: Optional(Text) })),\n responses: jsonApiResponses(Type.Object({ workspace: WorkspaceSchema }), 201),\n }),\n host('workspaces.get', '/api/workspaces/{workspaceId}', 'GET', Type.Object({ workspace: WorkspaceSchema })),\n host(\n 'workspaces.history',\n '/api/workspaces/{workspaceId}/history',\n 'GET',\n Type.Object({ sessions: Type.Array(SavedSession) }),\n {\n availability: 'Host provides workspaceHistory',\n },\n ),\n host('workspaces.resume', '/api/workspaces/{workspaceId}/resume', 'POST', Type.Object({ sessionId: Text }), {\n availability: 'Host provides resumeWorkspaceSession',\n body: body(Type.Object({ targetSessionId: Type.String({ pattern: '^[A-Za-z0-9_-]+$' }) })),\n }),\n host('workspaces.remove', '/api/workspaces/{workspaceId}', 'DELETE', ApiOkSchema),\n];\nconst AuthType = Type.Union([Type.Literal('api_key'), Type.Literal('oauth')]);\nconst Provider = Type.Object({\n id: Text,\n name: Text,\n methods: Type.Array(Type.Object({ type: AuthType, label: Text })),\n authenticated: Optional(Type.Object({ type: AuthType, source: Optional(Text) })),\n});\nconst LoginEvent = Type.Union([\n Type.Object({\n type: Type.Literal('info'),\n message: Text,\n links: Optional(Type.Array(Type.Object({ url: Text, label: Optional(Text) }))),\n }),\n Type.Object({ type: Type.Literal('auth_url'), url: Text, instructions: Optional(Text) }),\n Type.Object({\n type: Type.Literal('device_code'),\n userCode: Text,\n verificationUri: Text,\n intervalSeconds: Optional(NumberValue),\n expiresInSeconds: Optional(NumberValue),\n }),\n Type.Object({ type: Type.Literal('progress'), message: Text }),\n]);\nexport const LoginFlowSchema = Type.Object({\n id: Text,\n providerId: Text,\n providerName: Text,\n type: AuthType,\n status: Type.Union([\n Type.Literal('running'),\n Type.Literal('succeeded'),\n Type.Literal('failed'),\n Type.Literal('cancelled'),\n ]),\n events: Type.Array(LoginEvent),\n prompt: Optional(\n Type.Object({\n id: Text,\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('secret'),\n Type.Literal('select'),\n Type.Literal('manual_code'),\n ]),\n message: Text,\n placeholder: Optional(Text),\n options: Optional(Type.Array(Type.Object({ id: Text, label: Text, description: Optional(Text) }))),\n }),\n ),\n remote: Optional(Flag),\n error: Optional(Text),\n});\nconst Flow = Type.Object({ flow: LoginFlowSchema });\nexport const machineHttpContracts: PoHttpContract[] = [\n host('providers.list', '/providers', 'GET', Type.Object({ providers: Type.Array(Provider) })),\n host(\n 'models.list',\n '/models',\n 'GET',\n Type.Object({ models: Type.Array(Type.Object({ value: Text, label: Text, group: Text })) }),\n ),\n host('providers.logout', '/providers/{providerId}', 'DELETE', ApiOkSchema),\n host('logins.create', '/logins', 'POST', Flow, {\n body: body(Type.Object({ providerId: Text, type: AuthType })),\n responses: jsonApiResponses(Flow, 201),\n }),\n host('logins.get', '/logins/{flowId}', 'GET', Flow),\n host('logins.cancel', '/logins/{flowId}', 'DELETE', Flow),\n host('logins.answer', '/logins/{flowId}/answer', 'POST', Flow, {\n body: body(Type.Object({ promptId: Text, value: Text })),\n }),\n].map((route) => ({ ...route, basePath: 'po' }));\nconst Source = Type.Union([\n Type.Literal('extension'),\n Type.Literal('mcp'),\n Type.Literal('plugin'),\n Type.Literal('core'),\n]);\nconst Detail = Type.Union([\n Type.Object({\n itemKind: Type.Literal('tool'),\n name: Text,\n owner: Text,\n source: Source,\n active: Flag,\n tokens: Type.Object({ schemaTokens: NumberValue, promptTokens: NumberValue, totalTokens: NumberValue }),\n description: Optional(Text),\n promptSnippet: Optional(Text),\n promptGuidelines: Optional(Strings),\n parameters: Optional(Json),\n }),\n Type.Object({\n itemKind: Type.Literal('skill'),\n name: Text,\n owner: Text,\n source: Source,\n active: Type.Literal(true),\n tokens: NumberValue,\n description: Text,\n filePath: Optional(Text),\n modelInvocable: Flag,\n }),\n Type.Object({\n itemKind: Type.Literal('prompt'),\n name: Type.Literal('system'),\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n text: Text,\n }),\n]);\nconst ContextProjection = Type.Object({\n version: Type.Literal(1),\n revision: NumberValue,\n selection: Type.Object({ majorMode: Text, domains: Strings, profile: Optional(Text) }),\n groups: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n kind: Type.Union([Type.Literal('major'), Type.Literal('minor'), Type.Literal('domain'), Type.Literal('core')]),\n items: Type.Array(\n Type.Object({\n name: Text,\n itemKind: Type.Union([Type.Literal('tool'), Type.Literal('skill')]),\n source: Source,\n owner: Text,\n tokens: NumberValue,\n active: Flag,\n }),\n ),\n tokens: NumberValue,\n inactiveTokens: NumberValue,\n }),\n ),\n totalTokens: NumberValue,\n inactiveTokens: NumberValue,\n systemPrompt: Optional(\n Type.Object({\n tokens: NumberValue,\n stage: Type.Union([Type.Literal('base'), Type.Literal('effective')]),\n }),\n ),\n estimator: Type.Literal('gpt-tokenizer'),\n});\nexport const sessionHttpContracts: PoHttpContract[] = [\n {\n ...host('context.current', CURRENT_ROUTE, 'GET', ContextProjection),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('context.item', ITEM_ROUTE, 'GET', Type.Object({ revision: NumberValue, item: Detail }), {\n parameters: [\n query('kind', Type.Union([Type.Literal('tool'), Type.Literal('skill'), Type.Literal('prompt')]), true),\n query('name', Text, true),\n ],\n }),\n scope: 'session',\n basePath: API_BASE_PATH,\n },\n {\n ...host('files.complete', '/', 'GET', Type.Object({ files: Strings }), {\n parameters: [query('q', Type.String({ maxLength: 256 }))],\n }),\n scope: 'session',\n basePath: 'files',\n },\n];\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoHttpContract } from './apiContracts';\nimport { ApiErrorSchema, ApiOkSchema, jsonApiResponses } from './httpApiContracts';\n\nconst Text = Type.String();\nconst NumberValue = Type.Number();\nconst Optional = Type.Optional;\nconst Flag = Type.Boolean();\nconst JsonObject = Type.Record(\n Text,\n Type.Unknown({\n description: 'WebAuthn ceremony fields supplied and verified by the installed WebAuthn implementation.',\n }),\n);\nconst Tunnel = Type.Union([\n Type.Object({ kind: Type.Literal('quick') }),\n Type.Object({\n kind: Type.Literal('named'),\n hostname: Text,\n name: Optional(Text),\n tokenFile: Optional(Text),\n configFile: Optional(Text),\n }),\n]);\nconst Settings = Type.Object({\n autoCloseEnabled: Flag,\n autoCloseMinutes: NumberValue,\n sessionExpiryEnabled: Flag,\n idleMinutes: NumberValue,\n absoluteHours: NumberValue,\n tunnel: Tunnel,\n sandbox: Type.Object({ enabled: Flag, workspaces: Type.Array(Text) }),\n});\nconst State = Type.Object({\n status: Type.Union([Type.Literal('off'), Type.Literal('starting'), Type.Literal('on'), Type.Literal('failed')]),\n publicUrl: Optional(Text),\n startedAt: Optional(Text),\n closesAt: Optional(Text),\n error: Optional(Text),\n devices: Type.Array(\n Type.Object({ id: Text, label: Text, userAgent: Text, createdAt: Text, lastSeenAt: Text, self: Flag }),\n ),\n pending: Type.Array(Type.Object({ id: Text, userAgent: Text, edgeIp: Text, createdAt: Text, expiresAt: Text })),\n trustedDevices: Type.Array(\n Type.Object({\n id: Text,\n label: Text,\n platform: Type.Union([Type.Literal('ios'), Type.Literal('android')]),\n createdAt: Text,\n lastSeenAt: Text,\n self: Flag,\n }),\n ),\n settings: Settings,\n});\nconst StateResponse = Type.Object({ state: State, handingOver: Optional(Flag) });\nconst Trust = Type.Object({ publicKey: Text, fingerprint: Text, revision: NumberValue });\nconst Begun = Type.Object({ ceremonyId: Text, options: JsonObject });\nconst DeviceKeyBegun = Type.Object({ ceremonyId: Text, challenge: Text, kind: Type.Literal('device-key') });\nconst ChannelKeys = Type.Object({ session: Text, protocol: Text, http: Text });\nconst Finish = Type.Object({ ceremonyId: Text, response: JsonObject });\nexport const SealedEnvelopeSchema = Type.Object({ v: Type.Literal(1), n: Text, c: Text });\nexport const SealedHttpRequestSchema = Type.Object({\n v: Type.Literal(1),\n method: Text,\n target: Text,\n headers: Type.Array(Type.Tuple([Text, Text])),\n body: Optional(Text),\n});\nexport const SealedHttpResponseSchema = Type.Object({\n v: Type.Literal(1),\n status: NumberValue,\n headers: Type.Array(Type.Tuple([Text, Text])),\n body: Text,\n});\nconst route = (\n id: string,\n path: string,\n method: PoHttpContract['method'],\n result: TSchema,\n input?: TSchema,\n extra: Partial<PoHttpContract> = {},\n): PoHttpContract => ({\n id: `remote.${id}`,\n path: `/api/remote${path}`,\n method,\n scope: 'global',\n authentication: 'owner',\n description: `Remote Control ${id}.`,\n availability:\n 'Global host provides Remote Control. Tunnel routes additionally enforce device, origin and step-up policy.',\n responses: { ...jsonApiResponses(result), '429': { description: 'Rate limit exceeded', schema: ApiErrorSchema } },\n ...(input ? { body: { contentType: 'application/json', required: true, schema: input } } : {}),\n ...extra,\n});\nconst direct: PoHttpContract[] = [\n route('state', '', 'GET', StateResponse),\n route('enable', '/enable', 'POST', StateResponse, undefined, {\n responses: {\n ...jsonApiResponses(StateResponse),\n '202': { description: 'Container handover started', schema: StateResponse },\n },\n }),\n route('disable', '/disable', 'POST', StateResponse, undefined, {\n responses: {\n ...jsonApiResponses(StateResponse),\n '202': { description: 'Tunnel closing', schema: Type.Object({ status: Type.Literal('closing') }) },\n },\n }),\n route(\n 'codes',\n '/codes',\n 'POST',\n Type.Object({ ...Trust.properties, code: Text, manualCode: Text, pairUrl: Text, expiresAt: Text }),\n undefined,\n {\n responses: jsonApiResponses(\n Type.Object({ ...Trust.properties, code: Text, manualCode: Text, pairUrl: Text, expiresAt: Text }),\n 201,\n ),\n },\n ),\n route('approve', '/pairing/{id}/approve', 'POST', StateResponse),\n route('deny', '/pairing/{id}/deny', 'POST', StateResponse),\n route('revoke', '/devices/{id}', 'DELETE', StateResponse),\n route('settings', '/settings', 'PUT', Type.Object({ settings: Settings }), Type.Partial(Settings)),\n route(\n 'passkeys',\n '/passkeys',\n 'GET',\n Type.Object({\n support: Type.Union([\n Type.Object({ supported: Type.Literal(true), rpId: Text }),\n Type.Object({ supported: Type.Literal(false), reason: Text }),\n ]),\n credentials: Type.Array(Type.Object({ id: Text, label: Text, createdAt: Text, lastUsedAt: Text })),\n }),\n ),\n route('passkeys.remove', '/passkeys/{id}', 'DELETE', ApiOkSchema),\n route('register.begin', '/passkeys/register/begin', 'POST', Begun, undefined, { authentication: 'device' }),\n route('register.finish', '/passkeys/register/finish', 'POST', Type.Object({ id: Text }), Finish, {\n authentication: 'device',\n }),\n route('authenticate.begin', '/passkeys/authenticate/begin', 'POST', Begun, undefined, { authentication: 'none' }),\n route(\n 'authenticate.finish',\n '/passkeys/authenticate/finish',\n 'POST',\n Type.Object({ ok: Type.Literal(true), hostPublicKey: Text }),\n Finish,\n { authentication: 'none' },\n ),\n route('challenge', '/challenge', 'POST', Type.Union([Begun, DeviceKeyBegun]), Type.Object({ action: Text }), {\n authentication: 'device',\n }),\n route(\n 'trusted-devices.register',\n '/trusted-devices',\n 'POST',\n Type.Object({ trustedDeviceId: Text }),\n Type.Object({\n identityPublicKey: Text,\n stepUpPublicKey: Text,\n label: Text,\n platform: Type.Union([Type.Literal('ios'), Type.Literal('android')]),\n identityProof: Text,\n stepUpProof: Text,\n }),\n {\n authentication: 'device',\n description: 'Registers a native device from a sealed, QR-approved pairing session.',\n responses: jsonApiResponses(Type.Object({ trustedDeviceId: Text }), 201),\n },\n ),\n route('trusted-devices.revoke', '/trusted-devices/{id}', 'DELETE', StateResponse, undefined, {\n description: 'Revokes a trusted native device. Local callers, or sealed callers with verified step-up.',\n }),\n route(\n 'device-auth.challenge',\n '/device-auth/challenge',\n 'POST',\n Type.Object({ challengeId: Text, challenge: Text, hostPublicKey: Text, attestation: Text }),\n Type.Object({ trustedDeviceId: Text, nonce: Text }),\n { authentication: 'none' },\n ),\n route(\n 'device-auth.authenticate',\n '/device-auth/authenticate',\n 'POST',\n Type.Object({ ok: Type.Literal(true) }),\n Type.Object({ challengeId: Text, trustedDeviceId: Text, signature: Text, channels: ChannelKeys }),\n { authentication: 'none' },\n ),\n route(\n 'channel',\n '/channel',\n 'POST',\n ApiOkSchema,\n Type.Object({\n clientPublicKey: Text,\n scope: Type.Union([Type.Literal('session'), Type.Literal('protocol'), Type.Literal('http')]),\n }),\n { authentication: 'device' },\n ),\n route('request', '/request', 'POST', SealedEnvelopeSchema, SealedEnvelopeSchema, {\n authentication: 'device',\n description:\n 'Sealed HTTP gateway. Decrypted requests/responses use the SealedHttpRequest and SealedHttpResponse envelopes.',\n }),\n route(\n 'pair',\n '/pair',\n 'POST',\n Type.Object({ requestId: Text, status: Type.Literal('pending') }),\n Type.Object({ code: Type.String({ minLength: 1 }) }),\n {\n authentication: 'none',\n responses: {\n ...jsonApiResponses(Type.Object({ requestId: Text, status: Type.Literal('pending') }), 202),\n '410': { description: 'Pairing code is no longer valid', schema: ApiErrorSchema },\n },\n },\n ),\n route(\n 'pair.status',\n '/pair/status',\n 'GET',\n Type.Object({\n status: Type.Union([\n Type.Literal('pending'),\n Type.Literal('approved'),\n Type.Literal('denied'),\n Type.Literal('expired'),\n Type.Literal('consumed'),\n ]),\n bundleTrust: Optional(Trust),\n hostPublicKey: Optional(Text),\n }),\n undefined,\n { authentication: 'none', parameters: [{ name: 'request', in: 'query', required: true, schema: Text }] },\n ),\n];\nexport const remoteHttpContracts: PoHttpContract[] = [\n route('frontend', '/frontend', 'POST', ApiOkSchema, Type.Object({ origin: Text }), {\n authentication: 'owner',\n availability: 'Internal loopback frontend registration; blocked by the browser proxy.',\n parameters: [{ name: 'x-po-web-registration', in: 'header', required: true, schema: Text }],\n }),\n ...direct,\n ...direct.map((operation) => ({\n ...operation,\n id: `${operation.id}.plugin`,\n basePath: 'remote',\n path: operation.path.slice('/api/remote'.length) || '/',\n authentication: 'owner' as const,\n availability: 'Global Remote Control plugin mount, reached through the authenticated headless listener.',\n })),\n {\n id: 'remote.pair.page',\n scope: 'global',\n path: '/pair',\n method: 'GET',\n authentication: 'none',\n availability: 'Remote listener only',\n description: 'Pairing and passkey bootstrap page.',\n responses: { '200': { description: 'Pairing page', contentType: 'text/html', schema: Text } },\n },\n];\nconst Asset = Type.Object({\n path: Text,\n sha256: Type.String({ pattern: '^[a-f0-9]{64}$' }),\n byteLength: Type.Integer({ minimum: 0 }),\n contentType: Text,\n});\nconst Signed = Type.Object({\n manifest: Type.Object({\n version: Type.Literal(2),\n revision: Type.Integer({ minimum: 1 }),\n builtAt: NumberValue,\n assets: Type.Array(Asset),\n }),\n signature: Text,\n publicKey: Text,\n});\nexport const bundleHttpContracts: PoHttpContract[] = [\n ...['/bundle-manifest.json', '/api/web-plugins/{id}/{revision}/manifest'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): PoHttpContract => ({\n id: `bundle.${path}.${method}`,\n scope: 'global',\n path,\n method,\n authentication: 'owner',\n availability: 'Host publishes a web bundle',\n description: 'Read an immutable signed browser bundle manifest.',\n responses:\n method === 'HEAD'\n ? { '200': { description: 'Manifest response headers' }, '404': { description: 'Bundle not published' } }\n : jsonApiResponses(Signed),\n })),\n ),\n ...['/bundle-assets/{revision}/{assetPath}', '/api/web-plugins/{id}/{revision}/assets/{assetPath}'].flatMap((path) =>\n (['GET', 'HEAD'] as const).map((method): PoHttpContract => ({\n id: `asset.${path}.${method}`,\n scope: 'global',\n path,\n method,\n authentication: 'owner',\n availability: 'Host publishes a web bundle',\n description: 'Read an asset from the signed manifest. assetPath may contain multiple path segments.',\n responses: {\n '200': {\n description: 'Manifest-listed asset, original MIME type',\n ...(method === 'GET' ? { contentType: '*/*', schema: Type.String({ contentEncoding: 'binary' }) } : {}),\n },\n '404': { description: 'Asset not published' },\n },\n })),\n ),\n];\n","import { ChordError, createHost, isChordError, method, type Frame, type Host, type Link } from '@earendil-works/chord';\nimport type { TSchema } from 'typebox';\n\n/** Name of the Po server host; every Po contract places its objects on it. */\nexport const PO_SERVER_HOST = 'server';\n\n/** One method's argument and result schemas; a missing one means no arguments or a void result. */\nexport interface PoMethodSchemas {\n readonly args?: TSchema;\n readonly result?: TSchema;\n}\n\n/**\n * What Chord's `method(args, result)` returns. Chord keeps `MethodSpec` private, so declaration\n * emit cannot name an inferred `method()` result; this alias can.\n */\nexport type ChordMethod<A extends TSchema | undefined, R extends TSchema | undefined> = Omit<\n ReturnType<typeof method<TSchema, TSchema>>,\n 'args' | 'result'\n> & { readonly args: A; readonly result: R };\n\nexport type ChordMethods<T extends Record<string, PoMethodSchemas>> = {\n [K in keyof T]: ChordMethod<\n T[K] extends { readonly args: infer A extends TSchema } ? A : undefined,\n T[K] extends { readonly result: infer R extends TSchema } ? R : undefined\n >;\n};\n\n/** Chord method specs for a schema table, typed so contracts built from them stay nameable. */\nexport function chordMethods<T extends Record<string, PoMethodSchemas>>(schemas: T): ChordMethods<T> {\n return Object.fromEntries(\n Object.entries<PoMethodSchemas>(schemas).map(([name, { args, result }]) => [\n name,\n result !== undefined ? method(args, result) : args !== undefined ? method(args) : method(),\n ]),\n ) as ChordMethods<T>;\n}\n\n/** A transport that carries text messages in order; `send` may be asynchronous (sealing). */\nexport interface TextPort {\n send(text: string): void;\n close(): void;\n}\n\n/**\n * A Chord link over any ordered text transport. Feed received text to `deliver` and the\n * transport's end to `ended`.\n */\nexport function createTextLink(port: TextPort): {\n link: Link;\n deliver(text: string): void;\n ended(reason: string): void;\n} {\n let handler: ((frame: Frame) => void) | undefined;\n let queue: Frame[] = [];\n const closeHandlers = new Set<(reason: string) => void>();\n let closed = false;\n const ended = (reason: string): void => {\n if (closed) return;\n closed = true;\n queue = [];\n try {\n port.close();\n } finally {\n for (const close of closeHandlers) close(reason);\n closeHandlers.clear();\n }\n };\n const link: Link = {\n get closed() {\n return closed;\n },\n send(frame) {\n if (closed) return undefined;\n const text = JSON.stringify(frame);\n port.send(text);\n // Reported like Chord's WebSocket link, so this link joins its flow control.\n return text.length;\n },\n receive(next) {\n handler = next;\n for (const frame of queue.splice(0)) next(frame);\n },\n onClose(close) {\n if (closed) close('closed');\n else closeHandlers.add(close);\n },\n close(reason = 'closed') {\n if (closed) return;\n try {\n port.send(JSON.stringify({ t: 'bye', reason }));\n } catch {\n // The transport may already be gone.\n }\n ended(reason);\n },\n };\n return {\n link,\n deliver(text) {\n if (closed) return;\n let frame: Frame;\n try {\n frame = JSON.parse(text) as Frame;\n if (frame === null || typeof frame !== 'object' || typeof (frame as { t?: unknown }).t !== 'string')\n throw new TypeError('not a frame');\n } catch {\n link.close('protocol error');\n return;\n }\n if ((frame as { t: string }).t === 'bye') {\n ended((frame as { reason?: string }).reason ?? 'peer closed');\n return;\n }\n if (handler === undefined) queue.push(frame);\n else handler(frame);\n },\n ended,\n };\n}\n\n/**\n * Whether `error` means this client's code is older than the server's. Chord refuses a changed contract with\n * `contract_mismatch`, which it reports to a client as `upgrade_required`; another protocol version is reported the\n * same way by `createProtocolClient`. Retrying cannot help, only new client code can.\n */\nexport function isUpdateRequired(error: unknown): boolean {\n return isChordError(error, 'contract_mismatch') || isChordError(error, 'upgrade_required');\n}\n\n/** `update_required` is heard once, before the closing link's `disconnected`; the client never connects again. */\nexport type ProtocolConnectionState = 'connected' | 'disconnected' | 'update_required';\n\n/** A browser or native Chord client host with one reconnectable link to the Po server. */\nexport interface ProtocolClient {\n readonly host: Host;\n readonly connected: boolean;\n /** The server needs newer client code; `connect` rejects from now on. */\n readonly updateRequired: boolean;\n connect(): Promise<void>;\n /** Closes the current link; listeners hear `disconnected`. */\n disconnect(): void;\n /** Hands over the error a held reference ended with; an update-required error stops the client for good. */\n reportError(error: unknown): void;\n dispose(): void;\n onConnectionStateChange(listener: (change: { state: ProtocolConnectionState }) => void): () => void;\n}\n\nexport function createProtocolClient(options: { name?: string; openLink: () => Promise<Link> }): ProtocolClient {\n const host = createHost({ name: options.name ?? 'client', kind: 'client', self: { host: true } });\n const listeners = new Set<(change: { state: ProtocolConnectionState }) => void>();\n let current: Link | undefined;\n let connecting: Promise<void> | undefined;\n let disposed = false;\n let updateError: unknown;\n const emit = (state: ProtocolConnectionState) => {\n for (const listener of Array.from(listeners)) listener({ state });\n };\n const reportError = (error: unknown): void => {\n if (disposed || updateError !== undefined || !isUpdateRequired(error)) return;\n updateError = error;\n emit('update_required');\n current?.close();\n };\n return {\n host,\n get connected() {\n return current !== undefined && !current.closed;\n },\n get updateRequired() {\n return updateError !== undefined;\n },\n connect() {\n if (disposed) return Promise.reject(new Error('The protocol client is disposed.'));\n if (updateError !== undefined) return Promise.reject(updateError);\n if (current !== undefined && !current.closed) return Promise.resolve();\n connecting ??= (async () => {\n try {\n const link = await options.openLink();\n if (disposed) {\n link.close();\n throw new Error('The protocol client is disposed.');\n }\n current = link;\n link.onClose(() => {\n if (current !== link) return;\n current = undefined;\n emit('disconnected');\n });\n host.connect(link, {\n principal: { host: PO_SERVER_HOST },\n onProtocolMismatch: ({ local, peer }) =>\n reportError(\n new ChordError(\n 'upgrade_required',\n `The Po server speaks Chord protocol ${peer}, this client speaks ${local}.`,\n ),\n ),\n });\n if (!link.closed) emit('connected');\n } finally {\n connecting = undefined;\n }\n })();\n return connecting;\n },\n disconnect() {\n current?.close();\n },\n reportError,\n dispose() {\n if (disposed) return;\n disposed = true;\n current?.close();\n listeners.clear();\n void host.close().catch(() => undefined);\n },\n onConnectionStateChange(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n };\n}\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type } from 'typebox';\n\nimport { chordMethods, PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Json = Type.Unsafe<JsonValue>({});\n\nexport const ChannelFrameSchema = Type.Object({ type: Type.String({ minLength: 1 }), payload: Json });\n/** Latest payload per extension channel frame type. */\nexport const PoChannelsStateSchema = Type.Record(Type.String(), Json);\n\n/** A session's extension channels as seen by one connection. */\nexport const PoChannelsContract = remote('po.channels', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: Type.Object({ sessionId: Type.String({ minLength: 1 }) }),\n variants: {\n default: {\n state: { latest: PoChannelsStateSchema },\n methods: chordMethods({ receive: { args: ChannelFrameSchema } }),\n },\n },\n});\n\nexport type ChannelsRef = Ref<typeof PoChannelsContract>;\n","import type { JsonValue } from '@earendil-works/chord';\nimport type { Context } from '@earendil-works/chord/context';\nimport { type Static, type TSchema, Type } from 'typebox';\nimport { Check } from 'typebox/value';\n\nimport type { PoApiMount, PoApiScope } from './packageApi';\n\n/** The address is always exact. A workspace call never resolves to a global service. */\nexport const PoPluginMountSchema = Type.Union([\n Type.Object({ scope: Type.Literal('global') }, { additionalProperties: false }),\n Type.Object(\n { scope: Type.Literal('workspace'), workspaceId: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n ),\n Type.Object(\n { scope: Type.Literal('session'), sessionId: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n ),\n]);\n\nexport const PoPluginCallSchema = Type.Object(\n {\n mount: PoPluginMountSchema,\n service: Type.String({ minLength: 1 }),\n method: Type.String({ minLength: 1 }),\n input: Type.Unknown(),\n },\n { additionalProperties: false },\n);\n\nexport type PoPluginCall = Static<typeof PoPluginCallSchema>;\nexport type PoPluginDirection = 'client-to-server' | 'server-to-client';\nexport interface PoPluginCaller {\n /** Authenticated connection that owns client capabilities and leases. */\n connectionId?: string;\n /** Aborted when the authenticated browser connection closes. Never supplied over the wire. */\n signal?: AbortSignal;\n}\n\n/** Chord method shared by all authenticated Po clients. */\nexport interface PoPluginService {\n invoke(\n call: {\n mount: PoApiMount;\n service: string;\n method: string;\n input: JsonValue;\n },\n context: Context,\n ): Promise<JsonValue>;\n}\n\nexport interface PoPluginMethod<TInput extends TSchema, TOutput extends TSchema> {\n readonly service: string;\n readonly method: string;\n readonly scope: PoApiScope;\n readonly direction: PoPluginDirection;\n readonly input: TInput;\n readonly output: TOutput;\n}\n\nexport function definePoPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n definition: PoPluginMethod<TInput, TOutput>,\n): PoPluginMethod<TInput, TOutput> {\n if (!definition.service || !definition.method) throw new Error('Plugin service and method must be named.');\n return definition;\n}\n\nexport function poPluginMountKey(mount: PoApiMount): string {\n if (!Check(PoPluginMountSchema, mount)) throw new Error('Invalid plugin mount.');\n switch (mount.scope) {\n case 'global':\n return 'global';\n case 'workspace':\n return `workspace:${mount.workspaceId}`;\n case 'session':\n return `session:${mount.sessionId}`;\n }\n}\n\nexport class PoPluginCallError extends Error {\n constructor(\n readonly code: 'INVALID_CALL' | 'METHOD_NOT_FOUND' | 'INVALID_INPUT' | 'INVALID_OUTPUT',\n message: string,\n ) {\n super(message);\n this.name = 'PoPluginCallError';\n }\n}\n\nexport interface PoPluginRegistry {\n register<TInput extends TSchema, TOutput extends TSchema>(\n mount: PoApiMount,\n definition: PoPluginMethod<TInput, TOutput>,\n handler: (input: Static<TInput>, caller: PoPluginCaller) => Static<TOutput> | Promise<Static<TOutput>>,\n ): () => void;\n invoke(call: unknown, direction: PoPluginDirection, caller?: PoPluginCaller): Promise<unknown>;\n dispose(): void;\n}\n\n/** Transport-neutral dispatch, shared by Chord server services and client capability hosts. */\nexport function createPoPluginRegistry(): PoPluginRegistry {\n const handlers = new Map<\n string,\n {\n definition: PoPluginMethod<TSchema, TSchema>;\n handler: (input: never, caller: PoPluginCaller) => unknown;\n }\n >();\n let disposed = false;\n const keyOf = (mount: PoApiMount, service: string, method: string, direction: PoPluginDirection): string =>\n `${poPluginMountKey(mount)}\\0${direction}\\0${service}\\0${method}`;\n return {\n register(mount, definition, handler) {\n if (disposed) throw new Error('Plugin registry is disposed.');\n if (mount.scope !== definition.scope)\n throw new Error(`Method '${definition.service}.${definition.method}' requires ${definition.scope} scope.`);\n const key = keyOf(mount, definition.service, definition.method, definition.direction);\n if (handlers.has(key))\n throw new Error(`Plugin method '${definition.service}.${definition.method}' is already mounted.`);\n const entry = { definition, handler } as typeof handlers extends Map<string, infer TValue> ? TValue : never;\n handlers.set(key, entry);\n return () => {\n if (handlers.get(key) === entry) handlers.delete(key);\n };\n },\n async invoke(value, direction, caller = {}) {\n if (disposed) throw new Error('Plugin registry is disposed.');\n if (!Check(PoPluginCallSchema, value)) throw new PoPluginCallError('INVALID_CALL', 'Invalid plugin call.');\n const call = value as PoPluginCall;\n const entry = handlers.get(keyOf(call.mount, call.service, call.method, direction));\n if (!entry)\n throw new PoPluginCallError(\n 'METHOD_NOT_FOUND',\n `Plugin method '${call.service}.${call.method}' is not mounted at this scope.`,\n );\n if (!Check(entry.definition.input, call.input))\n throw new PoPluginCallError('INVALID_INPUT', `Invalid input for '${call.service}.${call.method}'.`);\n const output = await entry.handler(call.input as never, caller);\n if (!Check(entry.definition.output, output))\n throw new PoPluginCallError('INVALID_OUTPUT', `Invalid output from '${call.service}.${call.method}'.`);\n return output;\n },\n dispose() {\n disposed = true;\n handlers.clear();\n },\n };\n}\n\nexport async function invokePoPluginMethod<TInput extends TSchema, TOutput extends TSchema>(\n transport: (call: PoPluginCall) => Promise<unknown>,\n mount: PoApiMount,\n definition: PoPluginMethod<TInput, TOutput>,\n input: Static<TInput>,\n): Promise<Static<TOutput>> {\n if (mount.scope !== definition.scope)\n throw new Error(`Method '${definition.service}.${definition.method}' requires ${definition.scope} scope.`);\n if (!Check(definition.input, input))\n throw new PoPluginCallError('INVALID_INPUT', `Invalid input for '${definition.service}.${definition.method}'.`);\n const output = await transport({ mount, service: definition.service, method: definition.method, input });\n if (!Check(definition.output, output))\n throw new PoPluginCallError('INVALID_OUTPUT', `Invalid output from '${definition.service}.${definition.method}'.`);\n return output;\n}\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type, type Static } from 'typebox';\n\nimport type { HomeSnapshot } from './home';\nimport { SessionSummarySchema, WorkspaceSchema } from './httpApiContracts';\nimport { PoPluginCallSchema } from './pluginProtocol';\nimport { chordMethods, PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Text = Type.String();\nconst Json = Type.Unsafe<JsonValue>({});\n\n/** A live session frame every hub client needs (notification entries and agent dialogs) until it is acknowledged. */\nexport const HubNoticeSchema = Type.Object({ id: Text, sessionId: Text, frame: Type.Record(Text, Json) });\nexport type HubNotice = Static<typeof HubNoticeSchema>;\nexport type HubSessionView = Static<typeof SessionSummarySchema>;\nexport type HubWorkspaceView = Static<typeof WorkspaceSchema>;\n\nconst HubState = {\n sessions: Type.Record(Text, SessionSummarySchema),\n workspaces: Type.Record(Text, WorkspaceSchema),\n pending: Type.Array(HubNoticeSchema),\n};\nexport const PoHubStateSchema = Type.Object(HubState);\n\n/** What one connection may see: its sessions, its workspaces, and the notices it has not acknowledged. */\nexport const PoHubContract = remote('po.hub', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: Type.Object({}),\n variants: {\n default: {\n state: HubState,\n methods: chordMethods({\n readHome: {\n args: Type.Object({\n offset: Type.Optional(Type.Integer({ minimum: 0 })),\n limit: Type.Optional(Type.Integer({ minimum: 1 })),\n source: Type.Optional(Text),\n workspaceId: Type.Optional(Text),\n }),\n result: Type.Unsafe<HomeSnapshot>({}),\n },\n invoke: { args: PoPluginCallSchema, result: Json },\n ackNotice: { args: Type.Object({ id: Text }) },\n }),\n },\n },\n});\n\nexport type HubRef = Ref<typeof PoHubContract>;\n","import { hostNamed, remote, type Ref } from '@earendil-works/chord';\nimport { Type } from 'typebox';\n\nimport { PO_SERVER_HOST } from './protocolContracts';\nimport type { JsonValue } from './sessionProtocol';\n\n/** The thread's latest frame: `transcript_state` while its child runs, `transcript_ready` once it has finished. */\nexport const PoThreadFrameSchema = Type.Union([\n Type.Null(),\n Type.Intersect([Type.Object({ type: Type.String() }), Type.Record(Type.String(), Type.Unsafe<JsonValue>({}))]),\n]);\n\n/** One child thread of a session, followed only while someone holds it. */\nexport const PoThreadContract = remote('po.thread', {\n version: 1,\n host: hostNamed(PO_SERVER_HOST),\n input: Type.Object({ sessionId: Type.String({ minLength: 1 }), threadId: Type.String({ minLength: 1 }) }),\n variants: {\n default: { state: { frame: PoThreadFrameSchema } },\n },\n});\n\nexport type ThreadRef = Ref<typeof PoThreadContract>;\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoSocketContract } from './apiContracts';\nimport { ChannelFrameSchema, PoChannelsStateSchema } from './protocolChannelsContract';\nimport { chordMethods, type PoMethodSchemas } from './protocolContracts';\nimport { PoHubStateSchema } from './protocolHubContract';\nimport { PoThreadFrameSchema } from './protocolThreadContract';\nimport type { JsonValue } from './sessionProtocol';\n\nconst Text = Type.String();\nconst NumberValue = Type.Number();\nconst Flag = Type.Boolean();\nconst Json = Type.Unsafe<JsonValue>(\n Type.Unknown({\n description:\n 'Strict JSON application value supplied by the active tool, journal entry, or extension; validated by the Pi codec.',\n }),\n);\nconst Optional = Type.Optional;\nconst Strings = Type.Array(Text);\nconst Model = Type.Object({ provider: Text, id: Text });\nconst Thinking = Type.Union([\n Type.Literal('off'),\n Type.Literal('minimal'),\n Type.Literal('low'),\n Type.Literal('medium'),\n Type.Literal('high'),\n Type.Literal('max'),\n Type.Literal('xhigh'),\n]);\nconst Phase = Type.Union([\n Type.Literal('idle'),\n Type.Literal('turn'),\n Type.Literal('compaction'),\n Type.Literal('retry'),\n]);\nconst Image = Type.Object({ type: Type.Literal('image'), data: Text, mimeType: Text });\nconst TextPart = Type.Object({ type: Type.Literal('text'), text: Text });\nconst ThinkingPart = Type.Object({\n type: Type.Literal('thinking'),\n thinking: Text,\n redacted: Optional(Type.Literal(true)),\n});\nconst Content = Type.Union([Image, TextPart]);\nconst Usage = Type.Object({\n input: NumberValue,\n output: NumberValue,\n cacheRead: NumberValue,\n cacheWrite: NumberValue,\n total: NumberValue,\n});\nconst Message = Type.Object({ text: Text, images: Optional(Type.Array(Image)) });\nconst Lifecycle = Type.Object({\n revision: NumberValue,\n operation: Type.Union([\n Type.Null(),\n Type.Object({\n id: Text,\n kind: Type.Union([Type.Literal('run'), Type.Literal('compaction'), Type.Literal('navigation')]),\n status: Type.Union([Type.Literal('open'), Type.Literal('aborting')]),\n }),\n ]),\n paused: Flag,\n queue: Type.Array(\n Type.Object({\n id: Text,\n text: Text,\n images: Optional(Type.Array(Image)),\n delivery: Type.Union([Type.Literal('steer'), Type.Literal('followUp'), Type.Literal('nextRun')]),\n scheduling: Type.Union([Type.Literal('automatic'), Type.Literal('held')]),\n disposition: Type.Union([Type.Literal('pending'), Type.Literal('handoff')]),\n }),\n ),\n});\nconst Frame = Type.Intersect([Type.Object({ type: Text }), Type.Record(Text, Json)], {\n description: 'Discriminated extension presentation frame; selected channel schemas describe package payloads.',\n});\nconst ProtocolEvent = Type.Object({ sequence: NumberValue, frame: Frame });\nexport const SessionServiceStateSchema = Type.Object({\n snapshot: Type.Object({\n fastMode: Flag,\n locked: Flag,\n lifecycle: Optional(Lifecycle),\n }),\n presentation: Optional(\n Type.Object({\n revision: NumberValue,\n dropped: NumberValue,\n resetRevision: Optional(NumberValue),\n events: Type.Array(ProtocolEvent),\n projections: Type.Array(ProtocolEvent),\n }),\n ),\n live: Optional(\n Type.Object({\n phase: Phase,\n message: Optional(\n Type.Object({\n role: Type.Literal('assistant'),\n content: Type.Array(Type.Union([TextPart, ThinkingPart])),\n model: Text,\n timestamp: NumberValue,\n }),\n ),\n tools: Type.Record(\n Text,\n Type.Object({\n toolCallId: Text,\n toolName: Text,\n args: Json,\n partialResult: Optional(Type.Object({ content: Type.Array(Content), details: Optional(Json) })),\n }),\n ),\n }),\n ),\n});\n/** Argument and result schemas of the `po.session` methods; the Chord contract and the API docs both read them. */\nexport const SessionMethodSchemas = {\n readTranscriptPage: {\n args: Type.Object({\n cursor: Optional(Text),\n direction: Optional(Type.Union([Type.Literal('older'), Type.Literal('newer')])),\n limit: Optional(NumberValue),\n threadId: Optional(Text),\n }),\n result: Type.Object({\n entries: Type.Array(Json),\n startCursor: Type.Union([Text, Type.Null()]),\n endCursor: Type.Union([Text, Type.Null()]),\n olderCursor: Type.Union([Text, Type.Null()]),\n newerCursor: Type.Union([Text, Type.Null()]),\n generation: NumberValue,\n revision: NumberValue,\n context: Type.Array(Json),\n }),\n },\n prompt: {\n args: Type.Union([\n Text,\n Type.Object({\n ...Message.properties,\n waitFor: Optional(Type.Union([Type.Literal('accepted'), Type.Literal('settled')])),\n }),\n ]),\n },\n steer: { args: Type.Union([Text, Message]) },\n abort: {},\n abortOperation: { args: Type.Object({ operationId: Text }) },\n setModel: { args: Model },\n setThinking: { args: Thinking },\n setFastMode: { args: Flag },\n setAgentLock: { args: Flag },\n followUp: { args: Message },\n enqueueAutomatic: { args: Message, result: Type.Object({ id: Text }) },\n removeQueued: {\n args: Type.Object({ id: Text }),\n result: Type.Union([\n Type.Literal('removed'),\n Type.Literal('in_flight'),\n Type.Literal('already_consumed'),\n Type.Literal('not_found'),\n ]),\n },\n promoteQueued: {\n args: Type.Object({ id: Text, operationId: Optional(Text) }),\n result: Type.Union([\n Type.Literal('promoted'),\n Type.Literal('in_flight'),\n Type.Literal('target_changed'),\n Type.Literal('not_found'),\n ]),\n },\n resumeQueue: {},\n clearQueue: { result: Type.Object({ steering: Strings, followUp: Strings }) },\n rewind: {\n args: Type.Object({\n itemId: Text,\n summarize: Optional(Flag),\n customInstructions: Optional(Text),\n replaceInstructions: Optional(Flag),\n label: Optional(Text),\n }),\n result: Type.Object({\n editorText: Optional(Text),\n cancelled: Flag,\n aborted: Optional(Flag),\n summaryEntry: Optional(\n Type.Object({\n id: Text,\n parentId: Type.Union([Text, Type.Null()]),\n timestamp: Text,\n fromId: Text,\n summary: Text,\n details: Optional(Json),\n usage: Optional(Usage),\n fromHook: Optional(Flag),\n }),\n ),\n }),\n },\n extensionUiResponse: {\n args: Type.Union([\n Type.Object({ id: Text, value: Text }),\n Type.Object({ id: Text, confirmed: Flag }),\n Type.Object({ id: Text, cancelled: Type.Literal(true) }),\n ]),\n },\n getState: {\n result: Type.Object({\n model: Optional(Model),\n thinkingLevel: Thinking,\n fastMode: Flag,\n agentLocked: Optional(Flag),\n isStreaming: Flag,\n isCompacting: Flag,\n steeringMode: Type.Union([Type.Literal('all'), Type.Literal('one-at-a-time')]),\n followUpMode: Type.Union([Type.Literal('all'), Type.Literal('one-at-a-time')]),\n sessionId: Text,\n sessionName: Optional(Text),\n autoCompactionEnabled: Flag,\n messageCount: NumberValue,\n pendingMessageCount: NumberValue,\n operationId: Optional(Text),\n executionStatus: Optional(Type.Union([Type.Literal('open'), Type.Literal('aborting')])),\n queuePaused: Optional(Flag),\n queueRevision: Optional(NumberValue),\n }),\n },\n getSessionStats: {\n result: Type.Object({\n sessionId: Text,\n totalMessages: NumberValue,\n tokens: Usage,\n cost: NumberValue,\n contextUsage: Optional(\n Type.Object({\n tokens: Type.Union([NumberValue, Type.Null()]),\n contextWindow: NumberValue,\n percent: Type.Union([NumberValue, Type.Null()]),\n }),\n ),\n }),\n },\n getCommands: {\n result: Type.Array(\n Type.Object({\n name: Text,\n description: Optional(Text),\n source: Type.Union([Type.Literal('extension'), Type.Literal('prompt'), Type.Literal('skill')]),\n sourceInfo: Optional(\n Type.Object({\n path: Text,\n source: Text,\n scope: Type.Union([Type.Literal('user'), Type.Literal('project'), Type.Literal('temporary')]),\n origin: Type.Union([Type.Literal('package'), Type.Literal('top-level')]),\n baseDir: Optional(Text),\n }),\n ),\n }),\n ),\n },\n getAvailableModels: { result: Type.Array(Model) },\n getAvailableThinkingLevels: { result: Type.Array(Thinking) },\n compact: { args: Type.Object({ customInstructions: Optional(Text) }), result: Json },\n setName: { args: Text },\n setGroups: { args: Type.Array(Text) },\n};\n/** The `po.session` methods as Chord specs. */\nexport const SessionMethods = chordMethods(SessionMethodSchemas);\n\nconst ErrorSchema = Type.Object({ code: Text, message: Text });\nconst documented = (\n id: string,\n service: string,\n member: string,\n direction: PoSocketContract['direction'],\n input: TSchema,\n description: string,\n): PoSocketContract => ({\n id,\n scope: service === 'po.hub' ? 'global' : 'session',\n service,\n member,\n direction,\n kind: direction === 'server-to-client' ? 'state' : 'method',\n input,\n ...(direction === 'server-to-client' ? {} : { errors: ErrorSchema }),\n description,\n});\nexport const sessionSocketContracts: PoSocketContract[] = [\n ...Object.entries<PoMethodSchemas>(SessionMethodSchemas).map(([member, { args, result }]): PoSocketContract => ({\n id: `session.${member}`,\n scope: 'session',\n service: 'po.session',\n member,\n direction: 'client-to-server',\n kind: 'method',\n description: `Session ${member}. The Chord call carries the argument; a void result is null.`,\n input: Type.Tuple(args === undefined ? [] : ([args] as TSchema[])),\n ...(result === undefined ? {} : { output: result }),\n errors: ErrorSchema,\n })),\n documented(\n 'session.state',\n 'po.session',\n 'state',\n 'server-to-client',\n SessionServiceStateSchema,\n 'The `state` member of `po.session`, reconstructed from Chord snapshot and delta frames.',\n ),\n documented(\n 'hub.state',\n 'po.hub',\n 'state',\n 'server-to-client',\n PoHubStateSchema,\n 'Sessions and workspaces this connection may see, and notices it has not acknowledged.',\n ),\n documented(\n 'thread.frame',\n 'po.thread',\n 'frame',\n 'server-to-client',\n PoThreadFrameSchema,\n 'The latest frame of one child thread: transcript_state while it runs, transcript_ready once finished.',\n ),\n documented(\n 'channels.latest',\n 'po.channels',\n 'latest',\n 'server-to-client',\n PoChannelsStateSchema,\n 'The latest payload of each extension channel frame type for one session.',\n ),\n documented(\n 'channels.receive',\n 'po.channels',\n 'receive',\n 'client-to-server',\n Type.Tuple([ChannelFrameSchema]),\n 'Send one extension channel frame to the session.',\n ),\n];\n","import { Type, type TSchema } from 'typebox';\n\nimport type { PoSocketContract } from './apiContracts';\nimport { PoPluginCallSchema } from './pluginProtocol';\n\n/** The Chord release whose link frames this file describes (link protocol 4). */\nexport const CHORD_WIRE_VERSION = '1.3.0';\n\nconst S = Type.String({ minLength: 1 });\nconst Json = Type.Unknown({\n description: 'JSON value; its application shape is defined by the addressed contract member.',\n});\nconst Id = Type.Integer({ minimum: 1 });\nconst ErrorCode = Type.Union(\n [\n 'aborted',\n 'contract_mismatch',\n 'forbidden',\n 'gone',\n 'invalid',\n 'not_in_variant',\n 'not_ready',\n 'released',\n 'superseded',\n 'unavailable',\n 'upgrade_conflict',\n 'upgrade_required',\n ].map((code) => Type.Literal(code)),\n);\nconst WireError = Type.Object({ code: ErrorCode, message: Type.String(), reason: Type.Optional(Type.String()) });\nconst Segment = Type.Union([Type.String(), Type.Integer({ minimum: 0 })]);\nconst Path = Type.Array(Segment);\nconst PathRef = Type.Union([Path, Type.Integer({ minimum: 0 })]);\nconst NonemptyPathRef = Type.Union([Type.Array(Segment, { minItems: 1 }), Type.Integer({ minimum: 0 })]);\nconst Index = Type.Integer({ minimum: 0 });\nexport const ChordWireOpSchema = Type.Union(\n [\n Type.Tuple([Type.Literal('r'), Json]),\n Type.Tuple([Type.Literal('s'), NonemptyPathRef, Json]),\n Type.Tuple([Type.Literal('s'), Json]),\n Type.Tuple([Type.Literal('d'), NonemptyPathRef]),\n Type.Tuple([Type.Literal('d')]),\n Type.Tuple([Type.Literal('a'), NonemptyPathRef, Type.String()]),\n Type.Tuple([Type.Literal('a'), Type.String()]),\n Type.Tuple([Type.Literal('t'), NonemptyPathRef, Index]),\n Type.Tuple([Type.Literal('t'), Index]),\n Type.Tuple([Type.Literal('p'), PathRef, Index, Index, Type.Array(Json)]),\n Type.Tuple([Type.Literal('p'), Index, Index, Type.Array(Json)]),\n Type.Tuple([Type.Literal('m'), PathRef, Type.Array(Index)]),\n Type.Tuple([Type.Literal('m'), Type.Array(Index)]),\n Type.Tuple([Type.Literal('#'), Index, Path]),\n ],\n {\n description:\n 'Chord delta tuples. Path dictionary references and omitted paths depend on earlier operations in this subscription; decode with the Chord delta decoder.',\n },\n);\nconst Hello = (kind: TSchema) =>\n Type.Object({\n t: Type.Literal('hello'),\n protocol: Type.Optional(Type.Integer({ minimum: 1 })),\n name: Type.String(),\n kind,\n codeVersion: Type.Integer({ minimum: 0 }),\n acks: Type.Optional(Type.Boolean()),\n });\nconst Ack = Type.Object({ t: Type.Literal('ack'), n: Type.Integer({ minimum: 1 }) });\nconst Ping = Type.Object({ t: Type.Literal('ping'), n: Type.Integer() });\nconst Pong = Type.Object({ t: Type.Literal('pong'), n: Type.Integer() });\nconst Bye = Type.Object({ t: Type.Literal('bye'), reason: Type.Optional(Type.String()) });\n\n/** Frames a client (browser or native app) sends on its link. */\nexport const ChordClientFrameSchema = Type.Union([\n Hello(Type.Literal('client')),\n Ack,\n Type.Object({\n t: Type.Literal('hold'),\n id: Id,\n at: Type.String(),\n token: Json,\n input: Json,\n state: Type.Optional(Type.Literal(false)),\n again: Type.Optional(Type.Literal(true)),\n }),\n Type.Object({ t: Type.Literal('release'), id: Id }),\n Type.Object({ t: Type.Literal('call'), id: Id, hold: Id, member: S, args: Type.Optional(Json) }),\n Type.Object({ t: Type.Literal('cancel'), id: Id }),\n Type.Object({ t: Type.Literal('sub'), hold: Id }),\n Type.Object({ t: Type.Literal('unsub'), hold: Id }),\n Type.Object({ t: Type.Literal('root_end'), rootId: Type.String() }),\n Ping,\n Pong,\n Bye,\n]);\n\n/** Frames the Po server sends to a client link. */\nexport const ChordServerFrameSchema = Type.Union([\n Hello(Type.String()),\n Ack,\n Type.Object({\n t: Type.Literal('shape'),\n id: Id,\n variant: Type.Optional(Type.String()),\n members: Type.Array(Type.String()),\n contract: Type.String(),\n state: Type.Array(S),\n }),\n Type.Object({ t: Type.Literal('gone'), id: Id, error: WireError }),\n Type.Object({ t: Type.Literal('result'), id: Id, value: Type.Optional(Json), error: Type.Optional(WireError) }),\n Type.Object({\n t: Type.Literal('state'),\n hold: Id,\n m: S,\n as: Type.Union([Type.Literal('snap'), Type.Literal('reset'), Type.Literal('ops'), Type.Literal('error')]),\n value: Type.Optional(Json),\n ops: Type.Optional(Type.Array(ChordWireOpSchema)),\n error: Type.Optional(WireError),\n }),\n Ping,\n Pong,\n Bye,\n]);\n\nexport const transportSocketContracts: PoSocketContract[] = [\n {\n id: 'chord.client',\n scope: 'global',\n service: '$chord',\n member: 'client',\n direction: 'client-to-server',\n kind: 'channel',\n input: ChordClientFrameSchema,\n description: `Chord ${CHORD_WIRE_VERSION} link frame, one JSON text message each, sealed for remote delivery. Hold \\`po.hub\\` ({}) and \\`po.session\\` ({ sessionId }) at host \\`server\\`.`,\n },\n {\n id: 'chord.server',\n scope: 'global',\n service: '$chord',\n member: 'server',\n direction: 'server-to-client',\n kind: 'channel',\n input: ChordServerFrameSchema,\n description: 'Chord link frame. Results correlate by call id; state frames by hold id and member.',\n },\n {\n id: 'plugin.invoke',\n scope: 'global',\n service: 'po.hub',\n member: 'invoke',\n direction: 'client-to-server',\n kind: 'method',\n input: PoPluginCallSchema,\n output: Json,\n errors: WireError,\n description: 'Invoke the selected scoped plugin method. Its declaration supplies input and output shapes.',\n },\n];\n","import { defineApiContract } from './apiContracts';\nimport { headlessHttpContracts, machineHttpContracts, sessionHttpContracts } from './httpApiContracts';\nimport {\n SealedEnvelopeSchema,\n SealedHttpRequestSchema,\n SealedHttpResponseSchema,\n remoteHttpContracts,\n bundleHttpContracts,\n} from './remoteApiContracts';\nimport { sessionSocketContracts } from './sessionApiContracts';\nimport { CHORD_WIRE_VERSION, transportSocketContracts } from './transportApiContracts';\n\nexport const builtinApiContract = defineApiContract({\n version: 1,\n schemas: {\n SealedEnvelope: SealedEnvelopeSchema,\n SealedHttpRequest: SealedHttpRequestSchema,\n SealedHttpResponse: SealedHttpResponseSchema,\n },\n protocols: { chord: CHORD_WIRE_VERSION, sealed: '1' },\n http: [\n ...headlessHttpContracts,\n ...machineHttpContracts,\n ...sessionHttpContracts,\n ...remoteHttpContracts,\n ...bundleHttpContracts,\n ],\n sockets: [...sessionSocketContracts, ...transportSocketContracts],\n dynamic: [\n 'WebAuthn options and credential responses follow the installed WebAuthn implementation.',\n 'Tool inputs/results and journal entries contain runtime-defined JSON.',\n 'Selected channel and presentation payload schemas are contributed by their owning package.',\n ],\n});\n"],"mappings":"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"}
|