Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1924dd4. Configure here.
| ) -> None: | ||
| display_content = _dynamic_tool_chat_content(status, content, action) | ||
| if display_content is None: | ||
| return |
There was a problem hiding this comment.
Early return skips streaming assistant finalization
Low Severity
When _dynamic_tool_chat_content returns None (i.e., status == "tool"), _record_dynamic_tool_call now returns before reaching _finish_latest_streaming_assistant_locked(fallback=""). Previously, this finalization was always called, ensuring any active streaming assistant message was properly completed (or removed if empty) before appending a system message. Now, if there happens to be an active streaming assistant message when a "tool" status event arrives, it will remain in the "streaming" state until some other event finalizes it, potentially causing a lingering streaming indicator in the UI.
Reviewed by Cursor Bugbot for commit 1924dd4. Configure here.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1924dd40af
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| if normalized.startswith("sync failed:"): | ||
| return "Sync failed: Lab asset refresh failed" |
There was a problem hiding this comment.
Preserve sync failure cause when redacting skill lines
When a sync error message contains skill (for example exceptions like Skill 'x' is missing SKILL.md. or duplicate-skill errors), this branch rewrites the full Sync failed: ... line to the generic Sync failed: Lab asset refresh failed, which removes the actionable failure reason from the TUI. run_lab_sync_service already emits the precise exception text, so this redaction makes real sync failures hard to diagnose and forces users to rerun outside the screen to understand what broke.
Useful? React with 👍 / 👎.


Summary
Validation
uv run --project packages/prime pytest packages/prime/tests/test_lab_view.py -q->209 passeduv run --project packages/prime ruff check ...-> passedruff,ruff format,ty-> passedNote
Medium Risk
Moderate risk because it changes what agent/tool events are surfaced in the transcript and sync/doctor UI output, which could inadvertently hide useful diagnostics. Changes are UI/logging focused with no auth or data-plane logic.
Overview
Polishes Lab’s TUI output to hide internal “skill”/materialization details and reduce noisy agent/tool chatter across chat, sync, and doctor views.
Agent runtime now strips internal skill-disclosure lines from streamed assistant/tool text and suppresses non-widget tool-call messages; widget turns display a compact title instead of verbose content. Config-related widgets/cards now show a “Pickers” summary (via
config_picker_summary) forconfig_editor/run_launcheractions, and eval widgets treat a knownenvsvalue as aSelectcontrol.Sync/doctor screens and related copy are updated to talk about “Lab assets” (not skills), with sync output and doctor rows rewritten/filtered to remove skill paths and internal cache details; tests are extended to lock in these redactions and the new widget transcript behavior.
Reviewed by Cursor Bugbot for commit 1924dd4. Bugbot is set up for automated code reviews on this repo. Configure here.