Repository navigation
[codex] Always enable agent prose streaming - #7066
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughRemoves ChangesRemove prose streaming feature flag
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 error, 1 warning)
✅ Passed checks (23 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
Greptile SummaryThis PR removes the
Confidence Score: 5/5Safe to merge — the change is a straightforward flag removal with all existing idle-session and subscriber guards intact. The diff removes dead opt-in machinery without touching any of the correctness-critical guards: hasSubscribers(), the settled-turn flag, the record.state != .ended check, and the nil-snapshot early-exit are all preserved. The poll loop and turn lifecycle wiring are unchanged. The new regression test exercises the formerly-gated path with a deterministic actor-based sleep seam, covering the main risk introduced by the removal. No files require special attention. Important Files Changed
Sequence Diagram%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant H as Hook Event
participant TS as AgentChatTranscriptService
participant PS as AgentChatProseStreamer
participant S as Surface snapshot
participant C as Chat Clients
H->>TS: noteHookEvent(.userPromptSubmit)
TS->>PS: turnStarted(sessionID, surfaceID, agentKind)
Note over PS: spawns poll Task at 150ms cadence
loop Every 150ms while turn active and hasSubscribers
PS->>S: snapshot(surfaceID)
S-->>PS: screen rows
PS->>PS: extract prose
PS->>C: emit .streamingProse(previewMessage)
end
alt Authoritative prose lands in JSONL
TS->>PS: authoritativeProseArrived(sessionID)
Note over PS: settled=true, preview cleared
else stop or sessionEnd hook fires
H->>TS: noteHookEvent(.stop / .sessionEnd)
TS->>PS: turnEnded(sessionID)
Note over PS: Task cancelled, preview cleared
end
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant H as Hook Event
participant TS as AgentChatTranscriptService
participant PS as AgentChatProseStreamer
participant S as Surface snapshot
participant C as Chat Clients
H->>TS: noteHookEvent(.userPromptSubmit)
TS->>PS: turnStarted(sessionID, surfaceID, agentKind)
Note over PS: spawns poll Task at 150ms cadence
loop Every 150ms while turn active and hasSubscribers
PS->>S: snapshot(surfaceID)
S-->>PS: screen rows
PS->>PS: extract prose
PS->>C: emit .streamingProse(previewMessage)
end
alt Authoritative prose lands in JSONL
TS->>PS: authoritativeProseArrived(sessionID)
Note over PS: settled=true, preview cleared
else stop or sessionEnd hook fires
H->>TS: noteHookEvent(.stop / .sessionEnd)
TS->>PS: turnEnded(sessionID)
Note over PS: Task cancelled, preview cleared
end
Reviews (2): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile |
…gent-prose-streaming # Conflicts: # .github/swift-file-length-budget.tsv
Summary
CMUXAgentChatProseStreamingUserDefaults feature flag and its app-target wrapper.Why
The partial-response work shipped behind a default-off flag, so users did not see partial agent responses unless they manually enabled a hidden default. The intended behavior is for streaming previews to be always available.
Validation
python3 scripts/normalize-pbxproj.py --check./scripts/check-pbxproj.sh./scripts/lint-pbxproj-test-wiring.shxcodebuild test -project cmux.xcodeproj -scheme cmux-unit -configuration Debug -destination 'platform=macOS' -derivedDataPath /tmp/cmux-always-enable-agent-prose-streaming-test -only-testing:cmuxTests/AgentChatProseStreamerTests./scripts/reload.sh --tag always-enable-agent-prose-streamingLocalization
No user-facing strings were added or changed.
Need help on this PR? Tag
/codesmithwith what you need. Autofix is disabled.Summary by cubic
Always enable live agent prose streaming. Adds a regression test to ensure streaming emits when the legacy defaults key is false, and refreshes the Swift file length budget guard.
AgentChatProseStreamingFlagand related wiring.userPromptSubmitstarts; turn end stops).Written for commit 619e30a. Summary will update on new commits.
Summary by CodeRabbit
Bug Fixes
Tests