@agimon-ai/po-core 0.0.0-alpha.0
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 +21 -0
- package/README.md +7 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/agentModel.cjs +4 -0
- package/dist/agentModel.d.mts +2 -0
- package/dist/agentModel.mjs +2 -0
- package/dist/apiContracts.cjs +2094 -0
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/apiContracts.d.mts +1086 -0
- package/dist/apiContracts.d.mts.map +1 -0
- package/dist/apiContracts.mjs +2074 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/askUser.cjs +8 -0
- package/dist/askUser.d.mts +2 -0
- package/dist/askUser.mjs +2 -0
- package/dist/authorTools.cjs +5 -0
- package/dist/authorTools.d.mts +2 -0
- package/dist/authorTools.mjs +2 -0
- package/dist/backgroundWork.cjs +9 -0
- package/dist/backgroundWork.d.mts +2 -0
- package/dist/backgroundWork.mjs +2 -0
- package/dist/bundleAssetPolicy.cjs +5 -0
- package/dist/bundleAssetPolicy.d.mts +2 -0
- package/dist/bundleAssetPolicy.mjs +2 -0
- package/dist/childProcess.cjs +15 -0
- package/dist/childProcess.d.mts +2 -0
- package/dist/childProcess.mjs +2 -0
- package/dist/childSession.cjs +9 -0
- package/dist/childSession.d.mts +3 -0
- package/dist/childSession.mjs +3 -0
- package/dist/cockpitContainer.cjs +4 -0
- package/dist/cockpitContainer.d.mts +2 -0
- package/dist/cockpitContainer.mjs +2 -0
- package/dist/config.cjs +13 -0
- package/dist/config.d.mts +3 -0
- package/dist/config.mjs +2 -0
- package/dist/contextApi.cjs +12 -0
- package/dist/contextApi.d.mts +4 -0
- package/dist/contextApi.mjs +3 -0
- package/dist/contextContributions.cjs +7 -0
- package/dist/contextContributions.d.mts +3 -0
- package/dist/contextContributions.mjs +3 -0
- package/dist/contextDetail.cjs +65 -0
- package/dist/contextDetail.cjs.map +1 -0
- package/dist/contextDetail.d.mts +19 -0
- package/dist/contextDetail.d.mts.map +1 -0
- package/dist/contextDetail.mjs +64 -0
- package/dist/contextDetail.mjs.map +1 -0
- package/dist/contextDetailStore.cjs +96 -0
- package/dist/contextDetailStore.cjs.map +1 -0
- package/dist/contextDetailStore.d.mts +21 -0
- package/dist/contextDetailStore.d.mts.map +1 -0
- package/dist/contextDetailStore.mjs +87 -0
- package/dist/contextDetailStore.mjs.map +1 -0
- package/dist/contextProjection.cjs +121 -0
- package/dist/contextProjection.cjs.map +1 -0
- package/dist/contextProjection.d.mts +130 -0
- package/dist/contextProjection.d.mts.map +1 -0
- package/dist/contextProjection.mjs +117 -0
- package/dist/contextProjection.mjs.map +1 -0
- package/dist/cordisHost.cjs +13 -0
- package/dist/cordisHost.d.mts +2 -0
- package/dist/cordisHost.mjs +2 -0
- package/dist/delegation.cjs +18 -0
- package/dist/delegation.d.mts +2 -0
- package/dist/delegation.mjs +2 -0
- package/dist/doomPackage.cjs +61 -0
- package/dist/doomPackage.cjs.map +1 -0
- package/dist/doomPackage.d.mts +17 -0
- package/dist/doomPackage.d.mts.map +1 -0
- package/dist/doomPackage.mjs +54 -0
- package/dist/doomPackage.mjs.map +1 -0
- package/dist/executionBudget.cjs +232 -0
- package/dist/executionBudget.cjs.map +1 -0
- package/dist/executionBudget.d.mts +11 -0
- package/dist/executionBudget.d.mts.map +1 -0
- package/dist/executionBudget.mjs +226 -0
- package/dist/executionBudget.mjs.map +1 -0
- package/dist/extensionFile.cjs +19 -0
- package/dist/extensionFile.d.mts +3 -0
- package/dist/extensionFile.mjs +2 -0
- package/dist/footer.cjs +6 -0
- package/dist/footer.d.mts +2 -0
- package/dist/footer.mjs +2 -0
- package/dist/headless.cjs +16 -0
- package/dist/headless.d.mts +2 -0
- package/dist/headless.mjs +2 -0
- package/dist/headlessHub.cjs +1008 -0
- package/dist/headlessHub.cjs.map +1 -0
- package/dist/headlessHub.d.mts +176 -0
- package/dist/headlessHub.d.mts.map +1 -0
- package/dist/headlessHub.mjs +1005 -0
- package/dist/headlessHub.mjs.map +1 -0
- package/dist/headlessServer.cjs +956 -0
- package/dist/headlessServer.cjs.map +1 -0
- package/dist/headlessServer.d.mts +66 -0
- package/dist/headlessServer.d.mts.map +1 -0
- package/dist/headlessServer.mjs +949 -0
- package/dist/headlessServer.mjs.map +1 -0
- package/dist/headlessSessionHost.cjs +0 -0
- package/dist/headlessSessionHost.d.mts +89 -0
- package/dist/headlessSessionHost.d.mts.map +1 -0
- package/dist/headlessSessionHost.mjs +1 -0
- package/dist/headlessSessionManager.cjs +51 -0
- package/dist/headlessSessionManager.cjs.map +1 -0
- package/dist/headlessSessionManager.d.mts +6 -0
- package/dist/headlessSessionManager.d.mts.map +1 -0
- package/dist/headlessSessionManager.mjs +50 -0
- package/dist/headlessSessionManager.mjs.map +1 -0
- package/dist/help.cjs +24 -0
- package/dist/help.d.mts +3 -0
- package/dist/help.mjs +3 -0
- package/dist/history.cjs +25 -0
- package/dist/history.d.mts +10 -0
- package/dist/history.mjs +10 -0
- package/dist/historyOwnership.cjs +253 -0
- package/dist/historyOwnership.cjs.map +1 -0
- package/dist/historyOwnership.d.mts +23 -0
- package/dist/historyOwnership.d.mts.map +1 -0
- package/dist/historyOwnership.mjs +247 -0
- package/dist/historyOwnership.mjs.map +1 -0
- package/dist/hubChannel.cjs +4 -0
- package/dist/hubChannel.d.mts +2 -0
- package/dist/hubChannel.mjs +2 -0
- package/dist/index.cjs +44 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.mjs +6 -0
- package/dist/json.cjs +6 -0
- package/dist/json.d.mts +2 -0
- package/dist/json.mjs +2 -0
- package/dist/jsonlSessionRepo.cjs +44 -0
- package/dist/jsonlSessionRepo.cjs.map +1 -0
- package/dist/jsonlSessionRepo.d.mts +7 -0
- package/dist/jsonlSessionRepo.d.mts.map +1 -0
- package/dist/jsonlSessionRepo.mjs +42 -0
- package/dist/jsonlSessionRepo.mjs.map +1 -0
- package/dist/kernel.cjs +3 -0
- package/dist/kernel.d.mts +3 -0
- package/dist/kernel.mjs +2 -0
- package/dist/leader.cjs +9 -0
- package/dist/leader.d.mts +2 -0
- package/dist/leader.mjs +2 -0
- package/dist/logSinkTelemetry.cjs +5 -0
- package/dist/logSinkTelemetry.d.mts +2 -0
- package/dist/logSinkTelemetry.mjs +2 -0
- package/dist/machineApi.cjs +92 -0
- package/dist/machineApi.cjs.map +1 -0
- package/dist/machineApi.d.mts +7 -0
- package/dist/machineApi.d.mts.map +1 -0
- package/dist/machineApi.mjs +88 -0
- package/dist/machineApi.mjs.map +1 -0
- package/dist/main.cjs +11 -0
- package/dist/main.d.mts +5 -0
- package/dist/main.mjs +4 -0
- package/dist/mcpFacet.cjs +9 -0
- package/dist/mcpFacet.d.mts +4 -0
- package/dist/mcpFacet.mjs +3 -0
- package/dist/mcpProjection.cjs +16 -0
- package/dist/mcpProjection.d.mts +2 -0
- package/dist/mcpProjection.mjs +2 -0
- package/dist/mcpSchemaCost.cjs +195 -0
- package/dist/mcpSchemaCost.cjs.map +1 -0
- package/dist/mcpSchemaCost.d.mts +35 -0
- package/dist/mcpSchemaCost.d.mts.map +1 -0
- package/dist/mcpSchemaCost.mjs +190 -0
- package/dist/mcpSchemaCost.mjs.map +1 -0
- package/dist/mcpSession.cjs +9 -0
- package/dist/mcpSession.d.mts +2 -0
- package/dist/mcpSession.mjs +2 -0
- package/dist/mcpStatus.cjs +7 -0
- package/dist/mcpStatus.d.mts +2 -0
- package/dist/mcpStatus.mjs +2 -0
- package/dist/mcpToolResolver.cjs +5 -0
- package/dist/mcpToolResolver.d.mts +2 -0
- package/dist/mcpToolResolver.mjs +2 -0
- package/dist/mcpWidget.cjs +0 -0
- package/dist/mcpWidget.d.mts +2 -0
- package/dist/mcpWidget.mjs +1 -0
- package/dist/moduleResolution.cjs +412 -0
- package/dist/moduleResolution.cjs.map +1 -0
- package/dist/moduleResolution.d.mts +72 -0
- package/dist/moduleResolution.d.mts.map +1 -0
- package/dist/moduleResolution.mjs +396 -0
- package/dist/moduleResolution.mjs.map +1 -0
- package/dist/narration.cjs +10 -0
- package/dist/narration.d.mts +2 -0
- package/dist/narration.mjs +2 -0
- package/dist/native.cjs +29 -0
- package/dist/native.d.mts +12 -0
- package/dist/native.mjs +8 -0
- package/dist/notification.cjs +17 -0
- package/dist/notification.d.mts +2 -0
- package/dist/notification.mjs +2 -0
- package/dist/packageApi.cjs +17 -0
- package/dist/packageApi.d.mts +3 -0
- package/dist/packageApi.mjs +3 -0
- package/dist/packageApiServer.cjs +196 -0
- package/dist/packageApiServer.cjs.map +1 -0
- package/dist/packageApiServer.d.mts +62 -0
- package/dist/packageApiServer.d.mts.map +1 -0
- package/dist/packageApiServer.mjs +194 -0
- package/dist/packageApiServer.mjs.map +1 -0
- package/dist/piSettings.cjs +20 -0
- package/dist/piSettings.d.mts +2 -0
- package/dist/piSettings.mjs +2 -0
- package/dist/pluginProtocol.cjs +10 -0
- package/dist/pluginProtocol.d.mts +2 -0
- package/dist/pluginProtocol.mjs +2 -0
- package/dist/profileIdentity.cjs +6 -0
- package/dist/profileIdentity.d.mts +2 -0
- package/dist/profileIdentity.mjs +2 -0
- package/dist/protocol.cjs +10 -0
- package/dist/protocol.d.mts +2 -0
- package/dist/protocol.mjs +2 -0
- package/dist/readiness.cjs +8 -0
- package/dist/readiness.d.mts +2 -0
- package/dist/readiness.mjs +2 -0
- package/dist/remoteApi.cjs +45 -0
- package/dist/remoteApi.cjs.map +1 -0
- package/dist/remoteApi.d.mts +7 -0
- package/dist/remoteApi.d.mts.map +1 -0
- package/dist/remoteApi.mjs +44 -0
- package/dist/remoteApi.mjs.map +1 -0
- package/dist/remoteRuntime.cjs +498 -0
- package/dist/remoteRuntime.cjs.map +1 -0
- package/dist/remoteRuntime.d.mts +36 -0
- package/dist/remoteRuntime.d.mts.map +1 -0
- package/dist/remoteRuntime.mjs +494 -0
- package/dist/remoteRuntime.mjs.map +1 -0
- package/dist/runtimeConfig.cjs +232 -0
- package/dist/runtimeConfig.cjs.map +1 -0
- package/dist/runtimeConfig.d.mts +313 -0
- package/dist/runtimeConfig.d.mts.map +1 -0
- package/dist/runtimeConfig.mjs +221 -0
- package/dist/runtimeConfig.mjs.map +1 -0
- package/dist/runtimeContextApi.cjs +64 -0
- package/dist/runtimeContextApi.cjs.map +1 -0
- package/dist/runtimeContextApi.d.mts +16 -0
- package/dist/runtimeContextApi.d.mts.map +1 -0
- package/dist/runtimeContextApi.mjs +62 -0
- package/dist/runtimeContextApi.mjs.map +1 -0
- package/dist/runtimeCordisHost.cjs +223 -0
- package/dist/runtimeCordisHost.cjs.map +1 -0
- package/dist/runtimeCordisHost.d.mts +78 -0
- package/dist/runtimeCordisHost.d.mts.map +1 -0
- package/dist/runtimeCordisHost.mjs +212 -0
- package/dist/runtimeCordisHost.mjs.map +1 -0
- package/dist/runtimeHeadlessSessionManager.cjs +0 -0
- package/dist/runtimeHeadlessSessionManager.d.mts +18 -0
- package/dist/runtimeHeadlessSessionManager.d.mts.map +1 -0
- package/dist/runtimeHeadlessSessionManager.mjs +1 -0
- package/dist/runtimeIdentity.cjs +26 -0
- package/dist/runtimeIdentity.cjs.map +1 -0
- package/dist/runtimeIdentity.d.mts +7 -0
- package/dist/runtimeIdentity.d.mts.map +1 -0
- package/dist/runtimeIdentity.mjs +21 -0
- package/dist/runtimeIdentity.mjs.map +1 -0
- package/dist/runtimeJson.cjs +46 -0
- package/dist/runtimeJson.cjs.map +1 -0
- package/dist/runtimeJson.d.mts +22 -0
- package/dist/runtimeJson.d.mts.map +1 -0
- package/dist/runtimeJson.mjs +39 -0
- package/dist/runtimeJson.mjs.map +1 -0
- package/dist/runtimeLogSinkTelemetry.cjs +102 -0
- package/dist/runtimeLogSinkTelemetry.cjs.map +1 -0
- package/dist/runtimeLogSinkTelemetry.d.mts +49 -0
- package/dist/runtimeLogSinkTelemetry.d.mts.map +1 -0
- package/dist/runtimeLogSinkTelemetry.mjs +99 -0
- package/dist/runtimeLogSinkTelemetry.mjs.map +1 -0
- package/dist/runtimePackages.cjs +120 -0
- package/dist/runtimePackages.cjs.map +1 -0
- package/dist/runtimePackages.d.mts +57 -0
- package/dist/runtimePackages.d.mts.map +1 -0
- package/dist/runtimePackages.mjs +110 -0
- package/dist/runtimePackages.mjs.map +1 -0
- package/dist/runtimePiSettings.cjs +257 -0
- package/dist/runtimePiSettings.cjs.map +1 -0
- package/dist/runtimePiSettings.d.mts +70 -0
- package/dist/runtimePiSettings.d.mts.map +1 -0
- package/dist/runtimePiSettings.mjs +235 -0
- package/dist/runtimePiSettings.mjs.map +1 -0
- package/dist/runtimeProtocol.cjs +228 -0
- package/dist/runtimeProtocol.cjs.map +1 -0
- package/dist/runtimeProtocol.d.mts +86 -0
- package/dist/runtimeProtocol.d.mts.map +1 -0
- package/dist/runtimeProtocol.mjs +219 -0
- package/dist/runtimeProtocol.mjs.map +1 -0
- package/dist/runtimeToolNames.cjs +51 -0
- package/dist/runtimeToolNames.cjs.map +1 -0
- package/dist/runtimeToolNames.d.mts +24 -0
- package/dist/runtimeToolNames.d.mts.map +1 -0
- package/dist/runtimeToolNames.mjs +49 -0
- package/dist/runtimeToolNames.mjs.map +1 -0
- package/dist/runtimeTransition.cjs +27 -0
- package/dist/runtimeTransition.cjs.map +1 -0
- package/dist/runtimeTransition.d.mts +114 -0
- package/dist/runtimeTransition.d.mts.map +1 -0
- package/dist/runtimeTransition.mjs +24 -0
- package/dist/runtimeTransition.mjs.map +1 -0
- package/dist/sandboxHarness.cjs +6 -0
- package/dist/sandboxHarness.d.mts +2 -0
- package/dist/sandboxHarness.mjs +2 -0
- package/dist/server.cjs +17 -0
- package/dist/server.d.mts +10 -0
- package/dist/server.mjs +7 -0
- package/dist/serverFacet.cjs +34 -0
- package/dist/serverFacet.d.mts +10 -0
- package/dist/serverFacet.mjs +9 -0
- package/dist/serverTelemetry.cjs +25 -0
- package/dist/serverTelemetry.cjs.map +1 -0
- package/dist/serverTelemetry.d.mts +12 -0
- package/dist/serverTelemetry.d.mts.map +1 -0
- package/dist/serverTelemetry.mjs +23 -0
- package/dist/serverTelemetry.mjs.map +1 -0
- package/dist/sessionFilesApi.cjs +96 -0
- package/dist/sessionFilesApi.cjs.map +1 -0
- package/dist/sessionFilesApi.d.mts +7 -0
- package/dist/sessionFilesApi.d.mts.map +1 -0
- package/dist/sessionFilesApi.mjs +91 -0
- package/dist/sessionFilesApi.mjs.map +1 -0
- package/dist/sessionMcp.cjs +6 -0
- package/dist/sessionMcp.d.mts +5 -0
- package/dist/sessionMcp.mjs +3 -0
- package/dist/sessionProtocol.cjs +8 -0
- package/dist/sessionProtocol.d.mts +3 -0
- package/dist/sessionProtocol.mjs +2 -0
- package/dist/skills.cjs +9 -0
- package/dist/skills.d.mts +2 -0
- package/dist/skills.mjs +2 -0
- package/dist/sqliteSessionStorage.cjs +168 -0
- package/dist/sqliteSessionStorage.cjs.map +1 -0
- package/dist/sqliteSessionStorage.d.mts +35 -0
- package/dist/sqliteSessionStorage.d.mts.map +1 -0
- package/dist/sqliteSessionStorage.mjs +158 -0
- package/dist/sqliteSessionStorage.mjs.map +1 -0
- package/dist/src/constants/authorTools.cjs +10 -0
- package/dist/src/constants/authorTools.cjs.map +1 -0
- package/dist/src/constants/authorTools.d.mts +6 -0
- package/dist/src/constants/authorTools.d.mts.map +1 -0
- package/dist/src/constants/authorTools.mjs +8 -0
- package/dist/src/constants/authorTools.mjs.map +1 -0
- package/dist/src/constants/contextApi.cjs +31 -0
- package/dist/src/constants/contextApi.cjs.map +1 -0
- package/dist/src/constants/contextApi.d.mts +23 -0
- package/dist/src/constants/contextApi.d.mts.map +1 -0
- package/dist/src/constants/contextApi.mjs +25 -0
- package/dist/src/constants/contextApi.mjs.map +1 -0
- package/dist/src/constants/nativeHost.cjs +56 -0
- package/dist/src/constants/nativeHost.cjs.map +1 -0
- package/dist/src/constants/nativeHost.d.mts +21 -0
- package/dist/src/constants/nativeHost.d.mts.map +1 -0
- package/dist/src/constants/nativeHost.mjs +53 -0
- package/dist/src/constants/nativeHost.mjs.map +1 -0
- package/dist/src/constants/remote.cjs +132 -0
- package/dist/src/constants/remote.cjs.map +1 -0
- package/dist/src/constants/remote.mjs +99 -0
- package/dist/src/constants/remote.mjs.map +1 -0
- package/dist/src/constants/sessionFiles.cjs +27 -0
- package/dist/src/constants/sessionFiles.cjs.map +1 -0
- package/dist/src/constants/sessionFiles.mjs +25 -0
- package/dist/src/constants/sessionFiles.mjs.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.cjs +12 -0
- package/dist/src/constants/voiceReloadHandoff.cjs.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.d.mts +7 -0
- package/dist/src/constants/voiceReloadHandoff.d.mts.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.mjs +9 -0
- package/dist/src/constants/voiceReloadHandoff.mjs.map +1 -0
- package/dist/src/constants/voiceTools.cjs +96 -0
- package/dist/src/constants/voiceTools.cjs.map +1 -0
- package/dist/src/constants/voiceTools.d.mts +58 -0
- package/dist/src/constants/voiceTools.d.mts.map +1 -0
- package/dist/src/constants/voiceTools.mjs +60 -0
- package/dist/src/constants/voiceTools.mjs.map +1 -0
- package/dist/src/extensions/extensionFile.cjs +140 -0
- package/dist/src/extensions/extensionFile.cjs.map +1 -0
- package/dist/src/extensions/extensionFile.d.mts +69 -0
- package/dist/src/extensions/extensionFile.d.mts.map +1 -0
- package/dist/src/extensions/extensionFile.mjs +124 -0
- package/dist/src/extensions/extensionFile.mjs.map +1 -0
- package/dist/src/extensions/serverPlugin.cjs +107 -0
- package/dist/src/extensions/serverPlugin.cjs.map +1 -0
- package/dist/src/extensions/serverPlugin.d.mts +5 -0
- package/dist/src/extensions/serverPlugin.d.mts.map +1 -0
- package/dist/src/extensions/serverPlugin.mjs +107 -0
- package/dist/src/extensions/serverPlugin.mjs.map +1 -0
- package/dist/src/extensions/webPlugin.cjs +136 -0
- package/dist/src/extensions/webPlugin.cjs.map +1 -0
- package/dist/src/extensions/webPlugin.d.mts +68 -0
- package/dist/src/extensions/webPlugin.d.mts.map +1 -0
- package/dist/src/extensions/webPlugin.mjs +114 -0
- package/dist/src/extensions/webPlugin.mjs.map +1 -0
- package/dist/src/pi/piSessionRuntime.cjs +625 -0
- package/dist/src/pi/piSessionRuntime.cjs.map +1 -0
- package/dist/src/pi/piSessionRuntime.d.mts +43 -0
- package/dist/src/pi/piSessionRuntime.d.mts.map +1 -0
- package/dist/src/pi/piSessionRuntime.mjs +624 -0
- package/dist/src/pi/piSessionRuntime.mjs.map +1 -0
- package/dist/src/pi/piWebSocketListener.cjs +115 -0
- package/dist/src/pi/piWebSocketListener.cjs.map +1 -0
- package/dist/src/pi/piWebSocketListener.mjs +115 -0
- package/dist/src/pi/piWebSocketListener.mjs.map +1 -0
- package/dist/src/schemas/agentModel.cjs +33 -0
- package/dist/src/schemas/agentModel.cjs.map +1 -0
- package/dist/src/schemas/agentModel.d.mts +26 -0
- package/dist/src/schemas/agentModel.d.mts.map +1 -0
- package/dist/src/schemas/agentModel.mjs +32 -0
- package/dist/src/schemas/agentModel.mjs.map +1 -0
- package/dist/src/schemas/apiContracts.d.mts +58 -0
- package/dist/src/schemas/apiContracts.d.mts.map +1 -0
- package/dist/src/schemas/askUser.cjs +42 -0
- package/dist/src/schemas/askUser.cjs.map +1 -0
- package/dist/src/schemas/askUser.d.mts +47 -0
- package/dist/src/schemas/askUser.d.mts.map +1 -0
- package/dist/src/schemas/askUser.mjs +37 -0
- package/dist/src/schemas/askUser.mjs.map +1 -0
- package/dist/src/schemas/backgroundWork.cjs +44 -0
- package/dist/src/schemas/backgroundWork.cjs.map +1 -0
- package/dist/src/schemas/backgroundWork.d.mts +76 -0
- package/dist/src/schemas/backgroundWork.d.mts.map +1 -0
- package/dist/src/schemas/backgroundWork.mjs +38 -0
- package/dist/src/schemas/backgroundWork.mjs.map +1 -0
- package/dist/src/schemas/childProcess.cjs +67 -0
- package/dist/src/schemas/childProcess.cjs.map +1 -0
- package/dist/src/schemas/childProcess.d.mts +30 -0
- package/dist/src/schemas/childProcess.d.mts.map +1 -0
- package/dist/src/schemas/childProcess.mjs +55 -0
- package/dist/src/schemas/childProcess.mjs.map +1 -0
- package/dist/src/schemas/cockpitContainer.cjs +31 -0
- package/dist/src/schemas/cockpitContainer.cjs.map +1 -0
- package/dist/src/schemas/cockpitContainer.d.mts +80 -0
- package/dist/src/schemas/cockpitContainer.d.mts.map +1 -0
- package/dist/src/schemas/cockpitContainer.mjs +30 -0
- package/dist/src/schemas/cockpitContainer.mjs.map +1 -0
- package/dist/src/schemas/contextContributions.cjs +17 -0
- package/dist/src/schemas/contextContributions.cjs.map +1 -0
- package/dist/src/schemas/contextContributions.d.mts +49 -0
- package/dist/src/schemas/contextContributions.d.mts.map +1 -0
- package/dist/src/schemas/contextContributions.mjs +15 -0
- package/dist/src/schemas/contextContributions.mjs.map +1 -0
- package/dist/src/schemas/delegation.cjs +91 -0
- package/dist/src/schemas/delegation.cjs.map +1 -0
- package/dist/src/schemas/delegation.d.mts +95 -0
- package/dist/src/schemas/delegation.d.mts.map +1 -0
- package/dist/src/schemas/delegation.mjs +76 -0
- package/dist/src/schemas/delegation.mjs.map +1 -0
- package/dist/src/schemas/extensionFile.d.mts +116 -0
- package/dist/src/schemas/extensionFile.d.mts.map +1 -0
- package/dist/src/schemas/footer.cjs +48 -0
- package/dist/src/schemas/footer.cjs.map +1 -0
- package/dist/src/schemas/footer.d.mts +48 -0
- package/dist/src/schemas/footer.d.mts.map +1 -0
- package/dist/src/schemas/footer.mjs +45 -0
- package/dist/src/schemas/footer.mjs.map +1 -0
- package/dist/src/schemas/headless.cjs +97 -0
- package/dist/src/schemas/headless.cjs.map +1 -0
- package/dist/src/schemas/headless.d.mts +472 -0
- package/dist/src/schemas/headless.d.mts.map +1 -0
- package/dist/src/schemas/headless.mjs +84 -0
- package/dist/src/schemas/headless.mjs.map +1 -0
- package/dist/src/schemas/help.cjs +281 -0
- package/dist/src/schemas/help.cjs.map +1 -0
- package/dist/src/schemas/help.d.mts +119 -0
- package/dist/src/schemas/help.d.mts.map +1 -0
- package/dist/src/schemas/help.mjs +262 -0
- package/dist/src/schemas/help.mjs.map +1 -0
- package/dist/src/schemas/hubChannel.cjs +20 -0
- package/dist/src/schemas/hubChannel.cjs.map +1 -0
- package/dist/src/schemas/hubChannel.d.mts +271 -0
- package/dist/src/schemas/hubChannel.d.mts.map +1 -0
- package/dist/src/schemas/hubChannel.mjs +19 -0
- package/dist/src/schemas/hubChannel.mjs.map +1 -0
- package/dist/src/schemas/leader.cjs +57 -0
- package/dist/src/schemas/leader.cjs.map +1 -0
- package/dist/src/schemas/leader.d.mts +107 -0
- package/dist/src/schemas/leader.d.mts.map +1 -0
- package/dist/src/schemas/leader.mjs +51 -0
- package/dist/src/schemas/leader.mjs.map +1 -0
- package/dist/src/schemas/mcpBundle.d.mts +13 -0
- package/dist/src/schemas/mcpBundle.d.mts.map +1 -0
- package/dist/src/schemas/mcpFacet.cjs +24 -0
- package/dist/src/schemas/mcpFacet.cjs.map +1 -0
- package/dist/src/schemas/mcpFacet.d.mts +91 -0
- package/dist/src/schemas/mcpFacet.d.mts.map +1 -0
- package/dist/src/schemas/mcpFacet.mjs +21 -0
- package/dist/src/schemas/mcpFacet.mjs.map +1 -0
- package/dist/src/schemas/mcpProjection.cjs +117 -0
- package/dist/src/schemas/mcpProjection.cjs.map +1 -0
- package/dist/src/schemas/mcpProjection.d.mts +124 -0
- package/dist/src/schemas/mcpProjection.d.mts.map +1 -0
- package/dist/src/schemas/mcpProjection.mjs +104 -0
- package/dist/src/schemas/mcpProjection.mjs.map +1 -0
- package/dist/src/schemas/mcpSession.cjs +57 -0
- package/dist/src/schemas/mcpSession.cjs.map +1 -0
- package/dist/src/schemas/mcpSession.d.mts +57 -0
- package/dist/src/schemas/mcpSession.d.mts.map +1 -0
- package/dist/src/schemas/mcpSession.mjs +51 -0
- package/dist/src/schemas/mcpSession.mjs.map +1 -0
- package/dist/src/schemas/mcpStatus.cjs +52 -0
- package/dist/src/schemas/mcpStatus.cjs.map +1 -0
- package/dist/src/schemas/mcpStatus.d.mts +73 -0
- package/dist/src/schemas/mcpStatus.d.mts.map +1 -0
- package/dist/src/schemas/mcpStatus.mjs +48 -0
- package/dist/src/schemas/mcpStatus.mjs.map +1 -0
- package/dist/src/schemas/mcpToolResolver.cjs +17 -0
- package/dist/src/schemas/mcpToolResolver.cjs.map +1 -0
- package/dist/src/schemas/mcpToolResolver.d.mts +24 -0
- package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -0
- package/dist/src/schemas/mcpToolResolver.mjs +15 -0
- package/dist/src/schemas/mcpToolResolver.mjs.map +1 -0
- package/dist/src/schemas/narration.cjs +54 -0
- package/dist/src/schemas/narration.cjs.map +1 -0
- package/dist/src/schemas/narration.d.mts +29 -0
- package/dist/src/schemas/narration.d.mts.map +1 -0
- package/dist/src/schemas/narration.mjs +47 -0
- package/dist/src/schemas/narration.mjs.map +1 -0
- package/dist/src/schemas/notification.cjs +122 -0
- package/dist/src/schemas/notification.cjs.map +1 -0
- package/dist/src/schemas/notification.d.mts +48 -0
- package/dist/src/schemas/notification.d.mts.map +1 -0
- package/dist/src/schemas/notification.mjs +108 -0
- package/dist/src/schemas/notification.mjs.map +1 -0
- package/dist/src/schemas/packageApi.cjs +76 -0
- package/dist/src/schemas/packageApi.cjs.map +1 -0
- package/dist/src/schemas/packageApi.d.mts +302 -0
- package/dist/src/schemas/packageApi.d.mts.map +1 -0
- package/dist/src/schemas/packageApi.mjs +66 -0
- package/dist/src/schemas/packageApi.mjs.map +1 -0
- package/dist/src/schemas/pluginContributions.cjs +19 -0
- package/dist/src/schemas/pluginContributions.cjs.map +1 -0
- package/dist/src/schemas/pluginContributions.d.mts +56 -0
- package/dist/src/schemas/pluginContributions.d.mts.map +1 -0
- package/dist/src/schemas/pluginContributions.mjs +18 -0
- package/dist/src/schemas/pluginContributions.mjs.map +1 -0
- package/dist/src/schemas/pluginProtocol.cjs +103 -0
- package/dist/src/schemas/pluginProtocol.cjs.map +1 -0
- package/dist/src/schemas/pluginProtocol.d.mts +70 -0
- package/dist/src/schemas/pluginProtocol.d.mts.map +1 -0
- package/dist/src/schemas/pluginProtocol.mjs +96 -0
- package/dist/src/schemas/pluginProtocol.mjs.map +1 -0
- package/dist/src/schemas/profileIdentity.cjs +67 -0
- package/dist/src/schemas/profileIdentity.cjs.map +1 -0
- package/dist/src/schemas/profileIdentity.d.mts +50 -0
- package/dist/src/schemas/profileIdentity.d.mts.map +1 -0
- package/dist/src/schemas/profileIdentity.mjs +64 -0
- package/dist/src/schemas/profileIdentity.mjs.map +1 -0
- package/dist/src/schemas/readiness.cjs +251 -0
- package/dist/src/schemas/readiness.cjs.map +1 -0
- package/dist/src/schemas/readiness.d.mts +84 -0
- package/dist/src/schemas/readiness.d.mts.map +1 -0
- package/dist/src/schemas/readiness.mjs +246 -0
- package/dist/src/schemas/readiness.mjs.map +1 -0
- package/dist/src/schemas/sandboxHarness.cjs +29 -0
- package/dist/src/schemas/sandboxHarness.cjs.map +1 -0
- package/dist/src/schemas/sandboxHarness.d.mts +39 -0
- package/dist/src/schemas/sandboxHarness.d.mts.map +1 -0
- package/dist/src/schemas/sandboxHarness.mjs +26 -0
- package/dist/src/schemas/sandboxHarness.mjs.map +1 -0
- package/dist/src/schemas/serverBundle.d.mts +19 -0
- package/dist/src/schemas/serverBundle.d.mts.map +1 -0
- package/dist/src/schemas/serverFacet.cjs +111 -0
- package/dist/src/schemas/serverFacet.cjs.map +1 -0
- package/dist/src/schemas/serverFacet.d.mts +152 -0
- package/dist/src/schemas/serverFacet.d.mts.map +1 -0
- package/dist/src/schemas/serverFacet.mjs +101 -0
- package/dist/src/schemas/serverFacet.mjs.map +1 -0
- package/dist/src/schemas/sessionMcpActivity.d.mts +47 -0
- package/dist/src/schemas/sessionMcpActivity.d.mts.map +1 -0
- package/dist/src/schemas/sessionProtocol.cjs +17 -0
- package/dist/src/schemas/sessionProtocol.cjs.map +1 -0
- package/dist/src/schemas/sessionProtocol.d.mts +313 -0
- package/dist/src/schemas/sessionProtocol.d.mts.map +1 -0
- package/dist/src/schemas/sessionProtocol.mjs +12 -0
- package/dist/src/schemas/sessionProtocol.mjs.map +1 -0
- package/dist/src/schemas/sessionUpdates.d.mts +34 -0
- package/dist/src/schemas/sessionUpdates.d.mts.map +1 -0
- package/dist/src/schemas/skills.cjs +115 -0
- package/dist/src/schemas/skills.cjs.map +1 -0
- package/dist/src/schemas/skills.d.mts +65 -0
- package/dist/src/schemas/skills.d.mts.map +1 -0
- package/dist/src/schemas/skills.mjs +109 -0
- package/dist/src/schemas/skills.mjs.map +1 -0
- package/dist/src/schemas/toolOverrides.cjs +17 -0
- package/dist/src/schemas/toolOverrides.cjs.map +1 -0
- package/dist/src/schemas/toolOverrides.d.mts +29 -0
- package/dist/src/schemas/toolOverrides.d.mts.map +1 -0
- package/dist/src/schemas/toolOverrides.mjs +15 -0
- package/dist/src/schemas/toolOverrides.mjs.map +1 -0
- package/dist/src/schemas/toolSurface.cjs +17 -0
- package/dist/src/schemas/toolSurface.cjs.map +1 -0
- package/dist/src/schemas/toolSurface.d.mts +70 -0
- package/dist/src/schemas/toolSurface.d.mts.map +1 -0
- package/dist/src/schemas/toolSurface.mjs +15 -0
- package/dist/src/schemas/toolSurface.mjs.map +1 -0
- package/dist/src/schemas/uiHub.cjs +17 -0
- package/dist/src/schemas/uiHub.cjs.map +1 -0
- package/dist/src/schemas/uiHub.d.mts +23 -0
- package/dist/src/schemas/uiHub.d.mts.map +1 -0
- package/dist/src/schemas/uiHub.mjs +15 -0
- package/dist/src/schemas/uiHub.mjs.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.cjs +78 -0
- package/dist/src/schemas/voiceReloadHandoff.cjs.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.d.mts +31 -0
- package/dist/src/schemas/voiceReloadHandoff.d.mts.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.mjs +75 -0
- package/dist/src/schemas/voiceReloadHandoff.mjs.map +1 -0
- package/dist/src/schemas/voiceTools.cjs +205 -0
- package/dist/src/schemas/voiceTools.cjs.map +1 -0
- package/dist/src/schemas/voiceTools.d.mts +120 -0
- package/dist/src/schemas/voiceTools.d.mts.map +1 -0
- package/dist/src/schemas/voiceTools.mjs +194 -0
- package/dist/src/schemas/voiceTools.mjs.map +1 -0
- package/dist/src/server/devProxyForward.cjs +141 -0
- package/dist/src/server/devProxyForward.cjs.map +1 -0
- package/dist/src/server/devProxyForward.mjs +139 -0
- package/dist/src/server/devProxyForward.mjs.map +1 -0
- package/dist/src/server/devProxyRoutes.cjs +97 -0
- package/dist/src/server/devProxyRoutes.cjs.map +1 -0
- package/dist/src/server/devProxyRoutes.mjs +97 -0
- package/dist/src/server/devProxyRoutes.mjs.map +1 -0
- package/dist/src/server/devProxySocket.cjs +93 -0
- package/dist/src/server/devProxySocket.cjs.map +1 -0
- package/dist/src/server/devProxySocket.d.mts +25 -0
- package/dist/src/server/devProxySocket.d.mts.map +1 -0
- package/dist/src/server/devProxySocket.mjs +93 -0
- package/dist/src/server/devProxySocket.mjs.map +1 -0
- package/dist/src/server/directHarnessRuntime.cjs +2387 -0
- package/dist/src/server/directHarnessRuntime.cjs.map +1 -0
- package/dist/src/server/directHarnessRuntime.d.mts +4 -0
- package/dist/src/server/directHarnessRuntime.mjs +2384 -0
- package/dist/src/server/directHarnessRuntime.mjs.map +1 -0
- package/dist/src/server/harnessErrorMessage.cjs +13 -0
- package/dist/src/server/harnessErrorMessage.cjs.map +1 -0
- package/dist/src/server/harnessErrorMessage.mjs +13 -0
- package/dist/src/server/harnessErrorMessage.mjs.map +1 -0
- package/dist/src/server/headlessProtocol.cjs +382 -0
- package/dist/src/server/headlessProtocol.cjs.map +1 -0
- package/dist/src/server/headlessProtocol.mjs +382 -0
- package/dist/src/server/headlessProtocol.mjs.map +1 -0
- package/dist/src/server/liveImport.cjs +37 -0
- package/dist/src/server/liveImport.cjs.map +1 -0
- package/dist/src/server/liveImport.d.mts +27 -0
- package/dist/src/server/liveImport.d.mts.map +1 -0
- package/dist/src/server/liveImport.mjs +34 -0
- package/dist/src/server/liveImport.mjs.map +1 -0
- package/dist/src/server/mcpBundleLoader.cjs +108 -0
- package/dist/src/server/mcpBundleLoader.cjs.map +1 -0
- package/dist/src/server/mcpBundleLoader.d.mts +46 -0
- package/dist/src/server/mcpBundleLoader.d.mts.map +1 -0
- package/dist/src/server/mcpBundleLoader.mjs +107 -0
- package/dist/src/server/mcpBundleLoader.mjs.map +1 -0
- package/dist/src/server/nativeChildTranscriptReader.cjs +20 -0
- package/dist/src/server/nativeChildTranscriptReader.cjs.map +1 -0
- package/dist/src/server/nativeChildTranscriptReader.mjs +18 -0
- package/dist/src/server/nativeChildTranscriptReader.mjs.map +1 -0
- package/dist/src/server/remoteRoutes.cjs +463 -0
- package/dist/src/server/remoteRoutes.cjs.map +1 -0
- package/dist/src/server/remoteRoutes.mjs +463 -0
- package/dist/src/server/remoteRoutes.mjs.map +1 -0
- package/dist/src/server/serverFacetLoader.cjs +214 -0
- package/dist/src/server/serverFacetLoader.cjs.map +1 -0
- package/dist/src/server/serverFacetLoader.d.mts +72 -0
- package/dist/src/server/serverFacetLoader.d.mts.map +1 -0
- package/dist/src/server/serverFacetLoader.mjs +212 -0
- package/dist/src/server/serverFacetLoader.mjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.cjs +585 -0
- package/dist/src/server/sessionMcpHandler.cjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.d.mts +50 -0
- package/dist/src/server/sessionMcpHandler.d.mts.map +1 -0
- package/dist/src/server/sessionMcpHandler.mjs +582 -0
- package/dist/src/server/sessionMcpHandler.mjs.map +1 -0
- package/dist/src/server/sessionMcpRoutes.cjs +809 -0
- package/dist/src/server/sessionMcpRoutes.cjs.map +1 -0
- package/dist/src/server/sessionMcpRoutes.mjs +804 -0
- package/dist/src/server/sessionMcpRoutes.mjs.map +1 -0
- package/dist/src/server/threadJournals.cjs +172 -0
- package/dist/src/server/threadJournals.cjs.map +1 -0
- package/dist/src/server/threadJournals.mjs +169 -0
- package/dist/src/server/threadJournals.mjs.map +1 -0
- package/dist/src/services/acpSessionUpdates/index.cjs +129 -0
- package/dist/src/services/acpSessionUpdates/index.cjs.map +1 -0
- package/dist/src/services/acpSessionUpdates/index.mjs +129 -0
- package/dist/src/services/acpSessionUpdates/index.mjs.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.cjs +60 -0
- package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.d.mts +24 -0
- package/dist/src/services/apiSurfaceAssert/index.d.mts.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.mjs +60 -0
- package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -0
- package/dist/src/services/bundlePublication/index.cjs +89 -0
- package/dist/src/services/bundlePublication/index.cjs.map +1 -0
- package/dist/src/services/bundlePublication/index.mjs +86 -0
- package/dist/src/services/bundlePublication/index.mjs.map +1 -0
- package/dist/src/services/contextApiUrls/index.cjs +53 -0
- package/dist/src/services/contextApiUrls/index.cjs.map +1 -0
- package/dist/src/services/contextApiUrls/index.d.mts +8 -0
- package/dist/src/services/contextApiUrls/index.d.mts.map +1 -0
- package/dist/src/services/contextApiUrls/index.mjs +52 -0
- package/dist/src/services/contextApiUrls/index.mjs.map +1 -0
- package/dist/src/services/contextContributions/index.cjs +79 -0
- package/dist/src/services/contextContributions/index.cjs.map +1 -0
- package/dist/src/services/contextContributions/index.d.mts +6 -0
- package/dist/src/services/contextContributions/index.d.mts.map +1 -0
- package/dist/src/services/contextContributions/index.mjs +79 -0
- package/dist/src/services/contextContributions/index.mjs.map +1 -0
- package/dist/src/services/contextUsage/index.cjs +27 -0
- package/dist/src/services/contextUsage/index.cjs.map +1 -0
- package/dist/src/services/contextUsage/index.mjs +25 -0
- package/dist/src/services/contextUsage/index.mjs.map +1 -0
- package/dist/src/services/devProxyPolicy/index.cjs +168 -0
- package/dist/src/services/devProxyPolicy/index.cjs.map +1 -0
- package/dist/src/services/devProxyPolicy/index.mjs +165 -0
- package/dist/src/services/devProxyPolicy/index.mjs.map +1 -0
- package/dist/src/services/devProxyStore/index.cjs +107 -0
- package/dist/src/services/devProxyStore/index.cjs.map +1 -0
- package/dist/src/services/devProxyStore/index.mjs +104 -0
- package/dist/src/services/devProxyStore/index.mjs.map +1 -0
- package/dist/src/services/deviceAuth/index.cjs +146 -0
- package/dist/src/services/deviceAuth/index.cjs.map +1 -0
- package/dist/src/services/deviceAuth/index.d.mts +9 -0
- package/dist/src/services/deviceAuth/index.d.mts.map +1 -0
- package/dist/src/services/deviceAuth/index.mjs +146 -0
- package/dist/src/services/deviceAuth/index.mjs.map +1 -0
- package/dist/src/services/deviceSessions/index.cjs +147 -0
- package/dist/src/services/deviceSessions/index.cjs.map +1 -0
- package/dist/src/services/deviceSessions/index.d.mts +18 -0
- package/dist/src/services/deviceSessions/index.d.mts.map +1 -0
- package/dist/src/services/deviceSessions/index.mjs +141 -0
- package/dist/src/services/deviceSessions/index.mjs.map +1 -0
- package/dist/src/services/deviceTrust/index.cjs +294 -0
- package/dist/src/services/deviceTrust/index.cjs.map +1 -0
- package/dist/src/services/deviceTrust/index.mjs +282 -0
- package/dist/src/services/deviceTrust/index.mjs.map +1 -0
- package/dist/src/services/durableNavigation/index.cjs +46 -0
- package/dist/src/services/durableNavigation/index.cjs.map +1 -0
- package/dist/src/services/durableNavigation/index.mjs +45 -0
- package/dist/src/services/durableNavigation/index.mjs.map +1 -0
- package/dist/src/services/headlessClient/index.cjs +126 -0
- package/dist/src/services/headlessClient/index.cjs.map +1 -0
- package/dist/src/services/headlessClient/index.mjs +126 -0
- package/dist/src/services/headlessClient/index.mjs.map +1 -0
- package/dist/src/services/historyImport/index.cjs +8 -0
- package/dist/src/services/historyImport/index.cjs.map +1 -0
- package/dist/src/services/historyImport/index.d.mts +68 -0
- package/dist/src/services/historyImport/index.d.mts.map +1 -0
- package/dist/src/services/historyImport/index.mjs +8 -0
- package/dist/src/services/historyImport/index.mjs.map +1 -0
- package/dist/src/services/hubChannelHarness/index.cjs +50 -0
- package/dist/src/services/hubChannelHarness/index.cjs.map +1 -0
- package/dist/src/services/hubChannelHarness/index.d.mts +17 -0
- package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -0
- package/dist/src/services/hubChannelHarness/index.mjs +50 -0
- package/dist/src/services/hubChannelHarness/index.mjs.map +1 -0
- package/dist/src/services/kernel/index.cjs +147 -0
- package/dist/src/services/kernel/index.cjs.map +1 -0
- package/dist/src/services/kernel/index.d.mts +9 -0
- package/dist/src/services/kernel/index.d.mts.map +1 -0
- package/dist/src/services/kernel/index.mjs +147 -0
- package/dist/src/services/kernel/index.mjs.map +1 -0
- package/dist/src/services/loginFlow/index.cjs +131 -0
- package/dist/src/services/loginFlow/index.cjs.map +1 -0
- package/dist/src/services/loginFlow/index.mjs +131 -0
- package/dist/src/services/loginFlow/index.mjs.map +1 -0
- package/dist/src/services/loopbackAddress/index.cjs +58 -0
- package/dist/src/services/loopbackAddress/index.cjs.map +1 -0
- package/dist/src/services/loopbackAddress/index.mjs +56 -0
- package/dist/src/services/loopbackAddress/index.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.cjs +134 -0
- package/dist/src/services/openSessionRegistry/index.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.d.mts +36 -0
- package/dist/src/services/openSessionRegistry/index.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/index.mjs +131 -0
- package/dist/src/services/openSessionRegistry/index.mjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.cjs +36 -0
- package/dist/src/services/packageApiHarness/index.cjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.d.mts +40 -0
- package/dist/src/services/packageApiHarness/index.d.mts.map +1 -0
- package/dist/src/services/packageApiHarness/index.mjs +36 -0
- package/dist/src/services/packageApiHarness/index.mjs.map +1 -0
- package/dist/src/services/packageResource/index.cjs +54 -0
- package/dist/src/services/packageResource/index.cjs.map +1 -0
- package/dist/src/services/packageResource/index.d.mts +26 -0
- package/dist/src/services/packageResource/index.d.mts.map +1 -0
- package/dist/src/services/packageResource/index.mjs +51 -0
- package/dist/src/services/packageResource/index.mjs.map +1 -0
- package/dist/src/services/pairingFlow/index.cjs +145 -0
- package/dist/src/services/pairingFlow/index.cjs.map +1 -0
- package/dist/src/services/pairingFlow/index.d.mts +44 -0
- package/dist/src/services/pairingFlow/index.d.mts.map +1 -0
- package/dist/src/services/pairingFlow/index.mjs +145 -0
- package/dist/src/services/pairingFlow/index.mjs.map +1 -0
- package/dist/src/services/pairingPage/index.cjs +450 -0
- package/dist/src/services/pairingPage/index.cjs.map +1 -0
- package/dist/src/services/pairingPage/index.mjs +447 -0
- package/dist/src/services/pairingPage/index.mjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.cjs +889 -0
- package/dist/src/services/piExtensionHost/index.cjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.mjs +885 -0
- package/dist/src/services/piExtensionHost/index.mjs.map +1 -0
- package/dist/src/services/piHelpTools/index.cjs +68 -0
- package/dist/src/services/piHelpTools/index.cjs.map +1 -0
- package/dist/src/services/piHelpTools/index.d.mts +10 -0
- package/dist/src/services/piHelpTools/index.d.mts.map +1 -0
- package/dist/src/services/piHelpTools/index.mjs +68 -0
- package/dist/src/services/piHelpTools/index.mjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.cjs +121 -0
- package/dist/src/services/piSessionEntries/index.cjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.mjs +117 -0
- package/dist/src/services/piSessionEntries/index.mjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.cjs +71 -0
- package/dist/src/services/pluginLifecycle/index.cjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.d.mts +8 -0
- package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -0
- package/dist/src/services/pluginLifecycle/index.mjs +71 -0
- package/dist/src/services/pluginLifecycle/index.mjs.map +1 -0
- package/dist/src/services/providerAuth/index.cjs +156 -0
- package/dist/src/services/providerAuth/index.cjs.map +1 -0
- package/dist/src/services/providerAuth/index.mjs +154 -0
- package/dist/src/services/providerAuth/index.mjs.map +1 -0
- package/dist/src/services/publicFileShares/index.cjs +192 -0
- package/dist/src/services/publicFileShares/index.cjs.map +1 -0
- package/dist/src/services/publicFileShares/index.d.mts +16 -0
- package/dist/src/services/publicFileShares/index.d.mts.map +1 -0
- package/dist/src/services/publicFileShares/index.mjs +188 -0
- package/dist/src/services/publicFileShares/index.mjs.map +1 -0
- package/dist/src/services/remoteAccess/index.cjs +567 -0
- package/dist/src/services/remoteAccess/index.cjs.map +1 -0
- package/dist/src/services/remoteAccess/index.d.mts +121 -0
- package/dist/src/services/remoteAccess/index.d.mts.map +1 -0
- package/dist/src/services/remoteAccess/index.mjs +567 -0
- package/dist/src/services/remoteAccess/index.mjs.map +1 -0
- package/dist/src/services/remoteAccessSettings/index.cjs +151 -0
- package/dist/src/services/remoteAccessSettings/index.cjs.map +1 -0
- package/dist/src/services/remoteAccessSettings/index.mjs +149 -0
- package/dist/src/services/remoteAccessSettings/index.mjs.map +1 -0
- package/dist/src/services/remoteAccessStore/index.cjs +197 -0
- package/dist/src/services/remoteAccessStore/index.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/index.mjs +192 -0
- package/dist/src/services/remoteAccessStore/index.mjs.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.cjs +200 -0
- package/dist/src/services/remoteGuardPolicy/index.cjs.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.d.mts +7 -0
- package/dist/src/services/remoteGuardPolicy/index.d.mts.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.mjs +196 -0
- package/dist/src/services/remoteGuardPolicy/index.mjs.map +1 -0
- package/dist/src/services/requestReceipts/index.cjs +167 -0
- package/dist/src/services/requestReceipts/index.cjs.map +1 -0
- package/dist/src/services/requestReceipts/index.d.mts +11 -0
- package/dist/src/services/requestReceipts/index.d.mts.map +1 -0
- package/dist/src/services/requestReceipts/index.mjs +167 -0
- package/dist/src/services/requestReceipts/index.mjs.map +1 -0
- package/dist/src/services/rpcTranscript/index.cjs +633 -0
- package/dist/src/services/rpcTranscript/index.cjs.map +1 -0
- package/dist/src/services/rpcTranscript/index.d.mts +50 -0
- package/dist/src/services/rpcTranscript/index.d.mts.map +1 -0
- package/dist/src/services/rpcTranscript/index.mjs +632 -0
- package/dist/src/services/rpcTranscript/index.mjs.map +1 -0
- package/dist/src/services/serverFacet/index.cjs +197 -0
- package/dist/src/services/serverFacet/index.cjs.map +1 -0
- package/dist/src/services/serverFacet/index.d.mts +31 -0
- package/dist/src/services/serverFacet/index.d.mts.map +1 -0
- package/dist/src/services/serverFacet/index.mjs +197 -0
- package/dist/src/services/serverFacet/index.mjs.map +1 -0
- package/dist/src/services/sessionAttachments/index.cjs +111 -0
- package/dist/src/services/sessionAttachments/index.cjs.map +1 -0
- package/dist/src/services/sessionAttachments/index.d.mts +11 -0
- package/dist/src/services/sessionAttachments/index.d.mts.map +1 -0
- package/dist/src/services/sessionAttachments/index.mjs +107 -0
- package/dist/src/services/sessionAttachments/index.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.cjs +46 -0
- package/dist/src/services/sessionGitStatus/index.cjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.mjs +46 -0
- package/dist/src/services/sessionGitStatus/index.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/type.d.mts +8 -0
- package/dist/src/services/sessionGitStatus/type.d.mts.map +1 -0
- package/dist/src/services/sessionMcpActivity/index.cjs +115 -0
- package/dist/src/services/sessionMcpActivity/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpActivity/index.mjs +111 -0
- package/dist/src/services/sessionMcpActivity/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.cjs +473 -0
- package/dist/src/services/sessionMcpAuthorization/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.d.mts +125 -0
- package/dist/src/services/sessionMcpAuthorization/index.d.mts.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.mjs +469 -0
- package/dist/src/services/sessionMcpAuthorization/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpConversations/index.cjs +217 -0
- package/dist/src/services/sessionMcpConversations/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpConversations/index.mjs +212 -0
- package/dist/src/services/sessionMcpConversations/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.cjs +86 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.mjs +83 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.mjs.map +1 -0
- package/dist/src/services/sessionPresentation/index.cjs +120 -0
- package/dist/src/services/sessionPresentation/index.cjs.map +1 -0
- package/dist/src/services/sessionPresentation/index.mjs +120 -0
- package/dist/src/services/sessionPresentation/index.mjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs +97 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.d.mts +28 -0
- package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.mjs +92 -0
- package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.cjs +67 -0
- package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.d.mts +14 -0
- package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.mjs +65 -0
- package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -0
- package/dist/src/services/toolCost/index.cjs +47 -0
- package/dist/src/services/toolCost/index.cjs.map +1 -0
- package/dist/src/services/toolCost/index.d.mts +38 -0
- package/dist/src/services/toolCost/index.d.mts.map +1 -0
- package/dist/src/services/toolCost/index.mjs +46 -0
- package/dist/src/services/toolCost/index.mjs.map +1 -0
- package/dist/src/services/toolOverrides/index.cjs +45 -0
- package/dist/src/services/toolOverrides/index.cjs.map +1 -0
- package/dist/src/services/toolOverrides/index.d.mts +6 -0
- package/dist/src/services/toolOverrides/index.d.mts.map +1 -0
- package/dist/src/services/toolOverrides/index.mjs +45 -0
- package/dist/src/services/toolOverrides/index.mjs.map +1 -0
- package/dist/src/services/toolPrompt/index.cjs +13 -0
- package/dist/src/services/toolPrompt/index.cjs.map +1 -0
- package/dist/src/services/toolPrompt/index.mjs +13 -0
- package/dist/src/services/toolPrompt/index.mjs.map +1 -0
- package/dist/src/services/toolSurface/index.cjs +134 -0
- package/dist/src/services/toolSurface/index.cjs.map +1 -0
- package/dist/src/services/toolSurface/index.d.mts +19 -0
- package/dist/src/services/toolSurface/index.d.mts.map +1 -0
- package/dist/src/services/toolSurface/index.mjs +134 -0
- package/dist/src/services/toolSurface/index.mjs.map +1 -0
- package/dist/src/services/traceContext/index.cjs +13 -0
- package/dist/src/services/traceContext/index.cjs.map +1 -0
- package/dist/src/services/traceContext/index.mjs +13 -0
- package/dist/src/services/traceContext/index.mjs.map +1 -0
- package/dist/src/services/transcriptPages/index.cjs +117 -0
- package/dist/src/services/transcriptPages/index.cjs.map +1 -0
- package/dist/src/services/transcriptPages/index.mjs +115 -0
- package/dist/src/services/transcriptPages/index.mjs.map +1 -0
- package/dist/src/services/tunnelOutput/index.cjs +58 -0
- package/dist/src/services/tunnelOutput/index.cjs.map +1 -0
- package/dist/src/services/tunnelOutput/index.mjs +54 -0
- package/dist/src/services/tunnelOutput/index.mjs.map +1 -0
- package/dist/src/services/tunnelProcess/index.cjs +487 -0
- package/dist/src/services/tunnelProcess/index.cjs.map +1 -0
- package/dist/src/services/tunnelProcess/index.mjs +481 -0
- package/dist/src/services/tunnelProcess/index.mjs.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.cjs +136 -0
- package/dist/src/services/voiceReloadHandoff/index.cjs.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.d.mts +34 -0
- package/dist/src/services/voiceReloadHandoff/index.d.mts.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.mjs +135 -0
- package/dist/src/services/voiceReloadHandoff/index.mjs.map +1 -0
- package/dist/src/services/voiceToolsContract/index.cjs +26 -0
- package/dist/src/services/voiceToolsContract/index.cjs.map +1 -0
- package/dist/src/services/voiceToolsContract/index.d.mts +76 -0
- package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -0
- package/dist/src/services/voiceToolsContract/index.mjs +24 -0
- package/dist/src/services/voiceToolsContract/index.mjs.map +1 -0
- package/dist/src/services/webauthn/index.cjs +262 -0
- package/dist/src/services/webauthn/index.cjs.map +1 -0
- package/dist/src/services/webauthn/index.d.mts +39 -0
- package/dist/src/services/webauthn/index.d.mts.map +1 -0
- package/dist/src/services/webauthn/index.mjs +262 -0
- package/dist/src/services/webauthn/index.mjs.map +1 -0
- package/dist/src/services/webauthnPolicy/index.cjs +174 -0
- package/dist/src/services/webauthnPolicy/index.cjs.map +1 -0
- package/dist/src/services/webauthnPolicy/index.d.mts +41 -0
- package/dist/src/services/webauthnPolicy/index.d.mts.map +1 -0
- package/dist/src/services/webauthnPolicy/index.mjs +167 -0
- package/dist/src/services/webauthnPolicy/index.mjs.map +1 -0
- package/dist/src/services/workspaceRegistry/index.cjs +187 -0
- package/dist/src/services/workspaceRegistry/index.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/index.d.mts +47 -0
- package/dist/src/services/workspaceRegistry/index.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/index.mjs +179 -0
- package/dist/src/services/workspaceRegistry/index.mjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +466 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +36 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +457 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +28 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +1 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +25 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +1 -0
- package/dist/src/systems/child/services/childSession/index.cjs +219 -0
- package/dist/src/systems/child/services/childSession/index.cjs.map +1 -0
- package/dist/src/systems/child/services/childSession/index.d.mts +14 -0
- package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -0
- package/dist/src/systems/child/services/childSession/index.mjs +219 -0
- package/dist/src/systems/child/services/childSession/index.mjs.map +1 -0
- package/dist/src/systems/child/types/childSession.cjs +21 -0
- package/dist/src/systems/child/types/childSession.cjs.map +1 -0
- package/dist/src/systems/child/types/childSession.d.mts +182 -0
- package/dist/src/systems/child/types/childSession.d.mts.map +1 -0
- package/dist/src/systems/child/types/childSession.mjs +17 -0
- package/dist/src/systems/child/types/childSession.mjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.cjs +597 -0
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.d.mts +116 -0
- package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.mjs +595 -0
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +1668 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +20 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +1663 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -0
- package/dist/src/systems/main/types/headlessHost.d.mts +37 -0
- package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.cjs +73 -0
- package/dist/src/testing/pi/extensionScenarios.cjs.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.d.mts +41 -0
- package/dist/src/testing/pi/extensionScenarios.d.mts.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.mjs +73 -0
- package/dist/src/testing/pi/extensionScenarios.mjs.map +1 -0
- package/dist/src/testing/pi/testHost.cjs +399 -0
- package/dist/src/testing/pi/testHost.cjs.map +1 -0
- package/dist/src/testing/pi/testHost.d.mts +160 -0
- package/dist/src/testing/pi/testHost.d.mts.map +1 -0
- package/dist/src/testing/pi/testHost.mjs +399 -0
- package/dist/src/testing/pi/testHost.mjs.map +1 -0
- package/dist/src/types/config.d.mts +20 -0
- package/dist/src/types/config.d.mts.map +1 -0
- package/dist/src/types/kernel.d.mts +69 -0
- package/dist/src/types/kernel.d.mts.map +1 -0
- package/dist/src/types/remote.d.mts +152 -0
- package/dist/src/types/remote.d.mts.map +1 -0
- package/dist/src/types/server/directHarnessRuntime.d.mts +526 -0
- package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -0
- package/dist/src/types/server/session.d.mts +5 -0
- package/dist/src/types/server/session.d.mts.map +1 -0
- package/dist/src/types/server/sessionToolSurface.d.mts +44 -0
- package/dist/src/types/server/sessionToolSurface.d.mts.map +1 -0
- package/dist/src/web/models/globalStore.cjs +23 -0
- package/dist/src/web/models/globalStore.cjs.map +1 -0
- package/dist/src/web/models/globalStore.d.mts +6 -0
- package/dist/src/web/models/globalStore.d.mts.map +1 -0
- package/dist/src/web/models/globalStore.mjs +23 -0
- package/dist/src/web/models/globalStore.mjs.map +1 -0
- package/dist/src/web/models/sessionStore.cjs +56 -0
- package/dist/src/web/models/sessionStore.cjs.map +1 -0
- package/dist/src/web/models/sessionStore.d.mts +14 -0
- package/dist/src/web/models/sessionStore.d.mts.map +1 -0
- package/dist/src/web/models/sessionStore.mjs +56 -0
- package/dist/src/web/models/sessionStore.mjs.map +1 -0
- package/dist/src/web/models/workspaceStore.cjs +50 -0
- package/dist/src/web/models/workspaceStore.cjs.map +1 -0
- package/dist/src/web/models/workspaceStore.d.mts +18 -0
- package/dist/src/web/models/workspaceStore.d.mts.map +1 -0
- package/dist/src/web/models/workspaceStore.mjs +50 -0
- package/dist/src/web/models/workspaceStore.mjs.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.cjs +20 -0
- package/dist/src/web/schemas/bundleAssetPolicy.cjs.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.d.mts +10 -0
- package/dist/src/web/schemas/bundleAssetPolicy.d.mts.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.mjs +18 -0
- package/dist/src/web/schemas/bundleAssetPolicy.mjs.map +1 -0
- package/dist/src/web/schemas/template.cjs +35 -0
- package/dist/src/web/schemas/template.cjs.map +1 -0
- package/dist/src/web/schemas/template.d.mts +9 -0
- package/dist/src/web/schemas/template.d.mts.map +1 -0
- package/dist/src/web/schemas/template.mjs +34 -0
- package/dist/src/web/schemas/template.mjs.map +1 -0
- package/dist/src/web/services/apiClient/index.cjs +156 -0
- package/dist/src/web/services/apiClient/index.cjs.map +1 -0
- package/dist/src/web/services/apiClient/index.d.mts +152 -0
- package/dist/src/web/services/apiClient/index.d.mts.map +1 -0
- package/dist/src/web/services/apiClient/index.mjs +154 -0
- package/dist/src/web/services/apiClient/index.mjs.map +1 -0
- package/dist/src/web/services/apiPaths/index.cjs +83 -0
- package/dist/src/web/services/apiPaths/index.cjs.map +1 -0
- package/dist/src/web/services/apiPaths/index.d.mts +81 -0
- package/dist/src/web/services/apiPaths/index.d.mts.map +1 -0
- package/dist/src/web/services/apiPaths/index.mjs +78 -0
- package/dist/src/web/services/apiPaths/index.mjs.map +1 -0
- package/dist/src/web/services/apiRoutes/index.cjs +47 -0
- package/dist/src/web/services/apiRoutes/index.cjs.map +1 -0
- package/dist/src/web/services/apiRoutes/index.d.mts +21 -0
- package/dist/src/web/services/apiRoutes/index.d.mts.map +1 -0
- package/dist/src/web/services/apiRoutes/index.mjs +43 -0
- package/dist/src/web/services/apiRoutes/index.mjs.map +1 -0
- package/dist/src/web/services/mcpWidget.cjs +9 -0
- package/dist/src/web/services/mcpWidget.cjs.map +1 -0
- package/dist/src/web/services/mcpWidget.d.mts +6 -0
- package/dist/src/web/services/mcpWidget.d.mts.map +1 -0
- package/dist/src/web/services/mcpWidget.mjs +9 -0
- package/dist/src/web/services/mcpWidget.mjs.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.cjs +70 -0
- package/dist/src/web/services/sessionRegistry/index.cjs.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.d.mts +29 -0
- package/dist/src/web/services/sessionRegistry/index.d.mts.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.mjs +66 -0
- package/dist/src/web/services/sessionRegistry/index.mjs.map +1 -0
- package/dist/src/web/services/testing/channels.cjs +11 -0
- package/dist/src/web/services/testing/channels.cjs.map +1 -0
- package/dist/src/web/services/testing/channels.d.mts +8 -0
- package/dist/src/web/services/testing/channels.d.mts.map +1 -0
- package/dist/src/web/services/testing/channels.mjs +11 -0
- package/dist/src/web/services/testing/channels.mjs.map +1 -0
- package/dist/src/web/services/testing/index.cjs +27 -0
- package/dist/src/web/services/testing/index.cjs.map +1 -0
- package/dist/src/web/services/testing/index.d.mts +31 -0
- package/dist/src/web/services/testing/index.d.mts.map +1 -0
- package/dist/src/web/services/testing/index.mjs +27 -0
- package/dist/src/web/services/testing/index.mjs.map +1 -0
- package/dist/src/web/services/testing/rpcStub.cjs +58 -0
- package/dist/src/web/services/testing/rpcStub.cjs.map +1 -0
- package/dist/src/web/services/testing/rpcStub.d.mts +37 -0
- package/dist/src/web/services/testing/rpcStub.d.mts.map +1 -0
- package/dist/src/web/services/testing/rpcStub.mjs +58 -0
- package/dist/src/web/services/testing/rpcStub.mjs.map +1 -0
- package/dist/src/web/services/testing/slotProps.cjs +97 -0
- package/dist/src/web/services/testing/slotProps.cjs.map +1 -0
- package/dist/src/web/services/testing/slotProps.d.mts +69 -0
- package/dist/src/web/services/testing/slotProps.d.mts.map +1 -0
- package/dist/src/web/services/testing/slotProps.mjs +96 -0
- package/dist/src/web/services/testing/slotProps.mjs.map +1 -0
- package/dist/src/web/services/testing/templateRail.cjs +156 -0
- package/dist/src/web/services/testing/templateRail.cjs.map +1 -0
- package/dist/src/web/services/testing/templateRail.d.mts +32 -0
- package/dist/src/web/services/testing/templateRail.d.mts.map +1 -0
- package/dist/src/web/services/testing/templateRail.mjs +154 -0
- package/dist/src/web/services/testing/templateRail.mjs.map +1 -0
- package/dist/src/web/services/toolResult/index.cjs +30 -0
- package/dist/src/web/services/toolResult/index.cjs.map +1 -0
- package/dist/src/web/services/toolResult/index.d.mts +14 -0
- package/dist/src/web/services/toolResult/index.d.mts.map +1 -0
- package/dist/src/web/services/toolResult/index.mjs +29 -0
- package/dist/src/web/services/toolResult/index.mjs.map +1 -0
- package/dist/src/web/types/extensionFile.d.mts +62 -0
- package/dist/src/web/types/extensionFile.d.mts.map +1 -0
- package/dist/src/web/types/mcpWidget.d.mts +14 -0
- package/dist/src/web/types/mcpWidget.d.mts.map +1 -0
- package/dist/src/web/types/modelContext.d.mts +43 -0
- package/dist/src/web/types/modelContext.d.mts.map +1 -0
- package/dist/src/web/types/nativeTemplate.d.mts +29 -0
- package/dist/src/web/types/nativeTemplate.d.mts.map +1 -0
- package/dist/src/web/types/sessionRegistry.d.mts +46 -0
- package/dist/src/web/types/sessionRegistry.d.mts.map +1 -0
- package/dist/src/web/types/template.d.mts +135 -0
- package/dist/src/web/types/template.d.mts.map +1 -0
- package/dist/src/web/types/webPlugin.d.mts +915 -0
- package/dist/src/web/types/webPlugin.d.mts.map +1 -0
- package/dist/terminalPiChildSessionService.cjs +324 -0
- package/dist/terminalPiChildSessionService.cjs.map +1 -0
- package/dist/terminalPiChildSessionService.d.mts +46 -0
- package/dist/terminalPiChildSessionService.d.mts.map +1 -0
- package/dist/terminalPiChildSessionService.mjs +318 -0
- package/dist/terminalPiChildSessionService.mjs.map +1 -0
- package/dist/testing.cjs +11 -0
- package/dist/testing.d.mts +6 -0
- package/dist/testing.mjs +6 -0
- package/dist/toolInventory.cjs +136 -0
- package/dist/toolInventory.cjs.map +1 -0
- package/dist/toolInventory.d.mts +66 -0
- package/dist/toolInventory.d.mts.map +1 -0
- package/dist/toolInventory.mjs +133 -0
- package/dist/toolInventory.mjs.map +1 -0
- package/dist/toolNames.cjs +4 -0
- package/dist/toolNames.d.mts +2 -0
- package/dist/toolNames.mjs +2 -0
- package/dist/toolOverrides.cjs +7 -0
- package/dist/toolOverrides.d.mts +3 -0
- package/dist/toolOverrides.mjs +3 -0
- package/dist/toolSurface.cjs +7 -0
- package/dist/toolSurface.d.mts +3 -0
- package/dist/toolSurface.mjs +3 -0
- package/dist/transition.cjs +5 -0
- package/dist/transition.d.cjs +5 -0
- package/dist/transition.d.mts +2 -0
- package/dist/transition.mjs +2 -0
- package/dist/transitionClassifier.cjs +112 -0
- package/dist/transitionClassifier.cjs.map +1 -0
- package/dist/transitionClassifier.d.mts +18 -0
- package/dist/transitionClassifier.d.mts.map +1 -0
- package/dist/transitionClassifier.mjs +111 -0
- package/dist/transitionClassifier.mjs.map +1 -0
- package/dist/transitionCoordinator.cjs +131 -0
- package/dist/transitionCoordinator.cjs.map +1 -0
- package/dist/transitionCoordinator.d.mts +16 -0
- package/dist/transitionCoordinator.d.mts.map +1 -0
- package/dist/transitionCoordinator.mjs +130 -0
- package/dist/transitionCoordinator.mjs.map +1 -0
- package/dist/typesContextApi.cjs +0 -0
- package/dist/typesContextApi.d.mts +79 -0
- package/dist/typesContextApi.d.mts.map +1 -0
- package/dist/typesContextApi.mjs +1 -0
- package/dist/uiHub.cjs +5 -0
- package/dist/uiHub.d.mts +2 -0
- package/dist/uiHub.mjs +2 -0
- package/dist/v3Export.cjs +10 -0
- package/dist/v3Export.cjs.map +1 -0
- package/dist/v3Export.d.mts +35 -0
- package/dist/v3Export.d.mts.map +1 -0
- package/dist/v3Export.mjs +9 -0
- package/dist/v3Export.mjs.map +1 -0
- package/dist/voiceReloadHandoff.cjs +14 -0
- package/dist/voiceReloadHandoff.d.mts +4 -0
- package/dist/voiceReloadHandoff.mjs +4 -0
- package/dist/voiceTools.cjs +56 -0
- package/dist/voiceTools.d.mts +4 -0
- package/dist/voiceTools.mjs +4 -0
- package/dist/web.cjs +65 -0
- package/dist/web.d.mts +20 -0
- package/dist/web.mjs +13 -0
- package/dist/webCompositions.cjs +181 -0
- package/dist/webCompositions.cjs.map +1 -0
- package/dist/webCompositions.d.mts +79 -0
- package/dist/webCompositions.d.mts.map +1 -0
- package/dist/webCompositions.mjs +174 -0
- package/dist/webCompositions.mjs.map +1 -0
- package/dist/webTesting.cjs +14 -0
- package/dist/webTesting.d.mts +6 -0
- package/dist/webTesting.mjs +6 -0
- package/package.json +586 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionScenarios.mjs","names":[],"sources":["../../../../src/testing/pi/extensionScenarios.ts"],"sourcesContent":["import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\nimport { createPiTestHost, type PiTestHost, type PiTestHostOptions } from './testHost';\n\n/**\n * The lifecycle every standard Pi entry owes its host, as runnable scenarios.\n *\n * Eight packages carry their own partial copy of this, and the copies disagree\n * about which parts matter. What they share is what a host actually depends on:\n * that loading the entry registers something, that shutdown can be delivered\n * twice, and that a `/reload` can install the entry again on the same runner.\n *\n * Scenarios are plain data, not `describe`/`it` calls, so this adds no test\n * framework to a package every extension already installs. A caller loops:\n *\n * ```ts\n * for (const scenario of standardExtensionScenarios({ factory, tools: ['x'] })) {\n * it(scenario.name, () => scenario.run());\n * }\n * ```\n *\n * Deeper fencing is deliberately not here. A package that makes a shut-down\n * tool answer instead of run owns that message and that decision, so it keeps\n * the test too; this covers only what is true of every extension.\n */\n\nexport interface StandardExtensionContractOptions {\n /** The package's standard Pi entry: the default export Pi invokes. */\n factory(pi: ExtensionAPI): Promise<void> | void;\n /** Tool names loading the entry must register. */\n tools?: readonly string[];\n /** Slash commands loading the entry must claim. */\n commands?: readonly string[];\n /** A fresh host per scenario, for a factory that needs one stubbed a certain way. */\n createHost?: (options: PiTestHostOptions) => PiTestHost;\n}\n\nexport interface ExtensionContractScenario {\n name: string;\n run(): Promise<void>;\n}\n\nconst SHUTDOWN_EVENT = 'session_shutdown';\nconst START_EVENT = 'session_start';\n\nfunction fail(message: string): never {\n throw new Error(message);\n}\n\nfunction assertContains(actual: readonly string[], expected: readonly string[], subject: string): void {\n const missing = expected.filter((name) => !actual.includes(name));\n if (missing.length > 0) {\n fail(`Expected ${subject} ${missing.join(', ')}; the entry registered ${actual.join(', ') || 'nothing'}.`);\n }\n}\n\nexport function standardExtensionScenarios(\n options: StandardExtensionContractOptions,\n): readonly ExtensionContractScenario[] {\n const expectedTools = options.tools ?? [];\n const expectedCommands = options.commands ?? [];\n const build = options.createHost ?? createPiTestHost;\n\n /** Runs one scenario against its own host, and disposes it either way. */\n const scenario = (\n name: string,\n hostOptions: PiTestHostOptions,\n body: (host: PiTestHost) => Promise<void>,\n ): ExtensionContractScenario => ({\n name,\n async run() {\n const host = build(hostOptions);\n try {\n await host.cordis('standard-extension-contract');\n await body(host);\n } finally {\n await host.dispose();\n }\n },\n });\n\n return [\n scenario('registers its declared tools and commands when the host loads it', {}, async (host) => {\n await host.cordis('standard-extension-contract');\n await options.factory(host.pi);\n\n assertContains(\n host.tools.map(({ name }) => name),\n expectedTools,\n 'the entry to register tools',\n );\n assertContains(\n host.commands.map(({ name }) => name),\n expectedCommands,\n 'the entry to claim commands',\n );\n }),\n\n scenario('handles session_shutdown, so the host can reclaim what it registered', {}, async (host) => {\n const before = host.handlers(SHUTDOWN_EVENT).length;\n await host.cordis('standard-extension-contract');\n await options.factory(host.pi);\n\n if (host.handlers(SHUTDOWN_EVENT).length === before) {\n fail('The entry registered no session_shutdown handler, so nothing it holds is ever released.');\n }\n }),\n\n scenario('takes a repeated shutdown without failing the second one', {}, async (host) => {\n // Pi delivers shutdown per registered extension, and a package that\n // installed twice on one runner receives it twice.\n await host.cordis('standard-extension-contract');\n await options.factory(host.pi);\n\n await host.emit(SHUTDOWN_EVENT, { reason: 'quit' });\n await host.emit(SHUTDOWN_EVENT, { reason: 'quit' });\n }),\n\n scenario('loads again on the same host after a shutdown, the way /reload does', {}, async (host) => {\n await host.cordis('standard-extension-contract');\n await options.factory(host.pi);\n await host.emit(SHUTDOWN_EVENT, { reason: 'reload' });\n const before = host.tools.length;\n\n await host.cordis('standard-extension-contract');\n await host.cordis('standard-extension-contract');\n await options.factory(host.pi);\n\n if (expectedTools.length > 0 && host.tools.length === before) {\n fail('Loading the entry again registered nothing: a module-level latch is surviving the reload.');\n }\n assertContains(\n host.tools.slice(before).map(({ name }) => name),\n expectedTools,\n 'the reloaded entry to register tools',\n );\n }),\n\n // The cockpit and the RPC runtime both load extensions with no TUI. An\n // entry that reaches for one there takes the whole session down.\n scenario('installs and shuts down on a headless host', { hasUI: false, mode: 'rpc' }, async (host) => {\n await host.cordis('standard-extension-contract');\n await options.factory(host.pi);\n await host.emit(START_EVENT, { reason: 'startup' });\n await host.emit(SHUTDOWN_EVENT, { reason: 'quit' });\n }),\n ];\n}\n"],"mappings":";;AA0CA,MAAM,iBAAiB;AACvB,MAAM,cAAc;AAEpB,SAAS,KAAK,SAAwB;CACpC,MAAM,IAAI,MAAM,OAAO;AACzB;AAEA,SAAS,eAAe,QAA2B,UAA6B,SAAuB;CACrG,MAAM,UAAU,SAAS,QAAQ,SAAS,CAAC,OAAO,SAAS,IAAI,CAAC;CAChE,IAAI,QAAQ,SAAS,GACnB,KAAK,YAAY,QAAQ,GAAG,QAAQ,KAAK,IAAI,EAAE,yBAAyB,OAAO,KAAK,IAAI,KAAK,UAAU,EAAE;AAE7G;AAEA,SAAgB,2BACd,SACsC;CACtC,MAAM,gBAAgB,QAAQ,SAAS,CAAC;CACxC,MAAM,mBAAmB,QAAQ,YAAY,CAAC;CAC9C,MAAM,QAAQ,QAAQ,cAAc;;CAGpC,MAAM,YACJ,MACA,aACA,UAC+B;EAC/B;EACA,MAAM,MAAM;GACV,MAAM,OAAO,MAAM,WAAW;GAC9B,IAAI;IACF,MAAM,KAAK,OAAO,6BAA6B;IAC/C,MAAM,KAAK,IAAI;GACjB,UAAU;IACR,MAAM,KAAK,QAAQ;GACrB;EACF;CACF;CAEA,OAAO;EACL,SAAS,oEAAoE,CAAC,GAAG,OAAO,SAAS;GAC/F,MAAM,KAAK,OAAO,6BAA6B;GAC/C,MAAM,QAAQ,QAAQ,KAAK,EAAE;GAE7B,eACE,KAAK,MAAM,KAAK,EAAE,WAAW,IAAI,GACjC,eACA,6BACF;GACA,eACE,KAAK,SAAS,KAAK,EAAE,WAAW,IAAI,GACpC,kBACA,6BACF;EACF,CAAC;EAED,SAAS,wEAAwE,CAAC,GAAG,OAAO,SAAS;GACnG,MAAM,SAAS,KAAK,SAAS,cAAc,CAAC,CAAC;GAC7C,MAAM,KAAK,OAAO,6BAA6B;GAC/C,MAAM,QAAQ,QAAQ,KAAK,EAAE;GAE7B,IAAI,KAAK,SAAS,cAAc,CAAC,CAAC,WAAW,QAC3C,KAAK,yFAAyF;EAElG,CAAC;EAED,SAAS,4DAA4D,CAAC,GAAG,OAAO,SAAS;GAGvF,MAAM,KAAK,OAAO,6BAA6B;GAC/C,MAAM,QAAQ,QAAQ,KAAK,EAAE;GAE7B,MAAM,KAAK,KAAK,gBAAgB,EAAE,QAAQ,OAAO,CAAC;GAClD,MAAM,KAAK,KAAK,gBAAgB,EAAE,QAAQ,OAAO,CAAC;EACpD,CAAC;EAED,SAAS,uEAAuE,CAAC,GAAG,OAAO,SAAS;GAClG,MAAM,KAAK,OAAO,6BAA6B;GAC/C,MAAM,QAAQ,QAAQ,KAAK,EAAE;GAC7B,MAAM,KAAK,KAAK,gBAAgB,EAAE,QAAQ,SAAS,CAAC;GACpD,MAAM,SAAS,KAAK,MAAM;GAE1B,MAAM,KAAK,OAAO,6BAA6B;GAC/C,MAAM,KAAK,OAAO,6BAA6B;GAC/C,MAAM,QAAQ,QAAQ,KAAK,EAAE;GAE7B,IAAI,cAAc,SAAS,KAAK,KAAK,MAAM,WAAW,QACpD,KAAK,2FAA2F;GAElG,eACE,KAAK,MAAM,MAAM,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,IAAI,GAC/C,eACA,sCACF;EACF,CAAC;EAID,SAAS,8CAA8C;GAAE,OAAO;GAAO,MAAM;EAAM,GAAG,OAAO,SAAS;GACpG,MAAM,KAAK,OAAO,6BAA6B;GAC/C,MAAM,QAAQ,QAAQ,KAAK,EAAE;GAC7B,MAAM,KAAK,KAAK,aAAa,EAAE,QAAQ,UAAU,CAAC;GAClD,MAAM,KAAK,KAAK,gBAAgB,EAAE,QAAQ,OAAO,CAAC;EACpD,CAAC;CACH;AACF"}
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
const require_runtimeCordisHost = require("../../../runtimeCordisHost.cjs");
|
|
2
|
+
//#region src/testing/pi/testHost.ts
|
|
3
|
+
function invokable(handler) {
|
|
4
|
+
return handler;
|
|
5
|
+
}
|
|
6
|
+
/** Inventory entry for a host-owned tool this harness cannot execute. */
|
|
7
|
+
function builtinToolInfo(name) {
|
|
8
|
+
return {
|
|
9
|
+
name,
|
|
10
|
+
description: `Built-in ${name}`,
|
|
11
|
+
parameters: {
|
|
12
|
+
type: "object",
|
|
13
|
+
properties: {},
|
|
14
|
+
additionalProperties: false
|
|
15
|
+
},
|
|
16
|
+
sourceInfo: { type: "builtin" }
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/** Inventory view of a tool an extension registered with this host. */
|
|
20
|
+
function registeredToolInfo(tool) {
|
|
21
|
+
return {
|
|
22
|
+
name: tool.name,
|
|
23
|
+
description: tool.description,
|
|
24
|
+
parameters: tool.parameters,
|
|
25
|
+
promptGuidelines: tool.promptGuidelines,
|
|
26
|
+
sourceInfo: { type: "extension" }
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const DEFAULT_CWD = "/repo";
|
|
30
|
+
const DEFAULT_SESSION_ID = "test-session";
|
|
31
|
+
const DEFAULT_MODE = "tui";
|
|
32
|
+
const DEFAULT_SYSTEM_PROMPT = "";
|
|
33
|
+
const DEFAULT_CORDIS_SOURCE = "pi-test-host";
|
|
34
|
+
const DEFAULT_EXEC = {
|
|
35
|
+
code: 0,
|
|
36
|
+
killed: false,
|
|
37
|
+
stdout: "",
|
|
38
|
+
stderr: ""
|
|
39
|
+
};
|
|
40
|
+
const DISMISSED = {
|
|
41
|
+
select: () => void 0,
|
|
42
|
+
confirm: () => false,
|
|
43
|
+
input: () => void 0,
|
|
44
|
+
editor: () => void 0
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* A Pi host and the records of what an extension did to it.
|
|
48
|
+
*
|
|
49
|
+
* Nothing here is a spy from a test framework: the records are plain arrays, so
|
|
50
|
+
* the harness works under any runner and adds no dependency to a package that
|
|
51
|
+
* every extension already installs.
|
|
52
|
+
*/
|
|
53
|
+
function createPiTestHost(options = {}) {
|
|
54
|
+
const builtinTools = options.builtinTools ?? [];
|
|
55
|
+
const tools = [];
|
|
56
|
+
const commands = [];
|
|
57
|
+
const shortcuts = [];
|
|
58
|
+
const flags = /* @__PURE__ */ new Map();
|
|
59
|
+
const messageRenderers = [];
|
|
60
|
+
const entryRenderers = [];
|
|
61
|
+
const markdownTransformers = [];
|
|
62
|
+
const providers = [];
|
|
63
|
+
const unregisteredProviders = [];
|
|
64
|
+
const messages = [];
|
|
65
|
+
const userMessages = [];
|
|
66
|
+
const entries = [];
|
|
67
|
+
const execs = [];
|
|
68
|
+
const notifications = [];
|
|
69
|
+
const statuses = [];
|
|
70
|
+
const widgets = [];
|
|
71
|
+
const lifecycle = /* @__PURE__ */ new Map();
|
|
72
|
+
const channels = /* @__PURE__ */ new Map();
|
|
73
|
+
let activeToolNames = [...builtinTools];
|
|
74
|
+
let sessionName;
|
|
75
|
+
let thinkingLevel = "off";
|
|
76
|
+
let cordisConnection;
|
|
77
|
+
const runExec = options.exec ?? (() => DEFAULT_EXEC);
|
|
78
|
+
const pi = {
|
|
79
|
+
on(event, handler) {
|
|
80
|
+
const registered = lifecycle.get(event) ?? [];
|
|
81
|
+
registered.push(handler);
|
|
82
|
+
lifecycle.set(event, registered);
|
|
83
|
+
return () => {
|
|
84
|
+
const index = registered.indexOf(handler);
|
|
85
|
+
if (index === -1) return;
|
|
86
|
+
registered.splice(index, 1);
|
|
87
|
+
if (registered.length === 0) lifecycle.delete(event);
|
|
88
|
+
};
|
|
89
|
+
},
|
|
90
|
+
registerTool(tool) {
|
|
91
|
+
tools.push(tool);
|
|
92
|
+
if (!activeToolNames.includes(tool.name)) activeToolNames.push(tool.name);
|
|
93
|
+
},
|
|
94
|
+
registerToolRenderer() {},
|
|
95
|
+
registerCommand(name, commandOptions) {
|
|
96
|
+
commands.push({
|
|
97
|
+
name,
|
|
98
|
+
options: commandOptions
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
registerShortcut(shortcut, shortcutOptions) {
|
|
102
|
+
shortcuts.push({
|
|
103
|
+
shortcut,
|
|
104
|
+
options: shortcutOptions
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
registerFlag(name, flagOptions) {
|
|
108
|
+
flags.set(name, flagOptions);
|
|
109
|
+
},
|
|
110
|
+
getFlag(name) {
|
|
111
|
+
return flags.get(name)?.default;
|
|
112
|
+
},
|
|
113
|
+
registerMessageRenderer(customType, renderer) {
|
|
114
|
+
messageRenderers.push({
|
|
115
|
+
customType,
|
|
116
|
+
renderer
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
registerMarkdownTransformer(transformer) {
|
|
120
|
+
markdownTransformers.push(transformer);
|
|
121
|
+
},
|
|
122
|
+
registerEntryRenderer(customType, renderer) {
|
|
123
|
+
entryRenderers.push({
|
|
124
|
+
customType,
|
|
125
|
+
renderer
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
sendMessage(message, sendOptions) {
|
|
129
|
+
messages.push({
|
|
130
|
+
message,
|
|
131
|
+
options: sendOptions
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
sendUserMessage(content, sendOptions) {
|
|
135
|
+
userMessages.push({
|
|
136
|
+
content,
|
|
137
|
+
options: sendOptions
|
|
138
|
+
});
|
|
139
|
+
},
|
|
140
|
+
appendEntry(customType, data) {
|
|
141
|
+
entries.push({
|
|
142
|
+
customType,
|
|
143
|
+
data
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
setSessionName(name) {
|
|
147
|
+
sessionName = name;
|
|
148
|
+
},
|
|
149
|
+
getSessionName() {
|
|
150
|
+
return sessionName;
|
|
151
|
+
},
|
|
152
|
+
setLabel() {},
|
|
153
|
+
async exec(command, args, execOptions) {
|
|
154
|
+
execs.push({
|
|
155
|
+
command,
|
|
156
|
+
args,
|
|
157
|
+
options: execOptions
|
|
158
|
+
});
|
|
159
|
+
return runExec(command, args);
|
|
160
|
+
},
|
|
161
|
+
getActiveTools() {
|
|
162
|
+
return [...activeToolNames];
|
|
163
|
+
},
|
|
164
|
+
getAllTools() {
|
|
165
|
+
return [...builtinTools.map(builtinToolInfo), ...tools.map(registeredToolInfo)];
|
|
166
|
+
},
|
|
167
|
+
setActiveTools(toolNames) {
|
|
168
|
+
activeToolNames = [...toolNames];
|
|
169
|
+
},
|
|
170
|
+
getSettings() {
|
|
171
|
+
return {};
|
|
172
|
+
},
|
|
173
|
+
registerMcpServer() {},
|
|
174
|
+
unregisterMcpServer() {},
|
|
175
|
+
getMcpServers() {
|
|
176
|
+
return [];
|
|
177
|
+
},
|
|
178
|
+
registerVirtualModel() {},
|
|
179
|
+
unregisterVirtualModel() {},
|
|
180
|
+
getCommands() {
|
|
181
|
+
return [];
|
|
182
|
+
},
|
|
183
|
+
async setModel() {
|
|
184
|
+
return false;
|
|
185
|
+
},
|
|
186
|
+
getThinkingLevel() {
|
|
187
|
+
return thinkingLevel;
|
|
188
|
+
},
|
|
189
|
+
setThinkingLevel(level) {
|
|
190
|
+
thinkingLevel = level;
|
|
191
|
+
},
|
|
192
|
+
registerProvider(providerOrName, config) {
|
|
193
|
+
providers.push(typeof providerOrName === "string" ? {
|
|
194
|
+
name: providerOrName,
|
|
195
|
+
value: config
|
|
196
|
+
} : { value: providerOrName });
|
|
197
|
+
},
|
|
198
|
+
unregisterProvider(name) {
|
|
199
|
+
unregisteredProviders.push(name);
|
|
200
|
+
},
|
|
201
|
+
events: {
|
|
202
|
+
emit(channel, data) {
|
|
203
|
+
const delivered = [...channels.get(channel) ?? []];
|
|
204
|
+
for (const listener of delivered) listener(data);
|
|
205
|
+
},
|
|
206
|
+
on(channel, listener) {
|
|
207
|
+
const listeners = channels.get(channel) ?? /* @__PURE__ */ new Set();
|
|
208
|
+
listeners.add(listener);
|
|
209
|
+
channels.set(channel, listeners);
|
|
210
|
+
return () => listeners.delete(listener);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
function buildContext(contextOptions = {}) {
|
|
215
|
+
const sessionId = contextOptions.sessionId ?? options.sessionId ?? DEFAULT_SESSION_ID;
|
|
216
|
+
const cwd = contextOptions.cwd ?? options.cwd ?? DEFAULT_CWD;
|
|
217
|
+
const answers = {
|
|
218
|
+
...DISMISSED,
|
|
219
|
+
...options.answers,
|
|
220
|
+
...contextOptions.answers
|
|
221
|
+
};
|
|
222
|
+
return {
|
|
223
|
+
ui: {
|
|
224
|
+
select: async (title, selectOptions) => answers.select(title, selectOptions),
|
|
225
|
+
confirm: async (title, message) => answers.confirm(title, message),
|
|
226
|
+
input: async (title, placeholder) => answers.input(title, placeholder),
|
|
227
|
+
editor: async (title, prefill) => answers.editor(title, prefill),
|
|
228
|
+
notify: (message, level) => {
|
|
229
|
+
notifications.push({
|
|
230
|
+
sessionId,
|
|
231
|
+
message,
|
|
232
|
+
level
|
|
233
|
+
});
|
|
234
|
+
},
|
|
235
|
+
onTerminalInput: () => () => void 0,
|
|
236
|
+
setStatus: (key, text) => {
|
|
237
|
+
statuses.push({
|
|
238
|
+
sessionId,
|
|
239
|
+
key,
|
|
240
|
+
text
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
setWorkingMessage: () => void 0,
|
|
244
|
+
setWorkingVisible: () => void 0,
|
|
245
|
+
setWorkingIndicator: () => void 0,
|
|
246
|
+
setHiddenThinkingLabel: () => void 0,
|
|
247
|
+
setWidget: (key, content) => {
|
|
248
|
+
widgets.push({
|
|
249
|
+
sessionId,
|
|
250
|
+
key,
|
|
251
|
+
content
|
|
252
|
+
});
|
|
253
|
+
},
|
|
254
|
+
setFooter: () => void 0,
|
|
255
|
+
setHeader: () => void 0,
|
|
256
|
+
setTitle: () => void 0,
|
|
257
|
+
custom: () => new Promise(() => void 0),
|
|
258
|
+
pasteToEditor: () => void 0,
|
|
259
|
+
setEditorText: () => void 0,
|
|
260
|
+
getEditorText: () => "",
|
|
261
|
+
addAutocompleteProvider: () => void 0,
|
|
262
|
+
setEditorComponent: () => void 0,
|
|
263
|
+
getEditorComponent: () => void 0,
|
|
264
|
+
theme: void 0,
|
|
265
|
+
getAllThemes: () => [],
|
|
266
|
+
getTheme: () => void 0,
|
|
267
|
+
setTheme: () => ({
|
|
268
|
+
success: false,
|
|
269
|
+
error: "This host renders nothing."
|
|
270
|
+
}),
|
|
271
|
+
getToolsExpanded: () => false,
|
|
272
|
+
setToolsExpanded: () => void 0
|
|
273
|
+
},
|
|
274
|
+
mode: contextOptions.mode ?? options.mode ?? DEFAULT_MODE,
|
|
275
|
+
hasUI: contextOptions.hasUI ?? options.hasUI ?? true,
|
|
276
|
+
cwd,
|
|
277
|
+
sessionManager: {
|
|
278
|
+
getCwd: () => cwd,
|
|
279
|
+
getSessionId: () => sessionId,
|
|
280
|
+
getSessionName: () => sessionName,
|
|
281
|
+
getSessionDir: () => cwd,
|
|
282
|
+
getSessionFile: () => `${cwd}/${sessionId}.jsonl`,
|
|
283
|
+
getLeafId: () => void 0,
|
|
284
|
+
getLeafEntry: () => void 0,
|
|
285
|
+
getEntry: () => void 0,
|
|
286
|
+
getLabel: () => void 0,
|
|
287
|
+
getBranch: () => [],
|
|
288
|
+
buildContextEntries: () => [],
|
|
289
|
+
getHeader: () => void 0,
|
|
290
|
+
getEntries: () => [],
|
|
291
|
+
getTree: () => []
|
|
292
|
+
},
|
|
293
|
+
modelRegistry: void 0,
|
|
294
|
+
model: void 0,
|
|
295
|
+
scopedModels: [],
|
|
296
|
+
isIdle: () => contextOptions.isIdle ?? options.isIdle ?? true,
|
|
297
|
+
isProjectTrusted: () => contextOptions.isProjectTrusted ?? options.isProjectTrusted ?? true,
|
|
298
|
+
signal: contextOptions.signal ?? options.signal,
|
|
299
|
+
abort: () => void 0,
|
|
300
|
+
hasPendingMessages: () => false,
|
|
301
|
+
shutdown: () => void 0,
|
|
302
|
+
getContextUsage: () => void 0,
|
|
303
|
+
compact: () => void 0,
|
|
304
|
+
getSystemPrompt: () => contextOptions.systemPrompt ?? options.systemPrompt ?? DEFAULT_SYSTEM_PROMPT,
|
|
305
|
+
getSystemPromptOptions: () => ({}),
|
|
306
|
+
waitForIdle: async () => void 0,
|
|
307
|
+
newSession: async () => ({ cancelled: true }),
|
|
308
|
+
fork: async () => ({ cancelled: true }),
|
|
309
|
+
navigateTree: async () => ({ cancelled: true }),
|
|
310
|
+
switchSession: async () => ({ cancelled: true }),
|
|
311
|
+
reload: async () => void 0,
|
|
312
|
+
tools: [],
|
|
313
|
+
executeTool: async (name) => ({
|
|
314
|
+
toolCall: {
|
|
315
|
+
type: "toolCall",
|
|
316
|
+
id: "nested/0",
|
|
317
|
+
name,
|
|
318
|
+
arguments: {}
|
|
319
|
+
},
|
|
320
|
+
result: {
|
|
321
|
+
content: [{
|
|
322
|
+
type: "text",
|
|
323
|
+
text: "Nested tool calls are not available in this context"
|
|
324
|
+
}],
|
|
325
|
+
details: {}
|
|
326
|
+
},
|
|
327
|
+
isError: true
|
|
328
|
+
})
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
return {
|
|
332
|
+
pi,
|
|
333
|
+
tools,
|
|
334
|
+
commands,
|
|
335
|
+
shortcuts,
|
|
336
|
+
flags,
|
|
337
|
+
messageRenderers,
|
|
338
|
+
entryRenderers,
|
|
339
|
+
markdownTransformers,
|
|
340
|
+
providers,
|
|
341
|
+
unregisteredProviders,
|
|
342
|
+
messages,
|
|
343
|
+
userMessages,
|
|
344
|
+
entries,
|
|
345
|
+
execs,
|
|
346
|
+
notifications,
|
|
347
|
+
statuses,
|
|
348
|
+
widgets,
|
|
349
|
+
activeTools: () => [...activeToolNames],
|
|
350
|
+
tool: (name) => tools.findLast((candidate) => candidate.name === name),
|
|
351
|
+
command: (name) => commands.find((candidate) => candidate.name === name),
|
|
352
|
+
handlers: (event) => (lifecycle.get(event) ?? []).map(invokable),
|
|
353
|
+
context: buildContext,
|
|
354
|
+
async emit(event, payload, context) {
|
|
355
|
+
const eventContext = context ?? buildContext();
|
|
356
|
+
const answered = [];
|
|
357
|
+
const delivered = [...lifecycle.get(event) ?? []];
|
|
358
|
+
for (const handler of delivered) answered.push(await invokable(handler)({
|
|
359
|
+
type: event,
|
|
360
|
+
...payload
|
|
361
|
+
}, eventContext));
|
|
362
|
+
if (event === "session_shutdown") cordisConnection = void 0;
|
|
363
|
+
return answered;
|
|
364
|
+
},
|
|
365
|
+
async callTool(name, params = {}, callOptions = {}) {
|
|
366
|
+
const tool = tools.findLast((candidate) => candidate.name === name);
|
|
367
|
+
if (!tool) throw new Error(`No tool named '${name}' is registered on this host.`);
|
|
368
|
+
return tool.execute(callOptions.toolCallId ?? `call-${String(tools.indexOf(tool))}`, params, callOptions.signal, callOptions.onUpdate, callOptions.context ?? buildContext());
|
|
369
|
+
},
|
|
370
|
+
async runCommand(name, args = "", context) {
|
|
371
|
+
const command = commands.find((candidate) => candidate.name === name);
|
|
372
|
+
if (!command) throw new Error(`No command named '${name}' is registered on this host.`);
|
|
373
|
+
await command.options.handler(args, context ?? buildContext());
|
|
374
|
+
},
|
|
375
|
+
async cordis(source = DEFAULT_CORDIS_SOURCE) {
|
|
376
|
+
if (cordisConnection === void 0) {
|
|
377
|
+
const controller = await require_runtimeCordisHost.installDoomCordisHost(pi, {
|
|
378
|
+
mode: "standalone",
|
|
379
|
+
source: `${source}:standalone-host`
|
|
380
|
+
});
|
|
381
|
+
try {
|
|
382
|
+
cordisConnection = await require_runtimeCordisHost.connectDoomCordisHost(pi, source);
|
|
383
|
+
} catch (error) {
|
|
384
|
+
await controller.shutdown();
|
|
385
|
+
throw error;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return cordisConnection;
|
|
389
|
+
},
|
|
390
|
+
async dispose() {
|
|
391
|
+
await cordisConnection?.dispose();
|
|
392
|
+
cordisConnection = void 0;
|
|
393
|
+
}
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
//#endregion
|
|
397
|
+
exports.createPiTestHost = createPiTestHost;
|
|
398
|
+
|
|
399
|
+
//# sourceMappingURL=testHost.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testHost.cjs","names":["installDoomCordisHost","connectDoomCordisHost"],"sources":["../../../../src/testing/pi/testHost.ts"],"sourcesContent":["import type {\n ExtensionAPI,\n ExtensionContext,\n ExtensionToolContext,\n ToolDefinition,\n ToolInfo,\n} from '@earendil-works/pi-coding-agent';\nimport type { TSchema } from 'typebox';\n\nimport { connectDoomCordisHost, installDoomCordisHost, type DoomCordisHostConnection } from '../../pi/cordisHost';\n\n/**\n * A Pi host a test drives, in place of the one Pi builds at runtime.\n *\n * Every extension package needs one, and before this each wrote its own as an\n * `as unknown as ExtensionAPI` cast over the four or five members that package\n * happened to call. A cast type-checks whatever Pi's interface becomes, so the\n * casts all kept passing while diverging from each other and from Pi.\n *\n * `pi` here is a plain `ExtensionAPI`, assigned without a cast. When a Pi\n * upgrade adds or reshapes a member, this file stops compiling, which is the\n * whole point: one place to notice, instead of ninety places that never do.\n *\n * `ExtensionContext` cannot be held to the same standard and is built with one\n * cast, named at the site. Three of its members are unsatisfiable by an object\n * literal: `modelRegistry` is a class with a private field, so it is nominally\n * typed; `ui.theme` is typed from a module Pi does not export; and `model` is\n * a populated provider record no test asserts on. The context is otherwise\n * built member by member, and the surface extensions actually program against,\n * `ExtensionAPI`, carries no cast at all.\n */\n\n/**\n * Every handler Pi's 34 `on` overloads accept, stored as one.\n *\n * `never` in the parameter positions is what makes all 34 assignable: a handler\n * is only accepted where the stored type asks for less than the handler does.\n * The consequence is that a stored handler cannot be called without widening it\n * back, which `invokable` does once, below. No single type both accepts every\n * overload and is callable with an arbitrary payload.\n */\ntype LifecycleHandler = (event: never, context: never) => unknown;\n/** One stored handler, widened at the single point that calls it. */\ntype InvokableHandler = (event: unknown, context: unknown) => unknown;\n\nfunction invokable(handler: LifecycleHandler): InvokableHandler {\n return handler as InvokableHandler;\n}\n\n/** Types Pi declares but does not re-export from its package root. */\ntype SessionManagerView = ExtensionContext['sessionManager'];\ntype RunMode = ExtensionContext['mode'];\ntype ShortcutId = Parameters<ExtensionAPI['registerShortcut']>[0];\ntype ShortcutOptions = Parameters<ExtensionAPI['registerShortcut']>[1];\ntype CommandOptions = Parameters<ExtensionAPI['registerCommand']>[1];\ntype FlagOptions = Parameters<ExtensionAPI['registerFlag']>[1];\ntype CustomMessagePayload = Parameters<ExtensionAPI['sendMessage']>[0];\ntype SendMessageOptions = Parameters<ExtensionAPI['sendMessage']>[1];\ntype UserMessageContent = Parameters<ExtensionAPI['sendUserMessage']>[0];\ntype SendUserMessageOptions = Parameters<ExtensionAPI['sendUserMessage']>[1];\ntype RegisteredTool = Parameters<ExtensionAPI['registerTool']>[0];\ntype ToolUpdateCallback = Parameters<RegisteredTool['execute']>[3];\ntype ExecutionResult = Awaited<ReturnType<ExtensionAPI['exec']>>;\ntype ExecutionOptions = Parameters<ExtensionAPI['exec']>[2];\ntype ThinkingLevelValue = ReturnType<ExtensionAPI['getThinkingLevel']>;\ntype WidgetContent = Parameters<ExtensionContext['ui']['setWidget']>[1];\n\n/** Inventory entry for a host-owned tool this harness cannot execute. */\nfunction builtinToolInfo(name: string): ToolInfo {\n return {\n name,\n description: `Built-in ${name}`,\n parameters: { type: 'object', properties: {}, additionalProperties: false },\n sourceInfo: { type: 'builtin' },\n } as unknown as ToolInfo;\n}\n\n/** Inventory view of a tool an extension registered with this host. */\nfunction registeredToolInfo(tool: RegisteredTool): ToolInfo {\n return {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n promptGuidelines: (tool as { promptGuidelines?: unknown }).promptGuidelines,\n sourceInfo: { type: 'extension' },\n } as unknown as ToolInfo;\n}\n\nexport interface RecordedCommand {\n name: string;\n options: CommandOptions;\n}\nexport interface RecordedShortcut {\n shortcut: ShortcutId;\n options: ShortcutOptions;\n}\nexport interface RecordedRenderer {\n customType: string;\n renderer: unknown;\n}\n/** A `registerProvider` call in either of its two shapes. */\nexport interface RecordedProvider {\n /** Present for the `(name, config)` overload. */\n name?: string;\n value: unknown;\n}\nexport interface RecordedMessage {\n message: CustomMessagePayload;\n options: SendMessageOptions;\n}\nexport interface RecordedUserMessage {\n content: UserMessageContent;\n options: SendUserMessageOptions;\n}\nexport interface RecordedEntry {\n customType: string;\n data: unknown;\n}\nexport interface RecordedExec {\n command: string;\n args: string[];\n options: ExecutionOptions;\n}\nexport interface RecordedNotification {\n sessionId: string;\n message: string;\n level: 'info' | 'warning' | 'error' | undefined;\n}\nexport interface RecordedWidget {\n sessionId: string;\n key: string;\n content: WidgetContent;\n}\nexport interface RecordedStatus {\n sessionId: string;\n key: string;\n text: string | undefined;\n}\n\n/**\n * What the extension's dialogs answer.\n *\n * Every default is the dismissal, because that is the answer a headless host\n * gives and the one an extension is most likely to mishandle.\n */\nexport interface PiTestDialogAnswers {\n select(title: string, options: string[]): string | undefined;\n confirm(title: string, message: string): boolean;\n input(title: string, placeholder: string | undefined): string | undefined;\n editor(title: string, prefill: string | undefined): string | undefined;\n}\n\nexport interface PiTestContextOptions {\n sessionId?: string;\n cwd?: string;\n hasUI?: boolean;\n mode?: RunMode;\n isIdle?: boolean;\n isProjectTrusted?: boolean;\n signal?: AbortSignal;\n answers?: Partial<PiTestDialogAnswers>;\n systemPrompt?: string;\n}\n\nexport interface PiTestHostOptions extends PiTestContextOptions {\n /** Answers `pi.exec`; the default reports a command that ran and printed nothing. */\n exec?: (command: string, args: string[]) => ExecutionResult | Promise<ExecutionResult>;\n /**\n * Tool names Pi would already own before any extension loads.\n *\n * They join the inventory and start active, which is how the tool surface\n * arbiter learns that a name like `read` exists without a definition for it.\n */\n builtinTools?: readonly string[];\n}\n\nexport interface PiTestHost {\n /** The host an extension factory receives. */\n readonly pi: ExtensionAPI;\n readonly tools: readonly RegisteredTool[];\n readonly commands: readonly RecordedCommand[];\n readonly shortcuts: readonly RecordedShortcut[];\n readonly flags: ReadonlyMap<string, FlagOptions>;\n readonly messageRenderers: readonly RecordedRenderer[];\n readonly entryRenderers: readonly RecordedRenderer[];\n readonly markdownTransformers: readonly unknown[];\n readonly providers: readonly RecordedProvider[];\n readonly unregisteredProviders: readonly string[];\n readonly messages: readonly RecordedMessage[];\n readonly userMessages: readonly RecordedUserMessage[];\n readonly entries: readonly RecordedEntry[];\n readonly execs: readonly RecordedExec[];\n readonly notifications: readonly RecordedNotification[];\n readonly statuses: readonly RecordedStatus[];\n readonly widgets: readonly RecordedWidget[];\n /** Tool names Pi would offer the model right now. */\n activeTools(): readonly string[];\n tool(name: string): RegisteredTool | undefined;\n command(name: string): RecordedCommand | undefined;\n /** Lifecycle handlers registered for one event, in registration order. */\n handlers(event: string): readonly InvokableHandler[];\n /** A context for this host; each call builds a fresh one, as Pi does per event. */\n context(options?: PiTestContextOptions): ExtensionToolContext;\n /**\n * Runs every handler for one lifecycle event and returns what they answered.\n *\n * Sequential and awaited, matching Pi, so a test can observe one handler's\n * effect on the next.\n */\n emit(event: string, payload?: unknown, context?: ExtensionContext): Promise<unknown[]>;\n /** Calls a registered tool the way Pi's runner does. */\n callTool(\n name: string,\n params?: unknown,\n options?: {\n toolCallId?: string;\n signal?: AbortSignal;\n onUpdate?: ToolUpdateCallback;\n context?: ExtensionToolContext;\n },\n ): Promise<unknown>;\n /** Runs a registered slash command the way Pi's palette does. */\n runCommand(name: string, args?: string, context?: ExtensionContext): Promise<void>;\n /** The real Cordis host on this runner, installed on first use and disposed by `dispose`. */\n cordis(source?: string): Promise<DoomCordisHostConnection>;\n dispose(): Promise<void>;\n}\n\nconst DEFAULT_CWD = '/repo';\nconst DEFAULT_SESSION_ID = 'test-session';\nconst DEFAULT_MODE: RunMode = 'tui';\nconst DEFAULT_SYSTEM_PROMPT = '';\nconst DEFAULT_CORDIS_SOURCE = 'pi-test-host';\nconst DEFAULT_EXEC: ExecutionResult = { code: 0, killed: false, stdout: '', stderr: '' };\n\nconst DISMISSED: PiTestDialogAnswers = {\n select: () => undefined,\n confirm: () => false,\n input: () => undefined,\n editor: () => undefined,\n};\n\n/**\n * A Pi host and the records of what an extension did to it.\n *\n * Nothing here is a spy from a test framework: the records are plain arrays, so\n * the harness works under any runner and adds no dependency to a package that\n * every extension already installs.\n */\nexport function createPiTestHost(options: PiTestHostOptions = {}): PiTestHost {\n const builtinTools: readonly string[] = options.builtinTools ?? [];\n const tools: RegisteredTool[] = [];\n const commands: RecordedCommand[] = [];\n const shortcuts: RecordedShortcut[] = [];\n const flags = new Map<string, FlagOptions>();\n const messageRenderers: RecordedRenderer[] = [];\n const entryRenderers: RecordedRenderer[] = [];\n const markdownTransformers: unknown[] = [];\n const providers: RecordedProvider[] = [];\n const unregisteredProviders: string[] = [];\n const messages: RecordedMessage[] = [];\n const userMessages: RecordedUserMessage[] = [];\n const entries: RecordedEntry[] = [];\n const execs: RecordedExec[] = [];\n const notifications: RecordedNotification[] = [];\n const statuses: RecordedStatus[] = [];\n const widgets: RecordedWidget[] = [];\n\n const lifecycle = new Map<string, LifecycleHandler[]>();\n const channels = new Map<string, Set<(data: unknown) => void>>();\n let activeToolNames: string[] = [...builtinTools];\n let sessionName: string | undefined;\n let thinkingLevel: ThinkingLevelValue = 'off';\n let cordisConnection: DoomCordisHostConnection | undefined;\n\n const runExec = options.exec ?? ((): ExecutionResult => DEFAULT_EXEC);\n\n const pi: ExtensionAPI = {\n on(event: string, handler: LifecycleHandler): () => void {\n const registered = lifecycle.get(event) ?? [];\n registered.push(handler);\n lifecycle.set(event, registered);\n return () => {\n const index = registered.indexOf(handler);\n if (index === -1) return;\n registered.splice(index, 1);\n if (registered.length === 0) lifecycle.delete(event);\n };\n },\n // Generic exactly as Pi declares it. Storage erases the schema generics; the\n // signature is the half that has to keep matching.\n registerTool<TParams extends TSchema = TSchema, TDetails = unknown, TState = unknown>(\n tool: ToolDefinition<TParams, TDetails, TState>,\n ): void {\n tools.push(tool as unknown as RegisteredTool);\n if (!activeToolNames.includes(tool.name)) activeToolNames.push(tool.name);\n },\n registerToolRenderer(): void {},\n registerCommand(name: string, commandOptions: CommandOptions): void {\n commands.push({ name, options: commandOptions });\n },\n registerShortcut(shortcut: ShortcutId, shortcutOptions: ShortcutOptions): void {\n shortcuts.push({ shortcut, options: shortcutOptions });\n },\n registerFlag(name: string, flagOptions: FlagOptions): void {\n flags.set(name, flagOptions);\n },\n getFlag(name: string): boolean | string | undefined {\n return flags.get(name)?.default;\n },\n registerMessageRenderer(customType: string, renderer: unknown): void {\n messageRenderers.push({ customType, renderer });\n },\n registerMarkdownTransformer(transformer: unknown): void {\n markdownTransformers.push(transformer);\n },\n registerEntryRenderer(customType: string, renderer: unknown): void {\n entryRenderers.push({ customType, renderer });\n },\n sendMessage(message: CustomMessagePayload, sendOptions?: SendMessageOptions): void {\n messages.push({ message, options: sendOptions });\n },\n sendUserMessage(content: UserMessageContent, sendOptions?: SendUserMessageOptions): void {\n userMessages.push({ content, options: sendOptions });\n },\n appendEntry(customType: string, data?: unknown): void {\n entries.push({ customType, data });\n },\n setSessionName(name: string): void {\n sessionName = name;\n },\n getSessionName(): string | undefined {\n return sessionName;\n },\n setLabel(): void {\n // Labels are session bookmarks; no Po extension reads them back.\n },\n async exec(command: string, args: string[], execOptions?: ExecutionOptions): Promise<ExecutionResult> {\n execs.push({ command, args, options: execOptions });\n return runExec(command, args);\n },\n getActiveTools(): string[] {\n return [...activeToolNames];\n },\n getAllTools(): ToolInfo[] {\n // Pi's inventory folds in built-in and MCP tools, which this host models\n // as names only: a test asserts on the surface, never on their behaviour.\n return [...builtinTools.map(builtinToolInfo), ...tools.map(registeredToolInfo)];\n },\n setActiveTools(toolNames: string[]): void {\n activeToolNames = [...toolNames];\n },\n getSettings() {\n return {};\n },\n // No Po extension registers MCP servers or virtual models through Pi yet.\n registerMcpServer(): void {},\n unregisterMcpServer(): void {},\n getMcpServers() {\n return [];\n },\n registerVirtualModel(): void {},\n unregisterVirtualModel(): void {},\n getCommands(): never[] {\n return [];\n },\n async setModel(): Promise<boolean> {\n // No API key is configured, which is the answer Pi gives for the same reason.\n return false;\n },\n getThinkingLevel(): ThinkingLevelValue {\n return thinkingLevel;\n },\n setThinkingLevel(level: ThinkingLevelValue): void {\n thinkingLevel = level;\n },\n registerProvider(providerOrName: unknown, config?: unknown): void {\n providers.push(\n typeof providerOrName === 'string' ? { name: providerOrName, value: config } : { value: providerOrName },\n );\n },\n unregisterProvider(name: string): void {\n unregisteredProviders.push(name);\n },\n events: {\n emit(channel: string, data: unknown): void {\n // A snapshot: a listener that unsubscribes on delivery would otherwise\n // reshape the set this loop is walking.\n const delivered = [...(channels.get(channel) ?? [])];\n for (const listener of delivered) listener(data);\n },\n on(channel: string, listener: (data: unknown) => void): () => void {\n const listeners = channels.get(channel) ?? new Set<(data: unknown) => void>();\n listeners.add(listener);\n channels.set(channel, listeners);\n return () => listeners.delete(listener);\n },\n },\n };\n\n function buildContext(contextOptions: PiTestContextOptions = {}): ExtensionToolContext {\n const sessionId = contextOptions.sessionId ?? options.sessionId ?? DEFAULT_SESSION_ID;\n const cwd = contextOptions.cwd ?? options.cwd ?? DEFAULT_CWD;\n const answers = { ...DISMISSED, ...options.answers, ...contextOptions.answers };\n const sessionManager = {\n getCwd: () => cwd,\n getSessionId: () => sessionId,\n getSessionName: () => sessionName,\n getSessionDir: () => cwd,\n getSessionFile: () => `${cwd}/${sessionId}.jsonl`,\n getLeafId: () => undefined,\n getLeafEntry: () => undefined,\n getEntry: () => undefined,\n getLabel: () => undefined,\n getBranch: () => [],\n buildContextEntries: () => [],\n getHeader: () => undefined,\n getEntries: () => [],\n getTree: () => [],\n };\n const ui = {\n select: async (title: string, selectOptions: string[]) => answers.select(title, selectOptions),\n confirm: async (title: string, message: string) => answers.confirm(title, message),\n input: async (title: string, placeholder?: string) => answers.input(title, placeholder),\n editor: async (title: string, prefill?: string) => answers.editor(title, prefill),\n notify: (message: string, level?: 'info' | 'warning' | 'error') => {\n notifications.push({ sessionId, message, level });\n },\n onTerminalInput: () => () => undefined,\n setStatus: (key: string, text: string | undefined) => {\n statuses.push({ sessionId, key, text });\n },\n setWorkingMessage: () => undefined,\n setWorkingVisible: () => undefined,\n setWorkingIndicator: () => undefined,\n setHiddenThinkingLabel: () => undefined,\n setWidget: (key: string, content: WidgetContent) => {\n widgets.push({ sessionId, key, content });\n },\n setFooter: () => undefined,\n setHeader: () => undefined,\n setTitle: () => undefined,\n // A custom component needs a real TUI to resolve, so it never does. An\n // extension awaiting one must stay responsive, which is what this proves.\n custom: () => new Promise<never>(() => undefined),\n pasteToEditor: () => undefined,\n setEditorText: () => undefined,\n getEditorText: () => '',\n addAutocompleteProvider: () => undefined,\n setEditorComponent: () => undefined,\n getEditorComponent: () => undefined,\n theme: undefined,\n getAllThemes: () => [],\n getTheme: () => undefined,\n setTheme: () => ({ success: false, error: 'This host renders nothing.' }),\n getToolsExpanded: () => false,\n setToolsExpanded: () => undefined,\n };\n const context = {\n ui,\n mode: contextOptions.mode ?? options.mode ?? DEFAULT_MODE,\n hasUI: contextOptions.hasUI ?? options.hasUI ?? true,\n cwd,\n sessionManager: sessionManager as unknown as SessionManagerView,\n modelRegistry: undefined,\n model: undefined,\n scopedModels: [],\n isIdle: () => contextOptions.isIdle ?? options.isIdle ?? true,\n isProjectTrusted: () => contextOptions.isProjectTrusted ?? options.isProjectTrusted ?? true,\n signal: contextOptions.signal ?? options.signal,\n abort: () => undefined,\n hasPendingMessages: () => false,\n shutdown: () => undefined,\n getContextUsage: () => undefined,\n compact: () => undefined,\n getSystemPrompt: () => contextOptions.systemPrompt ?? options.systemPrompt ?? DEFAULT_SYSTEM_PROMPT,\n // Command handlers receive the wider context, and an extension that only\n // reads it should not have to be handed a second fixture to be exercised.\n getSystemPromptOptions: () => ({}),\n waitForIdle: async () => undefined,\n newSession: async () => ({ cancelled: true }),\n fork: async () => ({ cancelled: true }),\n navigateTree: async () => ({ cancelled: true }),\n switchSession: async () => ({ cancelled: true }),\n reload: async () => undefined,\n // Tool execute() receives the tool context. Nested calls answer as Pi does when unbound.\n tools: [],\n executeTool: async (name: string) => ({\n toolCall: { type: 'toolCall', id: 'nested/0', name, arguments: {} },\n result: {\n content: [{ type: 'text', text: 'Nested tool calls are not available in this context' }],\n details: {},\n },\n isError: true,\n }),\n };\n // The one cast. `modelRegistry` is a class with a private field and so is\n // nominally typed, `ui.theme` is typed from a module Pi does not export,\n // and `model` is a populated provider record. No object literal can satisfy\n // those three, and no Po extension reads them.\n return context as unknown as ExtensionToolContext;\n }\n\n return {\n pi,\n tools,\n commands,\n shortcuts,\n flags,\n messageRenderers,\n entryRenderers,\n markdownTransformers,\n providers,\n unregisteredProviders,\n messages,\n userMessages,\n entries,\n execs,\n notifications,\n statuses,\n widgets,\n activeTools: () => [...activeToolNames],\n tool: (name) => tools.findLast((candidate) => candidate.name === name),\n command: (name) => commands.find((candidate) => candidate.name === name),\n handlers: (event) => (lifecycle.get(event) ?? []).map(invokable),\n context: buildContext,\n async emit(event, payload, context) {\n const eventContext = context ?? buildContext();\n const answered: unknown[] = [];\n // A snapshot, because a handler may register another for the same event\n // and Pi does not deliver this emission to it.\n const delivered = [...(lifecycle.get(event) ?? [])];\n for (const handler of delivered) {\n answered.push(await invokable(handler)({ type: event, ...(payload as object) }, eventContext));\n }\n if (event === 'session_shutdown') cordisConnection = undefined;\n return answered;\n },\n async callTool(name, params = {}, callOptions = {}) {\n const tool = tools.findLast((candidate) => candidate.name === name);\n if (!tool) throw new Error(`No tool named '${name}' is registered on this host.`);\n return tool.execute(\n callOptions.toolCallId ?? `call-${String(tools.indexOf(tool))}`,\n params,\n callOptions.signal,\n callOptions.onUpdate,\n callOptions.context ?? buildContext(),\n );\n },\n async runCommand(name, args = '', context) {\n const command = commands.find((candidate) => candidate.name === name);\n if (!command) throw new Error(`No command named '${name}' is registered on this host.`);\n await command.options.handler(args, (context ?? buildContext()) as never);\n },\n async cordis(source = DEFAULT_CORDIS_SOURCE) {\n if (cordisConnection === undefined) {\n const controller = await installDoomCordisHost(pi, {\n mode: 'standalone',\n source: `${source}:standalone-host`,\n });\n try {\n cordisConnection = await connectDoomCordisHost(pi, source);\n } catch (error) {\n await controller.shutdown();\n throw error;\n }\n }\n return cordisConnection;\n },\n async dispose() {\n await cordisConnection?.dispose();\n cordisConnection = undefined;\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { DoomCordisHostConnection } from "../../../runtimeCordisHost.mjs";
|
|
2
|
+
import { ExtensionAPI, ExtensionContext, ExtensionToolContext } from "@earendil-works/pi-coding-agent";
|
|
3
|
+
//#region src/testing/pi/testHost.d.ts
|
|
4
|
+
/** One stored handler, widened at the single point that calls it. */
|
|
5
|
+
type InvokableHandler = (event: unknown, context: unknown) => unknown;
|
|
6
|
+
type RunMode = ExtensionContext['mode'];
|
|
7
|
+
type ShortcutId = Parameters<ExtensionAPI['registerShortcut']>[0];
|
|
8
|
+
type ShortcutOptions = Parameters<ExtensionAPI['registerShortcut']>[1];
|
|
9
|
+
type CommandOptions = Parameters<ExtensionAPI['registerCommand']>[1];
|
|
10
|
+
type FlagOptions = Parameters<ExtensionAPI['registerFlag']>[1];
|
|
11
|
+
type CustomMessagePayload = Parameters<ExtensionAPI['sendMessage']>[0];
|
|
12
|
+
type SendMessageOptions = Parameters<ExtensionAPI['sendMessage']>[1];
|
|
13
|
+
type UserMessageContent = Parameters<ExtensionAPI['sendUserMessage']>[0];
|
|
14
|
+
type SendUserMessageOptions = Parameters<ExtensionAPI['sendUserMessage']>[1];
|
|
15
|
+
type RegisteredTool = Parameters<ExtensionAPI['registerTool']>[0];
|
|
16
|
+
type ToolUpdateCallback = Parameters<RegisteredTool['execute']>[3];
|
|
17
|
+
type ExecutionResult = Awaited<ReturnType<ExtensionAPI['exec']>>;
|
|
18
|
+
type ExecutionOptions = Parameters<ExtensionAPI['exec']>[2];
|
|
19
|
+
type WidgetContent = Parameters<ExtensionContext['ui']['setWidget']>[1];
|
|
20
|
+
export interface RecordedCommand {
|
|
21
|
+
name: string;
|
|
22
|
+
options: CommandOptions;
|
|
23
|
+
}
|
|
24
|
+
export interface RecordedShortcut {
|
|
25
|
+
shortcut: ShortcutId;
|
|
26
|
+
options: ShortcutOptions;
|
|
27
|
+
}
|
|
28
|
+
export interface RecordedRenderer {
|
|
29
|
+
customType: string;
|
|
30
|
+
renderer: unknown;
|
|
31
|
+
}
|
|
32
|
+
/** A `registerProvider` call in either of its two shapes. */
|
|
33
|
+
export interface RecordedProvider {
|
|
34
|
+
/** Present for the `(name, config)` overload. */
|
|
35
|
+
name?: string;
|
|
36
|
+
value: unknown;
|
|
37
|
+
}
|
|
38
|
+
export interface RecordedMessage {
|
|
39
|
+
message: CustomMessagePayload;
|
|
40
|
+
options: SendMessageOptions;
|
|
41
|
+
}
|
|
42
|
+
export interface RecordedUserMessage {
|
|
43
|
+
content: UserMessageContent;
|
|
44
|
+
options: SendUserMessageOptions;
|
|
45
|
+
}
|
|
46
|
+
export interface RecordedEntry {
|
|
47
|
+
customType: string;
|
|
48
|
+
data: unknown;
|
|
49
|
+
}
|
|
50
|
+
export interface RecordedExec {
|
|
51
|
+
command: string;
|
|
52
|
+
args: string[];
|
|
53
|
+
options: ExecutionOptions;
|
|
54
|
+
}
|
|
55
|
+
export interface RecordedNotification {
|
|
56
|
+
sessionId: string;
|
|
57
|
+
message: string;
|
|
58
|
+
level: 'info' | 'warning' | 'error' | undefined;
|
|
59
|
+
}
|
|
60
|
+
export interface RecordedWidget {
|
|
61
|
+
sessionId: string;
|
|
62
|
+
key: string;
|
|
63
|
+
content: WidgetContent;
|
|
64
|
+
}
|
|
65
|
+
export interface RecordedStatus {
|
|
66
|
+
sessionId: string;
|
|
67
|
+
key: string;
|
|
68
|
+
text: string | undefined;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* What the extension's dialogs answer.
|
|
72
|
+
*
|
|
73
|
+
* Every default is the dismissal, because that is the answer a headless host
|
|
74
|
+
* gives and the one an extension is most likely to mishandle.
|
|
75
|
+
*/
|
|
76
|
+
export interface PiTestDialogAnswers {
|
|
77
|
+
select(title: string, options: string[]): string | undefined;
|
|
78
|
+
confirm(title: string, message: string): boolean;
|
|
79
|
+
input(title: string, placeholder: string | undefined): string | undefined;
|
|
80
|
+
editor(title: string, prefill: string | undefined): string | undefined;
|
|
81
|
+
}
|
|
82
|
+
export interface PiTestContextOptions {
|
|
83
|
+
sessionId?: string;
|
|
84
|
+
cwd?: string;
|
|
85
|
+
hasUI?: boolean;
|
|
86
|
+
mode?: RunMode;
|
|
87
|
+
isIdle?: boolean;
|
|
88
|
+
isProjectTrusted?: boolean;
|
|
89
|
+
signal?: AbortSignal;
|
|
90
|
+
answers?: Partial<PiTestDialogAnswers>;
|
|
91
|
+
systemPrompt?: string;
|
|
92
|
+
}
|
|
93
|
+
export interface PiTestHostOptions extends PiTestContextOptions {
|
|
94
|
+
/** Answers `pi.exec`; the default reports a command that ran and printed nothing. */
|
|
95
|
+
exec?: (command: string, args: string[]) => ExecutionResult | Promise<ExecutionResult>;
|
|
96
|
+
/**
|
|
97
|
+
* Tool names Pi would already own before any extension loads.
|
|
98
|
+
*
|
|
99
|
+
* They join the inventory and start active, which is how the tool surface
|
|
100
|
+
* arbiter learns that a name like `read` exists without a definition for it.
|
|
101
|
+
*/
|
|
102
|
+
builtinTools?: readonly string[];
|
|
103
|
+
}
|
|
104
|
+
export interface PiTestHost {
|
|
105
|
+
/** The host an extension factory receives. */
|
|
106
|
+
readonly pi: ExtensionAPI;
|
|
107
|
+
readonly tools: readonly RegisteredTool[];
|
|
108
|
+
readonly commands: readonly RecordedCommand[];
|
|
109
|
+
readonly shortcuts: readonly RecordedShortcut[];
|
|
110
|
+
readonly flags: ReadonlyMap<string, FlagOptions>;
|
|
111
|
+
readonly messageRenderers: readonly RecordedRenderer[];
|
|
112
|
+
readonly entryRenderers: readonly RecordedRenderer[];
|
|
113
|
+
readonly markdownTransformers: readonly unknown[];
|
|
114
|
+
readonly providers: readonly RecordedProvider[];
|
|
115
|
+
readonly unregisteredProviders: readonly string[];
|
|
116
|
+
readonly messages: readonly RecordedMessage[];
|
|
117
|
+
readonly userMessages: readonly RecordedUserMessage[];
|
|
118
|
+
readonly entries: readonly RecordedEntry[];
|
|
119
|
+
readonly execs: readonly RecordedExec[];
|
|
120
|
+
readonly notifications: readonly RecordedNotification[];
|
|
121
|
+
readonly statuses: readonly RecordedStatus[];
|
|
122
|
+
readonly widgets: readonly RecordedWidget[];
|
|
123
|
+
/** Tool names Pi would offer the model right now. */
|
|
124
|
+
activeTools(): readonly string[];
|
|
125
|
+
tool(name: string): RegisteredTool | undefined;
|
|
126
|
+
command(name: string): RecordedCommand | undefined;
|
|
127
|
+
/** Lifecycle handlers registered for one event, in registration order. */
|
|
128
|
+
handlers(event: string): readonly InvokableHandler[];
|
|
129
|
+
/** A context for this host; each call builds a fresh one, as Pi does per event. */
|
|
130
|
+
context(options?: PiTestContextOptions): ExtensionToolContext;
|
|
131
|
+
/**
|
|
132
|
+
* Runs every handler for one lifecycle event and returns what they answered.
|
|
133
|
+
*
|
|
134
|
+
* Sequential and awaited, matching Pi, so a test can observe one handler's
|
|
135
|
+
* effect on the next.
|
|
136
|
+
*/
|
|
137
|
+
emit(event: string, payload?: unknown, context?: ExtensionContext): Promise<unknown[]>;
|
|
138
|
+
/** Calls a registered tool the way Pi's runner does. */
|
|
139
|
+
callTool(name: string, params?: unknown, options?: {
|
|
140
|
+
toolCallId?: string;
|
|
141
|
+
signal?: AbortSignal;
|
|
142
|
+
onUpdate?: ToolUpdateCallback;
|
|
143
|
+
context?: ExtensionToolContext;
|
|
144
|
+
}): Promise<unknown>;
|
|
145
|
+
/** Runs a registered slash command the way Pi's palette does. */
|
|
146
|
+
runCommand(name: string, args?: string, context?: ExtensionContext): Promise<void>;
|
|
147
|
+
/** The real Cordis host on this runner, installed on first use and disposed by `dispose`. */
|
|
148
|
+
cordis(source?: string): Promise<DoomCordisHostConnection>;
|
|
149
|
+
dispose(): Promise<void>;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* A Pi host and the records of what an extension did to it.
|
|
153
|
+
*
|
|
154
|
+
* Nothing here is a spy from a test framework: the records are plain arrays, so
|
|
155
|
+
* the harness works under any runner and adds no dependency to a package that
|
|
156
|
+
* every extension already installs.
|
|
157
|
+
*/
|
|
158
|
+
export declare function createPiTestHost(options?: PiTestHostOptions): PiTestHost;
|
|
159
|
+
//#endregion
|
|
160
|
+
//# sourceMappingURL=testHost.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testHost.d.mts","names":[],"sources":["../../../../src/testing/pi/testHost.ts"],"mappings":";;;;KA2CK,oBAAoB,gBAAgB;KAQpC,UAAU;KACV,aAAa,WAAW;KACxB,kBAAkB,WAAW;KAC7B,iBAAiB,WAAW;KAC5B,cAAc,WAAW;KACzB,uBAAuB,WAAW;KAClC,qBAAqB,WAAW;KAChC,qBAAqB,WAAW;KAChC,yBAAyB,WAAW;KACpC,iBAAiB,WAAW;KAC5B,qBAAqB,WAAW;KAChC,kBAAkB,QAAQ,WAAW;KACrC,mBAAmB,WAAW;KAE9B,gBAAgB,WAAW;iBAuBf;EACf;EACA,SAAS;;iBAEM;EACf,UAAU;EACV,SAAS;;iBAEM;EACf;EACA;;;iBAGe;;EAEf;EACA;;iBAEe;EACf,SAAS;EACT,SAAS;;iBAEM;EACf,SAAS;EACT,SAAS;;iBAEM;EACf;EACA;;iBAEe;EACf;EACA;EACA,SAAS;;iBAEM;EACf;EACA;EACA;;iBAEe;EACf;EACA;EACA,SAAS;;iBAEM;EACf;EACA;EACA;;;;;;;;iBASe;EACf,OAAO,eAAe;EACtB,QAAQ,eAAe;EACvB,MAAM,eAAe;EACrB,OAAO,eAAe;;iBAGP;EACf;EACA;EACA;EACA,OAAO;EACP;EACA;EACA,SAAS;EACT,UAAU,QAAQ;EAClB;;iBAGe,0BAA0B;;EAEzC,QAAQ,iBAAiB,mBAAmB,kBAAkB,QAAQ;;;;;;;EAOtE;;iBAGe;;WAEN,IAAI;WACJ,gBAAgB;WAChB,mBAAmB;WACnB,oBAAoB;WACpB,OAAO,oBAAoB;WAC3B,2BAA2B;WAC3B,yBAAyB;WACzB;WACA,oBAAoB;WACpB;WACA,mBAAmB;WACnB,uBAAuB;WACvB,kBAAkB;WAClB,gBAAgB;WAChB,wBAAwB;WACxB,mBAAmB;WACnB,kBAAkB;;EAE3B;EACA,KAAK,eAAe;EACpB,QAAQ,eAAe;;EAEvB,SAAS,yBAAyB;;EAElC,QAAQ,UAAU,uBAAuB;;;;;;;EAOzC,KAAK,eAAe,mBAAmB,UAAU,mBAAmB;;EAEpE,SACE,cACA,kBACA;IACE;IACA,SAAS;IACT,WAAW;IACX,UAAU;MAEX;;EAEH,WAAW,cAAc,eAAe,UAAU,mBAAmB;;EAErE,OAAO,kBAAkB,QAAQ;EACjC,WAAW;;;;;;;;;wBAwBG,iBAAiB,UAAS,oBAAyB"}
|