@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,147 @@
|
|
|
1
|
+
//#region src/services/kernel/index.ts
|
|
2
|
+
const DISPOSED_MESSAGE = "The kernel is disposed";
|
|
3
|
+
function sameList(left, right) {
|
|
4
|
+
if (left === void 0 || left.length !== right.length) return false;
|
|
5
|
+
return left.every((value, index) => value === right[index]);
|
|
6
|
+
}
|
|
7
|
+
function describe(error) {
|
|
8
|
+
return error instanceof Error ? error.message : String(error);
|
|
9
|
+
}
|
|
10
|
+
function createDoomKernel(options = {}) {
|
|
11
|
+
const slots = /* @__PURE__ */ new Map();
|
|
12
|
+
const dirty = /* @__PURE__ */ new Set();
|
|
13
|
+
/** Slots whose values render differently without the list itself changing. */
|
|
14
|
+
const forced = /* @__PURE__ */ new Set();
|
|
15
|
+
let layers = new Set(options.activeLayers ?? []);
|
|
16
|
+
let sequence = 0;
|
|
17
|
+
let tail = Promise.resolve();
|
|
18
|
+
let scheduled;
|
|
19
|
+
let disposed = false;
|
|
20
|
+
const activeOf = (slot) => [...slot.entries.entries()].sort(([left], [right]) => left - right).filter(([, entry]) => entry.layer === void 0 || layers.has(entry.layer)).map(([, entry]) => entry.value);
|
|
21
|
+
const pushOne = async (slot, force, failures) => {
|
|
22
|
+
if (slot.disposed) return;
|
|
23
|
+
const active = activeOf(slot);
|
|
24
|
+
if (!force && sameList(slot.pushed, active)) return;
|
|
25
|
+
try {
|
|
26
|
+
await slot.sink(active);
|
|
27
|
+
slot.pushed = active;
|
|
28
|
+
} catch (error) {
|
|
29
|
+
failures.push(`${slot.name}: ${describe(error)}`);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const flush = () => {
|
|
33
|
+
const run = tail.catch(() => void 0).then(async () => {
|
|
34
|
+
if (dirty.size === 0) return;
|
|
35
|
+
const pending = [...dirty];
|
|
36
|
+
const pendingForced = new Set(forced);
|
|
37
|
+
dirty.clear();
|
|
38
|
+
forced.clear();
|
|
39
|
+
const failures = [];
|
|
40
|
+
for (const name of pending) {
|
|
41
|
+
const slot = slots.get(name);
|
|
42
|
+
if (slot) await pushOne(slot, pendingForced.has(name), failures);
|
|
43
|
+
}
|
|
44
|
+
if (failures.length > 0) throw new Error(`Kernel slots failed to apply: ${failures.join("; ")}`);
|
|
45
|
+
});
|
|
46
|
+
tail = run;
|
|
47
|
+
return run;
|
|
48
|
+
};
|
|
49
|
+
const schedule = () => {
|
|
50
|
+
if (scheduled) return;
|
|
51
|
+
scheduled = Promise.resolve().then(() => {
|
|
52
|
+
scheduled = void 0;
|
|
53
|
+
return flush().catch(() => void 0);
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
const markDirty = (name) => {
|
|
57
|
+
dirty.add(name);
|
|
58
|
+
};
|
|
59
|
+
const contribute = (slot, entry) => {
|
|
60
|
+
if (disposed) throw new Error(DISPOSED_MESSAGE);
|
|
61
|
+
const state = slots.get(slot);
|
|
62
|
+
if (!state) throw new Error(`Unknown kernel slot: ${slot}. Defined slots: ${[...slots.keys()].join(", ") || "none"}`);
|
|
63
|
+
const key = sequence++;
|
|
64
|
+
state.entries.set(key, entry);
|
|
65
|
+
markDirty(slot);
|
|
66
|
+
schedule();
|
|
67
|
+
let removed = false;
|
|
68
|
+
return { dispose() {
|
|
69
|
+
if (removed) return;
|
|
70
|
+
removed = true;
|
|
71
|
+
state.entries.delete(key);
|
|
72
|
+
markDirty(slot);
|
|
73
|
+
schedule();
|
|
74
|
+
} };
|
|
75
|
+
};
|
|
76
|
+
return {
|
|
77
|
+
get activeLayers() {
|
|
78
|
+
return [...layers];
|
|
79
|
+
},
|
|
80
|
+
get slots() {
|
|
81
|
+
return [...slots.keys()];
|
|
82
|
+
},
|
|
83
|
+
defineSlot(name, sink) {
|
|
84
|
+
if (disposed) throw new Error(DISPOSED_MESSAGE);
|
|
85
|
+
if (slots.has(name)) throw new Error(`Kernel slot already defined: ${name}`);
|
|
86
|
+
const state = {
|
|
87
|
+
name,
|
|
88
|
+
sink,
|
|
89
|
+
entries: /* @__PURE__ */ new Map(),
|
|
90
|
+
pushed: void 0,
|
|
91
|
+
disposed: false
|
|
92
|
+
};
|
|
93
|
+
slots.set(name, state);
|
|
94
|
+
let removed = false;
|
|
95
|
+
return {
|
|
96
|
+
name,
|
|
97
|
+
contribute: (entry) => contribute(name, entry),
|
|
98
|
+
dispose() {
|
|
99
|
+
if (removed) return;
|
|
100
|
+
removed = true;
|
|
101
|
+
state.disposed = true;
|
|
102
|
+
slots.delete(name);
|
|
103
|
+
dirty.delete(name);
|
|
104
|
+
forced.delete(name);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
contribute,
|
|
109
|
+
async setActiveLayers(next) {
|
|
110
|
+
if (disposed) throw new Error(DISPOSED_MESSAGE);
|
|
111
|
+
layers = new Set(next);
|
|
112
|
+
for (const name of slots.keys()) markDirty(name);
|
|
113
|
+
await flush();
|
|
114
|
+
},
|
|
115
|
+
async refresh(slot) {
|
|
116
|
+
if (disposed) throw new Error(DISPOSED_MESSAGE);
|
|
117
|
+
if (slot === void 0) for (const name of slots.keys()) {
|
|
118
|
+
markDirty(name);
|
|
119
|
+
forced.add(name);
|
|
120
|
+
}
|
|
121
|
+
else if (slots.has(slot)) {
|
|
122
|
+
markDirty(slot);
|
|
123
|
+
forced.add(slot);
|
|
124
|
+
}
|
|
125
|
+
await flush();
|
|
126
|
+
},
|
|
127
|
+
activeValues(slot) {
|
|
128
|
+
const state = slots.get(slot);
|
|
129
|
+
return state ? activeOf(state) : [];
|
|
130
|
+
},
|
|
131
|
+
contributions(slot) {
|
|
132
|
+
const state = slots.get(slot);
|
|
133
|
+
return state ? [...state.entries.values()] : [];
|
|
134
|
+
},
|
|
135
|
+
dispose() {
|
|
136
|
+
if (disposed) return;
|
|
137
|
+
disposed = true;
|
|
138
|
+
for (const state of slots.values()) state.disposed = true;
|
|
139
|
+
slots.clear();
|
|
140
|
+
dirty.clear();
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//#endregion
|
|
145
|
+
export { createDoomKernel };
|
|
146
|
+
|
|
147
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/services/kernel/index.ts"],"sourcesContent":["/**\n * The kernel contribution registry.\n *\n * DESIGN PATTERNS:\n * - Pure function of registered contributions plus the active layer set. Every\n * push recomputes from that state, so there is no incremental bookkeeping to\n * drift out of sync.\n * - Pushes are serialized on one tail. A sink that awaits cannot interleave\n * with the next recompute, which is what keeps a host's whole-list setter\n * from being called out of order.\n * - Registration coalesces into one microtask flush, so composing forty\n * packages at startup costs one push per slot rather than forty.\n *\n * AVOID:\n * - Pushing a slot whose active list is unchanged. Hosts treat a set call as a\n * structural change, and a redundant one is visible to the user.\n * - Throwing out of a push loop early. One broken sink must not stop the rest\n * of the surfaces from reaching the host.\n */\n\nimport type {\n DoomKernel,\n KernelContribution,\n KernelRegistration,\n KernelSlotHandle,\n KernelSlotSink,\n} from '../../types/kernel';\n\ninterface SlotState {\n readonly name: string;\n readonly sink: KernelSlotSink<unknown>;\n readonly entries: Map<number, KernelContribution<unknown>>;\n pushed: readonly unknown[] | undefined;\n disposed: boolean;\n}\n\nconst DISPOSED_MESSAGE = 'The kernel is disposed';\n\nfunction sameList(left: readonly unknown[] | undefined, right: readonly unknown[]): boolean {\n if (left === undefined || left.length !== right.length) return false;\n return left.every((value, index) => value === right[index]);\n}\n\nfunction describe(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport interface CreateDoomKernelOptions {\n /** Layers active at creation, usually `resolveLayers(config, majorMode)`. */\n readonly activeLayers?: readonly string[];\n}\n\nexport function createDoomKernel(options: CreateDoomKernelOptions = {}): DoomKernel {\n const slots = new Map<string, SlotState>();\n const dirty = new Set<string>();\n /** Slots whose values render differently without the list itself changing. */\n const forced = new Set<string>();\n let layers = new Set(options.activeLayers ?? []);\n let sequence = 0;\n let tail: Promise<void> = Promise.resolve();\n let scheduled: Promise<void> | undefined;\n let disposed = false;\n\n const activeOf = (slot: SlotState): readonly unknown[] =>\n [...slot.entries.entries()]\n .sort(([left], [right]) => left - right)\n .filter(([, entry]) => entry.layer === undefined || layers.has(entry.layer))\n .map(([, entry]) => entry.value);\n\n const pushOne = async (slot: SlotState, force: boolean, failures: string[]): Promise<void> => {\n if (slot.disposed) return;\n const active = activeOf(slot);\n if (!force && sameList(slot.pushed, active)) return;\n try {\n await slot.sink(active);\n slot.pushed = active;\n } catch (error) {\n // Cache only an acknowledged application. A sink may be retried with the\n // same active values after it recovers.\n failures.push(`${slot.name}: ${describe(error)}`);\n }\n };\n\n const flush = (): Promise<void> => {\n const run = tail\n .catch(() => undefined)\n .then(async () => {\n if (dirty.size === 0) return;\n const pending = [...dirty];\n const pendingForced = new Set(forced);\n dirty.clear();\n forced.clear();\n const failures: string[] = [];\n for (const name of pending) {\n const slot = slots.get(name);\n if (slot) await pushOne(slot, pendingForced.has(name), failures);\n }\n if (failures.length > 0) throw new Error(`Kernel slots failed to apply: ${failures.join('; ')}`);\n });\n tail = run;\n return run;\n };\n\n const schedule = (): void => {\n if (scheduled) return;\n scheduled = Promise.resolve().then(() => {\n scheduled = undefined;\n // A scheduled flush is fire and forget; `refresh` is how a caller waits.\n return flush().catch(() => undefined);\n });\n };\n\n const markDirty = (name: string): void => {\n dirty.add(name);\n };\n\n const contribute = <TValue>(slot: string, entry: KernelContribution<TValue>): KernelRegistration => {\n if (disposed) throw new Error(DISPOSED_MESSAGE);\n const state = slots.get(slot);\n if (!state)\n throw new Error(`Unknown kernel slot: ${slot}. Defined slots: ${[...slots.keys()].join(', ') || 'none'}`);\n const key = sequence++;\n state.entries.set(key, entry as KernelContribution<unknown>);\n markDirty(slot);\n schedule();\n let removed = false;\n return {\n dispose(): void {\n if (removed) return;\n removed = true;\n state.entries.delete(key);\n markDirty(slot);\n schedule();\n },\n };\n };\n\n return {\n get activeLayers(): readonly string[] {\n return [...layers];\n },\n get slots(): readonly string[] {\n return [...slots.keys()];\n },\n defineSlot<TValue>(name: string, sink: KernelSlotSink<TValue>): KernelSlotHandle<TValue> {\n if (disposed) throw new Error(DISPOSED_MESSAGE);\n if (slots.has(name)) throw new Error(`Kernel slot already defined: ${name}`);\n const state: SlotState = {\n name,\n sink: sink as KernelSlotSink<unknown>,\n entries: new Map(),\n pushed: undefined,\n disposed: false,\n };\n slots.set(name, state);\n let removed = false;\n return {\n name,\n contribute: (entry) => contribute(name, entry),\n dispose(): void {\n if (removed) return;\n removed = true;\n state.disposed = true;\n slots.delete(name);\n dirty.delete(name);\n forced.delete(name);\n },\n };\n },\n contribute,\n async setActiveLayers(next: readonly string[]): Promise<void> {\n if (disposed) throw new Error(DISPOSED_MESSAGE);\n layers = new Set(next);\n for (const name of slots.keys()) markDirty(name);\n await flush();\n },\n async refresh(slot?: string): Promise<void> {\n if (disposed) throw new Error(DISPOSED_MESSAGE);\n if (slot === undefined) {\n for (const name of slots.keys()) {\n markDirty(name);\n forced.add(name);\n }\n } else if (slots.has(slot)) {\n markDirty(slot);\n forced.add(slot);\n }\n await flush();\n },\n activeValues<TValue>(slot: string): readonly TValue[] {\n const state = slots.get(slot);\n return state ? (activeOf(state) as readonly TValue[]) : [];\n },\n contributions<TValue>(slot: string): readonly KernelContribution<TValue>[] {\n const state = slots.get(slot);\n return state ? ([...state.entries.values()] as readonly KernelContribution<TValue>[]) : [];\n },\n dispose(): void {\n if (disposed) return;\n disposed = true;\n for (const state of slots.values()) state.disposed = true;\n slots.clear();\n dirty.clear();\n },\n };\n}\n"],"mappings":";AAoCA,MAAM,mBAAmB;AAEzB,SAAS,SAAS,MAAsC,OAAoC;CAC1F,IAAI,SAAS,KAAA,KAAa,KAAK,WAAW,MAAM,QAAQ,OAAO;CAC/D,OAAO,KAAK,OAAO,OAAO,UAAU,UAAU,MAAM,MAAM;AAC5D;AAEA,SAAS,SAAS,OAAwB;CACxC,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AAOA,SAAgB,iBAAiB,UAAmC,CAAC,GAAe;CAClF,MAAM,wBAAQ,IAAI,IAAuB;CACzC,MAAM,wBAAQ,IAAI,IAAY;;CAE9B,MAAM,yBAAS,IAAI,IAAY;CAC/B,IAAI,SAAS,IAAI,IAAI,QAAQ,gBAAgB,CAAC,CAAC;CAC/C,IAAI,WAAW;CACf,IAAI,OAAsB,QAAQ,QAAQ;CAC1C,IAAI;CACJ,IAAI,WAAW;CAEf,MAAM,YAAY,SAChB,CAAC,GAAG,KAAK,QAAQ,QAAQ,CAAC,CAAC,CACxB,MAAM,CAAC,OAAO,CAAC,WAAW,OAAO,KAAK,CAAC,CACvC,QAAQ,GAAG,WAAW,MAAM,UAAU,KAAA,KAAa,OAAO,IAAI,MAAM,KAAK,CAAC,CAAC,CAC3E,KAAK,GAAG,WAAW,MAAM,KAAK;CAEnC,MAAM,UAAU,OAAO,MAAiB,OAAgB,aAAsC;EAC5F,IAAI,KAAK,UAAU;EACnB,MAAM,SAAS,SAAS,IAAI;EAC5B,IAAI,CAAC,SAAS,SAAS,KAAK,QAAQ,MAAM,GAAG;EAC7C,IAAI;GACF,MAAM,KAAK,KAAK,MAAM;GACtB,KAAK,SAAS;EAChB,SAAS,OAAO;GAGd,SAAS,KAAK,GAAG,KAAK,KAAK,IAAI,SAAS,KAAK,GAAG;EAClD;CACF;CAEA,MAAM,cAA6B;EACjC,MAAM,MAAM,KACT,YAAY,KAAA,CAAS,CAAC,CACtB,KAAK,YAAY;GAChB,IAAI,MAAM,SAAS,GAAG;GACtB,MAAM,UAAU,CAAC,GAAG,KAAK;GACzB,MAAM,gBAAgB,IAAI,IAAI,MAAM;GACpC,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,MAAM,WAAqB,CAAC;GAC5B,KAAK,MAAM,QAAQ,SAAS;IAC1B,MAAM,OAAO,MAAM,IAAI,IAAI;IAC3B,IAAI,MAAM,MAAM,QAAQ,MAAM,cAAc,IAAI,IAAI,GAAG,QAAQ;GACjE;GACA,IAAI,SAAS,SAAS,GAAG,MAAM,IAAI,MAAM,iCAAiC,SAAS,KAAK,IAAI,GAAG;EACjG,CAAC;EACH,OAAO;EACP,OAAO;CACT;CAEA,MAAM,iBAAuB;EAC3B,IAAI,WAAW;EACf,YAAY,QAAQ,QAAQ,CAAC,CAAC,WAAW;GACvC,YAAY,KAAA;GAEZ,OAAO,MAAM,CAAC,CAAC,YAAY,KAAA,CAAS;EACtC,CAAC;CACH;CAEA,MAAM,aAAa,SAAuB;EACxC,MAAM,IAAI,IAAI;CAChB;CAEA,MAAM,cAAsB,MAAc,UAA0D;EAClG,IAAI,UAAU,MAAM,IAAI,MAAM,gBAAgB;EAC9C,MAAM,QAAQ,MAAM,IAAI,IAAI;EAC5B,IAAI,CAAC,OACH,MAAM,IAAI,MAAM,wBAAwB,KAAK,mBAAmB,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,QAAQ;EAC1G,MAAM,MAAM;EACZ,MAAM,QAAQ,IAAI,KAAK,KAAoC;EAC3D,UAAU,IAAI;EACd,SAAS;EACT,IAAI,UAAU;EACd,OAAO,EACL,UAAgB;GACd,IAAI,SAAS;GACb,UAAU;GACV,MAAM,QAAQ,OAAO,GAAG;GACxB,UAAU,IAAI;GACd,SAAS;EACX,EACF;CACF;CAEA,OAAO;EACL,IAAI,eAAkC;GACpC,OAAO,CAAC,GAAG,MAAM;EACnB;EACA,IAAI,QAA2B;GAC7B,OAAO,CAAC,GAAG,MAAM,KAAK,CAAC;EACzB;EACA,WAAmB,MAAc,MAAwD;GACvF,IAAI,UAAU,MAAM,IAAI,MAAM,gBAAgB;GAC9C,IAAI,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,MAAM,gCAAgC,MAAM;GAC3E,MAAM,QAAmB;IACvB;IACM;IACN,yBAAS,IAAI,IAAI;IACjB,QAAQ,KAAA;IACR,UAAU;GACZ;GACA,MAAM,IAAI,MAAM,KAAK;GACrB,IAAI,UAAU;GACd,OAAO;IACL;IACA,aAAa,UAAU,WAAW,MAAM,KAAK;IAC7C,UAAgB;KACd,IAAI,SAAS;KACb,UAAU;KACV,MAAM,WAAW;KACjB,MAAM,OAAO,IAAI;KACjB,MAAM,OAAO,IAAI;KACjB,OAAO,OAAO,IAAI;IACpB;GACF;EACF;EACA;EACA,MAAM,gBAAgB,MAAwC;GAC5D,IAAI,UAAU,MAAM,IAAI,MAAM,gBAAgB;GAC9C,SAAS,IAAI,IAAI,IAAI;GACrB,KAAK,MAAM,QAAQ,MAAM,KAAK,GAAG,UAAU,IAAI;GAC/C,MAAM,MAAM;EACd;EACA,MAAM,QAAQ,MAA8B;GAC1C,IAAI,UAAU,MAAM,IAAI,MAAM,gBAAgB;GAC9C,IAAI,SAAS,KAAA,GACX,KAAK,MAAM,QAAQ,MAAM,KAAK,GAAG;IAC/B,UAAU,IAAI;IACd,OAAO,IAAI,IAAI;GACjB;QACK,IAAI,MAAM,IAAI,IAAI,GAAG;IAC1B,UAAU,IAAI;IACd,OAAO,IAAI,IAAI;GACjB;GACA,MAAM,MAAM;EACd;EACA,aAAqB,MAAiC;GACpD,MAAM,QAAQ,MAAM,IAAI,IAAI;GAC5B,OAAO,QAAS,SAAS,KAAK,IAA0B,CAAC;EAC3D;EACA,cAAsB,MAAqD;GACzE,MAAM,QAAQ,MAAM,IAAI,IAAI;GAC5B,OAAO,QAAS,CAAC,GAAG,MAAM,QAAQ,OAAO,CAAC,IAA8C,CAAC;EAC3F;EACA,UAAgB;GACd,IAAI,UAAU;GACd,WAAW;GACX,KAAK,MAAM,SAAS,MAAM,OAAO,GAAG,MAAM,WAAW;GACrD,MAAM,MAAM;GACZ,MAAM,MAAM;EACd;CACF;AACF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
//#region src/services/loginFlow/index.ts
|
|
2
|
+
/** The message Pi's own login dialog uses; a provider flow may match on it. */
|
|
3
|
+
const CANCELLED_MESSAGE = "Login cancelled";
|
|
4
|
+
const SUPERSEDED_MESSAGE = "Superseded by a newer prompt";
|
|
5
|
+
/**
|
|
6
|
+
* Option ids Pi's providers use for their redirect-free login.
|
|
7
|
+
*
|
|
8
|
+
* The spelling is not consistent across providers: openai-codex offers
|
|
9
|
+
* `device_code` and radius offers `device-code`, so both are matched rather
|
|
10
|
+
* than assuming one canonical form.
|
|
11
|
+
*/
|
|
12
|
+
const DEVICE_CODE_OPTION_IDS = /* @__PURE__ */ new Set(["device_code", "device-code"]);
|
|
13
|
+
/**
|
|
14
|
+
* The redirect-free option a remote login should take, when the provider
|
|
15
|
+
* offers one.
|
|
16
|
+
*
|
|
17
|
+
* Pi asks browser-or-device-code as an ordinary select. A remote browser
|
|
18
|
+
* cannot receive a loopback redirect, so answering it for the user turns a
|
|
19
|
+
* dead end into the one method that works, rather than showing a choice whose
|
|
20
|
+
* default is broken.
|
|
21
|
+
*/
|
|
22
|
+
function deviceCodeOption(prompt) {
|
|
23
|
+
if (prompt.type !== "select") return void 0;
|
|
24
|
+
return prompt.options.find((option) => DEVICE_CODE_OPTION_IDS.has(option.id))?.id;
|
|
25
|
+
}
|
|
26
|
+
function promptView(id, prompt) {
|
|
27
|
+
const view = {
|
|
28
|
+
id,
|
|
29
|
+
type: prompt.type,
|
|
30
|
+
message: prompt.message
|
|
31
|
+
};
|
|
32
|
+
if (prompt.type === "select") view.options = prompt.options.map((option) => ({ ...option }));
|
|
33
|
+
else if (prompt.placeholder !== void 0) view.placeholder = prompt.placeholder;
|
|
34
|
+
return view;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The state machine between a provider login and a browser that can only
|
|
38
|
+
* poll and post.
|
|
39
|
+
*
|
|
40
|
+
* A provider asks one question at a time and may withdraw it (a manual-code
|
|
41
|
+
* prompt raced against a callback server aborts when the callback wins), so
|
|
42
|
+
* the flow holds at most one pending prompt, rejects it when its signal
|
|
43
|
+
* fires, and supersedes it if the provider asks again.
|
|
44
|
+
*/
|
|
45
|
+
function createLoginFlow(input) {
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
const events = [];
|
|
48
|
+
let status = "running";
|
|
49
|
+
let error;
|
|
50
|
+
let pending;
|
|
51
|
+
let promptSeq = 0;
|
|
52
|
+
const failPending = (reason) => {
|
|
53
|
+
const current = pending;
|
|
54
|
+
if (!current) return;
|
|
55
|
+
pending = void 0;
|
|
56
|
+
current.detach();
|
|
57
|
+
current.reject(reason);
|
|
58
|
+
};
|
|
59
|
+
const interaction = {
|
|
60
|
+
signal: controller.signal,
|
|
61
|
+
prompt(prompt) {
|
|
62
|
+
if (controller.signal.aborted || prompt.signal?.aborted) return Promise.reject(/* @__PURE__ */ new Error(CANCELLED_MESSAGE));
|
|
63
|
+
failPending(/* @__PURE__ */ new Error(SUPERSEDED_MESSAGE));
|
|
64
|
+
if (input.remote) {
|
|
65
|
+
const deviceCode = deviceCodeOption(prompt);
|
|
66
|
+
if (deviceCode !== void 0) return Promise.resolve(deviceCode);
|
|
67
|
+
}
|
|
68
|
+
promptSeq += 1;
|
|
69
|
+
const view = promptView(String(promptSeq), prompt);
|
|
70
|
+
return new Promise((resolve, reject) => {
|
|
71
|
+
const onAbort = () => failPending(/* @__PURE__ */ new Error(CANCELLED_MESSAGE));
|
|
72
|
+
prompt.signal?.addEventListener("abort", onAbort, { once: true });
|
|
73
|
+
pending = {
|
|
74
|
+
view,
|
|
75
|
+
resolve,
|
|
76
|
+
reject,
|
|
77
|
+
detach: () => prompt.signal?.removeEventListener("abort", onAbort)
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
notify(event) {
|
|
82
|
+
events.push(event);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
id: input.id,
|
|
87
|
+
providerId: input.providerId,
|
|
88
|
+
interaction,
|
|
89
|
+
snapshot() {
|
|
90
|
+
const snapshot = {
|
|
91
|
+
id: input.id,
|
|
92
|
+
providerId: input.providerId,
|
|
93
|
+
providerName: input.providerName,
|
|
94
|
+
type: input.type,
|
|
95
|
+
status,
|
|
96
|
+
events: [...events]
|
|
97
|
+
};
|
|
98
|
+
if (pending) snapshot.prompt = pending.view;
|
|
99
|
+
if (input.remote) snapshot.remote = true;
|
|
100
|
+
if (error !== void 0) snapshot.error = error;
|
|
101
|
+
return snapshot;
|
|
102
|
+
},
|
|
103
|
+
answer(promptId, value) {
|
|
104
|
+
const current = pending;
|
|
105
|
+
if (!current || current.view.id !== promptId) return false;
|
|
106
|
+
pending = void 0;
|
|
107
|
+
current.detach();
|
|
108
|
+
current.resolve(value);
|
|
109
|
+
return true;
|
|
110
|
+
},
|
|
111
|
+
cancel() {
|
|
112
|
+
if (status !== "running") return;
|
|
113
|
+
status = "cancelled";
|
|
114
|
+
controller.abort();
|
|
115
|
+
failPending(/* @__PURE__ */ new Error(CANCELLED_MESSAGE));
|
|
116
|
+
},
|
|
117
|
+
settle(outcome) {
|
|
118
|
+
if (status !== "running") return;
|
|
119
|
+
if (outcome.ok) status = "succeeded";
|
|
120
|
+
else {
|
|
121
|
+
status = "failed";
|
|
122
|
+
error = outcome.error;
|
|
123
|
+
}
|
|
124
|
+
failPending(/* @__PURE__ */ new Error(CANCELLED_MESSAGE));
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
exports.createLoginFlow = createLoginFlow;
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../src/services/loginFlow/index.ts"],"sourcesContent":["import type {\n AuthMethodType,\n LoginEvent,\n LoginFlowSnapshot,\n LoginFlowStatus,\n LoginInteraction,\n LoginPrompt,\n LoginPromptView,\n} from '../../types/server/auth';\n\n/** The message Pi's own login dialog uses; a provider flow may match on it. */\nconst CANCELLED_MESSAGE = 'Login cancelled';\nconst SUPERSEDED_MESSAGE = 'Superseded by a newer prompt';\n\n/**\n * Option ids Pi's providers use for their redirect-free login.\n *\n * The spelling is not consistent across providers: openai-codex offers\n * `device_code` and radius offers `device-code`, so both are matched rather\n * than assuming one canonical form.\n */\nconst DEVICE_CODE_OPTION_IDS: ReadonlySet<string> = new Set(['device_code', 'device-code']);\n\ninterface PendingPrompt {\n view: LoginPromptView;\n resolve(value: string): void;\n reject(error: Error): void;\n detach(): void;\n}\n\nexport interface LoginFlowInput {\n id: string;\n providerId: string;\n providerName: string;\n type: AuthMethodType;\n /**\n * The login was started from the tunnel, so the browser is on another\n * machine and a loopback redirect cannot reach this host.\n */\n remote?: boolean;\n}\n\n/**\n * The redirect-free option a remote login should take, when the provider\n * offers one.\n *\n * Pi asks browser-or-device-code as an ordinary select. A remote browser\n * cannot receive a loopback redirect, so answering it for the user turns a\n * dead end into the one method that works, rather than showing a choice whose\n * default is broken.\n */\nfunction deviceCodeOption(prompt: LoginPrompt): string | undefined {\n if (prompt.type !== 'select') return undefined;\n return prompt.options.find((option) => DEVICE_CODE_OPTION_IDS.has(option.id))?.id;\n}\n\n/**\n * One login in progress, seen from both sides: the provider's flow talks to\n * it through `interaction`, the page through snapshots and answers.\n */\nexport interface LoginFlow {\n readonly id: string;\n readonly providerId: string;\n /** Hand this to the runtime's login; prompts and events route through the flow. */\n readonly interaction: LoginInteraction;\n snapshot(): LoginFlowSnapshot;\n /** Answers the pending prompt; false when the flow is not waiting on that prompt. */\n answer(promptId: string, value: string): boolean;\n /** Aborts the provider's flow; a settled flow is left as it ended. */\n cancel(): void;\n /** Records how the runtime's login ended; a cancelled flow stays cancelled. */\n settle(outcome: { ok: true } | { ok: false; error: string }): void;\n}\n\nfunction promptView(id: string, prompt: LoginPrompt): LoginPromptView {\n const view: LoginPromptView = { id, type: prompt.type, message: prompt.message };\n if (prompt.type === 'select') view.options = prompt.options.map((option) => ({ ...option }));\n else if (prompt.placeholder !== undefined) view.placeholder = prompt.placeholder;\n return view;\n}\n\n/**\n * The state machine between a provider login and a browser that can only\n * poll and post.\n *\n * A provider asks one question at a time and may withdraw it (a manual-code\n * prompt raced against a callback server aborts when the callback wins), so\n * the flow holds at most one pending prompt, rejects it when its signal\n * fires, and supersedes it if the provider asks again.\n */\nexport function createLoginFlow(input: LoginFlowInput): LoginFlow {\n const controller = new AbortController();\n const events: LoginEvent[] = [];\n let status: LoginFlowStatus = 'running';\n let error: string | undefined;\n let pending: PendingPrompt | undefined;\n let promptSeq = 0;\n\n const failPending = (reason: Error): void => {\n const current = pending;\n if (!current) return;\n pending = undefined;\n current.detach();\n current.reject(reason);\n };\n\n const interaction: LoginInteraction = {\n signal: controller.signal,\n prompt(prompt) {\n if (controller.signal.aborted || prompt.signal?.aborted) return Promise.reject(new Error(CANCELLED_MESSAGE));\n failPending(new Error(SUPERSEDED_MESSAGE));\n // Answered before a view exists, so the page never renders a choice the\n // remote browser cannot complete.\n if (input.remote) {\n const deviceCode = deviceCodeOption(prompt);\n if (deviceCode !== undefined) return Promise.resolve(deviceCode);\n }\n promptSeq += 1;\n const view = promptView(String(promptSeq), prompt);\n return new Promise<string>((resolve, reject) => {\n const onAbort = (): void => failPending(new Error(CANCELLED_MESSAGE));\n prompt.signal?.addEventListener('abort', onAbort, { once: true });\n pending = {\n view,\n resolve,\n reject,\n detach: () => prompt.signal?.removeEventListener('abort', onAbort),\n };\n });\n },\n notify(event) {\n events.push(event);\n },\n };\n\n return {\n id: input.id,\n providerId: input.providerId,\n interaction,\n snapshot() {\n const snapshot: LoginFlowSnapshot = {\n id: input.id,\n providerId: input.providerId,\n providerName: input.providerName,\n type: input.type,\n status,\n events: [...events],\n };\n if (pending) snapshot.prompt = pending.view;\n if (input.remote) snapshot.remote = true;\n if (error !== undefined) snapshot.error = error;\n return snapshot;\n },\n answer(promptId, value) {\n const current = pending;\n if (!current || current.view.id !== promptId) return false;\n pending = undefined;\n current.detach();\n current.resolve(value);\n return true;\n },\n cancel() {\n if (status !== 'running') return;\n status = 'cancelled';\n controller.abort();\n failPending(new Error(CANCELLED_MESSAGE));\n },\n settle(outcome) {\n if (status !== 'running') return;\n if (outcome.ok) {\n status = 'succeeded';\n } else {\n status = 'failed';\n error = outcome.error;\n }\n failPending(new Error(CANCELLED_MESSAGE));\n },\n };\n}\n"],"mappings":";;AAWA,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;;;;;;;;AAS3B,MAAM,yCAA8C,IAAI,IAAI,CAAC,eAAe,aAAa,CAAC;;;;;;;;;;AA8B1F,SAAS,iBAAiB,QAAyC;CACjE,IAAI,OAAO,SAAS,UAAU,OAAO,KAAA;CACrC,OAAO,OAAO,QAAQ,MAAM,WAAW,uBAAuB,IAAI,OAAO,EAAE,CAAC,CAAC,EAAE;AACjF;AAoBA,SAAS,WAAW,IAAY,QAAsC;CACpE,MAAM,OAAwB;EAAE;EAAI,MAAM,OAAO;EAAM,SAAS,OAAO;CAAQ;CAC/E,IAAI,OAAO,SAAS,UAAU,KAAK,UAAU,OAAO,QAAQ,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE;MACtF,IAAI,OAAO,gBAAgB,KAAA,GAAW,KAAK,cAAc,OAAO;CACrE,OAAO;AACT;;;;;;;;;;AAWA,SAAgB,gBAAgB,OAAkC;CAChE,MAAM,aAAa,IAAI,gBAAgB;CACvC,MAAM,SAAuB,CAAC;CAC9B,IAAI,SAA0B;CAC9B,IAAI;CACJ,IAAI;CACJ,IAAI,YAAY;CAEhB,MAAM,eAAe,WAAwB;EAC3C,MAAM,UAAU;EAChB,IAAI,CAAC,SAAS;EACd,UAAU,KAAA;EACV,QAAQ,OAAO;EACf,QAAQ,OAAO,MAAM;CACvB;CAEA,MAAM,cAAgC;EACpC,QAAQ,WAAW;EACnB,OAAO,QAAQ;GACb,IAAI,WAAW,OAAO,WAAW,OAAO,QAAQ,SAAS,OAAO,QAAQ,uBAAO,IAAI,MAAM,iBAAiB,CAAC;GAC3G,4BAAY,IAAI,MAAM,kBAAkB,CAAC;GAGzC,IAAI,MAAM,QAAQ;IAChB,MAAM,aAAa,iBAAiB,MAAM;IAC1C,IAAI,eAAe,KAAA,GAAW,OAAO,QAAQ,QAAQ,UAAU;GACjE;GACA,aAAa;GACb,MAAM,OAAO,WAAW,OAAO,SAAS,GAAG,MAAM;GACjD,OAAO,IAAI,SAAiB,SAAS,WAAW;IAC9C,MAAM,gBAAsB,4BAAY,IAAI,MAAM,iBAAiB,CAAC;IACpE,OAAO,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;IAChE,UAAU;KACR;KACA;KACA;KACA,cAAc,OAAO,QAAQ,oBAAoB,SAAS,OAAO;IACnE;GACF,CAAC;EACH;EACA,OAAO,OAAO;GACZ,OAAO,KAAK,KAAK;EACnB;CACF;CAEA,OAAO;EACL,IAAI,MAAM;EACV,YAAY,MAAM;EAClB;EACA,WAAW;GACT,MAAM,WAA8B;IAClC,IAAI,MAAM;IACV,YAAY,MAAM;IAClB,cAAc,MAAM;IACpB,MAAM,MAAM;IACZ;IACA,QAAQ,CAAC,GAAG,MAAM;GACpB;GACA,IAAI,SAAS,SAAS,SAAS,QAAQ;GACvC,IAAI,MAAM,QAAQ,SAAS,SAAS;GACpC,IAAI,UAAU,KAAA,GAAW,SAAS,QAAQ;GAC1C,OAAO;EACT;EACA,OAAO,UAAU,OAAO;GACtB,MAAM,UAAU;GAChB,IAAI,CAAC,WAAW,QAAQ,KAAK,OAAO,UAAU,OAAO;GACrD,UAAU,KAAA;GACV,QAAQ,OAAO;GACf,QAAQ,QAAQ,KAAK;GACrB,OAAO;EACT;EACA,SAAS;GACP,IAAI,WAAW,WAAW;GAC1B,SAAS;GACT,WAAW,MAAM;GACjB,4BAAY,IAAI,MAAM,iBAAiB,CAAC;EAC1C;EACA,OAAO,SAAS;GACd,IAAI,WAAW,WAAW;GAC1B,IAAI,QAAQ,IACV,SAAS;QACJ;IACL,SAAS;IACT,QAAQ,QAAQ;GAClB;GACA,4BAAY,IAAI,MAAM,iBAAiB,CAAC;EAC1C;CACF;AACF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
//#region src/services/loginFlow/index.ts
|
|
2
|
+
/** The message Pi's own login dialog uses; a provider flow may match on it. */
|
|
3
|
+
const CANCELLED_MESSAGE = "Login cancelled";
|
|
4
|
+
const SUPERSEDED_MESSAGE = "Superseded by a newer prompt";
|
|
5
|
+
/**
|
|
6
|
+
* Option ids Pi's providers use for their redirect-free login.
|
|
7
|
+
*
|
|
8
|
+
* The spelling is not consistent across providers: openai-codex offers
|
|
9
|
+
* `device_code` and radius offers `device-code`, so both are matched rather
|
|
10
|
+
* than assuming one canonical form.
|
|
11
|
+
*/
|
|
12
|
+
const DEVICE_CODE_OPTION_IDS = /* @__PURE__ */ new Set(["device_code", "device-code"]);
|
|
13
|
+
/**
|
|
14
|
+
* The redirect-free option a remote login should take, when the provider
|
|
15
|
+
* offers one.
|
|
16
|
+
*
|
|
17
|
+
* Pi asks browser-or-device-code as an ordinary select. A remote browser
|
|
18
|
+
* cannot receive a loopback redirect, so answering it for the user turns a
|
|
19
|
+
* dead end into the one method that works, rather than showing a choice whose
|
|
20
|
+
* default is broken.
|
|
21
|
+
*/
|
|
22
|
+
function deviceCodeOption(prompt) {
|
|
23
|
+
if (prompt.type !== "select") return void 0;
|
|
24
|
+
return prompt.options.find((option) => DEVICE_CODE_OPTION_IDS.has(option.id))?.id;
|
|
25
|
+
}
|
|
26
|
+
function promptView(id, prompt) {
|
|
27
|
+
const view = {
|
|
28
|
+
id,
|
|
29
|
+
type: prompt.type,
|
|
30
|
+
message: prompt.message
|
|
31
|
+
};
|
|
32
|
+
if (prompt.type === "select") view.options = prompt.options.map((option) => ({ ...option }));
|
|
33
|
+
else if (prompt.placeholder !== void 0) view.placeholder = prompt.placeholder;
|
|
34
|
+
return view;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The state machine between a provider login and a browser that can only
|
|
38
|
+
* poll and post.
|
|
39
|
+
*
|
|
40
|
+
* A provider asks one question at a time and may withdraw it (a manual-code
|
|
41
|
+
* prompt raced against a callback server aborts when the callback wins), so
|
|
42
|
+
* the flow holds at most one pending prompt, rejects it when its signal
|
|
43
|
+
* fires, and supersedes it if the provider asks again.
|
|
44
|
+
*/
|
|
45
|
+
function createLoginFlow(input) {
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
const events = [];
|
|
48
|
+
let status = "running";
|
|
49
|
+
let error;
|
|
50
|
+
let pending;
|
|
51
|
+
let promptSeq = 0;
|
|
52
|
+
const failPending = (reason) => {
|
|
53
|
+
const current = pending;
|
|
54
|
+
if (!current) return;
|
|
55
|
+
pending = void 0;
|
|
56
|
+
current.detach();
|
|
57
|
+
current.reject(reason);
|
|
58
|
+
};
|
|
59
|
+
const interaction = {
|
|
60
|
+
signal: controller.signal,
|
|
61
|
+
prompt(prompt) {
|
|
62
|
+
if (controller.signal.aborted || prompt.signal?.aborted) return Promise.reject(/* @__PURE__ */ new Error(CANCELLED_MESSAGE));
|
|
63
|
+
failPending(/* @__PURE__ */ new Error(SUPERSEDED_MESSAGE));
|
|
64
|
+
if (input.remote) {
|
|
65
|
+
const deviceCode = deviceCodeOption(prompt);
|
|
66
|
+
if (deviceCode !== void 0) return Promise.resolve(deviceCode);
|
|
67
|
+
}
|
|
68
|
+
promptSeq += 1;
|
|
69
|
+
const view = promptView(String(promptSeq), prompt);
|
|
70
|
+
return new Promise((resolve, reject) => {
|
|
71
|
+
const onAbort = () => failPending(/* @__PURE__ */ new Error(CANCELLED_MESSAGE));
|
|
72
|
+
prompt.signal?.addEventListener("abort", onAbort, { once: true });
|
|
73
|
+
pending = {
|
|
74
|
+
view,
|
|
75
|
+
resolve,
|
|
76
|
+
reject,
|
|
77
|
+
detach: () => prompt.signal?.removeEventListener("abort", onAbort)
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
notify(event) {
|
|
82
|
+
events.push(event);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
id: input.id,
|
|
87
|
+
providerId: input.providerId,
|
|
88
|
+
interaction,
|
|
89
|
+
snapshot() {
|
|
90
|
+
const snapshot = {
|
|
91
|
+
id: input.id,
|
|
92
|
+
providerId: input.providerId,
|
|
93
|
+
providerName: input.providerName,
|
|
94
|
+
type: input.type,
|
|
95
|
+
status,
|
|
96
|
+
events: [...events]
|
|
97
|
+
};
|
|
98
|
+
if (pending) snapshot.prompt = pending.view;
|
|
99
|
+
if (input.remote) snapshot.remote = true;
|
|
100
|
+
if (error !== void 0) snapshot.error = error;
|
|
101
|
+
return snapshot;
|
|
102
|
+
},
|
|
103
|
+
answer(promptId, value) {
|
|
104
|
+
const current = pending;
|
|
105
|
+
if (!current || current.view.id !== promptId) return false;
|
|
106
|
+
pending = void 0;
|
|
107
|
+
current.detach();
|
|
108
|
+
current.resolve(value);
|
|
109
|
+
return true;
|
|
110
|
+
},
|
|
111
|
+
cancel() {
|
|
112
|
+
if (status !== "running") return;
|
|
113
|
+
status = "cancelled";
|
|
114
|
+
controller.abort();
|
|
115
|
+
failPending(/* @__PURE__ */ new Error(CANCELLED_MESSAGE));
|
|
116
|
+
},
|
|
117
|
+
settle(outcome) {
|
|
118
|
+
if (status !== "running") return;
|
|
119
|
+
if (outcome.ok) status = "succeeded";
|
|
120
|
+
else {
|
|
121
|
+
status = "failed";
|
|
122
|
+
error = outcome.error;
|
|
123
|
+
}
|
|
124
|
+
failPending(/* @__PURE__ */ new Error(CANCELLED_MESSAGE));
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { createLoginFlow };
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/services/loginFlow/index.ts"],"sourcesContent":["import type {\n AuthMethodType,\n LoginEvent,\n LoginFlowSnapshot,\n LoginFlowStatus,\n LoginInteraction,\n LoginPrompt,\n LoginPromptView,\n} from '../../types/server/auth';\n\n/** The message Pi's own login dialog uses; a provider flow may match on it. */\nconst CANCELLED_MESSAGE = 'Login cancelled';\nconst SUPERSEDED_MESSAGE = 'Superseded by a newer prompt';\n\n/**\n * Option ids Pi's providers use for their redirect-free login.\n *\n * The spelling is not consistent across providers: openai-codex offers\n * `device_code` and radius offers `device-code`, so both are matched rather\n * than assuming one canonical form.\n */\nconst DEVICE_CODE_OPTION_IDS: ReadonlySet<string> = new Set(['device_code', 'device-code']);\n\ninterface PendingPrompt {\n view: LoginPromptView;\n resolve(value: string): void;\n reject(error: Error): void;\n detach(): void;\n}\n\nexport interface LoginFlowInput {\n id: string;\n providerId: string;\n providerName: string;\n type: AuthMethodType;\n /**\n * The login was started from the tunnel, so the browser is on another\n * machine and a loopback redirect cannot reach this host.\n */\n remote?: boolean;\n}\n\n/**\n * The redirect-free option a remote login should take, when the provider\n * offers one.\n *\n * Pi asks browser-or-device-code as an ordinary select. A remote browser\n * cannot receive a loopback redirect, so answering it for the user turns a\n * dead end into the one method that works, rather than showing a choice whose\n * default is broken.\n */\nfunction deviceCodeOption(prompt: LoginPrompt): string | undefined {\n if (prompt.type !== 'select') return undefined;\n return prompt.options.find((option) => DEVICE_CODE_OPTION_IDS.has(option.id))?.id;\n}\n\n/**\n * One login in progress, seen from both sides: the provider's flow talks to\n * it through `interaction`, the page through snapshots and answers.\n */\nexport interface LoginFlow {\n readonly id: string;\n readonly providerId: string;\n /** Hand this to the runtime's login; prompts and events route through the flow. */\n readonly interaction: LoginInteraction;\n snapshot(): LoginFlowSnapshot;\n /** Answers the pending prompt; false when the flow is not waiting on that prompt. */\n answer(promptId: string, value: string): boolean;\n /** Aborts the provider's flow; a settled flow is left as it ended. */\n cancel(): void;\n /** Records how the runtime's login ended; a cancelled flow stays cancelled. */\n settle(outcome: { ok: true } | { ok: false; error: string }): void;\n}\n\nfunction promptView(id: string, prompt: LoginPrompt): LoginPromptView {\n const view: LoginPromptView = { id, type: prompt.type, message: prompt.message };\n if (prompt.type === 'select') view.options = prompt.options.map((option) => ({ ...option }));\n else if (prompt.placeholder !== undefined) view.placeholder = prompt.placeholder;\n return view;\n}\n\n/**\n * The state machine between a provider login and a browser that can only\n * poll and post.\n *\n * A provider asks one question at a time and may withdraw it (a manual-code\n * prompt raced against a callback server aborts when the callback wins), so\n * the flow holds at most one pending prompt, rejects it when its signal\n * fires, and supersedes it if the provider asks again.\n */\nexport function createLoginFlow(input: LoginFlowInput): LoginFlow {\n const controller = new AbortController();\n const events: LoginEvent[] = [];\n let status: LoginFlowStatus = 'running';\n let error: string | undefined;\n let pending: PendingPrompt | undefined;\n let promptSeq = 0;\n\n const failPending = (reason: Error): void => {\n const current = pending;\n if (!current) return;\n pending = undefined;\n current.detach();\n current.reject(reason);\n };\n\n const interaction: LoginInteraction = {\n signal: controller.signal,\n prompt(prompt) {\n if (controller.signal.aborted || prompt.signal?.aborted) return Promise.reject(new Error(CANCELLED_MESSAGE));\n failPending(new Error(SUPERSEDED_MESSAGE));\n // Answered before a view exists, so the page never renders a choice the\n // remote browser cannot complete.\n if (input.remote) {\n const deviceCode = deviceCodeOption(prompt);\n if (deviceCode !== undefined) return Promise.resolve(deviceCode);\n }\n promptSeq += 1;\n const view = promptView(String(promptSeq), prompt);\n return new Promise<string>((resolve, reject) => {\n const onAbort = (): void => failPending(new Error(CANCELLED_MESSAGE));\n prompt.signal?.addEventListener('abort', onAbort, { once: true });\n pending = {\n view,\n resolve,\n reject,\n detach: () => prompt.signal?.removeEventListener('abort', onAbort),\n };\n });\n },\n notify(event) {\n events.push(event);\n },\n };\n\n return {\n id: input.id,\n providerId: input.providerId,\n interaction,\n snapshot() {\n const snapshot: LoginFlowSnapshot = {\n id: input.id,\n providerId: input.providerId,\n providerName: input.providerName,\n type: input.type,\n status,\n events: [...events],\n };\n if (pending) snapshot.prompt = pending.view;\n if (input.remote) snapshot.remote = true;\n if (error !== undefined) snapshot.error = error;\n return snapshot;\n },\n answer(promptId, value) {\n const current = pending;\n if (!current || current.view.id !== promptId) return false;\n pending = undefined;\n current.detach();\n current.resolve(value);\n return true;\n },\n cancel() {\n if (status !== 'running') return;\n status = 'cancelled';\n controller.abort();\n failPending(new Error(CANCELLED_MESSAGE));\n },\n settle(outcome) {\n if (status !== 'running') return;\n if (outcome.ok) {\n status = 'succeeded';\n } else {\n status = 'failed';\n error = outcome.error;\n }\n failPending(new Error(CANCELLED_MESSAGE));\n },\n };\n}\n"],"mappings":";;AAWA,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;;;;;;;;AAS3B,MAAM,yCAA8C,IAAI,IAAI,CAAC,eAAe,aAAa,CAAC;;;;;;;;;;AA8B1F,SAAS,iBAAiB,QAAyC;CACjE,IAAI,OAAO,SAAS,UAAU,OAAO,KAAA;CACrC,OAAO,OAAO,QAAQ,MAAM,WAAW,uBAAuB,IAAI,OAAO,EAAE,CAAC,CAAC,EAAE;AACjF;AAoBA,SAAS,WAAW,IAAY,QAAsC;CACpE,MAAM,OAAwB;EAAE;EAAI,MAAM,OAAO;EAAM,SAAS,OAAO;CAAQ;CAC/E,IAAI,OAAO,SAAS,UAAU,KAAK,UAAU,OAAO,QAAQ,KAAK,YAAY,EAAE,GAAG,OAAO,EAAE;MACtF,IAAI,OAAO,gBAAgB,KAAA,GAAW,KAAK,cAAc,OAAO;CACrE,OAAO;AACT;;;;;;;;;;AAWA,SAAgB,gBAAgB,OAAkC;CAChE,MAAM,aAAa,IAAI,gBAAgB;CACvC,MAAM,SAAuB,CAAC;CAC9B,IAAI,SAA0B;CAC9B,IAAI;CACJ,IAAI;CACJ,IAAI,YAAY;CAEhB,MAAM,eAAe,WAAwB;EAC3C,MAAM,UAAU;EAChB,IAAI,CAAC,SAAS;EACd,UAAU,KAAA;EACV,QAAQ,OAAO;EACf,QAAQ,OAAO,MAAM;CACvB;CAEA,MAAM,cAAgC;EACpC,QAAQ,WAAW;EACnB,OAAO,QAAQ;GACb,IAAI,WAAW,OAAO,WAAW,OAAO,QAAQ,SAAS,OAAO,QAAQ,uBAAO,IAAI,MAAM,iBAAiB,CAAC;GAC3G,4BAAY,IAAI,MAAM,kBAAkB,CAAC;GAGzC,IAAI,MAAM,QAAQ;IAChB,MAAM,aAAa,iBAAiB,MAAM;IAC1C,IAAI,eAAe,KAAA,GAAW,OAAO,QAAQ,QAAQ,UAAU;GACjE;GACA,aAAa;GACb,MAAM,OAAO,WAAW,OAAO,SAAS,GAAG,MAAM;GACjD,OAAO,IAAI,SAAiB,SAAS,WAAW;IAC9C,MAAM,gBAAsB,4BAAY,IAAI,MAAM,iBAAiB,CAAC;IACpE,OAAO,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;IAChE,UAAU;KACR;KACA;KACA;KACA,cAAc,OAAO,QAAQ,oBAAoB,SAAS,OAAO;IACnE;GACF,CAAC;EACH;EACA,OAAO,OAAO;GACZ,OAAO,KAAK,KAAK;EACnB;CACF;CAEA,OAAO;EACL,IAAI,MAAM;EACV,YAAY,MAAM;EAClB;EACA,WAAW;GACT,MAAM,WAA8B;IAClC,IAAI,MAAM;IACV,YAAY,MAAM;IAClB,cAAc,MAAM;IACpB,MAAM,MAAM;IACZ;IACA,QAAQ,CAAC,GAAG,MAAM;GACpB;GACA,IAAI,SAAS,SAAS,SAAS,QAAQ;GACvC,IAAI,MAAM,QAAQ,SAAS,SAAS;GACpC,IAAI,UAAU,KAAA,GAAW,SAAS,QAAQ;GAC1C,OAAO;EACT;EACA,OAAO,UAAU,OAAO;GACtB,MAAM,UAAU;GAChB,IAAI,CAAC,WAAW,QAAQ,KAAK,OAAO,UAAU,OAAO;GACrD,UAAU,KAAA;GACV,QAAQ,OAAO;GACf,QAAQ,QAAQ,KAAK;GACrB,OAAO;EACT;EACA,SAAS;GACP,IAAI,WAAW,WAAW;GAC1B,SAAS;GACT,WAAW,MAAM;GACjB,4BAAY,IAAI,MAAM,iBAAiB,CAAC;EAC1C;EACA,OAAO,SAAS;GACd,IAAI,WAAW,WAAW;GAC1B,IAAI,QAAQ,IACV,SAAS;QACJ;IACL,SAAS;IACT,QAAQ,QAAQ;GAClB;GACA,4BAAY,IAAI,MAAM,iBAAiB,CAAC;EAC1C;CACF;AACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const require_packageApi = require("../../schemas/packageApi.cjs");
|
|
2
|
+
//#region src/services/packageApiHarness/index.ts
|
|
3
|
+
const DEFAULT_SCOPE = "global";
|
|
4
|
+
const DEFAULT_CWD = "/repo";
|
|
5
|
+
/** Any origin will do: the host routes on path, and a Request needs an absolute URL. */
|
|
6
|
+
const ORIGIN = "http://host";
|
|
7
|
+
function mountPackageApi(api, options = {}) {
|
|
8
|
+
const scope = options.scope ?? DEFAULT_SCOPE;
|
|
9
|
+
const notices = [];
|
|
10
|
+
const mountPath = `${require_packageApi.DOOM_API_ROUTE_PREFIX}/${api.basePath}`;
|
|
11
|
+
const context = {
|
|
12
|
+
scope,
|
|
13
|
+
...scope === "session" ? {
|
|
14
|
+
sessionId: options.sessionId ?? "test-session",
|
|
15
|
+
cwd: options.cwd ?? DEFAULT_CWD
|
|
16
|
+
} : {},
|
|
17
|
+
...options.directEvents ? { directEvents: options.directEvents } : {},
|
|
18
|
+
onNotice: (message) => notices.push(message)
|
|
19
|
+
};
|
|
20
|
+
const handler = api.start(context);
|
|
21
|
+
return {
|
|
22
|
+
mountPath,
|
|
23
|
+
notices,
|
|
24
|
+
async fetch(path, init) {
|
|
25
|
+
const url = new URL(path, ORIGIN);
|
|
26
|
+
if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });
|
|
27
|
+
url.pathname = url.pathname.slice(mountPath.length) || "/";
|
|
28
|
+
return handler.fetch(new Request(url, init));
|
|
29
|
+
},
|
|
30
|
+
close: () => handler.close()
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
exports.mountPackageApi = mountPackageApi;
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["DOOM_API_ROUTE_PREFIX"],"sources":["../../../src/services/packageApiHarness/index.ts"],"sourcesContent":["import type { DoomDirectEventBus } from '../../schemas/hubChannel';\nimport {\n type DoomApi,\n type DoomApiContext,\n type DoomApiHandler,\n DOOM_API_ROUTE_PREFIX,\n type DoomApiScope,\n} from '../../schemas/packageApi';\n\n/**\n * A package's HTTP surface, mounted the way a host mounts it.\n *\n * A package tests its routes by calling its Hono app directly, which proves the\n * routes but not the mount: the host serves them under\n * `/api/plugin/<basePath>` and strips that prefix before the app sees the\n * request. A package whose routes are written absolute passes its own suite and\n * answers nothing in a running cockpit.\n *\n * This mounts the declared `DoomApi` the same way, so a test asks for the URL a\n * browser would ask for. Plain `Request` and `Response`; no HTTP framework and\n * no server.\n */\n\nexport interface MountPackageApiOptions {\n scope?: DoomApiScope;\n sessionId?: string;\n cwd?: string;\n directEvents?: DoomDirectEventBus;\n}\n\nexport interface MountedPackageApi {\n /** Where the host mounted it, for building a URL the way a client does. */\n readonly mountPath: string;\n /** What the API reported to its host; a package that notices nothing leaves this empty. */\n readonly notices: readonly string[];\n /**\n * Fetches one path.\n *\n * The path is host-absolute, so it carries the mount the client would send:\n * `/api/plugin/workflow/runs/repo/blog-4`. A path outside the mount is a 404\n * from this, exactly as it is from the host.\n */\n fetch(path: string, init?: RequestInit): Promise<Response>;\n close(): void;\n}\n\nconst DEFAULT_SCOPE: DoomApiScope = 'global';\nconst DEFAULT_CWD = '/repo';\n/** Any origin will do: the host routes on path, and a Request needs an absolute URL. */\nconst ORIGIN = 'http://host';\n\nexport function mountPackageApi(api: DoomApi, options: MountPackageApiOptions = {}): MountedPackageApi {\n const scope = options.scope ?? DEFAULT_SCOPE;\n const notices: string[] = [];\n const mountPath = `${DOOM_API_ROUTE_PREFIX}/${api.basePath}`;\n const context: DoomApiContext = {\n scope,\n // A session-scoped host knows both; a hub-scoped one knows neither, and an\n // API that reads them anyway should see the same undefined it would there.\n ...(scope === 'session' ? { sessionId: options.sessionId ?? 'test-session', cwd: options.cwd ?? DEFAULT_CWD } : {}),\n ...(options.directEvents ? { directEvents: options.directEvents } : {}),\n onNotice: (message) => notices.push(message),\n };\n const handler: DoomApiHandler = api.start(context);\n\n return {\n mountPath,\n notices,\n async fetch(path, init) {\n const url = new URL(path, ORIGIN);\n if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) {\n return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });\n }\n // The host strips its own mount, so a package declares '/runs/:id' and\n // never repeats where it was mounted.\n url.pathname = url.pathname.slice(mountPath.length) || '/';\n return handler.fetch(new Request(url, init));\n },\n close: () => handler.close(),\n };\n}\n"],"mappings":";;AA8CA,MAAM,gBAA8B;AACpC,MAAM,cAAc;;AAEpB,MAAM,SAAS;AAEf,SAAgB,gBAAgB,KAAc,UAAkC,CAAC,GAAsB;CACrG,MAAM,QAAQ,QAAQ,SAAS;CAC/B,MAAM,UAAoB,CAAC;CAC3B,MAAM,YAAY,GAAGA,mBAAAA,sBAAsB,GAAG,IAAI;CAClD,MAAM,UAA0B;EAC9B;EAGA,GAAI,UAAU,YAAY;GAAE,WAAW,QAAQ,aAAa;GAAgB,KAAK,QAAQ,OAAO;EAAY,IAAI,CAAC;EACjH,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,aAAa,IAAI,CAAC;EACrE,WAAW,YAAY,QAAQ,KAAK,OAAO;CAC7C;CACA,MAAM,UAA0B,IAAI,MAAM,OAAO;CAEjD,OAAO;EACL;EACA;EACA,MAAM,MAAM,MAAM,MAAM;GACtB,MAAM,MAAM,IAAI,IAAI,MAAM,MAAM;GAChC,IAAI,IAAI,aAAa,aAAa,CAAC,IAAI,SAAS,WAAW,GAAG,UAAU,EAAE,GACxE,OAAO,IAAI,SAAS,gCAAgC,IAAI,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;GAItF,IAAI,WAAW,IAAI,SAAS,MAAM,UAAU,MAAM,KAAK;GACvD,OAAO,QAAQ,MAAM,IAAI,QAAQ,KAAK,IAAI,CAAC;EAC7C;EACA,aAAa,QAAQ,MAAM;CAC7B;AACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DoomDirectEventBus } from "../../schemas/hubChannel.cjs";
|
|
2
|
+
import { DoomApi, DoomApiScope } from "../../schemas/packageApi.cjs";
|
|
3
|
+
//#region src/services/packageApiHarness/index.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* A package's HTTP surface, mounted the way a host mounts it.
|
|
6
|
+
*
|
|
7
|
+
* A package tests its routes by calling its Hono app directly, which proves the
|
|
8
|
+
* routes but not the mount: the host serves them under
|
|
9
|
+
* `/api/plugin/<basePath>` and strips that prefix before the app sees the
|
|
10
|
+
* request. A package whose routes are written absolute passes its own suite and
|
|
11
|
+
* answers nothing in a running cockpit.
|
|
12
|
+
*
|
|
13
|
+
* This mounts the declared `DoomApi` the same way, so a test asks for the URL a
|
|
14
|
+
* browser would ask for. Plain `Request` and `Response`; no HTTP framework and
|
|
15
|
+
* no server.
|
|
16
|
+
*/
|
|
17
|
+
export interface MountPackageApiOptions {
|
|
18
|
+
scope?: DoomApiScope;
|
|
19
|
+
sessionId?: string;
|
|
20
|
+
cwd?: string;
|
|
21
|
+
directEvents?: DoomDirectEventBus;
|
|
22
|
+
}
|
|
23
|
+
export interface MountedPackageApi {
|
|
24
|
+
/** Where the host mounted it, for building a URL the way a client does. */
|
|
25
|
+
readonly mountPath: string;
|
|
26
|
+
/** What the API reported to its host; a package that notices nothing leaves this empty. */
|
|
27
|
+
readonly notices: readonly string[];
|
|
28
|
+
/**
|
|
29
|
+
* Fetches one path.
|
|
30
|
+
*
|
|
31
|
+
* The path is host-absolute, so it carries the mount the client would send:
|
|
32
|
+
* `/api/plugin/workflow/runs/repo/blog-4`. A path outside the mount is a 404
|
|
33
|
+
* from this, exactly as it is from the host.
|
|
34
|
+
*/
|
|
35
|
+
fetch(path: string, init?: RequestInit): Promise<Response>;
|
|
36
|
+
close(): void;
|
|
37
|
+
}
|
|
38
|
+
export declare function mountPackageApi(api: DoomApi, options?: MountPackageApiOptions): MountedPackageApi;
|
|
39
|
+
//#endregion
|
|
40
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/services/packageApiHarness/index.ts"],"mappings":";;;;;;;;;;;;;;;;iBAuBiB;EACf,QAAQ;EACR;EACA;EACA,eAAe;;iBAGA;;WAEN;;WAEA;;;;;;;;EAQT,MAAM,cAAc,OAAO,cAAc,QAAQ;EACjD;;wBAQc,gBAAgB,KAAK,SAAS,UAAS,yBAA8B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DoomDirectEventBus } from "../../schemas/hubChannel.mjs";
|
|
2
|
+
import { DoomApi, DoomApiScope } from "../../schemas/packageApi.mjs";
|
|
3
|
+
//#region src/services/packageApiHarness/index.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* A package's HTTP surface, mounted the way a host mounts it.
|
|
6
|
+
*
|
|
7
|
+
* A package tests its routes by calling its Hono app directly, which proves the
|
|
8
|
+
* routes but not the mount: the host serves them under
|
|
9
|
+
* `/api/plugin/<basePath>` and strips that prefix before the app sees the
|
|
10
|
+
* request. A package whose routes are written absolute passes its own suite and
|
|
11
|
+
* answers nothing in a running cockpit.
|
|
12
|
+
*
|
|
13
|
+
* This mounts the declared `DoomApi` the same way, so a test asks for the URL a
|
|
14
|
+
* browser would ask for. Plain `Request` and `Response`; no HTTP framework and
|
|
15
|
+
* no server.
|
|
16
|
+
*/
|
|
17
|
+
export interface MountPackageApiOptions {
|
|
18
|
+
scope?: DoomApiScope;
|
|
19
|
+
sessionId?: string;
|
|
20
|
+
cwd?: string;
|
|
21
|
+
directEvents?: DoomDirectEventBus;
|
|
22
|
+
}
|
|
23
|
+
export interface MountedPackageApi {
|
|
24
|
+
/** Where the host mounted it, for building a URL the way a client does. */
|
|
25
|
+
readonly mountPath: string;
|
|
26
|
+
/** What the API reported to its host; a package that notices nothing leaves this empty. */
|
|
27
|
+
readonly notices: readonly string[];
|
|
28
|
+
/**
|
|
29
|
+
* Fetches one path.
|
|
30
|
+
*
|
|
31
|
+
* The path is host-absolute, so it carries the mount the client would send:
|
|
32
|
+
* `/api/plugin/workflow/runs/repo/blog-4`. A path outside the mount is a 404
|
|
33
|
+
* from this, exactly as it is from the host.
|
|
34
|
+
*/
|
|
35
|
+
fetch(path: string, init?: RequestInit): Promise<Response>;
|
|
36
|
+
close(): void;
|
|
37
|
+
}
|
|
38
|
+
export declare function mountPackageApi(api: DoomApi, options?: MountPackageApiOptions): MountedPackageApi;
|
|
39
|
+
//#endregion
|
|
40
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/services/packageApiHarness/index.ts"],"mappings":";;;;;;;;;;;;;;;;iBAuBiB;EACf,QAAQ;EACR;EACA;EACA,eAAe;;iBAGA;;WAEN;;WAEA;;;;;;;;EAQT,MAAM,cAAc,OAAO,cAAc,QAAQ;EACjD;;wBAQc,gBAAgB,KAAK,SAAS,UAAS,yBAA8B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { DOOM_API_ROUTE_PREFIX } from "../../schemas/packageApi.mjs";
|
|
2
|
+
//#region src/services/packageApiHarness/index.ts
|
|
3
|
+
const DEFAULT_SCOPE = "global";
|
|
4
|
+
const DEFAULT_CWD = "/repo";
|
|
5
|
+
/** Any origin will do: the host routes on path, and a Request needs an absolute URL. */
|
|
6
|
+
const ORIGIN = "http://host";
|
|
7
|
+
function mountPackageApi(api, options = {}) {
|
|
8
|
+
const scope = options.scope ?? DEFAULT_SCOPE;
|
|
9
|
+
const notices = [];
|
|
10
|
+
const mountPath = `${DOOM_API_ROUTE_PREFIX}/${api.basePath}`;
|
|
11
|
+
const context = {
|
|
12
|
+
scope,
|
|
13
|
+
...scope === "session" ? {
|
|
14
|
+
sessionId: options.sessionId ?? "test-session",
|
|
15
|
+
cwd: options.cwd ?? DEFAULT_CWD
|
|
16
|
+
} : {},
|
|
17
|
+
...options.directEvents ? { directEvents: options.directEvents } : {},
|
|
18
|
+
onNotice: (message) => notices.push(message)
|
|
19
|
+
};
|
|
20
|
+
const handler = api.start(context);
|
|
21
|
+
return {
|
|
22
|
+
mountPath,
|
|
23
|
+
notices,
|
|
24
|
+
async fetch(path, init) {
|
|
25
|
+
const url = new URL(path, ORIGIN);
|
|
26
|
+
if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });
|
|
27
|
+
url.pathname = url.pathname.slice(mountPath.length) || "/";
|
|
28
|
+
return handler.fetch(new Request(url, init));
|
|
29
|
+
},
|
|
30
|
+
close: () => handler.close()
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { mountPackageApi };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/services/packageApiHarness/index.ts"],"sourcesContent":["import type { DoomDirectEventBus } from '../../schemas/hubChannel';\nimport {\n type DoomApi,\n type DoomApiContext,\n type DoomApiHandler,\n DOOM_API_ROUTE_PREFIX,\n type DoomApiScope,\n} from '../../schemas/packageApi';\n\n/**\n * A package's HTTP surface, mounted the way a host mounts it.\n *\n * A package tests its routes by calling its Hono app directly, which proves the\n * routes but not the mount: the host serves them under\n * `/api/plugin/<basePath>` and strips that prefix before the app sees the\n * request. A package whose routes are written absolute passes its own suite and\n * answers nothing in a running cockpit.\n *\n * This mounts the declared `DoomApi` the same way, so a test asks for the URL a\n * browser would ask for. Plain `Request` and `Response`; no HTTP framework and\n * no server.\n */\n\nexport interface MountPackageApiOptions {\n scope?: DoomApiScope;\n sessionId?: string;\n cwd?: string;\n directEvents?: DoomDirectEventBus;\n}\n\nexport interface MountedPackageApi {\n /** Where the host mounted it, for building a URL the way a client does. */\n readonly mountPath: string;\n /** What the API reported to its host; a package that notices nothing leaves this empty. */\n readonly notices: readonly string[];\n /**\n * Fetches one path.\n *\n * The path is host-absolute, so it carries the mount the client would send:\n * `/api/plugin/workflow/runs/repo/blog-4`. A path outside the mount is a 404\n * from this, exactly as it is from the host.\n */\n fetch(path: string, init?: RequestInit): Promise<Response>;\n close(): void;\n}\n\nconst DEFAULT_SCOPE: DoomApiScope = 'global';\nconst DEFAULT_CWD = '/repo';\n/** Any origin will do: the host routes on path, and a Request needs an absolute URL. */\nconst ORIGIN = 'http://host';\n\nexport function mountPackageApi(api: DoomApi, options: MountPackageApiOptions = {}): MountedPackageApi {\n const scope = options.scope ?? DEFAULT_SCOPE;\n const notices: string[] = [];\n const mountPath = `${DOOM_API_ROUTE_PREFIX}/${api.basePath}`;\n const context: DoomApiContext = {\n scope,\n // A session-scoped host knows both; a hub-scoped one knows neither, and an\n // API that reads them anyway should see the same undefined it would there.\n ...(scope === 'session' ? { sessionId: options.sessionId ?? 'test-session', cwd: options.cwd ?? DEFAULT_CWD } : {}),\n ...(options.directEvents ? { directEvents: options.directEvents } : {}),\n onNotice: (message) => notices.push(message),\n };\n const handler: DoomApiHandler = api.start(context);\n\n return {\n mountPath,\n notices,\n async fetch(path, init) {\n const url = new URL(path, ORIGIN);\n if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) {\n return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });\n }\n // The host strips its own mount, so a package declares '/runs/:id' and\n // never repeats where it was mounted.\n url.pathname = url.pathname.slice(mountPath.length) || '/';\n return handler.fetch(new Request(url, init));\n },\n close: () => handler.close(),\n };\n}\n"],"mappings":";;AA8CA,MAAM,gBAA8B;AACpC,MAAM,cAAc;;AAEpB,MAAM,SAAS;AAEf,SAAgB,gBAAgB,KAAc,UAAkC,CAAC,GAAsB;CACrG,MAAM,QAAQ,QAAQ,SAAS;CAC/B,MAAM,UAAoB,CAAC;CAC3B,MAAM,YAAY,GAAG,sBAAsB,GAAG,IAAI;CAClD,MAAM,UAA0B;EAC9B;EAGA,GAAI,UAAU,YAAY;GAAE,WAAW,QAAQ,aAAa;GAAgB,KAAK,QAAQ,OAAO;EAAY,IAAI,CAAC;EACjH,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,aAAa,IAAI,CAAC;EACrE,WAAW,YAAY,QAAQ,KAAK,OAAO;CAC7C;CACA,MAAM,UAA0B,IAAI,MAAM,OAAO;CAEjD,OAAO;EACL;EACA;EACA,MAAM,MAAM,MAAM,MAAM;GACtB,MAAM,MAAM,IAAI,IAAI,MAAM,MAAM;GAChC,IAAI,IAAI,aAAa,aAAa,CAAC,IAAI,SAAS,WAAW,GAAG,UAAU,EAAE,GACxE,OAAO,IAAI,SAAS,gCAAgC,IAAI,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;GAItF,IAAI,WAAW,IAAI,SAAS,MAAM,UAAU,MAAM,KAAK;GACvD,OAAO,QAAQ,MAAM,IAAI,QAAQ,KAAK,IAAI,CAAC;EAC7C;EACA,aAAa,QAAQ,MAAM;CAC7B;AACF"}
|