Skip to content

Select OpenCode plugin exports from the execution host version - #24662

Merged
nwparker merged 32 commits into
mainfrom
nwparker/OpenCode-Host-Capabilities
Oct 4, 2026
Merged

nwparker merged 32 commits into
mainfrom
nwparker/OpenCode-Host-Capabilities

Conversation

@nwparker

@nwparker nwparker commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 12 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​764 $\color{#cf222e}{\Huge{\mathbf{−}}}$​2 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​762
Prod 11 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​409 $\color{#cf222e}{\Huge{\mathbf{−}}}$​18 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​391

ELI5

Different OpenCode versions load different plugin shapes. Orca now chooses the shape supported by the executable that will actually run.

What Changed

Probe the native, WSL or SSH execution host with bounded output and timeout; cache by host, executable and launch environment; preserve optional capabilities across relay restart. Remove stale inherited selections. The existing configuration writer moves into its own module with its locking, write order and ownership checks preserved. Invalid TUI configuration warns and preserves user bytes while allowing the separate server plugin to install.

The WSL version probe now removes carrier entries for settings deliberately deleted from the launch environment and supplies an explicit empty carrier when needed. This prevents the production WSL runner from restoring ambient credentials or config paths. Controlled before cases fail; the corrected runner-boundary cases pass, including flags, empty values and concurrent cache reuse.

Why

Reading the actual CLI version avoids guessed environment flags. Optional metadata supports older paired hosts. A typed invalid-config error limits recovery to the known registration failure; unrelated filesystem failures still propagate.

Linked Issue

Part of #22829; depends on merged #24601. The invalid-TUI follow-up #25031 is merged. Reproduces the loader failure in #16245 and covers the focused factory shape in #16270.

Visual Proof

N/A — background process setup and configuration handling add no rendered controls.

Testing

  • Installed OpenCode exercised in the retained before/after runs.
  • Automated tests cover the reproduced boundaries.

The qualified d94a3f2e source passes 253 tests across 22 files, all three desktop typechecks, a production build, formatting, full owned-file quality gates and the configured repository anti-slop scan. Test counts overlap other layers.

The current e213fe11 source normally joins this layer with main 3284b4c7. Its complete 65-file cumulative scope is retained. It inherits main’s observation-only Build handling and terminal-agent type checks; the repaired OpenCode claim and location checks are unchanged. On this exact commit, 203 tests across 8 files and all three desktop typechecks pass. Independent reviews verify every owned file, every other main file, the normal merge result and the closed test processes. Earlier full quality and build checks remain pinned to their recorded sources; fresh public CI is pending.

Installed OpenCode 2.0.16 reproduced lost startup authorization and incorrect inherited configuration. Earlier combined 7c765fde also retained a native startup failure after authorization and before a primary provider request; its complete cause was not captured. The repaired combined c8fdfdbe app then completed fresh and nested Unicode startup turns, used one combined status/prompt overlay, claimed each brief once, preserved the original user configuration and reported canonical working → done. Its genuine worker selected the app’s private CLI and completed worker_done exactly once. All 319 recorded process incarnations and four private ports closed. Screenshots and actual evidence stay pinned to c8fdfdbe on main 2b1acd0d; the current source has separate static checks, without a current-commit runtime claim. The separate historical loader reproduction uses official OpenCode 1.1.23: Orca 1.4.188 fails plugin initialization with HTTP 500; the corrected version-selected plugin returns HTTP 200. The unchanged original Windows CI job also passed its three cells on one rerun; the earlier timeout’s cause remains unproved.

Review

Current source e213fe112c40dd4de53306ca55caa97a7cba447a retains the complete 65-file cumulative contribution; the final stack retains all 124 launch files. Every file outside that scope exactly matches frozen main 3284b4c7. The later search and mobile merges on main f199a20c have no files in this scope; CI will test the combined merge. Normal merges preserve predecessor and contributor ancestry. The OpenCode claim/location repair remains byte-for-byte unchanged from its qualified predecessor.

Agent skill upstream boundary

  • Not applicable; no upstream skill-installer material is copied.

Notes

Retain the complete original capability contribution. Native prompt authorization remains in #24762. The earlier object-only v1 fixture omitted the released callable fallback and does not establish a selector defect.

Related loader and event contributions by @umi008 (#11792), @adityachaudhary99 (#16270), @liobr (#20410), @donniesilalahi (#20458) and @leilei3167 (#22768) are credited.

Checklist

  • Scope retained and focused on this layer.
  • Explained the user-facing change, mechanism and approach.
  • Visual/interaction evidence identified above, or N/A with reason.
  • Self-reviewed for correctness, security and performance.
  • Cross-platform, folder workspace and SSH execution boundaries considered.
  • Appropriate tests, typechecks, formatting and changed-line checks pass; fresh public CI will cover each published layer.

Reuse captured composer readiness on local and paired execution hosts and revoke launching-shell paste anchors.

Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
@nwparker
nwparker force-pushed the nwparker/OpenCode-Launch-Prompts branch from 751d58a to 7f2ba67 Compare October 2, 2026 12:03
@nwparker
nwparker force-pushed the nwparker/OpenCode-Host-Capabilities branch from 9356b67 to 42788e7 Compare October 2, 2026 12:08
@nwparker
nwparker marked this pull request as ready for review October 2, 2026 12:48

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ No critical issues — minor suggestions inline.

Reviewed changes

  • Execution-host version probe — new src/shared/opencode-cli-version.ts parses opencode --version and maps it to { version, pluginApi, promptMode }; new src/main/opencode/opencode-cli-version.ts runs a 5s/4KB bounded probe behind a 60s identity-keyed cache.
  • Launch-capability resolution — new src/main/opencode/opencode-launch-capabilities.ts resolves the executable natively, via an injected relay resolver, or through runWslProcess, rebuilding the guest env from WSLENV.
  • Launch wiring — new src/main/opencode/opencode-pty-launch.ts strips inherited ORCA_OPENCODE_PLUGIN_API, probes fresh non-remote launches, writes the selection, and removes it from envToDelete so the final provider pass cannot drop it; wired into the desktop and runtime spawn-option builders.
  • Plugin default export — src/main/opencode/status-plugin-factory-source.ts now chooses the callable factory for v1 and the object shape otherwise via process.env.ORCA_OPENCODE_PLUGIN_API.
  • Relay probing — src/relay/pty-handler.ts probes its own host and returns optional openCodeCapabilities; src/main/providers/pty-spawn-result.ts carries the optional field.
  • Tests — new parser, probe-cache, capability, and launch-prep suites plus a v1 default-export case, with exact assertions.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

Comment thread src/main/opencode/hook-plugin-module-contract.test.ts
Comment thread src/relay/pty-handler.ts Outdated
Comment thread src/main/opencode/opencode-cli-version.ts Outdated
nwparker and others added 4 commits October 3, 2026 02:02
Preserve complete original 27-path contribution and current main credential fields. Private preparation only.

Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
Preserve complete original 14-path contribution and current main preparation. Keep native startup intent in its later topic. Private preparation only.
Preserve complete original 27-path contribution and current main credential fields. Private preparation only.

Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>

Restack on selected main a40, retain its jcode launch configuration and record the unchanged jcode fallback lane in the exhaustive test.
Preserve complete original 14-path contribution and current main preparation. Keep native startup intent in its later topic. Private preparation only.

Restack on selected main a40, retain its jcode launch configuration and record the unchanged jcode fallback lane in the exhaustive test.
@nwparker
nwparker marked this pull request as draft October 3, 2026 11:01
@nwparker
nwparker marked this pull request as ready for review October 3, 2026 17:12

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ No critical issues — one minor WSL probe-isolation gap inline.

Reviewed changes

The GitHub diff is inflated by a stale base (nwparker/OpenCode-Launch-Prompts); the authored delta is 25 files, re-read end-to-end. The three findings from the prior pullfrog review at 42788e are all addressed.

  • Execution-host version probe — src/shared/opencode-cli-version.ts parses opencode --version into { version, pluginApi, promptMode }; src/main/opencode/opencode-cli-version.ts runs a 5s/4KB bounded probe behind a 60s identity-keyed cache that now excludes pane-identity keys.
  • Launch-capability resolution — src/main/opencode/opencode-launch-capabilities.ts resolves the executable natively, via the injected relay resolver, or through runWslProcess, rebuilding the guest env from WSLENV.
  • Launch wiring — src/main/opencode/opencode-pty-launch.ts strips any inherited selection, probes fresh non-remote launches, writes the probed value, and removes it from envToDelete so the final provider pass cannot drop it; wired into both spawn-option builders.
  • Plugin default export — src/main/opencode/status-plugin-factory-source.ts selects the callable factory for v1 and the object shape otherwise via process.env.ORCA_OPENCODE_PLUGIN_API.
  • Relay probing + revive restore — capabilities are persisted on ManagedPty/SerializedPtyEntry and validated/restored on reviveEntry via applyOpenCodePluginSelection.
  • Invalid TUI config — a typed InvalidOpenCodeTuiConfigError is caught so a bad tui.json/tui.jsonc no longer blocks the separate server plugin install, while filesystem errors still propagate.
  • Tests — parser, probe-cache, capability, launch-prep, relay-revive, and invalid-TUI-config suites plus a v1 default-export case, with exact assertions; contract tests pin ORCA_OPENCODE_PLUGIN_API.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

Comment thread src/main/opencode/opencode-launch-capabilities.ts
@nwparker
nwparker changed the base branch from nwparker/OpenCode-Launch-Prompts to main October 3, 2026 18:39

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

This PR's new head does not build. src/main/opencode/opencode-pty-launch.ts imports three OpenCode startup-prompt modules that are absent from the tree, so every orcad build job is red on dcec863, and its return-type change also breaks both call sites.

Reviewed changes

Rereviewed the delta since the prior pullfrog review at c401e91 (authored commits ec6686ef, 1dfbd55, dcec863), which folds the OpenCode startup-prompt layer into the execution-host plugin-selection source.

  • WSL probe isolation (prior finding addressed) — probeOpenCodeLaunchCapabilities now rebuilds the guest WSLENV from the keys present in the resolved probe env and supplies an explicit empty carrier when none survive, so a key stripped from the probe can no longer be restored through the inherited carrier; a new opencode-wsl-probe-environment.test.ts exercises the production runner boundary, including flags, empty values and concurrent cache reuse.
  • Startup-prompt intent folded into prepareOpenCodePtyLaunch — for a verified 2.0.16 (prefill) fresh launch it reserves a nonce, installs the owned overlay and strips --prompt <body>; the function now returns { env, command } instead of the env record.
  • New tests for the startup-prompt gate added to opencode-pty-launch.test.ts.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

Comment thread src/main/opencode/opencode-pty-launch.ts Outdated
Comment thread src/main/opencode/opencode-pty-launch.ts Outdated
@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

📝 Walkthrough

Walkthrough

The changes add OpenCode version and launch capability detection, then use the results to select plugin API behavior for PTY launches. They add notification-source ownership and per-source desktop mute controls, revise macOS updater install and quit handling, and route orchestration sends through a shared API. Other changes update Claude subagent waiting-state reporting, mobile and renderer cleanup, file-opening behavior, managed-account handling, and build and release tooling.

Priority: ➖ Normal

Merge Risk: 🔵 Low · up to a77ce

Removing a managed account whose stored ID has different letter casing can leave its profile directory and credentials on disk on case-sensitive filesystems. The earlier OpenCode launch build failures are resolved. This needs a small fix but does not block the main feature work.

Security Architecture Review

Security architecture risk: 🟡 Moderate · up to a77ce

The inspected paths preserve important permission, identity, and failure-recovery safeguards. However, credential inheritance across execution environments and asynchronous recovery behavior have not been fully verified. No introduced security vulnerability was established in the inspected scope.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The inspected sensitive outcomes are relay host activation, writes to addressed agent sessions, provider permission responses, credential-profile persistence, and local update execution. The evidence does not establish a broader tenant-wide or fleet-wide authority expansion; uninspected launch and mobile paths remain outside that conclusion.

Trust Boundaries and Controls

  • observed — Claude permission settlement retains session/fence validation and single-owner prompt claims. Answering rechecks the captured session, acquisition generation, and claim after journal commit before invoking the provider callback. Dismissal releases claims and handles failed journal ownership transfer.
  • observed — Managed profiles use private-directory creation, registered UUID resolution, symlink/realpath ownership checks, and durable secure metadata publication. These controls bound the changed recovery path; post-publication permission failures remain reported rather than silently treated as success.

Resilience and Maintainability Implications

  • inferred — The asynchronous child-work callbacks look up the current session by persistent session ID. Their drain derives evidence from that current session's decoder, translator, and prompts, which counters stale-payload replay. Publication ordering during same-ID reacquisition remains unresolved, but no resulting permission-authority expansion was established.
🚥 Pre-merge checks | ✅ 4 | ❓ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ❓ Inconclusive Docstring coverage is 24.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 100 functions across 73 files. (160 skipp… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main change: selecting OpenCode plugin exports based on the execution host’s version.
Description check ✅ Passed The description covers the main template sections, including the change, rationale, linked issues, visual proof, testing, review, and checklist. It provides specific validation results and notes that …
Full details: Docstring Coverage

Explanation

Docstring coverage is 24.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 100 functions across 73 files. (160 skipped: 18 unsupported, 142 over the file limit.)

✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 1f4ba678-21ce-4545-ac50-35fd50ae2f92
📥 Commits

Reviewing files that changed from the base of the PR and between 995715b and dcec863.

📒 Files selected for processing (26)
  • src/main/ipc/pty/ipc/spawn-options.ts
  • src/main/ipc/pty/runtime/spawn-options.ts
  • src/main/opencode/hook-plugin-dispose-host.test.ts
  • src/main/opencode/hook-plugin-legacy-tui-ownership.test.ts
  • src/main/opencode/hook-plugin-module-contract.test.ts
  • src/main/opencode/hook-plugin-opencode2-setup.test.ts
  • src/main/opencode/hook-service-invalid-tui-config.test.ts
  • src/main/opencode/hook-service.test.ts
  • src/main/opencode/opencode-cli-version.test.ts
  • src/main/opencode/opencode-cli-version.ts
  • src/main/opencode/opencode-launch-capabilities.test.ts
  • src/main/opencode/opencode-launch-capabilities.ts
  • src/main/opencode/opencode-legacy-plugin-loader-fixture.ts
  • src/main/opencode/opencode-pty-launch.test.ts
  • src/main/opencode/opencode-pty-launch.ts
  • src/main/opencode/opencode-wsl-probe-environment.test.ts
  • src/main/opencode/status-plugin-factory-source.ts
  • src/main/providers/provider-dispatch.test.ts
  • src/main/providers/pty-spawn-result.ts
  • src/relay/opencode-plugin-selection.ts
  • src/relay/pty-handler-opencode-revive.test.ts
  • src/relay/pty-handler.ts
  • src/shared/opencode-cli-version.test.ts
  • src/shared/opencode-cli-version.ts
  • src/shared/opencode-tui-config-registration.ts
  • src/shared/opencode-tui-plugin-install.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.

Comment thread src/main/ipc/pty/runtime/spawn-options.ts
Comment thread src/main/opencode/opencode-pty-launch.test.ts Outdated
Comment thread src/main/opencode/opencode-pty-launch.ts Outdated

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

Rereviewed the delta since the prior pullfrog review at dcec863 — the merge commit a77cea7f, which resolves both blocking findings from that review.

  • Build restored — prepareOpenCodePtyLaunch is environment-only again (Record<string, string> | undefined); the three imports of the absent opencode-startup-prompt* modules and the { env, command } return are gone, so both spawn-option callers compile. pnpm tc:node is clean.
  • Startup-prompt layer scoped out — the prefill nonce reservation, owned-overlay install and --prompt stripping were reverted out of this PR (kept in the dependent #24762); grep finds no remaining opencode-startup-prompt* reference.
  • Tests reverted in lockstep — opencode-pty-launch.test.ts calls prepareOpenCodePtyLaunch directly and asserts the env record; the WSL probe-environment suite is unchanged. 444 OpenCode and relay tests pass on the checked-out head.
  • Doc-only wording — draft-paste-ready-scanner.ts inline timing comment now matches its JSDoc (~3.9s).

The 239-file checkout_pr diff is base drift (main churn against a stale 995715b1 base); the authored surface is the OpenCode caps layer, already reviewed through c401e91.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e02a71b4-bda8-4d91-9daf-220054ae55c6
📥 Commits

Reviewing files that changed from the base of the PR and between dcec863 and a77cea7.

⛔ Files ignored due to path filters (1)
  • docs/assets/readme-downloads.svg is excluded by !**/*.svg
📒 Files selected for processing (215)
  • .github/workflows/macos-updater-tests.yml
  • README.md
  • cloud/apps/relay/src/host-control-proof-cleanup.test.ts
  • cloud/apps/relay/src/host-session-registry.ts
  • config/build-plugins/plain-node-entry-guard.ts
  • config/reliability-gates.jsonc
  • config/scripts/plain-node-entry-guard.test.ts
  • config/scripts/stable-release-tag-selection-budget.test.mjs
  • config/scripts/stable-release-tags.mjs
  • docs/readme/README.es.md
  • docs/readme/README.fr.md
  • docs/readme/README.ja.md
  • docs/readme/README.ko.md
  • docs/readme/README.pt.md
  • docs/readme/README.zh-CN.md
  • docs/reference/agent-status-store.md
  • mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json
  • mobile/src/mobile-web-shell/bridge-host-subscription-start-cleanup.test.ts
  • mobile/src/mobile-web-shell/bridge-host-subscriptions.ts
  • mobile/src/platform/native-media-device.ts
  • mobile/src/platform/native-media-stage-cleanup.test.ts
  • mobile/src/session/mobile-file-search-owner-cleanup.test.tsx
  • mobile/src/session/mobile-session-toast-owner-cleanup.test.tsx
  • mobile/src/session/use-mobile-native-chat-file-search.ts
  • mobile/src/session/use-mobile-session-feedback-capabilities.ts
  • mobile/src/test-support/rpc-recording/derived-goldens.ts
  • mobile/src/test-support/rpc-recording/inventory-lifecycle-derivation.test.ts
  • mobile/src/transport/mobile-relay-e2ee-link.ts
  • mobile/src/transport/mobile-relay-error-timer-cleanup.test.ts
  • mobile/src/transport/mobile-relay-pairing-error-timer-cleanup.test.ts
  • mobile/src/transport/mobile-relay-physical-client.ts
  • mobile/src/worktree/agent-row-lineage-parity.test.ts
  • mobile/src/worktree/agent-row-lineage.ts
  • src/cli/handlers/file.test.ts
  • src/cli/handlers/file.ts
  • src/main/claude/__fixtures__/claude-subagent-permission-frames.json
  • src/main/claude/claude-can-use-tool-test-support.ts
  • src/main/claude/claude-child-tool-queries.ts
  • src/main/claude/claude-child-work-decoder.test.ts
  • src/main/claude/claude-child-work-decoder.ts
  • src/main/claude/claude-child-work-evidence-retention.test.ts
  • src/main/claude/claude-child-work-evidence.ts
  • src/main/claude/claude-journal-translator-contract.ts
  • src/main/claude/claude-prompt-registry.ts
  • src/main/claude/claude-structured-control-actions.test.ts
  • src/main/claude/claude-structured-inbound-control.ts
  • src/main/claude/claude-structured-journal-prompt-cards.test.ts
  • src/main/claude/claude-structured-journal-prompts.ts
  • src/main/claude/claude-structured-journal-translation.ts
  • src/main/claude/claude-structured-session-adapter.ts
  • src/main/claude/claude-subagent-linkage.ts
  • src/main/claude/claude-subagent-permission-request.test.ts
  • src/main/claude/claude-subagent-roster.ts
  • src/main/claude/claude-turn-ownership.test.ts
  • src/main/daemon/daemon-idle-inventory-budget.test.ts
  • src/main/daemon/daemon-server.ts
  • src/main/daemon/terminal-host.ts
  • src/main/macos-update-running-instances.integration.test.ts
  • src/main/macos-update-running-instances.test.ts
  • src/main/macos-update-running-instances.ts
  • src/main/managed-data-accounts/service-enrollment-persistence.test.ts
  • src/main/managed-data-accounts/service.test.ts
  • src/main/managed-data-accounts/service.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-event-sink-queue.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-event-sink.ts
  • src/main/notifications/notification-delivery-service.test.ts
  • src/main/notifications/notification-delivery-service.ts
  • src/main/opencode/opencode-pty-launch.test.ts
  • src/main/opencode/opencode-pty-launch.ts
  • src/main/persistence/applying-settings/notification-settings-normalization.test.ts
  • src/main/persistence/applying-settings/onboarding-normalization.ts
  • src/main/runtime/orca-runtime-files-mobile-explorer-reads.test.ts
  • src/main/runtime/orchestration/coordinator-task-dispatch.ts
  • src/main/runtime/orchestration/db/decision-gates/decision-gate-store.ts
  • src/main/runtime/orchestration/db/dispatch-context/dispatch-completion.ts
  • src/main/runtime/orchestration/db/dispatch-depth.ts
  • src/main/runtime/orchestration/db/legacy/legacy-compatibility-candidates.ts
  • src/main/runtime/orchestration/db/messages/foreign-direct-mailbox-routing.ts
  • src/main/runtime/orchestration/db/remaining-dispatch-statement-compilation.test.ts
  • src/main/runtime/orchestration/send-agent-turn-boundary.test.ts
  • src/main/runtime/orchestration/send-agent-turn-host.test.ts
  • src/main/runtime/orchestration/send-agent-turn.test.ts
  • src/main/runtime/orchestration/send-agent-turn.ts
  • src/main/runtime/orchestration/structured-mailbox-pointer-delivery.ts
  • src/main/runtime/orchestration/structured-mailbox-pointer-host.test.ts
  • src/main/runtime/orchestration/structured-mailbox-pointer-host.ts
  • src/main/runtime/orchestration/structured-pointer-operation-id.test.ts
  • src/main/runtime/orchestration/structured-pointer-operation-id.ts
  • src/main/runtime/rpc/methods/orchestration-structured-worker-session.test.ts
  • src/main/runtime/rpc/methods/orchestration-structured-worker-session.ts
  • src/main/runtime/rpc/methods/orchestration/federation/federation.ts
  • src/main/runtime/rpc/methods/orchestration/runs/dispatch-methods.ts
  • src/main/runtime/rpc/methods/orchestration/worker/deliver-worker-dispatch-preamble.ts
  • src/main/runtime/runtime-file-commands-constructor.ts
  • src/main/startup/desktop-startup-ordering.test.ts
  • src/main/startup/main-process-quit-update-veto.test.ts
  • src/main/startup/main-process-quit.ts
  • src/main/updater-events.test.ts
  • src/main/updater-fallback.ts
  • src/main/updater-linux-package-recovery-actions.test.ts
  • src/main/updater-mac-install.ts
  • src/main/updater-mac-quit-guard.test.ts
  • src/main/updater-test-harness.ts
  • src/main/updater.check-failure.test.ts
  • src/main/updater.check-preflight.test.ts
  • src/main/updater.fallback.test.ts
  • src/main/updater.headless-serve-install.test.ts
  • src/main/updater.install-failure-cause.test.ts
  • src/main/updater.mac-install.test.ts
  • src/main/updater/updater-download-install.ts
  • src/main/updater/updater-install-execution.ts
  • src/main/updater/updater-menu-checks.ts
  • src/main/updater/updater-scheduling.ts
  • src/main/window/dashboard-popout-window.test.ts
  • src/main/window/dashboard-popout-window.ts
  • src/main/window/main-window-state-lifecycle.test.ts
  • src/main/window/main-window-state-lifecycle.ts
  • src/main/window/main-window-updater-deferred-setup.test.ts
  • src/main/window/main-window-updater.ts
  • src/relay/ai-vault-service-cancellation.test.ts
  • src/relay/ai-vault-service-entry.ts
  • src/relay/pty-handler-owner-inventory-clone-budget.test.ts
  • src/relay/pty-handler.ts
  • src/renderer/src/attention/notification-sources.test.ts
  • src/renderer/src/attention/notification-sources.ts
  • src/renderer/src/attention/notification-subject-owner.ts
  • src/renderer/src/components/UpdateCard.error-card.test.tsx
  • src/renderer/src/components/activity/activity-search-query-work-budget.test.tsx
  • src/renderer/src/components/activity/activity-thread-grouping.ts
  • src/renderer/src/components/activity/use-agent-pane-threads.ts
  • src/renderer/src/components/dashboard-popout/AgentTerminalPreview.frame-lifecycle.test.tsx
  • src/renderer/src/components/dashboard-popout/AgentTerminalPreview.settings-lifetime.test.tsx
  • src/renderer/src/components/dashboard-popout/AgentTerminalPreview.tsx
  • src/renderer/src/components/dashboard-popout/preview-terminal-box-fit-lifecycle.test.ts
  • src/renderer/src/components/dashboard-popout/preview-terminal-box-fit.ts
  • src/renderer/src/components/editor/markdown-preview-review-frame-lifecycle.test.tsx
  • src/renderer/src/components/editor/markdown-preview-review-timer-cleanup.ts
  • src/renderer/src/components/editor/use-markdown-preview-foundation.ts
  • src/renderer/src/components/editor/use-markdown-preview-review-actions.ts
  • src/renderer/src/components/editor/use-markdown-preview-viewport.ts
  • src/renderer/src/components/maintenance/update-card/update-card-error-model.ts
  • src/renderer/src/components/native-chat/StructuredAgentSessionAttentionBridge.test.tsx
  • src/renderer/src/components/native-chat/StructuredAgentSessionAttentionBridge.tsx
  • src/renderer/src/components/native-chat/structured-attention-dispatch.test.ts
  • src/renderer/src/components/native-chat/structured-attention-dispatch.ts
  • src/renderer/src/components/onboarding/use-onboarding-flow-persistence.test.ts
  • src/renderer/src/components/settings/GeneralUpdateSettingsSection.test.tsx
  • src/renderer/src/components/settings/GeneralUpdateSettingsSection.tsx
  • src/renderer/src/components/settings/NotificationHostToggles.test.tsx
  • src/renderer/src/components/settings/NotificationHostToggles.tsx
  • src/renderer/src/components/settings/NotificationsPane.test.tsx
  • src/renderer/src/components/settings/NotificationsPane.tsx
  • src/renderer/src/components/settings/notification-host-pending-save.test.tsx
  • src/renderer/src/components/settings/notifications-search.ts
  • src/renderer/src/components/settings/use-notification-source-options.ts
  • src/renderer/src/components/status-bar/resource-manager-exit-render-budget.test.tsx
  • src/renderer/src/components/status-bar/resource-session-removal-render-budget.test.tsx
  • src/renderer/src/components/status-bar/use-resource-session-inventory.ts
  • src/renderer/src/components/terminal-pane/parked-terminal-byte-watcher.test.ts
  • src/renderer/src/components/terminal-pane/parked-terminal-byte-watcher.ts
  • src/renderer/src/components/terminal-pane/pty-connection-hook-completion-bell-arbitration.test.ts
  • src/renderer/src/components/terminal-pane/pty-connection-hook-completion-side-effects.test.ts
  • src/renderer/src/components/terminal-pane/pty-connection-hook-idle-arbitration.test.ts
  • src/renderer/src/components/terminal-pane/pty-connection-task-complete-dispatch.test.ts
  • src/renderer/src/components/terminal-pane/pty-connection-types.ts
  • src/renderer/src/components/terminal-pane/pty-connection/agent-task-complete-notify.ts
  • src/renderer/src/components/terminal-pane/pty-connection/pane-pty-visibility-bind.ts
  • src/renderer/src/components/terminal-pane/pty-output-side-effect-queue-reentrancy.test.ts
  • src/renderer/src/components/terminal-pane/pty-output-side-effect-queue-retention.test.ts
  • src/renderer/src/components/terminal-pane/pty-output-side-effect-queue.ts
  • src/renderer/src/components/terminal-pane/pty-side-effect-pending-census.test.ts
  • src/renderer/src/components/terminal-pane/pty-side-effect-pending-census.ts
  • src/renderer/src/components/terminal-pane/pty-transport-connect-spawn.test.ts
  • src/renderer/src/components/terminal-pane/pty-transport.ts
  • src/renderer/src/components/terminal-pane/terminal-pane-lifecycle-types.ts
  • src/renderer/src/components/terminal-pane/terminal-pane-mount-cleanup.ts
  • src/renderer/src/components/terminal-pane/terminal-parked-pty-watcher.ts
  • src/renderer/src/components/terminal-pane/terminal-parked-watcher-reconciliation.test.ts
  • src/renderer/src/components/terminal-pane/terminal-parked-watcher-reconciliation.ts
  • src/renderer/src/components/terminal-pane/terminal-parked-watcher-registry.ts
  • src/renderer/src/components/terminal-pane/use-notification-dispatch.ts
  • src/renderer/src/components/ui/collapsible.tsx
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
  • src/renderer/src/lib/pane-manager/pane-container-listener-lifecycle.test.ts
  • src/renderer/src/lib/pane-manager/pane-dom-focus-class-sync-lifecycle.test.ts
  • src/renderer/src/lib/pane-manager/pane-dom-focus-class-sync.ts
  • src/renderer/src/web/preload-api/web-preference-normalization.ts
  • src/shared/agent-session-option-agent-args.ts
  • src/shared/agent-session-option-catalog-antigravity.ts
  • src/shared/agent-session-option-catalog-claude-codex.ts
  • src/shared/agent-session-option-catalog-codebuddy.ts
  • src/shared/agent-session-option-catalog-gemini-cursor.ts
  • src/shared/agent-session-option-catalog-grok.test.ts
  • src/shared/agent-session-option-catalog-grok.ts
  • src/shared/agent-session-option-catalog-muse.ts
  • src/shared/agent-session-option-catalog-omp.test.ts
  • src/shared/agent-session-option-catalog-omp.ts
  • src/shared/agent-session-option-catalog-removers.test.ts
  • src/shared/agent-session-option-catalog-types.ts
  • src/shared/agent-session-option-launch.ts
  • src/shared/command-option-occurrence.ts
  • src/shared/draft-paste-ready-scanner.ts
  • src/shared/main-agent-status-parity.test.ts
  • src/shared/notification-settings-defaults.ts
  • src/shared/notification-settings-types.ts
  • src/shared/notification-source.ts
  • src/shared/structured-agent-session-outbox.ts
  • src/shared/structured-agent-session-send-mutation.ts
  • src/shared/update-status-types.ts
💤 Files with no reviewable changes (5)
  • src/main/runtime/orchestration/structured-pointer-operation-id.test.ts
  • src/shared/agent-session-option-catalog-muse.ts
  • src/shared/agent-session-option-catalog-antigravity.ts
  • src/main/runtime/orchestration/structured-mailbox-pointer-delivery.ts
  • src/shared/agent-session-option-catalog-codebuddy.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 0 remain after this review.

Comment thread src/main/managed-data-accounts/service.ts
Preserve OpenCode launch ownership and location-bound startup claims while inheriting current terminal observations and installer corrections.
@nwparker

nwparker commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

The previously failing Windows Server 2022 x64 inbox-SSH job now passes on one unchanged, uninstrumented confirmation: original run, attempt 2.

Only the failed job was rerun. Its actual checkout remains 3f245b59f58f97155afa306088aa66c0a8f49ded, with the same complete source tree and delivered relay content-manifest version as the original failure. All three original cells pass: CMD, PowerShell and legacy opt-out. The original arithmetic, timeout, resend, reconnect, reuse, cleanup and breakaway assertions remain unchanged; input tracing is absent.

Root checked the official archive digest and every extracted member, raw job logs, exact source, and private service/account/SSH-child cleanup. Individual CMD/PowerShell process deaths were not separately recorded; loaded profiles and global SSH bootstrap remain bounded by the disposable CI VM. An earlier separately owned opt-in diagnostic control also passed, but neither result identifies the original failure cause or establishes a product input fix. The original timeout evidence remains preserved.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

Rereviewed the delta since the prior pullfrog review at a77cea7 — the merge commit e213fe11, which brings current main (3284b4c7) into the caps layer.

  • Merge only, no authored delta — git diff a77cea7..e213fe11 -- <PR paths> is empty and --cc --name-only reports no conflict hunks, so all 23 authored files are byte-identical to the previously approved revision. The 150-file delta is main's own already-reviewed churn (agent identity, browser annotations, preflight), none of it overlapping the caps layer.
  • Combined tree verified — tsc -p config/tsconfig.node.json is clean and 47 OpenCode caps/relay tests pass across the 7 focused suites (opencode-pty-launch, opencode-launch-capabilities, opencode-cli-version, opencode-wsl-probe-environment, hook-service-invalid-tui-config, pty-handler-opencode-revive, shared/opencode-cli-version).

The prior review's approval stands. One note for future runs: the incrementalDiffPath range-diff for this merge rendered misleading "removals" of hook-service-invalid-tui-config.test.ts and opencode-tui-config-registration.ts; both files are present and unchanged, so trust the explicit git diff <old> <new> -- <PR paths>, not the range-diff.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant