Repository navigation
Conversation
|
I adapted this notes-send change into a combined browser test checkout and exercised the paired desktop path with browser hosting set to This device. The test picks an element, saves an annotation and uses Send to target a real PTY receiver running the existing slow-composer fixture. The receiver confirmed bracketed-paste framing, the expected annotation text and one submitted Enter, with zero premature or swallowed Enters. The paired Electron test passed. Both Node and renderer typechecks also passed on that integration checkout. This is evidence for the approach, not acceptance of this exact PR head: it needed adaptation to the combined checkout, and this branch is currently conflicted. The fixture must start the receiver after capturing the annotation, otherwise terminal creation interferes with the browser interaction. No live model request or Windows acceptance is claimed. |
|
I refreshed the integration proof onto main 52 focused prompt-delivery, receipt and notes tests pass, along with Node and renderer typechecks. The paired Electron Send test passed against the rebuilt app: the real PTY receiver reported The first app run failed before Send because the hidden-window viewport menu did not reopen. The fixture now closes it by its actual trigger state rather than sending blind Escape keys; the next run passed. That failure is retained, not hidden as a clean initial run. This remains adapted integration evidence, not acceptance of this PR's exact head, and it does not claim Windows, installed packages or live model requests. |
|
The notes port is now isolated from the browser-controls integration: 3940045c46 contains only nine notes/runtime files on main 55 focused tests, Node/renderer typechecks and scoped lint pass. Disabling the guarded transaction makes four new tests fail; restoring it returns all 55 to passing. The additional tests cover refused submission and no replay after an ambiguous result. Standalone Electron acceptance is now included in follow-up d3a5eeebbb: create a saved review note, choose the existing synthetic Codex receiver from the real Send menu, and verify the slow-composer PTY received bracketed paste, the expected marker and exactly one Enter, with zero premature or swallowed Enters. This uses the rebuilt standalone application with isolated home/profile, not the browser-controls integration. The initial run failed before Send because the synthetic receiver had no discoverable idle target. The fixture now supplies idle status through the real agent-hook endpoint before opening the menu; the next run passes. The earlier failure trace is retained. No live model/provider request or Windows acceptance is claimed. The earlier paired proof remains separate integration evidence. Standalone paired-host acceptance is now published in ce5a264f2. A separate hidden Electron client pairs to an isolated headless host, saves a review note, selects the host's synthetic Codex receiver in the actual Send menu and submits through the real host PTY. The receiver assertions pass: bracketed paste, expected marker, exactly one Enter, zero premature or swallowed Enters. The paired client records no direct SSH attempt. Both processes use the standalone notes implementation, with the existing unchanged app build; no browser-controls integration or model request is involved. The new scenario passes with retries disabled. Scoped lint passes. This is two genuinely paired application processes on one macOS machine; it is not physical two-machine or Windows acceptance. The source remains a credited port, not ancestry of the original PR head, and these results do not transfer to that original head. |
ELI5
Sending review notes to Claude or Codex can leave the notes parked in the composer because the renderer sends Enter only 50 ms after a separate paste RPC. On supporting runtimes, notes now use the existing host-owned prompt transaction and wait for its submission verifier.
What Changed
terminal.agentStatusonly for proven settlement agents.sendTerminalAgentPrompt, retaining exact PTY and permission checks before both writes.Why
The execution host already owns paste ingestion timing, serialization, cancellation and submission verification. Reusing that path removes the notes caller's independent timer without introducing another verifier.
Linked Issue
Partial coverage of STA-5642 (notes path) and STA-4495 (remaining caller asymmetry). No complete historical ticket closure is claimed. Exact dispositions for all 18 assigned reports are included below; the working report remains local and untracked.
Existing open work is preserved: startup/recipe bindings #18996 / #16716, CLI attribution #18020, automation completion #18087, large-paste core #15698 / #18196, composer proof #18022, receipt/non-turn handling #16198, and shell startup #15275. This draft does not duplicate those fixes or change their branches.
Visual Proof
Incomplete for the changed interaction. Rebuilt this worktree and launched it with
ORCA_BACKGROUND_LAUNCH=1, an isolated app profile, and CDP; verifiedapp.getIdentityand inspected the hidden welcome-screen screenshot. No workspaces or agent sessions were opened. This proves rendering/startup only, not before/after notes delivery.Stopped validation after startup unexpectedly granted managed hook trust in the real Codex home as well as the isolated runtime home. The app-profile override does not isolate provider bootstrap; the existing E2E home-isolation harness is required for further live proof. No user configuration rollback or session cleanup was attempted. The validation detail below records the precise source and observations.
Testing
All tests and app launches used
ORCA_BACKGROUND_LAUNCH=1. On macOS: 129 tests passed across eight focused runtime/renderer suites;pnpm tc:node,pnpm tc:web, focused oxlint, changed-code quality, and diff whitespace checks passed. Deterministic coverage includes Windows/POSIX/SSH write-host ingestion, permission/cancellation, local/paired notes routing, old-host fallback, and guarded idempotent receipt replay. No live Windows/WSL/SSH provider run.Review
New clients require the additive support flag; old clients ignore it. Unsupported or changed targets cannot downgrade a guarded combined send into shell input. Renderer calls do not yet supply durable orchestration request IDs, and the incumbent verifier's limitations for local slash commands and pre-existing drafts remain.
Agent skill upstream boundary
Checklist
Exact issue accounting
No complete historical ticket closure is claimed by this draft.
agent-paste-draft.tsremains separate and overlaps #16716 / #18996; 50 ms fallback retained for old hosts.All PR numbers above link under
https://github.com/stablyai/orca/pull/<number>and were found open when checked, not treated as merged fixes.Recorded validation detail
ORCA_BACKGROUND_LAUNCH=1.pnpm tc:nodeandpnpm tc:web: passed.git diff --check: passed.codex-trust-grantmessages withhost=native, wrote=true(8 managed hook entries). Isolated app profile does not fully isolate provider bootstrap. Escalated to coordinator, launched no agents, performed no config rollback; stopped only recorded validation process tree and verified both ports closed. Own-profile ledger confirms the two affected homes:/Users/nwparker/.codexand/tmp/orca-prompt-delivery-validation-profile/codex-runtime-home/home, each 8 entries. Source iscodex-real-home-hook-install.tsreal-home grant withuseDefaultCodexHome: true; native launcher deletes CODEX_HOME. Existingtests/e2e/helpers/electron-home-isolation.tsis the required full home boundary.ORCA_DISABLE_CODEX_TRUST_RPCalone does not prevent all hook/config writes.