Repository navigation
feat: add Open Interpreter Rust TUI integration - #6496
nikhilachale wants to merge 26 commits into
Conversation
🏆 Review leaderboardOct 3–10, 2026 · UTC
Ranked by distinct external PRs reviewed, then review rounds, then PR comments. Self-activity and bot activity are excluded. Show 5 more reviewers
|
|
Evidence correction from the skill packaging review: the historical Open Interpreter Rust 0.0.56 — VPS audit report, 2026-10-10 Functional lifecycle: 17/17 PASS. CI on the audited commit: 24/24 PASS. Overall audit: FAIL. This is diagnostic lifecycle coverage; a full strict audit PASS is not claimed. Audited commit: Gate totals: 24 PASS, 2 NOT_RUN, 1 BLOCKED, 1 FAIL. These are gate counts, separate from the 24 CI checks. Local CLI
AO / AOS11
Cross-check
AO reports credentials as configured, not provider-verified, despite successful real Z.ai calls. The AO model endpoint returned HTTP 200 with an empty catalog for this free-form model integration, so ao_models_api remains FAIL. Native model listing/exact catalog comparison remain NOT_RUN. The audit fixed custom-provider credential observation and activity detection from the current styled viewport. Independent review also fixed styled Claude login-warning handling and rejection of conflicting native auth settings. The pinned native conformance test now respects native post-render hook-input quarantine; three consecutive VPS conformance runs passed. Earlier continuation was sent into the provisional “model: loading / Resuming session” screen. Final attempt 5 required the initialized model/workspace footer beside the empty composer; the normal API message then executed and proved history/file/instruction continuity. No production sleep or paste-policy workaround was added. Native cancellation took 22 ms; AO confirmed idle after 29.928 s, matching its unchanged observation cadence. The restored native task started 14 ms after the API response. Captures bracket the readiness boundary but do not independently show an exact pre-send initialized-empty frame. Actual native submission and proof mutation establish functional continuity. The model also echoed an audit-only instruction marker in tool output: instruction consumption does not guarantee secrecy. The original strict skill remains unchanged. The separate diagnostic runner continues lifecycle testing only after successful direct native proof and AO installation/freshness checks; it retains the original non-passing auth/model gates. Its final revision passed 91/91 fixture tests. Audited-head backend/aggregate CI · Pinned released-native conformance Cleanup confirmed: the created session was terminated and the isolated daemon/native PTY processes stopped. A final audit-wide process scan found no remaining owned test processes. Credentials and raw native IDs are omitted here. Previous failed attempts and controlled comparisons remain preserved in the audit bundle. Real terminal text was captured; screenshots, Electron UI and native non-Linux harness coverage are not claimed. Evidence identity
|
|
Evidence correction from the skill packaging review: the historical Open Interpreter Rust 0.0.56 — failed-attempt report, 2026-10-10 The original failures remain preserved even though the final diagnostic run passed all 17 lifecycle gates. The overall audit remains FAIL: AO's model endpoint returned an empty catalog; authentication is BLOCKED; native model discovery/comparison are NOT_RUN. See the final gate-by-gate report. All attempt times below are UTC on 2026-10-10. Testing ran on the Ubuntu VPS, with real Z.ai calls; no local Mac checks were run.
CI failures are also retained:
Still failing: Timing limits: final native cancellation took 22 ms while AO's idle confirmation took 29.928 s at its existing observation cadence. The final restored native task started 14 ms after the send API response. Captures bracket that boundary; no exact pre-send initialized-empty frame is available for the original run. Fresh screenshot follow-up — failure reproduced on the current commit: at 09:01:23.924 UTC the original weak placeholder cue appeared; the normal API send began at 09:01:23.936 and returned HTTP 200 at 09:01:24.256. The request remained unsubmitted in the composer, with zero new native tasks during the 60-second observation. This deliberately exercises early input; it does not replace the successful initialized-ready diagnostic run or establish that early input is safe.
Capture method: actual Files and Evidence paths above are relative to the preserved VPS report directory |
|
The reusable integration/testing skill and consolidated session report are now in #6509.
The report includes two redacted, actual screenshots from the new Open Interpreter early-send reproduction; they are published repository evidence, not historical screenshots of Tau or Neovate. Original captures remain unchanged. The historical instruction-refresh correction remains explicit: the old |
Fresh restore-only instructions and actual AO Electron evidenceThis follows up the historical native audit and early-send failure. Official Rust Open Interpreter0.0.56, not Python, pinned release archive SHA-256
All functional lifecycle gates pass in002. Strict verdict remains FAIL / diagnostic-only: empty HTTP200 AO model catalog is FAIL, configured-but-unverified authentication is BLOCKED, native model listing and local/AO model comparison are NOT_RUN. No fabricated catalog, credential-presence PASS, login, draft clearing, or historical relabeling. Actual defect and evidence-derived fix001 consumed the project AGENTS token instead of the hidden standing-instruction token. The AO callback emitted valid15KiB context containing the required assignment, but native developer history held a truncated preview with a spill-file footer and omitted the token. Pinned native hooks default to a 2,500-token preview retaining both ends; the AO rule was in the omitted middle. See primary native source. Fix Released-native regression now puts its canary in the middle of19KiB: before fix FAIL ( 001 also blocked on restored terminal readiness because the rendered-screen pattern did not match raw cursor redraw/border characters. No continuation was sent; three downstream gates stayed NOT_RUN. The corrected contract was derived from genuine raw frames and requires an end-anchored initialized empty composer, exact model and full audit workspace. It rejects loading, foreign drafts and stale empty frames followed by a current draft. No native draft cleanup was performed. This verifies the readiness-aware path; the historical HTTP200-during-initialization/unsubmitted-draft bug is not declared fixed. Fresh post-kill proof002 introduced the restore-only rule after confirmed kill, wrote/read back project config, restored the same nativeID/workspace, confirmed an initialized EMPTY composer, then verified post-restore mutation, history continuity and consumption of the new rule. Independent native history shows complete initial and later restored developer rows, with the fresh token absent initially and present only after kill/restore; neither row has a spill footer. Tokens prove consumption, not secrecy or instruction-role precedence. Cancellation proves configured native cancel input interrupted the observed active turn and AO later settled. It does not establish termination of an already-running subprocess or immediate provider socket closure. Real AO screenshots — original failure and corrected restoreThese are actual AO Electron/scrot/Xvfb captures, visually inspected for secrets and relevance. Original failure, UTC Corrected restore, UTC Detailed report, all28 gate results, before/after witnesses and complete capture provenance. Published PNG bytes verified against local SHA-256 before this comment was posted. Validation and cleanupOriginal source and corrected functional source each have 24/24 exact-head GitHub checks SUCCESS. Local released-native adapter suite and focused adapter/CLI race suite PASS. Full local Both audited sessions API-killed/termination confirmed; exact main Electron/current run-file daemon executable verified before TERM, processes gone. Shared Git store, profiles, original failures, runtime archive, native/AO binaries and source retained. Audit-only state; no regular user AO data touched. No merge/release/new PR. |
|
Harness-specific reports, JSON receipts, screenshots and provenance now live on this integration PR branch, rather than the skill PR #6509. Evidence index with embedded screenshots and JSON links. The two historical October10 PNGs are live terminal mirrors reproducing an early-send failure, NOT actual AO Electron proof. Separate existing follow-up screenshots carry their own actual-AO provenance. This is evidence relocation only. Existing tested source/native hashes and failures are preserved; the documentation commit is not a fresh runtime pass. Applicable checks run in PR CI. |
|
Canonical main conflicts reconciled at Validation is PR CI only; current-head checks are pending until GitHub reports them. This merge does not constitute a new native/AO run or promote historical fresh/restore/provider-role proof. Harness evidence stays on this integration PR; PR6509 remains reusable guidance and linked summaries. |
|
Canonical main conflicts reconciled at Validation is PR CI only; current-head checks are pending until GitHub reports them. This merge does not constitute a new native/AO run or promote historical fresh/restore/provider-role proof. Harness evidence stays on this integration PR; PR6509 remains reusable guidance and linked summaries. |
|
Canonical main conflicts reconciled at Validation is PR CI only; current-head checks are pending until GitHub reports them. This merge does not constitute a new native/AO run or promote historical fresh/restore/provider-role proof. Harness evidence stays on this integration PR; PR6509 remains reusable guidance and linked summaries. |
|
Focused ordinary-task instruction audit on source-pinned daemon Native Ctrl+C executing-child cancellation FAIL, including its late side effect. A separate AO Kill executing-child/reaping/no-late/unrelated-control test PASS does not erase that failure. The unrelated control completed its message; its short active transition was not observed by the30-second observer. Actual authenticated wire role: NOT_CAPTURED. Source conformance maps native developer hook context to user Chat Completions role; receipt is not proof of a system-role payload. The integration remains draft. New evidence-head checks are pending. Report and qualified failure history · Functional receipt · Screenshot/source/native provenance All assets are harness-owned on6496. PR6509 was not modified. |
|
Canonical main conflicts reconciled at Validation is PR CI only; current-head checks are pending until GitHub reports them. This merge does not constitute a new native/AO run or promote historical fresh/restore/provider-role proof. Harness evidence stays on this integration PR; PR6509 remains reusable guidance and linked summaries. |
|
Canonical main and the green shared ACP replay CI budget reconciled at The shared test-only fix PR6617 had21 green applicable checks; this integration head still needs its own exact-head CI. The full20543-frame replay burst and exact-once assertions remain unchanged. No routine local suites ran. This merge does not constitute a new native/AO run or promote historical fresh/restore/provider-role proof. Harness evidence stays on this integration PR; PR6509 remains reusable guidance and linked summaries. |
Prasad-D-Ware
left a comment
There was a problem hiding this comment.
Read through the code diff (not the evidence files in detail). The adapter itself is careful: task after --, TOML escaping, no global hook-trust bypass, exact-UUID restore with a same-directory workspace check, bounded zstd reads, child hooks can't overwrite the root id, and a checksum-pinned real-binary conformance job. A few things I'd want addressed before this leaves draft — details inline.
Should fix
- Restore errors instead of falling back to a fresh launch (
openinterpreter.go). -c hooks.state={...}may replace, not merge, the user's persisted hook trust — untested (hooks.go).- The styled-screen observer change applies to Codex and Claude Code too, not just Open Interpreter (
observer.go).
Shouldn't ship in this PR
4. ~4.1k lines of audit JSON + 13 PNGs under docs/research/assets/ — please keep these in PR comments/artifacts rather than the repo.
5. harness-proof-build.yml builds and uploads an ao binary on every backend PR for VPS proofs — that's audit infra, not product CI.
6. The ACP replay timeout bump is unrelated, duplicates #6617, and is one of the two current merge conflicts.
Product decision
7. Per your 2026-10-12 audit, native Ctrl-C leaves an executing tool child running and its side effect still lands. If AO's cancel path ends up sending Ctrl-C, users will believe a tool was stopped when it wasn't. Worth an explicit maintainer call on whether that blocks merge.
Minor
- Migration is
0199while main is at0197— fine if0198is reserved by another open PR, just flagging.migrate_burned_versions_test.goalso conflicts. - Windows hook command (
& '...') and macOS/Windows execution aren't covered by the conformance job.
Prasad-D-Ware
left a comment
There was a problem hiding this comment.
Re-checked at d1952fff3. That's the same head as my earlier review, so nothing has changed since then. The findings from that review all still apply: restore errors instead of falling back, hooks.state replace vs merge, the observer change reaching Codex/Claude, the evidence assets, harness-proof-build.yml, the ACP replay bump, and the Ctrl-C decision. The re-read nit, migration 0199 (main is still at 0197) and the Windows/macOS coverage note also still apply. The PR still has the same two conflicts: controller_acp_replay_test.go and migrate_burned_versions_test.go. All 24 checks are green on this head.
I ran these focused tests locally on this head and they all passed: openinterpreter, registry, activitydispatch, claudecode, observe/activity, systeminstall, agentauth, storage/sqlite, cli (hooks/doctor/spawn), and the session_manager restore tests.
Two new items are inline. One is another way restore gets stuck, separate from the missing-history case I raised before. The other is about version drift.
Build the real daemon in PR CI for isolated VPS runtime verification without local validation suites or dependency installations. Record source revision, Go build info, and executable hash.
ea81f90 to
5ff5743
Compare
nikhilachale
left a comment
There was a problem hiding this comment.
Reviewed head 12670453c58449238a66cdccddff6de691325f16. I found no new actionable defects in this static review.
The earlier restore fallback, torn-final-record/large-record handling, and version-drift findings are addressed in the current code. Persisted user-hook trust and Codex styled-screen observation now have regression coverage. I also compared hook execution, profile resolution, and model discovery with the pinned upstream Rust source.
The documented Ctrl-C executing-child limitation still needs the maintainer decision already requested in the earlier review: cancelling a native turn can leave a tool child running and allow a later side effect. This review does not resolve that outstanding concern or recommend lifting the draft on that basis.
All 24 current-head GitHub checks report success. GitHub currently reports merge conflicts. No project programs, tests, builds, or installers were executed for this review; the native conformance coverage remains Linux-only.





Code changes: +1194 -178
Tests: +1569 -4
Others: +87 -3
Current review follow-up (2026-10-15): merged current main and resolved the ACP replay, migration, and avatar conflicts. Restore now falls back to a fresh launch for missing or unusable history, accepts a torn final line and valid records above 8 MiB, and still rejects a verified foreign workspace. Open Interpreter 0.0.56 is required at runtime and pinned in AO's official install action. Codex styled observation and persisted trusted user hooks have regression coverage. The audit-only build workflow and evidence files are absent from the current PR diff; prior evidence remains available at its immutable commit. The unrelated ACP replay change is carried by main/#6617.
Local checks on this head: backend build; focused Open Interpreter, observer, CLI, and SQLite tests; 83 frontend tests; frontend typecheck. The full Windows
systeminstallandsession_managersuites had environment-dependent failures involving Unix commands/PATH and workspace access; all 24 current-head GitHub checks passed; renderer-smoke passed on a targeted rerun after one intermittent failure. Released-native conformance runs in Linux CI; native macOS/Windows conformance remains untested. The native Ctrl-C executing-child side effect remains a maintainer merge decision, so this PR stays draft.Adds Open Interpreter's Rust terminal CLI as a TUI harness, with native setup/install actions, an account-aware model catalog plus custom entry, avatar, API registration, and migration 0199. The inspected contract is
rust-v0.0.56atcc054cf52fa3585a3de50e0d4e0be6f9ee6677e8; runtime help inspection rejects the older Pythoninterpreterbinary.The initial task is passed after
--into native startup, while AO standing instructions use private SessionStart developer context. Process-local, exact-definition hook trust preserves native project/user hooks without a global trust bypass. Default native configuration, AGENTS.md, permissions, providers, and setup remain intact.--no-daemonkeeps the session under AO's existing supervisor.Native resume requires an exact provider UUID, verified native workspace identity, and valid conversation history from bounded plain or zstd rollouts; missing or unusable history falls back to a fresh launch in the AO workspace. Child hooks cannot overwrite the root ID. Continuous terminal observation now prefers the current styled viewport for surface-aware adapters, so alternate-screen idle/active states are observed correctly; submit/Stop/permission callbacks do not fabricate semantic acceptance or completion. Local credentials report configured, never authorized. Explicit custom-provider env_key configuration is observed through INTERPRETER_HOME and the daemon environment; ambiguous profiles, conflicting auth mechanisms and unsupported Bedrock overrides remain unknown. Shared preflight wiring preserves runtime environment for native profile lookup.
Validation: all 24 GitHub checks passed on
88c7431c427dda8c08802e9612042545a4febaf3: backend suites/race/lint/API and sqlc drift, frontend, CLI E2E, released native conformance, and gitleaks. VPS regressions reproduced the custom-auth and styled-observation defects before their fixes; affected package/race suites passed afterward. Independent review also caught and fixed styled Claude login-warning handling and invalid competing auth configuration. The pinned native conformance passed three consecutive VPS runs after fixing its source-proven post-render hook-input quarantine race. The original failed CI run is retained. No tests, builds, lint, typechecks or provider execution were run on the user's Mac.Ubuntu 24.04 live validation (2026-10-10): final diagnostic attempt 5 used the existing Z.ai coding-plan credential with
glm-5.3-flashand passed all 17 lifecycle gates: initial task exactly once, workspace proof, instruction consumption, AGENTS.md, second API message, active-to-idle reporting, Ctrl-C cancellation, confirmed termination, exact native-ID restore, post-restore messaging, original history/file continuity and refreshed standing instructions. Native cancellation completed in 22 ms; AO idle reconciliation took about 30 seconds, matching the unchanged observer cadence. Isolated daemon/native processes were cleaned up.Earlier restored-input failures were sent during the native provisional “model: loading / Resuming session” screen. A source-backed runtime cue now requires the initialized model/workspace footer beside the empty composer. Controlled raw and bracketed input both worked after initialization; a separate paused-process fixture reproduced native raw-paste backlog behavior. No production timing or paste-policy workaround was added. Terminal captures bracket the final readiness boundary; there is no claim of an exact pre-send screenshot. Actual native task submission and post-restore proof mutation provide the functional continuity evidence.
This is diagnostic lifecycle coverage, not a full strict audit PASS. AO auth remains configured-only; the original audit observed an empty AO model catalog; native model discovery was added afterward, but that strict audit gate and exact catalog comparison have not been rerun. Evidence:
harness-20261010/reports/open-interpreter-diagnostic-attempt5/report.json, the preserved prior attempts and control reports in the VPS audit archive. Real terminal text was captured; Electron UI and native non-Linux harness coverage are not claimed. The PR remains draft.Intentional limits: TUI only; no Chat, reviewer, interface handoff, provider usage accounting, or semantic prompt acknowledgement. Native macOS/Windows execution is not covered by the release conformance job. Customized terminal footers beyond inspected chrome remain unknown. Histories exceeding the documented validation bounds are refused. Shared transcript readers receive plain JSONL only; compressed history remains eligible for verified native restore.
Native provider limitation: Open Interpreter's Chat Completions compatibility converts all native developer messages to wire user roles. AO hook context remains a tagged developer record in native history and is not appended to the visible task, but these providers do not receive developer-role precedence for it. A model can echo consumed context in tool output; the VPS audit observed an audit-only marker echo, so instruction consumption is not a secrecy guarantee. The conformance test explicitly checks both native metadata and the source-defined wire mapping.
Ctrl-C cancels the native turn without guaranteeing immediate provider connection teardown: the native detached Chat Completions stream reader can remain open until another chunk or timeout. Conformance checks the exact durable aborted turn, current-screen idle, late-output exclusion, and completion of a subsequent turn.
Pinned source details and lifecycle rationale:
docs/harnesses/open-interpreter.md.Follow-up at
330590df92575a958dc7a507d16654079b17b4fa: prevents native hook preview from dropping standing instructions in the middle of AO context. Only AO SessionStart sets additionalContextLimit=0, included in its exact trust hash; other hooks retain defaults. Official Rust0.0.56 middle-canary regression fails before fix and passes after. Fresh provider audit/capture and broader validation are underway; original failures are preserved.Fresh follow-up: corrected restore and actual AO Electron evidence. Prior failures and historical limitations retained; strict authentication/model gaps remain explicit. Evidence-only commit, 2 PNG assets (binary files carry zero line counts).
Current focused prompt audit: ordinary-task fresh and after-Kill NEW-token consumption passed on runtime7130668 with actual AO Electron evidence. Native Ctrl+C executing-child cleanup FAILED with a late side effect; independent AO Kill/reaping/no-late/control usability passed. Actual authenticated wire role NOT_CAPTURED; native Chat Completions source maps developer hook context to user. Draft retained. Harness-owned report. Later evidence-head CI is pending; old checks are not current-head results.