Skip to content

SEP Phase 8 (spec + SDK + snake demo + PORTING.md)#171

Merged
brentrager merged 1 commit into
mainfrom
th-7bd3d5-sep-phase8
Jul 3, 2026
Merged

SEP Phase 8 (spec + SDK + snake demo + PORTING.md)#171
brentrager merged 1 commit into
mainfrom
th-7bd3d5-sep-phase8

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Final SEP phase — spec/SDK/demo/docs slice (pearl th-7bd3d5).

Spec

  • initialize Registrations gain hooks (declared intercept hooks → host skips the per-turn context hook when unhandled) and message_renderers.
  • New RenderBlock $def: the render-block DSL (markdown/keyvalue/table/diff/progress/stack + interactive widget with keybindings + a text fallback) and MessageRendererRegistration.
  • ui/request set_widget documents its widget as a render block (kept permissive — SEP carries no cross-file $refs).
  • Fixtures: event_bus_fanout, event_widget_key, registrations_phase8, render_block_widget.

SDK

  • render.* builders; smooth.events inter-extension bus (publish/on); smooth.registerMessageRenderer; typed ctx.ui.setWidget(RenderBlock); buildRegistrations emits hooks + message_renderers; createTestHost records bus/publish; eventName + method.BUS_PUBLISH.

Demo + docs + scaffold

  • snake — pi's game on the render-block v2 widget DSL (pure game core + widget/key re-render loop; web full-fidelity, TUI reduced).
  • PORTING.md — pi → SEP parity checklist (every ExtensionAPI member → equivalent / port delta / documented N/A).
  • New provider scaffold template in create-smooth-extension.

Tests

SDK 53, server 132, operator 37, scaffolder 7 — all green; typecheck clean across the 4 packages.

🤖 Generated with Claude Code

Spec: initialize Registrations gain hooks + message_renderers; new RenderBlock
DSL $def (markdown/keyvalue/table/diff/progress/stack + interactive widget with
keybindings + text fallback) + MessageRendererRegistration; set_widget documents
its render-block widget; fixtures for bus/event, widget/key, phase8 registrations,
and a widget render block.

SDK: render.* builders; smooth.events bus (publish/on); registerMessageRenderer;
typed ctx.ui.setWidget(RenderBlock); buildRegistrations emits hooks +
message_renderers; createTestHost records bus/publish; eventName + method.BUS_PUBLISH.

Demo: snake — pi's game on the render-block v2 widget DSL (pure game core +
widget/key re-render loop; web full-fidelity, TUI reduced).

Docs/scaffold: PORTING.md pi->SEP parity checklist; new `provider` template in
create-smooth-extension.

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: ae3aa53

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

This PR includes changesets to release 3 packages
Name Type
@smooai/smooth-operator Minor
@smooai/smooth-extension-sdk Minor
create-smooth-extension 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 21016e5 into main Jul 3, 2026
6 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