Skip to content

SEP Phase 3 (engine): thread ui_capabilities through handshake#27

Merged
brentrager merged 1 commit into
mainfrom
sep-phase3-ui
Jul 3, 2026
Merged

SEP Phase 3 (engine): thread ui_capabilities through handshake#27
brentrager merged 1 commit into
mainfrom
sep-phase3-ui

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Problem

Phase 2 landed the ext→host ui/request seam (HostDelegate::ui_request) with a headless -32001 NoUI default, but ExtensionHost::load hardcoded ui_capabilities: Vec::new() — so a host could never tell an extension which ui/request kinds its frontend can actually render. Extensions had no basis for a hasUI gate.

Solution

ExtensionHost::load/load_one take a ui_capabilities: Vec<String> and forward it into each extension's initialize params. The engine still ships headless (empty caps); smooth-code / the daemon supply the real set plus a HostDelegate that renders dialogs.

Verification

  • New SEP_ECHO_UI mode on the reference sep-echo-peer round-trips a ui/request confirm from inside a tool/execute, echoing the negotiated caps into the prompt.
  • New sep_ui_path integration test: a confirming host answers the round-trip AND the prompt proves caps were threaded; a headless host answers -32001 NoUI.
  • cargo test (sep_ui_path, sep_tool_path, sep_agent_integration) green; new code clippy-clean.

Part of the SEP epic (plan greedy-yawning-petal). Consumed by the smooth-code Phase 3 host + th ext CLI in the smooth repo.

🤖 Generated with Claude Code

ExtensionHost::load now forwards a ui_capabilities list into each extension's
initialize params so a host declares which ui/request kinds its frontend can
render. The ext→host ui/request seam and headless -32001 NoUI default landed in
Phase 2; this closes the loop so extensions can gate their UI (hasUI). Adds a
SEP_ECHO_UI round-trip mode to the reference peer + sep_ui_path integration test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jul 3, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b84a4b8

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@smooai/smooth-operator-core Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@brentrager brentrager merged commit 2c3008b into main Jul 3, 2026
3 checks passed
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