mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 17:37:40 +00:00
refactor: place terminal and workspace contracts with concrete owners (#38061)
This commit is contained in:
@@ -866,7 +866,7 @@ jobs:
|
||||
src/shared/fish-query-reply-child-stdin.node-pty.test.ts \
|
||||
src/shared/fish-wsl-cwd-report.node-pty.test.ts \
|
||||
src/main/wsl/filesystem/wsl-sh-cwd-report.node-pty.test.ts \
|
||||
src/shared/pty-reply-echo-shapes.node-pty.test.ts \
|
||||
src/shared/terminal/pty/ingress/pty-reply-echo-shapes.node-pty.test.ts \
|
||||
src/shared/startup-shell-portability.live-shell.test.ts \
|
||||
src/shared/posix-command-path-lookup.test.ts
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ on:
|
||||
- 'src/main/ssh/connection/**'
|
||||
- 'src/main/ssh/ssh-reconnect-error-classification.ts'
|
||||
- 'src/main/ssh/ssh-posix-command-wrapper.ts'
|
||||
- 'src/shared/shell-argument-quoting.ts'
|
||||
- 'src/shared/shell/launch/shell-argument-quoting.ts'
|
||||
- '!src/**/*.test.ts'
|
||||
- 'src/main/ssh/hostile-host-test-support/ssh-hostile-hosts.docker.test.ts'
|
||||
- '.github/workflows/ssh-hostile-hosts.yml'
|
||||
|
||||
@@ -46,7 +46,7 @@ on:
|
||||
- 'src/main/ssh/connection/**'
|
||||
- 'src/main/ssh/ssh-reconnect-error-classification.ts'
|
||||
- 'src/main/ssh/ssh-posix-command-wrapper.ts'
|
||||
- 'src/shared/shell-argument-quoting.ts'
|
||||
- 'src/shared/shell/launch/shell-argument-quoting.ts'
|
||||
- '!src/**/*.test.ts'
|
||||
- 'src/main/managed-server/host-state/orcad-windows-host-lane.test.ts'
|
||||
- 'tests/e2e/ssh-orcad-auto-convert.spec.ts'
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
1 test-no-polling-loop:src/renderer/src/components/terminal-pane/issue-12112-agent-pane-startup-color-reply-leak.repro.test.ts
|
||||
1 test-no-polling-loop:src/shared/darwin-terminal-names-real-ps.test.ts
|
||||
1 test-no-polling-loop:src/shared/fish-query-reply-child-stdin.node-pty.test.ts
|
||||
1 test-no-polling-loop:src/shared/pty-reply-echo-shapes.node-pty.test.ts
|
||||
1 test-no-polling-loop:src/shared/terminal/pty/ingress/pty-reply-echo-shapes.node-pty.test.ts
|
||||
1 test-no-polling-loop:src/shared/remote-runtime/control/remote-runtime-shared-control-standing-intent.test.ts
|
||||
1 test-no-polling-loop:src/shared/startup-command-staging.node-pty.test.ts
|
||||
1 test-no-polling-loop:tests/e2e/agent-session-live-force-exit-resume.spec.ts
|
||||
@@ -1126,7 +1126,7 @@
|
||||
2 test-no-wall-clock:src/renderer/src/store/slices/github-pr-branch-linked-pr-divergence.test.ts
|
||||
2 test-no-wall-clock:src/shared/crash-reporting.test.ts
|
||||
2 test-no-wall-clock:src/shared/fish-query-reply-child-stdin.node-pty.test.ts
|
||||
2 test-no-wall-clock:src/shared/pty-reply-echo-shapes.node-pty.test.ts
|
||||
2 test-no-wall-clock:src/shared/terminal/pty/ingress/pty-reply-echo-shapes.node-pty.test.ts
|
||||
2 test-no-wall-clock:src/shared/startup-command-staging.node-pty.test.ts
|
||||
2 test-no-wall-clock:src/wsl-guest/agent-hook-server.test.ts
|
||||
2 test-no-wall-clock:tests/e2e/cross-version-wire/legacy-relay-bridge.unit.test.ts
|
||||
@@ -1323,7 +1323,7 @@
|
||||
4 test-no-real-time-wait:src/main/runtime/worktree-teardown-unstopped-pty.test.ts
|
||||
4 test-no-real-time-wait:src/main/ssh/connection/ssh-connection-host-key-store-wiring.test.ts
|
||||
4 test-no-real-time-wait:src/renderer/src/components/activity/activity-auto-mark-read-loop.react185.test.tsx
|
||||
4 test-no-real-time-wait:src/shared/pty-reply-echo-shapes.node-pty.test.ts
|
||||
4 test-no-real-time-wait:src/shared/terminal/pty/ingress/pty-reply-echo-shapes.node-pty.test.ts
|
||||
4 test-no-real-time-wait:tests/e2e/combined-diff-scroll-restore.spec.ts
|
||||
4 test-no-real-time-wait:tests/e2e/floating-workspace-reopen-webgl-recovery.spec.ts
|
||||
4 test-no-real-time-wait:tests/e2e/floating-workspace-shared-glyph-atlas.spec.ts
|
||||
|
||||
@@ -102,6 +102,6 @@ src/shared/ephemeral-vm-recipe-process.ts
|
||||
src/shared/ephemeral-vm-recipe-runner.ts
|
||||
src/shared/fish-binary-requirement.ts
|
||||
src/shared/process-table-ps-capture.ts
|
||||
src/shared/pty-slave-line-discipline-echo.ts
|
||||
src/shared/shell-process-readiness.ts
|
||||
src/shared/terminal/pty/native-process/pty-slave-line-discipline-echo.ts
|
||||
src/shared/terminal/pty/native-process/shell-process-readiness.ts
|
||||
src/wsl-guest/preflight-handler.ts
|
||||
|
||||
@@ -2179,18 +2179,18 @@
|
||||
"motivatingLinks": [
|
||||
"https://github.com/stablyai/orca/issues/12721",
|
||||
"https://github.com/stablyai/orca/issues/18173",
|
||||
"https://github.com/stablyai/orca/blob/main/src/shared/workspace-session-partition-owner.ts"
|
||||
"https://github.com/stablyai/orca/blob/main/src/shared/workspace-session/workspace-session-partition-owner.ts"
|
||||
],
|
||||
"invariant": "Every workspace the `ssh:<targetId>` partition names is hydrated at boot, whatever kind of state it holds - terminal tabs, open editor files with unsaved hot-exit drafts, browser workspaces, tab groups, or host-qualified visit recency. An empty tab row is read as a gap, never as evidence the tabs were closed. A workspace the local partition already holds terminal tabs for is left untouched, and every workspace routes back to the partition that owns it. Adoption never destroys what it was not told about: a host row the partition holds nothing for cannot replace a populated base row, and a bare id the read found contested is gap-filled rather than replaced, because that is exactly the id where `local` and `ssh:<targetId>` are not one workspace written twice. Tab-, pane- and file-keyed rows are recovered through the same indexes the split routed them by. An explicit empty tab row written by this build survives the round trip as a present empty row and is declined by the shared seeding predicate. Boot enumerates the partitions persistence actually holds rather than inferring them from the repo catalog, so a target whose only workspace is a folder is read like any other; a folder workspace routes to the same partition main's RuntimeWorkspaceSessionController writes it to, so one workspace is never written into two stores; and a workspace adopted out of a partition routes back to that partition even on a boot whose repo catalog cannot name the host, so the write cannot re-strand what the read just reunited. `contested` means a repo id the catalog registers on more than one host, or two SSH partitions naming one id - never the mere co-presence of 'local' and `ssh:<targetId>`, which is the repair's own input.",
|
||||
"oracle": "Drive the shipping split and renderer read together for an editor-only draft, a contested primary plus parked shadow, and legacy repair followed by a closed-last-terminal round trip. Drive an assembled read into addressed patch callbacks while writing a sibling and require the declined row to survive in its own partition. These in-memory composition checks do not establish file durability or actual reboot recovery.",
|
||||
"commands": [
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/workspace-session-ssh-partition-round-trip.test.ts src/renderer/src/lib/workspace-session-ssh-partition-ownership.test.ts src/renderer/src/lib/workspace-session-host-contention.test.ts src/shared/workspace-session-partition-owner.test.ts"
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/workspace-session-ssh-partition-round-trip.test.ts src/renderer/src/lib/workspace-session-ssh-partition-ownership.test.ts src/renderer/src/lib/workspace-session-host-contention.test.ts src/shared/workspace-session/workspace-session-partition-owner.test.ts"
|
||||
],
|
||||
"testFiles": [
|
||||
"src/renderer/src/lib/workspace-session-ssh-partition-round-trip.test.ts",
|
||||
"src/renderer/src/lib/workspace-session-ssh-partition-ownership.test.ts",
|
||||
"src/renderer/src/lib/workspace-session-host-contention.test.ts",
|
||||
"src/shared/workspace-session-partition-owner.test.ts"
|
||||
"src/shared/workspace-session/workspace-session-partition-owner.test.ts"
|
||||
],
|
||||
"assertionRefs": [
|
||||
{
|
||||
@@ -2212,7 +2212,7 @@
|
||||
"assertions": ["does not strand the runtime co-claimant when the SSH row is written"]
|
||||
},
|
||||
{
|
||||
"file": "src/shared/workspace-session-partition-owner.test.ts",
|
||||
"file": "src/shared/workspace-session/workspace-session-partition-owner.test.ts",
|
||||
"assertions": [
|
||||
"gives an SSH host its own partition, matching what the runtime already writes"
|
||||
]
|
||||
@@ -2224,6 +2224,7 @@
|
||||
"runner": "local",
|
||||
"platform": "macos",
|
||||
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/workspace-session-ssh-partition-round-trip.test.ts src/renderer/src/lib/workspace-session-ssh-partition-ownership.test.ts src/renderer/src/lib/workspace-session-host-contention.test.ts src/shared/workspace-session-partition-owner.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/workspace-session-ssh-partition-round-trip.test.ts src/renderer/src/lib/workspace-session-ssh-partition-ownership.test.ts src/renderer/src/lib/workspace-session-host-contention.test.ts src/shared/workspace-session/workspace-session-partition-owner.test.ts",
|
||||
"result": "passed",
|
||||
"durationSeconds": 7.13,
|
||||
"summary": "64 tests passed across 5 files: the real Store publish, the shipping write/read split round trip, the older-client empty-publish skew direction, the contested-bare-id and empty-host-row guards, the closed-last-terminal tombstone boundary, and the partition-ownership suite covering folder-workspace routing, the persistence-side partition census, read-source write-back, and the catalog attribution that keeps a residue partition from winning the read."
|
||||
@@ -3175,10 +3176,10 @@
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/simulator-palette-search.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/shared/workspace-session-schema.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session-schema.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/cmd-j/worktree-checks-review-index.test.ts src/renderer/src/components/worktree-jump/WorktreeJumpPalette.test.tsx src/renderer/src/components/tab-bar/use-open-tab-search.test.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session-schema.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/cmd-j/worktree-checks-review-index.test.ts src/renderer/src/components/worktree-jump/WorktreeJumpPalette.test.tsx src/renderer/src/components/tab-bar/use-open-tab-search.test.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/lib/open-mobile-emulator-tab.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session-schema.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/shared/workspace-session/workspace-session-schema.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session/workspace-session-schema.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/cmd-j/worktree-checks-review-index.test.ts src/renderer/src/components/worktree-jump/WorktreeJumpPalette.test.tsx src/renderer/src/components/tab-bar/use-open-tab-search.test.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session/workspace-session-schema.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/cmd-j/worktree-checks-review-index.test.ts src/renderer/src/components/worktree-jump/WorktreeJumpPalette.test.tsx src/renderer/src/components/tab-bar/use-open-tab-search.test.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/lib/open-mobile-emulator-tab.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session/workspace-session-schema.test.ts",
|
||||
"pnpm exec playwright test tests/e2e/paired-cmd-j-host-qualified-tabs.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
|
||||
"SKIP_BUILD=1 pnpm exec playwright test tests/e2e/paired-cmd-j-host-qualified-tabs.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1"
|
||||
],
|
||||
@@ -3195,7 +3196,7 @@
|
||||
"src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts",
|
||||
"src/renderer/src/lib/open-mobile-emulator-tab.test.ts",
|
||||
"src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts",
|
||||
"src/shared/workspace-session-schema.test.ts",
|
||||
"src/shared/workspace-session/workspace-session-schema.test.ts",
|
||||
"tests/e2e/paired-cmd-j-host-qualified-tabs.spec.ts"
|
||||
],
|
||||
"assertionRefs": [
|
||||
@@ -3280,7 +3281,7 @@
|
||||
"result": "passed",
|
||||
"durationSeconds": 2.3,
|
||||
"summary": "6 test files passed, 104 tests passed on the STA-4965 candidate. Historical command and result are preserved after the test-value audit removed the tab-store assertions this run included. currentCommand is only an administrative link to the remaining gate command; the historical run has not validated that command or equivalent coverage.",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/shared/workspace-session-schema.test.ts"
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/shared/workspace-session/workspace-session-schema.test.ts"
|
||||
},
|
||||
{
|
||||
"date": "2026-08-20",
|
||||
@@ -3320,7 +3321,7 @@
|
||||
"result": "passed",
|
||||
"durationSeconds": 10.5,
|
||||
"summary": "The review-hardened candidate passed 189/189 focused contracts, including direct browser-result host fallback, SSH plus paired-runtime current-row aliases, explicit-owner fail-closed behavior, generic workspace rows, simulator reuse, local creation stamping, activation, and same-id distinct-runtime mirror preservation. Historical command preserved after the test-value audit removed the palette repo resolver suite. currentCommand is an administrative link to a remaining gate command; this historical run has not validated that command or equivalent coverage. Historical command and result are preserved after the test-value audit removed the tab-store assertions this run included. currentCommand is only an administrative link to the remaining gate command; the historical run has not validated that command or equivalent coverage.",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session-schema.test.ts"
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session/workspace-session-schema.test.ts"
|
||||
},
|
||||
{
|
||||
"date": "2026-08-20",
|
||||
@@ -3337,7 +3338,7 @@
|
||||
"runner": "local",
|
||||
"platform": "macos",
|
||||
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/cmd-j/worktree-checks-review-index.test.ts src/renderer/src/components/WorktreeJumpPalette.test.tsx src/renderer/src/components/tab-bar/use-open-tab-search.test.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/palette-repo-resolution.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/workspace-tab-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/renderer/src/store/slices/tabs-open-close-lifecycle.test.ts src/renderer/src/store/slices/tabs-pane-layout-operations.test.ts src/shared/workspace-session-schema.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/cmd-j/worktree-checks-review-index.test.ts src/renderer/src/components/worktree-jump/WorktreeJumpPalette.test.tsx src/renderer/src/components/tab-bar/use-open-tab-search.test.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session-schema.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/cmd-j/worktree-checks-review-index.test.ts src/renderer/src/components/worktree-jump/WorktreeJumpPalette.test.tsx src/renderer/src/components/tab-bar/use-open-tab-search.test.ts src/renderer/src/lib/cmd-j-host-qualified-candidate-ownership.test.ts src/renderer/src/lib/browser-palette-page-entries.test.ts src/renderer/src/lib/browser-palette-search.test.ts src/renderer/src/lib/simulator-palette-search.test.ts src/renderer/src/lib/browser-page-palette-activation.test.ts src/renderer/src/lib/simulator-tab-palette-activation.test.ts src/renderer/src/lib/ensure-simulator-tab-behavior.test.ts src/renderer/src/runtime/web-session-tabs-sync-mirror-identity.test.ts src/shared/workspace-session/workspace-session-schema.test.ts",
|
||||
"result": "passed",
|
||||
"durationSeconds": 24.3,
|
||||
"summary": "The OpenCode-review-hardened candidate passed 225/225 focused contracts, including unfiltered ownership ambiguity under host filters and scoped open-tab search, review-cache ownership, rendered palette repo metadata, folder workspaces, inactive local simulator creation, paired SSH/runtime display metadata, and explicit-owner fail-closed resolution. Historical command preserved after the test-value audit removed the palette repo resolver suite. currentCommand is an administrative link to a remaining gate command; this historical run has not validated that command or equivalent coverage. Historical command and result are preserved after the test-value audit removed the tab-store assertions this run included. currentCommand is only an administrative link to the remaining gate command; the historical run has not validated that command or equivalent coverage."
|
||||
@@ -3651,8 +3652,8 @@
|
||||
"invariant": "Shell startup scanning preserves every non-Orca output byte in order across arbitrary PTY chunk boundaries. Bash scalar and supported array PROMPT_COMMAND values preserve user bytes, hook order, and foreground exit status while emitting exactly one OSC 133 A/C/D lifecycle without syntax errors. Before user startup files run, the wrapper publishes its shell PID. If a later exec discards the ready marker, proof-based recovery releases queued startup input only after the launched shell's actual executable image with that exact PID owns the PTY foreground, emits its post-hook line-editor enable sequence, and exposes zle/readline termios; startup reads, line-init hooks, child foreground processes, and non-shell readline replacements cannot trigger that proof. The existing bounded compatibility timeout may enqueue input without proof, but must not publish readiness, lose or duplicate that input across reconnect, or execute it before the replacement shell can accept it.",
|
||||
"oracle": "Split Fish output immediately after the ready marker and after the following ESC introducer; local and daemon owners must emit the exact ESC [ ? 2004 h bytes and headless xterm must not render literal control text. Run the real generated wrappers under node-pty with disposable zsh, bash, and Fish startup files. Exercise Bash scalar and array PROMPT_COMMAND values with empty, repeated, escaped, whitespace, control-byte, odd-backslash, status-mutating, DEBUG-trap, zoxide, and RHEL-style hooks; require exact A,C,D:0,A,C,D:1,A,C ordering and byte preservation. Plain and exec -a replacement shells must receive one queued command at their first completed line editor without waiting for the 15-second timeout. The identical oracle must time out without the startup identity and prompt fallback. Same-shell reads, child-process reads, a blocking zle-line-init hook, sqlite3, and sqlite3 renamed zsh must not trigger prompt fallback. Relay owner coverage must use the same lossless scanner composition and release through the same prompt contract.",
|
||||
"commands": [
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/daemon/bash-prompt-command-composition.test.ts src/main/pty/shell-startup/line-editor-ready-output-scanner.test.ts src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts src/shared/pty-slave-line-discipline-echo.test.ts src/shared/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty/local-pty-provider-shell-readiness.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/pty/shell-startup/line-editor-ready-output-scanner.test.ts src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts src/shared/pty-slave-line-discipline-echo.test.ts src/shared/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty/local-pty-provider-shell-readiness.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/daemon/bash-prompt-command-composition.test.ts src/main/pty/shell-startup/line-editor-ready-output-scanner.test.ts src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts src/shared/terminal/pty/native-process/pty-slave-line-discipline-echo.test.ts src/shared/terminal/pty/native-process/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty/local-pty-provider-shell-readiness.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/pty/shell-startup/line-editor-ready-output-scanner.test.ts src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts src/shared/terminal/pty/native-process/pty-slave-line-discipline-echo.test.ts src/shared/terminal/pty/native-process/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty/local-pty-provider-shell-readiness.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts --maxWorkers=1 src/main/daemon/shell-ready.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts",
|
||||
"ORCA_E2E_WEB_CLIENT=1 SKIP_BUILD=1 pnpm exec playwright test tests/e2e/paired-startup-exec-readiness.spec.ts --config tests/playwright.config.ts --project electron-headless --project electron-headful --workers=1"
|
||||
],
|
||||
@@ -3663,8 +3664,8 @@
|
||||
"src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts",
|
||||
"src/main/pty/shell-startup/shell-startup-output-scanner.test.ts",
|
||||
"src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts",
|
||||
"src/shared/pty-slave-line-discipline-echo.test.ts",
|
||||
"src/shared/shell-process-readiness.test.ts",
|
||||
"src/shared/terminal/pty/native-process/pty-slave-line-discipline-echo.test.ts",
|
||||
"src/shared/terminal/pty/native-process/shell-process-readiness.test.ts",
|
||||
"src/main/daemon/session.test.ts",
|
||||
"src/main/daemon/shell-ready.test.ts",
|
||||
"src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts",
|
||||
@@ -3738,7 +3739,7 @@
|
||||
"runner": "local",
|
||||
"platform": "macos",
|
||||
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/line-editor-ready-output-scanner.test.ts src/main/shell-startup-identity-scanner.test.ts src/main/shell-startup-output-scanner.test.ts src/main/shell-prompt-readiness-probe.test.ts src/shared/pty-slave-line-discipline-echo.test.ts src/shared/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty-provider-shell-readiness.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/pty/shell-startup/line-editor-ready-output-scanner.test.ts src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts src/shared/pty-slave-line-discipline-echo.test.ts src/shared/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty/local-pty-provider-shell-readiness.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/pty/shell-startup/line-editor-ready-output-scanner.test.ts src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts src/shared/terminal/pty/native-process/pty-slave-line-discipline-echo.test.ts src/shared/terminal/pty/native-process/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty/local-pty-provider-shell-readiness.test.ts",
|
||||
"result": "passed",
|
||||
"durationSeconds": 6,
|
||||
"summary": "473 tests passed with one local Fish skip, including every-boundary scanner composition, real exec, silent-read, line-init-hook, renamed-image, disabled-bracketed-paste, and relay-owner oracles."
|
||||
@@ -3748,7 +3749,7 @@
|
||||
"runner": "local",
|
||||
"platform": "macos",
|
||||
"command": "pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/daemon/bash-prompt-command-composition.test.ts src/main/line-editor-ready-output-scanner.test.ts src/main/shell-startup-identity-scanner.test.ts src/main/shell-startup-output-scanner.test.ts src/main/shell-prompt-readiness-probe.test.ts src/shared/pty-slave-line-discipline-echo.test.ts src/shared/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty-provider-shell-readiness.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/daemon/bash-prompt-command-composition.test.ts src/main/pty/shell-startup/line-editor-ready-output-scanner.test.ts src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts src/shared/pty-slave-line-discipline-echo.test.ts src/shared/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty/local-pty-provider-shell-readiness.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts src/main/daemon/bash-prompt-command-composition.test.ts src/main/pty/shell-startup/line-editor-ready-output-scanner.test.ts src/main/pty/shell-startup/shell-startup-identity-scanner.test.ts src/main/pty/shell-startup/shell-startup-output-scanner.test.ts src/main/pty/shell-startup/shell-prompt-readiness-probe.test.ts src/shared/terminal/pty/native-process/pty-slave-line-discipline-echo.test.ts src/shared/terminal/pty/native-process/shell-process-readiness.test.ts src/main/daemon/session.test.ts src/main/daemon/shell-ready.test.ts src/main/providers/local-pty/local-pty-shell-ready-marker-scan.test.ts src/main/providers/local-pty/local-pty-shell-ready-startup-command.test.ts src/main/providers/local-pty/local-pty-shell-ready-wrapper-generation.test.ts src/main/providers/local-pty/local-pty-provider-shell-readiness.test.ts",
|
||||
"result": "passed",
|
||||
"durationSeconds": 6,
|
||||
"summary": "233 tests passed with one local Fish skip, including exact Bash PROMPT_COMMAND byte/status/lifecycle composition across daemon, local, and relay owners."
|
||||
@@ -5783,7 +5784,7 @@
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/browser/browser-preview-tool-authorization.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-annotation-bridge.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-guest-lifecycle.test.ts src/main/browser/backends/offscreen-browser-backend-lifecycle.test.ts src/main/browser/document-preview/doc-preview-guest-policy.test.ts src/shared/doc-preview-scheme.test.ts src/renderer/src/components/browser-pane/workspace-doc/doc-preview-document-actions.test.ts src/renderer/src/components/browser-pane/workspace-doc/use-doc-preview-guest-tools.test.ts src/renderer/src/components/editor/EditorPanelShell.header.test.tsx src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/doc-preview-grant-ipc.test.ts src/renderer/src/components/link-actions/LinkActionPopover.test.tsx src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/browser/browser-preview-tool-authorization.test.ts src/main/ipc/browser/browser-tab-registration-wait.test.ts src/main/ipc/doc-preview-grant-ipc.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-guest-lifecycle.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-guest-policy-profile.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-annotation-bridge.test.ts src/main/browser/backends/offscreen-browser-backend-lifecycle.test.ts src/main/browser/document-preview/doc-preview-guest-policy.test.ts src/shared/doc-preview-scheme.test.ts src/renderer/src/components/browser-pane/workspace-doc/use-doc-preview-guest-tools.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-page-conversion.test.ts src/renderer/src/runtime/sync-runtime-graph-conversion-publish.test.ts src/renderer/src/lib/workspace-doc-address-input.test.ts src/shared/workspace-doc-history.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx src/renderer/src/components/browser-pane/assemble-chrome/browser-address-bar-suggestions.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-page-conversion.test.ts src/renderer/src/runtime/sync-runtime-graph-conversion-publish.test.ts src/renderer/src/lib/workspace-doc-address-input.test.ts src/shared/workspace-session/workspace-doc-history.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx src/renderer/src/components/browser-pane/assemble-chrome/browser-address-bar-suggestions.test.ts",
|
||||
"SKIP_BUILD=1 ORCA_E2E_WEB_CLIENT=1 ORCA_E2E_FORCE_HEADFUL=1 pnpm exec playwright test tests/e2e/paired-preview-address-bar-convergence.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1 --reporter=list",
|
||||
"SKIP_BUILD=1 ORCA_E2E_WEB_CLIENT=1 ORCA_E2E_FORCE_HEADFUL=1 pnpm exec playwright test tests/e2e/paired-remote-html-preview-local-render.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1 --reporter=line",
|
||||
"SKIP_BUILD=1 ORCA_E2E_WEB_CLIENT=1 ORCA_E2E_FORCE_HEADFUL=1 pnpm exec playwright test tests/e2e/paired-remote-html-preview-local-render.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1 --reporter=line --repeat-each=3",
|
||||
@@ -5830,7 +5831,7 @@
|
||||
"src/renderer/src/store/slices/browser-page-conversion.test.ts",
|
||||
"src/renderer/src/runtime/sync-runtime-graph-conversion-publish.test.ts",
|
||||
"src/renderer/src/lib/workspace-doc-address-input.test.ts",
|
||||
"src/shared/workspace-doc-history.test.ts",
|
||||
"src/shared/workspace-session/workspace-doc-history.test.ts",
|
||||
"src/renderer/src/components/browser-pane/assemble-chrome/browser-address-bar-suggestions.test.ts",
|
||||
"tests/e2e/paired-remote-html-preview-local-render.spec.ts",
|
||||
"tests/e2e/paired-preview-address-bar-convergence.spec.ts",
|
||||
@@ -9296,14 +9297,14 @@
|
||||
"invariant": "A fresh local renderer terminal spawn may recover from a saved startup cwd whose directory no longer exists only by spawning at the selected workspace root and printing a generic in-terminal notice; existing directories — including ones outside the worktree (#7685) — spawn as requested, and reattach, SSH, remote-runtime, runtime/API, and mobile callers keep exact cwd semantics. A long-lived POSIX shell whose cwd inode was deleted and replaced may run a wrapped OMP command from the live path named by its logical PWD only in a subshell; the parent shell cwd, OMP argv, status extension, and exit status remain unchanged, while a genuinely unavailable path fails visibly without invoking OMP. A usable physical cwd remains authoritative when PWD is unset or names a removed logical symlink instead of being remapped to a workspace fallback.",
|
||||
"oracle": "The shared resolver falls back to the workspace root only when the injected existence probe reports the resolved cwd missing and the workspace root present, and never probes floating terminals or a cwd equal to the root. The renderer sends cwdFallback only for fresh local IPC spawns, main honors it only when connectionId and sessionId are absent, WSL UNC paths never engage the probe-based fallback, main returns fallback metadata only after an actual fallback, the IPC transport preserves that metadata, and the connection layer writes a generic notice that omits the missing path. In real interactive Bash and Zsh PTYs, unset PWD and remove a logical symlink while the physical cwd stays usable, requiring OMP to remain there; then delete and recreate the active project path, require extension-enabled and extension-skipping invocations to observe the replacement inode with byte-exact argv and nonzero status preserved, require the parent shell to remain on the stale inode, unset PWD and require recovery through ORCA_WORKTREE_PATH, clear every logical fallback and require an actionable failure without invoking OMP, and finally delete the replacement and require the same for the missing PWD path.",
|
||||
"commands": [
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/shared/terminal-startup-cwd.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/shared/shell/launch/terminal-startup-cwd.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-transport-connect-spawn.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-connection-spawn-and-startup.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/main/pty/shell-startup/omp-shell-wrapper.node-pty.test.ts src/main/pty/shell-startup/omp-shell-wrapper-alias-safety.test.ts"
|
||||
],
|
||||
"testFiles": [
|
||||
"src/shared/terminal-startup-cwd.test.ts",
|
||||
"src/shared/shell/launch/terminal-startup-cwd.test.ts",
|
||||
"src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts",
|
||||
"src/renderer/src/components/terminal-pane/pty-transport-connect-spawn.test.ts",
|
||||
"src/renderer/src/components/terminal-pane/pty-connection-spawn-and-startup.test.ts",
|
||||
@@ -9312,7 +9313,7 @@
|
||||
],
|
||||
"assertionRefs": [
|
||||
{
|
||||
"file": "src/shared/terminal-startup-cwd.test.ts",
|
||||
"file": "src/shared/shell/launch/terminal-startup-cwd.test.ts",
|
||||
"assertions": [
|
||||
"a missing requested cwd falls back to the workspace root and reports the missing path to the callback",
|
||||
"existing cwds — nested or outside the worktree (#7685) — are never remapped",
|
||||
@@ -9371,6 +9372,7 @@
|
||||
"runner": "local",
|
||||
"platform": "macos",
|
||||
"command": "pnpm exec vitest run --config config/vitest.config.ts src/shared/terminal-startup-cwd.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/shared/shell/launch/terminal-startup-cwd.test.ts",
|
||||
"result": "passed",
|
||||
"durationSeconds": 0.2,
|
||||
"summary": "1 test file passed, 21 tests passed; covers the missing-dir fallback policy, #7685 outside-worktree preservation, and root-missing/floating exemptions."
|
||||
@@ -16493,7 +16495,7 @@
|
||||
"invariant": "The desktop PTY input queue retains at most 64 explicitly sourced pending terminal query replies and 4096 UTF-16 code units. Every retained reply reaches the provider as one atomic write, and ordinary, acknowledged, and reply input share one invocation-ordered FIFO so no later write overtakes an acknowledged write. Reentrant write callbacks cannot start a second drain worker or strand input admitted after clear/reuse. A reply's own echo is contained on the output side by projecting its known echo shapes; the ESC-initial verbatim shape is matched only when complete, never held as a partial, so a query torn at its own ESC is still answered. Overflow removes only the oldest query replies, never ordinary input except the documented modified-F3/CPR byte collision, and failure or teardown cannot clear a newer queue generation or strand an acknowledged promise.",
|
||||
"oracle": "Synchronously enqueue separate 10,000-entry OSC and DA1 reply floods before the scheduled drain and assert that only the initial immediate reply and newest 64 pending replies are written, each as one provider write, before a trailing keystroke. Stall an acknowledged write between earlier and later ordinary/reply input, then require teardown to settle it and same-id reuse to receive no stale tail. Reenter the queue synchronously from an acknowledged write with both enqueue and clear/reuse, requiring one drain and fresh input delivery only after the stale acknowledged write settles false. At the host boundary, defer an OSC reply and assert that separate or legacy-coalesced DA1/CPR replies flush after it in observed query order. At the remote-runtime boundary, preserve separate writes around pending ordinary input, async validation, and viewport-claim buffering. Repeat behind 10,000 ordinary inputs and exercise the text ceiling, real xterm generation, provider-write failure, rejected yield, and clear/reuse generation fencing.",
|
||||
"commands": [
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-input-write-queue.test.ts src/renderer/src/components/terminal-pane/pty-transport-input-write.test.ts src/shared/terminal/protocol/queries/terminal-query-reply.test.ts src/shared/pty-startup-ingress-live-query-reply.test.ts src/shared/pty-startup-reply-echo-shapes.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-input-write-queue.test.ts src/renderer/src/components/terminal-pane/pty-transport-input-write.test.ts src/shared/terminal/protocol/queries/terminal-query-reply.test.ts src/shared/terminal/pty/ingress/pty-startup-ingress-live-query-reply.test.ts src/shared/terminal/pty/ingress/pty-startup-reply-echo-shapes.test.ts",
|
||||
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/remote-runtime-pty-batching.test.ts src/renderer/src/components/terminal-pane/remote-runtime-pty-query-reply-immediate.test.ts src/renderer/src/components/terminal-pane/remote-runtime-pty-transport-input-coalescing.test.ts",
|
||||
"pnpm exec playwright test tests/e2e/terminal-osc-color-queries.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1",
|
||||
"pnpm exec playwright test tests/e2e/terminal-typing-latency.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1"
|
||||
@@ -16505,8 +16507,8 @@
|
||||
"src/renderer/src/components/terminal-pane/remote-runtime-pty-query-reply-immediate.test.ts",
|
||||
"src/renderer/src/components/terminal-pane/remote-runtime-pty-transport-input-coalescing.test.ts",
|
||||
"src/shared/terminal/protocol/queries/terminal-query-reply.test.ts",
|
||||
"src/shared/pty-startup-ingress-live-query-reply.test.ts",
|
||||
"src/shared/pty-startup-reply-echo-shapes.test.ts",
|
||||
"src/shared/terminal/pty/ingress/pty-startup-ingress-live-query-reply.test.ts",
|
||||
"src/shared/terminal/pty/ingress/pty-startup-reply-echo-shapes.test.ts",
|
||||
"tests/e2e/terminal-osc-color-queries.spec.ts",
|
||||
"tests/e2e/terminal-typing-latency.spec.ts"
|
||||
],
|
||||
@@ -16563,7 +16565,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"file": "src/shared/pty-startup-ingress-live-query-reply.test.ts",
|
||||
"file": "src/shared/terminal/pty/ingress/pty-startup-ingress-live-query-reply.test.ts",
|
||||
"assertions": [
|
||||
"repeated live query replies are delivered independently and their cooked echoes stay hidden"
|
||||
]
|
||||
@@ -16587,7 +16589,7 @@
|
||||
"runner": "local",
|
||||
"platform": "macos",
|
||||
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-input-write-queue.test.ts src/renderer/src/components/terminal-pane/pty-transport-input-write.test.ts src/shared/terminal-query-reply.test.ts src/shared/pty-startup-ingress-live-query-reply.test.ts src/shared/pty-startup-reply-echo-shapes.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-input-write-queue.test.ts src/renderer/src/components/terminal-pane/pty-transport-input-write.test.ts src/shared/terminal/protocol/queries/terminal-query-reply.test.ts src/shared/pty-startup-ingress-live-query-reply.test.ts src/shared/pty-startup-reply-echo-shapes.test.ts",
|
||||
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/terminal-pane/pty-input-write-queue.test.ts src/renderer/src/components/terminal-pane/pty-transport-input-write.test.ts src/shared/terminal/protocol/queries/terminal-query-reply.test.ts src/shared/terminal/pty/ingress/pty-startup-ingress-live-query-reply.test.ts src/shared/terminal/pty/ingress/pty-startup-reply-echo-shapes.test.ts",
|
||||
"result": "passed",
|
||||
"durationSeconds": 15,
|
||||
"summary": "Five files and 149 tests passed in 15.16 seconds, including explicit IPC reply-source routing, the 10,000-reply count and text ceilings, 10,000-entry ordinary backlog preservation, acknowledged-write FIFO barriers, synchronous reentrancy fencing, prompt teardown settlement, same-id generation fencing, real xterm OSC query floods, single-shot drain-failure recovery, and one-reply-per-write echo containment."
|
||||
|
||||
@@ -51,5 +51,5 @@
|
||||
1 src/shared/github/github-cache-key.ts
|
||||
1 src/shared/new-workspace-dialog-repo.ts
|
||||
1 src/shared/sidebar-list/workspace-review-facts.ts
|
||||
1 src/shared/workspace-session-terminal-buffers.ts
|
||||
1 src/shared/workspace-session/workspace-session-terminal-buffers.ts
|
||||
1 src/shared/worktree/ownership.ts
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
makeWorktree,
|
||||
TEST_REPO
|
||||
} from '@/store/slices/store-test-helpers'
|
||||
import { makePaneKey } from '../../src/shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../src/shared/workspace-layout/stable-pane-id'
|
||||
import { getDefaultSettings } from '../../src/shared/constants'
|
||||
import {
|
||||
createAgentStatusPaneRoutingIndex,
|
||||
|
||||
@@ -11278,7 +11278,7 @@
|
||||
"src/shared/client-environment-info.test.ts": 46,
|
||||
"src/shared/clipboard-image.test.ts": 43,
|
||||
"src/shared/clipboard-text.test.ts": 73,
|
||||
"src/shared/closed-terminal-tab-tombstones.test.ts": 94,
|
||||
"src/shared/workspace-layout/closed-terminal-tab-tombstones.test.ts": 94,
|
||||
"src/shared/cloud-service-url.test.ts": 37,
|
||||
"src/shared/coalescing-keyed-runner.test.ts": 119,
|
||||
"src/shared/codebuddy-agent.test.ts": 301,
|
||||
@@ -11803,18 +11803,18 @@
|
||||
"src/shared/project-identity-succession.test.ts": 76,
|
||||
"src/shared/promise-settlement-waiters.test.ts": 183,
|
||||
"src/shared/protocol-compat.test.ts": 153,
|
||||
"src/shared/pty-delivery-diagnostics.test.ts": 47,
|
||||
"src/shared/pty-liveness-verdict.test.ts": 40,
|
||||
"src/shared/pty-owner-backend.test.ts": 52,
|
||||
"src/shared/pty-owner-color-query-colors.test.ts": 65,
|
||||
"src/shared/pty-running-work-probe.test.ts": 60,
|
||||
"src/shared/pty-slave-line-discipline-echo.test.ts": 51,
|
||||
"src/shared/pty-startup-ingress-kitty.test.ts": 135,
|
||||
"src/shared/pty-startup-ingress-launcher-appearance.test.ts": 133,
|
||||
"src/shared/pty-startup-ingress-lifetime-colors.test.ts": 115,
|
||||
"src/shared/pty-startup-ingress-live-query-reply.test.ts": 120,
|
||||
"src/shared/pty-startup-ingress.test.ts": 174,
|
||||
"src/shared/pty-startup-reply-echo-shapes.test.ts": 66,
|
||||
"src/shared/terminal/pty/diagnostics/pty-delivery-diagnostics.test.ts": 47,
|
||||
"src/shared/terminal/pty/lifecycle/pty-liveness-verdict.test.ts": 40,
|
||||
"src/shared/terminal/pty/lifecycle/pty-owner-backend.test.ts": 52,
|
||||
"src/shared/terminal/pty/ingress/pty-owner-color-query-colors.test.ts": 65,
|
||||
"src/shared/terminal/pty/lifecycle/pty-running-work-probe.test.ts": 60,
|
||||
"src/shared/terminal/pty/native-process/pty-slave-line-discipline-echo.test.ts": 51,
|
||||
"src/shared/terminal/pty/ingress/pty-startup-ingress-kitty.test.ts": 135,
|
||||
"src/shared/terminal/pty/ingress/pty-startup-ingress-launcher-appearance.test.ts": 133,
|
||||
"src/shared/terminal/pty/ingress/pty-startup-ingress-lifetime-colors.test.ts": 115,
|
||||
"src/shared/terminal/pty/ingress/pty-startup-ingress-live-query-reply.test.ts": 120,
|
||||
"src/shared/terminal/pty/ingress/pty-startup-ingress.test.ts": 174,
|
||||
"src/shared/terminal/pty/ingress/pty-startup-reply-echo-shapes.test.ts": 66,
|
||||
"src/shared/published-pane-agent-identity.test.ts": 89,
|
||||
"src/shared/source-control/ai/generation/pull-request-generation.test.ts": 51,
|
||||
"src/shared/qoder-agent.test.ts": 445,
|
||||
@@ -11952,8 +11952,8 @@
|
||||
"src/shared/workspace-setup/setup-script-telemetry.test.ts": 44,
|
||||
"src/shared/sha256.test.ts": 55,
|
||||
"src/shared/shell-foreground-snapshot.test.ts": 272,
|
||||
"src/shared/shell-process-detection.test.ts": 47,
|
||||
"src/shared/shell-process-readiness.test.ts": 89,
|
||||
"src/shared/agent-status/process/shell-process-detection.test.ts": 47,
|
||||
"src/shared/terminal/pty/native-process/shell-process-readiness.test.ts": 89,
|
||||
"src/shared/sidebar-feed-client/sidebar-feed-reader.test.ts": 438,
|
||||
"src/shared/sidebar-feed-client/sidebar-feed-snapshot.test.ts": 488,
|
||||
"src/shared/sidebar-list/paired-server-activity-facts.test.ts": 203,
|
||||
@@ -11999,7 +11999,7 @@
|
||||
"src/shared/ssh-retained-payload-admission.test.ts": 69,
|
||||
"src/shared/ssh-target-generation.test.ts": 44,
|
||||
"src/shared/ssh-target-source.test.ts": 40,
|
||||
"src/shared/stable-pane-id.test.ts": 42,
|
||||
"src/shared/workspace-layout/stable-pane-id.test.ts": 42,
|
||||
"src/shared/startup-command-staging.node-pty.test.ts": 2207,
|
||||
"src/shared/startup-command-staging.test.ts": 302,
|
||||
"src/shared/startup-command-submission.test.ts": 37,
|
||||
@@ -12024,12 +12024,12 @@
|
||||
"src/shared/telemetry-events.test.ts": 212,
|
||||
"src/shared/telemetry-payload-contracts.test.ts": 282,
|
||||
"src/shared/telemetry-workspace-create-schemas.test.ts": 192,
|
||||
"src/shared/terminal-agent-status-processor.test.ts": 74,
|
||||
"src/shared/program-status/terminal-agent-status-processor.test.ts": 74,
|
||||
"src/shared/terminal/output/terminal-bell-detector.test.ts": 40,
|
||||
"src/shared/terminal/protocol/queries/terminal-color-scheme-protocol.test.ts": 39,
|
||||
"src/shared/terminal/input/terminal-composer-draft.test.ts": 73,
|
||||
"src/shared/terminal-themes/terminal-custom-themes.test.ts": 48,
|
||||
"src/shared/terminal-exit-cause.test.ts": 64,
|
||||
"src/shared/terminal/pty/lifecycle/terminal-exit-cause.test.ts": 64,
|
||||
"src/shared/terminal/links/terminal-file-uri-link.test.ts": 51,
|
||||
"src/shared/terminal/links/terminal-file-url-target.test.ts": 47,
|
||||
"src/shared/terminal/appearance/terminal-fonts.test.ts": 40,
|
||||
@@ -12038,7 +12038,7 @@
|
||||
"src/shared/terminal/input/terminal-input.test.ts": 85,
|
||||
"src/shared/terminal/protocol/input-modes/terminal-kitty-keyboard-mode-tracker.test.ts": 84,
|
||||
"src/shared/terminal/protocol/input-modes/terminal-kitty-keyboard-tail-retention.test.ts": 220,
|
||||
"src/shared/terminal-leaf-move.test.ts": 47,
|
||||
"src/shared/workspace-layout/terminal-leaf-move.test.ts": 47,
|
||||
"src/shared/terminal/appearance/terminal-line-height-settings.test.ts": 41,
|
||||
"src/shared/terminal/links/terminal-links-cjk.test.ts": 116,
|
||||
"src/shared/terminal/links/terminal-links-redos.test.ts": 90,
|
||||
@@ -12052,9 +12052,9 @@
|
||||
"src/shared/terminal/output/terminal-osc133-carry-retention.test.ts": 443,
|
||||
"src/shared/terminal/output/terminal-osc133-self-closed-zone.test.ts": 97,
|
||||
"src/shared/terminal/output/terminal-output-side-effects.test.ts": 106,
|
||||
"src/shared/terminal-pane-placement.test.ts": 300,
|
||||
"src/shared/terminal-pane-title-reset.test.ts": 74,
|
||||
"src/shared/terminal-pane-title-sanitization.test.ts": 41,
|
||||
"src/shared/workspace-layout/terminal-pane-placement.test.ts": 300,
|
||||
"src/shared/workspace-layout/terminal-pane-title-reset.test.ts": 74,
|
||||
"src/shared/workspace-layout/terminal-pane-title-sanitization.test.ts": 41,
|
||||
"src/shared/terminal/protocol/escape/terminal-partial-escape-tail-ground-scan.test.ts": 59,
|
||||
"src/shared/terminal/protocol/escape/terminal-partial-escape-tail.fuzz.test.ts": 79,
|
||||
"src/shared/terminal/protocol/escape/terminal-partial-escape-tail.test.ts": 65,
|
||||
@@ -12066,15 +12066,15 @@
|
||||
"src/shared/terminal/replay/testing/terminal-restore-parity-writes.test.ts": 153,
|
||||
"src/shared/terminal/replay/terminal-scrollback-policy.test.ts": 43,
|
||||
"src/shared/terminal/output/terminal-selection-gutter.test.ts": 49,
|
||||
"src/shared/terminal-session-state-save-failure.test.ts": 46,
|
||||
"src/shared/terminal-start-failure.test.ts": 46,
|
||||
"src/shared/terminal-startup-cwd.test.ts": 276,
|
||||
"src/shared/workspace-session/terminal-session-state-save-failure.test.ts": 46,
|
||||
"src/shared/terminal/pty/lifecycle/terminal-start-failure.test.ts": 46,
|
||||
"src/shared/shell/launch/terminal-startup-cwd.test.ts": 276,
|
||||
"src/shared/terminal/stream/terminal-stream-json-byte-length.test.ts": 51,
|
||||
"src/shared/terminal/stream/terminal-stream-protocol.test.ts": 39,
|
||||
"src/shared/terminal-surface-close-target.test.ts": 43,
|
||||
"src/shared/workspace-layout/terminal-surface-close-target.test.ts": 43,
|
||||
"src/shared/terminal/protocol/escape/terminal-synchronized-output-scan.test.ts": 45,
|
||||
"src/shared/terminal-themes/terminal-theme-selection.test.ts": 64,
|
||||
"src/shared/terminal-title-agent-type.test.ts": 197,
|
||||
"src/shared/agent-status/title/terminal-title-agent-type.test.ts": 197,
|
||||
"src/shared/terminal/protocol/queries/terminal-view-attributes.test.ts": 54,
|
||||
"src/shared/terminal/viewport/terminal-viewport.test.ts": 104,
|
||||
"src/shared/terminal/viewport/terminal-zero-dimensions-diagnostic.test.ts": 32,
|
||||
@@ -12138,7 +12138,7 @@
|
||||
"src/shared/workspace-cleanup/workspace-cleanup-ui-state.test.ts": 46,
|
||||
"src/shared/workspace-cleanup/workspace-cleanup.test.ts": 46,
|
||||
"src/shared/workspace-creator-visibility.test.ts": 114,
|
||||
"src/shared/workspace-doc-history.test.ts": 59,
|
||||
"src/shared/workspace-session/workspace-doc-history.test.ts": 59,
|
||||
"src/shared/workspace-last-active-switch-on.test.ts": 52,
|
||||
"src/shared/workspace-last-active.test.ts": 50,
|
||||
"src/shared/workspace-layout/old-client/old-client-method-translation.test.ts": 352,
|
||||
@@ -12200,19 +12200,19 @@
|
||||
"src/shared/workspace-name.test.ts": 49,
|
||||
"src/shared/workspace-attachments/workspace-reference-identity.test.ts": 82,
|
||||
"src/shared/workspace-review-checks.test.ts": 82,
|
||||
"src/shared/workspace-session-browser-history.test.ts": 241,
|
||||
"src/shared/workspace-session-partition-owner.test.ts": 31,
|
||||
"src/shared/workspace-session-salvage-equivalence.test.ts": 531,
|
||||
"src/shared/workspace-session-salvage.test.ts": 930,
|
||||
"src/shared/workspace-session-schema-field-coverage.test.ts": 295,
|
||||
"src/shared/workspace-session-schema.sleeping-agent.test.ts": 337,
|
||||
"src/shared/workspace-session-schema.test.ts": 343,
|
||||
"src/shared/workspace-session-tab-activity.test.ts": 45,
|
||||
"src/shared/workspace-session-tab-focus-schema.test.ts": 290,
|
||||
"src/shared/workspace-session-terminal-buffers.test.ts": 294,
|
||||
"src/shared/workspace-session-terminal-schema.test.ts": 269,
|
||||
"src/shared/workspace-session-terminal-tab-close.test.ts": 248,
|
||||
"src/shared/workspace-session-validation-work.test.ts": 314,
|
||||
"src/shared/workspace-session/workspace-session-browser-history.test.ts": 241,
|
||||
"src/shared/workspace-session/workspace-session-partition-owner.test.ts": 31,
|
||||
"src/shared/workspace-session/workspace-session-salvage-equivalence.test.ts": 531,
|
||||
"src/shared/workspace-session/workspace-session-salvage.test.ts": 930,
|
||||
"src/shared/workspace-session/workspace-session-schema-field-coverage.test.ts": 295,
|
||||
"src/shared/workspace-session/workspace-session-schema.sleeping-agent.test.ts": 337,
|
||||
"src/shared/workspace-session/workspace-session-schema.test.ts": 343,
|
||||
"src/shared/workspace-session/workspace-session-tab-activity.test.ts": 45,
|
||||
"src/shared/workspace-session/workspace-session-tab-focus-schema.test.ts": 290,
|
||||
"src/shared/workspace-session/workspace-session-terminal-buffers.test.ts": 294,
|
||||
"src/shared/workspace-session/workspace-session-terminal-schema.test.ts": 269,
|
||||
"src/shared/workspace-session/workspace-session-terminal-tab-close.test.ts": 248,
|
||||
"src/shared/workspace-session/workspace-session-validation-work.test.ts": 314,
|
||||
"src/shared/workspace-disk-space/workspace-space-compaction.test.ts": 50,
|
||||
"src/shared/workspace-disk-space/workspace-space-entry-traversal.test.ts": 349,
|
||||
"src/shared/workspace-disk-space/workspace-space-scan-budget.test.ts": 54,
|
||||
|
||||
@@ -41,7 +41,7 @@ export const UNIT_EXCLUDE = [
|
||||
'src/shared/fish-query-reply-child-stdin.node-pty.test.ts',
|
||||
'src/shared/fish-wsl-cwd-report.node-pty.test.ts',
|
||||
'src/main/wsl/filesystem/wsl-sh-cwd-report.node-pty.test.ts',
|
||||
'src/shared/pty-reply-echo-shapes.node-pty.test.ts',
|
||||
'src/shared/terminal/pty/ingress/pty-reply-echo-shapes.node-pty.test.ts',
|
||||
'src/shared/startup-shell-portability.live-shell.test.ts',
|
||||
'src/shared/posix-command-path-lookup.test.ts',
|
||||
'tests/e2e/relay-region-compatibility.unit.test.ts',
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
"sourceClosureSha256": "08558478f5a5a6c0aa2e4e4d92d609ff55c11564d04a957f999f2302c478ae80"
|
||||
},
|
||||
{
|
||||
"file": "src/shared/workspace-session-browser-history.ts",
|
||||
"file": "src/shared/workspace-session/workspace-session-browser-history.ts",
|
||||
"inputs": [],
|
||||
"emptyEnv": [],
|
||||
"reason": "Reviewed URL/data projection only; no indirect repository reads. The entire local source closure and dependency/runtime context are fingerprinted.",
|
||||
|
||||
@@ -37,7 +37,7 @@ export function nodeServerTestPaths({
|
||||
...(artifact
|
||||
? [
|
||||
'tests/e2e/daemon-running-work-probe.unit.test.ts',
|
||||
'src/shared/pty-running-work-probe.test.ts',
|
||||
'src/shared/terminal/pty/lifecycle/pty-running-work-probe.test.ts',
|
||||
'src/main/orcad/orcad-packaged-node-pty.integration.test.ts',
|
||||
'src/main/providers/agent-foreground-process-git-bash.win32.test.ts',
|
||||
'src/main/orcad/orcad-node-launcher.integration.test.ts',
|
||||
|
||||
@@ -265,7 +265,7 @@ const CROSS_VERSION_WIRE_PREFIXES = [
|
||||
'src/shared/agent-session/view/structured-agent-session-agent-status',
|
||||
'src/shared/agent-session/view/structured-agent-session-projection',
|
||||
'src/shared/agent-session/requests/structured-agent-session-projection-sender.spec.ts',
|
||||
'src/shared/workspace-session-sleeping-agents',
|
||||
'src/shared/workspace-session/workspace-session-sleeping-agents',
|
||||
// A current desktop's launch route against a released server's capabilities (cross-version-paired-structured-launch).
|
||||
'src/shared/structured-native-chat-launch-route.ts',
|
||||
'src/renderer/src/lib/agent-launch-routing.ts',
|
||||
|
||||
@@ -10,7 +10,7 @@ const LAYOUT_ORACLE_PREFIXES = [
|
||||
// Layout model, persistence and compatibility folders.
|
||||
'src/shared/workspace-layout/',
|
||||
'src/shared/remote-layout-snapshot.ts',
|
||||
'src/shared/terminal-leaf-move.ts',
|
||||
'src/shared/workspace-layout/terminal-leaf-move.ts',
|
||||
'src/main/persistence/terminal-topology/',
|
||||
'src/main/persistence/restoring-sessions/',
|
||||
'src/main/persistence/loading-store/pty-binding-',
|
||||
|
||||
@@ -12,7 +12,7 @@ export const SHELL_PREFIXES = [
|
||||
'src/main/runtime/structured-session-child-env',
|
||||
'src/renderer/src/components/terminal-pane/fish-color-scheme',
|
||||
'src/shared/fish-',
|
||||
'src/shared/pty-reply-echo-shapes',
|
||||
'src/shared/terminal/pty/ingress/pty-reply-echo-shapes',
|
||||
'src/shared/startup-shell-portability',
|
||||
'src/shared/posix-command-path-lookup',
|
||||
'src/main/wsl/filesystem/wsl-shell-cwd-report',
|
||||
|
||||
@@ -25,7 +25,7 @@ export const PR_WSL_E2E_SOURCE_ROUTES = [
|
||||
],
|
||||
matches: (file) =>
|
||||
isProductSource(file) &&
|
||||
/^(?:config\/scripts\/(?:verify-wsl-e2e-participation|verify-wsl-no-background-boot-participation|verify-playwright-participation)\.mjs$|src\/main\/(?:wsl[/-]|pty\/.*wsl|providers\/wsl)|src\/shared\/(?:wsl-|windows-terminal-shell|shell-argument-quoting)|src\/renderer\/src\/.*(?:terminal-paste|pty-paste)|tests\/e2e\/(?:golden-tab-bar-agent-launch\.spec|terminal-windows-shell-paste-ownership\.spec|terminal-inline-images-windows\.spec|wsl-bridge-no-background-boot\.spec|helpers\/(?:wsl-golden-stub-agent|golden-stub-agent))|\.github\/(?:actions\/setup-wsl-test-runtime\/|workflows\/windows-wsl-e2e\.yml))/.test(
|
||||
/^(?:config\/scripts\/(?:verify-wsl-e2e-participation|verify-wsl-no-background-boot-participation|verify-playwright-participation)\.mjs$|src\/main\/(?:wsl[/-]|pty\/.*wsl|providers\/wsl)|src\/shared\/(?:wsl-|windows-terminal-shell|shell\/launch\/shell-argument-quoting)|src\/renderer\/src\/.*(?:terminal-paste|pty-paste)|tests\/e2e\/(?:golden-tab-bar-agent-launch\.spec|terminal-windows-shell-paste-ownership\.spec|terminal-inline-images-windows\.spec|wsl-bridge-no-background-boot\.spec|helpers\/(?:wsl-golden-stub-agent|golden-stub-agent))|\.github\/(?:actions\/setup-wsl-test-runtime\/|workflows\/windows-wsl-e2e\.yml))/.test(
|
||||
file
|
||||
)
|
||||
}
|
||||
|
||||
@@ -47,7 +47,9 @@ for (const [name, value] of [
|
||||
}
|
||||
|
||||
const { capTerminalScrollbackSessionBuffer } = await import(
|
||||
pathToFileURL(path.join(ROOT, 'src/shared/workspace-session-terminal-buffers.ts')).href
|
||||
pathToFileURL(
|
||||
path.join(ROOT, 'src/shared/workspace-session/workspace-session-terminal-buffers.ts')
|
||||
).href
|
||||
)
|
||||
const { TERMINAL_SCROLLBACK_SESSION_BUFFER_BYTE_LIMIT } = await import(
|
||||
pathToFileURL(path.join(ROOT, 'src/shared/terminal/replay/terminal-scrollback-limits.ts')).href
|
||||
@@ -60,7 +62,7 @@ const { clampUtf8TextTail, measureUtf8ByteLength } = await import(
|
||||
pathToFileURL(path.join(ROOT, 'src/shared/utf8-byte-limits.ts')).href
|
||||
)
|
||||
const { isTerminalLeafId, makePaneKey, parsePaneKey } = await import(
|
||||
pathToFileURL(path.join(ROOT, 'src/shared/stable-pane-id.ts')).href
|
||||
pathToFileURL(path.join(ROOT, 'src/shared/workspace-layout/stable-pane-id.ts')).href
|
||||
)
|
||||
|
||||
function median(samples) {
|
||||
|
||||
@@ -18,7 +18,7 @@ const layoutFunctions = layoutAst.statements.filter(
|
||||
(node) => ts.isFunctionDeclaration(node) && layoutNames.includes(node.name?.text)
|
||||
)
|
||||
assert.equal(layoutFunctions.length, layoutNames.length)
|
||||
const layoutSubset = `import { isTerminalLeafId } from '../../../../shared/stable-pane-id';
|
||||
const layoutSubset = `import { isTerminalLeafId } from '../../../../shared/workspace-layout/stable-pane-id';
|
||||
import { readSplitRatio, SPLIT_RATIO_TOLERANCE } from '@/lib/pane-manager/pane-split-ratio';
|
||||
${layoutFunctions.map((node) => node.getText(layoutAst)).join('\n')}`
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ const NODE_RUNTIME_INCLUDE = [
|
||||
'src/main/browser/guest-lifecycle/popups/browser-popup-native-compatibility.electron.test.ts',
|
||||
'src/main/browser/guest-lifecycle/popups/browser-popup-background-compatibility.electron.test.ts',
|
||||
'src/main/ai-vault/scanners/devin/session-scanner-devin-db.test.ts',
|
||||
'src/shared/workspace-session-salvage.test.ts',
|
||||
'src/shared/workspace-session/workspace-session-salvage.test.ts',
|
||||
'src/main/git/repo-detection.test.ts',
|
||||
'src/renderer/src/components/browser-pane/annotate/browser-grab-toast-owner-cleanup.test.tsx',
|
||||
'src/main/window/native-chat-paste-files.test.ts',
|
||||
|
||||
@@ -9,7 +9,7 @@ describe('real WSL terminal lane', () => {
|
||||
'src/main/wsl/execution/wsl-runner.ts',
|
||||
'src/main/pty/shell-startup/wsl-orca-env.ts',
|
||||
'src/shared/wsl-login-shell-command.ts',
|
||||
'src/shared/shell-argument-quoting.ts',
|
||||
'src/shared/shell/launch/shell-argument-quoting.ts',
|
||||
'src/shared/windows-terminal-shell.ts',
|
||||
'tests/e2e/helpers/wsl-golden-stub-agent.ts',
|
||||
'tests/e2e/golden-tab-bar-agent-launch.spec.ts',
|
||||
|
||||
@@ -131,7 +131,9 @@ async function main() {
|
||||
const { buildWslLoginShellCommand } = await jiti.import(
|
||||
'../../src/shared/wsl-login-shell-command.ts'
|
||||
)
|
||||
const { quotePosixShell } = await jiti.import('../../src/shared/shell-argument-quoting.ts')
|
||||
const { quotePosixShell } = await jiti.import(
|
||||
'../../src/shared/shell/launch/shell-argument-quoting.ts'
|
||||
)
|
||||
|
||||
const loginProbe = buildWslLoginShellCommand(
|
||||
`printf '\\n__ORCA_PATH__%s\\n__ORCA_GIT__%s\\n__ORCA_HOME__%s\\n' "$PATH" "$(command -v git)" "$HOME"`
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
parseExecutionHostId,
|
||||
type ExecutionHostId
|
||||
} from '../../../src/shared/execution-host'
|
||||
import { parsePaneKey } from '../../../src/shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../src/shared/workspace-layout/stable-pane-id'
|
||||
import { hostScopeCensusIsComplete } from '../../../src/shared/runtime-listing-host-scope'
|
||||
import { salvagingArray } from '../../../src/shared/zod-salvage'
|
||||
import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation'
|
||||
|
||||
@@ -97,7 +97,7 @@ vi.mock('expo-file-system', () => {
|
||||
vi.mock('expo-clipboard', () => ({}))
|
||||
vi.mock('expo-document-picker', () => ({}))
|
||||
vi.mock('expo-image-picker', () => ({}))
|
||||
vi.mock('../../modules/orca-mobile-web-shell/src', () => ({
|
||||
vi.mock('../../modules/orca-mobile-web-shell/src/index', () => ({
|
||||
presentPdf: async (uri: string) => {
|
||||
device.presentations.push(uri)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
import { isTerminalLeafId } from '../../../src/shared/stable-pane-id'
|
||||
import { isValidHostTerminalTabId } from '../../../src/shared/terminal-tab-id'
|
||||
import { isTerminalLeafId } from '../../../src/shared/workspace-layout/stable-pane-id'
|
||||
import { isValidHostTerminalTabId } from '../../../src/shared/workspace-layout/terminal-tab-id'
|
||||
import { structuredSessionOperationId } from './structured-session-operation-id'
|
||||
import type { RpcClient } from '../transport/rpc-client'
|
||||
import { markRpcDeliveryUnknown } from '../transport/rpc-delivery-ambiguity'
|
||||
|
||||
@@ -11,7 +11,7 @@ import type {
|
||||
} from '../../../src/shared/agent-launch/contracts/agent-launch-intent'
|
||||
import { isStructuredAgentId } from '../../../src/shared/agent-session/lifecycle/agent-session-provider-handle-encoding'
|
||||
import { AGENT_LAUNCH_TAB_CLOSED_CODE } from '../../../src/shared/agent-launch/contracts/agent-launch-tab-closed'
|
||||
import { makePaneKey } from '../../../src/shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../../src/shared/workspace-layout/stable-pane-id'
|
||||
import { createStructuredAgentSessionId } from '../../../src/shared/agent-session/structured-agent-session-create'
|
||||
import type { TuiAgent } from '../../../src/shared/agent-launch/catalog/tui-agent'
|
||||
import type { RpcClient } from '../transport/rpc-client'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { stripLeadingAgentTitleDecorationOrEmpty } from '../../../src/shared/agent-status/title/agent-title-decoration'
|
||||
import { isClaudeManagementTitle } from '../../../src/shared/agent-status/title/agent-title-core'
|
||||
import { isShellProcess } from '../../../src/shared/shell-process-detection'
|
||||
import { isShellProcess } from '../../../src/shared/agent-status/process/shell-process-detection'
|
||||
import { agentTypeToIconAgent } from '../../../src/shared/agent-status/presentation/agent-type-icon-agent'
|
||||
import { resolveTabAgentFromSignalSnapshot } from '../../../src/shared/tab-agent-from-signals'
|
||||
import type { AgentStatusEntry } from '../../../src/shared/agent-status/contracts/agent-status-types'
|
||||
|
||||
@@ -3,7 +3,7 @@ import { isRpcDeliveryUnknown } from '../../transport/rpc-delivery-ambiguity'
|
||||
import { isLogicalClientCutoverError } from '../../transport/stable-logical-rpc-client'
|
||||
import { nativeChatTerminalWrite } from '../mobile-session-write-operations'
|
||||
import { typeAgentTuiCommand } from '../../../../src/shared/agent-launch/startup/agent-tui-command-typing'
|
||||
import { readTerminalSendAcknowledgment } from '../../../../src/shared/terminal-send-acknowledgment'
|
||||
import { readTerminalSendAcknowledgment } from '../../../../src/shared/terminal/pty/lifecycle/terminal-send-acknowledgment'
|
||||
import {
|
||||
AGENT_TUI_CLEAR_MAX_LINES,
|
||||
countAgentTuiInputLines,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { parsePaneKey } from '../../../src/shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../src/shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
structuredAgentSessionPaneKey,
|
||||
structuredAgentSessionTabId
|
||||
|
||||
@@ -6,7 +6,7 @@ import type {
|
||||
AgentLaunchOutcome,
|
||||
AgentLaunchPromptReceipt
|
||||
} from '../../../src/shared/agent-launch/contracts/agent-launch-intent'
|
||||
import { parsePaneKey } from '../../../src/shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../src/shared/workspace-layout/stable-pane-id'
|
||||
import type { RpcClient } from '../transport/rpc-client'
|
||||
import { markRpcDeliveryUnknown } from '../transport/rpc-delivery-ambiguity'
|
||||
import type { RpcResponse } from '../transport/types'
|
||||
|
||||
@@ -8,7 +8,7 @@ import { RuntimeClientError } from '../runtime-client'
|
||||
import { stripElectronRunAsNode } from '../runtime/orca-app-executable'
|
||||
import { rejectRemoteSelectionFlags } from '../remote-selection-flag-rejection'
|
||||
import { buildWslExecArgs, buildWslLoginShellCommand } from '../../shared/wsl-login-shell-command'
|
||||
import { quotePosixShell } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShell } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
import { isWindowsFnmDefaultAliasDir } from '../../shared/fnm-default-alias-dirs'
|
||||
import {
|
||||
getVersionManagerBinPaths,
|
||||
|
||||
@@ -6,7 +6,7 @@ import type { CommandHandler } from '../dispatch'
|
||||
import { formatTerminalClose, reportCliError, printResult } from '../format'
|
||||
import { RuntimeClientError } from '../runtime-client'
|
||||
import { getRequiredWorktreeSelector, getTerminalHandle } from '../selectors'
|
||||
import { describeUnconfirmedCloseStop } from '../../shared/pty-liveness-verdict'
|
||||
import { describeUnconfirmedCloseStop } from '../../shared/terminal/pty/lifecycle/pty-liveness-verdict'
|
||||
|
||||
/** A false stop receipt is an error only when the host supplied a liveness verdict. */
|
||||
function terminalCloseFailure(close: RuntimeTerminalClose): RuntimeClientError | null {
|
||||
|
||||
@@ -2,7 +2,7 @@ import type { CommandHandler } from '../dispatch'
|
||||
import {
|
||||
describePtyProcessCeiling,
|
||||
type PtyProcessCeilingState
|
||||
} from '../../shared/pty-process-ceiling-state'
|
||||
} from '../../shared/terminal/pty/native-process/pty-process-ceiling-state'
|
||||
import { printResult } from '../format'
|
||||
import { RuntimeClientError } from '../runtime-client'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../shared/shell/launch/shell-argument-quoting'
|
||||
import { RuntimeClientError, RuntimeRpcFailureError } from './runtime-client'
|
||||
import {
|
||||
recoverableOrchestrationArgs,
|
||||
|
||||
@@ -16,7 +16,7 @@ vi.mock('./runtime-client', () => ({
|
||||
}))
|
||||
vi.mock('./runtime/environments', () => ({ resolveEnvironment: mocks.resolveEnvironment }))
|
||||
|
||||
import type { TerminalPaneRevealTarget } from '../shared/terminal-pane-reveal'
|
||||
import type { TerminalPaneRevealTarget } from '../shared/workspace-layout/terminal-pane-reveal'
|
||||
import type { RuntimeClient } from './runtime-client'
|
||||
import { revealPairedTerminalOnLocalDesktop } from './paired-terminal-desktop-reveal'
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { toRuntimeExecutionHostId } from '../shared/execution-host'
|
||||
import type { RuntimeTerminalShow } from '../shared/runtime-types'
|
||||
import type { RuntimeTerminalReveal } from '../shared/terminal-pane-reveal'
|
||||
import type { RuntimeTerminalReveal } from '../shared/workspace-layout/terminal-pane-reveal'
|
||||
import { RuntimeClient } from './runtime-client'
|
||||
import { resolveEnvironment } from './runtime/environments'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { quotePosixShell } from '../shared/shell-argument-quoting'
|
||||
import { quotePosixShell } from '../shared/shell/launch/shell-argument-quoting'
|
||||
|
||||
export function quoteCliCommandArgument(value: string): string {
|
||||
if (/^[a-zA-Z0-9._:/@-]+$/.test(value)) {
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import { PTY_LIVE_NOTE, describeUnconfirmedCloseStop } from '../shared/pty-liveness-verdict'
|
||||
import {
|
||||
PTY_LIVE_NOTE,
|
||||
describeUnconfirmedCloseStop
|
||||
} from '../shared/terminal/pty/lifecycle/pty-liveness-verdict'
|
||||
import { describeTerminalWaitBlockedReason } from '../shared/terminal/runtime-policy/terminal-wait-blocked-reason-legacy-alias'
|
||||
import { formatListingHostScope, type WithAnnotatedHostScope } from './omitted-host-scope-selectors'
|
||||
import type {
|
||||
|
||||
@@ -2,7 +2,7 @@ import { mkdtempSync, rmSync } from 'node:fs'
|
||||
import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
import { buildBody, postHookEvent } from './server.test-fixtures'
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import type { vi } from 'vitest'
|
||||
import type { GlobalSettings } from '../../shared/global-settings-types'
|
||||
import type { Repo } from '../../shared/repo-types'
|
||||
import { WORKTREE_ID_SEPARATOR } from '../../shared/worktree/id'
|
||||
import '../../shared/worktree/id'
|
||||
import { WORKTREE_ID_SEPARATOR } from '../../shared/terminal/pty/lifecycle/pty-session-id-format'
|
||||
import type {
|
||||
FirstWorkBranchRenameDeps,
|
||||
FirstWorkBranchRenameEvent
|
||||
|
||||
@@ -7,7 +7,8 @@ import type { AgentJournalRenderItem } from '../../shared/agent-session/journal/
|
||||
import type { AgentSessionJournal } from '../native-chat/agent-session-journal/journal-store'
|
||||
import { StructuredAgentSessionStatusFeed } from '../native-chat/agent-session-wire/structured-agent-session-status-feed'
|
||||
import { maybeAutoRenameWorkspaceOnFirstStructuredTurn } from './first-work-structured-session-rename'
|
||||
import { WORKTREE_ID_SEPARATOR } from '../../shared/worktree/id'
|
||||
import '../../shared/worktree/id'
|
||||
import { WORKTREE_ID_SEPARATOR } from '../../shared/terminal/pty/lifecycle/pty-session-id-format'
|
||||
|
||||
const {
|
||||
gitExecFileAsyncMock,
|
||||
|
||||
@@ -3,7 +3,7 @@ import type { Repo } from '../../shared/repo-types'
|
||||
import { isFolderRepo } from '../../shared/repo-kind'
|
||||
import { getRepoIdFromWorktreeId, splitWorktreeIdForFilesystem } from '../../shared/worktree/id'
|
||||
import { parseWorkspaceKey } from '../../shared/workspace-scope'
|
||||
import { parsePaneKey } from '../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
humanizeBranchSlug,
|
||||
isAutoGeneratedCreatureBranchName,
|
||||
|
||||
@@ -9,7 +9,7 @@ import { seedClaudeSubagentRosterFromSnapshots } from '../../shared/agent-hook-l
|
||||
import type { AgentHookEventPayload } from '../../shared/agent-hook-listener/listener-event'
|
||||
import type { AgentHookRelayEnvelope } from '../../shared/agent-hook-listener/transport/agent-hook-relay'
|
||||
import type { AgentSubagentSnapshot } from '../../shared/agent-status/contracts/agent-status-subagent-snapshot'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
|
||||
vi.mock('../telemetry/client', () => ({ track: vi.fn() }))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
|
||||
vi.mock('../telemetry/client', () => ({ track: vi.fn() }))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { quotePosixShell } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShell } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
import { POSIX_HOOK_STDIN_DRAIN_COMMAND } from './hook-stdin-contract'
|
||||
|
||||
// Missing scripts must become silent no-ops rather than fail every tool call.
|
||||
|
||||
@@ -4,7 +4,7 @@ import { join } from 'node:path'
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import type { AgentSubagentSnapshot } from '../../shared/agent-status/contracts/agent-status-subagent-snapshot'
|
||||
import { isLocalExecutionHost } from '../../shared/execution-host'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { toAppSshPtyId } from '../../shared/ssh-pty-id'
|
||||
import { AgentHookServer } from './server'
|
||||
import { buildBody, postHookEvent } from './server.test-fixtures'
|
||||
|
||||
@@ -3,7 +3,7 @@ import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest'
|
||||
import { AgentHookServer } from './server'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { buildBody, LEAF_1, PANE, postHookEvent } from './server.test-fixtures'
|
||||
|
||||
vi.mock('../telemetry/client', () => ({ track: vi.fn() }))
|
||||
|
||||
@@ -2,7 +2,7 @@ import { mkdtemp, rm } from 'node:fs/promises'
|
||||
import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
|
||||
const PANE = makePaneKey('external-live', '11111111-1111-4111-8111-111111111111')
|
||||
|
||||
@@ -2,7 +2,7 @@ import { createHash } from 'node:crypto'
|
||||
import { afterEach, describe, expect, it } from 'vitest'
|
||||
import type { AgentHookEventPayload } from '../../shared/agent-hook-listener/listener-event'
|
||||
import { seedLegacyAgentStatusForTests } from '../../shared/agent-hook-listener/listener-state'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
|
||||
const PANE_KEY = makePaneKey('tab-authority', '11111111-1111-4111-8111-111111111111')
|
||||
|
||||
@@ -2,7 +2,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { createHash } from 'node:crypto'
|
||||
import { AgentHookServer, _internals } from './server'
|
||||
import { CLOSED_AGENT_STATUS_TAB_IDS_MAX } from './server/server-constants'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
buildBody,
|
||||
PANE,
|
||||
|
||||
@@ -4,7 +4,7 @@ import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
|
||||
import { AgentHookServer } from './server'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
|
||||
const PANE_KEY = makePaneKey('tab-1', '11111111-1111-4111-8111-111111111111')
|
||||
const CHILD_ID = '019fa65f-3144-7151-9c02-cff7a28f316f'
|
||||
|
||||
@@ -3,7 +3,7 @@ import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import * as agentHookListener from '../../shared/agent-hook-listener/grok-result-discovery'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
|
||||
const PANE_KEY = makePaneKey('tab-1', '11111111-1111-4111-8111-111111111111')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { AgentHookServer, _internals } from './server'
|
||||
import { AGENT_STATUS_MAX_FIELD_LENGTH } from '../../shared/agent-status/contracts/agent-status-field-normalization'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { buildBody, PANE, LEAF_2, LEAF_3 } from './server.test-fixtures'
|
||||
|
||||
const { getCohortAtEmitMock, trackMock } = vi.hoisted(() => ({
|
||||
|
||||
@@ -4,7 +4,7 @@ import { join } from 'node:path'
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
import type { AgentHookServer } from './server'
|
||||
import { PANE } from './server.test-fixtures'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
NOW,
|
||||
CLAUDE,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { PANE } from './server.test-fixtures'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
readHookRootEvidence,
|
||||
type HookPaneRoot
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { AgentHookServer, _internals } from './server'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
buildBody,
|
||||
postHookEvent,
|
||||
|
||||
@@ -5,7 +5,7 @@ import { join } from 'node:path'
|
||||
|
||||
import { AgentHookServer } from './server'
|
||||
import type { EnrichedAgentHookEventPayload } from './server/server-types'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
|
||||
const PANE_KEY = makePaneKey('tab-1', '11111111-1111-4111-8111-111111111111')
|
||||
const SESSION_ID = '01a0caa3-0e77-7d41-bad7-46283a45633d'
|
||||
|
||||
@@ -3,7 +3,7 @@ import { existsSync, mkdtempSync, readFileSync, rmSync } from 'node:fs'
|
||||
import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { AgentHookServer, _internals } from './server'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import type { AgentStatusObservation } from '../../shared/agent-status/contracts/agent-status-observation'
|
||||
|
||||
const { getCohortAtEmitMock, trackMock } = vi.hoisted(() => ({
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import type { AgentHookSource } from '../../shared/agent-hook-listener/transport/agent-hook-relay'
|
||||
import { lookupOpenCodeSessionPane } from '../../shared/agent-hook-listener/opencode-session-registry'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import type {
|
||||
BinderSessionRow,
|
||||
OpenCodeSessionCursor
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { afterEach, describe, expect, it } from 'vitest'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
|
||||
const PANE = makePaneKey('tab-opencode', '11111111-1111-4111-8111-111111111111')
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
lookupOpenCodePaneLaunchToken,
|
||||
lookupOpenCodeSessionPane
|
||||
} from '../../shared/agent-hook-listener/opencode-session-registry'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
|
||||
const PANE_A = makePaneKey('tab-a', 'aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa')
|
||||
const PANE_B = makePaneKey('tab-b', 'bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
import { PANE_KEY_ALIASES_MAX } from './server/server-constants'
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
|
||||
import { AgentHookServer, _internals } from './server'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { LEAF_1 } from './server.test-fixtures'
|
||||
|
||||
const REMOVED = 'repo::/removed'
|
||||
|
||||
@@ -3,7 +3,7 @@ import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'nod
|
||||
import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { AgentHookServer, _internals } from './server'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { LEAF_1, LEAF_2, LEAF_3, LEAF_4, LEAF_5, recentTs } from './server.test-fixtures'
|
||||
|
||||
const REMOVED = 'repo-1::/workspace/removed'
|
||||
|
||||
@@ -21,7 +21,7 @@ vi.mock('../telemetry/cohort-classifier', () => ({ getCohortAtEmit: getCohortAtE
|
||||
|
||||
import { AgentHookServer, _internals } from './server'
|
||||
import { RelayAgentHookServer } from '../../wsl-guest/agent-hook-server'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
|
||||
const PANE = makePaneKey('tab-lifecycle', '11111111-1111-4111-8111-111111111111')
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { mkdtempSync, rmSync } from 'node:fs'
|
||||
import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { AgentHookServer, _internals } from './server'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
buildBody,
|
||||
PANE,
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
type AgentStatusStructuredSessionSubject
|
||||
} from '../../shared/agent-status/contracts/agent-status-subject'
|
||||
import type { AgentSessionStatusSummary } from '../../shared/agent-session/agent-session-wire'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
structuredAgentSessionPaneKey,
|
||||
structuredAgentSessionTabId
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServer } from './server'
|
||||
|
||||
const PANE_KEY = makePaneKey('tab-question', '11111111-1111-4111-8111-111111111111')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import type { AgentHookServer } from './server'
|
||||
|
||||
export const LEAF_1 = '11111111-1111-4111-8111-111111111111'
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
import type { AgentProviderSessionMetadata } from '../../../shared/agent-session/lifecycle/agent-session-resume'
|
||||
|
||||
export type LaunchResumeIdentityEvent = {
|
||||
paneKey: string
|
||||
worktreeId?: string
|
||||
agentType: string
|
||||
providerSession: AgentProviderSessionMetadata
|
||||
/** When the pane's process launched; a row reported since then is the agent's own. */
|
||||
launchedAt: number
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
} from '../../../shared/agent-hook-listener/listener-state'
|
||||
import { AGENT_STATUS_2A_CURRENT_PRODUCER_MODE } from '../../../shared/agent-status/transport/agent-status-legacy-adapter'
|
||||
import { canRegisterPaneKeyAlias, isOpaqueRemintedPaneKey } from '../../../shared/pane-key-alias'
|
||||
import { parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import { PANE_KEY_ALIASES_MAX } from './server-constants'
|
||||
import type { EnrichedAgentHookEventPayload, PaneKeyAliasPersistenceListener } from './server-types'
|
||||
import type { LegacyPaneKeyAliasEntry } from '../../../shared/persisted-state-types'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { clearPaneCacheState } from '../../../shared/agent-hook-listener/listener-state'
|
||||
import { parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import { AgentHookServerAuthorityAliases } from './server-authority-aliases'
|
||||
import type {
|
||||
EnrichedAgentHookEventPayload,
|
||||
|
||||
@@ -18,7 +18,7 @@ import {
|
||||
resolveLegacyCompactTrigger
|
||||
} from '../../../shared/agent-hook-listener/providers/claude-compact-completion'
|
||||
import { launchTokenHash } from '../../../shared/agent-hook-listener/transport/agent-hook-spool'
|
||||
import { parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import type { IncomingAgentHookEvent } from './server-types'
|
||||
import {
|
||||
AGENT_STATUS_LEGACY_UNADVERTISED_PEER_CAPABILITIES,
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import type { LaunchResumeIdentityEvent } from './launch-resume-identity-event'
|
||||
import { trackEmptyPaneKeyHook } from './server-transport-rules'
|
||||
import { MAX_PANE_KEY_LEN } from '../../../shared/agent-hook-listener/listener-limits'
|
||||
import { parseLegacyNumericPaneKey, parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import {
|
||||
parseLegacyNumericPaneKey,
|
||||
parsePaneKey
|
||||
} from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import { terminalStatusPayloadMatchesHook } from '../../../shared/agent-status/lifecycle/agent-terminal-status-equivalence'
|
||||
import type { ParsedAgentStatusPayload } from '../../../shared/agent-status/contracts/agent-status-types'
|
||||
import {
|
||||
agentProviderSessionsEqual,
|
||||
type AgentProviderSessionMetadata
|
||||
} from '../../../shared/agent-session/lifecycle/agent-session-resume'
|
||||
import { agentProviderSessionsEqual } from '../../../shared/agent-session/lifecycle/agent-session-resume'
|
||||
import type { EnrichedAgentHookEventPayload } from './server-types'
|
||||
import type { AgentHookEventPayload } from '../../../shared/agent-hook-listener/listener-event'
|
||||
import { agentSubagentsEqual } from '../../../shared/agent-status/contracts/agent-status-subagent-snapshot'
|
||||
@@ -19,14 +20,7 @@ const PROGRAM_STATUS_FACET_REPUBLISH_MS = 250
|
||||
|
||||
export abstract class AgentHookServerIngestTerminal extends AgentHookServerIngestNormalization {
|
||||
/** Seed resume identity before the first hook; Codex SessionStart waits for the first turn (#10923). */
|
||||
recordLaunchResumeIdentity(event: {
|
||||
paneKey: string
|
||||
worktreeId?: string
|
||||
agentType: string
|
||||
providerSession: AgentProviderSessionMetadata
|
||||
/** When the pane's process launched; a row reported since then is the agent's own. */
|
||||
launchedAt: number
|
||||
}): void {
|
||||
recordLaunchResumeIdentity(event: LaunchResumeIdentityEvent): void {
|
||||
const paneKey = this.resolvePaneKeyAlias(event.paneKey.trim())
|
||||
const parsedPaneKey = parsePaneKey(paneKey)
|
||||
if (!parsedPaneKey || paneKey.length > MAX_PANE_KEY_LEN) {
|
||||
|
||||
@@ -2,7 +2,7 @@ import {
|
||||
AgentHookStartup,
|
||||
listenForAgentHooks
|
||||
} from '../../../shared/agent-hook-listener/transport/agent-hook-startup'
|
||||
import { parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import { createServer, type IncomingMessage, type ServerResponse } from 'node:http'
|
||||
import { randomUUID } from 'node:crypto'
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import { serializeAgentStatusSubject } from '../../../shared/agent-status/contra
|
||||
import { structuredStatusLegacyEvent } from './server-structured-status-row'
|
||||
import { PaneTimers } from './program-status/pane-timers'
|
||||
import { ProgramStatusFacetStore } from './program-status/facet-store'
|
||||
import { parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../shared/workspace-layout/stable-pane-id'
|
||||
|
||||
// Unassigned rows sort after the listing counter, which starts at 1.
|
||||
const UNORDERED_STATUS_ROW = Number.MAX_SAFE_INTEGER
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
normalizeClaudePromptId,
|
||||
normalizeGrokPromptId
|
||||
} from '../../../shared/agent-hook-listener/listener-limits'
|
||||
import { parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import type { AgentHookAuthorityEvidence, EnrichedAgentHookEventPayload } from './server-types'
|
||||
import { isValidPaneKey, isValidPiProviderSessionOnly } from './server-status-identity'
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { createHash } from 'node:crypto'
|
||||
|
||||
import { isNewTurnEvent } from '../../../shared/agent-hook-listener/provider-event-routing'
|
||||
import { parseLegacyNumericPaneKey, parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import {
|
||||
parseLegacyNumericPaneKey,
|
||||
parsePaneKey
|
||||
} from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import type { AgentHookSource } from '../../../shared/agent-hook-listener/transport/agent-hook-relay'
|
||||
import {
|
||||
CLOSED_AGENT_STATUS_PANE_KEYS_MAX,
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import type { AgentKind } from '../../../shared/telemetry-events'
|
||||
import { getAgentResumeArgv } from '../../../shared/agent-launch/startup/agent-resume-argv'
|
||||
import type { AgentProviderSessionMetadata } from '../../../shared/agent-session/lifecycle/agent-session-resume'
|
||||
import { parseLegacyNumericPaneKey, parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import {
|
||||
parseLegacyNumericPaneKey,
|
||||
parsePaneKey
|
||||
} from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
pickHostTurnEnd,
|
||||
type AgentType
|
||||
|
||||
@@ -22,7 +22,7 @@ import { AgentHookServer, _internals } from './server'
|
||||
import { buildBody } from './server.test-fixtures'
|
||||
import { _internals as codexInternals } from '../codex/hooks/installation/hook-service'
|
||||
import { getManagedScript as getClaudeManagedScript } from '../claude/hook-script'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { buildPosixHookSpoolLines } from './hook-stdin-contract'
|
||||
|
||||
describe('agent hook spool', () => {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { decideAgentLaunchIntentMode } from './agent-launch-intent-mode'
|
||||
* The host needs the created workspace to answer; a definitive refusal starts a terminal agent. */
|
||||
|
||||
import { assertAgentPromptRequestActive } from '../runtime/orca-runtime-core'
|
||||
import { parsePaneKey } from '../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import {
|
||||
type AgentLaunchResult,
|
||||
withoutReservedAgentCreateFields,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/** Chat defaults may fall back; explicit chat is refused only conclusively before launch effects. */
|
||||
|
||||
import { requestsCwdOutsideWorkspaceRoot } from '../../shared/terminal-startup-cwd'
|
||||
import { requestsCwdOutsideWorkspaceRoot } from '../../shared/shell/launch/terminal-startup-cwd'
|
||||
import type {
|
||||
AgentLaunchModeReason,
|
||||
AgentLaunchModeReceipt
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/** Use process-local launch state; after restart, ordinary pane attachment handles recovery. */
|
||||
|
||||
import type { AgentLaunchPaneVerdict } from '../../shared/agent-launch/contracts/agent-launch-pane-verdict'
|
||||
import { parsePaneKey } from '../../shared/stable-pane-id'
|
||||
import type { TerminalSurfaceCloseTarget } from '../../shared/terminal-surface-close-target'
|
||||
import { parsePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import type { TerminalSurfaceCloseTarget } from '../../shared/workspace-layout/terminal-surface-close-target'
|
||||
|
||||
const PROCEED: AgentLaunchPaneVerdict = { kind: 'proceed' }
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { TUI_AGENT_CONFIG, isTuiAgent } from '../../../shared/agent-launch/catalog/tui-agent-config'
|
||||
import type { GlobalSettings } from '../../../shared/global-settings-types'
|
||||
import { resolveTerminalWorkspacePath } from '../../../shared/terminal-startup-cwd'
|
||||
import { resolveTerminalWorkspacePath } from '../../../shared/shell/launch/terminal-startup-cwd'
|
||||
import {
|
||||
applyAgentWorkspaceTrust,
|
||||
type AgentTrustLaunchContext,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Capture sign-in URLs on stderr so remote hosts never open a browser.
|
||||
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
import { runProcess } from '@orca/process-host'
|
||||
|
||||
export const ANTIGRAVITY_BROWSER_MARKER = '__ORCA_ANTIGRAVITY_AUTH_URL__'
|
||||
|
||||
@@ -30,7 +30,7 @@ import {
|
||||
ANTIGRAVITY_PRE_TOOL_USE_DECISION,
|
||||
type AntigravityEvent
|
||||
} from './hook-events'
|
||||
import { quotePosixShell } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShell } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
import { HOOK_PARENT_CAPTURE } from '../agent-hooks/hook-process-capture'
|
||||
import { getManagedScript, getWindowsWrapperScript } from './hook-script'
|
||||
import {
|
||||
|
||||
@@ -10,7 +10,7 @@ import { spawnProcess } from '@orca/process-host'
|
||||
import { AntigravityHookService } from './hook-service'
|
||||
import { ANTIGRAVITY_PRE_TOOL_USE_DECISION } from './hook-events'
|
||||
import { wrapPosixHookCommand } from '../agent-hooks/posix-hook-command'
|
||||
import { quotePosixShell } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShell } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
import { readAgentProcess } from '../../shared/agent-status/process/agent-process-presence-probe'
|
||||
import {
|
||||
buildSpoolHookBody,
|
||||
|
||||
@@ -3,7 +3,7 @@ import type { OrcaRuntimeService } from '../runtime/orca-runtime'
|
||||
import type { AutomationRun } from '../../shared/automations-types'
|
||||
import type { AutomationChatAgentLaunch } from './automation-chat-agent-launch'
|
||||
import { tuiAgentDisplayName } from '../../shared/agent-launch/catalog/tui-agent-display-names'
|
||||
import { parsePaneKey } from '../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { readAutomationRunReceipt } from './automation-run-receipt'
|
||||
import { AutomationRunLaunchError } from './headless-dispatch'
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import type { ClientChannel } from 'ssh2'
|
||||
import type { AutomationPrecheck, AutomationPrecheckResult } from '../../shared/automations-types'
|
||||
import { MAX_AUTOMATION_PRECHECK_OUTPUT_CHARS } from '../../shared/automation-precheck'
|
||||
import { getSshConnectionManager } from '../ssh/targets/ssh-target-registry'
|
||||
import { quotePosixShell } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShell } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
import { admitSelfInitiatedTreeKill } from '../pty/process-retirement/own-chromium-tree-kill-guard'
|
||||
import { errorMessage } from '../../shared/error-message'
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ import { EventEmitter } from 'node:events'
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import type { BrowserPage, BrowserWorkspace } from '../../../../shared/browser-workspace-types'
|
||||
import type { ExecutionHostId } from '../../../../shared/execution-host'
|
||||
import type { WorkspaceSessionState } from '../../../../shared/workspace-session-state-types'
|
||||
import type { WorkspaceSessionState } from '../../../../shared/workspace-session/workspace-session-state-types'
|
||||
import type { BrowserExtensionCaller } from '../api-runtime/browser-extension-namespace-registry'
|
||||
|
||||
type FakeSession = { name: string }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { webContents } from 'electron'
|
||||
import type { Store } from '../../../persistence/loading-store/store'
|
||||
import type { BrowserWorkspace } from '../../../../shared/browser-workspace-types'
|
||||
import type { WorkspaceSessionState } from '../../../../shared/workspace-session-state-types'
|
||||
import type { WorkspaceSessionState } from '../../../../shared/workspace-session/workspace-session-state-types'
|
||||
import { browserManager } from '../../browser-manager'
|
||||
import { emitBrowserExtensionEvent } from '../api-runtime/browser-extension-api-host'
|
||||
import {
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
type WindowsHostInteractiveLoginSpawn
|
||||
} from '../../shared/windows-interactive-login-spawn'
|
||||
import { buildWslExecArgs, buildWslLoginShellCommand } from '../../shared/wsl-login-shell-command'
|
||||
import { quotePosixShell } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShell } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
import { resolveClaudeCommand } from '../codex-cli/command'
|
||||
import {
|
||||
isSpawnEnoent,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { randomUUID } from 'node:crypto'
|
||||
import { z } from 'zod'
|
||||
import { parsePaneKey } from '../../../shared/stable-pane-id'
|
||||
import { parsePaneKey } from '../../../shared/workspace-layout/stable-pane-id'
|
||||
import { claudeAgentViewChord } from './agent-view-keybindings'
|
||||
import {
|
||||
CLAUDE_AGENT_VIEW_SHORTCUTS,
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
} from '../../shared/agent-hook-listener/listener-state'
|
||||
import { seedClaudeSubagentRosterFromSnapshots } from '../../shared/agent-hook-listener/providers/claude-roster-state'
|
||||
import type { AgentHookEventPayload } from '../../shared/agent-hook-listener/listener-event'
|
||||
import { makePaneKey } from '../../shared/stable-pane-id'
|
||||
import { makePaneKey } from '../../shared/workspace-layout/stable-pane-id'
|
||||
import { CLAUDE_HOOK_EVENT_FIRST_VERSIONS } from './claude-hook-event-versions'
|
||||
import { CLAUDE_EVENTS, getClaudeManagedHookPlan } from './claude-managed-hook-events'
|
||||
import { applyManagedHooks } from './hook-settings'
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
} from 'node:fs'
|
||||
import { dirname, join, resolve } from 'node:path'
|
||||
import { LINUX_CLI_COMMAND_NAME } from './bundled-cli-launcher-path'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
|
||||
const LAUNCHER_DIRECTORY_NAME = 'launcher'
|
||||
const LIVE_ENDPOINT_NAME = 'live'
|
||||
|
||||
@@ -4,7 +4,7 @@ import { basename, dirname, join } from 'node:path'
|
||||
import type { CliInstallStatus } from '../../shared/cli-install-types'
|
||||
import { isPermissionError } from '../filesystem/permission-errors'
|
||||
import { isMissingError } from './cli-install-errors'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
|
||||
export type EntryIdentity = {
|
||||
dev: bigint
|
||||
|
||||
@@ -3,7 +3,7 @@ import { mkdir, writeFile } from 'node:fs/promises'
|
||||
import { dirname, isAbsolute, join } from 'node:path'
|
||||
import { DEV_COMMAND_NAME, DEV_LAUNCHER_DIR } from './cli-install-constants'
|
||||
import { escapeWindowsBatchValue, isAbsoluteForPlatform } from './cli-install-path-format'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
|
||||
export async function ensureDevLauncher(args: {
|
||||
platform: NodeJS.Platform
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
|
||||
const APPIMAGE_CLI_SCRIPT = [
|
||||
'(async()=>{',
|
||||
|
||||
@@ -16,7 +16,7 @@ import { pruneAppImageExtractedRoots } from './appimage-extraction-pruning'
|
||||
import { resolveGenerationStableLauncherPath } from './appimage-generation-stable-launcher'
|
||||
import { withAppImageRegistrationLock } from './appimage-registration-lock'
|
||||
import { getBundledLauncherPath } from './bundled-cli-launcher-path'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
|
||||
// Only marked dispatchers may be replaced; user-owned commands must survive repeat starts.
|
||||
const DISPATCHER_MARKER = '# orca-serve-bare-orca-dispatcher'
|
||||
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
} from './appimage-stable-launcher'
|
||||
import { getBundledLauncherPath } from './bundled-cli-launcher-path'
|
||||
import { buildBareOrcaCliScript } from './linux-bare-orca-dispatcher'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
|
||||
const SHIM_DIR_NAME = 'linux-orca-cli-shim'
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
getWslLauncherMarker,
|
||||
parseManagedLauncherTarget
|
||||
} from './wsl-cli-scripts'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell-argument-quoting'
|
||||
import { quotePosixShellDoubleQuotedApostrophe } from '../../shared/shell/launch/shell-argument-quoting'
|
||||
import { buildWslCliInstallCommand } from './wsl-cli-registration-command'
|
||||
import {
|
||||
buildWslCliStatus,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user