@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.
- package/dist/widget/chat-widget.iife.js +135 -2
- package/dist/widget/chat-widget.iife.js.map +1 -1
- package/dist/widget/conversation.d.ts +69 -1
- package/dist/widget/conversation.d.ts.map +1 -1
- package/dist/widget/conversation.js +67 -2
- package/dist/widget/conversation.js.map +1 -1
- package/dist/widget/element.d.ts +8 -0
- package/dist/widget/element.d.ts.map +1 -1
- package/dist/widget/element.js +43 -0
- package/dist/widget/element.js.map +1 -1
- package/dist/widget/styles.d.ts.map +1 -1
- package/dist/widget/styles.js +29 -0
- package/dist/widget/styles.js.map +1 -1
- package/package.json +1 -1
- package/src/widget/conversation.ts +95 -3
- package/src/widget/element.ts +49 -1
- package/src/widget/styles.ts +29 -0
|
@@ -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
|
-
|
|
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":"
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,aAAa,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/widget/conversation.ts"],"names":[],"mappings":"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"}
|
package/dist/widget/element.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/widget/element.js
CHANGED
|
@@ -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":"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"}
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/widget/element.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAA2E,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACpI,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,iEAAiE;YACjE,qEAAqE;YACrE,kCAAkC;YAClC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,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,YAAY,CAAC,MAAkB;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEpC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;YACrC,MAAM,CAAC,WAAW,GAAG,cAAc,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;YAChC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACpB,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC;YAC5B,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC/B,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,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 +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,
|
|
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"}
|
package/dist/widget/styles.js
CHANGED
|
@@ -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
|
|
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.
|
|
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;
|