@songsid/agend 2.3.4-beta.7 → 2.3.5-alpha.3
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/README.md +2 -0
- package/README.zh-TW.md +2 -0
- package/THIRD_PARTY_NOTICES.md +53 -0
- package/dist/agent-endpoint.d.ts +5 -1
- package/dist/agent-endpoint.js +12 -2
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/auth-api.d.ts +21 -0
- package/dist/auth-api.js +89 -2
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/web-authority.d.ts +12 -2
- package/dist/authority/web-authority.js +25 -4
- package/dist/authority/web-authority.js.map +1 -1
- package/dist/backend/claude-code.d.ts +15 -12
- package/dist/backend/claude-code.js +152 -133
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-package.d.ts +5 -2
- package/dist/backend/codex-package.js +1 -5
- package/dist/backend/codex-package.js.map +1 -1
- package/dist/backend/codex.d.ts +136 -113
- package/dist/backend/codex.js +1281 -1219
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/grok-model-cache.d.ts +7 -0
- package/dist/backend/grok-model-cache.js +65 -0
- package/dist/backend/grok-model-cache.js.map +1 -0
- package/dist/backend/grok.d.ts +2 -0
- package/dist/backend/grok.js +22 -0
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/native-pane.d.ts +9 -0
- package/dist/backend/native-pane.js +59 -0
- package/dist/backend/native-pane.js.map +1 -0
- package/dist/backend/types.d.ts +7 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/ipc-bridge.d.ts +2 -0
- package/dist/channel/mcp-tools.js +1 -1
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +71 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +67 -5
- package/dist/daemon.js +823 -266
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-consumed-watch.d.ts +15 -3
- package/dist/delivery-consumed-watch.js +23 -1
- package/dist/delivery-consumed-watch.js.map +1 -1
- package/dist/delivery-outbox.d.ts +5 -0
- package/dist/delivery-outbox.js +32 -4
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +2 -35
- package/dist/delivery-reconciliation.js +2 -156
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -2
- package/dist/fleet-level-config.d.ts +1 -1
- package/dist/fleet-level-config.js +2 -0
- package/dist/fleet-level-config.js.map +1 -1
- package/dist/fleet-manager.d.ts +238 -3
- package/dist/fleet-manager.js +1826 -104
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-windows-runtime.d.ts +92 -0
- package/dist/fleet-windows-runtime.js +380 -0
- package/dist/fleet-windows-runtime.js.map +1 -0
- package/dist/general-binding.d.ts +85 -0
- package/dist/general-binding.js +298 -0
- package/dist/general-binding.js.map +1 -0
- package/dist/general-host-owner.d.ts +8 -0
- package/dist/general-host-owner.js +26 -0
- package/dist/general-host-owner.js.map +1 -0
- package/dist/general-instance.d.ts +7 -0
- package/dist/general-instance.js +20 -3
- package/dist/general-instance.js.map +1 -1
- package/dist/general-role.d.ts +5 -0
- package/dist/general-role.js +26 -0
- package/dist/general-role.js.map +1 -0
- package/dist/instance-config-impact.js +4 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +21 -3
- package/dist/instance-lifecycle.js +378 -162
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.d.ts +2 -0
- package/dist/instructions.js +6 -0
- package/dist/instructions.js.map +1 -1
- package/dist/local-pane-endpoint.d.ts +46 -0
- package/dist/local-pane-endpoint.js +189 -0
- package/dist/local-pane-endpoint.js.map +1 -0
- package/dist/local-pane-launcher.d.ts +2 -0
- package/dist/local-pane-launcher.js +38 -0
- package/dist/local-pane-launcher.js.map +1 -0
- package/dist/local-pane-stage.ps1 +101 -0
- package/dist/locale.js +85 -0
- package/dist/locale.js.map +1 -1
- package/dist/model-catalog-defaults.d.ts +14 -0
- package/dist/model-catalog-defaults.js +20 -0
- package/dist/model-catalog-defaults.js.map +1 -0
- package/dist/native-agent-admission.d.ts +7 -0
- package/dist/native-agent-admission.js +26 -0
- package/dist/native-agent-admission.js.map +1 -0
- package/dist/native-daemon-client.d.ts +13 -0
- package/dist/native-daemon-client.js +28 -0
- package/dist/native-daemon-client.js.map +1 -0
- package/dist/native-instance-api.d.ts +14 -0
- package/dist/native-instance-api.js +205 -0
- package/dist/native-instance-api.js.map +1 -0
- package/dist/native-instance-input.d.ts +84 -0
- package/dist/native-instance-input.js +54 -0
- package/dist/native-instance-input.js.map +1 -0
- package/dist/native-instance-registry.d.ts +32 -0
- package/dist/native-instance-registry.js +105 -0
- package/dist/native-instance-registry.js.map +1 -0
- package/dist/native-mcp.d.ts +40 -0
- package/dist/native-mcp.js +278 -0
- package/dist/native-mcp.js.map +1 -0
- package/dist/native-model-catalog.d.ts +5 -0
- package/dist/native-model-catalog.js +76 -0
- package/dist/native-model-catalog.js.map +1 -0
- package/dist/native-pane-crash-budget.d.ts +20 -0
- package/dist/native-pane-crash-budget.js +60 -0
- package/dist/native-pane-crash-budget.js.map +1 -0
- package/dist/native-pane-create.d.ts +26 -0
- package/dist/native-pane-create.js +53 -0
- package/dist/native-pane-create.js.map +1 -0
- package/dist/native-pane-lifecycle.d.ts +65 -0
- package/dist/native-pane-lifecycle.js +230 -0
- package/dist/native-pane-lifecycle.js.map +1 -0
- package/dist/native-pane-manager.d.ts +59 -0
- package/dist/native-pane-manager.js +584 -0
- package/dist/native-pane-manager.js.map +1 -0
- package/dist/native-pane-output-log.d.ts +15 -0
- package/dist/native-pane-output-log.js +108 -0
- package/dist/native-pane-output-log.js.map +1 -0
- package/dist/native-pane-reconciliation.d.ts +4 -0
- package/dist/native-pane-reconciliation.js +40 -0
- package/dist/native-pane-reconciliation.js.map +1 -0
- package/dist/native-pane-recovery.d.ts +12 -0
- package/dist/native-pane-recovery.js +10 -0
- package/dist/native-pane-recovery.js.map +1 -0
- package/dist/native-pane-tools.d.ts +2 -0
- package/dist/native-pane-tools.js +14 -0
- package/dist/native-pane-tools.js.map +1 -0
- package/dist/needs-you-hub.d.ts +2 -0
- package/dist/needs-you-hub.js +2 -1
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +19 -1
- package/dist/needs-you.js +12 -2
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.d.ts +16 -2
- package/dist/outbound-handlers.js +67 -3
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +38 -0
- package/dist/outbound-schemas.js +12 -0
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/pane-port.d.ts +118 -0
- package/dist/pane-port.js +2 -0
- package/dist/pane-port.js.map +1 -0
- package/dist/public-web-gateway.js +9 -0
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +5 -0
- package/dist/public-web-link.js +4 -0
- package/dist/public-web-link.js.map +1 -1
- package/dist/quickstart-api.js +9 -5
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.d.ts +1 -0
- package/dist/quickstart.js +4 -1
- package/dist/quickstart.js.map +1 -1
- package/dist/runtime-api.d.ts +8 -0
- package/dist/runtime-api.js +96 -0
- package/dist/runtime-api.js.map +1 -0
- package/dist/runtime-assets/@xterm/addon-serialize/LICENSE +21 -0
- package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.js +2 -0
- package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.mjs +19 -0
- package/dist/runtime-assets/@xterm/addon-serialize/package.json +29 -0
- package/dist/runtime-assets/@xterm/headless/LICENSE +21 -0
- package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.js +2 -0
- package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.mjs +46 -0
- package/dist/runtime-assets/@xterm/headless/package.json +29 -0
- package/dist/runtime-assets/node-pty/CONPTY-LICENSE +21 -0
- package/dist/runtime-assets/node-pty/CONPTY-NOTICE.md +503 -0
- package/dist/runtime-assets/node-pty/LICENSE +69 -0
- package/dist/runtime-assets/node-pty/lib/conpty_console_list_agent.js +16 -0
- package/dist/runtime-assets/node-pty/lib/eventEmitter2.js +47 -0
- package/dist/runtime-assets/node-pty/lib/index.js +52 -0
- package/dist/runtime-assets/node-pty/lib/interfaces.js +7 -0
- package/dist/runtime-assets/node-pty/lib/shared/conout.js +11 -0
- package/dist/runtime-assets/node-pty/lib/terminal.js +190 -0
- package/dist/runtime-assets/node-pty/lib/types.js +7 -0
- package/dist/runtime-assets/node-pty/lib/unixTerminal.js +346 -0
- package/dist/runtime-assets/node-pty/lib/utils.js +39 -0
- package/dist/runtime-assets/node-pty/lib/windowsConoutConnection.js +125 -0
- package/dist/runtime-assets/node-pty/lib/windowsPtyAgent.js +320 -0
- package/dist/runtime-assets/node-pty/lib/windowsTerminal.js +199 -0
- package/dist/runtime-assets/node-pty/lib/worker/conoutSocketWorker.js +22 -0
- package/dist/runtime-assets/node-pty/package.json +64 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/dist/runtime-bundle.d.ts +17 -0
- package/dist/runtime-bundle.js +150 -0
- package/dist/runtime-bundle.js.map +1 -0
- package/dist/runtime-cli.d.ts +2 -0
- package/dist/runtime-cli.js +117 -0
- package/dist/runtime-cli.js.map +1 -0
- package/dist/runtime-client-store.d.ts +49 -0
- package/dist/runtime-client-store.js +292 -0
- package/dist/runtime-client-store.js.map +1 -0
- package/dist/runtime-client.d.ts +100 -0
- package/dist/runtime-client.js +700 -0
- package/dist/runtime-client.js.map +1 -0
- package/dist/runtime-coordinator.d.ts +82 -0
- package/dist/runtime-coordinator.js +864 -0
- package/dist/runtime-coordinator.js.map +1 -0
- package/dist/runtime-general-protocol.d.ts +22 -0
- package/dist/runtime-general-protocol.js +57 -0
- package/dist/runtime-general-protocol.js.map +1 -0
- package/dist/runtime-general-workspace.d.ts +17 -0
- package/dist/runtime-general-workspace.js +213 -0
- package/dist/runtime-general-workspace.js.map +1 -0
- package/dist/runtime-pane-assets.d.ts +17 -0
- package/dist/runtime-pane-assets.js +23 -0
- package/dist/runtime-pane-assets.js.map +1 -0
- package/dist/runtime-pane-boot.d.ts +2 -0
- package/dist/runtime-pane-boot.js +24 -0
- package/dist/runtime-pane-boot.js.map +1 -0
- package/dist/runtime-pane-codex-index.d.ts +1 -0
- package/dist/runtime-pane-codex-index.js +47 -0
- package/dist/runtime-pane-codex-index.js.map +1 -0
- package/dist/runtime-pane-config.d.ts +16 -0
- package/dist/runtime-pane-config.js +54 -0
- package/dist/runtime-pane-config.js.map +1 -0
- package/dist/runtime-pane-host.d.ts +44 -0
- package/dist/runtime-pane-host.js +424 -0
- package/dist/runtime-pane-host.js.map +1 -0
- package/dist/runtime-pane-job-owner.d.ts +1 -0
- package/dist/runtime-pane-job-owner.js +29 -0
- package/dist/runtime-pane-job-owner.js.map +1 -0
- package/dist/runtime-pane-job.ps1 +116 -0
- package/dist/runtime-pane-link.d.ts +40 -0
- package/dist/runtime-pane-link.js +246 -0
- package/dist/runtime-pane-link.js.map +1 -0
- package/dist/runtime-pane-mcp-protocol.d.ts +32 -0
- package/dist/runtime-pane-mcp-protocol.js +39 -0
- package/dist/runtime-pane-mcp-protocol.js.map +1 -0
- package/dist/runtime-pane-mcp-relay.d.ts +17 -0
- package/dist/runtime-pane-mcp-relay.js +70 -0
- package/dist/runtime-pane-mcp-relay.js.map +1 -0
- package/dist/runtime-pane-mcp.d.ts +51 -0
- package/dist/runtime-pane-mcp.js +150 -0
- package/dist/runtime-pane-mcp.js.map +1 -0
- package/dist/runtime-pane-native.d.ts +45 -0
- package/dist/runtime-pane-native.js +65 -0
- package/dist/runtime-pane-native.js.map +1 -0
- package/dist/runtime-pane-output.d.ts +19 -0
- package/dist/runtime-pane-output.js +53 -0
- package/dist/runtime-pane-output.js.map +1 -0
- package/dist/runtime-pane-port.d.ts +139 -0
- package/dist/runtime-pane-port.js +558 -0
- package/dist/runtime-pane-port.js.map +1 -0
- package/dist/runtime-pane-private.d.ts +14 -0
- package/dist/runtime-pane-private.js +51 -0
- package/dist/runtime-pane-private.js.map +1 -0
- package/dist/runtime-pane-private.ps1 +14 -0
- package/dist/runtime-pane-process.d.ts +4 -0
- package/dist/runtime-pane-process.js +108 -0
- package/dist/runtime-pane-process.js.map +1 -0
- package/dist/runtime-pane-protocol.d.ts +172 -0
- package/dist/runtime-pane-protocol.js +195 -0
- package/dist/runtime-pane-protocol.js.map +1 -0
- package/dist/runtime-pane-screen.d.ts +19 -0
- package/dist/runtime-pane-screen.js +76 -0
- package/dist/runtime-pane-screen.js.map +1 -0
- package/dist/runtime-pane-service.d.ts +11 -0
- package/dist/runtime-pane-service.js +221 -0
- package/dist/runtime-pane-service.js.map +1 -0
- package/dist/runtime-pane-stdio-protocol.d.ts +54 -0
- package/dist/runtime-pane-stdio-protocol.js +94 -0
- package/dist/runtime-pane-stdio-protocol.js.map +1 -0
- package/dist/runtime-pane-stdio.d.ts +3 -0
- package/dist/runtime-pane-stdio.js +123 -0
- package/dist/runtime-pane-stdio.js.map +1 -0
- package/dist/runtime-pane-store.d.ts +33 -0
- package/dist/runtime-pane-store.js +164 -0
- package/dist/runtime-pane-store.js.map +1 -0
- package/dist/runtime-pane-transcript-protocol.d.ts +43 -0
- package/dist/runtime-pane-transcript-protocol.js +58 -0
- package/dist/runtime-pane-transcript-protocol.js.map +1 -0
- package/dist/runtime-pane-transcript.d.ts +45 -0
- package/dist/runtime-pane-transcript.js +605 -0
- package/dist/runtime-pane-transcript.js.map +1 -0
- package/dist/runtime-pane-worker.d.ts +1 -0
- package/dist/runtime-pane-worker.js +154 -0
- package/dist/runtime-pane-worker.js.map +1 -0
- package/dist/runtime-protocol.d.ts +149 -0
- package/dist/runtime-protocol.js +19 -0
- package/dist/runtime-protocol.js.map +1 -0
- package/dist/runtime-switches.d.ts +79 -0
- package/dist/runtime-switches.js +90 -0
- package/dist/runtime-switches.js.map +1 -0
- package/dist/runtime-transcript-delta-reader.d.ts +23 -0
- package/dist/runtime-transcript-delta-reader.js +74 -0
- package/dist/runtime-transcript-delta-reader.js.map +1 -0
- package/dist/runtime-transcript-source.d.ts +36 -0
- package/dist/runtime-transcript-source.js +189 -0
- package/dist/runtime-transcript-source.js.map +1 -0
- package/dist/runtime-windows-bridge.d.ts +41 -0
- package/dist/runtime-windows-bridge.js +157 -0
- package/dist/runtime-windows-bridge.js.map +1 -0
- package/dist/settings-api.d.ts +5 -0
- package/dist/settings-api.js +95 -1
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-baseline.d.ts +1 -0
- package/dist/settings-baseline.js +1 -1
- package/dist/settings-baseline.js.map +1 -1
- package/dist/settings-change.js +28 -0
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-confirmation.d.ts +16 -1
- package/dist/settings-confirmation.js +47 -9
- package/dist/settings-confirmation.js.map +1 -1
- package/dist/settings-effect.d.ts +4 -0
- package/dist/settings-effect.js +58 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.d.ts +1 -0
- package/dist/settings-http-confirmation.js +15 -2
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/settings-request-capability.d.ts +2 -0
- package/dist/settings-request-capability.js +4 -0
- package/dist/settings-request-capability.js.map +1 -1
- package/dist/settings-route-lifetime.d.ts +14 -0
- package/dist/settings-route-lifetime.js +48 -0
- package/dist/settings-route-lifetime.js.map +1 -0
- package/dist/settings-transaction.d.ts +4 -0
- package/dist/settings-transaction.js +9 -0
- package/dist/settings-transaction.js.map +1 -1
- package/dist/setup-form.js +6 -3
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-i18n.js +3 -0
- package/dist/setup-i18n.js.map +1 -1
- package/dist/tmux-control.d.ts +2 -1
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.d.ts +2 -1
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-pane-host.d.ts +26 -0
- package/dist/tmux-pane-host.js +25 -0
- package/dist/tmux-pane-host.js.map +1 -0
- package/dist/tool-permissions.js +2 -1
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.js +3 -0
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-delta-reader.d.ts +1 -1
- package/dist/transcript-delta-reader.js +1 -1
- package/dist/transcript-delta-reader.js.map +1 -1
- package/dist/transcript-monitor.d.ts +3 -0
- package/dist/transcript-monitor.js +22 -46
- package/dist/transcript-monitor.js.map +1 -1
- package/dist/transcript-needles.d.ts +35 -0
- package/dist/transcript-needles.js +158 -0
- package/dist/transcript-needles.js.map +1 -0
- package/dist/transcript-records.d.ts +21 -0
- package/dist/transcript-records.js +140 -0
- package/dist/transcript-records.js.map +1 -0
- package/dist/transcript-sources.d.ts +5 -0
- package/dist/transcript-sources.js +8 -79
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/ui/agent-proposals.js +90 -0
- package/dist/ui/agent-runtime.js +106 -0
- package/dist/ui/chat-store.js +13 -2
- package/dist/ui/chat-strings.js +48 -0
- package/dist/ui/cli-picker.js +42 -0
- package/dist/ui/general-location.js +71 -0
- package/dist/ui/native-instance-settings.js +47 -0
- package/dist/ui/native-pane-recovery.js +45 -0
- package/dist/ui/panel-chat.js +63 -32
- package/dist/ui/panel-details.js +2 -1
- package/dist/ui/panel-fleet.js +99 -18
- package/dist/ui/panel-needs.js +154 -3
- package/dist/ui/panel-runtimes.js +231 -0
- package/dist/ui/panel-settings.js +19 -9
- package/dist/ui/panel-windows-agent.js +86 -0
- package/dist/ui/panel-windows-cli.js +143 -0
- package/dist/ui/provider-marks.js +83 -0
- package/dist/ui/runtime-catalog.js +55 -0
- package/dist/ui/settings-catalog.js +37 -10
- package/dist/ui/settings-confirm.js +3 -1
- package/dist/ui/settings-dialogs.js +22 -7
- package/dist/ui/settings-model.js +2 -1
- package/dist/ui/settings-outside.js +176 -0
- package/dist/ui/settings-registry.js +6 -0
- package/dist/ui/settings-strings.js +16 -0
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-route.js +6 -2
- package/dist/ui/shared/app-shell.js +3 -2
- package/dist/ui/shared/app-store.js +1 -0
- package/dist/ui/shared/app-stream.js +3 -1
- package/dist/ui/shared/app.css +301 -0
- package/dist/ui/shared/app.js +4 -0
- package/dist/ui/shared/header-tools.js +6 -4
- package/dist/ui/shared/instance-nav.js +33 -7
- package/dist/ui/shared/instance-switch.js +4 -3
- package/dist/ui/shared/qrcode.module.js +2237 -0
- package/dist/ui/shared/signin.js +39 -5
- package/dist/ui/shared/ui-menu.js +28 -8
- package/dist/ui/shared/vendor/qrcode-generator.LICENSE +27 -0
- package/dist/ui/shared/vendor/vendor.json +19 -2
- package/dist/ui/shared/view-strings.js +8 -0
- package/dist/ui/windows-agents-nav.js +2 -0
- package/dist/ui/windows-cli-catalog.js +79 -0
- package/dist/web-api.d.ts +37 -0
- package/dist/web-api.js +248 -6
- package/dist/web-api.js.map +1 -1
- package/dist/web-chat-history.d.ts +19 -2
- package/dist/web-chat-history.js +72 -3
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-only-fleet.d.ts +20 -0
- package/dist/web-only-fleet.js +21 -0
- package/dist/web-only-fleet.js.map +1 -1
- package/dist/web-remote-access.d.ts +152 -0
- package/dist/web-remote-access.js +368 -0
- package/dist/web-remote-access.js.map +1 -0
- package/dist/web-session.d.ts +7 -0
- package/dist/web-session.js +2 -0
- package/dist/web-session.js.map +1 -1
- package/dist/web-shell-routes.d.ts +4 -1
- package/dist/web-shell-routes.js +7 -2
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/windows-agents.d.ts +124 -0
- package/dist/windows-agents.js +487 -0
- package/dist/windows-agents.js.map +1 -0
- package/dist/windows-cli-api.d.ts +23 -0
- package/dist/windows-cli-api.js +158 -0
- package/dist/windows-cli-api.js.map +1 -0
- package/dist/windows-cli-providers.d.ts +115 -0
- package/dist/windows-cli-providers.js +429 -0
- package/dist/windows-cli-providers.js.map +1 -0
- package/dist/windows-cli-worker.d.ts +58 -0
- package/dist/windows-cli-worker.js +479 -0
- package/dist/windows-cli-worker.js.map +1 -0
- package/dist/windows-cli.d.ts +115 -0
- package/dist/windows-cli.js +402 -0
- package/dist/windows-cli.js.map +1 -0
- package/dist/windows-native-mcp.d.ts +19 -0
- package/dist/windows-native-mcp.js +143 -0
- package/dist/windows-native-mcp.js.map +1 -0
- package/dist/windows-pane-mcp.d.ts +26 -0
- package/dist/windows-pane-mcp.js +187 -0
- package/dist/windows-pane-mcp.js.map +1 -0
- package/package.json +9 -3
- package/templates/runtime-assets/conpty-LICENSE +21 -0
- package/templates/runtime-assets/conpty-NOTICE.md +503 -0
- package/templates/runtime-assets/local-pane-stage.ps1 +101 -0
- package/templates/runtime-assets/runtime-pane-job.ps1 +116 -0
- package/templates/runtime-assets/runtime-pane-private.ps1 +14 -0
- package/templates/runtime-assets/xterm-LICENSE +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-pane-stdio.js","sourceRoot":"","sources":["../src/runtime-pane-stdio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type RuntimePaneLaunch, type RuntimePaneSnapshot } from "./runtime-pane-protocol.js";
|
|
2
|
+
import type { NativePaneOwner } from "./runtime-pane-native.js";
|
|
3
|
+
export interface RuntimePaneRecord {
|
|
4
|
+
launch: RuntimePaneLaunch;
|
|
5
|
+
snapshot: RuntimePaneSnapshot;
|
|
6
|
+
openDigest: string;
|
|
7
|
+
openOperationId: string;
|
|
8
|
+
bootId: string;
|
|
9
|
+
/** OS incarnation observed before launch, distinct from a host process boot. */
|
|
10
|
+
systemBootId?: string;
|
|
11
|
+
/** Local process bookkeeping; never returned as a coordinator PID. */
|
|
12
|
+
pid?: number;
|
|
13
|
+
lastCommand?: {
|
|
14
|
+
id: string;
|
|
15
|
+
digest: string;
|
|
16
|
+
state: "prepared" | "applied";
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare function writeNativePaneExit(owner: NativePaneOwner, launch: RuntimePaneLaunch, pid: number, code: number): void;
|
|
20
|
+
export declare class RuntimePaneStore {
|
|
21
|
+
readonly directory: string;
|
|
22
|
+
private readonly file;
|
|
23
|
+
private ledger;
|
|
24
|
+
constructor(directory: string);
|
|
25
|
+
list(): RuntimePaneRecord[];
|
|
26
|
+
get(id: string): RuntimePaneRecord | undefined;
|
|
27
|
+
put(record: RuntimePaneRecord): void;
|
|
28
|
+
/** Called under the profile lock. A lost runner never replays an open or assumes a PID is gone. */
|
|
29
|
+
recoverInterrupted(systemBootId?: string): void;
|
|
30
|
+
/** Only an exact helper receipt of CLI exit releases a lost runner's reservation. No PID lookup or signal. */
|
|
31
|
+
reconcileExit(id: string): void;
|
|
32
|
+
static digest(value: unknown): string;
|
|
33
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/** A separate per-pane ledger: an uncertain pane consumes only its own machine slot. No input text is stored. */
|
|
2
|
+
import { lstatSync, mkdirSync, readFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { atomicWriteFileSync } from "./atomic-write.js";
|
|
5
|
+
import { runtimeJobDigest } from "./runtime-client-store.js";
|
|
6
|
+
import { validateRuntimePaneLaunch, validateRuntimePaneSnapshot } from "./runtime-pane-protocol.js";
|
|
7
|
+
const MAX_BYTES = 8 * 1024 * 1024;
|
|
8
|
+
const MAX_PANES = 256;
|
|
9
|
+
const MAX_RETIRED = 65_536;
|
|
10
|
+
function writePaneState(path, text) {
|
|
11
|
+
for (let attempt = 0;; attempt++) {
|
|
12
|
+
try {
|
|
13
|
+
atomicWriteFileSync(path, text, { mode: 0o600 });
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (process.platform !== "win32" || attempt >= 4 || !["EPERM", "EACCES", "EBUSY"].includes(error.code ?? ""))
|
|
18
|
+
throw error;
|
|
19
|
+
// Windows scanners briefly hold replacement targets. Same bound as RuntimeClientStore, no dropped writes.
|
|
20
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 10 * (attempt + 1));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function writeNativePaneExit(owner, launch, pid, code) {
|
|
25
|
+
const directory = join(owner.directory, "exits");
|
|
26
|
+
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
27
|
+
if (!lstatSync(directory).isDirectory() || lstatSync(directory).isSymbolicLink())
|
|
28
|
+
throw Error("Unsafe pane exit directory");
|
|
29
|
+
writePaneState(join(directory, `${owner.launchId}.json`), JSON.stringify({ version: 1, launchId: owner.launchId,
|
|
30
|
+
paneId: launch.paneId, agentId: launch.agentId, pid, code }));
|
|
31
|
+
}
|
|
32
|
+
export class RuntimePaneStore {
|
|
33
|
+
directory;
|
|
34
|
+
file;
|
|
35
|
+
ledger;
|
|
36
|
+
constructor(directory) {
|
|
37
|
+
this.directory = directory;
|
|
38
|
+
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
39
|
+
const entry = lstatSync(directory);
|
|
40
|
+
if (!entry.isDirectory() || entry.isSymbolicLink())
|
|
41
|
+
throw Error("Pane state must be a private real directory");
|
|
42
|
+
this.file = join(directory, "panes.json");
|
|
43
|
+
this.ledger = { version: 1, panes: {} };
|
|
44
|
+
try {
|
|
45
|
+
const stat = lstatSync(this.file);
|
|
46
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size > MAX_BYTES)
|
|
47
|
+
throw Error("Invalid pane ledger file");
|
|
48
|
+
const raw = JSON.parse(readFileSync(this.file, "utf8"));
|
|
49
|
+
if (raw?.version !== 1 || !raw.panes || typeof raw.panes !== "object" || Array.isArray(raw.panes) || Object.keys(raw.panes).length > MAX_PANES)
|
|
50
|
+
throw Error("Invalid pane ledger");
|
|
51
|
+
if (raw.retired !== undefined && (!raw.retired || typeof raw.retired !== "object" || Array.isArray(raw.retired)
|
|
52
|
+
|| Object.keys(raw.retired).length > MAX_RETIRED || Object.entries(raw.retired).some(([id, digest]) => !/^[a-f0-9-]{36}$/i.test(id) || typeof digest !== "string" || !/^[a-f0-9]{64}$/.test(digest))))
|
|
53
|
+
throw Error("Invalid pane replay ledger");
|
|
54
|
+
for (const [id, row] of Object.entries(raw.panes)) {
|
|
55
|
+
const launch = validateRuntimePaneLaunch(row?.launch);
|
|
56
|
+
validateRuntimePaneSnapshot(row.snapshot);
|
|
57
|
+
if (launch.launchId !== undefined && launch.launchId !== row.snapshot.launchId || id !== launch.paneId || row.snapshot?.paneId !== id || row.snapshot.agentId !== launch.agentId
|
|
58
|
+
|| row.snapshot.sessionId !== undefined && (launch.sessionId !== undefined && row.snapshot.sessionId !== launch.sessionId
|
|
59
|
+
|| launch.cli === "claude-code" && row.snapshot.sessionId !== (launch.sessionId ?? row.snapshot.launchId))
|
|
60
|
+
|| row.snapshot.instance !== launch.instance || !/^[a-f0-9-]{36}$/i.test(row.snapshot.launchId)
|
|
61
|
+
|| !["starting", "running", "exited", "unknown"].includes(row.snapshot.state)
|
|
62
|
+
|| !Number.isSafeInteger(row.snapshot.commandSequence) || row.snapshot.commandSequence < 0
|
|
63
|
+
|| !/^[a-f0-9]{64}$/.test(row.openDigest) || !/^[a-f0-9-]{36}$/i.test(row.openOperationId)
|
|
64
|
+
|| row.systemBootId !== undefined && (typeof row.systemBootId !== "string" || !/^[a-f0-9]{64}$/.test(row.systemBootId))
|
|
65
|
+
|| typeof row.bootId !== "string" || (row.pid !== undefined && (!Number.isSafeInteger(row.pid) || row.pid < 1))
|
|
66
|
+
|| row.snapshot.noLaunch && (row.pid !== undefined || row.lastCommand !== undefined)
|
|
67
|
+
|| (row.lastCommand && (!/^[a-f0-9-]{36}$/i.test(row.lastCommand.id) || !/^[a-f0-9]{64}$/.test(row.lastCommand.digest)
|
|
68
|
+
|| !["prepared", "applied"].includes(row.lastCommand.state))))
|
|
69
|
+
throw Error("Invalid pane record");
|
|
70
|
+
}
|
|
71
|
+
this.ledger = raw;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (error.code !== "ENOENT")
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
list() { return structuredClone(Object.values(this.ledger.panes)); }
|
|
79
|
+
get(id) { return structuredClone(this.ledger.panes[id]); }
|
|
80
|
+
put(record) {
|
|
81
|
+
if (this.ledger.retired?.[record.launch.paneId])
|
|
82
|
+
throw Error("Pane id was retired; its open must never be replayed");
|
|
83
|
+
const before = structuredClone(this.ledger);
|
|
84
|
+
const previous = this.ledger.panes[record.launch.paneId];
|
|
85
|
+
if (!previous && Object.keys(this.ledger.panes).length >= MAX_PANES) {
|
|
86
|
+
const oldest = Object.values(this.ledger.panes).find(row => row.snapshot.state === "exited");
|
|
87
|
+
if (!oldest || Object.keys(this.ledger.retired ?? {}).length >= MAX_RETIRED)
|
|
88
|
+
throw Error("Pane replay ledger capacity reached");
|
|
89
|
+
(this.ledger.retired ??= {})[oldest.launch.paneId] = oldest.openDigest;
|
|
90
|
+
delete this.ledger.panes[oldest.launch.paneId];
|
|
91
|
+
}
|
|
92
|
+
this.ledger.panes[record.launch.paneId] = structuredClone(record);
|
|
93
|
+
try {
|
|
94
|
+
const text = JSON.stringify(this.ledger);
|
|
95
|
+
if (Buffer.byteLength(text) > MAX_BYTES)
|
|
96
|
+
throw Error("Pane ledger size limit reached");
|
|
97
|
+
writePaneState(this.file, text);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
this.ledger = before;
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** Called under the profile lock. A lost runner never replays an open or assumes a PID is gone. */
|
|
105
|
+
recoverInterrupted(systemBootId) {
|
|
106
|
+
if (systemBootId !== undefined && (typeof systemBootId !== "string" || !/^[a-f0-9]{64}$/.test(systemBootId)))
|
|
107
|
+
throw Error("Invalid current Windows boot proof");
|
|
108
|
+
for (const record of this.list())
|
|
109
|
+
if (record.snapshot.state !== "exited") {
|
|
110
|
+
if (systemBootId && record.systemBootId && systemBootId !== record.systemBootId) {
|
|
111
|
+
record.snapshot.state = "exited";
|
|
112
|
+
record.snapshot.exitProof = "system-reboot";
|
|
113
|
+
delete record.snapshot.exitCode;
|
|
114
|
+
this.put(record);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (record.snapshot.state !== "unknown") {
|
|
118
|
+
record.snapshot.state = "unknown";
|
|
119
|
+
this.put(record);
|
|
120
|
+
}
|
|
121
|
+
this.reconcileExit(record.launch.paneId);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** Only an exact helper receipt of CLI exit releases a lost runner's reservation. No PID lookup or signal. */
|
|
125
|
+
reconcileExit(id) {
|
|
126
|
+
const record = this.get(id);
|
|
127
|
+
if (!record || record.snapshot.state === "exited")
|
|
128
|
+
return;
|
|
129
|
+
const path = join(this.directory, "exits", `${record.snapshot.launchId}.json`);
|
|
130
|
+
try {
|
|
131
|
+
const stat = lstatSync(path);
|
|
132
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size > 4096)
|
|
133
|
+
throw Error("Unsafe pane exit receipt");
|
|
134
|
+
const exit = JSON.parse(readFileSync(path, "utf8"));
|
|
135
|
+
if (exit?.version !== 1 || exit.launchId !== record.snapshot.launchId || exit.paneId !== record.launch.paneId || exit.agentId !== record.launch.agentId
|
|
136
|
+
|| !Number.isSafeInteger(exit.pid) || exit.pid <= 0 || record.pid !== undefined && record.pid !== exit.pid || !Number.isSafeInteger(exit.code) || exit.code < 0)
|
|
137
|
+
throw Error("Pane exit receipt identity differs");
|
|
138
|
+
record.snapshot.state = "exited";
|
|
139
|
+
record.snapshot.exitCode = exit.code;
|
|
140
|
+
this.put(record);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
if (error.code !== "ENOENT")
|
|
144
|
+
throw error;
|
|
145
|
+
const diagnostic = path.replace(/\.json$/, ".error.json");
|
|
146
|
+
try {
|
|
147
|
+
const stat = lstatSync(diagnostic);
|
|
148
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size > 4096)
|
|
149
|
+
throw Error("Unsafe pane exit diagnostic");
|
|
150
|
+
const value = JSON.parse(readFileSync(diagnostic, "utf8"));
|
|
151
|
+
if (value.launchId !== record.snapshot.launchId || value.paneId !== record.launch.paneId || value.agentId !== record.launch.agentId
|
|
152
|
+
|| !["create", "start-helper", "assign", "running", "helper-exit", "tree-exit", "receipt"].includes(value.stage) || !Number.isSafeInteger(value.code))
|
|
153
|
+
throw Error("Invalid pane exit diagnostic");
|
|
154
|
+
throw Error(`Owned Windows pane exit proof failed at ${value.stage} (win32 ${value.code}); the reservation is held`);
|
|
155
|
+
}
|
|
156
|
+
catch (diagnosticError) {
|
|
157
|
+
if (diagnosticError.code !== "ENOENT")
|
|
158
|
+
throw diagnosticError;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
static digest(value) { return runtimeJobDigest(value); }
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=runtime-pane-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-pane-store.js","sourceRoot":"","sources":["../src/runtime-pane-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type PaneTranscriptProvider = "codex" | "claude-code";
|
|
2
|
+
export interface PaneTranscriptCursor {
|
|
3
|
+
sessionId: string;
|
|
4
|
+
offset: number;
|
|
5
|
+
fileId: string | null;
|
|
6
|
+
anchor: string;
|
|
7
|
+
skipping?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface PaneTranscriptWireBatch {
|
|
10
|
+
state: "pending" | "ready";
|
|
11
|
+
cursor: PaneTranscriptCursor;
|
|
12
|
+
/** Complete record bytes, base64-encoded to stay bounded even for heavily escaped JSON. */
|
|
13
|
+
data: string;
|
|
14
|
+
complete: boolean;
|
|
15
|
+
/** Oversized records were skipped; absence and turn completion across this gap are unproven. */
|
|
16
|
+
gap: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface RuntimeTranscriptReference {
|
|
19
|
+
version: 1;
|
|
20
|
+
machineId: string;
|
|
21
|
+
hostBootId: string;
|
|
22
|
+
paneId: string;
|
|
23
|
+
launchId: string;
|
|
24
|
+
agentId: string;
|
|
25
|
+
provider: PaneTranscriptProvider;
|
|
26
|
+
cursor: PaneTranscriptCursor;
|
|
27
|
+
}
|
|
28
|
+
export declare const PANE_TRANSCRIPT_MAX_FILE_BYTES: number;
|
|
29
|
+
export declare const PANE_TRANSCRIPT_EMPTY_ANCHOR: string;
|
|
30
|
+
export declare function validatePaneTranscriptCursor(value: unknown, expectedSessionId?: string): PaneTranscriptCursor;
|
|
31
|
+
export declare function validatePaneTranscriptWireBatch(value: unknown, sessionId: string): PaneTranscriptWireBatch;
|
|
32
|
+
export declare function validateRuntimeTranscriptReference(value: unknown): RuntimeTranscriptReference;
|
|
33
|
+
/** A cursor may advance; its machine, process generation and pinned conversation may not. */
|
|
34
|
+
export declare function sameRuntimeTranscriptScope(a: RuntimeTranscriptReference, b: RuntimeTranscriptReference): boolean;
|
|
35
|
+
/** Runner-owned baseline jumps over old content while carrying only a bounded turn-state proof. */
|
|
36
|
+
export interface PaneTranscriptBaseline {
|
|
37
|
+
state: "pending" | "ready";
|
|
38
|
+
cursor: PaneTranscriptCursor;
|
|
39
|
+
complete: boolean;
|
|
40
|
+
turnKnown: boolean;
|
|
41
|
+
openTurn: string | null;
|
|
42
|
+
}
|
|
43
|
+
export declare function validatePaneTranscriptBaseline(value: unknown, sessionId: string): PaneTranscriptBaseline;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/** Closed remote transcript identities. Never put a runner path in a coordinator checkpoint. */
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { validNativeSessionId } from "./windows-cli-providers.js";
|
|
4
|
+
export const PANE_TRANSCRIPT_MAX_FILE_BYTES = 16 * 1024 * 1024 * 1024;
|
|
5
|
+
export const PANE_TRANSCRIPT_EMPTY_ANCHOR = createHash("sha256").update("").digest("hex");
|
|
6
|
+
const uuid = (value) => typeof value === "string" && /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(value);
|
|
7
|
+
function closed(value, keys) {
|
|
8
|
+
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some(key => !keys.includes(key)))
|
|
9
|
+
throw Error("Invalid runtime transcript identity");
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
export function validatePaneTranscriptCursor(value, expectedSessionId) {
|
|
13
|
+
const v = closed(value, ["sessionId", "offset", "fileId", "anchor", "skipping"]);
|
|
14
|
+
if (!validNativeSessionId("codex", v.sessionId) || expectedSessionId !== undefined && v.sessionId !== expectedSessionId
|
|
15
|
+
|| !Number.isSafeInteger(v.offset) || v.offset < 0 || v.offset > PANE_TRANSCRIPT_MAX_FILE_BYTES
|
|
16
|
+
|| v.fileId !== null && (typeof v.fileId !== "string" || !/^[a-f0-9]{64}$/.test(v.fileId))
|
|
17
|
+
|| typeof v.anchor !== "string" || !/^[a-f0-9]{64}$/.test(v.anchor)
|
|
18
|
+
|| v.skipping !== undefined && typeof v.skipping !== "boolean"
|
|
19
|
+
|| v.fileId === null && (v.offset !== 0 || v.anchor !== PANE_TRANSCRIPT_EMPTY_ANCHOR || v.skipping === true))
|
|
20
|
+
throw Error("Invalid pane transcript cursor");
|
|
21
|
+
return { sessionId: v.sessionId, offset: v.offset, fileId: v.fileId, anchor: v.anchor,
|
|
22
|
+
...(v.skipping ? { skipping: true } : {}) };
|
|
23
|
+
}
|
|
24
|
+
export function validatePaneTranscriptWireBatch(value, sessionId) {
|
|
25
|
+
const v = closed(value, ["state", "cursor", "data", "complete", "gap"]), cursor = validatePaneTranscriptCursor(v.cursor, sessionId);
|
|
26
|
+
if (v.state !== "pending" && v.state !== "ready" || typeof v.data !== "string" || v.data.length > 220_000
|
|
27
|
+
|| v.data.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(v.data)
|
|
28
|
+
|| Buffer.from(v.data, "base64").toString("base64") !== v.data || typeof v.complete !== "boolean" || typeof v.gap !== "boolean"
|
|
29
|
+
|| v.state === "pending" && (v.data !== "" || v.complete || v.gap) || v.state === "ready" && cursor.fileId === null
|
|
30
|
+
|| v.state === "ready" && cursor.skipping && (!v.gap || v.complete))
|
|
31
|
+
throw Error("Invalid pane transcript response");
|
|
32
|
+
return { state: v.state, cursor, data: v.data, complete: v.complete, gap: v.gap };
|
|
33
|
+
}
|
|
34
|
+
export function validateRuntimeTranscriptReference(value) {
|
|
35
|
+
const v = closed(value, ["version", "machineId", "hostBootId", "paneId", "launchId", "agentId", "provider", "cursor"]);
|
|
36
|
+
// "local" is the coordinator's own Windows bridge, never a remotely enrolled machine id.
|
|
37
|
+
if (v.version !== 1 || v.machineId !== "local" && !uuid(v.machineId) || !uuid(v.hostBootId) || !uuid(v.paneId) || !uuid(v.launchId)
|
|
38
|
+
|| !uuid(v.agentId) || v.provider !== "codex" && v.provider !== "claude-code")
|
|
39
|
+
throw Error("Invalid runtime transcript identity");
|
|
40
|
+
return { version: 1, machineId: v.machineId, hostBootId: v.hostBootId, paneId: v.paneId,
|
|
41
|
+
launchId: v.launchId, agentId: v.agentId, provider: v.provider, cursor: validatePaneTranscriptCursor(v.cursor) };
|
|
42
|
+
}
|
|
43
|
+
/** A cursor may advance; its machine, process generation and pinned conversation may not. */
|
|
44
|
+
export function sameRuntimeTranscriptScope(a, b) {
|
|
45
|
+
return a.version === b.version && a.machineId === b.machineId && a.hostBootId === b.hostBootId
|
|
46
|
+
&& a.paneId === b.paneId && a.launchId === b.launchId && a.agentId === b.agentId
|
|
47
|
+
&& a.provider === b.provider && a.cursor.sessionId === b.cursor.sessionId;
|
|
48
|
+
}
|
|
49
|
+
export function validatePaneTranscriptBaseline(value, sessionId) {
|
|
50
|
+
const v = closed(value, ["state", "cursor", "complete", "turnKnown", "openTurn"]), cursor = validatePaneTranscriptCursor(v.cursor, sessionId);
|
|
51
|
+
if (v.state !== "pending" && v.state !== "ready" || typeof v.complete !== "boolean" || typeof v.turnKnown !== "boolean"
|
|
52
|
+
|| v.openTurn !== null && (typeof v.openTurn !== "string" || !v.openTurn || v.openTurn.length > 256 || /[\r\n\0]/.test(v.openTurn))
|
|
53
|
+
|| !v.turnKnown && v.openTurn !== null || v.state === "ready" && cursor.fileId === null
|
|
54
|
+
|| v.state === "pending" && (v.complete || v.turnKnown || v.openTurn !== null) || cursor.skipping)
|
|
55
|
+
throw Error("Invalid native transcript baseline");
|
|
56
|
+
return { state: v.state, cursor, complete: v.complete, turnKnown: v.turnKnown, openTurn: v.openTurn };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=runtime-pane-transcript-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-pane-transcript-protocol.js","sourceRoot":"","sources":["../src/runtime-pane-transcript-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { PaneTranscriptBaseline } from "./runtime-pane-transcript-protocol.js";
|
|
2
|
+
import { type PaneTranscriptCursor, type PaneTranscriptProvider, type PaneTranscriptWireBatch } from "./runtime-pane-transcript-protocol.js";
|
|
3
|
+
export { validatePaneTranscriptCursor, type PaneTranscriptCursor, type PaneTranscriptProvider } from "./runtime-pane-transcript-protocol.js";
|
|
4
|
+
export interface PaneTranscriptBatch extends PaneTranscriptWireBatch {
|
|
5
|
+
/** Complete UTF-8 JSONL records only. A partial/oversized record never becomes a turn boundary. */
|
|
6
|
+
lines: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface PaneTranscriptRoots {
|
|
9
|
+
codex: string;
|
|
10
|
+
claude: string;
|
|
11
|
+
}
|
|
12
|
+
/** Root configuration comes only from the runner's allowed provider environment, never a pane RPC. */
|
|
13
|
+
export declare function nativePaneTranscriptRoots(env?: NodeJS.ProcessEnv, home?: string): PaneTranscriptRoots;
|
|
14
|
+
/** Same algorithm as Claude's project directory, evaluated on the runner's canonical native cwd. */
|
|
15
|
+
export declare function nativeClaudeProjectKey(cwd: string): string;
|
|
16
|
+
export type NativeClaudeSessionState = "absent" | "saved" | "unknown";
|
|
17
|
+
/** Positive absence is a read-only runner proof, never inferred from a failed resume or pending transcript read.
|
|
18
|
+
* Key derivation is tied to the audited Claude launch version; re-check it with each Claude version audit. */
|
|
19
|
+
export declare function nativeClaudeSessionState(cwd: string, sessionId: string, current?: () => boolean, roots?: PaneTranscriptRoots): Promise<NativeClaudeSessionState>;
|
|
20
|
+
/** Complete, bounded absence proof, distinct from the transcript reader's incremental "pending" result.
|
|
21
|
+
* A matching archive, stale metadata, incomplete walk, WAL, unsafe file or lost lease is unknown, never absence. */
|
|
22
|
+
export declare function nativeCodexSessionState(cwd: string, sessionId: string, current?: () => boolean, roots?: PaneTranscriptRoots): Promise<NativeClaudeSessionState>;
|
|
23
|
+
export declare class NativePaneTranscriptReader {
|
|
24
|
+
readonly provider: PaneTranscriptProvider;
|
|
25
|
+
readonly cwd: string;
|
|
26
|
+
readonly sessionId: string;
|
|
27
|
+
private readonly roots;
|
|
28
|
+
private busy;
|
|
29
|
+
private pinnedFile;
|
|
30
|
+
private metadataBytes;
|
|
31
|
+
private discovery;
|
|
32
|
+
private discoveryMatches;
|
|
33
|
+
private canonicalCwd;
|
|
34
|
+
private stopped;
|
|
35
|
+
readonly initial: PaneTranscriptCursor;
|
|
36
|
+
constructor(provider: PaneTranscriptProvider, cwd: string, sessionId: string, roots?: PaneTranscriptRoots);
|
|
37
|
+
/** At most one filesystem operation remains in flight even if a transport deadline abandons its result. */
|
|
38
|
+
read(cursor?: PaneTranscriptCursor, current?: () => boolean): Promise<PaneTranscriptBatch>;
|
|
39
|
+
/** At most 4 MiB of tail content, independent of history size; no historical text leaves the runner. */
|
|
40
|
+
baseline(cursor?: PaneTranscriptCursor, current?: () => boolean): Promise<PaneTranscriptBaseline>;
|
|
41
|
+
close(): Promise<void>;
|
|
42
|
+
private candidates;
|
|
43
|
+
private locate;
|
|
44
|
+
private readOwned;
|
|
45
|
+
}
|