@syntrologie/adapt-chatbot 2.38.0 → 2.39.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.
@@ -195,6 +195,29 @@ export declare class ChatSession {
195
195
  * reset / late mount).
196
196
  */
197
197
  addToolCall(messageId: string | number, toolCall: TrailToolCall): void;
198
+ /**
199
+ * Create an empty, already-settled assistant message at `id` if one
200
+ * doesn't already exist. Idempotent — safe to call on every tool-call
201
+ * sighting.
202
+ *
203
+ * Exists for TOOL-ONLY turns: pydantic-ai's AG-UI adapter mints a fresh
204
+ * `parent_message_id` per model response regardless of content
205
+ * (`before_response` → `self.new_message_id()`) and stamps it on every
206
+ * `TOOL_CALL_START`, even when the response has no text. When the
207
+ * model's entire action is one or more tool calls with no narration
208
+ * (a parallel `mount_*` + `suggest_replies` batch, most commonly), no
209
+ * `TEXT_MESSAGE_START` is ever emitted for that id, so nothing would
210
+ * otherwise create the host message `addToolCall` needs — and the tool
211
+ * call (and any chips/receipts derived from it) silently vanishes
212
+ * (BUG-1786654199). Call this before `addToolCall` on a tool call's
213
+ * first sighting so it always has a message to land on.
214
+ *
215
+ * Deliberately status:'complete' (not 'streaming' via `receiveStart`):
216
+ * a tool-only message has no text to stream, so there's nothing for a
217
+ * later `receiveEnd` to settle — leaving it 'streaming' would paint
218
+ * the trail's streaming/typing visual state forever.
219
+ */
220
+ ensureAssistantMessage(id: string | number): void;
198
221
  /**
199
222
  * Partially update a tool call by id. Used by the transport to
200
223
  * advance status (args-streaming → running → done) as AG-UI events
@@ -1 +1 @@
1
- {"version":3,"file":"ChatSession.d.ts","sourceRoot":"","sources":["../src/ChatSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatSession.d.ts","sourceRoot":"","sources":["../src/ChatSession.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatTransport.d.ts","sourceRoot":"","sources":["../src/ChatTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatTransport.d.ts","sourceRoot":"","sources":["../src/ChatTransport.ts"],"names":[],"mappings":"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"}
@@ -98,6 +98,9 @@ export declare class LeaveAMessageLit extends LitElement {
98
98
  * always the durable signal.
99
99
  */
100
100
  private _toastReplyArrived;
101
+ /** Paint our own focus ring from the theme — see fieldStyles.outline. */
102
+ private _focusOn;
103
+ private _focusOff;
101
104
  private _onReply;
102
105
  private _submit;
103
106
  private _flip;
@@ -1 +1 @@
1
- {"version":3,"file":"LeaveAMessageLit.d.ts","sourceRoot":"","sources":["../src/LeaveAMessageLit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAQ,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAGhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAsD9D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAClE,CAAC;IACF;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE;YACL,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;gBAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;gBAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;aAC5C,CAAC;SACH,CAAC;KACH,CAAC;CACH;AASD,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,OAAgB,UAAU;;;;;;;;;;;;;;;;;;;MAOxB;IAEF,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtC,OAAO,SAAM;IACb,cAAc,SAAM;IACpB,KAAK,EAAE,kBAAkB,CAAU;IACnC,uFAAuF;IACvF,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAE1C;;;;;;OAMG;IACH,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAE1D,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,YAAY,CAA2B;IAEtC,gBAAgB,IAAI,WAAW;IAI/B,iBAAiB,IAAI,IAAI;IAYzB,OAAO,IAAI,IAAI;IAcf,oBAAoB,IAAI,IAAI;IAMrC,wDAAwD;IACxD,OAAO,CAAC,aAAa;IAIrB,0EAA0E;IAC1E,OAAO,CAAC,cAAc;IAUtB;iEAC6D;IAC7D,OAAO,CAAC,QAAQ;IAahB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,QAAQ,CAgCd;IAEF,OAAO,CAAC,OAAO,CAOb;IAEF,OAAO,CAAC,KAAK,CAGX;IAEF,OAAO,CAAC,UAAU,CAKhB;IAEO,MAAM;CA6DhB;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,IAAI,IAAI,CAI/C"}
1
+ {"version":3,"file":"LeaveAMessageLit.d.ts","sourceRoot":"","sources":["../src/LeaveAMessageLit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAQ,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAGhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAqE9D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAClE,CAAC;IACF;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE;YACL,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;gBAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;gBAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;aAC5C,CAAC;SACH,CAAC;KACH,CAAC;CACH;AASD,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,OAAgB,UAAU;;;;;;;;;;;;;;;;;;;MAOxB;IAEF,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtC,OAAO,SAAM;IACb,cAAc,SAAM;IACpB,KAAK,EAAE,kBAAkB,CAAU;IACnC,uFAAuF;IACvF,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAE1C;;;;;;OAMG;IACH,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAE1D,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,YAAY,CAA2B;IAEtC,gBAAgB,IAAI,WAAW;IAI/B,iBAAiB,IAAI,IAAI;IAYzB,OAAO,IAAI,IAAI;IAcf,oBAAoB,IAAI,IAAI;IAMrC,wDAAwD;IACxD,OAAO,CAAC,aAAa;IAIrB,0EAA0E;IAC1E,OAAO,CAAC,cAAc;IAUtB;iEAC6D;IAC7D,OAAO,CAAC,QAAQ;IAahB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAiC1B,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAId;IAEF,OAAO,CAAC,SAAS,CAGf;IAEF,OAAO,CAAC,QAAQ,CAgCd;IAEF,OAAO,CAAC,OAAO,CAOb;IAEF,OAAO,CAAC,KAAK,CAGX;IAEF,OAAO,CAAC,UAAU,CAKhB;IAEO,MAAM;CAmEhB;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,IAAI,IAAI,CAI/C"}
package/dist/runtime.js CHANGED
@@ -266,6 +266,33 @@ var ChatSession = class {
266
266
  msg.toolCalls = [...msg.toolCalls ?? [], { ...toolCall }];
267
267
  this.notify();
268
268
  }
269
+ /**
270
+ * Create an empty, already-settled assistant message at `id` if one
271
+ * doesn't already exist. Idempotent — safe to call on every tool-call
272
+ * sighting.
273
+ *
274
+ * Exists for TOOL-ONLY turns: pydantic-ai's AG-UI adapter mints a fresh
275
+ * `parent_message_id` per model response regardless of content
276
+ * (`before_response` → `self.new_message_id()`) and stamps it on every
277
+ * `TOOL_CALL_START`, even when the response has no text. When the
278
+ * model's entire action is one or more tool calls with no narration
279
+ * (a parallel `mount_*` + `suggest_replies` batch, most commonly), no
280
+ * `TEXT_MESSAGE_START` is ever emitted for that id, so nothing would
281
+ * otherwise create the host message `addToolCall` needs — and the tool
282
+ * call (and any chips/receipts derived from it) silently vanishes
283
+ * (BUG-1786654199). Call this before `addToolCall` on a tool call's
284
+ * first sighting so it always has a message to land on.
285
+ *
286
+ * Deliberately status:'complete' (not 'streaming' via `receiveStart`):
287
+ * a tool-only message has no text to stream, so there's nothing for a
288
+ * later `receiveEnd` to settle — leaving it 'streaming' would paint
289
+ * the trail's streaming/typing visual state forever.
290
+ */
291
+ ensureAssistantMessage(id) {
292
+ if (this._messages.some((m) => m.id === id)) return;
293
+ this._messages.push({ id, role: "assistant", text: "", status: "complete" });
294
+ this.notify();
295
+ }
269
296
  /**
270
297
  * Partially update a tool call by id. Used by the transport to
271
298
  * advance status (args-streaming → running → done) as AG-UI events
@@ -1222,6 +1249,7 @@ var ChatTransport = class {
1222
1249
  if (!targetMessageId) return;
1223
1250
  const parsedArgs = parseToolCallArgs(event.toolCall);
1224
1251
  if (!existing) {
1252
+ chatSession.ensureAssistantMessage(targetMessageId);
1225
1253
  chatSession.addToolCall(targetMessageId, {
1226
1254
  id: event.toolCall.id,
1227
1255
  name: event.toolCall.name,
@@ -1806,6 +1834,7 @@ var crispBridge = {
1806
1834
  (msg) => {
1807
1835
  if (!active) return;
1808
1836
  push(["do", "chat:hide"]);
1837
+ if (msg?.from !== "operator") return;
1809
1838
  if (typeof msg?.content === "string") cb(msg.content);
1810
1839
  }
1811
1840
  ]);
@@ -2273,24 +2302,33 @@ var box = {
2273
2302
  fontSize: "var(--sc-content-body-font-size, 13px)"
2274
2303
  };
2275
2304
  var fieldStyles = {
2276
- padding: "var(--sc-content-item-padding, 8px 10px)",
2305
+ padding: "var(--sc-content-item-padding, 10px 12px)",
2277
2306
  borderRadius: "var(--sc-content-border-radius, 8px)",
2278
2307
  border: "var(--sc-content-bubble-border, 1px solid currentColor)",
2279
2308
  background: "var(--sc-content-bubble-background, transparent)",
2280
2309
  color: "inherit",
2281
- font: "inherit"
2310
+ font: "inherit",
2311
+ // The browser's default focus ring is a loud blue on a black-and-white
2312
+ // brand — the one saturated pixel on the card. Suppress it and paint our
2313
+ // own from the theme in the focus/blur handlers below.
2314
+ outline: "none",
2315
+ width: "100%",
2316
+ boxSizing: "border-box",
2317
+ // The drag grabber pokes out of the card's bottom-right corner and lets
2318
+ // the visitor break the tile frame — the card owns its own geometry.
2319
+ resize: "none"
2282
2320
  };
2283
2321
  var buttonStyles = {
2284
- // No chip padding token exists (ChipElementConfigZ only has
2285
- // background/foreground/border/shadow) — plain constant, no fake var().
2286
- padding: "10px 12px",
2287
- borderRadius: "var(--sc-chip-border-radius, 9999px)",
2288
- border: "var(--sc-chip-border, 1px solid currentColor)",
2289
- background: "var(--sc-chip-background, transparent)",
2290
- color: "var(--sc-tile-title-color, inherit)",
2322
+ padding: "11px 14px",
2323
+ borderRadius: "var(--sc-border-radius, 8px)",
2324
+ border: "none",
2325
+ background: "var(--sc-color-primary, #000000)",
2326
+ color: "var(--sc-accent-foreground, #ffffff)",
2291
2327
  fontWeight: "600",
2292
2328
  cursor: "pointer",
2293
- font: "inherit"
2329
+ font: "inherit",
2330
+ width: "100%",
2331
+ boxSizing: "border-box"
2294
2332
  };
2295
2333
  var textStyles = {
2296
2334
  margin: "0"
@@ -2311,6 +2349,16 @@ var LeaveAMessageLit = class extends LitElement {
2311
2349
  this._email = "";
2312
2350
  this._reply = "";
2313
2351
  this._operatorMessages = [];
2352
+ /** Paint our own focus ring from the theme — see fieldStyles.outline. */
2353
+ this._focusOn = (e) => {
2354
+ const el = e.target;
2355
+ el.style.outline = "2px solid var(--sc-color-primary, currentColor)";
2356
+ el.style.outlineOffset = "1px";
2357
+ };
2358
+ this._focusOff = (e) => {
2359
+ const el = e.target;
2360
+ el.style.outline = "none";
2361
+ };
2314
2362
  this._onReply = (text) => {
2315
2363
  this._operatorMessages = [...this._operatorMessages, text];
2316
2364
  if (this.state !== "flipped") {
@@ -2423,25 +2471,29 @@ var LeaveAMessageLit = class extends LitElement {
2423
2471
  if (!this.bridge || !this.bridge.detect()) return nothing;
2424
2472
  if (this.state === "form") {
2425
2473
  return html`<div data-lam style=${styleMap(box)}>
2426
- <textarea
2427
- data-lam-message
2428
- rows="3"
2429
- style=${styleMap(fieldStyles)}
2430
- .value=${this.message}
2431
- @input=${(e) => {
2432
- this.message = e.target.value;
2433
- }}
2434
- ></textarea>
2435
2474
  <input
2436
2475
  data-lam-email
2437
2476
  type="email"
2438
2477
  placeholder="Your email — so the team can reach you"
2439
2478
  style=${styleMap(fieldStyles)}
2479
+ @focus=${this._focusOn}
2480
+ @blur=${this._focusOff}
2440
2481
  @input=${(e) => {
2441
2482
  this._email = e.target.value;
2442
2483
  this.requestUpdate();
2443
2484
  }}
2444
2485
  />
2486
+ <textarea
2487
+ data-lam-message
2488
+ rows="4"
2489
+ style=${styleMap(fieldStyles)}
2490
+ @focus=${this._focusOn}
2491
+ @blur=${this._focusOff}
2492
+ .value=${this.message}
2493
+ @input=${(e) => {
2494
+ this.message = e.target.value;
2495
+ }}
2496
+ ></textarea>
2445
2497
  <button type="button" data-lam-send style=${styleMap(buttonStyles)} @click=${this._submit}>
2446
2498
  Send to the team
2447
2499
  </button>
@@ -2470,6 +2522,8 @@ var LeaveAMessageLit = class extends LitElement {
2470
2522
  type="text"
2471
2523
  placeholder="Reply to the team…"
2472
2524
  style=${styleMap(fieldStyles)}
2525
+ @focus=${this._focusOn}
2526
+ @blur=${this._focusOff}
2473
2527
  .value=${this._reply}
2474
2528
  @input=${(e) => {
2475
2529
  this._reply = e.target.value;