Skip to content

[codex] Polish Lab TUI agent output#623

Open
willccbb wants to merge 1 commit intomainfrom
codex/hide-skills-in-tui
Open

[codex] Polish Lab TUI agent output#623
willccbb wants to merge 1 commit intomainfrom
codex/hide-skills-in-tui

Conversation

@willccbb
Copy link
Copy Markdown
Member

@willccbb willccbb commented May 9, 2026

Summary

  • Hide internal Lab skill/materialization details from user-facing TUI copy, sync logs, doctor rows, and agent stream output.
  • Collapse verbose Codex Lab tool chatter so non-widget tool calls stay out of the transcript and widget turns show compact titles.
  • Make eval config widgets foreground picker controls instead of config paths, including environment/model selects when values are known.

Validation

  • uv run --project packages/prime pytest packages/prime/tests/test_lab_view.py -q -> 209 passed
  • uv run --project packages/prime ruff check ... -> passed
  • commit hooks: ruff, ruff format, ty -> passed

Note

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) for config_editor/run_launcher actions, and eval widgets treat a known envs value as a Select control.

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.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ 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
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 1924dd4. Configure here.

@willccbb willccbb marked this pull request as ready for review May 9, 2026 20:35
@willccbb willccbb requested review from d42me and mrmoxon May 9, 2026 20:35
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 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".

Comment on lines +508 to +509
if normalized.startswith("sync failed:"):
return "Sync failed: Lab asset refresh failed"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge 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 👍 / 👎.

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