@smooai/chat-widget 0.10.2 → 0.11.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/index.d.ts CHANGED
@@ -99,6 +99,12 @@ interface ChatWidgetConfig {
99
99
  * Clicking one sends it. Capped at 5 for layout.
100
100
  */
101
101
  examplePrompts?: string[];
102
+ /**
103
+ * Show mid-conversation suggested-reply chips ("quick replies") under the
104
+ * latest assistant message when the agent returns follow-up suggestions.
105
+ * Clicking one sends it. Defaults to `true` (shown unless explicitly `false`).
106
+ */
107
+ showSuggestedReplies?: boolean;
102
108
  /** Require the visitor's name before chatting. */
103
109
  requireName?: boolean;
104
110
  /** Require the visitor's email before chatting. */
@@ -149,6 +155,8 @@ declare class SmoothAgentChatElement extends HTMLElement {
149
155
  private hasSent;
150
156
  /** Starter prompts shown as chips in the empty state. */
151
157
  private examplePrompts;
158
+ /** Whether mid-conversation suggested-reply chips are shown (config). */
159
+ private showSuggestedReplies;
152
160
  /** Resolved greeting text, cached so async (rAF) renders can reuse it. */
153
161
  private greeting;
154
162
  /** Current mid-turn interrupt (OTP / tool-confirmation), or null. */
@@ -167,6 +175,7 @@ declare class SmoothAgentChatElement extends HTMLElement {
167
175
  private dotEl;
168
176
  private inputEl;
169
177
  private sendBtn;
178
+ private suggestionsEl;
170
179
  /** The live streaming assistant bubble whose textContent the rAF loop drives. */
171
180
  private streamBubbleEl;
172
181
  /** Message id the reveal is bound to (guards against stale frames after rebuilds). */
@@ -240,6 +249,16 @@ declare class SmoothAgentChatElement extends HTMLElement {
240
249
  */
241
250
  private handleMessages;
242
251
  private renderMessages;
252
+ /**
253
+ * Render (or clear) the mid-conversation suggested-reply chips under the
254
+ * composer. Shown ONLY when: the feature is enabled, no interrupt / restore
255
+ * overlay is active (those reuse the slot above the composer), and the LATEST
256
+ * message is a finalized assistant turn that carried suggestions. A new turn
257
+ * (agent or the visitor typing) appends messages, so the latest is no longer
258
+ * that assistant message and the chips clear on the next render. Chips reuse
259
+ * the empty-state `.prompts`/`.chip` styling and send via the same path.
260
+ */
261
+ private renderSuggestions;
243
262
  /** True when the host/user prefers reduced motion (snap, no typewriter). */
244
263
  private prefersReducedMotion;
245
264
  /**
@@ -450,6 +469,13 @@ interface ChatMessage {
450
469
  * defensively off the terminal event — see {@link extractCitations}.
451
470
  */
452
471
  citations?: Citation[];
472
+ /**
473
+ * Suggested follow-up replies ("quick replies") the agent offered on the
474
+ * terminal `eventual_response`. Set ONLY on the finalized assistant message —
475
+ * never mid-stream. Read defensively (see {@link extractSuggestions}); capped
476
+ * at 4 for layout. Absent when the turn offered none.
477
+ */
478
+ suggestions?: string[];
453
479
  }
454
480
  type ConnectionStatus = 'idle' | 'connecting' | 'ready' | 'error' | 'closed';
455
481
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/element.ts","../src/loader-core.ts","../src/persistence.ts","../src/conversation.ts","../src/fingerprint.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/element.ts","../src/loader-core.ts","../src/persistence.ts","../src/conversation.ts","../src/fingerprint.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -334,6 +334,7 @@ function resolveConfig(config) {
334
334
  startOpen: config.startOpen ?? false,
335
335
  hideBranding: config.hideBranding ?? false,
336
336
  examplePrompts: (config.examplePrompts ?? []).filter((p) => p.trim().length > 0).slice(0, 5),
337
+ showSuggestedReplies: config.showSuggestedReplies ?? true,
337
338
  requireName: config.requireName ?? false,
338
339
  requireEmail: config.requireEmail ?? false,
339
340
  requirePhone: config.requirePhone ?? false,
@@ -774,6 +775,19 @@ function extractCitations(inner) {
774
775
  }
775
776
  return out;
776
777
  }
778
+ /**
779
+ * Pull the suggested follow-up replies out of a terminal `eventual_response`'s
780
+ * `response` object (`response.suggestedNextActions`). Optional + back-compatible
781
+ * like citations — read defensively (tolerating absence, non-array shapes, and
782
+ * non-string / blank entries) and capped at 4 so a chatty agent can't overflow
783
+ * the composer chip row.
784
+ */
785
+ function extractSuggestions(response) {
786
+ if (!response || typeof response !== "object") return [];
787
+ const raw = response.suggestedNextActions;
788
+ if (!Array.isArray(raw)) return [];
789
+ return raw.filter((s) => typeof s === "string" && s.trim().length > 0).slice(0, 4);
790
+ }
777
791
  /** Convert a server message row into a finalized {@link ChatMessage}. */
778
792
  function wireMessageToChat(m, idx) {
779
793
  const text = typeof m.content?.text === "string" ? m.content.text : "";
@@ -1124,6 +1138,8 @@ var ConversationController = class {
1124
1138
  if (!assistant.text) assistant.text = "(no response)";
1125
1139
  const citations = extractCitations(inner);
1126
1140
  if (citations.length > 0) assistant.citations = citations;
1141
+ const suggestions = extractSuggestions(inner?.response);
1142
+ if (suggestions.length > 0) assistant.suggestions = suggestions;
1127
1143
  assistant.streaming = false;
1128
1144
  this.emitMessages();
1129
1145
  } catch (err) {
@@ -1954,6 +1970,10 @@ ${mode === "fullpage" ? `
1954
1970
  transform: translateY(-1px);
1955
1971
  }
1956
1972
 
1973
+ /* ───────────── Mid-conversation suggested-reply chips ─────────────── */
1974
+ .reply-suggestions { padding: 0 14px 4px; }
1975
+ .reply-suggestions:empty { display: none; }
1976
+
1957
1977
  /* ─────────────── OTP / tool-confirmation interrupt ────────────────── */
1958
1978
  .interrupt { padding: 0 14px; }
1959
1979
  .int-card {
@@ -2165,6 +2185,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2165
2185
  _defineProperty(this, "userInfoSatisfied", false);
2166
2186
  _defineProperty(this, "hasSent", false);
2167
2187
  _defineProperty(this, "examplePrompts", []);
2188
+ _defineProperty(this, "showSuggestedReplies", true);
2168
2189
  _defineProperty(this, "greeting", "");
2169
2190
  _defineProperty(this, "interrupt", null);
2170
2191
  _defineProperty(this, "interruptEl", null);
@@ -2178,6 +2199,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2178
2199
  _defineProperty(this, "dotEl", null);
2179
2200
  _defineProperty(this, "inputEl", null);
2180
2201
  _defineProperty(this, "sendBtn", null);
2202
+ _defineProperty(this, "suggestionsEl", null);
2181
2203
  _defineProperty(this, "streamBubbleEl", null);
2182
2204
  _defineProperty(this, "streamMsgId", null);
2183
2205
  _defineProperty(this, "streamTarget", "");
@@ -2246,6 +2268,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2246
2268
  startOpen: this.overrides.startOpen ?? this.hasAttribute("start-open"),
2247
2269
  hideBranding: this.overrides.hideBranding ?? this.hasAttribute("hide-branding"),
2248
2270
  examplePrompts: this.overrides.examplePrompts,
2271
+ showSuggestedReplies: this.overrides.showSuggestedReplies,
2249
2272
  requireName: this.overrides.requireName,
2250
2273
  requireEmail: this.overrides.requireEmail,
2251
2274
  requirePhone: this.overrides.requirePhone,
@@ -2277,10 +2300,12 @@ var SmoothAgentChatElement = class extends HTMLElement {
2277
2300
  onInterrupt: (interrupt) => {
2278
2301
  this.interrupt = interrupt;
2279
2302
  this.renderInterrupt();
2303
+ this.renderSuggestions();
2280
2304
  },
2281
2305
  onIdentityRestore: (state) => {
2282
2306
  this.identityRestore = state;
2283
2307
  this.renderInterrupt();
2308
+ this.renderSuggestions();
2284
2309
  }
2285
2310
  });
2286
2311
  if (resolved.startOpen) this.open = true;
@@ -2308,6 +2333,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2308
2333
  <button class="close" aria-label="Close chat">${ICON.close}</button>
2309
2334
  </div>`;
2310
2335
  this.examplePrompts = resolved.examplePrompts;
2336
+ this.showSuggestedReplies = resolved.showSuggestedReplies;
2311
2337
  this.greeting = resolved.greeting;
2312
2338
  const gating = needsUserInfo(resolved) && !this.userInfoSatisfied;
2313
2339
  this.gating = gating;
@@ -2336,6 +2362,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2336
2362
  const footerHtml = footerInner ? `<div class="footer">${footerInner}</div>` : "";
2337
2363
  const chatHtml = `
2338
2364
  <div class="messages"></div>
2365
+ <div class="reply-suggestions"></div>
2339
2366
  <div class="interrupt hidden"></div>
2340
2367
  <div class="composer-wrap">
2341
2368
  <div class="composer">
@@ -2366,6 +2393,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
2366
2393
  this.inputEl = container.querySelector("textarea");
2367
2394
  this.sendBtn = container.querySelector(".send");
2368
2395
  this.interruptEl = container.querySelector(".interrupt");
2396
+ this.suggestionsEl = container.querySelector(".reply-suggestions");
2369
2397
  this.launcherEl?.addEventListener("click", () => this.openChat());
2370
2398
  container.querySelector(".close")?.addEventListener("click", () => this.closeChat());
2371
2399
  this.sendBtn?.addEventListener("click", () => this.submit());
@@ -2820,6 +2848,36 @@ var SmoothAgentChatElement = class extends HTMLElement {
2820
2848
  if (msg.role === "assistant" && !msg.streaming && msg.citations && msg.citations.length > 0) this.messagesEl.appendChild(this.renderSources(msg.citations));
2821
2849
  }
2822
2850
  this.scrollToBottom(true);
2851
+ this.renderSuggestions();
2852
+ }
2853
+ /**
2854
+ * Render (or clear) the mid-conversation suggested-reply chips under the
2855
+ * composer. Shown ONLY when: the feature is enabled, no interrupt / restore
2856
+ * overlay is active (those reuse the slot above the composer), and the LATEST
2857
+ * message is a finalized assistant turn that carried suggestions. A new turn
2858
+ * (agent or the visitor typing) appends messages, so the latest is no longer
2859
+ * that assistant message and the chips clear on the next render. Chips reuse
2860
+ * the empty-state `.prompts`/`.chip` styling and send via the same path.
2861
+ */
2862
+ renderSuggestions() {
2863
+ const el = this.suggestionsEl;
2864
+ if (!el) return;
2865
+ el.replaceChildren();
2866
+ if (!this.showSuggestedReplies) return;
2867
+ if (this.interrupt || this.identityRestore.phase !== "idle") return;
2868
+ const last = this.messages[this.messages.length - 1];
2869
+ if (!last || last.role !== "assistant" || last.streaming || !last.suggestions || last.suggestions.length === 0) return;
2870
+ const chips = document.createElement("div");
2871
+ chips.className = "prompts";
2872
+ for (const suggestion of last.suggestions) {
2873
+ const chip = document.createElement("button");
2874
+ chip.type = "button";
2875
+ chip.className = "chip";
2876
+ chip.textContent = suggestion;
2877
+ chip.addEventListener("click", () => this.submitPrompt(suggestion));
2878
+ chips.appendChild(chip);
2879
+ }
2880
+ el.appendChild(chips);
2823
2881
  }
2824
2882
  /** True when the host/user prefers reduced motion (snap, no typewriter). */
2825
2883
  prefersReducedMotion() {