@agimon-ai/doompi-core 0.0.1-alpha.70
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 +5 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/agent-model.cjs +4 -0
- package/dist/agent-model.d.cts +2 -0
- package/dist/agent-model.d.mts +2 -0
- package/dist/agent-model.mjs +2 -0
- package/dist/api-contracts.cjs +27 -0
- package/dist/api-contracts.d.cts +7 -0
- package/dist/api-contracts.d.mts +7 -0
- package/dist/api-contracts.mjs +7 -0
- package/dist/ask-user.cjs +8 -0
- package/dist/ask-user.d.cts +2 -0
- package/dist/ask-user.d.mts +2 -0
- package/dist/ask-user.mjs +2 -0
- package/dist/author-tools.cjs +5 -0
- package/dist/author-tools.d.cts +2 -0
- package/dist/author-tools.d.mts +2 -0
- package/dist/author-tools.mjs +2 -0
- package/dist/background-work.cjs +7 -0
- package/dist/background-work.d.cts +2 -0
- package/dist/background-work.d.mts +2 -0
- package/dist/background-work.mjs +2 -0
- package/dist/child-process.cjs +15 -0
- package/dist/child-process.d.cts +2 -0
- package/dist/child-process.d.mts +2 -0
- package/dist/child-process.mjs +2 -0
- package/dist/child.cjs +7 -0
- package/dist/child.d.cts +3 -0
- package/dist/child.d.mts +3 -0
- package/dist/child.mjs +3 -0
- package/dist/cockpit-container.cjs +4 -0
- package/dist/cockpit-container.d.cts +2 -0
- package/dist/cockpit-container.d.mts +2 -0
- package/dist/cockpit-container.mjs +2 -0
- package/dist/config.cjs +13 -0
- package/dist/config.d.cts +3 -0
- package/dist/config.d.mts +3 -0
- package/dist/config.mjs +2 -0
- package/dist/constants/authorTools.cjs +10 -0
- package/dist/constants/authorTools.cjs.map +1 -0
- package/dist/constants/authorTools.d.cts +6 -0
- package/dist/constants/authorTools.d.cts.map +1 -0
- package/dist/constants/authorTools.d.mts +6 -0
- package/dist/constants/authorTools.d.mts.map +1 -0
- package/dist/constants/authorTools.mjs +8 -0
- package/dist/constants/authorTools.mjs.map +1 -0
- package/dist/constants/contextApi.cjs +28 -0
- package/dist/constants/contextApi.cjs.map +1 -0
- package/dist/constants/contextApi.d.cts +21 -0
- package/dist/constants/contextApi.d.cts.map +1 -0
- package/dist/constants/contextApi.d.mts +21 -0
- package/dist/constants/contextApi.d.mts.map +1 -0
- package/dist/constants/contextApi.mjs +23 -0
- package/dist/constants/contextApi.mjs.map +1 -0
- package/dist/constants/remote.cjs +81 -0
- package/dist/constants/remote.cjs.map +1 -0
- package/dist/constants/remote.mjs +62 -0
- package/dist/constants/remote.mjs.map +1 -0
- package/dist/constants/voiceReloadHandoff.cjs +12 -0
- package/dist/constants/voiceReloadHandoff.cjs.map +1 -0
- package/dist/constants/voiceReloadHandoff.d.cts +7 -0
- package/dist/constants/voiceReloadHandoff.d.cts.map +1 -0
- package/dist/constants/voiceReloadHandoff.d.mts +7 -0
- package/dist/constants/voiceReloadHandoff.d.mts.map +1 -0
- package/dist/constants/voiceReloadHandoff.mjs +9 -0
- package/dist/constants/voiceReloadHandoff.mjs.map +1 -0
- package/dist/constants/voiceTools.cjs +96 -0
- package/dist/constants/voiceTools.cjs.map +1 -0
- package/dist/constants/voiceTools.d.cts +58 -0
- package/dist/constants/voiceTools.d.cts.map +1 -0
- package/dist/constants/voiceTools.d.mts +58 -0
- package/dist/constants/voiceTools.d.mts.map +1 -0
- package/dist/constants/voiceTools.mjs +60 -0
- package/dist/constants/voiceTools.mjs.map +1 -0
- package/dist/context-api.cjs +10 -0
- package/dist/context-api.d.cts +4 -0
- package/dist/context-api.d.mts +4 -0
- package/dist/context-api.mjs +3 -0
- package/dist/context-contributions.cjs +7 -0
- package/dist/context-contributions.d.cts +3 -0
- package/dist/context-contributions.d.mts +3 -0
- package/dist/context-contributions.mjs +3 -0
- package/dist/context-detail-store.cjs +100 -0
- package/dist/context-detail-store.cjs.map +1 -0
- package/dist/context-detail-store.d.cts +19 -0
- package/dist/context-detail-store.d.cts.map +1 -0
- package/dist/context-detail-store.d.mts +19 -0
- package/dist/context-detail-store.d.mts.map +1 -0
- package/dist/context-detail-store.mjs +91 -0
- package/dist/context-detail-store.mjs.map +1 -0
- package/dist/context-detail.cjs +57 -0
- package/dist/context-detail.cjs.map +1 -0
- package/dist/context-detail.d.cts +13 -0
- package/dist/context-detail.d.cts.map +1 -0
- package/dist/context-detail.d.mts +13 -0
- package/dist/context-detail.d.mts.map +1 -0
- package/dist/context-detail.mjs +56 -0
- package/dist/context-detail.mjs.map +1 -0
- package/dist/context-projection.cjs +120 -0
- package/dist/context-projection.cjs.map +1 -0
- package/dist/context-projection.d.cts +113 -0
- package/dist/context-projection.d.cts.map +1 -0
- package/dist/context-projection.d.mts +113 -0
- package/dist/context-projection.d.mts.map +1 -0
- package/dist/context-projection.mjs +116 -0
- package/dist/context-projection.mjs.map +1 -0
- package/dist/cordis-host.cjs +10 -0
- package/dist/cordis-host.d.cts +2 -0
- package/dist/cordis-host.d.mts +2 -0
- package/dist/cordis-host.mjs +2 -0
- package/dist/delegation.cjs +18 -0
- package/dist/delegation.d.cts +2 -0
- package/dist/delegation.d.mts +2 -0
- package/dist/delegation.mjs +2 -0
- package/dist/doom-package.cjs +61 -0
- package/dist/doom-package.cjs.map +1 -0
- package/dist/doom-package.d.cts +17 -0
- package/dist/doom-package.d.cts.map +1 -0
- package/dist/doom-package.d.mts +17 -0
- package/dist/doom-package.d.mts.map +1 -0
- package/dist/doom-package.mjs +54 -0
- package/dist/doom-package.mjs.map +1 -0
- package/dist/extensions/serverPlugin.cjs +106 -0
- package/dist/extensions/serverPlugin.cjs.map +1 -0
- package/dist/extensions/serverPlugin.d.cts +5 -0
- package/dist/extensions/serverPlugin.d.cts.map +1 -0
- package/dist/extensions/serverPlugin.d.mts +5 -0
- package/dist/extensions/serverPlugin.d.mts.map +1 -0
- package/dist/extensions/serverPlugin.mjs +106 -0
- package/dist/extensions/serverPlugin.mjs.map +1 -0
- package/dist/extensions/webPlugin.cjs +28 -0
- package/dist/extensions/webPlugin.cjs.map +1 -0
- package/dist/extensions/webPlugin.d.cts +19 -0
- package/dist/extensions/webPlugin.d.cts.map +1 -0
- package/dist/extensions/webPlugin.d.mts +19 -0
- package/dist/extensions/webPlugin.d.mts.map +1 -0
- package/dist/extensions/webPlugin.mjs +26 -0
- package/dist/extensions/webPlugin.mjs.map +1 -0
- package/dist/footer.cjs +6 -0
- package/dist/footer.d.cts +2 -0
- package/dist/footer.d.mts +2 -0
- package/dist/footer.mjs +2 -0
- package/dist/headless-hub.cjs +499 -0
- package/dist/headless-hub.cjs.map +1 -0
- package/dist/headless-hub.d.cts +96 -0
- package/dist/headless-hub.d.cts.map +1 -0
- package/dist/headless-hub.d.mts +96 -0
- package/dist/headless-hub.d.mts.map +1 -0
- package/dist/headless-hub.mjs +498 -0
- package/dist/headless-hub.mjs.map +1 -0
- package/dist/headless-server.cjs +492 -0
- package/dist/headless-server.cjs.map +1 -0
- package/dist/headless-server.d.cts +30 -0
- package/dist/headless-server.d.cts.map +1 -0
- package/dist/headless-server.d.mts +30 -0
- package/dist/headless-server.d.mts.map +1 -0
- package/dist/headless-server.mjs +488 -0
- package/dist/headless-server.mjs.map +1 -0
- package/dist/headless-session-host.cjs +0 -0
- package/dist/headless-session-host.d.cts +45 -0
- package/dist/headless-session-host.d.cts.map +1 -0
- package/dist/headless-session-host.d.mts +45 -0
- package/dist/headless-session-host.d.mts.map +1 -0
- package/dist/headless-session-host.mjs +1 -0
- package/dist/headless-session-manager.cjs +51 -0
- package/dist/headless-session-manager.cjs.map +1 -0
- package/dist/headless-session-manager.d.cts +6 -0
- package/dist/headless-session-manager.d.cts.map +1 -0
- package/dist/headless-session-manager.d.mts +6 -0
- package/dist/headless-session-manager.d.mts.map +1 -0
- package/dist/headless-session-manager.mjs +50 -0
- package/dist/headless-session-manager.mjs.map +1 -0
- package/dist/headless.cjs +7 -0
- package/dist/headless.d.cts +2 -0
- package/dist/headless.d.mts +2 -0
- package/dist/headless.mjs +2 -0
- package/dist/help.cjs +21 -0
- package/dist/help.d.cts +2 -0
- package/dist/help.d.mts +2 -0
- package/dist/help.mjs +2 -0
- package/dist/history-import.cjs +553 -0
- package/dist/history-import.cjs.map +1 -0
- package/dist/history-import.d.cts +76 -0
- package/dist/history-import.d.cts.map +1 -0
- package/dist/history-import.d.mts +76 -0
- package/dist/history-import.d.mts.map +1 -0
- package/dist/history-import.mjs +547 -0
- package/dist/history-import.mjs.map +1 -0
- package/dist/history-ownership.cjs +169 -0
- package/dist/history-ownership.cjs.map +1 -0
- package/dist/history-ownership.d.cts +23 -0
- package/dist/history-ownership.d.cts.map +1 -0
- package/dist/history-ownership.d.mts +23 -0
- package/dist/history-ownership.d.mts.map +1 -0
- package/dist/history-ownership.mjs +163 -0
- package/dist/history-ownership.mjs.map +1 -0
- package/dist/history.cjs +13 -0
- package/dist/history.d.cts +6 -0
- package/dist/history.d.mts +6 -0
- package/dist/history.mjs +6 -0
- package/dist/hub-channel.cjs +0 -0
- package/dist/hub-channel.d.cts +2 -0
- package/dist/hub-channel.d.mts +2 -0
- package/dist/hub-channel.mjs +1 -0
- package/dist/index.cjs +44 -0
- package/dist/index.d.cts +6 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.mjs +6 -0
- package/dist/json.cjs +6 -0
- package/dist/json.d.cts +2 -0
- package/dist/json.d.mts +2 -0
- package/dist/json.mjs +2 -0
- package/dist/jsonl-session-repo.cjs +217 -0
- package/dist/jsonl-session-repo.cjs.map +1 -0
- package/dist/jsonl-session-repo.d.cts +7 -0
- package/dist/jsonl-session-repo.d.cts.map +1 -0
- package/dist/jsonl-session-repo.d.mts +7 -0
- package/dist/jsonl-session-repo.d.mts.map +1 -0
- package/dist/jsonl-session-repo.mjs +212 -0
- package/dist/jsonl-session-repo.mjs.map +1 -0
- package/dist/kernel.cjs +3 -0
- package/dist/kernel.d.cts +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.cts +2 -0
- package/dist/leader.d.mts +2 -0
- package/dist/leader.mjs +2 -0
- package/dist/log-sink-telemetry.cjs +5 -0
- package/dist/log-sink-telemetry.d.cts +2 -0
- package/dist/log-sink-telemetry.d.mts +2 -0
- package/dist/log-sink-telemetry.mjs +2 -0
- package/dist/machine-api.cjs +73 -0
- package/dist/machine-api.cjs.map +1 -0
- package/dist/machine-api.d.cts +7 -0
- package/dist/machine-api.d.cts.map +1 -0
- package/dist/machine-api.d.mts +7 -0
- package/dist/machine-api.d.mts.map +1 -0
- package/dist/machine-api.mjs +70 -0
- package/dist/machine-api.mjs.map +1 -0
- package/dist/main.cjs +10 -0
- package/dist/main.d.cts +5 -0
- package/dist/main.d.mts +5 -0
- package/dist/main.mjs +4 -0
- package/dist/mcp-projection.cjs +15 -0
- package/dist/mcp-projection.d.cts +2 -0
- package/dist/mcp-projection.d.mts +2 -0
- package/dist/mcp-projection.mjs +2 -0
- package/dist/mcp-schema-cost.cjs +195 -0
- package/dist/mcp-schema-cost.cjs.map +1 -0
- package/dist/mcp-schema-cost.d.cts +35 -0
- package/dist/mcp-schema-cost.d.cts.map +1 -0
- package/dist/mcp-schema-cost.d.mts +35 -0
- package/dist/mcp-schema-cost.d.mts.map +1 -0
- package/dist/mcp-schema-cost.mjs +190 -0
- package/dist/mcp-schema-cost.mjs.map +1 -0
- package/dist/mcp-session.cjs +9 -0
- package/dist/mcp-session.d.cts +2 -0
- package/dist/mcp-session.d.mts +2 -0
- package/dist/mcp-session.mjs +2 -0
- package/dist/mcp-status.cjs +7 -0
- package/dist/mcp-status.d.cts +2 -0
- package/dist/mcp-status.d.mts +2 -0
- package/dist/mcp-status.mjs +2 -0
- package/dist/mcp-tool-resolver.cjs +5 -0
- package/dist/mcp-tool-resolver.d.cts +2 -0
- package/dist/mcp-tool-resolver.d.mts +2 -0
- package/dist/mcp-tool-resolver.mjs +2 -0
- package/dist/module-resolution.cjs +405 -0
- package/dist/module-resolution.cjs.map +1 -0
- package/dist/module-resolution.d.cts +67 -0
- package/dist/module-resolution.d.cts.map +1 -0
- package/dist/module-resolution.d.mts +67 -0
- package/dist/module-resolution.d.mts.map +1 -0
- package/dist/module-resolution.mjs +389 -0
- package/dist/module-resolution.mjs.map +1 -0
- package/dist/narration.cjs +10 -0
- package/dist/narration.d.cts +2 -0
- package/dist/narration.d.mts +2 -0
- package/dist/narration.mjs +2 -0
- package/dist/notification.cjs +17 -0
- package/dist/notification.d.cts +2 -0
- package/dist/notification.d.mts +2 -0
- package/dist/notification.mjs +2 -0
- package/dist/package-api-server.cjs +161 -0
- package/dist/package-api-server.cjs.map +1 -0
- package/dist/package-api-server.d.cts +47 -0
- package/dist/package-api-server.d.cts.map +1 -0
- package/dist/package-api-server.d.mts +47 -0
- package/dist/package-api-server.d.mts.map +1 -0
- package/dist/package-api-server.mjs +159 -0
- package/dist/package-api-server.mjs.map +1 -0
- package/dist/package-api.cjs +11 -0
- package/dist/package-api.d.cts +2 -0
- package/dist/package-api.d.mts +2 -0
- package/dist/package-api.mjs +2 -0
- package/dist/pi/piSessionRuntime.cjs +520 -0
- package/dist/pi/piSessionRuntime.cjs.map +1 -0
- package/dist/pi/piSessionRuntime.d.cts +43 -0
- package/dist/pi/piSessionRuntime.d.cts.map +1 -0
- package/dist/pi/piSessionRuntime.d.mts +43 -0
- package/dist/pi/piSessionRuntime.d.mts.map +1 -0
- package/dist/pi/piSessionRuntime.mjs +519 -0
- package/dist/pi/piSessionRuntime.mjs.map +1 -0
- package/dist/pi/piWebSocketListener.cjs +115 -0
- package/dist/pi/piWebSocketListener.cjs.map +1 -0
- package/dist/pi/piWebSocketListener.mjs +115 -0
- package/dist/pi/piWebSocketListener.mjs.map +1 -0
- package/dist/pi-extension.cjs +8 -0
- package/dist/pi-extension.d.cts +5 -0
- package/dist/pi-extension.d.mts +5 -0
- package/dist/pi-extension.mjs +4 -0
- package/dist/pi-settings.cjs +11 -0
- package/dist/pi-settings.d.cts +2 -0
- package/dist/pi-settings.d.mts +2 -0
- package/dist/pi-settings.mjs +2 -0
- package/dist/plugin-protocol.cjs +10 -0
- package/dist/plugin-protocol.d.cts +2 -0
- package/dist/plugin-protocol.d.mts +2 -0
- package/dist/plugin-protocol.mjs +2 -0
- package/dist/profile-identity.cjs +6 -0
- package/dist/profile-identity.d.cts +2 -0
- package/dist/profile-identity.d.mts +2 -0
- package/dist/profile-identity.mjs +2 -0
- package/dist/protocol.cjs +10 -0
- package/dist/protocol.d.cts +2 -0
- package/dist/protocol.d.mts +2 -0
- package/dist/protocol.mjs +2 -0
- package/dist/readiness.cjs +8 -0
- package/dist/readiness.d.cts +2 -0
- package/dist/readiness.d.mts +2 -0
- package/dist/readiness.mjs +2 -0
- package/dist/relaunch-handoff.cjs +6 -0
- package/dist/relaunch-handoff.d.cts +2 -0
- package/dist/relaunch-handoff.d.mts +2 -0
- package/dist/relaunch-handoff.mjs +2 -0
- package/dist/remote-api.cjs +42 -0
- package/dist/remote-api.cjs.map +1 -0
- package/dist/remote-api.d.cts +7 -0
- package/dist/remote-api.d.cts.map +1 -0
- package/dist/remote-api.d.mts +7 -0
- package/dist/remote-api.d.mts.map +1 -0
- package/dist/remote-api.mjs +41 -0
- package/dist/remote-api.mjs.map +1 -0
- package/dist/remote-runtime.cjs +394 -0
- package/dist/remote-runtime.cjs.map +1 -0
- package/dist/remote-runtime.d.cts +26 -0
- package/dist/remote-runtime.d.cts.map +1 -0
- package/dist/remote-runtime.d.mts +26 -0
- package/dist/remote-runtime.d.mts.map +1 -0
- package/dist/remote-runtime.mjs +390 -0
- package/dist/remote-runtime.mjs.map +1 -0
- package/dist/runtime-config.cjs +232 -0
- package/dist/runtime-config.cjs.map +1 -0
- package/dist/runtime-config.d.cts +313 -0
- package/dist/runtime-config.d.cts.map +1 -0
- package/dist/runtime-config.d.mts +313 -0
- package/dist/runtime-config.d.mts.map +1 -0
- package/dist/runtime-config.mjs +221 -0
- package/dist/runtime-config.mjs.map +1 -0
- package/dist/runtime-context-api.cjs +64 -0
- package/dist/runtime-context-api.cjs.map +1 -0
- package/dist/runtime-context-api.d.cts +16 -0
- package/dist/runtime-context-api.d.cts.map +1 -0
- package/dist/runtime-context-api.d.mts +16 -0
- package/dist/runtime-context-api.d.mts.map +1 -0
- package/dist/runtime-context-api.mjs +62 -0
- package/dist/runtime-context-api.mjs.map +1 -0
- package/dist/runtime-cordis-host.cjs +191 -0
- package/dist/runtime-cordis-host.cjs.map +1 -0
- package/dist/runtime-cordis-host.d.cts +57 -0
- package/dist/runtime-cordis-host.d.cts.map +1 -0
- package/dist/runtime-cordis-host.d.mts +57 -0
- package/dist/runtime-cordis-host.d.mts.map +1 -0
- package/dist/runtime-cordis-host.mjs +183 -0
- package/dist/runtime-cordis-host.mjs.map +1 -0
- package/dist/runtime-headless-session-manager.cjs +0 -0
- package/dist/runtime-headless-session-manager.d.cts +14 -0
- package/dist/runtime-headless-session-manager.d.cts.map +1 -0
- package/dist/runtime-headless-session-manager.d.mts +14 -0
- package/dist/runtime-headless-session-manager.d.mts.map +1 -0
- package/dist/runtime-headless-session-manager.mjs +1 -0
- package/dist/runtime-identity.cjs +26 -0
- package/dist/runtime-identity.cjs.map +1 -0
- package/dist/runtime-identity.d.cts +7 -0
- package/dist/runtime-identity.d.cts.map +1 -0
- package/dist/runtime-identity.d.mts +7 -0
- package/dist/runtime-identity.d.mts.map +1 -0
- package/dist/runtime-identity.mjs +21 -0
- package/dist/runtime-identity.mjs.map +1 -0
- package/dist/runtime-json.cjs +46 -0
- package/dist/runtime-json.cjs.map +1 -0
- package/dist/runtime-json.d.cts +22 -0
- package/dist/runtime-json.d.cts.map +1 -0
- package/dist/runtime-json.d.mts +22 -0
- package/dist/runtime-json.d.mts.map +1 -0
- package/dist/runtime-json.mjs +39 -0
- package/dist/runtime-json.mjs.map +1 -0
- package/dist/runtime-log-sink-telemetry.cjs +102 -0
- package/dist/runtime-log-sink-telemetry.cjs.map +1 -0
- package/dist/runtime-log-sink-telemetry.d.cts +49 -0
- package/dist/runtime-log-sink-telemetry.d.cts.map +1 -0
- package/dist/runtime-log-sink-telemetry.d.mts +49 -0
- package/dist/runtime-log-sink-telemetry.d.mts.map +1 -0
- package/dist/runtime-log-sink-telemetry.mjs +99 -0
- package/dist/runtime-log-sink-telemetry.mjs.map +1 -0
- package/dist/runtime-pi-extension.cjs +243 -0
- package/dist/runtime-pi-extension.cjs.map +1 -0
- package/dist/runtime-pi-extension.d.cts +102 -0
- package/dist/runtime-pi-extension.d.cts.map +1 -0
- package/dist/runtime-pi-extension.d.mts +102 -0
- package/dist/runtime-pi-extension.d.mts.map +1 -0
- package/dist/runtime-pi-extension.mjs +242 -0
- package/dist/runtime-pi-extension.mjs.map +1 -0
- package/dist/runtime-pi-settings.cjs +104 -0
- package/dist/runtime-pi-settings.cjs.map +1 -0
- package/dist/runtime-pi-settings.d.cts +23 -0
- package/dist/runtime-pi-settings.d.cts.map +1 -0
- package/dist/runtime-pi-settings.d.mts +23 -0
- package/dist/runtime-pi-settings.d.mts.map +1 -0
- package/dist/runtime-pi-settings.mjs +92 -0
- package/dist/runtime-pi-settings.mjs.map +1 -0
- package/dist/runtime-protocol.cjs +223 -0
- package/dist/runtime-protocol.cjs.map +1 -0
- package/dist/runtime-protocol.d.cts +84 -0
- package/dist/runtime-protocol.d.cts.map +1 -0
- package/dist/runtime-protocol.d.mts +84 -0
- package/dist/runtime-protocol.d.mts.map +1 -0
- package/dist/runtime-protocol.mjs +215 -0
- package/dist/runtime-protocol.mjs.map +1 -0
- package/dist/runtime-tool-names.cjs +51 -0
- package/dist/runtime-tool-names.cjs.map +1 -0
- package/dist/runtime-tool-names.d.cts +24 -0
- package/dist/runtime-tool-names.d.cts.map +1 -0
- package/dist/runtime-tool-names.d.mts +24 -0
- package/dist/runtime-tool-names.d.mts.map +1 -0
- package/dist/runtime-tool-names.mjs +49 -0
- package/dist/runtime-tool-names.mjs.map +1 -0
- package/dist/runtime-transition.cjs +27 -0
- package/dist/runtime-transition.cjs.map +1 -0
- package/dist/runtime-transition.d.cts +114 -0
- package/dist/runtime-transition.d.cts.map +1 -0
- package/dist/runtime-transition.d.mts +114 -0
- package/dist/runtime-transition.d.mts.map +1 -0
- package/dist/runtime-transition.mjs +24 -0
- package/dist/runtime-transition.mjs.map +1 -0
- package/dist/sandbox-harness.cjs +6 -0
- package/dist/sandbox-harness.d.cts +2 -0
- package/dist/sandbox-harness.d.mts +2 -0
- package/dist/sandbox-harness.mjs +2 -0
- package/dist/schemas/agentModel.cjs +33 -0
- package/dist/schemas/agentModel.cjs.map +1 -0
- package/dist/schemas/agentModel.d.cts +26 -0
- package/dist/schemas/agentModel.d.cts.map +1 -0
- package/dist/schemas/agentModel.d.mts +26 -0
- package/dist/schemas/agentModel.d.mts.map +1 -0
- package/dist/schemas/agentModel.mjs +32 -0
- package/dist/schemas/agentModel.mjs.map +1 -0
- package/dist/schemas/apiContracts.cjs +145 -0
- package/dist/schemas/apiContracts.cjs.map +1 -0
- package/dist/schemas/apiContracts.d.cts +81 -0
- package/dist/schemas/apiContracts.d.cts.map +1 -0
- package/dist/schemas/apiContracts.d.mts +81 -0
- package/dist/schemas/apiContracts.d.mts.map +1 -0
- package/dist/schemas/apiContracts.mjs +140 -0
- package/dist/schemas/apiContracts.mjs.map +1 -0
- package/dist/schemas/askUser.cjs +42 -0
- package/dist/schemas/askUser.cjs.map +1 -0
- package/dist/schemas/askUser.d.cts +47 -0
- package/dist/schemas/askUser.d.cts.map +1 -0
- package/dist/schemas/askUser.d.mts +47 -0
- package/dist/schemas/askUser.d.mts.map +1 -0
- package/dist/schemas/askUser.mjs +37 -0
- package/dist/schemas/askUser.mjs.map +1 -0
- package/dist/schemas/backgroundWork.cjs +31 -0
- package/dist/schemas/backgroundWork.cjs.map +1 -0
- package/dist/schemas/backgroundWork.d.cts +72 -0
- package/dist/schemas/backgroundWork.d.cts.map +1 -0
- package/dist/schemas/backgroundWork.d.mts +72 -0
- package/dist/schemas/backgroundWork.d.mts.map +1 -0
- package/dist/schemas/backgroundWork.mjs +27 -0
- package/dist/schemas/backgroundWork.mjs.map +1 -0
- package/dist/schemas/builtinApiContracts.cjs +37 -0
- package/dist/schemas/builtinApiContracts.cjs.map +1 -0
- package/dist/schemas/builtinApiContracts.d.cts +51 -0
- package/dist/schemas/builtinApiContracts.d.cts.map +1 -0
- package/dist/schemas/builtinApiContracts.d.mts +51 -0
- package/dist/schemas/builtinApiContracts.d.mts.map +1 -0
- package/dist/schemas/builtinApiContracts.mjs +37 -0
- package/dist/schemas/builtinApiContracts.mjs.map +1 -0
- package/dist/schemas/childProcess.cjs +67 -0
- package/dist/schemas/childProcess.cjs.map +1 -0
- package/dist/schemas/childProcess.d.cts +30 -0
- package/dist/schemas/childProcess.d.cts.map +1 -0
- package/dist/schemas/childProcess.d.mts +30 -0
- package/dist/schemas/childProcess.d.mts.map +1 -0
- package/dist/schemas/childProcess.mjs +55 -0
- package/dist/schemas/childProcess.mjs.map +1 -0
- package/dist/schemas/cockpitContainer.cjs +31 -0
- package/dist/schemas/cockpitContainer.cjs.map +1 -0
- package/dist/schemas/cockpitContainer.d.cts +80 -0
- package/dist/schemas/cockpitContainer.d.cts.map +1 -0
- package/dist/schemas/cockpitContainer.d.mts +80 -0
- package/dist/schemas/cockpitContainer.d.mts.map +1 -0
- package/dist/schemas/cockpitContainer.mjs +30 -0
- package/dist/schemas/cockpitContainer.mjs.map +1 -0
- package/dist/schemas/contextContributions.cjs +17 -0
- package/dist/schemas/contextContributions.cjs.map +1 -0
- package/dist/schemas/contextContributions.d.cts +49 -0
- package/dist/schemas/contextContributions.d.cts.map +1 -0
- package/dist/schemas/contextContributions.d.mts +49 -0
- package/dist/schemas/contextContributions.d.mts.map +1 -0
- package/dist/schemas/contextContributions.mjs +15 -0
- package/dist/schemas/contextContributions.mjs.map +1 -0
- package/dist/schemas/delegation.cjs +91 -0
- package/dist/schemas/delegation.cjs.map +1 -0
- package/dist/schemas/delegation.d.cts +95 -0
- package/dist/schemas/delegation.d.cts.map +1 -0
- package/dist/schemas/delegation.d.mts +95 -0
- package/dist/schemas/delegation.d.mts.map +1 -0
- package/dist/schemas/delegation.mjs +76 -0
- package/dist/schemas/delegation.mjs.map +1 -0
- package/dist/schemas/footer.cjs +48 -0
- package/dist/schemas/footer.cjs.map +1 -0
- package/dist/schemas/footer.d.cts +48 -0
- package/dist/schemas/footer.d.cts.map +1 -0
- package/dist/schemas/footer.d.mts +48 -0
- package/dist/schemas/footer.d.mts.map +1 -0
- package/dist/schemas/footer.mjs +45 -0
- package/dist/schemas/footer.mjs.map +1 -0
- package/dist/schemas/headless.cjs +23 -0
- package/dist/schemas/headless.cjs.map +1 -0
- package/dist/schemas/headless.d.cts +238 -0
- package/dist/schemas/headless.d.cts.map +1 -0
- package/dist/schemas/headless.d.mts +238 -0
- package/dist/schemas/headless.d.mts.map +1 -0
- package/dist/schemas/headless.mjs +19 -0
- package/dist/schemas/headless.mjs.map +1 -0
- package/dist/schemas/help.cjs +249 -0
- package/dist/schemas/help.cjs.map +1 -0
- package/dist/schemas/help.d.cts +106 -0
- package/dist/schemas/help.d.cts.map +1 -0
- package/dist/schemas/help.d.mts +106 -0
- package/dist/schemas/help.d.mts.map +1 -0
- package/dist/schemas/help.mjs +231 -0
- package/dist/schemas/help.mjs.map +1 -0
- package/dist/schemas/httpApiContracts.cjs +388 -0
- package/dist/schemas/httpApiContracts.cjs.map +1 -0
- package/dist/schemas/httpApiContracts.d.cts +14 -0
- package/dist/schemas/httpApiContracts.d.cts.map +1 -0
- package/dist/schemas/httpApiContracts.d.mts +14 -0
- package/dist/schemas/httpApiContracts.d.mts.map +1 -0
- package/dist/schemas/httpApiContracts.mjs +377 -0
- package/dist/schemas/httpApiContracts.mjs.map +1 -0
- package/dist/schemas/hubChannel.d.cts +91 -0
- package/dist/schemas/hubChannel.d.cts.map +1 -0
- package/dist/schemas/hubChannel.d.mts +91 -0
- package/dist/schemas/hubChannel.d.mts.map +1 -0
- package/dist/schemas/leader.cjs +57 -0
- package/dist/schemas/leader.cjs.map +1 -0
- package/dist/schemas/leader.d.cts +107 -0
- package/dist/schemas/leader.d.cts.map +1 -0
- package/dist/schemas/leader.d.mts +107 -0
- package/dist/schemas/leader.d.mts.map +1 -0
- package/dist/schemas/leader.mjs +51 -0
- package/dist/schemas/leader.mjs.map +1 -0
- package/dist/schemas/mcpProjection.cjs +114 -0
- package/dist/schemas/mcpProjection.cjs.map +1 -0
- package/dist/schemas/mcpProjection.d.cts +116 -0
- package/dist/schemas/mcpProjection.d.cts.map +1 -0
- package/dist/schemas/mcpProjection.d.mts +116 -0
- package/dist/schemas/mcpProjection.d.mts.map +1 -0
- package/dist/schemas/mcpProjection.mjs +102 -0
- package/dist/schemas/mcpProjection.mjs.map +1 -0
- package/dist/schemas/mcpSession.cjs +57 -0
- package/dist/schemas/mcpSession.cjs.map +1 -0
- package/dist/schemas/mcpSession.d.cts +57 -0
- package/dist/schemas/mcpSession.d.cts.map +1 -0
- package/dist/schemas/mcpSession.d.mts +57 -0
- package/dist/schemas/mcpSession.d.mts.map +1 -0
- package/dist/schemas/mcpSession.mjs +51 -0
- package/dist/schemas/mcpSession.mjs.map +1 -0
- package/dist/schemas/mcpStatus.cjs +52 -0
- package/dist/schemas/mcpStatus.cjs.map +1 -0
- package/dist/schemas/mcpStatus.d.cts +73 -0
- package/dist/schemas/mcpStatus.d.cts.map +1 -0
- package/dist/schemas/mcpStatus.d.mts +73 -0
- package/dist/schemas/mcpStatus.d.mts.map +1 -0
- package/dist/schemas/mcpStatus.mjs +48 -0
- package/dist/schemas/mcpStatus.mjs.map +1 -0
- package/dist/schemas/mcpToolResolver.cjs +17 -0
- package/dist/schemas/mcpToolResolver.cjs.map +1 -0
- package/dist/schemas/mcpToolResolver.d.cts +24 -0
- package/dist/schemas/mcpToolResolver.d.cts.map +1 -0
- package/dist/schemas/mcpToolResolver.d.mts +24 -0
- package/dist/schemas/mcpToolResolver.d.mts.map +1 -0
- package/dist/schemas/mcpToolResolver.mjs +15 -0
- package/dist/schemas/mcpToolResolver.mjs.map +1 -0
- package/dist/schemas/narration.cjs +54 -0
- package/dist/schemas/narration.cjs.map +1 -0
- package/dist/schemas/narration.d.cts +29 -0
- package/dist/schemas/narration.d.cts.map +1 -0
- package/dist/schemas/narration.d.mts +29 -0
- package/dist/schemas/narration.d.mts.map +1 -0
- package/dist/schemas/narration.mjs +47 -0
- package/dist/schemas/narration.mjs.map +1 -0
- package/dist/schemas/notification.cjs +122 -0
- package/dist/schemas/notification.cjs.map +1 -0
- package/dist/schemas/notification.d.cts +48 -0
- package/dist/schemas/notification.d.cts.map +1 -0
- package/dist/schemas/notification.d.mts +48 -0
- package/dist/schemas/notification.d.mts.map +1 -0
- package/dist/schemas/notification.mjs +108 -0
- package/dist/schemas/notification.mjs.map +1 -0
- package/dist/schemas/packageApi.cjs +52 -0
- package/dist/schemas/packageApi.cjs.map +1 -0
- package/dist/schemas/packageApi.d.cts +149 -0
- package/dist/schemas/packageApi.d.cts.map +1 -0
- package/dist/schemas/packageApi.d.mts +149 -0
- package/dist/schemas/packageApi.d.mts.map +1 -0
- package/dist/schemas/packageApi.mjs +44 -0
- package/dist/schemas/packageApi.mjs.map +1 -0
- package/dist/schemas/piTool.cjs +25 -0
- package/dist/schemas/piTool.cjs.map +1 -0
- package/dist/schemas/piTool.d.cts +12 -0
- package/dist/schemas/piTool.d.cts.map +1 -0
- package/dist/schemas/piTool.d.mts +12 -0
- package/dist/schemas/piTool.d.mts.map +1 -0
- package/dist/schemas/piTool.mjs +25 -0
- package/dist/schemas/piTool.mjs.map +1 -0
- package/dist/schemas/pluginContributions.cjs +19 -0
- package/dist/schemas/pluginContributions.cjs.map +1 -0
- package/dist/schemas/pluginContributions.d.cts +56 -0
- package/dist/schemas/pluginContributions.d.cts.map +1 -0
- package/dist/schemas/pluginContributions.d.mts +56 -0
- package/dist/schemas/pluginContributions.d.mts.map +1 -0
- package/dist/schemas/pluginContributions.mjs +18 -0
- package/dist/schemas/pluginContributions.mjs.map +1 -0
- package/dist/schemas/pluginProtocol.cjs +103 -0
- package/dist/schemas/pluginProtocol.cjs.map +1 -0
- package/dist/schemas/pluginProtocol.d.cts +68 -0
- package/dist/schemas/pluginProtocol.d.cts.map +1 -0
- package/dist/schemas/pluginProtocol.d.mts +68 -0
- package/dist/schemas/pluginProtocol.d.mts.map +1 -0
- package/dist/schemas/pluginProtocol.mjs +96 -0
- package/dist/schemas/pluginProtocol.mjs.map +1 -0
- package/dist/schemas/profileIdentity.cjs +67 -0
- package/dist/schemas/profileIdentity.cjs.map +1 -0
- package/dist/schemas/profileIdentity.d.cts +50 -0
- package/dist/schemas/profileIdentity.d.cts.map +1 -0
- package/dist/schemas/profileIdentity.d.mts +50 -0
- package/dist/schemas/profileIdentity.d.mts.map +1 -0
- package/dist/schemas/profileIdentity.mjs +64 -0
- package/dist/schemas/profileIdentity.mjs.map +1 -0
- package/dist/schemas/readiness.cjs +251 -0
- package/dist/schemas/readiness.cjs.map +1 -0
- package/dist/schemas/readiness.d.cts +84 -0
- package/dist/schemas/readiness.d.cts.map +1 -0
- package/dist/schemas/readiness.d.mts +84 -0
- package/dist/schemas/readiness.d.mts.map +1 -0
- package/dist/schemas/readiness.mjs +246 -0
- package/dist/schemas/readiness.mjs.map +1 -0
- package/dist/schemas/relaunchHandoff.cjs +47 -0
- package/dist/schemas/relaunchHandoff.cjs.map +1 -0
- package/dist/schemas/relaunchHandoff.d.cts +25 -0
- package/dist/schemas/relaunchHandoff.d.cts.map +1 -0
- package/dist/schemas/relaunchHandoff.d.mts +25 -0
- package/dist/schemas/relaunchHandoff.d.mts.map +1 -0
- package/dist/schemas/relaunchHandoff.mjs +44 -0
- package/dist/schemas/relaunchHandoff.mjs.map +1 -0
- package/dist/schemas/remoteApiContracts.cjs +307 -0
- package/dist/schemas/remoteApiContracts.cjs.map +1 -0
- package/dist/schemas/remoteApiContracts.mjs +303 -0
- package/dist/schemas/remoteApiContracts.mjs.map +1 -0
- package/dist/schemas/sandboxHarness.cjs +29 -0
- package/dist/schemas/sandboxHarness.cjs.map +1 -0
- package/dist/schemas/sandboxHarness.d.cts +39 -0
- package/dist/schemas/sandboxHarness.d.cts.map +1 -0
- package/dist/schemas/sandboxHarness.d.mts +39 -0
- package/dist/schemas/sandboxHarness.d.mts.map +1 -0
- package/dist/schemas/sandboxHarness.mjs +26 -0
- package/dist/schemas/sandboxHarness.mjs.map +1 -0
- package/dist/schemas/serverBundle.cjs +79 -0
- package/dist/schemas/serverBundle.cjs.map +1 -0
- package/dist/schemas/serverBundle.d.cts +34 -0
- package/dist/schemas/serverBundle.d.cts.map +1 -0
- package/dist/schemas/serverBundle.d.mts +34 -0
- package/dist/schemas/serverBundle.d.mts.map +1 -0
- package/dist/schemas/serverBundle.mjs +77 -0
- package/dist/schemas/serverBundle.mjs.map +1 -0
- package/dist/schemas/serverFacet.cjs +102 -0
- package/dist/schemas/serverFacet.cjs.map +1 -0
- package/dist/schemas/serverFacet.d.cts +141 -0
- package/dist/schemas/serverFacet.d.cts.map +1 -0
- package/dist/schemas/serverFacet.d.mts +141 -0
- package/dist/schemas/serverFacet.d.mts.map +1 -0
- package/dist/schemas/serverFacet.mjs +93 -0
- package/dist/schemas/serverFacet.mjs.map +1 -0
- package/dist/schemas/sessionApiContracts.cjs +474 -0
- package/dist/schemas/sessionApiContracts.cjs.map +1 -0
- package/dist/schemas/sessionApiContracts.d.cts +563 -0
- package/dist/schemas/sessionApiContracts.d.cts.map +1 -0
- package/dist/schemas/sessionApiContracts.d.mts +563 -0
- package/dist/schemas/sessionApiContracts.d.mts.map +1 -0
- package/dist/schemas/sessionApiContracts.mjs +472 -0
- package/dist/schemas/sessionApiContracts.mjs.map +1 -0
- package/dist/schemas/sessionProtocol.cjs +17 -0
- package/dist/schemas/sessionProtocol.cjs.map +1 -0
- package/dist/schemas/sessionProtocol.d.cts +269 -0
- package/dist/schemas/sessionProtocol.d.cts.map +1 -0
- package/dist/schemas/sessionProtocol.d.mts +269 -0
- package/dist/schemas/sessionProtocol.d.mts.map +1 -0
- package/dist/schemas/sessionProtocol.mjs +12 -0
- package/dist/schemas/sessionProtocol.mjs.map +1 -0
- package/dist/schemas/sessionUpdates.d.cts +34 -0
- package/dist/schemas/sessionUpdates.d.cts.map +1 -0
- package/dist/schemas/sessionUpdates.d.mts +34 -0
- package/dist/schemas/sessionUpdates.d.mts.map +1 -0
- package/dist/schemas/skills.cjs +115 -0
- package/dist/schemas/skills.cjs.map +1 -0
- package/dist/schemas/skills.d.cts +65 -0
- package/dist/schemas/skills.d.cts.map +1 -0
- package/dist/schemas/skills.d.mts +65 -0
- package/dist/schemas/skills.d.mts.map +1 -0
- package/dist/schemas/skills.mjs +109 -0
- package/dist/schemas/skills.mjs.map +1 -0
- package/dist/schemas/toolOverrides.cjs +17 -0
- package/dist/schemas/toolOverrides.cjs.map +1 -0
- package/dist/schemas/toolOverrides.d.cts +29 -0
- package/dist/schemas/toolOverrides.d.cts.map +1 -0
- package/dist/schemas/toolOverrides.d.mts +29 -0
- package/dist/schemas/toolOverrides.d.mts.map +1 -0
- package/dist/schemas/toolOverrides.mjs +15 -0
- package/dist/schemas/toolOverrides.mjs.map +1 -0
- package/dist/schemas/toolSurface.cjs +17 -0
- package/dist/schemas/toolSurface.cjs.map +1 -0
- package/dist/schemas/toolSurface.d.cts +54 -0
- package/dist/schemas/toolSurface.d.cts.map +1 -0
- package/dist/schemas/toolSurface.d.mts +54 -0
- package/dist/schemas/toolSurface.d.mts.map +1 -0
- package/dist/schemas/toolSurface.mjs +15 -0
- package/dist/schemas/toolSurface.mjs.map +1 -0
- package/dist/schemas/transportApiContracts.cjs +248 -0
- package/dist/schemas/transportApiContracts.cjs.map +1 -0
- package/dist/schemas/transportApiContracts.d.cts +205 -0
- package/dist/schemas/transportApiContracts.d.cts.map +1 -0
- package/dist/schemas/transportApiContracts.d.mts +205 -0
- package/dist/schemas/transportApiContracts.d.mts.map +1 -0
- package/dist/schemas/transportApiContracts.mjs +242 -0
- package/dist/schemas/transportApiContracts.mjs.map +1 -0
- package/dist/schemas/uiHub.cjs +17 -0
- package/dist/schemas/uiHub.cjs.map +1 -0
- package/dist/schemas/uiHub.d.cts +23 -0
- package/dist/schemas/uiHub.d.cts.map +1 -0
- package/dist/schemas/uiHub.d.mts +23 -0
- package/dist/schemas/uiHub.d.mts.map +1 -0
- package/dist/schemas/uiHub.mjs +15 -0
- package/dist/schemas/uiHub.mjs.map +1 -0
- package/dist/schemas/voiceReloadHandoff.cjs +78 -0
- package/dist/schemas/voiceReloadHandoff.cjs.map +1 -0
- package/dist/schemas/voiceReloadHandoff.d.cts +31 -0
- package/dist/schemas/voiceReloadHandoff.d.cts.map +1 -0
- package/dist/schemas/voiceReloadHandoff.d.mts +31 -0
- package/dist/schemas/voiceReloadHandoff.d.mts.map +1 -0
- package/dist/schemas/voiceReloadHandoff.mjs +75 -0
- package/dist/schemas/voiceReloadHandoff.mjs.map +1 -0
- package/dist/schemas/voiceTools.cjs +205 -0
- package/dist/schemas/voiceTools.cjs.map +1 -0
- package/dist/schemas/voiceTools.d.cts +120 -0
- package/dist/schemas/voiceTools.d.cts.map +1 -0
- package/dist/schemas/voiceTools.d.mts +120 -0
- package/dist/schemas/voiceTools.d.mts.map +1 -0
- package/dist/schemas/voiceTools.mjs +194 -0
- package/dist/schemas/voiceTools.mjs.map +1 -0
- package/dist/server/directHarnessRuntime.cjs +981 -0
- package/dist/server/directHarnessRuntime.cjs.map +1 -0
- package/dist/server/directHarnessRuntime.d.cts +3 -0
- package/dist/server/directHarnessRuntime.d.mts +3 -0
- package/dist/server/directHarnessRuntime.mjs +976 -0
- package/dist/server/directHarnessRuntime.mjs.map +1 -0
- package/dist/server/headlessProtocol.cjs +233 -0
- package/dist/server/headlessProtocol.cjs.map +1 -0
- package/dist/server/headlessProtocol.mjs +233 -0
- package/dist/server/headlessProtocol.mjs.map +1 -0
- package/dist/server/jsonlTranscriptReader.cjs +85 -0
- package/dist/server/jsonlTranscriptReader.cjs.map +1 -0
- package/dist/server/jsonlTranscriptReader.mjs +83 -0
- package/dist/server/jsonlTranscriptReader.mjs.map +1 -0
- package/dist/server/nativeChildTranscriptReader.cjs +20 -0
- package/dist/server/nativeChildTranscriptReader.cjs.map +1 -0
- package/dist/server/nativeChildTranscriptReader.mjs +18 -0
- package/dist/server/nativeChildTranscriptReader.mjs.map +1 -0
- package/dist/server/remoteRoutes.cjs +386 -0
- package/dist/server/remoteRoutes.cjs.map +1 -0
- package/dist/server/remoteRoutes.mjs +386 -0
- package/dist/server/remoteRoutes.mjs.map +1 -0
- package/dist/server/serverFacetLoader.cjs +220 -0
- package/dist/server/serverFacetLoader.cjs.map +1 -0
- package/dist/server/serverFacetLoader.d.cts +77 -0
- package/dist/server/serverFacetLoader.d.cts.map +1 -0
- package/dist/server/serverFacetLoader.d.mts +77 -0
- package/dist/server/serverFacetLoader.d.mts.map +1 -0
- package/dist/server/serverFacetLoader.mjs +215 -0
- package/dist/server/serverFacetLoader.mjs.map +1 -0
- package/dist/server/threadJournals.cjs +172 -0
- package/dist/server/threadJournals.cjs.map +1 -0
- package/dist/server/threadJournals.mjs +169 -0
- package/dist/server/threadJournals.mjs.map +1 -0
- package/dist/server-facet.cjs +27 -0
- package/dist/server-facet.d.cts +7 -0
- package/dist/server-facet.d.mts +7 -0
- package/dist/server-facet.mjs +7 -0
- package/dist/server-telemetry.cjs +25 -0
- package/dist/server-telemetry.cjs.map +1 -0
- package/dist/server-telemetry.d.cts +12 -0
- package/dist/server-telemetry.d.cts.map +1 -0
- package/dist/server-telemetry.d.mts +12 -0
- package/dist/server-telemetry.d.mts.map +1 -0
- package/dist/server-telemetry.mjs +23 -0
- package/dist/server-telemetry.mjs.map +1 -0
- package/dist/server.cjs +17 -0
- package/dist/server.d.cts +10 -0
- package/dist/server.d.mts +10 -0
- package/dist/server.mjs +7 -0
- package/dist/services/acpSessionUpdates/index.cjs +129 -0
- package/dist/services/acpSessionUpdates/index.cjs.map +1 -0
- package/dist/services/acpSessionUpdates/index.mjs +129 -0
- package/dist/services/acpSessionUpdates/index.mjs.map +1 -0
- package/dist/services/apiContracts/index.cjs +267 -0
- package/dist/services/apiContracts/index.cjs.map +1 -0
- package/dist/services/apiContracts/index.d.cts +42 -0
- package/dist/services/apiContracts/index.d.cts.map +1 -0
- package/dist/services/apiContracts/index.d.mts +42 -0
- package/dist/services/apiContracts/index.d.mts.map +1 -0
- package/dist/services/apiContracts/index.mjs +266 -0
- package/dist/services/apiContracts/index.mjs.map +1 -0
- package/dist/services/bundlePublication/index.cjs +88 -0
- package/dist/services/bundlePublication/index.cjs.map +1 -0
- package/dist/services/bundlePublication/index.mjs +85 -0
- package/dist/services/bundlePublication/index.mjs.map +1 -0
- package/dist/services/contextApiUrls/index.cjs +15 -0
- package/dist/services/contextApiUrls/index.cjs.map +1 -0
- package/dist/services/contextApiUrls/index.d.cts +6 -0
- package/dist/services/contextApiUrls/index.d.cts.map +1 -0
- package/dist/services/contextApiUrls/index.d.mts +6 -0
- package/dist/services/contextApiUrls/index.d.mts.map +1 -0
- package/dist/services/contextApiUrls/index.mjs +15 -0
- package/dist/services/contextApiUrls/index.mjs.map +1 -0
- package/dist/services/contextContributions/index.cjs +79 -0
- package/dist/services/contextContributions/index.cjs.map +1 -0
- package/dist/services/contextContributions/index.d.cts +6 -0
- package/dist/services/contextContributions/index.d.cts.map +1 -0
- package/dist/services/contextContributions/index.d.mts +6 -0
- package/dist/services/contextContributions/index.d.mts.map +1 -0
- package/dist/services/contextContributions/index.mjs +79 -0
- package/dist/services/contextContributions/index.mjs.map +1 -0
- package/dist/services/deviceAuth/index.cjs +125 -0
- package/dist/services/deviceAuth/index.cjs.map +1 -0
- package/dist/services/deviceAuth/index.d.cts +9 -0
- package/dist/services/deviceAuth/index.d.cts.map +1 -0
- package/dist/services/deviceAuth/index.d.mts +9 -0
- package/dist/services/deviceAuth/index.d.mts.map +1 -0
- package/dist/services/deviceAuth/index.mjs +125 -0
- package/dist/services/deviceAuth/index.mjs.map +1 -0
- package/dist/services/deviceSessions/index.cjs +147 -0
- package/dist/services/deviceSessions/index.cjs.map +1 -0
- package/dist/services/deviceSessions/index.d.cts +15 -0
- package/dist/services/deviceSessions/index.d.cts.map +1 -0
- package/dist/services/deviceSessions/index.d.mts +15 -0
- package/dist/services/deviceSessions/index.d.mts.map +1 -0
- package/dist/services/deviceSessions/index.mjs +141 -0
- package/dist/services/deviceSessions/index.mjs.map +1 -0
- package/dist/services/headlessClient/index.cjs +117 -0
- package/dist/services/headlessClient/index.cjs.map +1 -0
- package/dist/services/headlessClient/index.mjs +117 -0
- package/dist/services/headlessClient/index.mjs.map +1 -0
- package/dist/services/historyCreationFileSystem/index.cjs +114 -0
- package/dist/services/historyCreationFileSystem/index.cjs.map +1 -0
- package/dist/services/historyCreationFileSystem/index.mjs +114 -0
- package/dist/services/historyCreationFileSystem/index.mjs.map +1 -0
- package/dist/services/hubChannelHarness/index.cjs +50 -0
- package/dist/services/hubChannelHarness/index.cjs.map +1 -0
- package/dist/services/hubChannelHarness/index.d.cts +17 -0
- package/dist/services/hubChannelHarness/index.d.cts.map +1 -0
- package/dist/services/hubChannelHarness/index.d.mts +17 -0
- package/dist/services/hubChannelHarness/index.d.mts.map +1 -0
- package/dist/services/hubChannelHarness/index.mjs +50 -0
- package/dist/services/hubChannelHarness/index.mjs.map +1 -0
- package/dist/services/kernel/index.cjs +147 -0
- package/dist/services/kernel/index.cjs.map +1 -0
- package/dist/services/kernel/index.d.cts +9 -0
- package/dist/services/kernel/index.d.cts.map +1 -0
- package/dist/services/kernel/index.d.mts +9 -0
- package/dist/services/kernel/index.d.mts.map +1 -0
- package/dist/services/kernel/index.mjs +147 -0
- package/dist/services/kernel/index.mjs.map +1 -0
- package/dist/services/loginFlow/index.cjs +131 -0
- package/dist/services/loginFlow/index.cjs.map +1 -0
- package/dist/services/loginFlow/index.mjs +131 -0
- package/dist/services/loginFlow/index.mjs.map +1 -0
- package/dist/services/packageApiHarness/index.cjs +36 -0
- package/dist/services/packageApiHarness/index.cjs.map +1 -0
- package/dist/services/packageApiHarness/index.d.cts +40 -0
- package/dist/services/packageApiHarness/index.d.cts.map +1 -0
- package/dist/services/packageApiHarness/index.d.mts +40 -0
- package/dist/services/packageApiHarness/index.d.mts.map +1 -0
- package/dist/services/packageApiHarness/index.mjs +36 -0
- package/dist/services/packageApiHarness/index.mjs.map +1 -0
- package/dist/services/pairingFlow/index.cjs +145 -0
- package/dist/services/pairingFlow/index.cjs.map +1 -0
- package/dist/services/pairingFlow/index.d.cts +44 -0
- package/dist/services/pairingFlow/index.d.cts.map +1 -0
- package/dist/services/pairingFlow/index.d.mts +44 -0
- package/dist/services/pairingFlow/index.d.mts.map +1 -0
- package/dist/services/pairingFlow/index.mjs +145 -0
- package/dist/services/pairingFlow/index.mjs.map +1 -0
- package/dist/services/pairingPage/index.cjs +450 -0
- package/dist/services/pairingPage/index.cjs.map +1 -0
- package/dist/services/pairingPage/index.mjs +447 -0
- package/dist/services/pairingPage/index.mjs.map +1 -0
- package/dist/services/pluginLifecycle/index.cjs +71 -0
- package/dist/services/pluginLifecycle/index.cjs.map +1 -0
- package/dist/services/pluginLifecycle/index.d.cts +11 -0
- package/dist/services/pluginLifecycle/index.d.cts.map +1 -0
- package/dist/services/pluginLifecycle/index.d.mts +11 -0
- package/dist/services/pluginLifecycle/index.d.mts.map +1 -0
- package/dist/services/pluginLifecycle/index.mjs +71 -0
- package/dist/services/pluginLifecycle/index.mjs.map +1 -0
- package/dist/services/providerAuth/index.cjs +156 -0
- package/dist/services/providerAuth/index.cjs.map +1 -0
- package/dist/services/providerAuth/index.mjs +154 -0
- package/dist/services/providerAuth/index.mjs.map +1 -0
- package/dist/services/remoteAccess/index.cjs +393 -0
- package/dist/services/remoteAccess/index.cjs.map +1 -0
- package/dist/services/remoteAccess/index.d.cts +79 -0
- package/dist/services/remoteAccess/index.d.cts.map +1 -0
- package/dist/services/remoteAccess/index.d.mts +79 -0
- package/dist/services/remoteAccess/index.d.mts.map +1 -0
- package/dist/services/remoteAccess/index.mjs +393 -0
- package/dist/services/remoteAccess/index.mjs.map +1 -0
- package/dist/services/remoteAccessSettings/index.cjs +151 -0
- package/dist/services/remoteAccessSettings/index.cjs.map +1 -0
- package/dist/services/remoteAccessSettings/index.mjs +149 -0
- package/dist/services/remoteAccessSettings/index.mjs.map +1 -0
- package/dist/services/remoteAccessStore/index.cjs +126 -0
- package/dist/services/remoteAccessStore/index.cjs.map +1 -0
- package/dist/services/remoteAccessStore/index.mjs +121 -0
- package/dist/services/remoteAccessStore/index.mjs.map +1 -0
- package/dist/services/remoteGuardPolicy/index.cjs +190 -0
- package/dist/services/remoteGuardPolicy/index.cjs.map +1 -0
- package/dist/services/remoteGuardPolicy/index.d.cts +7 -0
- package/dist/services/remoteGuardPolicy/index.d.cts.map +1 -0
- package/dist/services/remoteGuardPolicy/index.d.mts +7 -0
- package/dist/services/remoteGuardPolicy/index.d.mts.map +1 -0
- package/dist/services/remoteGuardPolicy/index.mjs +186 -0
- package/dist/services/remoteGuardPolicy/index.mjs.map +1 -0
- package/dist/services/rpcTranscript/index.cjs +590 -0
- package/dist/services/rpcTranscript/index.cjs.map +1 -0
- package/dist/services/rpcTranscript/index.d.cts +50 -0
- package/dist/services/rpcTranscript/index.d.cts.map +1 -0
- package/dist/services/rpcTranscript/index.d.mts +50 -0
- package/dist/services/rpcTranscript/index.d.mts.map +1 -0
- package/dist/services/rpcTranscript/index.mjs +589 -0
- package/dist/services/rpcTranscript/index.mjs.map +1 -0
- package/dist/services/serverFacet/index.cjs +197 -0
- package/dist/services/serverFacet/index.cjs.map +1 -0
- package/dist/services/serverFacet/index.d.cts +31 -0
- package/dist/services/serverFacet/index.d.cts.map +1 -0
- package/dist/services/serverFacet/index.d.mts +31 -0
- package/dist/services/serverFacet/index.d.mts.map +1 -0
- package/dist/services/serverFacet/index.mjs +197 -0
- package/dist/services/serverFacet/index.mjs.map +1 -0
- package/dist/services/sessionPresentation/index.cjs +117 -0
- package/dist/services/sessionPresentation/index.cjs.map +1 -0
- package/dist/services/sessionPresentation/index.mjs +117 -0
- package/dist/services/sessionPresentation/index.mjs.map +1 -0
- package/dist/services/sqliteSessionHistory/index.cjs +59 -0
- package/dist/services/sqliteSessionHistory/index.cjs.map +1 -0
- package/dist/services/sqliteSessionHistory/index.d.cts +13 -0
- package/dist/services/sqliteSessionHistory/index.d.cts.map +1 -0
- package/dist/services/sqliteSessionHistory/index.d.mts +13 -0
- package/dist/services/sqliteSessionHistory/index.d.mts.map +1 -0
- package/dist/services/sqliteSessionHistory/index.mjs +57 -0
- package/dist/services/sqliteSessionHistory/index.mjs.map +1 -0
- package/dist/services/sqliteTranscriptReader/index.cjs +49 -0
- package/dist/services/sqliteTranscriptReader/index.cjs.map +1 -0
- package/dist/services/sqliteTranscriptReader/index.mjs +47 -0
- package/dist/services/sqliteTranscriptReader/index.mjs.map +1 -0
- package/dist/services/toolCost/index.cjs +47 -0
- package/dist/services/toolCost/index.cjs.map +1 -0
- package/dist/services/toolCost/index.d.cts +38 -0
- package/dist/services/toolCost/index.d.cts.map +1 -0
- package/dist/services/toolCost/index.d.mts +38 -0
- package/dist/services/toolCost/index.d.mts.map +1 -0
- package/dist/services/toolCost/index.mjs +46 -0
- package/dist/services/toolCost/index.mjs.map +1 -0
- package/dist/services/toolOverrides/index.cjs +45 -0
- package/dist/services/toolOverrides/index.cjs.map +1 -0
- package/dist/services/toolOverrides/index.d.cts +6 -0
- package/dist/services/toolOverrides/index.d.cts.map +1 -0
- package/dist/services/toolOverrides/index.d.mts +6 -0
- package/dist/services/toolOverrides/index.d.mts.map +1 -0
- package/dist/services/toolOverrides/index.mjs +45 -0
- package/dist/services/toolOverrides/index.mjs.map +1 -0
- package/dist/services/toolSurface/index.cjs +105 -0
- package/dist/services/toolSurface/index.cjs.map +1 -0
- package/dist/services/toolSurface/index.d.cts +19 -0
- package/dist/services/toolSurface/index.d.cts.map +1 -0
- package/dist/services/toolSurface/index.d.mts +19 -0
- package/dist/services/toolSurface/index.d.mts.map +1 -0
- package/dist/services/toolSurface/index.mjs +105 -0
- package/dist/services/toolSurface/index.mjs.map +1 -0
- package/dist/services/traceContext/index.cjs +13 -0
- package/dist/services/traceContext/index.cjs.map +1 -0
- package/dist/services/traceContext/index.mjs +13 -0
- package/dist/services/traceContext/index.mjs.map +1 -0
- package/dist/services/transcriptPages/index.cjs +74 -0
- package/dist/services/transcriptPages/index.cjs.map +1 -0
- package/dist/services/transcriptPages/index.mjs +73 -0
- package/dist/services/transcriptPages/index.mjs.map +1 -0
- package/dist/services/tunnelOutput/index.cjs +58 -0
- package/dist/services/tunnelOutput/index.cjs.map +1 -0
- package/dist/services/tunnelOutput/index.mjs +54 -0
- package/dist/services/tunnelOutput/index.mjs.map +1 -0
- package/dist/services/tunnelProcess/index.cjs +486 -0
- package/dist/services/tunnelProcess/index.cjs.map +1 -0
- package/dist/services/tunnelProcess/index.mjs +480 -0
- package/dist/services/tunnelProcess/index.mjs.map +1 -0
- package/dist/services/voiceReloadHandoff/index.cjs +136 -0
- package/dist/services/voiceReloadHandoff/index.cjs.map +1 -0
- package/dist/services/voiceReloadHandoff/index.d.cts +34 -0
- package/dist/services/voiceReloadHandoff/index.d.cts.map +1 -0
- package/dist/services/voiceReloadHandoff/index.d.mts +34 -0
- package/dist/services/voiceReloadHandoff/index.d.mts.map +1 -0
- package/dist/services/voiceReloadHandoff/index.mjs +135 -0
- package/dist/services/voiceReloadHandoff/index.mjs.map +1 -0
- package/dist/services/voiceToolsContract/index.cjs +26 -0
- package/dist/services/voiceToolsContract/index.cjs.map +1 -0
- package/dist/services/voiceToolsContract/index.d.cts +76 -0
- package/dist/services/voiceToolsContract/index.d.cts.map +1 -0
- package/dist/services/voiceToolsContract/index.d.mts +76 -0
- package/dist/services/voiceToolsContract/index.d.mts.map +1 -0
- package/dist/services/voiceToolsContract/index.mjs +24 -0
- package/dist/services/voiceToolsContract/index.mjs.map +1 -0
- package/dist/services/webauthn/index.cjs +262 -0
- package/dist/services/webauthn/index.cjs.map +1 -0
- package/dist/services/webauthn/index.d.cts +39 -0
- package/dist/services/webauthn/index.d.cts.map +1 -0
- package/dist/services/webauthn/index.d.mts +39 -0
- package/dist/services/webauthn/index.d.mts.map +1 -0
- package/dist/services/webauthn/index.mjs +262 -0
- package/dist/services/webauthn/index.mjs.map +1 -0
- package/dist/services/webauthnPolicy/index.cjs +178 -0
- package/dist/services/webauthnPolicy/index.cjs.map +1 -0
- package/dist/services/webauthnPolicy/index.d.cts +41 -0
- package/dist/services/webauthnPolicy/index.d.cts.map +1 -0
- package/dist/services/webauthnPolicy/index.d.mts +41 -0
- package/dist/services/webauthnPolicy/index.d.mts.map +1 -0
- package/dist/services/webauthnPolicy/index.mjs +171 -0
- package/dist/services/webauthnPolicy/index.mjs.map +1 -0
- package/dist/session-files-api.cjs +61 -0
- package/dist/session-files-api.cjs.map +1 -0
- package/dist/session-files-api.d.cts +7 -0
- package/dist/session-files-api.d.cts.map +1 -0
- package/dist/session-files-api.d.mts +7 -0
- package/dist/session-files-api.d.mts.map +1 -0
- package/dist/session-files-api.mjs +57 -0
- package/dist/session-files-api.mjs.map +1 -0
- package/dist/session-protocol.cjs +8 -0
- package/dist/session-protocol.d.cts +3 -0
- package/dist/session-protocol.d.mts +3 -0
- package/dist/session-protocol.mjs +2 -0
- package/dist/skills.cjs +9 -0
- package/dist/skills.d.cts +2 -0
- package/dist/skills.d.mts +2 -0
- package/dist/skills.mjs +2 -0
- package/dist/sqlite-history-import.cjs +151 -0
- package/dist/sqlite-history-import.cjs.map +1 -0
- package/dist/sqlite-history-import.d.cts +8 -0
- package/dist/sqlite-history-import.d.cts.map +1 -0
- package/dist/sqlite-history-import.d.mts +8 -0
- package/dist/sqlite-history-import.d.mts.map +1 -0
- package/dist/sqlite-history-import.mjs +146 -0
- package/dist/sqlite-history-import.mjs.map +1 -0
- package/dist/sqlite-session-storage.cjs +53 -0
- package/dist/sqlite-session-storage.cjs.map +1 -0
- package/dist/sqlite-session-storage.d.cts +7 -0
- package/dist/sqlite-session-storage.d.cts.map +1 -0
- package/dist/sqlite-session-storage.d.mts +7 -0
- package/dist/sqlite-session-storage.d.mts.map +1 -0
- package/dist/sqlite-session-storage.mjs +49 -0
- package/dist/sqlite-session-storage.mjs.map +1 -0
- package/dist/sync-location.cjs +209 -0
- package/dist/sync-location.cjs.map +1 -0
- package/dist/sync-location.d.cts +31 -0
- package/dist/sync-location.d.cts.map +1 -0
- package/dist/sync-location.d.mts +31 -0
- package/dist/sync-location.d.mts.map +1 -0
- package/dist/sync-location.mjs +199 -0
- package/dist/sync-location.mjs.map +1 -0
- package/dist/sync-registration.cjs +140 -0
- package/dist/sync-registration.cjs.map +1 -0
- package/dist/sync-registration.d.cts +38 -0
- package/dist/sync-registration.d.cts.map +1 -0
- package/dist/sync-registration.d.mts +38 -0
- package/dist/sync-registration.d.mts.map +1 -0
- package/dist/sync-registration.mjs +131 -0
- package/dist/sync-registration.mjs.map +1 -0
- package/dist/sync-state-contract.cjs +19 -0
- package/dist/sync-state-contract.cjs.map +1 -0
- package/dist/sync-state-contract.d.cts +14 -0
- package/dist/sync-state-contract.d.cts.map +1 -0
- package/dist/sync-state-contract.d.mts +14 -0
- package/dist/sync-state-contract.d.mts.map +1 -0
- package/dist/sync-state-contract.mjs +16 -0
- package/dist/sync-state-contract.mjs.map +1 -0
- package/dist/systems/child/adapters/headlessChildSessionService.cjs +210 -0
- package/dist/systems/child/adapters/headlessChildSessionService.cjs.map +1 -0
- package/dist/systems/child/adapters/headlessChildSessionService.d.cts +24 -0
- package/dist/systems/child/adapters/headlessChildSessionService.d.cts.map +1 -0
- package/dist/systems/child/adapters/headlessChildSessionService.d.mts +24 -0
- package/dist/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -0
- package/dist/systems/child/adapters/headlessChildSessionService.mjs +205 -0
- package/dist/systems/child/adapters/headlessChildSessionService.mjs.map +1 -0
- package/dist/systems/child/adapters/nativeChildRuntimes.cjs +28 -0
- package/dist/systems/child/adapters/nativeChildRuntimes.cjs.map +1 -0
- package/dist/systems/child/adapters/nativeChildRuntimes.mjs +25 -0
- package/dist/systems/child/adapters/nativeChildRuntimes.mjs.map +1 -0
- package/dist/systems/child/services/childSession/index.cjs +206 -0
- package/dist/systems/child/services/childSession/index.cjs.map +1 -0
- package/dist/systems/child/services/childSession/index.d.cts +14 -0
- package/dist/systems/child/services/childSession/index.d.cts.map +1 -0
- package/dist/systems/child/services/childSession/index.d.mts +14 -0
- package/dist/systems/child/services/childSession/index.d.mts.map +1 -0
- package/dist/systems/child/services/childSession/index.mjs +206 -0
- package/dist/systems/child/services/childSession/index.mjs.map +1 -0
- package/dist/systems/child/types/childSession.cjs +16 -0
- package/dist/systems/child/types/childSession.cjs.map +1 -0
- package/dist/systems/child/types/childSession.d.cts +135 -0
- package/dist/systems/child/types/childSession.d.cts.map +1 -0
- package/dist/systems/child/types/childSession.d.mts +135 -0
- package/dist/systems/child/types/childSession.d.mts.map +1 -0
- package/dist/systems/child/types/childSession.mjs +14 -0
- package/dist/systems/child/types/childSession.mjs.map +1 -0
- package/dist/systems/main/adapters/headlessHost.cjs +436 -0
- package/dist/systems/main/adapters/headlessHost.cjs.map +1 -0
- package/dist/systems/main/adapters/headlessHost.d.cts +72 -0
- package/dist/systems/main/adapters/headlessHost.d.cts.map +1 -0
- package/dist/systems/main/adapters/headlessHost.d.mts +72 -0
- package/dist/systems/main/adapters/headlessHost.d.mts.map +1 -0
- package/dist/systems/main/adapters/headlessHost.mjs +435 -0
- package/dist/systems/main/adapters/headlessHost.mjs.map +1 -0
- package/dist/systems/main/adapters/headlessSessionHost.cjs +653 -0
- package/dist/systems/main/adapters/headlessSessionHost.cjs.map +1 -0
- package/dist/systems/main/adapters/headlessSessionHost.d.cts +14 -0
- package/dist/systems/main/adapters/headlessSessionHost.d.cts.map +1 -0
- package/dist/systems/main/adapters/headlessSessionHost.d.mts +14 -0
- package/dist/systems/main/adapters/headlessSessionHost.d.mts.map +1 -0
- package/dist/systems/main/adapters/headlessSessionHost.mjs +649 -0
- package/dist/systems/main/adapters/headlessSessionHost.mjs.map +1 -0
- package/dist/systems/main/types/headlessHost.d.cts +36 -0
- package/dist/systems/main/types/headlessHost.d.cts.map +1 -0
- package/dist/systems/main/types/headlessHost.d.mts +36 -0
- package/dist/systems/main/types/headlessHost.d.mts.map +1 -0
- package/dist/terminal-pi-child-session-service.cjs +263 -0
- package/dist/terminal-pi-child-session-service.cjs.map +1 -0
- package/dist/terminal-pi-child-session-service.d.cts +36 -0
- package/dist/terminal-pi-child-session-service.d.cts.map +1 -0
- package/dist/terminal-pi-child-session-service.d.mts +36 -0
- package/dist/terminal-pi-child-session-service.d.mts.map +1 -0
- package/dist/terminal-pi-child-session-service.mjs +256 -0
- package/dist/terminal-pi-child-session-service.mjs.map +1 -0
- package/dist/testing/pi/extensionScenarios.cjs +73 -0
- package/dist/testing/pi/extensionScenarios.cjs.map +1 -0
- package/dist/testing/pi/extensionScenarios.d.cts +41 -0
- package/dist/testing/pi/extensionScenarios.d.cts.map +1 -0
- package/dist/testing/pi/extensionScenarios.d.mts +41 -0
- package/dist/testing/pi/extensionScenarios.d.mts.map +1 -0
- package/dist/testing/pi/extensionScenarios.mjs +73 -0
- package/dist/testing/pi/extensionScenarios.mjs.map +1 -0
- package/dist/testing/pi/testHost.cjs +365 -0
- package/dist/testing/pi/testHost.cjs.map +1 -0
- package/dist/testing/pi/testHost.d.cts +160 -0
- package/dist/testing/pi/testHost.d.cts.map +1 -0
- package/dist/testing/pi/testHost.d.mts +160 -0
- package/dist/testing/pi/testHost.d.mts.map +1 -0
- package/dist/testing/pi/testHost.mjs +365 -0
- package/dist/testing/pi/testHost.mjs.map +1 -0
- package/dist/testing.cjs +9 -0
- package/dist/testing.d.cts +5 -0
- package/dist/testing.d.mts +5 -0
- package/dist/testing.mjs +5 -0
- package/dist/tool-inventory.cjs +136 -0
- package/dist/tool-inventory.cjs.map +1 -0
- package/dist/tool-inventory.d.cts +66 -0
- package/dist/tool-inventory.d.cts.map +1 -0
- package/dist/tool-inventory.d.mts +66 -0
- package/dist/tool-inventory.d.mts.map +1 -0
- package/dist/tool-inventory.mjs +133 -0
- package/dist/tool-inventory.mjs.map +1 -0
- package/dist/tool-names.cjs +4 -0
- package/dist/tool-names.d.cts +2 -0
- package/dist/tool-names.d.mts +2 -0
- package/dist/tool-names.mjs +2 -0
- package/dist/tool-overrides.cjs +7 -0
- package/dist/tool-overrides.d.cts +3 -0
- package/dist/tool-overrides.d.mts +3 -0
- package/dist/tool-overrides.mjs +3 -0
- package/dist/tool-surface.cjs +7 -0
- package/dist/tool-surface.d.cts +3 -0
- package/dist/tool-surface.d.mts +3 -0
- package/dist/tool-surface.mjs +3 -0
- package/dist/transition-classifier.cjs +112 -0
- package/dist/transition-classifier.cjs.map +1 -0
- package/dist/transition-classifier.d.cts +18 -0
- package/dist/transition-classifier.d.cts.map +1 -0
- package/dist/transition-classifier.d.mts +18 -0
- package/dist/transition-classifier.d.mts.map +1 -0
- package/dist/transition-classifier.mjs +111 -0
- package/dist/transition-classifier.mjs.map +1 -0
- package/dist/transition-coordinator.cjs +131 -0
- package/dist/transition-coordinator.cjs.map +1 -0
- package/dist/transition-coordinator.d.cts +16 -0
- package/dist/transition-coordinator.d.cts.map +1 -0
- package/dist/transition-coordinator.d.mts +16 -0
- package/dist/transition-coordinator.d.mts.map +1 -0
- package/dist/transition-coordinator.mjs +130 -0
- package/dist/transition-coordinator.mjs.map +1 -0
- package/dist/transition.cjs +5 -0
- package/dist/transition.d.cts +2 -0
- package/dist/transition.d.mts +2 -0
- package/dist/transition.mjs +2 -0
- package/dist/types/config.d.cts +20 -0
- package/dist/types/config.d.cts.map +1 -0
- package/dist/types/config.d.mts +20 -0
- package/dist/types/config.d.mts.map +1 -0
- package/dist/types/kernel.d.cts +69 -0
- package/dist/types/kernel.d.cts.map +1 -0
- package/dist/types/kernel.d.mts +69 -0
- package/dist/types/kernel.d.mts.map +1 -0
- package/dist/types/remote.d.cts +124 -0
- package/dist/types/remote.d.cts.map +1 -0
- package/dist/types/remote.d.mts +124 -0
- package/dist/types/remote.d.mts.map +1 -0
- package/dist/types/server/directHarnessRuntime.d.cts +156 -0
- package/dist/types/server/directHarnessRuntime.d.cts.map +1 -0
- package/dist/types/server/directHarnessRuntime.d.mts +156 -0
- package/dist/types/server/directHarnessRuntime.d.mts.map +1 -0
- package/dist/types/server/session.d.cts +5 -0
- package/dist/types/server/session.d.cts.map +1 -0
- package/dist/types/server/session.d.mts +5 -0
- package/dist/types/server/session.d.mts.map +1 -0
- package/dist/types-context-api.cjs +0 -0
- package/dist/types-context-api.d.cts +48 -0
- package/dist/types-context-api.d.cts.map +1 -0
- package/dist/types-context-api.d.mts +48 -0
- package/dist/types-context-api.d.mts.map +1 -0
- package/dist/types-context-api.mjs +1 -0
- package/dist/ui-hub.cjs +5 -0
- package/dist/ui-hub.d.cts +2 -0
- package/dist/ui-hub.d.mts +2 -0
- package/dist/ui-hub.mjs +2 -0
- package/dist/v3-export.cjs +1004 -0
- package/dist/v3-export.cjs.map +1 -0
- package/dist/v3-export.d.cts +34 -0
- package/dist/v3-export.d.cts.map +1 -0
- package/dist/v3-export.d.mts +34 -0
- package/dist/v3-export.d.mts.map +1 -0
- package/dist/v3-export.mjs +1000 -0
- package/dist/v3-export.mjs.map +1 -0
- package/dist/voice-reload-handoff.cjs +14 -0
- package/dist/voice-reload-handoff.d.cts +4 -0
- package/dist/voice-reload-handoff.d.mts +4 -0
- package/dist/voice-reload-handoff.mjs +4 -0
- package/dist/voice-tools.cjs +56 -0
- package/dist/voice-tools.d.cts +4 -0
- package/dist/voice-tools.d.mts +4 -0
- package/dist/voice-tools.mjs +4 -0
- package/dist/web/models/globalStore.cjs +23 -0
- package/dist/web/models/globalStore.cjs.map +1 -0
- package/dist/web/models/globalStore.d.cts +6 -0
- package/dist/web/models/globalStore.d.cts.map +1 -0
- package/dist/web/models/globalStore.d.mts +6 -0
- package/dist/web/models/globalStore.d.mts.map +1 -0
- package/dist/web/models/globalStore.mjs +23 -0
- package/dist/web/models/globalStore.mjs.map +1 -0
- package/dist/web/models/sessionStore.cjs +56 -0
- package/dist/web/models/sessionStore.cjs.map +1 -0
- package/dist/web/models/sessionStore.d.cts +14 -0
- package/dist/web/models/sessionStore.d.cts.map +1 -0
- package/dist/web/models/sessionStore.d.mts +14 -0
- package/dist/web/models/sessionStore.d.mts.map +1 -0
- package/dist/web/models/sessionStore.mjs +56 -0
- package/dist/web/models/sessionStore.mjs.map +1 -0
- package/dist/web/schemas/bundleAssetPolicy.cjs +20 -0
- package/dist/web/schemas/bundleAssetPolicy.cjs.map +1 -0
- package/dist/web/schemas/bundleAssetPolicy.d.cts +10 -0
- package/dist/web/schemas/bundleAssetPolicy.d.cts.map +1 -0
- package/dist/web/schemas/bundleAssetPolicy.d.mts +10 -0
- package/dist/web/schemas/bundleAssetPolicy.d.mts.map +1 -0
- package/dist/web/schemas/bundleAssetPolicy.mjs +18 -0
- package/dist/web/schemas/bundleAssetPolicy.mjs.map +1 -0
- package/dist/web/services/sessionRegistry/index.cjs +107 -0
- package/dist/web/services/sessionRegistry/index.cjs.map +1 -0
- package/dist/web/services/sessionRegistry/index.d.cts +42 -0
- package/dist/web/services/sessionRegistry/index.d.cts.map +1 -0
- package/dist/web/services/sessionRegistry/index.d.mts +42 -0
- package/dist/web/services/sessionRegistry/index.d.mts.map +1 -0
- package/dist/web/services/sessionRegistry/index.mjs +100 -0
- package/dist/web/services/sessionRegistry/index.mjs.map +1 -0
- package/dist/web/services/testing/channels.cjs +11 -0
- package/dist/web/services/testing/channels.cjs.map +1 -0
- package/dist/web/services/testing/channels.d.cts +8 -0
- package/dist/web/services/testing/channels.d.cts.map +1 -0
- package/dist/web/services/testing/channels.d.mts +8 -0
- package/dist/web/services/testing/channels.d.mts.map +1 -0
- package/dist/web/services/testing/channels.mjs +11 -0
- package/dist/web/services/testing/channels.mjs.map +1 -0
- package/dist/web/services/testing/index.cjs +27 -0
- package/dist/web/services/testing/index.cjs.map +1 -0
- package/dist/web/services/testing/index.d.cts +31 -0
- package/dist/web/services/testing/index.d.cts.map +1 -0
- package/dist/web/services/testing/index.d.mts +31 -0
- package/dist/web/services/testing/index.d.mts.map +1 -0
- package/dist/web/services/testing/index.mjs +27 -0
- package/dist/web/services/testing/index.mjs.map +1 -0
- package/dist/web/services/testing/slotProps.cjs +90 -0
- package/dist/web/services/testing/slotProps.cjs.map +1 -0
- package/dist/web/services/testing/slotProps.d.cts +67 -0
- package/dist/web/services/testing/slotProps.d.cts.map +1 -0
- package/dist/web/services/testing/slotProps.d.mts +67 -0
- package/dist/web/services/testing/slotProps.d.mts.map +1 -0
- package/dist/web/services/testing/slotProps.mjs +89 -0
- package/dist/web/services/testing/slotProps.mjs.map +1 -0
- package/dist/web/services/toolResult/index.cjs +30 -0
- package/dist/web/services/toolResult/index.cjs.map +1 -0
- package/dist/web/services/toolResult/index.d.cts +14 -0
- package/dist/web/services/toolResult/index.d.cts.map +1 -0
- package/dist/web/services/toolResult/index.d.mts +14 -0
- package/dist/web/services/toolResult/index.d.mts.map +1 -0
- package/dist/web/services/toolResult/index.mjs +29 -0
- package/dist/web/services/toolResult/index.mjs.map +1 -0
- package/dist/web/testing.cjs +8 -0
- package/dist/web/testing.d.cts +4 -0
- package/dist/web/testing.d.mts +4 -0
- package/dist/web/testing.mjs +4 -0
- package/dist/web/types/modelContext.d.cts +43 -0
- package/dist/web/types/modelContext.d.cts.map +1 -0
- package/dist/web/types/modelContext.d.mts +43 -0
- package/dist/web/types/modelContext.d.mts.map +1 -0
- package/dist/web/types/sessionRegistry.d.cts +59 -0
- package/dist/web/types/sessionRegistry.d.cts.map +1 -0
- package/dist/web/types/sessionRegistry.d.mts +59 -0
- package/dist/web/types/sessionRegistry.d.mts.map +1 -0
- package/dist/web/types/webPlugin.d.cts +809 -0
- package/dist/web/types/webPlugin.d.cts.map +1 -0
- package/dist/web/types/webPlugin.d.mts +809 -0
- package/dist/web/types/webPlugin.d.mts.map +1 -0
- package/dist/web-compositions.cjs +100 -0
- package/dist/web-compositions.cjs.map +1 -0
- package/dist/web-compositions.d.cts +20 -0
- package/dist/web-compositions.d.cts.map +1 -0
- package/dist/web-compositions.d.mts +20 -0
- package/dist/web-compositions.d.mts.map +1 -0
- package/dist/web-compositions.mjs +95 -0
- package/dist/web-compositions.mjs.map +1 -0
- package/dist/web.cjs +25 -0
- package/dist/web.d.cts +10 -0
- package/dist/web.d.mts +10 -0
- package/dist/web.mjs +7 -0
- package/package.json +587 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { createDoomChildSessionService } from "./systems/child/services/childSession/index.mjs";
|
|
2
|
+
import { registerNativeChild } from "./systems/child/adapters/nativeChildRuntimes.mjs";
|
|
3
|
+
import { importV3WithPinnedUpstream } from "./jsonl-session-repo.mjs";
|
|
4
|
+
import { createDirectHarnessRuntime, promptForAssistantText } from "./server/directHarnessRuntime.mjs";
|
|
5
|
+
import { readNativeChildTranscript } from "./server/nativeChildTranscriptReader.mjs";
|
|
6
|
+
import { createHistoryOwnership } from "./history-ownership.mjs";
|
|
7
|
+
import { composeDirectHarnessRequestOptions, createHeadlessChildSessionService } from "./systems/child/adapters/headlessChildSessionService.mjs";
|
|
8
|
+
import fs from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
11
|
+
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
12
|
+
import os from "node:os";
|
|
13
|
+
//#region src/systems/child/adapters/terminalPiChildSessionService.ts
|
|
14
|
+
function childRuntime(runtime, intercom, release) {
|
|
15
|
+
const file = runtime.session.metadata.path;
|
|
16
|
+
return {
|
|
17
|
+
sessionId: runtime.sessionId,
|
|
18
|
+
...typeof file === "string" ? { sessionFile: file } : {},
|
|
19
|
+
...typeof file === "string" ? { readTranscriptPage: (request, signal) => readNativeChildTranscript(file, request, signal) } : {},
|
|
20
|
+
prompt: (task) => promptForAssistantText(runtime, task),
|
|
21
|
+
steer: (message) => runtime.steer(message),
|
|
22
|
+
followUp: (message) => runtime.followUp(message),
|
|
23
|
+
abort: () => runtime.abort(),
|
|
24
|
+
dispose: async () => {
|
|
25
|
+
try {
|
|
26
|
+
await runtime.dispose();
|
|
27
|
+
} finally {
|
|
28
|
+
release?.();
|
|
29
|
+
intercom?.dispose?.();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async function installIntercom(runtime, intercom, tools) {
|
|
35
|
+
if (!intercom) return;
|
|
36
|
+
const tool = intercom.bindRuntime(childRuntime(runtime));
|
|
37
|
+
const adapted = {
|
|
38
|
+
...tool,
|
|
39
|
+
parameters: tool.parameters,
|
|
40
|
+
execute: (operationId, params, signal, onUpdate) => tool.execute(operationId, params, signal, onUpdate)
|
|
41
|
+
};
|
|
42
|
+
await runtime.replaceTools([...tools, adapted]);
|
|
43
|
+
}
|
|
44
|
+
function asRecord(value) {
|
|
45
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
|
|
46
|
+
}
|
|
47
|
+
function requireString(value, field) {
|
|
48
|
+
if (typeof value !== "string" || value.length === 0) throw new Error(`Invalid terminal Pi snapshot ${field}`);
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
function modelReference(value) {
|
|
52
|
+
if (value === void 0) return void 0;
|
|
53
|
+
const separator = value.indexOf("/");
|
|
54
|
+
if (separator <= 0 || separator === value.length - 1) throw new Error(`Child model must use the provider/model form: ${value}`);
|
|
55
|
+
return {
|
|
56
|
+
provider: value.slice(0, separator),
|
|
57
|
+
id: value.slice(separator + 1)
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function parseSnapshot(snapshotJsonl) {
|
|
61
|
+
if (!snapshotJsonl.endsWith("\n")) throw new Error("Terminal Pi snapshot is truncated.");
|
|
62
|
+
const lines = snapshotJsonl.slice(0, -1).split("\n");
|
|
63
|
+
let headerValue;
|
|
64
|
+
try {
|
|
65
|
+
headerValue = JSON.parse(lines[0] ?? "");
|
|
66
|
+
} catch (error) {
|
|
67
|
+
throw new Error("Malformed terminal Pi snapshot header.", { cause: error });
|
|
68
|
+
}
|
|
69
|
+
const header = asRecord(headerValue);
|
|
70
|
+
if (header?.type !== "session" || header.version !== 3) throw new Error("Terminal Pi child source must be a v3 JSONL snapshot.");
|
|
71
|
+
return {
|
|
72
|
+
header,
|
|
73
|
+
records: lines.slice(1).map((line, index) => {
|
|
74
|
+
let value;
|
|
75
|
+
try {
|
|
76
|
+
value = JSON.parse(line);
|
|
77
|
+
} catch (error) {
|
|
78
|
+
throw new Error(`Malformed terminal Pi snapshot record at line ${index + 2}.`, { cause: error });
|
|
79
|
+
}
|
|
80
|
+
const record = asRecord(value);
|
|
81
|
+
if (record === void 0) throw new Error(`Invalid terminal Pi snapshot record at line ${index + 2}`);
|
|
82
|
+
requireString(record.id, `record ${index + 2} id`);
|
|
83
|
+
if (record.parentId !== null && typeof record.parentId !== "string") throw new Error(`Invalid terminal Pi snapshot record ${index + 2} parentId`);
|
|
84
|
+
return record;
|
|
85
|
+
})
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** Capture data from Pi memory, not its writable v3 path. The JSONL string is immutable after return. */
|
|
89
|
+
function captureTerminalPiForkSource(manager, selectedLeafId = manager.getLeafId()) {
|
|
90
|
+
const sourceSessionId = manager.getSessionId();
|
|
91
|
+
const sourceLeafId = selectedLeafId;
|
|
92
|
+
const header = manager.getHeader();
|
|
93
|
+
if (!sourceSessionId.trim() || !sourceLeafId || header?.type !== "session" || header.version !== 3) return void 0;
|
|
94
|
+
const branch = manager.getBranch(sourceLeafId);
|
|
95
|
+
if (branch.at(-1)?.id !== sourceLeafId) return void 0;
|
|
96
|
+
const snapshotJsonl = `${[header, ...branch].map((record) => JSON.stringify(record)).join("\n")}\n`;
|
|
97
|
+
return Object.freeze({
|
|
98
|
+
kind: "terminal-pi-fork",
|
|
99
|
+
sourceSessionId,
|
|
100
|
+
sourceLeafId,
|
|
101
|
+
snapshotJsonl
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function sourceIdentity(filePath) {
|
|
105
|
+
const content = fs.readFileSync(filePath);
|
|
106
|
+
const stat = fs.statSync(filePath);
|
|
107
|
+
return {
|
|
108
|
+
path: filePath,
|
|
109
|
+
realPath: fs.realpathSync(filePath),
|
|
110
|
+
device: stat.dev,
|
|
111
|
+
inode: stat.ino,
|
|
112
|
+
size: stat.size,
|
|
113
|
+
mtimeMs: stat.mtimeMs,
|
|
114
|
+
sha256: createHash("sha256").update(content).digest("hex")
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function rewriteImportedHeader(filePath, request, sourceSessionId) {
|
|
118
|
+
const lines = fs.readFileSync(filePath, "utf8").split("\n");
|
|
119
|
+
const header = asRecord(JSON.parse(lines[0] ?? ""));
|
|
120
|
+
if (header?.kind !== "header" || header.v !== 4) throw new Error("Terminal Pi child journal import did not produce a v4 JSONL file.");
|
|
121
|
+
header.id = randomUUID();
|
|
122
|
+
header.cwd = request.cwd;
|
|
123
|
+
header.parentSessionId = request.parentSessionId || sourceSessionId;
|
|
124
|
+
delete header.legacyParentSessionPath;
|
|
125
|
+
lines[0] = JSON.stringify(header);
|
|
126
|
+
fs.writeFileSync(filePath, lines.join("\n"));
|
|
127
|
+
}
|
|
128
|
+
async function createChildJournal(request, source, options, ownership) {
|
|
129
|
+
const parsed = parseSnapshot(source.snapshotJsonl);
|
|
130
|
+
if (requireString(parsed.header.id, "header id") !== source.sourceSessionId) throw new Error("Terminal Pi snapshot session identity does not match its sourceSessionId.");
|
|
131
|
+
if (parsed.records.at(-1)?.id !== source.sourceLeafId) throw new Error("Terminal Pi snapshot leaf does not match its sourceLeafId.");
|
|
132
|
+
const root = fs.mkdtempSync(path.join(os.tmpdir(), "doom-terminal-pi-fork-"));
|
|
133
|
+
const sourcePath = path.join(root, "snapshot.jsonl");
|
|
134
|
+
fs.writeFileSync(sourcePath, source.snapshotJsonl, { mode: 384 });
|
|
135
|
+
const sessionsRoot = path.resolve(options.sessionsRoot ?? path.join(getAgentDir(), "sessions"));
|
|
136
|
+
fs.mkdirSync(sessionsRoot, {
|
|
137
|
+
recursive: true,
|
|
138
|
+
mode: 448
|
|
139
|
+
});
|
|
140
|
+
const destinationPath = path.join(sessionsRoot, `${Date.now()}-${randomUUID()}.jsonl`);
|
|
141
|
+
fs.copyFileSync(sourcePath, destinationPath, fs.constants.COPYFILE_EXCL);
|
|
142
|
+
let destinationLease;
|
|
143
|
+
let primaryFailure;
|
|
144
|
+
try {
|
|
145
|
+
destinationLease = await ownership.acquire(destinationPath);
|
|
146
|
+
await destinationLease.assertQuiescent();
|
|
147
|
+
await importV3WithPinnedUpstream({
|
|
148
|
+
sourcePath,
|
|
149
|
+
stagingPath: destinationPath,
|
|
150
|
+
originalPath: sourcePath,
|
|
151
|
+
sourceIdentity: sourceIdentity(sourcePath)
|
|
152
|
+
});
|
|
153
|
+
rewriteImportedHeader(destinationPath, request, source.sourceSessionId);
|
|
154
|
+
} catch (error) {
|
|
155
|
+
primaryFailure = error;
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
await destinationLease?.release();
|
|
159
|
+
} catch (error) {
|
|
160
|
+
primaryFailure = primaryFailure === void 0 ? error : new AggregateError([primaryFailure, error]);
|
|
161
|
+
}
|
|
162
|
+
fs.rmSync(root, {
|
|
163
|
+
recursive: true,
|
|
164
|
+
force: true
|
|
165
|
+
});
|
|
166
|
+
if (primaryFailure !== void 0) {
|
|
167
|
+
fs.rmSync(destinationPath, { force: true });
|
|
168
|
+
throw primaryFailure;
|
|
169
|
+
}
|
|
170
|
+
return destinationPath;
|
|
171
|
+
}
|
|
172
|
+
function createTerminalPiChildSessionService(options) {
|
|
173
|
+
const runtimeFactory = options.runtimeFactory ?? createDirectHarnessRuntime;
|
|
174
|
+
const ownership = options.historyOwnership ?? createHistoryOwnership();
|
|
175
|
+
const headlessOptions = {
|
|
176
|
+
parentSessionId: "",
|
|
177
|
+
cwd: options.cwd,
|
|
178
|
+
...options.sessionsRoot === void 0 ? {} : { sessionsRoot: options.sessionsRoot },
|
|
179
|
+
...options.models === void 0 ? {} : { models: options.models },
|
|
180
|
+
...options.providers === void 0 ? {} : { providers: options.providers },
|
|
181
|
+
...options.defaultModel === void 0 ? {} : { defaultModel: options.defaultModel },
|
|
182
|
+
historyOwnership: ownership,
|
|
183
|
+
...options.now === void 0 ? {} : { now: options.now },
|
|
184
|
+
runtimeFactory
|
|
185
|
+
};
|
|
186
|
+
const headless = createHeadlessChildSessionService(headlessOptions);
|
|
187
|
+
const terminal = createDoomChildSessionService(async (request, signal) => {
|
|
188
|
+
signal?.throwIfAborted();
|
|
189
|
+
if (request.source.kind !== "terminal-pi-fork") throw new Error("Terminal Pi child sessions require terminal Pi fork sources.");
|
|
190
|
+
const directRequestOptions = composeDirectHarnessRequestOptions(request);
|
|
191
|
+
const model = modelReference(request.model) ?? options.defaultModel?.();
|
|
192
|
+
const sessionPath = await createChildJournal(request, request.source, options, ownership);
|
|
193
|
+
const runtimeOptions = {
|
|
194
|
+
cwd: request.cwd || options.cwd,
|
|
195
|
+
parentSessionId: request.parentSessionId,
|
|
196
|
+
sessionPath,
|
|
197
|
+
...options.sessionsRoot === void 0 ? {} : { sessionsRoot: options.sessionsRoot },
|
|
198
|
+
...options.models === void 0 ? {} : { models: options.models },
|
|
199
|
+
...options.providers === void 0 ? {} : { providers: options.providers },
|
|
200
|
+
...model === void 0 ? {} : { model },
|
|
201
|
+
...request.thinking === void 0 ? {} : { thinkingLevel: request.thinking },
|
|
202
|
+
...directRequestOptions,
|
|
203
|
+
historyOwnership: ownership
|
|
204
|
+
};
|
|
205
|
+
let runtime;
|
|
206
|
+
try {
|
|
207
|
+
runtime = await runtimeFactory(runtimeOptions);
|
|
208
|
+
await installIntercom(runtime, request.intercom, runtimeOptions.tools ?? []);
|
|
209
|
+
const file = runtime.session.metadata.path;
|
|
210
|
+
return childRuntime(runtime, request.intercom, typeof file === "string" ? registerNativeChild(file, runtime) : void 0);
|
|
211
|
+
} catch (error) {
|
|
212
|
+
let failure = error;
|
|
213
|
+
try {
|
|
214
|
+
await runtime?.dispose();
|
|
215
|
+
} catch (cleanupError) {
|
|
216
|
+
failure = new AggregateError([error, cleanupError], "Terminal Pi child startup cleanup failed");
|
|
217
|
+
} finally {
|
|
218
|
+
request.intercom?.dispose?.();
|
|
219
|
+
fs.rmSync(sessionPath, { force: true });
|
|
220
|
+
}
|
|
221
|
+
throw failure;
|
|
222
|
+
}
|
|
223
|
+
}, { now: options.now ?? Date.now });
|
|
224
|
+
const owners = /* @__PURE__ */ new Map();
|
|
225
|
+
return {
|
|
226
|
+
async start(request, signal) {
|
|
227
|
+
const owner = request.source.kind === "terminal-pi-fork" ? terminal : headless;
|
|
228
|
+
const handle = await owner.start(request, signal);
|
|
229
|
+
owners.set(request.runId, owner);
|
|
230
|
+
return handle;
|
|
231
|
+
},
|
|
232
|
+
get: (runId) => owners.get(runId)?.get(runId) ?? terminal.get(runId) ?? headless.get(runId),
|
|
233
|
+
readTranscriptPage(runId, request, signal) {
|
|
234
|
+
const owner = owners.get(runId);
|
|
235
|
+
if (!owner?.readTranscriptPage) return Promise.reject(/* @__PURE__ */ new Error(`Child run '${runId}' has no readable transcript.`));
|
|
236
|
+
return owner.readTranscriptPage(runId, request, signal);
|
|
237
|
+
},
|
|
238
|
+
close: async () => {
|
|
239
|
+
const failures = await Promise.allSettled([terminal.close(), headless.close()]);
|
|
240
|
+
owners.clear();
|
|
241
|
+
const rejected = failures.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
|
|
242
|
+
if (rejected.length) throw new AggregateError(rejected, "Terminal Pi child-session shutdown failed.");
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
function createTerminalPiChildSessionServiceProvider(options) {
|
|
247
|
+
const service = createTerminalPiChildSessionService(options);
|
|
248
|
+
return {
|
|
249
|
+
get: () => service,
|
|
250
|
+
close: () => service.close()
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
//#endregion
|
|
254
|
+
export { captureTerminalPiForkSource, createTerminalPiChildSessionService, createTerminalPiChildSessionServiceProvider };
|
|
255
|
+
|
|
256
|
+
//# sourceMappingURL=terminal-pi-child-session-service.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-pi-child-session-service.mjs","names":[],"sources":["../src/systems/child/adapters/terminalPiChildSessionService.ts"],"sourcesContent":["import { createHash, randomUUID } from 'node:crypto';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport type { Models, MutableModels, Provider } from '@earendil-works/pi-ai';\nimport { getAgentDir } from '@earendil-works/pi-coding-agent';\n\nimport {\n createDoomChildSessionService,\n type DoomChildSessionIntercom,\n type DoomChildSessionRuntime,\n type DoomChildSessionService,\n type DoomChildSessionServiceProvider,\n type DoomChildSessionTerminalPiForkSource,\n type DoomChildSessionRequest,\n} from '../../../exports/childSession';\nimport {\n createDirectHarnessRuntime,\n promptForAssistantText,\n type DirectHarnessRuntime,\n type DirectHarnessRuntimeOptions,\n} from '../../../server/directHarnessRuntime';\nimport { readNativeChildTranscript } from '../../../server/nativeChildTranscriptReader';\nimport type { HistoryOwnership, HistoryOwnershipLease } from '../../../services/historyImport';\nimport { createHistoryOwnership } from '../../../services/historyOwnership';\nimport { importV3WithPinnedUpstream } from '../../../services/jsonlSessionRepo';\nimport type { DirectHarnessModel } from '../../../types/server/directHarnessRuntime';\nimport {\n composeDirectHarnessRequestOptions,\n createHeadlessChildSessionService,\n type HeadlessChildSessionServiceOptions,\n} from './headlessChildSessionService';\nimport { registerNativeChild } from './nativeChildRuntimes';\n\nexport interface TerminalPiChildSessionServiceOptions {\n readonly cwd: string;\n readonly sessionsRoot?: string;\n readonly models?: Models | MutableModels;\n readonly providers?: readonly Provider[];\n readonly defaultModel?: () => DirectHarnessModel | undefined;\n readonly historyOwnership?: HistoryOwnership;\n readonly now?: () => number;\n readonly runtimeFactory?: (options: DirectHarnessRuntimeOptions) => Promise<DirectHarnessRuntime>;\n}\n\nexport interface TerminalPiForkSourceManager {\n getSessionId(): string;\n getLeafId(): string | null;\n getHeader(): { type: string; version?: number; [key: string]: unknown } | null;\n getBranch(fromId?: string): readonly Record<string, unknown>[];\n}\n\nfunction childRuntime(\n runtime: DirectHarnessRuntime,\n intercom?: DoomChildSessionIntercom,\n release?: () => void,\n): DoomChildSessionRuntime {\n const file = (runtime.session.metadata as unknown as { path?: unknown }).path;\n return {\n sessionId: runtime.sessionId,\n ...(typeof file === 'string' ? { sessionFile: file } : {}),\n ...(typeof file === 'string'\n ? { readTranscriptPage: (request, signal) => readNativeChildTranscript(file, request, signal) }\n : {}),\n prompt: (task) => promptForAssistantText(runtime, task),\n steer: (message) => runtime.steer(message),\n followUp: (message) => runtime.followUp(message),\n abort: () => runtime.abort(),\n dispose: async () => {\n try {\n await runtime.dispose();\n } finally {\n release?.();\n intercom?.dispose?.();\n }\n },\n };\n}\n\ntype DirectHarnessTool = Parameters<DirectHarnessRuntime['replaceTools']>[0][number];\n\nasync function installIntercom(\n runtime: DirectHarnessRuntime,\n intercom: DoomChildSessionIntercom | undefined,\n tools: DirectHarnessTool[],\n): Promise<void> {\n if (!intercom) return;\n const tool = intercom.bindRuntime(childRuntime(runtime));\n const adapted = {\n ...tool,\n parameters: tool.parameters as never,\n execute: (operationId: string, params: unknown, signal: AbortSignal, onUpdate: unknown) =>\n tool.execute(operationId, params, signal, onUpdate as never),\n } as unknown as DirectHarnessTool;\n await runtime.replaceTools([...tools, adapted]);\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction requireString(value: unknown, field: string): string {\n if (typeof value !== 'string' || value.length === 0) throw new Error(`Invalid terminal Pi snapshot ${field}`);\n return value;\n}\n\nfunction modelReference(value: string | undefined): DirectHarnessModel | undefined {\n if (value === undefined) return undefined;\n const separator = value.indexOf('/');\n if (separator <= 0 || separator === value.length - 1)\n throw new Error(`Child model must use the provider/model form: ${value}`);\n return { provider: value.slice(0, separator), id: value.slice(separator + 1) };\n}\n\nfunction parseSnapshot(snapshotJsonl: string): { header: Record<string, unknown>; records: Record<string, unknown>[] } {\n if (!snapshotJsonl.endsWith('\\n')) throw new Error('Terminal Pi snapshot is truncated.');\n const lines = snapshotJsonl.slice(0, -1).split('\\n');\n let headerValue: unknown;\n try {\n headerValue = JSON.parse(lines[0] ?? '');\n } catch (error) {\n throw new Error('Malformed terminal Pi snapshot header.', { cause: error });\n }\n const header = asRecord(headerValue);\n if (header?.type !== 'session' || header.version !== 3)\n throw new Error('Terminal Pi child source must be a v3 JSONL snapshot.');\n const records = lines.slice(1).map((line, index) => {\n let value: unknown;\n try {\n value = JSON.parse(line);\n } catch (error) {\n throw new Error(`Malformed terminal Pi snapshot record at line ${index + 2}.`, { cause: error });\n }\n const record = asRecord(value);\n if (record === undefined) throw new Error(`Invalid terminal Pi snapshot record at line ${index + 2}`);\n requireString(record.id, `record ${index + 2} id`);\n if (record.parentId !== null && typeof record.parentId !== 'string')\n throw new Error(`Invalid terminal Pi snapshot record ${index + 2} parentId`);\n return record;\n });\n return { header, records };\n}\n\n/** Capture data from Pi memory, not its writable v3 path. The JSONL string is immutable after return. */\nexport function captureTerminalPiForkSource(\n manager: TerminalPiForkSourceManager,\n selectedLeafId = manager.getLeafId(),\n): DoomChildSessionTerminalPiForkSource | undefined {\n const sourceSessionId = manager.getSessionId();\n const sourceLeafId = selectedLeafId;\n const header = manager.getHeader();\n if (!sourceSessionId.trim() || !sourceLeafId || header?.type !== 'session' || header.version !== 3) return undefined;\n const branch = manager.getBranch(sourceLeafId);\n const lastEntry = branch.at(-1);\n if (lastEntry?.id !== sourceLeafId) return undefined;\n const snapshotJsonl = `${[header, ...branch].map((record) => JSON.stringify(record)).join('\\n')}\\n`;\n return Object.freeze({\n kind: 'terminal-pi-fork',\n sourceSessionId,\n sourceLeafId,\n snapshotJsonl,\n });\n}\n\nfunction sourceIdentity(filePath: string): {\n path: string;\n realPath: string;\n device: number;\n inode: number;\n size: number;\n mtimeMs: number;\n sha256: string;\n} {\n const content = fs.readFileSync(filePath);\n const stat = fs.statSync(filePath);\n return {\n path: filePath,\n realPath: fs.realpathSync(filePath),\n device: stat.dev,\n inode: stat.ino,\n size: stat.size,\n mtimeMs: stat.mtimeMs,\n sha256: createHash('sha256').update(content).digest('hex'),\n };\n}\n\nfunction rewriteImportedHeader(filePath: string, request: DoomChildSessionRequest, sourceSessionId: string): void {\n const lines = fs.readFileSync(filePath, 'utf8').split('\\n');\n const header = asRecord(JSON.parse(lines[0] ?? ''));\n if (header?.kind !== 'header' || header.v !== 4)\n throw new Error('Terminal Pi child journal import did not produce a v4 JSONL file.');\n header.id = randomUUID();\n header.cwd = request.cwd;\n header.parentSessionId = request.parentSessionId || sourceSessionId;\n delete header.legacyParentSessionPath;\n lines[0] = JSON.stringify(header);\n fs.writeFileSync(filePath, lines.join('\\n'));\n}\n\nasync function createChildJournal(\n request: DoomChildSessionRequest,\n source: DoomChildSessionTerminalPiForkSource,\n options: TerminalPiChildSessionServiceOptions,\n ownership: HistoryOwnership,\n): Promise<string> {\n const parsed = parseSnapshot(source.snapshotJsonl);\n if (requireString(parsed.header.id, 'header id') !== source.sourceSessionId)\n throw new Error('Terminal Pi snapshot session identity does not match its sourceSessionId.');\n if (parsed.records.at(-1)?.id !== source.sourceLeafId)\n throw new Error('Terminal Pi snapshot leaf does not match its sourceLeafId.');\n\n const root = fs.mkdtempSync(path.join(os.tmpdir(), 'doom-terminal-pi-fork-'));\n const sourcePath = path.join(root, 'snapshot.jsonl');\n fs.writeFileSync(sourcePath, source.snapshotJsonl, { mode: 0o600 });\n const sessionsRoot = path.resolve(options.sessionsRoot ?? path.join(getAgentDir(), 'sessions'));\n fs.mkdirSync(sessionsRoot, { recursive: true, mode: 0o700 });\n const destinationPath = path.join(sessionsRoot, `${Date.now()}-${randomUUID()}.jsonl`);\n fs.copyFileSync(sourcePath, destinationPath, fs.constants.COPYFILE_EXCL);\n\n let destinationLease: HistoryOwnershipLease | undefined;\n let primaryFailure: unknown;\n try {\n destinationLease = await ownership.acquire(destinationPath);\n await destinationLease.assertQuiescent();\n await importV3WithPinnedUpstream({\n sourcePath,\n stagingPath: destinationPath,\n originalPath: sourcePath,\n sourceIdentity: sourceIdentity(sourcePath),\n });\n rewriteImportedHeader(destinationPath, request, source.sourceSessionId);\n } catch (error) {\n primaryFailure = error;\n }\n try {\n await destinationLease?.release();\n } catch (error) {\n primaryFailure = primaryFailure === undefined ? error : new AggregateError([primaryFailure, error]);\n }\n fs.rmSync(root, { recursive: true, force: true });\n if (primaryFailure !== undefined) {\n fs.rmSync(destinationPath, { force: true });\n throw primaryFailure;\n }\n return destinationPath;\n}\n\nexport function createTerminalPiChildSessionService(\n options: TerminalPiChildSessionServiceOptions,\n): DoomChildSessionService {\n const runtimeFactory = options.runtimeFactory ?? createDirectHarnessRuntime;\n const ownership = options.historyOwnership ?? createHistoryOwnership();\n const headlessOptions: HeadlessChildSessionServiceOptions = {\n parentSessionId: '',\n cwd: options.cwd,\n ...(options.sessionsRoot === undefined ? {} : { sessionsRoot: options.sessionsRoot }),\n ...(options.models === undefined ? {} : { models: options.models }),\n ...(options.providers === undefined ? {} : { providers: options.providers }),\n ...(options.defaultModel === undefined ? {} : { defaultModel: options.defaultModel }),\n historyOwnership: ownership,\n ...(options.now === undefined ? {} : { now: options.now }),\n runtimeFactory,\n };\n const headless = createHeadlessChildSessionService(headlessOptions);\n const terminal = createDoomChildSessionService(\n async (request: DoomChildSessionRequest, signal): Promise<DoomChildSessionRuntime> => {\n signal?.throwIfAborted();\n if (request.source.kind !== 'terminal-pi-fork')\n throw new Error('Terminal Pi child sessions require terminal Pi fork sources.');\n const directRequestOptions = composeDirectHarnessRequestOptions(request);\n const model = modelReference(request.model) ?? options.defaultModel?.();\n const sessionPath = await createChildJournal(request, request.source, options, ownership);\n const runtimeOptions: DirectHarnessRuntimeOptions = {\n cwd: request.cwd || options.cwd,\n parentSessionId: request.parentSessionId,\n sessionPath,\n ...(options.sessionsRoot === undefined ? {} : { sessionsRoot: options.sessionsRoot }),\n ...(options.models === undefined ? {} : { models: options.models }),\n ...(options.providers === undefined ? {} : { providers: options.providers }),\n ...(model === undefined ? {} : { model }),\n ...(request.thinking === undefined ? {} : { thinkingLevel: request.thinking as never }),\n ...directRequestOptions,\n historyOwnership: ownership,\n };\n let runtime: DirectHarnessRuntime | undefined;\n try {\n runtime = await runtimeFactory(runtimeOptions);\n await installIntercom(runtime, request.intercom, (runtimeOptions.tools ?? []) as DirectHarnessTool[]);\n const file = (runtime.session.metadata as unknown as { path?: unknown }).path;\n return childRuntime(\n runtime,\n request.intercom,\n typeof file === 'string' ? registerNativeChild(file, runtime) : undefined,\n );\n } catch (error) {\n let failure: unknown = error;\n try {\n await runtime?.dispose();\n } catch (cleanupError) {\n failure = new AggregateError([error, cleanupError], 'Terminal Pi child startup cleanup failed');\n } finally {\n request.intercom?.dispose?.();\n fs.rmSync(sessionPath, { force: true });\n }\n throw failure;\n }\n },\n { now: options.now ?? Date.now },\n );\n const owners = new Map<string, DoomChildSessionService>();\n const service: DoomChildSessionService = {\n async start(request, signal) {\n const owner = request.source.kind === 'terminal-pi-fork' ? terminal : headless;\n const handle = await owner.start(request, signal);\n owners.set(request.runId, owner);\n return handle;\n },\n get: (runId) => owners.get(runId)?.get(runId) ?? terminal.get(runId) ?? headless.get(runId),\n readTranscriptPage(runId, request, signal) {\n const owner = owners.get(runId);\n if (!owner?.readTranscriptPage)\n return Promise.reject(new Error(`Child run '${runId}' has no readable transcript.`));\n return owner.readTranscriptPage(runId, request, signal);\n },\n close: async () => {\n const failures = await Promise.allSettled([terminal.close(), headless.close()]);\n owners.clear();\n const rejected = failures.flatMap((result) => (result.status === 'rejected' ? [result.reason] : []));\n if (rejected.length) throw new AggregateError(rejected, 'Terminal Pi child-session shutdown failed.');\n },\n };\n return service;\n}\n\nexport interface TerminalPiChildSessionServiceProvider extends DoomChildSessionServiceProvider {\n close(): Promise<void>;\n}\n\nexport function createTerminalPiChildSessionServiceProvider(\n options: TerminalPiChildSessionServiceOptions,\n): TerminalPiChildSessionServiceProvider {\n const service = createTerminalPiChildSessionService(options);\n return { get: () => service, close: () => service.close() };\n}\n"],"mappings":";;;;;;;;;;;;;AAqDA,SAAS,aACP,SACA,UACA,SACyB;CACzB,MAAM,OAAQ,QAAQ,QAAQ,SAA2C;CACzE,OAAO;EACL,WAAW,QAAQ;EACnB,GAAI,OAAO,SAAS,WAAW,EAAE,aAAa,KAAK,IAAI,CAAC;EACxD,GAAI,OAAO,SAAS,WAChB,EAAE,qBAAqB,SAAS,WAAW,0BAA0B,MAAM,SAAS,MAAM,EAAE,IAC5F,CAAC;EACL,SAAS,SAAS,uBAAuB,SAAS,IAAI;EACtD,QAAQ,YAAY,QAAQ,MAAM,OAAO;EACzC,WAAW,YAAY,QAAQ,SAAS,OAAO;EAC/C,aAAa,QAAQ,MAAM;EAC3B,SAAS,YAAY;GACnB,IAAI;IACF,MAAM,QAAQ,QAAQ;GACxB,UAAU;IACR,UAAU;IACV,UAAU,UAAU;GACtB;EACF;CACF;AACF;AAIA,eAAe,gBACb,SACA,UACA,OACe;CACf,IAAI,CAAC,UAAU;CACf,MAAM,OAAO,SAAS,YAAY,aAAa,OAAO,CAAC;CACvD,MAAM,UAAU;EACd,GAAG;EACH,YAAY,KAAK;EACjB,UAAU,aAAqB,QAAiB,QAAqB,aACnE,KAAK,QAAQ,aAAa,QAAQ,QAAQ,QAAiB;CAC/D;CACA,MAAM,QAAQ,aAAa,CAAC,GAAG,OAAO,OAAO,CAAC;AAChD;AAEA,SAAS,SAAS,OAAqD;CACrE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IACrE,QACD,KAAA;AACN;AAEA,SAAS,cAAc,OAAgB,OAAuB;CAC5D,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,gCAAgC,OAAO;CAC5G,OAAO;AACT;AAEA,SAAS,eAAe,OAA2D;CACjF,IAAI,UAAU,KAAA,GAAW,OAAO,KAAA;CAChC,MAAM,YAAY,MAAM,QAAQ,GAAG;CACnC,IAAI,aAAa,KAAK,cAAc,MAAM,SAAS,GACjD,MAAM,IAAI,MAAM,iDAAiD,OAAO;CAC1E,OAAO;EAAE,UAAU,MAAM,MAAM,GAAG,SAAS;EAAG,IAAI,MAAM,MAAM,YAAY,CAAC;CAAE;AAC/E;AAEA,SAAS,cAAc,eAAgG;CACrH,IAAI,CAAC,cAAc,SAAS,IAAI,GAAG,MAAM,IAAI,MAAM,oCAAoC;CACvF,MAAM,QAAQ,cAAc,MAAM,GAAG,EAAE,CAAC,CAAC,MAAM,IAAI;CACnD,IAAI;CACJ,IAAI;EACF,cAAc,KAAK,MAAM,MAAM,MAAM,EAAE;CACzC,SAAS,OAAO;EACd,MAAM,IAAI,MAAM,0CAA0C,EAAE,OAAO,MAAM,CAAC;CAC5E;CACA,MAAM,SAAS,SAAS,WAAW;CACnC,IAAI,QAAQ,SAAS,aAAa,OAAO,YAAY,GACnD,MAAM,IAAI,MAAM,uDAAuD;CAezE,OAAO;EAAE;EAAQ,SAdD,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,UAAU;GAClD,IAAI;GACJ,IAAI;IACF,QAAQ,KAAK,MAAM,IAAI;GACzB,SAAS,OAAO;IACd,MAAM,IAAI,MAAM,iDAAiD,QAAQ,EAAE,IAAI,EAAE,OAAO,MAAM,CAAC;GACjG;GACA,MAAM,SAAS,SAAS,KAAK;GAC7B,IAAI,WAAW,KAAA,GAAW,MAAM,IAAI,MAAM,+CAA+C,QAAQ,GAAG;GACpG,cAAc,OAAO,IAAI,UAAU,QAAQ,EAAE,IAAI;GACjD,IAAI,OAAO,aAAa,QAAQ,OAAO,OAAO,aAAa,UACzD,MAAM,IAAI,MAAM,uCAAuC,QAAQ,EAAE,UAAU;GAC7E,OAAO;EACT,CACuB;CAAE;AAC3B;;AAGA,SAAgB,4BACd,SACA,iBAAiB,QAAQ,UAAU,GACe;CAClD,MAAM,kBAAkB,QAAQ,aAAa;CAC7C,MAAM,eAAe;CACrB,MAAM,SAAS,QAAQ,UAAU;CACjC,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB,QAAQ,SAAS,aAAa,OAAO,YAAY,GAAG,OAAO,KAAA;CAC3G,MAAM,SAAS,QAAQ,UAAU,YAAY;CAE7C,IADkB,OAAO,GAAG,EAChB,CAAC,EAAE,OAAO,cAAc,OAAO,KAAA;CAC3C,MAAM,gBAAgB,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,WAAW,KAAK,UAAU,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;CAChG,OAAO,OAAO,OAAO;EACnB,MAAM;EACN;EACA;EACA;CACF,CAAC;AACH;AAEA,SAAS,eAAe,UAQtB;CACA,MAAM,UAAU,GAAG,aAAa,QAAQ;CACxC,MAAM,OAAO,GAAG,SAAS,QAAQ;CACjC,OAAO;EACL,MAAM;EACN,UAAU,GAAG,aAAa,QAAQ;EAClC,QAAQ,KAAK;EACb,OAAO,KAAK;EACZ,MAAM,KAAK;EACX,SAAS,KAAK;EACd,QAAQ,WAAW,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,OAAO,KAAK;CAC3D;AACF;AAEA,SAAS,sBAAsB,UAAkB,SAAkC,iBAA+B;CAChH,MAAM,QAAQ,GAAG,aAAa,UAAU,MAAM,CAAC,CAAC,MAAM,IAAI;CAC1D,MAAM,SAAS,SAAS,KAAK,MAAM,MAAM,MAAM,EAAE,CAAC;CAClD,IAAI,QAAQ,SAAS,YAAY,OAAO,MAAM,GAC5C,MAAM,IAAI,MAAM,mEAAmE;CACrF,OAAO,KAAK,WAAW;CACvB,OAAO,MAAM,QAAQ;CACrB,OAAO,kBAAkB,QAAQ,mBAAmB;CACpD,OAAO,OAAO;CACd,MAAM,KAAK,KAAK,UAAU,MAAM;CAChC,GAAG,cAAc,UAAU,MAAM,KAAK,IAAI,CAAC;AAC7C;AAEA,eAAe,mBACb,SACA,QACA,SACA,WACiB;CACjB,MAAM,SAAS,cAAc,OAAO,aAAa;CACjD,IAAI,cAAc,OAAO,OAAO,IAAI,WAAW,MAAM,OAAO,iBAC1D,MAAM,IAAI,MAAM,2EAA2E;CAC7F,IAAI,OAAO,QAAQ,GAAG,EAAE,CAAC,EAAE,OAAO,OAAO,cACvC,MAAM,IAAI,MAAM,4DAA4D;CAE9E,MAAM,OAAO,GAAG,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,wBAAwB,CAAC;CAC5E,MAAM,aAAa,KAAK,KAAK,MAAM,gBAAgB;CACnD,GAAG,cAAc,YAAY,OAAO,eAAe,EAAE,MAAM,IAAM,CAAC;CAClE,MAAM,eAAe,KAAK,QAAQ,QAAQ,gBAAgB,KAAK,KAAK,YAAY,GAAG,UAAU,CAAC;CAC9F,GAAG,UAAU,cAAc;EAAE,WAAW;EAAM,MAAM;CAAM,CAAC;CAC3D,MAAM,kBAAkB,KAAK,KAAK,cAAc,GAAG,KAAK,IAAI,EAAE,GAAG,WAAW,EAAE,OAAO;CACrF,GAAG,aAAa,YAAY,iBAAiB,GAAG,UAAU,aAAa;CAEvE,IAAI;CACJ,IAAI;CACJ,IAAI;EACF,mBAAmB,MAAM,UAAU,QAAQ,eAAe;EAC1D,MAAM,iBAAiB,gBAAgB;EACvC,MAAM,2BAA2B;GAC/B;GACA,aAAa;GACb,cAAc;GACd,gBAAgB,eAAe,UAAU;EAC3C,CAAC;EACD,sBAAsB,iBAAiB,SAAS,OAAO,eAAe;CACxE,SAAS,OAAO;EACd,iBAAiB;CACnB;CACA,IAAI;EACF,MAAM,kBAAkB,QAAQ;CAClC,SAAS,OAAO;EACd,iBAAiB,mBAAmB,KAAA,IAAY,QAAQ,IAAI,eAAe,CAAC,gBAAgB,KAAK,CAAC;CACpG;CACA,GAAG,OAAO,MAAM;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC;CAChD,IAAI,mBAAmB,KAAA,GAAW;EAChC,GAAG,OAAO,iBAAiB,EAAE,OAAO,KAAK,CAAC;EAC1C,MAAM;CACR;CACA,OAAO;AACT;AAEA,SAAgB,oCACd,SACyB;CACzB,MAAM,iBAAiB,QAAQ,kBAAkB;CACjD,MAAM,YAAY,QAAQ,oBAAoB,uBAAuB;CACrE,MAAM,kBAAsD;EAC1D,iBAAiB;EACjB,KAAK,QAAQ;EACb,GAAI,QAAQ,iBAAiB,KAAA,IAAY,CAAC,IAAI,EAAE,cAAc,QAAQ,aAAa;EACnF,GAAI,QAAQ,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ,QAAQ,OAAO;EACjE,GAAI,QAAQ,cAAc,KAAA,IAAY,CAAC,IAAI,EAAE,WAAW,QAAQ,UAAU;EAC1E,GAAI,QAAQ,iBAAiB,KAAA,IAAY,CAAC,IAAI,EAAE,cAAc,QAAQ,aAAa;EACnF,kBAAkB;EAClB,GAAI,QAAQ,QAAQ,KAAA,IAAY,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI;EACxD;CACF;CACA,MAAM,WAAW,kCAAkC,eAAe;CAClE,MAAM,WAAW,8BACf,OAAO,SAAkC,WAA6C;EACpF,QAAQ,eAAe;EACvB,IAAI,QAAQ,OAAO,SAAS,oBAC1B,MAAM,IAAI,MAAM,8DAA8D;EAChF,MAAM,uBAAuB,mCAAmC,OAAO;EACvE,MAAM,QAAQ,eAAe,QAAQ,KAAK,KAAK,QAAQ,eAAe;EACtE,MAAM,cAAc,MAAM,mBAAmB,SAAS,QAAQ,QAAQ,SAAS,SAAS;EACxF,MAAM,iBAA8C;GAClD,KAAK,QAAQ,OAAO,QAAQ;GAC5B,iBAAiB,QAAQ;GACzB;GACA,GAAI,QAAQ,iBAAiB,KAAA,IAAY,CAAC,IAAI,EAAE,cAAc,QAAQ,aAAa;GACnF,GAAI,QAAQ,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ,QAAQ,OAAO;GACjE,GAAI,QAAQ,cAAc,KAAA,IAAY,CAAC,IAAI,EAAE,WAAW,QAAQ,UAAU;GAC1E,GAAI,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM;GACvC,GAAI,QAAQ,aAAa,KAAA,IAAY,CAAC,IAAI,EAAE,eAAe,QAAQ,SAAkB;GACrF,GAAG;GACH,kBAAkB;EACpB;EACA,IAAI;EACJ,IAAI;GACF,UAAU,MAAM,eAAe,cAAc;GAC7C,MAAM,gBAAgB,SAAS,QAAQ,UAAW,eAAe,SAAS,CAAC,CAAyB;GACpG,MAAM,OAAQ,QAAQ,QAAQ,SAA2C;GACzE,OAAO,aACL,SACA,QAAQ,UACR,OAAO,SAAS,WAAW,oBAAoB,MAAM,OAAO,IAAI,KAAA,CAClE;EACF,SAAS,OAAO;GACd,IAAI,UAAmB;GACvB,IAAI;IACF,MAAM,SAAS,QAAQ;GACzB,SAAS,cAAc;IACrB,UAAU,IAAI,eAAe,CAAC,OAAO,YAAY,GAAG,0CAA0C;GAChG,UAAU;IACR,QAAQ,UAAU,UAAU;IAC5B,GAAG,OAAO,aAAa,EAAE,OAAO,KAAK,CAAC;GACxC;GACA,MAAM;EACR;CACF,GACA,EAAE,KAAK,QAAQ,OAAO,KAAK,IAAI,CACjC;CACA,MAAM,yBAAS,IAAI,IAAqC;CAsBxD,OAAO;EApBL,MAAM,MAAM,SAAS,QAAQ;GAC3B,MAAM,QAAQ,QAAQ,OAAO,SAAS,qBAAqB,WAAW;GACtE,MAAM,SAAS,MAAM,MAAM,MAAM,SAAS,MAAM;GAChD,OAAO,IAAI,QAAQ,OAAO,KAAK;GAC/B,OAAO;EACT;EACA,MAAM,UAAU,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK;EAC1F,mBAAmB,OAAO,SAAS,QAAQ;GACzC,MAAM,QAAQ,OAAO,IAAI,KAAK;GAC9B,IAAI,CAAC,OAAO,oBACV,OAAO,QAAQ,uBAAO,IAAI,MAAM,cAAc,MAAM,8BAA8B,CAAC;GACrF,OAAO,MAAM,mBAAmB,OAAO,SAAS,MAAM;EACxD;EACA,OAAO,YAAY;GACjB,MAAM,WAAW,MAAM,QAAQ,WAAW,CAAC,SAAS,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC;GAC9E,OAAO,MAAM;GACb,MAAM,WAAW,SAAS,SAAS,WAAY,OAAO,WAAW,aAAa,CAAC,OAAO,MAAM,IAAI,CAAC,CAAE;GACnG,IAAI,SAAS,QAAQ,MAAM,IAAI,eAAe,UAAU,4CAA4C;EACtG;CAEW;AACf;AAMA,SAAgB,4CACd,SACuC;CACvC,MAAM,UAAU,oCAAoC,OAAO;CAC3D,OAAO;EAAE,WAAW;EAAS,aAAa,QAAQ,MAAM;CAAE;AAC5D"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const require_testHost = require("./testHost.cjs");
|
|
2
|
+
//#region src/testing/pi/extensionScenarios.ts
|
|
3
|
+
const SHUTDOWN_EVENT = "session_shutdown";
|
|
4
|
+
const START_EVENT = "session_start";
|
|
5
|
+
function fail(message) {
|
|
6
|
+
throw new Error(message);
|
|
7
|
+
}
|
|
8
|
+
function assertContains(actual, expected, subject) {
|
|
9
|
+
const missing = expected.filter((name) => !actual.includes(name));
|
|
10
|
+
if (missing.length > 0) fail(`Expected ${subject} ${missing.join(", ")}; the entry registered ${actual.join(", ") || "nothing"}.`);
|
|
11
|
+
}
|
|
12
|
+
function standardExtensionScenarios(options) {
|
|
13
|
+
const expectedTools = options.tools ?? [];
|
|
14
|
+
const expectedCommands = options.commands ?? [];
|
|
15
|
+
const build = options.createHost ?? require_testHost.createPiTestHost;
|
|
16
|
+
/** Runs one scenario against its own host, and disposes it either way. */
|
|
17
|
+
const scenario = (name, hostOptions, body) => ({
|
|
18
|
+
name,
|
|
19
|
+
async run() {
|
|
20
|
+
const host = build(hostOptions);
|
|
21
|
+
try {
|
|
22
|
+
await host.cordis("standard-extension-contract");
|
|
23
|
+
await body(host);
|
|
24
|
+
} finally {
|
|
25
|
+
await host.dispose();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return [
|
|
30
|
+
scenario("registers its declared tools and commands when the host loads it", {}, async (host) => {
|
|
31
|
+
await host.cordis("standard-extension-contract");
|
|
32
|
+
await options.factory(host.pi);
|
|
33
|
+
assertContains(host.tools.map(({ name }) => name), expectedTools, "the entry to register tools");
|
|
34
|
+
assertContains(host.commands.map(({ name }) => name), expectedCommands, "the entry to claim commands");
|
|
35
|
+
}),
|
|
36
|
+
scenario("handles session_shutdown, so the host can reclaim what it registered", {}, async (host) => {
|
|
37
|
+
const before = host.handlers(SHUTDOWN_EVENT).length;
|
|
38
|
+
await host.cordis("standard-extension-contract");
|
|
39
|
+
await options.factory(host.pi);
|
|
40
|
+
if (host.handlers(SHUTDOWN_EVENT).length === before) fail("The entry registered no session_shutdown handler, so nothing it holds is ever released.");
|
|
41
|
+
}),
|
|
42
|
+
scenario("takes a repeated shutdown without failing the second one", {}, async (host) => {
|
|
43
|
+
await host.cordis("standard-extension-contract");
|
|
44
|
+
await options.factory(host.pi);
|
|
45
|
+
await host.emit(SHUTDOWN_EVENT, { reason: "quit" });
|
|
46
|
+
await host.emit(SHUTDOWN_EVENT, { reason: "quit" });
|
|
47
|
+
}),
|
|
48
|
+
scenario("loads again on the same host after a shutdown, the way /reload does", {}, async (host) => {
|
|
49
|
+
await host.cordis("standard-extension-contract");
|
|
50
|
+
await options.factory(host.pi);
|
|
51
|
+
await host.emit(SHUTDOWN_EVENT, { reason: "reload" });
|
|
52
|
+
const before = host.tools.length;
|
|
53
|
+
await host.cordis("standard-extension-contract");
|
|
54
|
+
await host.cordis("standard-extension-contract");
|
|
55
|
+
await options.factory(host.pi);
|
|
56
|
+
if (expectedTools.length > 0 && host.tools.length === before) fail("Loading the entry again registered nothing: a module-level latch is surviving the reload.");
|
|
57
|
+
assertContains(host.tools.slice(before).map(({ name }) => name), expectedTools, "the reloaded entry to register tools");
|
|
58
|
+
}),
|
|
59
|
+
scenario("installs and shuts down on a headless host", {
|
|
60
|
+
hasUI: false,
|
|
61
|
+
mode: "rpc"
|
|
62
|
+
}, async (host) => {
|
|
63
|
+
await host.cordis("standard-extension-contract");
|
|
64
|
+
await options.factory(host.pi);
|
|
65
|
+
await host.emit(START_EVENT, { reason: "startup" });
|
|
66
|
+
await host.emit(SHUTDOWN_EVENT, { reason: "quit" });
|
|
67
|
+
})
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
exports.standardExtensionScenarios = standardExtensionScenarios;
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=extensionScenarios.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionScenarios.cjs","names":["createPiTestHost"],"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,cAAcA,iBAAAA;;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,41 @@
|
|
|
1
|
+
import { PiTestHost, PiTestHostOptions } from "./testHost.cjs";
|
|
2
|
+
import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
3
|
+
//#region src/testing/pi/extensionScenarios.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* The lifecycle every standard Pi entry owes its host, as runnable scenarios.
|
|
6
|
+
*
|
|
7
|
+
* Eight packages carry their own partial copy of this, and the copies disagree
|
|
8
|
+
* about which parts matter. What they share is what a host actually depends on:
|
|
9
|
+
* that loading the entry registers something, that shutdown can be delivered
|
|
10
|
+
* twice, and that a `/reload` can install the entry again on the same runner.
|
|
11
|
+
*
|
|
12
|
+
* Scenarios are plain data, not `describe`/`it` calls, so this adds no test
|
|
13
|
+
* framework to a package every extension already installs. A caller loops:
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* for (const scenario of standardExtensionScenarios({ factory, tools: ['x'] })) {
|
|
17
|
+
* it(scenario.name, () => scenario.run());
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* Deeper fencing is deliberately not here. A package that makes a shut-down
|
|
22
|
+
* tool answer instead of run owns that message and that decision, so it keeps
|
|
23
|
+
* the test too; this covers only what is true of every extension.
|
|
24
|
+
*/
|
|
25
|
+
export interface StandardExtensionContractOptions {
|
|
26
|
+
/** The package's standard Pi entry: the default export Pi invokes. */
|
|
27
|
+
factory(pi: ExtensionAPI): Promise<void> | void;
|
|
28
|
+
/** Tool names loading the entry must register. */
|
|
29
|
+
tools?: readonly string[];
|
|
30
|
+
/** Slash commands loading the entry must claim. */
|
|
31
|
+
commands?: readonly string[];
|
|
32
|
+
/** A fresh host per scenario, for a factory that needs one stubbed a certain way. */
|
|
33
|
+
createHost?: (options: PiTestHostOptions) => PiTestHost;
|
|
34
|
+
}
|
|
35
|
+
export interface ExtensionContractScenario {
|
|
36
|
+
name: string;
|
|
37
|
+
run(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export declare function standardExtensionScenarios(options: StandardExtensionContractOptions): readonly ExtensionContractScenario[];
|
|
40
|
+
//#endregion
|
|
41
|
+
//# sourceMappingURL=extensionScenarios.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionScenarios.d.cts","names":[],"sources":["../../../src/testing/pi/extensionScenarios.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;iBA0BiB;;EAEf,QAAQ,IAAI,eAAe;;EAE3B;;EAEA;;EAEA,cAAc,SAAS,sBAAsB;;iBAG9B;EACf;EACA,OAAO;;wBAiBO,2BACd,SAAS,4CACC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { PiTestHost, PiTestHostOptions } from "./testHost.mjs";
|
|
2
|
+
import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
3
|
+
//#region src/testing/pi/extensionScenarios.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* The lifecycle every standard Pi entry owes its host, as runnable scenarios.
|
|
6
|
+
*
|
|
7
|
+
* Eight packages carry their own partial copy of this, and the copies disagree
|
|
8
|
+
* about which parts matter. What they share is what a host actually depends on:
|
|
9
|
+
* that loading the entry registers something, that shutdown can be delivered
|
|
10
|
+
* twice, and that a `/reload` can install the entry again on the same runner.
|
|
11
|
+
*
|
|
12
|
+
* Scenarios are plain data, not `describe`/`it` calls, so this adds no test
|
|
13
|
+
* framework to a package every extension already installs. A caller loops:
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* for (const scenario of standardExtensionScenarios({ factory, tools: ['x'] })) {
|
|
17
|
+
* it(scenario.name, () => scenario.run());
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* Deeper fencing is deliberately not here. A package that makes a shut-down
|
|
22
|
+
* tool answer instead of run owns that message and that decision, so it keeps
|
|
23
|
+
* the test too; this covers only what is true of every extension.
|
|
24
|
+
*/
|
|
25
|
+
export interface StandardExtensionContractOptions {
|
|
26
|
+
/** The package's standard Pi entry: the default export Pi invokes. */
|
|
27
|
+
factory(pi: ExtensionAPI): Promise<void> | void;
|
|
28
|
+
/** Tool names loading the entry must register. */
|
|
29
|
+
tools?: readonly string[];
|
|
30
|
+
/** Slash commands loading the entry must claim. */
|
|
31
|
+
commands?: readonly string[];
|
|
32
|
+
/** A fresh host per scenario, for a factory that needs one stubbed a certain way. */
|
|
33
|
+
createHost?: (options: PiTestHostOptions) => PiTestHost;
|
|
34
|
+
}
|
|
35
|
+
export interface ExtensionContractScenario {
|
|
36
|
+
name: string;
|
|
37
|
+
run(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export declare function standardExtensionScenarios(options: StandardExtensionContractOptions): readonly ExtensionContractScenario[];
|
|
40
|
+
//#endregion
|
|
41
|
+
//# sourceMappingURL=extensionScenarios.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionScenarios.d.mts","names":[],"sources":["../../../src/testing/pi/extensionScenarios.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;iBA0BiB;;EAEf,QAAQ,IAAI,eAAe;;EAE3B;;EAEA;;EAEA,cAAc,SAAS,sBAAsB;;iBAG9B;EACf;EACA,OAAO;;wBAiBO,2BACd,SAAS,4CACC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createPiTestHost } from "./testHost.mjs";
|
|
2
|
+
//#region src/testing/pi/extensionScenarios.ts
|
|
3
|
+
const SHUTDOWN_EVENT = "session_shutdown";
|
|
4
|
+
const START_EVENT = "session_start";
|
|
5
|
+
function fail(message) {
|
|
6
|
+
throw new Error(message);
|
|
7
|
+
}
|
|
8
|
+
function assertContains(actual, expected, subject) {
|
|
9
|
+
const missing = expected.filter((name) => !actual.includes(name));
|
|
10
|
+
if (missing.length > 0) fail(`Expected ${subject} ${missing.join(", ")}; the entry registered ${actual.join(", ") || "nothing"}.`);
|
|
11
|
+
}
|
|
12
|
+
function standardExtensionScenarios(options) {
|
|
13
|
+
const expectedTools = options.tools ?? [];
|
|
14
|
+
const expectedCommands = options.commands ?? [];
|
|
15
|
+
const build = options.createHost ?? createPiTestHost;
|
|
16
|
+
/** Runs one scenario against its own host, and disposes it either way. */
|
|
17
|
+
const scenario = (name, hostOptions, body) => ({
|
|
18
|
+
name,
|
|
19
|
+
async run() {
|
|
20
|
+
const host = build(hostOptions);
|
|
21
|
+
try {
|
|
22
|
+
await host.cordis("standard-extension-contract");
|
|
23
|
+
await body(host);
|
|
24
|
+
} finally {
|
|
25
|
+
await host.dispose();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return [
|
|
30
|
+
scenario("registers its declared tools and commands when the host loads it", {}, async (host) => {
|
|
31
|
+
await host.cordis("standard-extension-contract");
|
|
32
|
+
await options.factory(host.pi);
|
|
33
|
+
assertContains(host.tools.map(({ name }) => name), expectedTools, "the entry to register tools");
|
|
34
|
+
assertContains(host.commands.map(({ name }) => name), expectedCommands, "the entry to claim commands");
|
|
35
|
+
}),
|
|
36
|
+
scenario("handles session_shutdown, so the host can reclaim what it registered", {}, async (host) => {
|
|
37
|
+
const before = host.handlers(SHUTDOWN_EVENT).length;
|
|
38
|
+
await host.cordis("standard-extension-contract");
|
|
39
|
+
await options.factory(host.pi);
|
|
40
|
+
if (host.handlers(SHUTDOWN_EVENT).length === before) fail("The entry registered no session_shutdown handler, so nothing it holds is ever released.");
|
|
41
|
+
}),
|
|
42
|
+
scenario("takes a repeated shutdown without failing the second one", {}, async (host) => {
|
|
43
|
+
await host.cordis("standard-extension-contract");
|
|
44
|
+
await options.factory(host.pi);
|
|
45
|
+
await host.emit(SHUTDOWN_EVENT, { reason: "quit" });
|
|
46
|
+
await host.emit(SHUTDOWN_EVENT, { reason: "quit" });
|
|
47
|
+
}),
|
|
48
|
+
scenario("loads again on the same host after a shutdown, the way /reload does", {}, async (host) => {
|
|
49
|
+
await host.cordis("standard-extension-contract");
|
|
50
|
+
await options.factory(host.pi);
|
|
51
|
+
await host.emit(SHUTDOWN_EVENT, { reason: "reload" });
|
|
52
|
+
const before = host.tools.length;
|
|
53
|
+
await host.cordis("standard-extension-contract");
|
|
54
|
+
await host.cordis("standard-extension-contract");
|
|
55
|
+
await options.factory(host.pi);
|
|
56
|
+
if (expectedTools.length > 0 && host.tools.length === before) fail("Loading the entry again registered nothing: a module-level latch is surviving the reload.");
|
|
57
|
+
assertContains(host.tools.slice(before).map(({ name }) => name), expectedTools, "the reloaded entry to register tools");
|
|
58
|
+
}),
|
|
59
|
+
scenario("installs and shuts down on a headless host", {
|
|
60
|
+
hasUI: false,
|
|
61
|
+
mode: "rpc"
|
|
62
|
+
}, async (host) => {
|
|
63
|
+
await host.cordis("standard-extension-contract");
|
|
64
|
+
await options.factory(host.pi);
|
|
65
|
+
await host.emit(START_EVENT, { reason: "startup" });
|
|
66
|
+
await host.emit(SHUTDOWN_EVENT, { reason: "quit" });
|
|
67
|
+
})
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { standardExtensionScenarios };
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=extensionScenarios.mjs.map
|
|
@@ -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"}
|