Skip to content

SMOODEV-1844: OTP + tool-confirmation (HITL) dialog UI#4

Merged
brentrager merged 1 commit into
mainfrom
SMOODEV-1844-otp-hitl-ui
Jun 13, 2026
Merged

SMOODEV-1844: OTP + tool-confirmation (HITL) dialog UI#4
brentrager merged 1 commit into
mainfrom
SMOODEV-1844-otp-hitl-ui

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

What

Adds the dialog UI for the OTP / tool-confirmation flows whose protocol plumbing shipped in 0.3.0 — finishing that slice of parity.

When a turn pauses, an inline overlay appears above the composer:

  • OTP — a code input (masked destination + via-channel hint, retry/error + attempts-left state), wired to controller.verifyOtp(code).
  • Tool confirmation (HITL) — Approve / Decline, wired to controller.confirmTool(approved).

Server-supplied text (actionDescription, masked destination) renders via textContent; only the static lock/shield icons use innerHTML.

Verification

  • pnpm check — typecheck + 27 tests + build green.
  • New test asserts the interrupt overlay ships hidden + empty until a turn pauses.
  • Changeset → 0.4.0 (publishes on merge).

Part of epic SMOODEV-1841 / SMOODEV-1844. Remaining 1844 item: voice (blocked — no smooth-operator audio protocol).

🤖 Generated with Claude Code

When a turn pauses for OTP verification or a tool-write approval, the widget
now renders an inline overlay above the composer:
- OTP: a code input (masked destination + via-channel hint, retry/error state)
  wired to controller.verifyOtp(code).
- Confirm: Approve / Decline buttons wired to controller.confirmTool(approved).

Server-supplied text is rendered via textContent; only static icons use
innerHTML. Completes the OTP/HITL parity whose protocol plumbing shipped in
0.3.0. Minor bump -> 0.4.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jun 13, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 375e318

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

This PR includes changesets to release 1 package
Name Type
@smooai/chat-widget 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 3204137 into main Jun 13, 2026
1 check 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