@songsid/agend 2.3.4-beta.6 → 2.3.5-alpha.2
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/backend/claude-code.d.ts +15 -12
- package/dist/backend/claude-code.js +137 -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 +1271 -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 +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +59 -0
- 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 +62 -5
- package/dist/daemon.js +749 -267
- 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 +125 -2
- package/dist/fleet-manager.js +1157 -27
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-windows-runtime.d.ts +92 -0
- package/dist/fleet-windows-runtime.js +373 -0
- package/dist/fleet-windows-runtime.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 +20 -3
- package/dist/instance-lifecycle.js +358 -156
- package/dist/instance-lifecycle.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 +34 -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 +227 -0
- package/dist/native-pane-lifecycle.js.map +1 -0
- package/dist/native-pane-manager.d.ts +58 -0
- package/dist/native-pane-manager.js +563 -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 +1 -0
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +12 -1
- package/dist/needs-you.js +8 -1
- 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 +107 -0
- package/dist/pane-port.js +2 -0
- package/dist/pane-port.js.map +1 -0
- 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 +147 -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-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 +43 -0
- package/dist/runtime-pane-host.js +403 -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 +43 -0
- package/dist/runtime-pane-mcp.js +137 -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 +134 -0
- package/dist/runtime-pane-port.js +537 -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 +169 -0
- package/dist/runtime-pane-protocol.js +189 -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.js +58 -0
- package/dist/settings-api.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 +15 -1
- package/dist/settings-confirmation.js +46 -9
- package/dist/settings-confirmation.js.map +1 -1
- package/dist/settings-effect.js +23 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.js +11 -2
- package/dist/settings-http-confirmation.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/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 +21 -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/native-instance-settings.js +47 -0
- package/dist/ui/native-pane-recovery.js +45 -0
- package/dist/ui/panel-chat.js +61 -32
- package/dist/ui/panel-details.js +2 -1
- package/dist/ui/panel-fleet.js +99 -18
- package/dist/ui/panel-needs.js +152 -3
- package/dist/ui/panel-runtimes.js +231 -0
- package/dist/ui/panel-settings.js +14 -8
- 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 +14 -5
- package/dist/ui/settings-registry.js +5 -0
- package/dist/ui/settings-strings.js +14 -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 +20 -4
- package/dist/ui/shared/instance-switch.js +4 -3
- package/dist/ui/shared/ui-menu.js +28 -8
- package/dist/ui/shared/view-strings.js +6 -0
- package/dist/ui/windows-agents-nav.js +2 -0
- package/dist/ui/windows-cli-catalog.js +79 -0
- package/dist/update-check.d.ts +8 -2
- package/dist/update-check.js +5 -2
- package/dist/update-check.js.map +1 -1
- package/dist/web-api.d.ts +25 -0
- package/dist/web-api.js +171 -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-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 +112 -0
- package/dist/windows-agents.js +463 -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,65 @@
|
|
|
1
|
+
import type { CliBackend } from "./backend/types.js";
|
|
2
|
+
import type { Pane, PaneHost, PaneObservation } from "./pane-port.js";
|
|
3
|
+
import { RuntimePanePort, RuntimePaneHostPort, RuntimePaneObservation, type PaneEndpoint } from "./runtime-pane-port.js";
|
|
4
|
+
import { RuntimeTranscriptDeltaReader } from "./runtime-transcript-delta-reader.js";
|
|
5
|
+
import { type RuntimeTranscriptReference } from "./runtime-pane-transcript-protocol.js";
|
|
6
|
+
import type { TranscriptSource } from "./transcript-sources.js";
|
|
7
|
+
import type { TranscriptNeedle } from "./transcript-needles.js";
|
|
8
|
+
import type { RuntimePaneLaunch, RuntimePaneSnapshot } from "./runtime-pane-protocol.js";
|
|
9
|
+
export interface NativePaneAcquisition {
|
|
10
|
+
pane: Pane;
|
|
11
|
+
source: TranscriptSource;
|
|
12
|
+
disposition: "reattached" | "resumed" | "fresh";
|
|
13
|
+
}
|
|
14
|
+
export interface NativePaneLifecycle {
|
|
15
|
+
bindDaemon?(daemon: import("./daemon.js").Daemon): void;
|
|
16
|
+
readonly host: PaneHost;
|
|
17
|
+
readonly observation: PaneObservation;
|
|
18
|
+
readonly backend: CliBackend;
|
|
19
|
+
acquire(assertCurrent: () => void): Promise<NativePaneAcquisition>;
|
|
20
|
+
release(intent: "detach" | "close"): Promise<void>;
|
|
21
|
+
proofReader(reference: RuntimeTranscriptReference, needle: TranscriptNeedle): RuntimeTranscriptDeltaReader;
|
|
22
|
+
current(reference?: RuntimeTranscriptReference): boolean;
|
|
23
|
+
mcpProof(): "alive" | "dead" | "unknown";
|
|
24
|
+
checkpointSession(): void;
|
|
25
|
+
snapshot?(): RuntimePaneSnapshot | null;
|
|
26
|
+
}
|
|
27
|
+
export interface NativePaneLifecycleOptions {
|
|
28
|
+
endpoint: PaneEndpoint;
|
|
29
|
+
receiptFile: string;
|
|
30
|
+
launch: RuntimePaneLaunch;
|
|
31
|
+
/** Codex fresh intent keeps its previous pin until this launch reports an identity. */
|
|
32
|
+
freshPrevious?: RuntimePaneSnapshot;
|
|
33
|
+
/** Checks switches, exact audited provider version, configuration, and the current daemon admission. */
|
|
34
|
+
admit(): void;
|
|
35
|
+
/** Must reserve the legacy profile activeId before the first remote spawn. */
|
|
36
|
+
reserve(launchId: string): void;
|
|
37
|
+
pin(launchId: string, sessionId: string): void;
|
|
38
|
+
exited(snapshot: RuntimePaneSnapshot): void;
|
|
39
|
+
mcpProof(): "alive" | "dead" | "unknown";
|
|
40
|
+
releaseAuthority(): void;
|
|
41
|
+
acquired?(): void | Promise<void>;
|
|
42
|
+
bindDaemon?(daemon: import("./daemon.js").Daemon): void;
|
|
43
|
+
}
|
|
44
|
+
export declare class RuntimeNativePaneLifecycle implements NativePaneLifecycle {
|
|
45
|
+
private options;
|
|
46
|
+
readonly port: RuntimePanePort;
|
|
47
|
+
readonly host: RuntimePaneHostPort;
|
|
48
|
+
readonly observation: RuntimePaneObservation;
|
|
49
|
+
readonly backend: CliBackend;
|
|
50
|
+
private detached;
|
|
51
|
+
private releasedExit;
|
|
52
|
+
private source;
|
|
53
|
+
private readonly transcriptPort;
|
|
54
|
+
constructor(options: NativePaneLifecycleOptions);
|
|
55
|
+
bindDaemon(daemon: import("./daemon.js").Daemon): void;
|
|
56
|
+
current(reference?: RuntimeTranscriptReference): boolean;
|
|
57
|
+
snapshot(): RuntimePaneSnapshot | null;
|
|
58
|
+
mcpProof(): "alive" | "dead" | "unknown";
|
|
59
|
+
checkpointSession(): void;
|
|
60
|
+
private ready;
|
|
61
|
+
private codexIdentity;
|
|
62
|
+
acquire(assertCurrent: () => void): Promise<NativePaneAcquisition>;
|
|
63
|
+
proofReader(reference: RuntimeTranscriptReference, needle: TranscriptNeedle): RuntimeTranscriptDeltaReader;
|
|
64
|
+
release(intent: "detach" | "close"): Promise<void>;
|
|
65
|
+
}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/** Optional native adapter for the ordinary Daemon. The runner retains processes across coordinator detach. */
|
|
2
|
+
import { NativePaneRecoveryError } from "./native-pane-recovery.js";
|
|
3
|
+
import { createNativePaneBackend } from "./backend/native-pane.js";
|
|
4
|
+
import { RuntimePanePort, RuntimePaneHostPort, RuntimePaneObservation } from "./runtime-pane-port.js";
|
|
5
|
+
import { RuntimeTranscriptSource } from "./runtime-transcript-source.js";
|
|
6
|
+
import { RuntimeTranscriptDeltaReader } from "./runtime-transcript-delta-reader.js";
|
|
7
|
+
import { PANE_TRANSCRIPT_EMPTY_ANCHOR } from "./runtime-pane-transcript-protocol.js";
|
|
8
|
+
export class RuntimeNativePaneLifecycle {
|
|
9
|
+
options;
|
|
10
|
+
port;
|
|
11
|
+
host;
|
|
12
|
+
observation;
|
|
13
|
+
backend;
|
|
14
|
+
detached = false;
|
|
15
|
+
releasedExit = false;
|
|
16
|
+
source;
|
|
17
|
+
transcriptPort;
|
|
18
|
+
constructor(options) {
|
|
19
|
+
this.options = options;
|
|
20
|
+
if (!options.launch.launchId)
|
|
21
|
+
throw Error("Native daemon requires a reserved launch identity");
|
|
22
|
+
this.port = new RuntimePanePort(options.endpoint, options.receiptFile, options.launch, screen => {
|
|
23
|
+
const backend = this.backend;
|
|
24
|
+
if ([...(backend.getStartupDialogs?.() ?? []), ...(backend.getRuntimeDialogs?.() ?? [])].some(dialog => dialog.pattern.test(screen) && (!dialog.isActive || dialog.isActive(screen))))
|
|
25
|
+
return false;
|
|
26
|
+
// Composer-only callers retain the structural reader. Daemon delivery and explicit human answers carry separate proofs.
|
|
27
|
+
return backend.readInputRow ? backend.readInputRow(screen) != null
|
|
28
|
+
: backend.isDeliveryInputReadyPane?.(screen) === true || backend.ownsComposerRows?.(screen) === true;
|
|
29
|
+
});
|
|
30
|
+
this.transcriptPort = { isTranscriptObservationCurrent: reference => this.current(reference),
|
|
31
|
+
readTranscriptBaseline: (cursor, current) => this.port.readTranscriptBaseline(cursor, () => !this.detached && (current?.() ?? true)),
|
|
32
|
+
readTranscript: (cursor, current) => this.port.readTranscript(cursor, () => !this.detached && (current?.() ?? true)) };
|
|
33
|
+
this.host = new RuntimePaneHostPort(this.port, options.endpoint);
|
|
34
|
+
this.observation = new RuntimePaneObservation(options.endpoint, () => this.port.ownedSnapshot());
|
|
35
|
+
this.backend = createNativePaneBackend(options.launch.cli, () => ({ sessionId: this.port.ownedSnapshot()?.sessionId ?? null,
|
|
36
|
+
cwd: options.launch.cwd, contextPercentage: null, statusLineItems: ["context-remaining"], resumes: !!options.launch.sessionId || !!this.port.ownedSnapshot()?.sessionId }));
|
|
37
|
+
}
|
|
38
|
+
bindDaemon(daemon) { this.options.bindDaemon?.(daemon); }
|
|
39
|
+
current(reference) {
|
|
40
|
+
if (this.detached || !this.options.endpoint.online())
|
|
41
|
+
return false;
|
|
42
|
+
if (reference)
|
|
43
|
+
return this.port.isTranscriptObservationCurrent(reference);
|
|
44
|
+
return this.port.observedSnapshot()?.state === "running";
|
|
45
|
+
}
|
|
46
|
+
snapshot() { return this.port.observedSnapshot(); }
|
|
47
|
+
mcpProof() { return this.current() ? this.options.mcpProof() : "unknown"; }
|
|
48
|
+
checkpointSession() {
|
|
49
|
+
const pane = this.port.ownedSnapshot();
|
|
50
|
+
if (pane?.sessionId && !this.releasedExit)
|
|
51
|
+
this.options.pin(pane.launchId, pane.sessionId);
|
|
52
|
+
}
|
|
53
|
+
ready(text) {
|
|
54
|
+
const backend = this.backend;
|
|
55
|
+
return (backend.isDeliveryInputReadyPane?.(text) ?? backend.getReadyPattern().test(text)) && !backend.getBusyPattern?.()?.test(text)
|
|
56
|
+
&& ![...(backend.getStartupDialogs?.() ?? []), ...(backend.getRuntimeDialogs?.() ?? [])].some(dialog => dialog.pattern.test(text) && (!dialog.isActive || dialog.isActive(text)));
|
|
57
|
+
}
|
|
58
|
+
async codexIdentity(assertCurrent, reattached) {
|
|
59
|
+
const expected = this.port.ownedSnapshot()?.sessionId;
|
|
60
|
+
// A reattached live pane may be busy. Its durable pin is already tied to that same launch: never type /status into it.
|
|
61
|
+
if (reattached) {
|
|
62
|
+
if (expected)
|
|
63
|
+
return;
|
|
64
|
+
throw Error("Reattached native conversation is unconfirmed; retained status needs inspection, no startup input was sent");
|
|
65
|
+
}
|
|
66
|
+
// Output can invalidate a capture while the VT parser is settling. Retrying a read cannot replay input;
|
|
67
|
+
// admission, the exact pane owner and the original wall-clock deadline still apply to every attempt.
|
|
68
|
+
const observe = async (deadline, history = false) => {
|
|
69
|
+
for (;;) {
|
|
70
|
+
assertCurrent();
|
|
71
|
+
this.options.admit();
|
|
72
|
+
try {
|
|
73
|
+
const text = history ? await this.port.capturePaneJoined(200) : await this.port.capturePane();
|
|
74
|
+
assertCurrent();
|
|
75
|
+
return text;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
assertCurrent();
|
|
79
|
+
this.options.admit();
|
|
80
|
+
if (!this.current() || performance.now() >= deadline)
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
await new Promise(resolve => setTimeout(resolve, 250));
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
let text = "", until = performance.now() + 120_000;
|
|
87
|
+
while (true) {
|
|
88
|
+
text = await observe(until);
|
|
89
|
+
if (this.ready(text))
|
|
90
|
+
break;
|
|
91
|
+
if ((await this.port.getPaneStatus())?.alive === false)
|
|
92
|
+
throw Error("Native Codex composer needs attention before conversation verification");
|
|
93
|
+
if (performance.now() >= until)
|
|
94
|
+
throw Error("Native Codex composer needs attention before conversation verification");
|
|
95
|
+
await new Promise(resolve => setTimeout(resolve, 250));
|
|
96
|
+
}
|
|
97
|
+
const readId = (pane) => {
|
|
98
|
+
const matches = [...pane.matchAll(/\bSession:\s*([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})\b/gi)];
|
|
99
|
+
return matches.length === 1 ? matches[0][1] : null;
|
|
100
|
+
};
|
|
101
|
+
let id = null;
|
|
102
|
+
if (await this.port.beginStatusRequest()) {
|
|
103
|
+
assertCurrent();
|
|
104
|
+
// This fixed CLI command must be typed: a bracketed slash-command paste is literal prompt text in Codex.
|
|
105
|
+
// Only a positive zero-input refusal admits another attempt; a lost response keeps the durable one-shot hold.
|
|
106
|
+
const send = async (write, message) => {
|
|
107
|
+
for (let attempt = 0; attempt < 4; attempt++) {
|
|
108
|
+
assertCurrent();
|
|
109
|
+
this.options.admit();
|
|
110
|
+
if (!this.current())
|
|
111
|
+
throw Error(message);
|
|
112
|
+
if (await write())
|
|
113
|
+
return;
|
|
114
|
+
if (!this.port.lastInputWasNotSent() || attempt === 3)
|
|
115
|
+
throw Error(message);
|
|
116
|
+
await new Promise(resolve => setTimeout(resolve, 250));
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
await send(() => this.port.sendKeys("/status"), "Native status input is unconfirmed");
|
|
120
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
121
|
+
assertCurrent();
|
|
122
|
+
this.options.admit();
|
|
123
|
+
await send(async () => {
|
|
124
|
+
// The typed /status may still be painting: re-read the same pane (typing nothing) until it shows the exact
|
|
125
|
+
// composer or the bound expires. Only a positively verified screen reaches Enter.
|
|
126
|
+
const deadline = performance.now() + 15_000;
|
|
127
|
+
for (;;) {
|
|
128
|
+
const screen = await observe(deadline);
|
|
129
|
+
assertCurrent();
|
|
130
|
+
this.options.admit();
|
|
131
|
+
if (this.ready(screen) && /^[ \t]*[>›][ \t]*\/status[ \t]*$/m.test(screen)) {
|
|
132
|
+
return this.port.sendSpecialKey("Enter", undefined, { kind: "composer", screen });
|
|
133
|
+
}
|
|
134
|
+
if (performance.now() >= deadline)
|
|
135
|
+
throw Error("Native status composer changed; no Enter was sent");
|
|
136
|
+
await new Promise(resolve => setTimeout(resolve, 250));
|
|
137
|
+
}
|
|
138
|
+
}, "Native status submission is unconfirmed");
|
|
139
|
+
until = performance.now() + 15_000;
|
|
140
|
+
while (true) {
|
|
141
|
+
text = await observe(until, true);
|
|
142
|
+
id = readId(text);
|
|
143
|
+
if (id && this.ready(text))
|
|
144
|
+
break;
|
|
145
|
+
if (performance.now() >= until)
|
|
146
|
+
throw Error("Native session status identity was not confirmed; no second Enter was sent");
|
|
147
|
+
await new Promise(resolve => setTimeout(resolve, 250));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
id = readId(await observe(performance.now() + 15_000, true));
|
|
152
|
+
assertCurrent();
|
|
153
|
+
if (!id)
|
|
154
|
+
throw Error("Native session status request is retained; inspect its outcome before another input");
|
|
155
|
+
}
|
|
156
|
+
if (expected && id !== expected)
|
|
157
|
+
throw Error("Native resume displayed a different conversation; its original pin is retained");
|
|
158
|
+
await this.port.bindConversation(id);
|
|
159
|
+
assertCurrent();
|
|
160
|
+
}
|
|
161
|
+
async acquire(assertCurrent) {
|
|
162
|
+
if (this.detached)
|
|
163
|
+
throw Error("Native daemon lease was detached");
|
|
164
|
+
assertCurrent();
|
|
165
|
+
this.options.admit();
|
|
166
|
+
this.options.reserve(this.options.launch.launchId);
|
|
167
|
+
const opened = await this.port.open();
|
|
168
|
+
assertCurrent();
|
|
169
|
+
this.options.admit();
|
|
170
|
+
this.observation.start();
|
|
171
|
+
await this.observation.registerWindow(opened.windowId);
|
|
172
|
+
assertCurrent();
|
|
173
|
+
if (this.options.launch.cli === "codex") {
|
|
174
|
+
try {
|
|
175
|
+
await this.codexIdentity(assertCurrent, opened.reattached);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
assertCurrent();
|
|
179
|
+
this.options.admit();
|
|
180
|
+
if (!this.port.ownedSnapshot()?.sessionId && (this.options.freshPrevious || this.port.ownedSnapshot()?.state === "exited")) {
|
|
181
|
+
// End only this exact owned attempt before exposing an admin decision. Unknown close evidence keeps its slot.
|
|
182
|
+
await this.release("close");
|
|
183
|
+
throw new NativePaneRecoveryError({ kind: "session-unconfirmed", provider: "codex", launchId: this.options.launch.launchId, sessionId: this.options.freshPrevious?.sessionId });
|
|
184
|
+
}
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
this.checkpointSession();
|
|
189
|
+
assertCurrent();
|
|
190
|
+
const pane = this.port.ownedSnapshot();
|
|
191
|
+
if (!pane?.sessionId)
|
|
192
|
+
throw Error("Native conversation is not pinned");
|
|
193
|
+
this.source ??= new RuntimeTranscriptSource(this.transcriptPort, this.port.runtimeTranscriptReference({ sessionId: pane.sessionId, offset: 0, fileId: null, anchor: PANE_TRANSCRIPT_EMPTY_ANCHOR }), !this.options.launch.sessionId);
|
|
194
|
+
await this.options.acquired?.();
|
|
195
|
+
assertCurrent();
|
|
196
|
+
return { pane: this.port, source: this.source, disposition: opened.reattached ? "reattached" : this.options.launch.sessionId ? "resumed" : "fresh" };
|
|
197
|
+
}
|
|
198
|
+
proofReader(reference, needle) {
|
|
199
|
+
if (!this.current(reference))
|
|
200
|
+
throw Error("Native delivery transcript owner is unavailable");
|
|
201
|
+
return new RuntimeTranscriptDeltaReader(this.transcriptPort, reference, needle);
|
|
202
|
+
}
|
|
203
|
+
async release(intent) {
|
|
204
|
+
if (this.detached) {
|
|
205
|
+
if (intent === "close" && !this.releasedExit)
|
|
206
|
+
throw Error("Native close lease was detached; refresh its current owner first");
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
// Detaching revokes coordinator tool authority but preserves the runner, its helper and the profile reservation.
|
|
210
|
+
if (intent === "close") {
|
|
211
|
+
const pane = this.port.ownedSnapshot() ?? await this.port.inspectRetained();
|
|
212
|
+
if (pane.state !== "exited" && !await this.port.killWindowConfirmed())
|
|
213
|
+
throw Error("Native pane exit is unconfirmed; its reservation is retained");
|
|
214
|
+
const exited = this.port.ownedSnapshot();
|
|
215
|
+
if (exited && !this.releasedExit) {
|
|
216
|
+
this.options.exited(exited);
|
|
217
|
+
this.releasedExit = true;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
this.detached = true;
|
|
221
|
+
this.port.closeOutput();
|
|
222
|
+
this.source?.close();
|
|
223
|
+
this.observation.stop();
|
|
224
|
+
this.options.releaseAuthority();
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=native-pane-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-pane-lifecycle.js","sourceRoot":"","sources":["../src/native-pane-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { RuntimeNativePaneLifecycle } from "./native-pane-lifecycle.js";
|
|
2
|
+
import { type PaneMcpBody } from "./runtime-pane-mcp-protocol.js";
|
|
3
|
+
import type { PaneEndpoint } from "./runtime-pane-port.js";
|
|
4
|
+
import type { WindowsAgent, WindowsAgents } from "./windows-agents.js";
|
|
5
|
+
import type { InstanceConfig } from "./types.js";
|
|
6
|
+
import type { Daemon } from "./daemon.js";
|
|
7
|
+
export interface NativeMachineEndpoint extends PaneEndpoint {
|
|
8
|
+
epoch(): string | null;
|
|
9
|
+
version(provider: string): string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface NativePaneManagerOptions {
|
|
12
|
+
home: string;
|
|
13
|
+
store: WindowsAgents;
|
|
14
|
+
config(name: string): InstanceConfig | undefined;
|
|
15
|
+
endpoint(agent: WindowsAgent, cleanup?: boolean): Promise<NativeMachineEndpoint>;
|
|
16
|
+
admit(name: string, config: InstanceConfig): void;
|
|
17
|
+
instructions(name: string, config: InstanceConfig): string;
|
|
18
|
+
menu(name: string): Array<{
|
|
19
|
+
name: string;
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
}>;
|
|
22
|
+
allowed(name: string, tool: string, args: Record<string, unknown>): boolean;
|
|
23
|
+
published(name: string, daemon: Daemon): boolean;
|
|
24
|
+
freshNotice?(name: string, provider?: "codex" | "claude-code"): Promise<void> | void;
|
|
25
|
+
invoke(daemon: Daemon, input: {
|
|
26
|
+
tool: string;
|
|
27
|
+
args: Record<string, unknown>;
|
|
28
|
+
operationId: string;
|
|
29
|
+
}, current: () => boolean, name: string): Promise<{
|
|
30
|
+
result: unknown;
|
|
31
|
+
error?: string;
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
export declare class NativePaneManager {
|
|
35
|
+
private options;
|
|
36
|
+
private bindings;
|
|
37
|
+
private preparing;
|
|
38
|
+
constructor(options: NativePaneManagerOptions);
|
|
39
|
+
private directory;
|
|
40
|
+
private load;
|
|
41
|
+
private save;
|
|
42
|
+
private configurationHash;
|
|
43
|
+
private newManifest;
|
|
44
|
+
private freshIntent;
|
|
45
|
+
private bindFreshCodex;
|
|
46
|
+
private recordExit;
|
|
47
|
+
private sessionState;
|
|
48
|
+
/** Prepare metadata and helper authority first; acquire() alone may reserve and spawn. */
|
|
49
|
+
prepare(name: string, config: InstanceConfig, assertCurrent: () => void): Promise<RuntimeNativePaneLifecycle>;
|
|
50
|
+
private prepareOwned;
|
|
51
|
+
/** Administrator chooses a new conversation for this exact stopped, held pin. No provider files are changed. */
|
|
52
|
+
startFresh(name: string, config: InstanceConfig, launchId: string, sessionId: string | null, assertCurrent: () => void): Promise<void>;
|
|
53
|
+
/** Explicit admin attestation, bound to the held launch; no keys, tool calls or process signals. */
|
|
54
|
+
recover(name: string, config: InstanceConfig, launchId: string, confirmedStopped: boolean, assertCurrent: () => void): Promise<void>;
|
|
55
|
+
/** Close only the retained exact launch. Offline, missing, or unknown exit remains reserved. */
|
|
56
|
+
closeRetained(name: string, config: InstanceConfig, assertCurrent: () => void): Promise<void>;
|
|
57
|
+
handle(machineId: string, raw: PaneMcpBody, transport: () => boolean): Promise<unknown>;
|
|
58
|
+
}
|