@smooai/smooth-operator 1.11.4 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,49 @@
1
+ /**
2
+ * ConversationController — the bridge between the widget UI and the
3
+ * `@smooai/smooth-operator` protocol client.
4
+ *
5
+ * This is the piece that was rewired: the original smooai widget spoke to
6
+ * `@smooai/realtime`; here every protocol action goes through {@link SmoothAgentClient}.
7
+ * The wire shapes are identical (the protocol was lifted from `@smooai/realtime`),
8
+ * so the swap is purely at the client-library boundary.
9
+ *
10
+ * Flow:
11
+ * 1. `connect()` → opens the WebSocket transport and `create_conversation_session`.
12
+ * 2. `send(text)` → `send_message`, streaming `stream_token` deltas into the
13
+ * in-progress assistant message, then the terminal
14
+ * `eventual_response`.
15
+ *
16
+ * The controller is UI-agnostic: it emits typed events and the view renders them.
17
+ */
18
+ import { type SmoothAgentClientOptions } from '../client.js';
1
19
  import type { Citation } from '../types.js';
2
20
  import type { ChatWidgetConfig } from './config.js';
3
21
  export type { Citation };
4
22
  export type Role = 'user' | 'assistant';
23
+ /**
24
+ * A chat-native interactive prompt rendered as buttons inside an assistant
25
+ * bubble. Backs SEP `ui/confirm` and `ui/select`: the agent (or an extension it
26
+ * hosts) pauses the turn asking for a choice, and the click flows back as an
27
+ * action frame that resumes the same turn.
28
+ *
29
+ * `confirm` projects the protocol's `write_confirmation_required` event (Yes/No
30
+ * → `confirm_tool_action`); `select` projects a `ui/select` (one option → its
31
+ * value). Each option's `value` is what the resume action carries.
32
+ */
33
+ export interface ChatPrompt {
34
+ /** The turn's `requestId` — the resume action must echo it. */
35
+ requestId: string;
36
+ kind: 'confirm' | 'select';
37
+ /** Human-readable prompt text (the confirmation description / select prompt). */
38
+ text: string;
39
+ /** The buttons. For `confirm`: Yes (`true`) / No (`false`). */
40
+ options: Array<{
41
+ label: string;
42
+ value: string | boolean;
43
+ }>;
44
+ /** Set once the user picks — disables the buttons and records the choice. */
45
+ answered?: string;
46
+ }
5
47
  export interface ChatMessage {
6
48
  id: string;
7
49
  role: Role;
@@ -16,6 +58,11 @@ export interface ChatMessage {
16
58
  * defensively off the terminal event — see {@link extractCitations}.
17
59
  */
18
60
  citations?: Citation[];
61
+ /**
62
+ * A pending (or answered) chat-native button prompt. Present only on the
63
+ * bubble that carries a `write_confirmation_required` / `ui/select` request.
64
+ */
65
+ prompt?: ChatPrompt;
19
66
  }
20
67
  export type ConnectionStatus = 'idle' | 'connecting' | 'ready' | 'error' | 'closed';
21
68
  export interface ConversationEvents {
@@ -32,7 +79,15 @@ export declare class ConversationController {
32
79
  private readonly messages;
33
80
  private status;
34
81
  private seq;
35
- constructor(config: ChatWidgetConfig, events: ConversationEvents);
82
+ /**
83
+ * requestId → resolver for a pending button prompt. The turn loop parks on
84
+ * the promise; {@link answerPrompt} (called by the view on a button click)
85
+ * resolves it and the loop resumes consuming the (now un-paused) stream.
86
+ */
87
+ private readonly pendingPrompts;
88
+ /** Extra client options — a test seam for injecting a mock transport. */
89
+ private readonly clientOptions?;
90
+ constructor(config: ChatWidgetConfig, events: ConversationEvents, clientOptions?: Partial<SmoothAgentClientOptions>);
36
91
  get connectionStatus(): ConnectionStatus;
37
92
  private nextId;
38
93
  private setStatus;
@@ -44,6 +99,19 @@ export declare class ConversationController {
44
99
  * assistant reply token-by-token, finalizing on `eventual_response`.
45
100
  */
46
101
  send(text: string): Promise<void>;
102
+ /**
103
+ * Attach a pending `prompt` to the current assistant bubble and return a
104
+ * promise that resolves when the user clicks a button (via
105
+ * {@link answerPrompt}). The bubble carrying the prompt is the last
106
+ * assistant message.
107
+ */
108
+ private awaitPromptChoice;
109
+ /**
110
+ * Resolve a pending button prompt — called by the view when the user clicks
111
+ * an option. Marks the prompt answered (buttons disable, choice sticks) and
112
+ * unblocks the turn loop. No-op if the prompt was already answered.
113
+ */
114
+ answerPrompt(requestId: string, value: string | boolean): void;
47
115
  /** Tear down the underlying client. */
48
116
  disconnect(): void;
49
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/widget/conversation.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEzB,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IAC/B,+EAA+E;IAC/E,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC9C,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAwCD,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,GAAG,CAAK;gBAEJ,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB;IAKhE,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IAED,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAKpB,wEAAwE;IAClE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB9B;;;OAGG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DvC,uCAAuC;IACvC,UAAU,IAAI,IAAI;CAMrB"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/widget/conversation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAoC,KAAK,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEzB,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACvB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3D,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IAC/B,+EAA+E;IAC/E,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC9C,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAwCD,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,GAAG,CAAK;IAChB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyD;IACxF,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAoC;gBAEvD,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC;IAMnH,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IAED,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAKpB,wEAAwE;IAClE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB9B;;;OAGG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2EvC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAY9D,uCAAuC;IACvC,UAAU,IAAI,IAAI;CAWrB"}
@@ -64,9 +64,18 @@ export class ConversationController {
64
64
  messages = [];
65
65
  status = 'idle';
66
66
  seq = 0;
67
- constructor(config, events) {
67
+ /**
68
+ * requestId → resolver for a pending button prompt. The turn loop parks on
69
+ * the promise; {@link answerPrompt} (called by the view on a button click)
70
+ * resolves it and the loop resumes consuming the (now un-paused) stream.
71
+ */
72
+ pendingPrompts = new Map();
73
+ /** Extra client options — a test seam for injecting a mock transport. */
74
+ clientOptions;
75
+ constructor(config, events, clientOptions) {
68
76
  this.config = config;
69
77
  this.events = events;
78
+ this.clientOptions = clientOptions;
70
79
  }
71
80
  get connectionStatus() {
72
81
  return this.status;
@@ -89,7 +98,7 @@ export class ConversationController {
89
98
  return;
90
99
  this.setStatus('connecting');
91
100
  try {
92
- this.client = new SmoothAgentClient({ url: this.config.endpoint });
101
+ this.client = new SmoothAgentClient({ url: this.config.endpoint, ...this.clientOptions });
93
102
  await this.client.connect();
94
103
  const session = await this.client.createConversationSession({
95
104
  agentId: this.config.agentId,
@@ -134,6 +143,23 @@ export class ConversationController {
134
143
  this.emitMessages();
135
144
  }
136
145
  }
146
+ else if (event.type === 'write_confirmation_required') {
147
+ // The turn is paused server-side awaiting a confirm_tool_action.
148
+ // Render Yes/No buttons and block the loop until the user clicks
149
+ // (or the transport drops). The click sends the resume action
150
+ // via answerPrompt(); the stream then flows back into `turn`.
151
+ const description = event.data?.data?.actionDescription ?? 'Approve this action?';
152
+ const approved = await this.awaitPromptChoice(turn.requestId, {
153
+ requestId: turn.requestId,
154
+ kind: 'confirm',
155
+ text: String(description),
156
+ options: [
157
+ { label: 'Yes', value: true },
158
+ { label: 'No', value: false },
159
+ ],
160
+ });
161
+ this.client?.confirmToolAction({ sessionId: this.sessionId, requestId: turn.requestId, approved: approved === true });
162
+ }
137
163
  }
138
164
  const final = await turn;
139
165
  const inner = final.data?.data;
@@ -162,8 +188,47 @@ export class ConversationController {
162
188
  this.setStatus('error', err instanceof Error ? err.message : String(err));
163
189
  }
164
190
  }
191
+ /**
192
+ * Attach a pending `prompt` to the current assistant bubble and return a
193
+ * promise that resolves when the user clicks a button (via
194
+ * {@link answerPrompt}). The bubble carrying the prompt is the last
195
+ * assistant message.
196
+ */
197
+ awaitPromptChoice(requestId, prompt) {
198
+ const last = this.messages[this.messages.length - 1];
199
+ if (last && last.role === 'assistant') {
200
+ last.prompt = prompt;
201
+ last.streaming = false; // stop the typing cursor while we wait
202
+ }
203
+ this.emitMessages();
204
+ return new Promise((resolve) => {
205
+ this.pendingPrompts.set(requestId, resolve);
206
+ });
207
+ }
208
+ /**
209
+ * Resolve a pending button prompt — called by the view when the user clicks
210
+ * an option. Marks the prompt answered (buttons disable, choice sticks) and
211
+ * unblocks the turn loop. No-op if the prompt was already answered.
212
+ */
213
+ answerPrompt(requestId, value) {
214
+ const resolve = this.pendingPrompts.get(requestId);
215
+ if (!resolve)
216
+ return;
217
+ this.pendingPrompts.delete(requestId);
218
+ const msg = this.messages.find((m) => m.prompt?.requestId === requestId);
219
+ if (msg?.prompt) {
220
+ msg.prompt.answered = msg.prompt.options.find((o) => o.value === value)?.label ?? String(value);
221
+ }
222
+ this.emitMessages();
223
+ resolve(value);
224
+ }
165
225
  /** Tear down the underlying client. */
166
226
  disconnect() {
227
+ // Unblock any parked prompt so a pending turn loop doesn't hang forever.
228
+ for (const [requestId, resolve] of this.pendingPrompts) {
229
+ this.pendingPrompts.delete(requestId);
230
+ resolve(false);
231
+ }
167
232
  this.client?.disconnect('widget closed');
168
233
  this.client = null;
169
234
  this.sessionId = null;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/widget/conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/widget/conversation.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,14 @@ export declare class SmoothAgentChatElement extends HTMLElement {
57
57
  private render;
58
58
  private syncOpenState;
59
59
  private renderMessages;
60
+ /**
61
+ * Render a chat-native button prompt (SEP `ui/confirm` / `ui/select`). Each
62
+ * option is a button; clicking one resumes the paused turn via
63
+ * {@link ConversationController.answerPrompt}. Once answered the buttons
64
+ * disable and the chosen label is shown, so the record stays in the
65
+ * transcript. Built with DOM APIs (no innerHTML) — prompt text is untrusted.
66
+ */
67
+ private renderPrompt;
60
68
  /**
61
69
  * Build the collapsible "Sources (N)" block for an assistant message's
62
70
  * citations. Each source renders its `title` (linked to `citation.url` when
@@ -1 +1 @@
1
- {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/widget/element.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAmC,MAAM,aAAa,CAAC;AAMrF,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAI/C;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAQzE;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACnD,MAAM,KAAK,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEjD;IAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,OAAO,CAAkC;;IAOjD,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAM5B,wBAAwB,IAAI,IAAI;IAIhC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAQlD,2BAA2B;IAC3B,QAAQ,IAAI,IAAI;IAMhB,oDAAoD;IACpD,SAAS,IAAI,IAAI;IAOjB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,MAAM;IAqGd,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,cAAc;IAkCtB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAkDrB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,MAAM;CAOjB;AAmBD,qEAAqE;AACrE,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAE,WAA2B,GAAG,sBAAsB,CAMrH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAE,WAA2B,GAAG,sBAAsB,CAErI"}
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/widget/element.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAmC,MAAM,aAAa,CAAC;AAMrF,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAI/C;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAQzE;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACnD,MAAM,KAAK,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEjD;IAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,OAAO,CAAkC;;IAOjD,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAM5B,wBAAwB,IAAI,IAAI;IAIhC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAQlD,2BAA2B;IAC3B,QAAQ,IAAI,IAAI;IAMhB,oDAAoD;IACpD,SAAS,IAAI,IAAI;IAOjB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,MAAM;IAqGd,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,cAAc;IAyCtB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAkCpB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAkDrB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,MAAM;CAOjB;AAmBD,qEAAqE;AACrE,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAE,WAA2B,GAAG,sBAAsB,CAMrH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAE,WAA2B,GAAG,sBAAsB,CAErI"}
@@ -234,6 +234,12 @@ export class SmoothAgentChatElement extends HTMLElement {
234
234
  el.textContent = msg.text;
235
235
  }
236
236
  this.messagesEl.appendChild(el);
237
+ // Render chat-native button prompts (SEP ui/confirm + ui/select,
238
+ // projected from write_confirmation_required). The click resumes the
239
+ // paused turn via the controller.
240
+ if (msg.prompt) {
241
+ this.messagesEl.appendChild(this.renderPrompt(msg.prompt));
242
+ }
237
243
  // Render a "Sources (N)" section under any assistant message whose
238
244
  // terminal eventual_response carried citations. Back-compatible: most
239
245
  // turns have none, so this is skipped.
@@ -243,6 +249,43 @@ export class SmoothAgentChatElement extends HTMLElement {
243
249
  }
244
250
  this.messagesEl.scrollTop = this.messagesEl.scrollHeight;
245
251
  }
252
+ /**
253
+ * Render a chat-native button prompt (SEP `ui/confirm` / `ui/select`). Each
254
+ * option is a button; clicking one resumes the paused turn via
255
+ * {@link ConversationController.answerPrompt}. Once answered the buttons
256
+ * disable and the chosen label is shown, so the record stays in the
257
+ * transcript. Built with DOM APIs (no innerHTML) — prompt text is untrusted.
258
+ */
259
+ renderPrompt(prompt) {
260
+ const wrap = document.createElement('div');
261
+ wrap.className = 'prompt';
262
+ wrap.setAttribute('part', 'prompt');
263
+ const text = document.createElement('div');
264
+ text.className = 'prompt-text';
265
+ text.textContent = prompt.text;
266
+ wrap.appendChild(text);
267
+ if (prompt.answered) {
268
+ const chosen = document.createElement('div');
269
+ chosen.className = 'prompt-answered';
270
+ chosen.textContent = `You chose: ${prompt.answered}`;
271
+ wrap.appendChild(chosen);
272
+ return wrap;
273
+ }
274
+ const buttons = document.createElement('div');
275
+ buttons.className = 'prompt-buttons';
276
+ for (const opt of prompt.options) {
277
+ const btn = document.createElement('button');
278
+ btn.className = 'prompt-button';
279
+ btn.type = 'button';
280
+ btn.textContent = opt.label;
281
+ btn.addEventListener('click', () => {
282
+ this.controller?.answerPrompt(prompt.requestId, opt.value);
283
+ });
284
+ buttons.appendChild(btn);
285
+ }
286
+ wrap.appendChild(buttons);
287
+ return wrap;
288
+ }
246
289
  /**
247
290
  * Build the collapsible "Sources (N)" block for an assistant message's
248
291
  * citations. Each source renders its `title` (linked to `citation.url` when
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/widget/element.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAA0D,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAE/C,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAU,CAAC;AAElH;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,GAA8B;IACtD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACnD,MAAM,KAAK,kBAAkB;QACzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEgB,IAAI,CAAa;IAC1B,UAAU,GAAkC,IAAI,CAAC;IACjD,SAAS,GAA8B,EAAE,CAAC;IAC1C,IAAI,GAAG,KAAK,CAAC;IACb,QAAQ,GAAkB,EAAE,CAAC;IAC7B,MAAM,GAAqB,MAAM,CAAC;IAClC,OAAO,GAAG,KAAK,CAAC;IAExB,2CAA2C;IACnC,OAAO,GAAuB,IAAI,CAAC;IACnC,UAAU,GAAuB,IAAI,CAAC;IACtC,UAAU,GAAuB,IAAI,CAAC;IACtC,QAAQ,GAAuB,IAAI,CAAC;IACpC,OAAO,GAA+B,IAAI,CAAC;IAC3C,OAAO,GAA6B,IAAI,CAAC;IAEjD;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,wBAAwB;QACpB,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,MAAiC;QACvC,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChF,CAAC;QACD,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,2BAA2B;IAC3B,QAAQ;QACJ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,oDAAoD;IACpD,SAAS;QACL,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,8EAA8E;IAEtE,UAAU;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC9E,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAEvC,MAAM,KAAK,GAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QACzJ,OAAO;YACH,QAAQ;YACR,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,SAAS;YACnF,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YACnC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,SAAS;YACxF,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,SAAS;YAC/E,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB;YAC7D,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YACtE,KAAK;SACR,CAAC;IACN,CAAC;IAED,8EAA8E;IAEtE,MAAM;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAEvC,2EAA2E;QAC3E,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAAC,MAAM,EAAE;gBACjD,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;oBACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC/B,CAAC;aACJ,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC;QAC9C,sEAAsE;QACtE,sBAAsB;QACtB,IAAI,QAAQ;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAE/B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE/D,yEAAyE;QACzE,2EAA2E;QAC3E,qEAAqE;QACrE,iEAAiE;QACjE,MAAM,WAAW,GAAG,QAAQ;YACxB,CAAC,CAAC;8CACgC,eAAe;;6CAEhB,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;;;;sEAIL;YAC1D,CAAC,CAAC;;6CAE+B,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;;;;yEAIF,CAAC;QAElE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,SAAS,GAAG;cAChB,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6EAA6E;+BAC5E,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,wBAAwB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,iBAAiB,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;;sBAEhJ,WAAW;;;;sDAIqB,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;;;;SAI7E,CAAC;QAEF,6EAA6E;QAC7E,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC1D,IAAI,OAAO;YAAE,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;YAC7C,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACrC,EAAE,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,6EAA6E;QAC7E,IAAI,QAAQ;YAAE,KAAK,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAEO,aAAa;QACjB,wEAAwE;QACxE,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAEO,cAAc,CAAC,QAAgB;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,CAAC,SAAS,GAAG,2BAA2B,CAAC;YAC1C,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,EAAE,CAAC,SAAS,GAAG,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC7B,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACvB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC3B,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACJ,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAEhC,mEAAmE;YACnE,sEAAsE;YACtE,uCAAuC;YACvC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1F,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YACnE,CAAC;QACL,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IAC7D,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CAAC,SAAqB;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAErC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAEpB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,CAAC,WAAW,GAAG,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;QACtD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YACxB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAExC,IAAI,OAAoB,CAAC;YACzB,iEAAiE;YACjE,sEAAsE;YACtE,mEAAmE;YACnE,yEAAyE;YACzE,iEAAiE;YACjE,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC;gBAC1B,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC;gBACjB,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACpB,CAAC,CAAC,GAAG,GAAG,qBAAqB,CAAC;gBAC9B,OAAO,GAAG,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC;YAClD,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAExB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;gBAC/B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;gBAC7B,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,MAAM,KAAK,GAAqC;YAC5C,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,aAAa;YACzB,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,kBAAkB;YACzB,MAAM,EAAE,cAAc;SACzB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAEO,mBAAmB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC;QAC1C,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IACnD,CAAC;IAEO,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACJ;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;QACnC,QAAQ,CAAC,EAAE,CAAC;YACR,KAAK,GAAG;gBACJ,OAAO,OAAO,CAAC;YACnB,KAAK,GAAG;gBACJ,OAAO,MAAM,CAAC;YAClB,KAAK,GAAG;gBACJ,OAAO,MAAM,CAAC;YAClB,KAAK,GAAG;gBACJ,OAAO,QAAQ,CAAC;YACpB;gBACI,OAAO,OAAO,CAAC;QACvB,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB;IAC5B,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5E,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAC/D,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB,EAAE,SAAsB,QAAQ,CAAC,IAAI;IACzF,gBAAgB,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAA2B,CAAC;IACzE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsC,EAAE,SAAsB,QAAQ,CAAC,IAAI;IACzG,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/widget/element.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/widget/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,GAAE,cAA0B,GAAG,MAAM,CA6PtG"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/widget/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,GAAE,cAA0B,GAAG,MAAM,CA0RtG"}
@@ -164,6 +164,35 @@ export function buildStyles(theme, mode = 'popover') {
164
164
 
165
165
  /* Sources panel — rendered under an assistant bubble whose terminal
166
166
  eventual_response carried citations. */
167
+ .prompt {
168
+ align-self: flex-start;
169
+ max-width: 80%;
170
+ margin-top: -2px;
171
+ display: flex;
172
+ flex-direction: column;
173
+ gap: 8px;
174
+ }
175
+ .panel.fullpage .prompt { max-width: 100%; }
176
+ .prompt-text { font-size: 13.5px; color: var(--sac-text); opacity: 0.9; }
177
+ .prompt-buttons { display: flex; gap: 8px; flex-wrap: wrap; }
178
+ .prompt-button {
179
+ cursor: pointer;
180
+ border: 1px solid var(--sac-border);
181
+ background: var(--sac-bg);
182
+ color: var(--sac-text);
183
+ border-radius: 999px;
184
+ padding: 6px 16px;
185
+ font-size: 13px;
186
+ font-weight: 600;
187
+ transition: background 0.15s, color 0.15s, border-color 0.15s;
188
+ }
189
+ .prompt-button:hover {
190
+ background: var(--sac-primary);
191
+ color: var(--sac-primary-text);
192
+ border-color: var(--sac-primary);
193
+ }
194
+ .prompt-answered { font-size: 12.5px; opacity: 0.7; font-style: italic; }
195
+
167
196
  .sources {
168
197
  align-self: flex-start;
169
198
  max-width: 80%;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/widget/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgC,EAAE,OAAuB,SAAS;IAC1F,OAAO;;kBAEO,KAAK,CAAC,IAAI;gBACZ,KAAK,CAAC,UAAU;qBACX,KAAK,CAAC,OAAO;0BACR,KAAK,CAAC,WAAW;8BACb,KAAK,CAAC,eAAe;mCAChB,KAAK,CAAC,mBAAmB;yBACnC,KAAK,CAAC,UAAU;8BACX,KAAK,CAAC,cAAc;oBAC9B,KAAK,CAAC,MAAM;;MAGxB,IAAI,KAAK,UAAU;QACf,CAAC,CAAC;;;;;;uBAMS;QACX,CAAC,CAAC;;;;yBAKV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiOH,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/widget/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgC,EAAE,OAAuB,SAAS;IAC1F,OAAO;;kBAEO,KAAK,CAAC,IAAI;gBACZ,KAAK,CAAC,UAAU;qBACX,KAAK,CAAC,OAAO;0BACR,KAAK,CAAC,WAAW;8BACb,KAAK,CAAC,eAAe;mCAChB,KAAK,CAAC,mBAAmB;yBACnC,KAAK,CAAC,UAAU;8BACX,KAAK,CAAC,cAAc;oBAC9B,KAAK,CAAC,MAAM;;MAGxB,IAAI,KAAK,UAAU;QACf,CAAC,CAAC;;;;;;uBAMS;QACX,CAAC,CAAC;;;;yBAKV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8PH,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smooai/smooth-operator",
3
- "version": "1.11.4",
3
+ "version": "1.13.0",
4
4
  "description": "TypeScript SDK for the smooth-operator WebSocket protocol: the native client (`.`), React bindings (`./react`), and the embeddable web-component chat widget (`./widget`). Generated from the language-neutral JSON Schemas in spec/.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,7 +15,7 @@
15
15
  *
16
16
  * The controller is UI-agnostic: it emits typed events and the view renders them.
17
17
  */
18
- import { ProtocolError, SmoothAgentClient } from '../client.js';
18
+ import { ProtocolError, SmoothAgentClient, type SmoothAgentClientOptions } from '../client.js';
19
19
  import type { Citation } from '../types.js';
20
20
  import type { ChatWidgetConfig } from './config.js';
21
21
 
@@ -23,6 +23,28 @@ export type { Citation };
23
23
 
24
24
  export type Role = 'user' | 'assistant';
25
25
 
26
+ /**
27
+ * A chat-native interactive prompt rendered as buttons inside an assistant
28
+ * bubble. Backs SEP `ui/confirm` and `ui/select`: the agent (or an extension it
29
+ * hosts) pauses the turn asking for a choice, and the click flows back as an
30
+ * action frame that resumes the same turn.
31
+ *
32
+ * `confirm` projects the protocol's `write_confirmation_required` event (Yes/No
33
+ * → `confirm_tool_action`); `select` projects a `ui/select` (one option → its
34
+ * value). Each option's `value` is what the resume action carries.
35
+ */
36
+ export interface ChatPrompt {
37
+ /** The turn's `requestId` — the resume action must echo it. */
38
+ requestId: string;
39
+ kind: 'confirm' | 'select';
40
+ /** Human-readable prompt text (the confirmation description / select prompt). */
41
+ text: string;
42
+ /** The buttons. For `confirm`: Yes (`true`) / No (`false`). */
43
+ options: Array<{ label: string; value: string | boolean }>;
44
+ /** Set once the user picks — disables the buttons and records the choice. */
45
+ answered?: string;
46
+ }
47
+
26
48
  export interface ChatMessage {
27
49
  id: string;
28
50
  role: Role;
@@ -37,6 +59,11 @@ export interface ChatMessage {
37
59
  * defensively off the terminal event — see {@link extractCitations}.
38
60
  */
39
61
  citations?: Citation[];
62
+ /**
63
+ * A pending (or answered) chat-native button prompt. Present only on the
64
+ * bubble that carries a `write_confirmation_required` / `ui/select` request.
65
+ */
66
+ prompt?: ChatPrompt;
40
67
  }
41
68
 
42
69
  export type ConnectionStatus = 'idle' | 'connecting' | 'ready' | 'error' | 'closed';
@@ -94,10 +121,19 @@ export class ConversationController {
94
121
  private readonly messages: ChatMessage[] = [];
95
122
  private status: ConnectionStatus = 'idle';
96
123
  private seq = 0;
124
+ /**
125
+ * requestId → resolver for a pending button prompt. The turn loop parks on
126
+ * the promise; {@link answerPrompt} (called by the view on a button click)
127
+ * resolves it and the loop resumes consuming the (now un-paused) stream.
128
+ */
129
+ private readonly pendingPrompts = new Map<string, (choice: string | boolean) => void>();
130
+ /** Extra client options — a test seam for injecting a mock transport. */
131
+ private readonly clientOptions?: Partial<SmoothAgentClientOptions>;
97
132
 
98
- constructor(config: ChatWidgetConfig, events: ConversationEvents) {
133
+ constructor(config: ChatWidgetConfig, events: ConversationEvents, clientOptions?: Partial<SmoothAgentClientOptions>) {
99
134
  this.config = config;
100
135
  this.events = events;
136
+ this.clientOptions = clientOptions;
101
137
  }
102
138
 
103
139
  get connectionStatus(): ConnectionStatus {
@@ -124,7 +160,7 @@ export class ConversationController {
124
160
  if (this.status === 'connecting' || this.status === 'ready') return;
125
161
  this.setStatus('connecting');
126
162
  try {
127
- this.client = new SmoothAgentClient({ url: this.config.endpoint });
163
+ this.client = new SmoothAgentClient({ url: this.config.endpoint, ...this.clientOptions });
128
164
  await this.client.connect();
129
165
  const session = await this.client.createConversationSession({
130
166
  agentId: this.config.agentId,
@@ -171,6 +207,22 @@ export class ConversationController {
171
207
  assistant.text += token;
172
208
  this.emitMessages();
173
209
  }
210
+ } else if (event.type === 'write_confirmation_required') {
211
+ // The turn is paused server-side awaiting a confirm_tool_action.
212
+ // Render Yes/No buttons and block the loop until the user clicks
213
+ // (or the transport drops). The click sends the resume action
214
+ // via answerPrompt(); the stream then flows back into `turn`.
215
+ const description = event.data?.data?.actionDescription ?? 'Approve this action?';
216
+ const approved = await this.awaitPromptChoice(turn.requestId, {
217
+ requestId: turn.requestId,
218
+ kind: 'confirm',
219
+ text: String(description),
220
+ options: [
221
+ { label: 'Yes', value: true },
222
+ { label: 'No', value: false },
223
+ ],
224
+ });
225
+ this.client?.confirmToolAction({ sessionId: this.sessionId!, requestId: turn.requestId, approved: approved === true });
174
226
  }
175
227
  }
176
228
 
@@ -202,8 +254,48 @@ export class ConversationController {
202
254
  }
203
255
  }
204
256
 
257
+ /**
258
+ * Attach a pending `prompt` to the current assistant bubble and return a
259
+ * promise that resolves when the user clicks a button (via
260
+ * {@link answerPrompt}). The bubble carrying the prompt is the last
261
+ * assistant message.
262
+ */
263
+ private awaitPromptChoice(requestId: string, prompt: ChatPrompt): Promise<string | boolean> {
264
+ const last = this.messages[this.messages.length - 1];
265
+ if (last && last.role === 'assistant') {
266
+ last.prompt = prompt;
267
+ last.streaming = false; // stop the typing cursor while we wait
268
+ }
269
+ this.emitMessages();
270
+ return new Promise<string | boolean>((resolve) => {
271
+ this.pendingPrompts.set(requestId, resolve);
272
+ });
273
+ }
274
+
275
+ /**
276
+ * Resolve a pending button prompt — called by the view when the user clicks
277
+ * an option. Marks the prompt answered (buttons disable, choice sticks) and
278
+ * unblocks the turn loop. No-op if the prompt was already answered.
279
+ */
280
+ answerPrompt(requestId: string, value: string | boolean): void {
281
+ const resolve = this.pendingPrompts.get(requestId);
282
+ if (!resolve) return;
283
+ this.pendingPrompts.delete(requestId);
284
+ const msg = this.messages.find((m) => m.prompt?.requestId === requestId);
285
+ if (msg?.prompt) {
286
+ msg.prompt.answered = msg.prompt.options.find((o) => o.value === value)?.label ?? String(value);
287
+ }
288
+ this.emitMessages();
289
+ resolve(value);
290
+ }
291
+
205
292
  /** Tear down the underlying client. */
206
293
  disconnect(): void {
294
+ // Unblock any parked prompt so a pending turn loop doesn't hang forever.
295
+ for (const [requestId, resolve] of this.pendingPrompts) {
296
+ this.pendingPrompts.delete(requestId);
297
+ resolve(false);
298
+ }
207
299
  this.client?.disconnect('widget closed');
208
300
  this.client = null;
209
301
  this.sessionId = null;