@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,386 @@
|
|
|
1
|
+
const require_remote = require("../constants/remote.cjs");
|
|
2
|
+
const require_index = require("../services/deviceSessions/index.cjs");
|
|
3
|
+
const require_index$1 = require("../services/webauthnPolicy/index.cjs");
|
|
4
|
+
const require_index$2 = require("../services/pairingPage/index.cjs");
|
|
5
|
+
let node_crypto = require("node:crypto");
|
|
6
|
+
let hono_cookie = require("hono/cookie");
|
|
7
|
+
let hono_body_limit = require("hono/body-limit");
|
|
8
|
+
let hono_http_exception = require("hono/http-exception");
|
|
9
|
+
let hono_timeout = require("hono/timeout");
|
|
10
|
+
//#region src/server/remoteRoutes.ts
|
|
11
|
+
const NONCE_BYTES = 16;
|
|
12
|
+
const BAD_REQUEST = 400;
|
|
13
|
+
const FORBIDDEN = 403;
|
|
14
|
+
const NOT_FOUND = 404;
|
|
15
|
+
const CONFLICT = 409;
|
|
16
|
+
const GONE = 410;
|
|
17
|
+
const TOO_MANY = 429;
|
|
18
|
+
const BAD_GATEWAY = 502;
|
|
19
|
+
const UNAUTHORIZED = 401;
|
|
20
|
+
const ACCEPTED = 202;
|
|
21
|
+
const CREATED = 201;
|
|
22
|
+
/** Trusted Cloudflare client address, used for display and public abuse throttling only. */
|
|
23
|
+
const EDGE_IP_HEADER = "cf-connecting-ip";
|
|
24
|
+
const PAYLOAD_TOO_LARGE = 413;
|
|
25
|
+
const REQUEST_TIMEOUT = 408;
|
|
26
|
+
const PUBLIC_REQUEST_CONCURRENCY = 8;
|
|
27
|
+
const PUBLIC_REQUEST_TIMEOUT_MS = 5e3;
|
|
28
|
+
const PAIRING_BODY_BYTES = 2048;
|
|
29
|
+
const CHANNEL_BODY_BYTES = 4096;
|
|
30
|
+
const PASSKEY_BEGIN_BODY_BYTES = 256;
|
|
31
|
+
const PASSKEY_FINISH_BODY_BYTES = 65536;
|
|
32
|
+
const CEREMONY_CALLER_COOKIE = "doompi_ceremony_caller";
|
|
33
|
+
const CEREMONY_CALLER_TOKEN = /^[A-Za-z0-9_-]{22}$/u;
|
|
34
|
+
const CEREMONY_CALLER_MAX_AGE_SECONDS = 600;
|
|
35
|
+
const PUBLIC_BEGIN_LIMIT = 10;
|
|
36
|
+
const PUBLIC_BEGIN_WINDOW_MS = 6e4;
|
|
37
|
+
const PUBLIC_BEGIN_SOURCE_LIMIT = 1024;
|
|
38
|
+
/** Fallback wait before a remote-initiated shutdown, when the raw response is not reachable. */
|
|
39
|
+
const RESPONSE_FLUSH_GRACE_MS = 250;
|
|
40
|
+
const CHANNEL_SCOPES = /* @__PURE__ */ new Set([
|
|
41
|
+
"session",
|
|
42
|
+
"protocol",
|
|
43
|
+
"http"
|
|
44
|
+
]);
|
|
45
|
+
function isChannelScope(value) {
|
|
46
|
+
return typeof value === "string" && CHANNEL_SCOPES.has(value);
|
|
47
|
+
}
|
|
48
|
+
function isRecord(value) {
|
|
49
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
50
|
+
}
|
|
51
|
+
async function readJson(context) {
|
|
52
|
+
try {
|
|
53
|
+
const body = await context.req.json();
|
|
54
|
+
return isRecord(body) ? body : void 0;
|
|
55
|
+
} catch {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Runs an action once this response has reached the wire.
|
|
61
|
+
*
|
|
62
|
+
* Both callers tear down the listener carrying their own response, and the
|
|
63
|
+
* difference between a confirmed answer and a socket error the caller cannot
|
|
64
|
+
* distinguish from a failure is doing it in this order.
|
|
65
|
+
*/
|
|
66
|
+
function afterResponse(context, action) {
|
|
67
|
+
const outgoing = context.env.outgoing;
|
|
68
|
+
if (outgoing === void 0) {
|
|
69
|
+
setTimeout(action, RESPONSE_FLUSH_GRACE_MS);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
outgoing.once("finish", action);
|
|
73
|
+
}
|
|
74
|
+
/** What the credential is called in the device list; the user agent is the only hint available. */
|
|
75
|
+
function labelFrom(context) {
|
|
76
|
+
return require_index.sanitizeUserAgent(context.req.header("user-agent"));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Cloudflare's normalized client address on the tunnel listener, with the
|
|
80
|
+
* actual socket peer as the fallback for local and direct requests.
|
|
81
|
+
*
|
|
82
|
+
* A local process can forge the Cloudflare header, but local processes are
|
|
83
|
+
* already outside this internet-client throttle boundary. Cloudflare is the
|
|
84
|
+
* trusted proxy and overwrites this header for public requests.
|
|
85
|
+
*/
|
|
86
|
+
function sourceAddressOf(context, listener) {
|
|
87
|
+
const socketPeer = context.env?.incoming?.socket?.remoteAddress;
|
|
88
|
+
if (listener !== "tunnel") return socketPeer;
|
|
89
|
+
const edgeAddress = require_index.sanitizeEdgeIp(context.req.header(EDGE_IP_HEADER));
|
|
90
|
+
return edgeAddress === "unknown" ? socketPeer : `cloudflare:${edgeAddress}`;
|
|
91
|
+
}
|
|
92
|
+
function limitedJsonBody(maxSize) {
|
|
93
|
+
return (0, hono_body_limit.bodyLimit)({
|
|
94
|
+
maxSize,
|
|
95
|
+
onError: (context) => context.json({ error: "The request body is too large." }, PAYLOAD_TOO_LARGE)
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function createPublicRequestBudget(isLocal) {
|
|
99
|
+
let active = 0;
|
|
100
|
+
return async (context, next) => {
|
|
101
|
+
if (isLocal(context)) return next();
|
|
102
|
+
if (active >= PUBLIC_REQUEST_CONCURRENCY) {
|
|
103
|
+
context.header("Retry-After", "1");
|
|
104
|
+
return context.json({ error: "Too many public requests are already in progress." }, TOO_MANY);
|
|
105
|
+
}
|
|
106
|
+
active += 1;
|
|
107
|
+
try {
|
|
108
|
+
await next();
|
|
109
|
+
} finally {
|
|
110
|
+
active -= 1;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function createPublicBeginLimit() {
|
|
115
|
+
const windows = /* @__PURE__ */ new Map();
|
|
116
|
+
return (source) => {
|
|
117
|
+
const at = Date.now();
|
|
118
|
+
let window = windows.get(source);
|
|
119
|
+
if (window === void 0 || at - window.startedAt >= PUBLIC_BEGIN_WINDOW_MS) {
|
|
120
|
+
if (window === void 0 && windows.size >= PUBLIC_BEGIN_SOURCE_LIMIT) {
|
|
121
|
+
const oldest = windows.keys().next().value;
|
|
122
|
+
if (oldest !== void 0) windows.delete(oldest);
|
|
123
|
+
}
|
|
124
|
+
window = {
|
|
125
|
+
count: 0,
|
|
126
|
+
startedAt: at
|
|
127
|
+
};
|
|
128
|
+
windows.delete(source);
|
|
129
|
+
windows.set(source, window);
|
|
130
|
+
}
|
|
131
|
+
if (window.count >= PUBLIC_BEGIN_LIMIT) return false;
|
|
132
|
+
window.count += 1;
|
|
133
|
+
return true;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Registers the pairing surface and the remote-access control plane.
|
|
138
|
+
*
|
|
139
|
+
* Split by who may reach them, not by shape. The three pairing routes are the
|
|
140
|
+
* only unauthenticated ones on the tunnel listener, so each is small, constant,
|
|
141
|
+
* and echoes nothing from its request. The control plane is mostly local-only:
|
|
142
|
+
* minting a code, approving, denying, and changing settings all stay at the
|
|
143
|
+
* machine, because a device that can do them can make its own access permanent.
|
|
144
|
+
* Turning remote access off and revoking a credential are allowed remotely, on
|
|
145
|
+
* the grounds that a panic button is worth more from the phone than the desk.
|
|
146
|
+
*/
|
|
147
|
+
function registerRemoteRoutes(app, options) {
|
|
148
|
+
const { remote } = options;
|
|
149
|
+
const isLocal = (context) => options.listenerOf(context) === "local";
|
|
150
|
+
const localOnly = (context) => isLocal(context) ? void 0 : context.json({ error: "This action is only available on the host." }, FORBIDDEN);
|
|
151
|
+
const publicBudget = createPublicRequestBudget(isLocal);
|
|
152
|
+
const publicBeginAllowed = createPublicBeginLimit();
|
|
153
|
+
const publicDeadline = (0, hono_timeout.timeout)(PUBLIC_REQUEST_TIMEOUT_MS, () => new hono_http_exception.HTTPException(REQUEST_TIMEOUT, { res: Response.json({ error: "The public request timed out." }, { status: REQUEST_TIMEOUT }) }));
|
|
154
|
+
const authenticatedCeremonyCaller = (context) => {
|
|
155
|
+
const deviceId = context.env?.sealedDeviceId ?? remote.authorize((0, hono_cookie.getCookie)(context, "doompi_device", "host"));
|
|
156
|
+
return deviceId === void 0 ? "local" : `device:${deviceId}`;
|
|
157
|
+
};
|
|
158
|
+
const registrationCaller = (context) => {
|
|
159
|
+
const caller = authenticatedCeremonyCaller(context);
|
|
160
|
+
return isLocal(context) || caller !== "local" ? caller : void 0;
|
|
161
|
+
};
|
|
162
|
+
const publicCeremonyCaller = (context, create) => {
|
|
163
|
+
let token = (0, hono_cookie.getCookie)(context, CEREMONY_CALLER_COOKIE, "host");
|
|
164
|
+
if (token !== void 0 && !CEREMONY_CALLER_TOKEN.test(token)) token = void 0;
|
|
165
|
+
if (token === void 0 && create) token = (0, node_crypto.randomBytes)(16).toString("base64url");
|
|
166
|
+
if (token !== void 0 && create) (0, hono_cookie.setCookie)(context, CEREMONY_CALLER_COOKIE, token, {
|
|
167
|
+
prefix: "host",
|
|
168
|
+
httpOnly: true,
|
|
169
|
+
sameSite: "Strict",
|
|
170
|
+
maxAge: CEREMONY_CALLER_MAX_AGE_SECONDS
|
|
171
|
+
});
|
|
172
|
+
return token === void 0 ? void 0 : `public:${token}`;
|
|
173
|
+
};
|
|
174
|
+
app.get(require_remote.PAIRING_PAGE_ROUTE, (context) => {
|
|
175
|
+
const nonce = (0, node_crypto.randomBytes)(NONCE_BYTES).toString("base64");
|
|
176
|
+
const localTrust = options.listenerOf(context) === "local" ? remote.bundleTrust() : void 0;
|
|
177
|
+
return context.body(require_index$2.pairingPageHtml({
|
|
178
|
+
nonce,
|
|
179
|
+
...localTrust === void 0 ? {} : { localTrust }
|
|
180
|
+
}), 200, require_index$2.pairingPageHeaders(nonce));
|
|
181
|
+
});
|
|
182
|
+
app.post(require_remote.PAIRING_CLAIM_ROUTE, publicBudget, publicDeadline, limitedJsonBody(PAIRING_BODY_BYTES), async (context) => {
|
|
183
|
+
let body;
|
|
184
|
+
try {
|
|
185
|
+
body = await context.req.json();
|
|
186
|
+
} catch {
|
|
187
|
+
return context.json({ error: "The request body must be JSON." }, BAD_REQUEST);
|
|
188
|
+
}
|
|
189
|
+
if (!isRecord(body) || typeof body.code !== "string" || body.code === "") return context.json({ error: "A code string is required." }, BAD_REQUEST);
|
|
190
|
+
const outcome = remote.claim({
|
|
191
|
+
code: body.code,
|
|
192
|
+
userAgent: context.req.header("user-agent"),
|
|
193
|
+
edgeIp: context.req.header(EDGE_IP_HEADER),
|
|
194
|
+
sourceAddress: sourceAddressOf(context, options.listenerOf(context))
|
|
195
|
+
});
|
|
196
|
+
if (outcome.ok) return context.json({
|
|
197
|
+
requestId: outcome.requestId,
|
|
198
|
+
status: "pending"
|
|
199
|
+
}, ACCEPTED);
|
|
200
|
+
if (outcome.code === "unknown_code") return context.json({ error: "That code is not valid." }, GONE);
|
|
201
|
+
return context.json({ error: "Too many attempts." }, TOO_MANY);
|
|
202
|
+
});
|
|
203
|
+
app.get(require_remote.PAIRING_STATUS_ROUTE, (context) => {
|
|
204
|
+
const requestId = context.req.query(require_remote.PAIRING_STATUS_QUERY);
|
|
205
|
+
if (requestId === void 0) return context.json({ error: "A request id is required." }, BAD_REQUEST);
|
|
206
|
+
const status = remote.pairingStatus(requestId);
|
|
207
|
+
if (status === void 0) return context.json({ error: "No such pairing request." }, NOT_FOUND);
|
|
208
|
+
if (status !== "approved") return context.json({ status });
|
|
209
|
+
const redeemed = remote.redeem(requestId);
|
|
210
|
+
if (redeemed === void 0) return context.json({ status: "consumed" });
|
|
211
|
+
(0, hono_cookie.setCookie)(context, require_remote.DEVICE_COOKIE, redeemed.token, {
|
|
212
|
+
prefix: "host",
|
|
213
|
+
httpOnly: true,
|
|
214
|
+
sameSite: "Lax",
|
|
215
|
+
maxAge: redeemed.maxAgeSeconds
|
|
216
|
+
});
|
|
217
|
+
return context.json({
|
|
218
|
+
status: "approved",
|
|
219
|
+
bundleTrust: remote.bundleTrust(),
|
|
220
|
+
hostPublicKey: remote.channelPublicKey()
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
app.get(require_remote.REMOTE_API_ROUTE, (context) => {
|
|
224
|
+
const self = remote.authorize((0, hono_cookie.getCookie)(context, require_remote.DEVICE_COOKIE, "host"));
|
|
225
|
+
return context.json({ state: remote.state(self, isLocal(context)) });
|
|
226
|
+
});
|
|
227
|
+
app.post(`${require_remote.REMOTE_API_ROUTE}/enable`, async (context) => {
|
|
228
|
+
const refused = localOnly(context);
|
|
229
|
+
if (refused) return refused;
|
|
230
|
+
const outcome = await remote.enable();
|
|
231
|
+
if (!outcome.ok) return context.json({ error: outcome.error }, BAD_GATEWAY);
|
|
232
|
+
if (remote.handoverPending()) {
|
|
233
|
+
afterResponse(context, () => {
|
|
234
|
+
remote.commitHandover();
|
|
235
|
+
});
|
|
236
|
+
return context.json({
|
|
237
|
+
state: remote.state(void 0, true),
|
|
238
|
+
handingOver: true
|
|
239
|
+
}, ACCEPTED);
|
|
240
|
+
}
|
|
241
|
+
return context.json({ state: remote.state(void 0, true) });
|
|
242
|
+
});
|
|
243
|
+
app.post(`${require_remote.REMOTE_API_ROUTE}/disable`, async (context) => {
|
|
244
|
+
if (isLocal(context)) {
|
|
245
|
+
await remote.disable();
|
|
246
|
+
return context.json({ state: remote.state(void 0, true) });
|
|
247
|
+
}
|
|
248
|
+
afterResponse(context, () => void remote.disable());
|
|
249
|
+
return context.json({ status: "closing" }, ACCEPTED);
|
|
250
|
+
});
|
|
251
|
+
app.post(`${require_remote.REMOTE_API_ROUTE}/codes`, (context) => {
|
|
252
|
+
const refused = localOnly(context);
|
|
253
|
+
if (refused) return refused;
|
|
254
|
+
const minted = remote.mintPairing();
|
|
255
|
+
if (minted === void 0) return context.json({ error: "Remote access or signed bundle publication is unavailable." }, CONFLICT);
|
|
256
|
+
return context.json(minted, CREATED);
|
|
257
|
+
});
|
|
258
|
+
app.post(`${require_remote.REMOTE_API_ROUTE}/pairing/:id/approve`, (context) => {
|
|
259
|
+
const refused = localOnly(context);
|
|
260
|
+
if (refused) return refused;
|
|
261
|
+
const outcome = remote.approve(context.req.param("id"));
|
|
262
|
+
if (outcome === "approved") return context.json({ state: remote.state(void 0, true) });
|
|
263
|
+
if (outcome === "unknown") return context.json({ error: "No such pairing request." }, NOT_FOUND);
|
|
264
|
+
return context.json({ error: `That request is ${outcome}.` }, CONFLICT);
|
|
265
|
+
});
|
|
266
|
+
app.post(`${require_remote.REMOTE_API_ROUTE}/pairing/:id/deny`, (context) => {
|
|
267
|
+
const refused = localOnly(context);
|
|
268
|
+
if (refused) return refused;
|
|
269
|
+
const outcome = remote.deny(context.req.param("id"));
|
|
270
|
+
if (outcome === "denied") return context.json({ state: remote.state(void 0, true) });
|
|
271
|
+
if (outcome === "unknown") return context.json({ error: "No such pairing request." }, NOT_FOUND);
|
|
272
|
+
return context.json({ error: "That request is already settled." }, CONFLICT);
|
|
273
|
+
});
|
|
274
|
+
app.delete(`${require_remote.REMOTE_API_ROUTE}/devices/:id`, (context) => {
|
|
275
|
+
if (!remote.revokeDevice(context.req.param("id"))) return context.json({ error: "No such device." }, NOT_FOUND);
|
|
276
|
+
return context.json({ state: remote.state(void 0, isLocal(context)) });
|
|
277
|
+
});
|
|
278
|
+
app.get(`${require_remote.REMOTE_API_ROUTE}/passkeys`, (context) => {
|
|
279
|
+
const passkeys = remote.passkeys();
|
|
280
|
+
return context.json({
|
|
281
|
+
support: passkeys.support(),
|
|
282
|
+
credentials: passkeys.list().map(({ id, label, createdAt, lastUsedAt }) => ({
|
|
283
|
+
id,
|
|
284
|
+
label,
|
|
285
|
+
createdAt: new Date(createdAt).toISOString(),
|
|
286
|
+
lastUsedAt: new Date(lastUsedAt).toISOString()
|
|
287
|
+
}))
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
app.post(require_remote.PASSKEY_REGISTER_BEGIN_ROUTE, publicBudget, publicDeadline, limitedJsonBody(PASSKEY_BEGIN_BODY_BYTES), async (context) => {
|
|
291
|
+
const caller = registrationCaller(context);
|
|
292
|
+
if (caller === void 0) return context.json({ error: "This device is not paired." }, UNAUTHORIZED);
|
|
293
|
+
const begun = await remote.passkeys().beginRegistration(caller, labelFrom(context));
|
|
294
|
+
if (begun === void 0) return context.json({ error: remote.passkeys().support() }, CONFLICT);
|
|
295
|
+
return context.json(begun);
|
|
296
|
+
});
|
|
297
|
+
app.post(require_remote.PASSKEY_REGISTER_FINISH_ROUTE, publicBudget, publicDeadline, limitedJsonBody(PASSKEY_FINISH_BODY_BYTES), async (context) => {
|
|
298
|
+
const caller = registrationCaller(context);
|
|
299
|
+
if (caller === void 0) return context.json({ error: "This device is not paired." }, UNAUTHORIZED);
|
|
300
|
+
const body = await readJson(context);
|
|
301
|
+
if (body === void 0 || typeof body.ceremonyId !== "string" || !("response" in body)) return context.json({ error: "A ceremonyId and response are required." }, BAD_REQUEST);
|
|
302
|
+
const outcome = await remote.passkeys().finishRegistration(body.ceremonyId, caller, body.response, labelFrom(context));
|
|
303
|
+
if (!outcome.ok) return context.json({ error: outcome.error }, BAD_REQUEST);
|
|
304
|
+
return context.json({ id: outcome.id });
|
|
305
|
+
});
|
|
306
|
+
app.post(require_remote.PASSKEY_AUTH_BEGIN_ROUTE, publicBudget, publicDeadline, limitedJsonBody(PASSKEY_BEGIN_BODY_BYTES), async (context) => {
|
|
307
|
+
const listener = options.listenerOf(context);
|
|
308
|
+
const source = sourceAddressOf(context, listener) ?? "unknown";
|
|
309
|
+
if (listener === "tunnel" && !publicBeginAllowed(source)) {
|
|
310
|
+
context.header("Retry-After", "60");
|
|
311
|
+
return context.json({ error: "Too many passkey sign-in attempts. Try again shortly." }, TOO_MANY);
|
|
312
|
+
}
|
|
313
|
+
const caller = publicCeremonyCaller(context, true);
|
|
314
|
+
if (caller === void 0) return context.json({ error: "Could not start this sign-in." }, CONFLICT);
|
|
315
|
+
const begun = await remote.passkeys().beginAuthentication(caller);
|
|
316
|
+
if (begun === void 0) return context.json({ error: "Passkeys are unavailable." }, CONFLICT);
|
|
317
|
+
return context.json(begun);
|
|
318
|
+
});
|
|
319
|
+
app.post(require_remote.PASSKEY_AUTH_FINISH_ROUTE, publicBudget, publicDeadline, limitedJsonBody(PASSKEY_FINISH_BODY_BYTES), async (context) => {
|
|
320
|
+
const body = await readJson(context);
|
|
321
|
+
if (body === void 0 || typeof body.ceremonyId !== "string" || !("response" in body)) return context.json({ error: "A ceremonyId and response are required." }, BAD_REQUEST);
|
|
322
|
+
const caller = publicCeremonyCaller(context, false);
|
|
323
|
+
if (caller === void 0) return context.json({ error: "That sign-in was not started by this browser." }, UNAUTHORIZED);
|
|
324
|
+
const outcome = await remote.passkeys().finishAuthentication(body.ceremonyId, caller, body.response);
|
|
325
|
+
if (!outcome.ok) return context.json({ error: outcome.error }, UNAUTHORIZED);
|
|
326
|
+
const hostPublicKey = remote.channelPublicKey();
|
|
327
|
+
if (hostPublicKey === void 0) return context.json({ error: "Sealed channels are unavailable." }, CONFLICT);
|
|
328
|
+
const session = remote.sessionForPasskey(outcome.credential.label);
|
|
329
|
+
(0, hono_cookie.setCookie)(context, require_remote.DEVICE_COOKIE, session.token, {
|
|
330
|
+
prefix: "host",
|
|
331
|
+
httpOnly: true,
|
|
332
|
+
sameSite: "Lax",
|
|
333
|
+
maxAge: session.maxAgeSeconds
|
|
334
|
+
});
|
|
335
|
+
return context.json({
|
|
336
|
+
ok: true,
|
|
337
|
+
hostPublicKey
|
|
338
|
+
});
|
|
339
|
+
});
|
|
340
|
+
app.delete(`${require_remote.REMOTE_API_ROUTE}/passkeys/:id`, (context) => {
|
|
341
|
+
const refused = localOnly(context);
|
|
342
|
+
if (refused) return refused;
|
|
343
|
+
if (!remote.passkeys().forget(context.req.param("id"))) return context.json({ error: "No such passkey." }, NOT_FOUND);
|
|
344
|
+
return context.json({ ok: true });
|
|
345
|
+
});
|
|
346
|
+
/** A challenge bound to one action, so it cannot be replayed to authorise another. */
|
|
347
|
+
app.post(`${require_remote.REMOTE_API_ROUTE}/challenge`, async (context) => {
|
|
348
|
+
const body = await readJson(context);
|
|
349
|
+
if (body === void 0 || !require_index$1.isStepUpAction(body.action)) return context.json({ error: "A known action is required." }, BAD_REQUEST);
|
|
350
|
+
const begun = await remote.passkeys().beginStepUp(authenticatedCeremonyCaller(context), body.action);
|
|
351
|
+
if (begun === void 0) return context.json({ error: "Passkeys are unavailable." }, CONFLICT);
|
|
352
|
+
return context.json(begun);
|
|
353
|
+
});
|
|
354
|
+
/**
|
|
355
|
+
* Completes the sealed channel for the calling device.
|
|
356
|
+
*
|
|
357
|
+
* Unsealed by necessity: this is the request that establishes sealing. It
|
|
358
|
+
* carries only a public key, which is safe for the relay to see, and needs the
|
|
359
|
+
* host key delivered by an approved QR or successful passkey sign-in.
|
|
360
|
+
*/
|
|
361
|
+
app.post(require_remote.REMOTE_CHANNEL_ROUTE, limitedJsonBody(CHANNEL_BODY_BYTES), async (context) => {
|
|
362
|
+
const device = remote.authorize((0, hono_cookie.getCookie)(context, require_remote.DEVICE_COOKIE, "host"));
|
|
363
|
+
if (device === void 0) return context.json({ error: "This device is not paired." }, UNAUTHORIZED);
|
|
364
|
+
const body = await readJson(context);
|
|
365
|
+
if (body === void 0 || typeof body.clientPublicKey !== "string" || !isChannelScope(body.scope)) return context.json({ error: "A clientPublicKey and known scope are required." }, BAD_REQUEST);
|
|
366
|
+
if (!remote.openChannel(device, body.scope, body.clientPublicKey)) return context.json({ error: "That key did not complete a fresh channel." }, BAD_REQUEST);
|
|
367
|
+
return context.json({ ok: true });
|
|
368
|
+
});
|
|
369
|
+
app.put(`${require_remote.REMOTE_API_ROUTE}/settings`, async (context) => {
|
|
370
|
+
const refused = localOnly(context);
|
|
371
|
+
if (refused) return refused;
|
|
372
|
+
let body;
|
|
373
|
+
try {
|
|
374
|
+
body = await context.req.json();
|
|
375
|
+
} catch {
|
|
376
|
+
return context.json({ error: "The request body must be JSON." }, BAD_REQUEST);
|
|
377
|
+
}
|
|
378
|
+
if (!isRecord(body)) return context.json({ error: "The settings must be an object." }, BAD_REQUEST);
|
|
379
|
+
const settings = remote.updateSettings(body);
|
|
380
|
+
return context.json({ settings });
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
//#endregion
|
|
384
|
+
exports.registerRemoteRoutes = registerRemoteRoutes;
|
|
385
|
+
|
|
386
|
+
//# sourceMappingURL=remoteRoutes.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteRoutes.cjs","names":["sanitizeUserAgent","sanitizeEdgeIp","bodyLimit","timeout","HTTPException","getCookie","randomBytes","PAIRING_PAGE_ROUTE","pairingPageHtml","pairingPageHeaders","PAIRING_CLAIM_ROUTE","PAIRING_STATUS_ROUTE","PAIRING_STATUS_QUERY","DEVICE_COOKIE","REMOTE_API_ROUTE","PASSKEY_REGISTER_BEGIN_ROUTE","PASSKEY_REGISTER_FINISH_ROUTE","PASSKEY_AUTH_BEGIN_ROUTE","PASSKEY_AUTH_FINISH_ROUTE","isStepUpAction","REMOTE_CHANNEL_ROUTE"],"sources":["../../src/server/remoteRoutes.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\n\nimport type { Context, Hono, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { getCookie, setCookie } from 'hono/cookie';\nimport { HTTPException } from 'hono/http-exception';\nimport { timeout } from 'hono/timeout';\n\nimport {\n DEVICE_COOKIE,\n PAIRING_CLAIM_ROUTE,\n PAIRING_PAGE_ROUTE,\n PAIRING_STATUS_QUERY,\n PAIRING_STATUS_ROUTE,\n PASSKEY_AUTH_BEGIN_ROUTE,\n PASSKEY_AUTH_FINISH_ROUTE,\n PASSKEY_REGISTER_BEGIN_ROUTE,\n PASSKEY_REGISTER_FINISH_ROUTE,\n REMOTE_API_ROUTE,\n REMOTE_CHANNEL_ROUTE,\n} from '../constants/remote';\nimport { sanitizeEdgeIp, sanitizeUserAgent } from '../services/deviceSessions';\nimport { pairingPageHeaders, pairingPageHtml } from '../services/pairingPage';\nimport type { RemoteAccess } from '../services/remoteAccess';\nimport type { GuardListener } from '../services/remoteGuardPolicy';\nimport { isStepUpAction } from '../services/webauthnPolicy';\nimport { type RemoteChannelScope } from '../types/remote';\n\nconst NONCE_BYTES = 16;\nconst BAD_REQUEST = 400;\nconst FORBIDDEN = 403;\nconst NOT_FOUND = 404;\nconst CONFLICT = 409;\nconst GONE = 410;\nconst TOO_MANY = 429;\nconst BAD_GATEWAY = 502;\nconst UNAUTHORIZED = 401;\nconst ACCEPTED = 202;\nconst CREATED = 201;\n/** Trusted Cloudflare client address, used for display and public abuse throttling only. */\nconst EDGE_IP_HEADER = 'cf-connecting-ip';\nconst PAYLOAD_TOO_LARGE = 413;\nconst REQUEST_TIMEOUT = 408;\nconst PUBLIC_REQUEST_CONCURRENCY = 8;\nconst PUBLIC_REQUEST_TIMEOUT_MS = 5000;\nconst PAIRING_BODY_BYTES = 2 * 1024;\nconst CHANNEL_BODY_BYTES = 4 * 1024;\nconst PASSKEY_BEGIN_BODY_BYTES = 256;\nconst PASSKEY_FINISH_BODY_BYTES = 64 * 1024;\nconst CEREMONY_CALLER_COOKIE = 'doompi_ceremony_caller';\nconst CEREMONY_CALLER_TOKEN = /^[A-Za-z0-9_-]{22}$/u;\nconst CEREMONY_CALLER_MAX_AGE_SECONDS = 10 * 60;\nconst PUBLIC_BEGIN_LIMIT = 10;\nconst PUBLIC_BEGIN_WINDOW_MS = 60_000;\nconst PUBLIC_BEGIN_SOURCE_LIMIT = 1024;\n/** Fallback wait before a remote-initiated shutdown, when the raw response is not reachable. */\nconst RESPONSE_FLUSH_GRACE_MS = 250;\nconst CHANNEL_SCOPES: ReadonlySet<RemoteChannelScope> = new Set(['session', 'protocol', 'http']);\n\ninterface NodeRequestBindings {\n incoming?: { socket?: { remoteAddress?: string } };\n sealedDeviceId?: string;\n}\n\nfunction isChannelScope(value: unknown): value is RemoteChannelScope {\n return typeof value === 'string' && CHANNEL_SCOPES.has(value as RemoteChannelScope);\n}\n\nexport interface RemoteRoutesOptions {\n remote: RemoteAccess;\n /** Which listener a request arrived on, so control-plane routes can stay local. */\n listenerOf: (context: Context) => GuardListener;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nasync function readJson(context: Context): Promise<Record<string, unknown> | undefined> {\n try {\n const body: unknown = await context.req.json();\n return isRecord(body) ? body : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Runs an action once this response has reached the wire.\n *\n * Both callers tear down the listener carrying their own response, and the\n * difference between a confirmed answer and a socket error the caller cannot\n * distinguish from a failure is doing it in this order.\n */\nfunction afterResponse(context: Context, action: () => void): void {\n const outgoing = (context.env as { outgoing?: { once: (event: string, listener: () => void) => void } }).outgoing;\n if (outgoing === undefined) {\n setTimeout(action, RESPONSE_FLUSH_GRACE_MS);\n return;\n }\n outgoing.once('finish', action);\n}\n\n/** What the credential is called in the device list; the user agent is the only hint available. */\nfunction labelFrom(context: Context): string {\n return sanitizeUserAgent(context.req.header('user-agent'));\n}\n\n/**\n * Cloudflare's normalized client address on the tunnel listener, with the\n * actual socket peer as the fallback for local and direct requests.\n *\n * A local process can forge the Cloudflare header, but local processes are\n * already outside this internet-client throttle boundary. Cloudflare is the\n * trusted proxy and overwrites this header for public requests.\n */\nfunction sourceAddressOf(context: Context, listener: GuardListener): string | undefined {\n const socketPeer = (context.env as NodeRequestBindings | undefined)?.incoming?.socket?.remoteAddress;\n if (listener !== 'tunnel') return socketPeer;\n const edgeAddress = sanitizeEdgeIp(context.req.header(EDGE_IP_HEADER));\n return edgeAddress === 'unknown' ? socketPeer : `cloudflare:${edgeAddress}`;\n}\n\nfunction limitedJsonBody(maxSize: number): MiddlewareHandler {\n return bodyLimit({\n maxSize,\n onError: (context) => context.json({ error: 'The request body is too large.' }, PAYLOAD_TOO_LARGE),\n });\n}\n\nfunction createPublicRequestBudget(isLocal: (context: Context) => boolean): MiddlewareHandler {\n let active = 0;\n return async (context, next) => {\n if (isLocal(context)) return next();\n if (active >= PUBLIC_REQUEST_CONCURRENCY) {\n context.header('Retry-After', '1');\n return context.json({ error: 'Too many public requests are already in progress.' }, TOO_MANY);\n }\n active += 1;\n try {\n await next();\n } finally {\n active -= 1;\n }\n };\n}\n\nfunction createPublicBeginLimit(): (source: string) => boolean {\n const windows = new Map<string, { count: number; startedAt: number }>();\n return (source) => {\n const at = Date.now();\n let window = windows.get(source);\n if (window === undefined || at - window.startedAt >= PUBLIC_BEGIN_WINDOW_MS) {\n if (window === undefined && windows.size >= PUBLIC_BEGIN_SOURCE_LIMIT) {\n const oldest = windows.keys().next().value as string | undefined;\n if (oldest !== undefined) windows.delete(oldest);\n }\n window = { count: 0, startedAt: at };\n windows.delete(source);\n windows.set(source, window);\n }\n if (window.count >= PUBLIC_BEGIN_LIMIT) return false;\n window.count += 1;\n return true;\n };\n}\n\n/**\n * Registers the pairing surface and the remote-access control plane.\n *\n * Split by who may reach them, not by shape. The three pairing routes are the\n * only unauthenticated ones on the tunnel listener, so each is small, constant,\n * and echoes nothing from its request. The control plane is mostly local-only:\n * minting a code, approving, denying, and changing settings all stay at the\n * machine, because a device that can do them can make its own access permanent.\n * Turning remote access off and revoking a credential are allowed remotely, on\n * the grounds that a panic button is worth more from the phone than the desk.\n */\nexport function registerRemoteRoutes(app: Hono, options: RemoteRoutesOptions): void {\n const { remote } = options;\n const isLocal = (context: Context): boolean => options.listenerOf(context) === 'local';\n const localOnly = (context: Context): Response | undefined =>\n isLocal(context) ? undefined : context.json({ error: 'This action is only available on the host.' }, FORBIDDEN);\n const publicBudget = createPublicRequestBudget(isLocal);\n const publicBeginAllowed = createPublicBeginLimit();\n const publicDeadline = timeout(\n PUBLIC_REQUEST_TIMEOUT_MS,\n () =>\n new HTTPException(REQUEST_TIMEOUT, {\n res: Response.json({ error: 'The public request timed out.' }, { status: REQUEST_TIMEOUT }),\n }),\n );\n const authenticatedCeremonyCaller = (context: Context): string => {\n const trusted = (context.env as NodeRequestBindings | undefined)?.sealedDeviceId;\n const deviceId = trusted ?? remote.authorize(getCookie(context, DEVICE_COOKIE, 'host'));\n return deviceId === undefined ? 'local' : `device:${deviceId}`;\n };\n const registrationCaller = (context: Context): string | undefined => {\n const caller = authenticatedCeremonyCaller(context);\n return isLocal(context) || caller !== 'local' ? caller : undefined;\n };\n const publicCeremonyCaller = (context: Context, create: boolean): string | undefined => {\n let token = getCookie(context, CEREMONY_CALLER_COOKIE, 'host');\n if (token !== undefined && !CEREMONY_CALLER_TOKEN.test(token)) token = undefined;\n if (token === undefined && create) token = randomBytes(16).toString('base64url');\n if (token !== undefined && create) {\n setCookie(context, CEREMONY_CALLER_COOKIE, token, {\n prefix: 'host',\n httpOnly: true,\n sameSite: 'Strict',\n maxAge: CEREMONY_CALLER_MAX_AGE_SECONDS,\n });\n }\n return token === undefined ? undefined : `public:${token}`;\n };\n app.get(PAIRING_PAGE_ROUTE, (context) => {\n const nonce = randomBytes(NONCE_BYTES).toString('base64');\n const localTrust = options.listenerOf(context) === 'local' ? remote.bundleTrust() : undefined;\n return context.body(\n pairingPageHtml({ nonce, ...(localTrust === undefined ? {} : { localTrust }) }),\n 200,\n pairingPageHeaders(nonce),\n );\n });\n\n app.post(PAIRING_CLAIM_ROUTE, publicBudget, publicDeadline, limitedJsonBody(PAIRING_BODY_BYTES), async (context) => {\n let body: unknown;\n try {\n body = await context.req.json();\n } catch {\n return context.json({ error: 'The request body must be JSON.' }, BAD_REQUEST);\n }\n if (!isRecord(body) || typeof body.code !== 'string' || body.code === '') {\n return context.json({ error: 'A code string is required.' }, BAD_REQUEST);\n }\n const outcome = remote.claim({\n code: body.code,\n userAgent: context.req.header('user-agent'),\n edgeIp: context.req.header(EDGE_IP_HEADER),\n sourceAddress: sourceAddressOf(context, options.listenerOf(context)),\n });\n if (outcome.ok) return context.json({ requestId: outcome.requestId, status: 'pending' }, ACCEPTED);\n if (outcome.code === 'unknown_code') return context.json({ error: 'That code is not valid.' }, GONE);\n return context.json({ error: 'Too many attempts.' }, TOO_MANY);\n });\n\n app.get(PAIRING_STATUS_ROUTE, (context) => {\n const requestId = context.req.query(PAIRING_STATUS_QUERY);\n if (requestId === undefined) return context.json({ error: 'A request id is required.' }, BAD_REQUEST);\n const status = remote.pairingStatus(requestId);\n if (status === undefined) return context.json({ error: 'No such pairing request.' }, NOT_FOUND);\n if (status !== 'approved') return context.json({ status });\n const redeemed = remote.redeem(requestId);\n if (redeemed === undefined) return context.json({ status: 'consumed' });\n // Secure is a constant, never derived. cloudflared terminates TLS at the\n // edge and forwards plaintext, so the request scheme here is http and\n // x-forwarded-proto is attacker-controllable; hono's host prefix hardcodes\n // Secure, Path=/ and no Domain, and throws if they are contradicted.\n setCookie(context, DEVICE_COOKIE, redeemed.token, {\n prefix: 'host',\n httpOnly: true,\n sameSite: 'Lax',\n maxAge: redeemed.maxAgeSeconds,\n });\n return context.json({\n status: 'approved',\n bundleTrust: remote.bundleTrust(),\n hostPublicKey: remote.channelPublicKey(),\n });\n });\n\n app.get(REMOTE_API_ROUTE, (context) => {\n // So a remote caller's own row can be marked \"this device\" and it cannot\n // revoke itself by accident while hunting for a stale one.\n const self = remote.authorize(getCookie(context, DEVICE_COOKIE, 'host'));\n return context.json({ state: remote.state(self, isLocal(context)) });\n });\n\n app.post(`${REMOTE_API_ROUTE}/enable`, async (context) => {\n const refused = localOnly(context);\n if (refused) return refused;\n const outcome = await remote.enable();\n if (!outcome.ok) return context.json({ error: outcome.error }, BAD_GATEWAY);\n // A contained cockpit answers here and moves afterwards, so the browser\n // learns the handover started before the server it asked goes away.\n if (remote.handoverPending()) {\n afterResponse(context, () => {\n remote.commitHandover();\n });\n return context.json({ state: remote.state(undefined, true), handingOver: true }, ACCEPTED);\n }\n return context.json({ state: remote.state(undefined, true) });\n });\n\n // Deliberately reachable from a paired device: this is the panic button.\n app.post(`${REMOTE_API_ROUTE}/disable`, async (context) => {\n if (isLocal(context)) {\n await remote.disable();\n return context.json({ state: remote.state(undefined, true) });\n }\n // Switching off from the phone tears down the listener carrying this very\n // response.\n afterResponse(context, () => void remote.disable());\n return context.json({ status: 'closing' }, ACCEPTED);\n });\n\n app.post(`${REMOTE_API_ROUTE}/codes`, (context) => {\n const refused = localOnly(context);\n if (refused) return refused;\n const minted = remote.mintPairing();\n if (minted === undefined)\n return context.json({ error: 'Remote access or signed bundle publication is unavailable.' }, CONFLICT);\n return context.json(minted, CREATED);\n });\n\n app.post(`${REMOTE_API_ROUTE}/pairing/:id/approve`, (context) => {\n const refused = localOnly(context);\n if (refused) return refused;\n const outcome = remote.approve(context.req.param('id'));\n if (outcome === 'approved') return context.json({ state: remote.state(undefined, true) });\n if (outcome === 'unknown') return context.json({ error: 'No such pairing request.' }, NOT_FOUND);\n return context.json({ error: `That request is ${outcome}.` }, CONFLICT);\n });\n\n app.post(`${REMOTE_API_ROUTE}/pairing/:id/deny`, (context) => {\n const refused = localOnly(context);\n if (refused) return refused;\n const outcome = remote.deny(context.req.param('id'));\n if (outcome === 'denied') return context.json({ state: remote.state(undefined, true) });\n if (outcome === 'unknown') return context.json({ error: 'No such pairing request.' }, NOT_FOUND);\n return context.json({ error: 'That request is already settled.' }, CONFLICT);\n });\n\n app.delete(`${REMOTE_API_ROUTE}/devices/:id`, (context) => {\n if (!remote.revokeDevice(context.req.param('id'))) {\n return context.json({ error: 'No such device.' }, NOT_FOUND);\n }\n return context.json({ state: remote.state(undefined, isLocal(context)) });\n });\n\n // Registration is direct so the approved phone can enrol before opening the\n // cockpit. On the tunnel listener, the device cookie remains mandatory.\n app.get(`${REMOTE_API_ROUTE}/passkeys`, (context) => {\n const passkeys = remote.passkeys();\n return context.json({\n support: passkeys.support(),\n credentials: passkeys.list().map(({ id, label, createdAt, lastUsedAt }) => ({\n id,\n label,\n createdAt: new Date(createdAt).toISOString(),\n lastUsedAt: new Date(lastUsedAt).toISOString(),\n })),\n });\n });\n\n app.post(\n PASSKEY_REGISTER_BEGIN_ROUTE,\n publicBudget,\n publicDeadline,\n limitedJsonBody(PASSKEY_BEGIN_BODY_BYTES),\n async (context) => {\n const caller = registrationCaller(context);\n if (caller === undefined) return context.json({ error: 'This device is not paired.' }, UNAUTHORIZED);\n const begun = await remote.passkeys().beginRegistration(caller, labelFrom(context));\n if (begun === undefined) return context.json({ error: remote.passkeys().support() }, CONFLICT);\n return context.json(begun);\n },\n );\n\n app.post(\n PASSKEY_REGISTER_FINISH_ROUTE,\n publicBudget,\n publicDeadline,\n limitedJsonBody(PASSKEY_FINISH_BODY_BYTES),\n async (context) => {\n const caller = registrationCaller(context);\n if (caller === undefined) return context.json({ error: 'This device is not paired.' }, UNAUTHORIZED);\n const body = await readJson(context);\n if (body === undefined || typeof body.ceremonyId !== 'string' || !('response' in body)) {\n return context.json({ error: 'A ceremonyId and response are required.' }, BAD_REQUEST);\n }\n const outcome = await remote\n .passkeys()\n .finishRegistration(body.ceremonyId, caller, body.response, labelFrom(context));\n if (!outcome.ok) return context.json({ error: outcome.error }, BAD_REQUEST);\n return context.json({ id: outcome.id });\n },\n );\n\n // Sign-in is reachable unauthenticated on purpose: proving a registered\n // passkey is how a returning device gets a session without another QR.\n app.post(\n PASSKEY_AUTH_BEGIN_ROUTE,\n publicBudget,\n publicDeadline,\n limitedJsonBody(PASSKEY_BEGIN_BODY_BYTES),\n async (context) => {\n const listener = options.listenerOf(context);\n const source = sourceAddressOf(context, listener) ?? 'unknown';\n if (listener === 'tunnel' && !publicBeginAllowed(source)) {\n context.header('Retry-After', '60');\n return context.json({ error: 'Too many passkey sign-in attempts. Try again shortly.' }, TOO_MANY);\n }\n const caller = publicCeremonyCaller(context, true);\n if (caller === undefined) return context.json({ error: 'Could not start this sign-in.' }, CONFLICT);\n const begun = await remote.passkeys().beginAuthentication(caller);\n if (begun === undefined) return context.json({ error: 'Passkeys are unavailable.' }, CONFLICT);\n return context.json(begun);\n },\n );\n\n app.post(\n PASSKEY_AUTH_FINISH_ROUTE,\n publicBudget,\n publicDeadline,\n limitedJsonBody(PASSKEY_FINISH_BODY_BYTES),\n async (context) => {\n const body = await readJson(context);\n if (body === undefined || typeof body.ceremonyId !== 'string' || !('response' in body)) {\n return context.json({ error: 'A ceremonyId and response are required.' }, BAD_REQUEST);\n }\n const caller = publicCeremonyCaller(context, false);\n if (caller === undefined)\n return context.json({ error: 'That sign-in was not started by this browser.' }, UNAUTHORIZED);\n const outcome = await remote.passkeys().finishAuthentication(body.ceremonyId, caller, body.response);\n if (!outcome.ok) return context.json({ error: outcome.error }, UNAUTHORIZED);\n const hostPublicKey = remote.channelPublicKey();\n if (hostPublicKey === undefined) return context.json({ error: 'Sealed channels are unavailable.' }, CONFLICT);\n const session = remote.sessionForPasskey(outcome.credential.label);\n setCookie(context, DEVICE_COOKIE, session.token, {\n prefix: 'host',\n httpOnly: true,\n sameSite: 'Lax',\n maxAge: session.maxAgeSeconds,\n });\n return context.json({ ok: true, hostPublicKey });\n },\n );\n\n app.delete(`${REMOTE_API_ROUTE}/passkeys/:id`, (context) => {\n const refused = localOnly(context);\n if (refused) return refused;\n if (!remote.passkeys().forget(context.req.param('id'))) {\n return context.json({ error: 'No such passkey.' }, NOT_FOUND);\n }\n return context.json({ ok: true });\n });\n\n /** A challenge bound to one action, so it cannot be replayed to authorise another. */\n app.post(`${REMOTE_API_ROUTE}/challenge`, async (context) => {\n const body = await readJson(context);\n if (body === undefined || !isStepUpAction(body.action)) {\n return context.json({ error: 'A known action is required.' }, BAD_REQUEST);\n }\n const begun = await remote.passkeys().beginStepUp(authenticatedCeremonyCaller(context), body.action);\n if (begun === undefined) return context.json({ error: 'Passkeys are unavailable.' }, CONFLICT);\n return context.json(begun);\n });\n\n /**\n * Completes the sealed channel for the calling device.\n *\n * Unsealed by necessity: this is the request that establishes sealing. It\n * carries only a public key, which is safe for the relay to see, and needs the\n * host key delivered by an approved QR or successful passkey sign-in.\n */\n app.post(REMOTE_CHANNEL_ROUTE, limitedJsonBody(CHANNEL_BODY_BYTES), async (context) => {\n const device = remote.authorize(getCookie(context, DEVICE_COOKIE, 'host'));\n if (device === undefined) return context.json({ error: 'This device is not paired.' }, UNAUTHORIZED);\n const body = await readJson(context);\n if (body === undefined || typeof body.clientPublicKey !== 'string' || !isChannelScope(body.scope)) {\n return context.json({ error: 'A clientPublicKey and known scope are required.' }, BAD_REQUEST);\n }\n if (!remote.openChannel(device, body.scope, body.clientPublicKey)) {\n return context.json({ error: 'That key did not complete a fresh channel.' }, BAD_REQUEST);\n }\n return context.json({ ok: true });\n });\n\n app.put(`${REMOTE_API_ROUTE}/settings`, async (context) => {\n const refused = localOnly(context);\n if (refused) return refused;\n let body: unknown;\n try {\n body = await context.req.json();\n } catch {\n return context.json({ error: 'The request body must be JSON.' }, BAD_REQUEST);\n }\n if (!isRecord(body)) return context.json({ error: 'The settings must be an object.' }, BAD_REQUEST);\n const settings = remote.updateSettings(body);\n return context.json({ settings });\n });\n}\n"],"mappings":"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"}
|