mirror of
https://github.com/stablyai/orca.git
synced 2026-10-09 00:02:39 +00:00
* feat(native-chat): a paired server keeps a store for chat attachments A structured chat on a paired Orca server had nowhere to put a file the client attached. The server now keeps a per-chat attachment store under its userData, filled through agentSessionAttachment.uploadStart/Append/Commit/Abort and read back for previews through agentSessionAttachment.read, behind the structured session gate and advertised as agent-session.attachments.v1. Nothing records cleanup as owed: a sweep re-derives what may go from the host's chat records and journal (unfinished uploads after an hour, uploads for a chat that never existed or that its journal never mentions after a day). The clipboard RPC's in-flight bookkeeping moves into a shared ChunkedUploadRegistry both use. * feat(native-chat): upload attached files into a paired server's chat store Main streams dropped or picked files (fs:uploadPathsToAgentSessionAttachments) and pasted images (clipboard:saveImageAsTempFile with agentSessionAttachment) into the chat's store on its paired server, reusing the file-import slice streamer and pinning every call to the pairing revision and server process. The browser client's paste takes the same route. * feat(native-chat): attach files to a structured chat on a paired server Pasted images, files dropped from Finder/Explorer and the file picker no longer refuse with "Local attachments are not available for remote sessions." in a structured chat on a paired server: they upload into that server's chat store and the chat gets only the stored path. Dropped files show as pending chips at once so Send waits for them; every attached item carries the server, pairing and chat it was stored for, and a send to anywhere else drops it with the existing "changed hosts" notice. Chips and transcript images read stored files back through the server, never from this machine's disk. An older server gets an update notice instead of an upload. The terminal-backed chat keeps refusing. * test(native-chat): type the attachment test doubles without bare casts * refactor(native-chat): keep the clipboard RPC on its own upload bookkeeping The chunked upload registry stays for the chat attachment store only, beside it. * feat(native-chat): claim chat attachments when the host admits a message A message's references into the host's attachment store are claimed in the same journal transaction that makes it durable (a direct send, a queued draft, a /clear carry). The sweep deletes an upload only after marking it in that database while no claim exists, so a send and a sweep can never both win: a client's send that names an expired or foreign upload is refused whole with the new attachmentExpired reason, before anything is recorded. This replaces scanning chat transcripts for paths. The store is now <root>/<upload id>/<name>, refuses uploads for chats the host does not hold, caps stored names in UTF-8 bytes and avoids Windows device names. The preview read goes through the protected bounded read and the request's reply budget, so an image too large for one reply is refused instead of closing the connection. * feat(native-chat): let structured Claude read the host's chat attachment store Attached non-image files live outside the workspace; the store root is passed as an added directory so the agent reads them without asking, the common pattern. * fix(native-chat): skip a dropped folder before staging walks into it * fix(native-chat): pin the browser client's chat paste to its server Every upload call goes to the environment the paste was meant for and checks its pairing and server process, as the desktop upload does; a re-pair ends the upload instead of storing the image on another server. * refactor(native-chat): let the host's claim be the only attachment check The composer no longer records which server and pairing each attachment came from, and Send no longer strips attachments it judges foreign: the host refuses an expired or unknown stored path when it admits the message, which also covers retries, Stop-restores and queued edits the client check missed. Previews of stored files route through the chat's own server by path. Removing a file's chip while it uploads now keeps its @path out of the draft. A dropped or picked file shows its name and kind on its chip while it uploads, with no separate progress toast, and files that did not attach are named in one notice. A rich-text paste into a chat on an older server no longer shows the update notice beside the pasted text. * chore(native-chat): keep the claim hook beside the draft consume and fit the line budgets The submission's claim runs in the same append hook as a draft's consume, owned by the queued-message collaborator, so the journal store stays within its size limit. Formats the new files and regenerates the runtime-required English catalog. * test(native-chat): pin the attachment store grant in the Claude launch, restore upload result types * fix(native-chat): create the attachment store at install and claim only exact store paths Claude drops an added directory that does not exist when it starts, so the store root is created when the host installs it, best effort. A commit keeps its upload in flight until the rename lands, so a sweep never takes a slow upload's part file. Only a path under this host's exact store root is claimed and required; any other mention of a store path is plain text and never refuses the message. * refactor(native-chat): reuse the newer-Orca notice and drop leftover attach options An older server's refusal to store attachments uses the notice every other write it refuses already shows, so one string fewer in every catalog; the attach callbacks lose an options parameter no caller passes since the provenance check went. * fix(native-chat): give a message refused for an expired attachment back to the composer Sending the same message again can never bring the attachment back, so instead of a Retry that always fails the message's text and images return to the composer, as a Stop's withdrawn message does, and the notice says what to remove. * fix(native-chat): keep uploads across a prompt, say why a file did not attach An upload that finishes while a prompt card has replaced the composer lands in the scope's attachment and draft caches, which the composer reads back when it returns, instead of the unmounted composer. The single failure notice names the cause the files share, such as the size limit. Rich text pasted into a chat on an older server no longer flashes an image chip: the chip waits for the server to take the image. A picked command waits, as Send does, while an attachment is still uploading. * fix(native-chat): keep a paste's upload across a prompt; pin the Claude grant hand-off A paste uploading into a paired server's store keeps its chip live when a prompt card unmounts the composer, and its result is filed for the composer's return, as a drop's is. A failure cause ending in full-width punctuation gets no extra full stop. A runtime test pins that the store root reaches Claude's launch resolver through the adapter. * test(native-chat): type the grant hand-off captures without casts * test(native-chat): pin that the composer files a paste's upload across a prompt * fix(native-chat): retry a held rename at commit and keep cut names Windows-safe A commit renames the part file with the Windows retry the app uses elsewhere, so an antivirus or indexer holding it briefly no longer loses the upload. A name cut to the byte limit is stripped of trailing dots and spaces again. The upload pump's result cast states why it holds. * fix(native-chat): keep attachments still on their way in the pane's attachment cache A prompt card unmounts the composer, and an attachment still saving or uploading lived only in that composer: one that came back showed no pending chip, so Send went out without the file and the file then landed in the next draft. Pending chips now live in the pane's attachment cache beside settled ones and settle there whichever composer is showing, so Send waits for them after a remount too. A stored file's @path goes into the pane's draft cache, which keeps it through an input-method composition and a remount. A rich-text paste's image is registered as a hidden pending chip before the server is asked, so Send waits for it from the start, and it shows only once the server takes it. * test(native-chat): a dropped file still uploading stays pending across a remount * fix(native-chat): reveal a rich-text image in a composer that came back; keep caret inserts A rich-text paste's held image is revealed through the pane's attachment cache, so a composer a prompt card remounted during the server's answer shows it rather than holding Send on an invisible chip. A stored file's @path goes in at the caret while the composer is showing and not composing, as every other attach does; only mid-composition or after a remount does it go to the pane's draft. * fix(native-chat): never evict a pane's attachments while a composer shows them or one is on its way The pane attachment cache is now where chips live, so its 128-scope bound passes over a scope a mounted composer subscribes to or that still holds a pending attachment, and evicts the oldest scope nobody uses instead. Protected scopes are bounded by mounted composers and attachments in flight. * fix(native-chat): never evict the scope just written when every older one is in use * fix(native-chat): keep the attachment store out of the RPC method table's imports The method table is imported far and wide (the SSH relay's CLI included), and the attachment RPCs pulled in the store, whose preview read loads modules that read fs constants at load: any test that mocks fs/promises without them failed to import. The installed store now lives in a small registry module; only the host wiring loads the store itself. * refactor(native-chat): the submission hook gets its own module Merging main added the operation receipt to the queued-message insert, which put journal-queued-messages.ts over the 300-line limit. The submission hook only uses the queued-messages object's public methods, so it moves out. * refactor(native-chat): fit the attachment sweep and paste upload into main's line budgets After merging main, the record store and the clipboard handlers each ran a few lines over the 300-line budget. The sweep now asks the record store whether a chat is recorded through the two lookups it already has (readable or unreadable) instead of a new id-listing method, and the paired-server paste upload lives beside the other attachment uploads. No behavior changes. * fix(native-chat): pending chips sit beside main's saved draft, which keeps server-stored images Main now saves a composer's draft (text and settled images) in one store that survives a reload or quit. This branch kept every chip, settled or not, in its own pane cache. After the merge the saved draft owns settled images and the pane cache holds only chips still on their way: they come back pending in a composer a prompt card remounted, hold Send, settle into the saved draft whichever composer is showing, and are never saved themselves, so a restored draft cannot bring back an upload as if it were attached. An image a paired server stored for the chat is saved with the draft as the real image (a pasted one is no longer turned into a "Not kept" placeholder), and the restore check leaves it to that server, whose claim at Send refuses one it no longer holds, instead of asking this machine's disk for a path that only exists on the server. Also: previews and the pending subscription move into their own small hooks to fit the line budget, the "local attachments" notice moves to the composer-target module so the attachments hook no longer pulls in the upload module's imports, and tests follow main's new mocks. * test(native-chat): give the claims test main's provider handle and message source * fix(native-chat): a paste still uploading dies with its tab or workspace A pasted image still uploading to a paired server sits in the pending chip cache, which by design outlives the composer and its tab. Removing the workspace deleted its saved drafts but left those chips, so the upload finishing afterwards recreated and saved the deleted draft. With the workspace's tabs gone it had no owner either, so no later workspace cleanup could ever remove it. A pending chip now records the owner its draft would have, resolved the way the draft store resolves one when the chip is added. Workspace removal and a user's tab close drop pending chips by the same owner, conversation and tab matches they delete drafts by, and a chip that settles after its chat's tab closed writes its draft under the owner it was begun in. * fix(native-chat): the claim type uses the journal's own SQLite type * refactor(native-chat): read the pending-image handlers off the composer's attachments Main's multi-file picker (#23956) and this branch together took NativeChatComposer over the 400-line limit; reading the two pending-image handlers the way the neighbouring ones already are keeps it at the limit. * test(native-chat): pass the launch-args resolver main now requires in the attachment grant test * fix(native-chat): grant the attachment store beside folders the saved Claude Arguments add Main (#25721) now builds additionalDirectories from the user's --add-dir arguments; this branch's attachment-store grant replaced that list instead of adding to it. Both are granted now. Moves the Claude session-id derivation to its own module to keep the resolver under the line limit. * test(native-chat): run the attachment store's SQLite tests in the Node runtime project * test(native-chat): follow main's attach ownership recheck (#25749) in the attachment tests * test(native-chat): a named upload chip still shows when the agent takes no images * fix(native-chat): a paired-server image paste failure keeps its error apart, as main's notice card does * fix(native-chat): the attachment sweep reads the chat list directly now that records have no import still owed
217 lines
17 KiB
JavaScript
217 lines
17 KiB
JavaScript
import { SQLITE_DATABASE_RUNTIME_INCLUDE } from './vitest-sqlite-database-runtime-files.mjs'
|
|
|
|
// Real SQLite fixtures keep Node publication and close semantics.
|
|
export const SQLITE_RUNTIME_INCLUDE = [
|
|
...SQLITE_DATABASE_RUNTIME_INCLUDE,
|
|
'src/main/active-view-persistence-boundary.test.ts',
|
|
'src/main/automations/automation-dispatch-host-fence.test.ts',
|
|
'src/main/automations/automation-owner-fencing.test.ts',
|
|
'src/main/automations/automation-skip-coalescing.test.ts',
|
|
'src/main/automations/automation-update-host-retarget.test.ts',
|
|
'src/main/automations/automation-workspace-host-attribution.test.ts',
|
|
'src/main/automations/automation-zero-grace-tick-latency.test.ts',
|
|
'src/main/automations/refused-manual-run.test.ts',
|
|
'src/main/automations/retained-run-reconciliation.test.ts',
|
|
'src/main/automations/run-completion-watcher.test.ts',
|
|
'src/main/automations/service-precheck.test.ts',
|
|
'src/main/automations/service.test.ts',
|
|
'src/main/claude/claude-api-retry-idle-sweep.test.ts',
|
|
'src/main/claude/claude-api-retry-row.test.ts',
|
|
'src/main/claude/claude-context-usage-restart.test.ts',
|
|
'src/main/claude/claude-context-usage-unloaded-turn.test.ts',
|
|
'src/main/claude/claude-informational-row.test.ts',
|
|
'src/main/claude/claude-stream-json-connection.test.ts',
|
|
'src/main/claude/claude-structured-journal-translation.test.ts',
|
|
'src/main/claude/claude-structured-provider-fallback.test.ts',
|
|
'src/main/claude/claude-subagent-permission-request.test.ts',
|
|
'src/main/claude/claude-subagent-resume-after-restart.test.ts',
|
|
'src/main/codex/codex-provider-retry-idle-sweep.test.ts',
|
|
'src/main/codex/codex-structured-journal-goal-revision.test.ts',
|
|
'src/main/codex/codex-structured-journal-subagent-readers.test.ts',
|
|
'src/main/codex/codex-structured-journal-translation-turn-lifecycle.test.ts',
|
|
'src/main/codex/codex-structured-journal-turn-settles-once-journal.test.ts',
|
|
'src/main/codex/codex-structured-question-order.test.ts',
|
|
'src/main/ipc/pty/ipc/spawn-commit-ssh-lease-cardinality.test.ts',
|
|
'src/main/ipc/ssh-host-partition-session-export.test.ts',
|
|
'src/main/ipc/ssh-host-server-on-connect-wiring.test.ts',
|
|
'src/main/ipc/ssh-managed-server-move-conversion.test.ts',
|
|
'src/main/native-chat/agent-session-attachments/agent-session-attachment-claims.test.ts',
|
|
'src/main/native-chat/agent-session-attachments/agent-session-attachment-sweep.test.ts',
|
|
'src/main/native-chat/agent-session-wire/agent-session-history-byte-accounting.test.ts',
|
|
'src/main/native-chat/agent-session-wire/agent-session-history-conversation-window.test.ts',
|
|
'src/main/native-chat/agent-session-wire/agent-session-history-forward-read-budget.test.ts',
|
|
'src/main/native-chat/agent-session-wire/agent-session-history-page.test.ts',
|
|
'src/main/native-chat/agent-session-wire/agent-session-stop-note-projection.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-accept-then-deliver.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-acquisition-options.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-adopted-import.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-append-delivery.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-at-rest-commands.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-attach-reconciliation.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-attachment-admission.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-compact-stop.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-echo-working.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-hung-start-stop.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-opening-send-hold.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-option-queue.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-queued-stop.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-root-exit.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-stop-ends-session.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-stop-exit-ends-record.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-stop-note-end.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-stop-turn-end.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-close-aborts-start.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-close-verdict.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-codex-stop-note-end.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-codex-stop-row.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-command-publication.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-conversation-stop.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-conversations.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-crash-mid-start.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-crash-turn-end.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-drivability.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-event-sink.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-failed-create-owner-verdict.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-failed-create-sink-release.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-forget-status.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-grouped-prompt.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-held-child-lease-renewal.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-host-held-child-renewal.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-host-runtime-state.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-host-test-abandon.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-host.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-journal-corruption.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-late-proof-tool-ends.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-late-settlement.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-lease-renewer.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-legacy-handoff-record.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-live-turn-window.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-main-agent-working-agreement.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-newer-content-host.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-option-settlement.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-owed-work-release.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-pre-spawn-first-answer.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-processless-reservation.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-prompt-cancel.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-provider-child-record.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-provider-restore.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-provider-started.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-queued-newer-orca.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-read-restore.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-readable-restorer.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-reasoning-sweep.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-recovered-turn-clock.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-recovery-exits.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-recovery-resolution.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-refusal-retry.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-repeat-press.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-repeated-stop.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-resend-answer.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-resend-ledger-refusal.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-resolved-append.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-offer-newer-orca.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-restore.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-status-publication.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-rewind-at-rest.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-rewind-live-send.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-rewind.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-send-idempotency.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-send-open-stale-turn.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-send-preparation.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-send-restarts-failed-start.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-settled-attach-retry.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-stale-turn-verdict.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-start-failure-writer.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-startup-reconcile-failure.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-child-work.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-child.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-children.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-clock.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-launch-directory.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-stopping.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-reentry.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-stop-note-opened-turn.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-stop-note-withdrawn-send.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-stopping-journal.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-subagent-recency.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-subscriber-background-tasks.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-subscribers.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-thread-goal.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-transition.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-turns.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-unopened-tab.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-unsent-send-hold.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-view-start-after-failed-start.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-wedged-profile-migration.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-agent-session-wire-admission.test.ts',
|
|
'src/main/native-chat/agent-session-wire/structured-conversation-command.test.ts',
|
|
'src/main/orcad/orcad-automations.test.ts',
|
|
'src/main/runtime/agent-session-conversation-clear-commit.test.ts',
|
|
'src/main/runtime/agent-session-conversation-name-store.test.ts',
|
|
'src/main/runtime/agent-session-death-evidence-persistence.test.ts',
|
|
'src/main/runtime/agent-session-launch-directory.test.ts',
|
|
'src/main/runtime/agent-session-launch-env-admission.test.ts',
|
|
'src/main/runtime/agent-session-lease-renewal.test.ts',
|
|
'src/main/runtime/agent-session-record-options.test.ts',
|
|
'src/main/runtime/agent-session-record-store-tab-table.test.ts',
|
|
'src/main/runtime/agent-session-record-store.test.ts',
|
|
'src/main/runtime/agent-session-released-reservation-replay.test.ts',
|
|
'src/main/runtime/agent-session-store-transactions.test.ts',
|
|
'src/main/runtime/agent-session-unsaved-creation-supersession.test.ts',
|
|
'src/main/runtime/automation-change-publication.test.ts',
|
|
'src/main/runtime/host-terminal-close-persistence-durability.test.ts',
|
|
'src/main/runtime/orca-runtime-terminal-close-records.test.ts',
|
|
'src/main/runtime/orca-runtime-terminal-surface-close.test.ts',
|
|
'src/main/runtime/orchestration/orchestration-party-location.test.ts',
|
|
'src/main/runtime/orchestration/structured-worker-journal-page.test.ts',
|
|
'src/main/runtime/rpc/methods/agent-launch-caller-selection.test.ts',
|
|
'src/main/runtime/rpc/methods/agent-launch-instant-tab.test.ts',
|
|
'src/main/runtime/rpc/methods/agent-launch-pane-reservation.test.ts',
|
|
'src/main/runtime/rpc/methods/agent-launch-prestart-failure.test.ts',
|
|
'src/main/runtime/rpc/methods/agent-launch-replay.test.ts',
|
|
'src/main/runtime/rpc/methods/agent-launch-session-reservation.test.ts',
|
|
'src/main/runtime/rpc/methods/structured-agent-session-adoption-replay.test.ts',
|
|
'src/main/runtime/rpc/methods/structured-agent-session-at-rest.test.ts',
|
|
'src/main/runtime/rpc/methods/structured-agent-session-hold.test.ts',
|
|
'src/main/runtime/rpc/methods/structured-agent-session-restart-unregistered-agent.test.ts',
|
|
'src/main/runtime/rpc/methods/structured-chat-tab-table.test.ts',
|
|
'src/main/runtime/runtime-managed-worktree-metadata-sweep.test.ts',
|
|
'src/main/runtime/runtime-orchestration-sender-names.test.ts',
|
|
'src/main/runtime/runtime-worktree-agent-rows-verdict.test.ts',
|
|
'src/main/runtime/runtime-worktree-structured-agent-rows-liveness.test.ts',
|
|
'src/main/runtime/structured-agent-session-codex-interrupt-order.test.ts',
|
|
'src/main/runtime/structured-agent-session-codex-opening-send-hold.test.ts',
|
|
'src/main/runtime/structured-agent-session-codex-settlement-order.test.ts',
|
|
'src/main/runtime/structured-agent-session-integration-replay.test.ts',
|
|
'src/main/runtime/structured-agent-session-integration.test.ts',
|
|
'src/main/runtime/structured-agent-session-mobile-restore.test.ts',
|
|
'src/main/runtime/structured-agent-session-rollback-compatibility.test.ts',
|
|
'src/main/runtime/structured-agent-session-spawn-token-descendants.test.ts',
|
|
'src/main/runtime/structured-agent-session-startup-reconcile.test.ts',
|
|
'src/main/runtime/structured-claude-attachment-grant.test.ts',
|
|
'src/main/runtime/structured-claude-pending-rewind.test.ts',
|
|
'src/main/ssh-expired-lease-pane-readoption.test.ts',
|
|
'src/main/ssh-reattach-pane-cardinality.test.ts',
|
|
'src/main/ssh/orcad-migration-cutover-coordinator.test.ts',
|
|
'src/main/ssh/orcad-migration-delta-move.test.ts',
|
|
'src/main/ssh/orcad-migration-delta-snapshot.test.ts',
|
|
'src/main/ssh/orcad-migration-snapshot-resume.test.ts',
|
|
'src/main/ssh/orcad-migration-source-fence.test.ts',
|
|
'src/main/ssh/orcad-runtime-conversion.test.ts',
|
|
'src/main/ssh/orcad-unreachable-setup-release.test.ts',
|
|
'src/main/ssh/ssh-target-orcad-preflight.test.ts',
|
|
'src/main/worktree-identity-persistence.test.ts',
|
|
'src/main/worktree-removal-close-records.test.ts',
|
|
'src/main/worktree-removal-session-partition-fencing.test.ts',
|
|
'tests/e2e/codex-child-approval-activity-row.unit.test.ts',
|
|
'tests/e2e/cross-version-wire/agent-session-newer-chat-refusal.unit.test.ts',
|
|
'tests/e2e/cross-version-wire/agent-session-stop-event-downgrade.unit.test.ts',
|
|
'tests/e2e/cross-version-wire/cross-version-agent-session-wire.unit.test.ts',
|
|
'tests/e2e/cross-version-wire/submission-positions-downgrade.unit.test.ts',
|
|
'tests/e2e/folder-upgrade-identity-persistence.unit.test.ts',
|
|
'tests/e2e/structured-agent-session-read-owner.unit.test.ts',
|
|
'tests/e2e/structured-chat-owner-status-activation.unit.test.ts'
|
|
]
|