Fix: OpenCode event ingestion compatibility (fixes hanging "working..." state with OpenCode Adapter)#2704
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. 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. Comment |
|
This PR might seem like a duplicate of #2673, and it kind of is, but 2673 removes the old event stream which would break and regress T3 code experience for users on Opencode versions that are lesser than <=0.14.40 (which relatively recent) |
ApprovabilityVerdict: Needs human review This PR modifies runtime event ingestion behavior by introducing a new global event API with fallback to legacy subscription. While well-tested with comprehensive coverage, changes to event processing pipelines that affect session state tracking warrant human review. You can customize Macroscope's approvability policy. Learn more. |
Heya, I started using T3 code 2 days ago with the Openchud integration and I was quite surprised at it not working at all. I've forked T3 code to fix a lot of issues and I'm using the local build for now, but this change would make OpenCode adapter from currently unusable to slightly above usable.
What Changed
/global/eventfrom Opencood for runtime event ingestion and filter wrapped events by session directory/eventsubscription when global events are unavailable (a lot of chaps within the issue thread below downgraded to <=0.14.40, so this fix would make it work for older sessions too)Why
Fixes #2644
UI Changes
(sound on 👁️👃👁️🦻)
t3code.pr.1.mp4
Checklist
Note
Medium Risk
Changes OpenCode session event ingestion to prefer a new global event stream and adds fallback logic, which can affect turn completion and session lifecycle behavior if event formats or error detection differ across OpenCode versions.
Overview
Switches the OpenCode adapter’s event pump to prefer
global.event(wrapped events) and projects provider runtime events only after filtering by sessiondirectoryand validating the wrapped payload shape.Adds compatibility fallback: if
global.eventis unavailable (e.g. 404 / TypeError), the adapter falls back toevent.subscribe(now called with{ directory }). Updates tests to cover global ingestion, directory filtering, malformed payload handling, and the fallback path.Reviewed by Cursor Bugbot for commit bd4ac1a. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Fix hanging "waiting..." state in OpenCode adapter by preferring
global.eventstream over legacyevent.subscribeglobal.eventendpoint, filtering bycontext.directoryto ignore events from other sessions and skipping malformed payloads.event.subscribepath (passing{ directory }as a parameter) whenglobal.eventreturns a 404 or aTypeErrorindicating the method is absent.AbortControllerthat is cancelled on scope close.Macroscope summarized bd4ac1a.