mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
* fix(native-chat): one ownership index with link roles, and a chat refuses to start while a terminal writes its conversation Each chat link now carries its role (head or earlier) and key; Session History names the chat continuing a conversation first, duplicate adoption checks only head links in both the pre-commit check and the store transaction, and terminal resumes stay refused exactly as before. The terminal-writer check now also runs inside acquireOwner before the spawn, refusing with the typed pre-spawn reason conversationOpenInTerminal. * fix(native-chat): hold a terminal start Orca issues until its terminal reports it An in-memory registry of managed terminal starts per conversation, registered in the same step as the resume admission (terminal.send with a resume command, createTerminal with a command), bound to the PTY execution that runs it, and ended only when that terminal's hooks report the conversation or the execution is gone. A chat's agent start refuses while an entry may hold its conversation. * fix(terminal): an automatic pane restore never resumes a conversation an open chat continues Resume recipes built from a pane's saved facts (cold restore, deferred and late reattach, sleeping wake, host mobile materialization) carry resumeOrigin 'saved'. The execution host decides before any command is issued: while an open chat continues the conversation, or a chat may be writing it, the pane starts its plain shell with the started-fresh notice and its saved claim is forgotten; with unreadable records only a saved restore is refused and its record kept. An admitted resume registers its managed start in the same step, so the chat's agent start refuses until the terminal reports it or exits. Clearing the last saved record now reaches disk. * Fix saved terminal resume ownership and effective launch results * Preserve conversation case and clear refused cold restore identity * fix: publish effective terminal launch results on attachment * fix: preserve terminal launch callback and candidate ownership * fix: keep existing terminal attachments observational * fix: consolidate terminal launch imports * test: document snapshot runtime fixture boundary * fix: preserve terminal launch identity types * fix: accept reattach payload policy sessions * fix: preserve terminal result validation contracts * refactor: separate terminal create contract * test: document partial terminal runtime fixtures * test: align sleeping resume store fixture * Fix terminal create type contracts * fix: return the terminal main started to its waiting view * fix: register reattached terminals before publishing their handles * Check unavailable-resume test fixture types * Complete sidebar resume test store fixture * test: bound saved resume ownership and refusal work * Settle refused saved resume claims from actual launch results * Fix saved resume test type contracts * test(e2e): capture exact terminal parking diagnostics * test: verify parked terminal with fresh host inventory * Consolidate agent session imports in remote terminal transport * Clarify terminal conversation refusal guidance * Admit note-only saved conversations without hiding live writers * Retain terminal writer proofs through final admission
208 lines
13 KiB
JavaScript
208 lines
13 KiB
JavaScript
import { findSqliteRuntimeTests } from './vitest-sqlite-runtime-scan.mjs'
|
|
|
|
// SQLite publication, native bindings, worker IPC, socket liveness, and V8 retention use Node.
|
|
const NODE_RUNTIME_INCLUDE = [
|
|
'src/main/runtime/structured-agent-cli-writers.test.ts',
|
|
'config/scripts/vitest-sqlite-runtime-boundary.test.ts',
|
|
'config/scripts/cloud-security-history-workflow.test.mjs',
|
|
'config/scripts/skill-recipe-shell.test.mjs',
|
|
'src/main/ssh/legacy-relay/ssh-relay-endpoint-incumbent-shell.integration.test.ts',
|
|
'src/main/ssh/ssh-remote-commands.test.ts',
|
|
'src/packages/process-host/src/run-process.test.ts',
|
|
'tests/e2e/cursor-quota-transport.unit.test.ts',
|
|
'tests/e2e/helpers/electron-process-shutdown.unit.test.ts',
|
|
'src/main/ai-vault-search/session-search-index-writer.test.ts',
|
|
'src/main/ai-vault/session-scanner-unlimited-dedup.test.ts',
|
|
// The parse cache persists through node:sqlite.
|
|
'src/main/ai-vault/session-parse-cache-antigravity-upgrade.test.ts',
|
|
'src/main/ai-vault/session-parse-cache-devin-upgrade.test.ts',
|
|
'src/main/ai-vault/session-parse-cache-large-scan.test.ts',
|
|
'src/main/ai-vault/session-parse-cache-metadata-checkpoint.test.ts',
|
|
'src/main/ai-vault/session-parse-cache-persistence.test.ts',
|
|
'src/main/ai-vault/session-scanner-scope-cwd-facts.test.ts',
|
|
'src/main/ai-vault/session-scanner-scope-walk.test.ts',
|
|
// Electron main bridges streams with Node's implementation.
|
|
'src/main/host/electron-http-client.test.ts',
|
|
'src/main/daemon/daemon-init-provider-installation.test.ts',
|
|
'src/main/orcad/orcad-daemon-teardown-linux.test.ts',
|
|
'src/renderer/src/components/terminal-pane/pty-input-write-queue.test.ts',
|
|
'src/renderer/src/lib/react-commit-cascade-observer.test.ts',
|
|
'src/renderer/src/lib/react-commit-cascade-telemetry.test.ts',
|
|
// These reach Node SQLite through a shared helper or a dynamic import, which the scan skips.
|
|
'src/main/claude/claude-transcript-catch-up.test.ts',
|
|
'src/main/claude/claude-transcript-duration.test.ts',
|
|
'tests/e2e/native-chat-startup-option-pickers.unit.test.ts',
|
|
'src/main/ai-vault/session-document-consumer-replacement.test.ts',
|
|
'src/main/ai-vault-search/session-search-dependent-transcripts.test.ts',
|
|
'src/main/ai-vault-search/session-search-list-reparse.test.ts',
|
|
'src/main/ai-vault-search/session-search-transcript-dependencies.test.ts',
|
|
'src/main/native-chat/structured-agent-cli-conversation-adoption.test.ts',
|
|
'src/main/runtime/orchestration-cli-subprocess.test.ts',
|
|
'src/main/runtime/orchestration-mailbox-delivery.test.ts',
|
|
'src/main/runtime/orchestration-mailbox-routing.test.ts',
|
|
'src/main/runtime/worker-terminal-archive-release.test.ts',
|
|
'src/main/runtime/worker-terminal-archive-screen.test.ts',
|
|
'src/main/runtime/worker-terminal-wrap-provenance.test.ts',
|
|
'tests/e2e/cross-version-wire/agent-session-clear-old-client.unit.test.ts',
|
|
'tests/e2e/cross-version-wire/agent-session-clear-old-tab-mirror.unit.test.ts',
|
|
'tests/e2e/cross-version-wire/host-model-catalog-released-phone.unit.test.ts',
|
|
'src/main/acp/acp-structured-host-live-listing.test.ts',
|
|
'src/main/acp/acp-structured-host-configured-default.test.ts',
|
|
'src/main/pi/rpc-session-adapter.test.ts',
|
|
'src/main/pi/rpc-session-startup.test.ts',
|
|
'src/main/acp/acp-structured-publish-at-spawn.test.ts',
|
|
'src/main/acp/acp-structured-omp-recordings.test.ts',
|
|
'src/main/acp/acp-text-stream-identity.test.ts',
|
|
'src/main/acp/acp-text-message-ownership.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-clear-queued-command.test.ts',
|
|
'src/main/acp/acp-structured-sign-in.test.ts',
|
|
'src/main/acp/acp-structured-auth.test.ts',
|
|
'src/main/acp/acp-structured-prompt-failure.test.ts',
|
|
'src/main/acp/acp-timeline-turn-failures.test.ts',
|
|
'src/main/acp/acp-structured-session-adapter.test.ts',
|
|
'src/main/acp/acp-structured-session-adapter-resume.test.ts',
|
|
// Counts real V8 Inspector coverage alongside delegated operation counters.
|
|
'src/main/acp/acp-history-scaling.test.ts',
|
|
'src/main/acp/acp-structured-host-start-aborts.test.ts',
|
|
'src/main/acp/acp-conversation-copy.test.ts',
|
|
'src/main/pi/rpc-turn-races.test.ts',
|
|
'src/main/acp/acp-structured-child-session-end.test.ts',
|
|
'src/main/acp/acp-structured-child-stop.test.ts',
|
|
'src/main/acp/acp-structured-child-work-admission.test.ts',
|
|
'src/main/acp/acp-structured-child-work.test.ts',
|
|
'src/main/acp/acp-structured-host-subagent-stop.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-background-stop-unreadable.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-exit-delivery.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-provider-open.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-ready-operation-order.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-message-choices.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-queued-messages.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-send.test.ts',
|
|
'src/main/orcad/serve-profile-ssh-targets.test.ts',
|
|
'src/main/runtime/orca-runtime.test.ts',
|
|
'src/main/runtime/worktree-agent-first-surface.test.ts',
|
|
'src/main/runtime/runtime-client-agent-launch-settings-durability.test.ts',
|
|
'tests/e2e/host-agent-launch-settings-hook-bookkeeping.unit.test.ts',
|
|
'src/cli/**/*.test.ts',
|
|
'src/main/persistence/**/*.test.ts',
|
|
'src/main/persistence*.test.ts',
|
|
'src/main/sqlite/**/*.test.ts',
|
|
'src/main/orca-profiles/**/*.test.ts',
|
|
'src/main/managed-data-accounts/**/*.test.ts',
|
|
'src/main/quit-path-durable-write-blocking.test.ts',
|
|
'src/main/automations/automation-worker-durability.test.ts',
|
|
'src/**/*.node-pty.test.ts',
|
|
'src/**/node-pty-*.test.ts',
|
|
'src/**/*.live-shell.test.ts',
|
|
'src/**/*real-pty*.test.ts',
|
|
'src/**/*-native.test.ts',
|
|
'src/**/*retention*.test.ts',
|
|
'src/**/*lifetime*.test.ts',
|
|
'src/**/*memory*.test.ts',
|
|
'src/**/*allocation*.test.ts',
|
|
'src/**/*expiry*.test.ts',
|
|
'src/renderer/src/lib/flatten-retained-slice.test.ts',
|
|
'src/shared/own-retained-string.test.ts',
|
|
// Times V8 string flattening, which is what Electron main runs.
|
|
'src/main/runtime/terminal-tail-redraw-wall-time.test.ts',
|
|
'src/main/agent-hooks/server-transport-interference.test.ts',
|
|
'src/main/plugins/plugin-worker-supervision.integration.test.ts',
|
|
// Reconciliation loads the real native Parcel watcher; Bun can abort on Linux ARM.
|
|
'src/main/plugins/plugin-service-reconciliation.test.ts',
|
|
'src/main/usage/usage-scan-worker-event-loop.test.ts',
|
|
// Asserts Node's spawn-failure close signal and that a dead worker closes its children's pipes.
|
|
'src/main/worker-thread-child-process/worker-thread-child-process.test.ts',
|
|
'src/main/git/command-runner/worker-exec-file.test.ts',
|
|
'src/main/git/worktree-removal-real-git.test.ts',
|
|
'src/main/git/worktree-list-paths.test.ts',
|
|
'src/main/git/worktree-sparse-checkout.test.ts',
|
|
'src/main/git/worktree-removal-large-tree.bench.test.ts',
|
|
'src/main/runtime/runtime-failed-local-worktree-removal.test.ts',
|
|
'src/main/runtime/runtime-interrupted-local-worktree-removal.test.ts',
|
|
'src/main/local-worktree-removal-recovery-live.test.ts',
|
|
'src/main/rate-limits/codex-rpc-worker-backpressure.test.ts',
|
|
'src/main/computer/macos-native-provider-client.test.ts',
|
|
'src/main/ai-vault-search/session-search-schema.test.ts',
|
|
'src/main/ai-vault-search/session-search-fts5-contract.test.ts',
|
|
'src/main/foreign-sqlite-readers/**/*.test.ts',
|
|
'src/main/browser/*cookie*.test.ts',
|
|
'src/main/browser/cookies/*cookie*.test.ts',
|
|
'src/main/browser/cookies/sources/browser-cookie-validation.test.ts',
|
|
'src/main/browser/cookies/sources/browser-cookie-decryption.test.ts',
|
|
'src/main/browser/cookies/sources/browser-cookie-import-undecryptable.test.ts',
|
|
'src/main/browser/cookies/sources/browser-cookie-source-partition.test.ts',
|
|
// Playwright's CDP transport needs Node's WebSocket implementation.
|
|
'src/main/browser/browser-popup-adapter-compatibility.electron.test.ts',
|
|
'src/main/browser/popup-origin-chrome.electron.test.ts',
|
|
'src/main/browser/browser-link-materialization.electron.test.ts',
|
|
'src/main/browser/browser-popup-compatibility.electron.test.ts',
|
|
'src/main/browser/browser-popup-native-compatibility.electron.test.ts',
|
|
'src/main/browser/browser-popup-background-compatibility.electron.test.ts',
|
|
'src/main/ai-vault/session-scanner-devin-db.test.ts',
|
|
'src/shared/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',
|
|
'src/main/computer/desktop-script-serve-channel.test.ts',
|
|
'src/main/providers/local-pty-child-process-verdict.test.ts',
|
|
'src/main/providers/working-directory-validation.test.ts',
|
|
'src/main/pty/posix-pty-process-groups.integration.test.ts',
|
|
'src/shared/ephemeral-vm-recipe-output-capture.test.ts',
|
|
'src/main/gitlab/gitlab-known-host-retirement.test.ts',
|
|
'src/main/window/main-window-updater-deferred-setup.test.ts',
|
|
'src/renderer/src/lib/pane-manager/pane-dom-focus-class-sync-lifecycle.test.ts',
|
|
'src/renderer/src/components/terminal-pane/terminal-pane-host-state-memo.test.ts',
|
|
'src/renderer/src/components/automations/use-automation-runs-dashboard-payload.test.tsx',
|
|
'src/renderer/src/components/right-sidebar/parent-pr-checks-projection-selector.test.ts',
|
|
'src/renderer/src/store/github/cache-persistence.test.ts',
|
|
'src/main/native-chat/agent-session-journal/**/*.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-terminal-writer-acquire.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-conversation-name.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-first-input-identity.test.ts',
|
|
'src/main/native-chat/structured-chat-naming.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-outgrown-child.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-permission-mode.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-queued-legacy-import.test.ts',
|
|
'src/main/runtime/agent-session-conversation-name-store.test.ts',
|
|
'src/main/runtime/structured-session-mail-redrive-wiring.test.ts',
|
|
'src/main/runtime/rpc/ws-transport.test.ts',
|
|
'src/main/runtime/rpc/dispatcher-transport-parity.test.ts',
|
|
'src/main/runtime/rpc/methods/structured-agent-session-visual.test.ts',
|
|
// Bun resolves 'ws' to its built-in client, which bypasses the patched package.
|
|
'src/main/runtime/rpc/ws-empty-payload-frame-write.test.ts',
|
|
'src/shared/remote-runtime-client.test.ts',
|
|
'src/shared/remote-runtime/remote-runtime-connect-bound.test.ts',
|
|
// Bun's built-in ws client ignores maxPayload; the product opener only runs on Node.
|
|
'src/shared/remote-runtime/requests/remote-runtime-request-websocket.test.ts',
|
|
'src/shared/remote-runtime/requests/remote-runtime-subscription-connect-bound.test.ts',
|
|
'src/main/codex/codex-shared-server-probe.test.ts',
|
|
'src/main/opencode/opencode-launch-model-context-supervision.test.ts',
|
|
'src/main/hermes/hermes-config-remote-adapter.test.ts',
|
|
'src/main/ipc/orca-profiles-switch-persistence.test.ts',
|
|
'src/main/ipc/settings-delayed-response.test.ts',
|
|
'src/main/ipc/session-window-view-save.test.ts',
|
|
'src/main/ipc/renderer-shutdown-checkpoint-sleep-records.test.ts',
|
|
'src/main/runtime/structured-agent-session-startup-tab-restore.test.ts',
|
|
'src/main/runtime/structured-agent-session-windowless-layout-host.test.ts',
|
|
'src/shared/remote-runtime/control/remote-runtime-shared-control-connection.test.ts',
|
|
'src/main/runtime/mobile-cloud-relay/relay-control-client.test.ts',
|
|
'src/main/ipc/filesystem/watchers/filesystem-watcher-ignore-real.test.ts',
|
|
'src/main/ipc/runtime-environments/runtime-environment-preference.test.ts',
|
|
// Real fs.watch file bindings; Bun's watcher is not the one Electron runs.
|
|
'src/main/ipc/rebinding-file-watch.test.ts',
|
|
'src/main/ipc/parcel-watcher-shallow-file-subscription.test.ts',
|
|
'src/main/ipc/runtime-environments/runtime-environment-transport-routing-tailscale-hint.test.ts',
|
|
'src/renderer/src/components/emulator-pane/emulator-device-frame-visibility.test.tsx',
|
|
'src/main/claude/claude-agent-sdk-contract-pins.test.ts',
|
|
'config/scripts/profile-state-worker-smoke.test.mjs',
|
|
'config/scripts/process-host-dev-rebuild.test.ts',
|
|
'config/scripts/vitest-node-runtime-boundary.test.ts',
|
|
'config/scripts/vitest-node-runtime-pool.test.ts'
|
|
]
|
|
|
|
/** `filters` limits the SQLite import scan to the tests a filtered CLI run can select. */
|
|
export function getNodeRuntimeInclude({ filters } = {}) {
|
|
return [...NODE_RUNTIME_INCLUDE, ...findSqliteRuntimeTests({ filters })]
|
|
}
|