@helpai/elements 0.46.3 → 0.47.1

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/web-component.mjs CHANGED
@@ -87,7 +87,6 @@ var STRINGS_EN = {
87
87
  thinking: "Thinking\u2026",
88
88
  thoughts: "Thoughts",
89
89
  usedTool: "Used tool",
90
- toolDetails: "Details",
91
90
  toolResult: "Result",
92
91
  sources: "Sources",
93
92
  // ── Messenger modules ──────────────────────────────────────────
@@ -134,17 +133,32 @@ var STRINGS_EN = {
134
133
  formChooseAtMost: "Choose at most {max}",
135
134
  formOther: "Other",
136
135
  formOtherPlaceholder: "Type your answer\u2026",
137
- inputRequired: "I need a bit more info",
138
- inputSubmit: "Submit",
136
+ inputRequired: "User Input Required",
137
+ inputBadge: "User Input",
138
+ inputAnswered: "Answered",
139
+ inputSkipped: "Skipped",
140
+ inputQuestion: "Question",
141
+ inputResponse: "Response",
142
+ inputYourAnswer: "Your answer",
143
+ inputSubmit: "Submit answer",
144
+ inputSubmitHint: "Enter to submit \xB7 Shift+Enter for new line",
139
145
  inputSkip: "Skip",
140
146
  inputSubmitted: "Answer submitted",
147
+ respFreeText: "Free Text",
148
+ respSingleChoice: "Single Choice",
149
+ respMultiChoice: "Multiple Choice",
150
+ respConfirmation: "Confirmation",
141
151
  approvalRequired: "Approval required",
142
152
  approve: "Approve",
143
153
  reject: "Reject",
144
154
  approved: "Approved",
145
155
  rejected: "Rejected",
146
156
  approvalReason: "Add a reason (optional)",
147
- stepNoLongerActive: "This request is no longer active."
157
+ stepNoLongerActive: "This request is no longer active.",
158
+ toolParameters: "Parameters",
159
+ statusCompleted: "Completed",
160
+ statusDenied: "Denied",
161
+ statusError: "Error"
148
162
  };
149
163
  var STRINGS_FR = {
150
164
  attach: "Joindre des fichiers",
@@ -203,7 +217,6 @@ var STRINGS_FR = {
203
217
  thinking: "R\xE9flexion\u2026",
204
218
  thoughts: "R\xE9flexions",
205
219
  usedTool: "Outil utilis\xE9",
206
- toolDetails: "D\xE9tails",
207
220
  toolResult: "R\xE9sultat",
208
221
  sources: "Sources",
209
222
  // ── Messenger modules ──────────────────────────────────────────
@@ -250,21 +263,167 @@ var STRINGS_FR = {
250
263
  formChooseAtMost: "Choisissez au plus {max}",
251
264
  formOther: "Autre",
252
265
  formOtherPlaceholder: "Saisissez votre r\xE9ponse\u2026",
253
- inputRequired: "J'ai besoin de quelques pr\xE9cisions",
254
- inputSubmit: "Envoyer",
266
+ inputRequired: "Saisie requise",
267
+ inputBadge: "Saisie",
268
+ inputAnswered: "R\xE9pondu",
269
+ inputSkipped: "Ignor\xE9",
270
+ inputQuestion: "Question",
271
+ inputResponse: "R\xE9ponse",
272
+ inputYourAnswer: "Votre r\xE9ponse",
273
+ inputSubmit: "Envoyer la r\xE9ponse",
274
+ inputSubmitHint: "Entr\xE9e pour envoyer \xB7 Maj+Entr\xE9e pour un saut de ligne",
255
275
  inputSkip: "Ignorer",
256
276
  inputSubmitted: "R\xE9ponse envoy\xE9e",
277
+ respFreeText: "Texte libre",
278
+ respSingleChoice: "Choix unique",
279
+ respMultiChoice: "Choix multiple",
280
+ respConfirmation: "Confirmation",
257
281
  approvalRequired: "Approbation requise",
258
282
  approve: "Approuver",
259
283
  reject: "Refuser",
260
284
  approved: "Approuv\xE9",
261
285
  rejected: "Refus\xE9",
262
286
  approvalReason: "Ajouter une raison (facultatif)",
263
- stepNoLongerActive: "Cette demande n'est plus active."
287
+ stepNoLongerActive: "Cette demande n'est plus active.",
288
+ toolParameters: "Param\xE8tres",
289
+ statusCompleted: "Termin\xE9",
290
+ statusDenied: "Refus\xE9",
291
+ statusError: "Erreur"
292
+ };
293
+ var STRINGS_AR = {
294
+ attach: "\u0625\u0631\u0641\u0627\u0642 \u0645\u0644\u0641\u0627\u062A",
295
+ attachmentMimeRejected: "\u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",
296
+ attachmentTooLarge: "\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u064B\u0627",
297
+ attachmentTooMany: "\u062A\u0645 \u0628\u0644\u0648\u063A \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0645\u0631\u0641\u0642\u0627\u062A",
298
+ conversationClosed: "\u062A\u0645 \u0625\u063A\u0644\u0627\u0642 \u0647\u0630\u0647 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
299
+ conversationLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629\u2026",
300
+ close: "\u0625\u063A\u0644\u0627\u0642",
301
+ collapse: "\u0637\u064A\u0651",
302
+ collapseSidebar: "\u0637\u064A\u0651 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
303
+ composerPlaceholder: "\u0627\u0643\u062A\u0628 \u0631\u0633\u0627\u0644\u0629\u2026",
304
+ dateLastWeek: "\u0622\u062E\u0631 \u0667 \u0623\u064A\u0627\u0645",
305
+ dateOlder: "\u0623\u0642\u062F\u0645",
306
+ dateToday: "\u0627\u0644\u064A\u0648\u0645",
307
+ dateYesterday: "\u0623\u0645\u0633",
308
+ dropZone: "\u0623\u0641\u0644\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0644\u0625\u0631\u0641\u0627\u0642\u0647\u0627",
309
+ errorGeneric: "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627",
310
+ errorRateLimited: "\u0637\u0644\u0628\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u064B\u0627 \u2014 \u064A\u0631\u062C\u0649 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0628\u0639\u062F \u0644\u062D\u0638\u0629.",
311
+ errorRetry: "\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",
312
+ expand: "\u062A\u0648\u0633\u064A\u0639",
313
+ expandSidebar: "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
314
+ exitFullscreen: "\u0625\u0646\u0647\u0627\u0621 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
315
+ fullscreen: "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
316
+ history: "\u0627\u0644\u0633\u062C\u0644",
317
+ historyBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
318
+ historyEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062D\u0627\u062F\u062B\u0627\u062A \u0633\u0627\u0628\u0642\u0629 \u0628\u0639\u062F",
319
+ historyContinue: "\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
320
+ historyLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0645\u062D\u0627\u062F\u062B\u0627\u062A\u0643\u2026",
321
+ historyTitle: "\u0633\u062C\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
322
+ language: "\u0627\u0644\u0644\u063A\u0629",
323
+ launcherOpen: "\u0641\u062A\u062D \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
324
+ launcherLabel: "\u062A\u062D\u062F\u062B \u0645\u0639\u0646\u0627",
325
+ micStart: "\u0628\u062F\u0621 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
326
+ micStop: "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
327
+ micUnsupported: "\u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0645\u062A\u0635\u0641\u062D",
328
+ moreActions: "\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629",
329
+ newConversation: "\u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
330
+ panelTitle: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
331
+ resizeHandle: "\u0627\u0633\u062D\u0628 \u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u062D\u062C\u0645",
332
+ scrollToBottom: "\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u062D\u062F\u062B",
333
+ send: "\u0625\u0631\u0633\u0627\u0644",
334
+ soundOff: "\u0643\u062A\u0645 \u0627\u0644\u0635\u0648\u062A",
335
+ soundOn: "\u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u0635\u0648\u062A",
336
+ startNewConversation: "\u0628\u062F\u0621 \u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
337
+ stop: "\u0625\u064A\u0642\u0627\u0641",
338
+ theme: "\u0627\u0644\u0645\u0638\u0647\u0631",
339
+ themeAuto: "\u062A\u0644\u0642\u0627\u0626\u064A",
340
+ themeDark: "\u062F\u0627\u0643\u0646",
341
+ themeLight: "\u0641\u0627\u062A\u062D",
342
+ textSize: "\u062D\u062C\u0645 \u0627\u0644\u0646\u0635",
343
+ textSizeSmall: "\u0635\u063A\u064A\u0631",
344
+ textSizeNormal: "\u0639\u0627\u062F\u064A",
345
+ textSizeLarge: "\u0643\u0628\u064A\u0631",
346
+ loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
347
+ thinking: "\u064A\u0641\u0643\u0631\u2026",
348
+ thoughts: "\u0627\u0644\u0623\u0641\u0643\u0627\u0631",
349
+ usedTool: "\u0623\u062F\u0627\u0629 \u0645\u064F\u0633\u062A\u062E\u062F\u064E\u0645\u0629",
350
+ toolResult: "\u0627\u0644\u0646\u062A\u064A\u062C\u0629",
351
+ sources: "\u0627\u0644\u0645\u0635\u0627\u062F\u0631",
352
+ // ── Messenger modules ──────────────────────────────────────────
353
+ tabHome: "\u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629",
354
+ tabConversations: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
355
+ tabHelp: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
356
+ tabNews: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
357
+ modulesEmpty: "\u0644\u0627 \u0634\u064A\u0621 \u0647\u0646\u0627 \u0628\u0639\u062F",
358
+ moduleBack: "\u0631\u062C\u0648\u0639",
359
+ contentLoading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
360
+ homeGreeting: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
361
+ homeGreetingNamed: "\u0645\u0631\u062D\u0628\u064B\u0627 {name} \u{1F44B}",
362
+ homeGreetingLead: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
363
+ homeSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
364
+ homeContentTitle: "\u0645\u0642\u0627\u0644\u0627\u062A \u0634\u0627\u0626\u0639\u0629",
365
+ homeStatus: "\u0627\u0644\u062D\u0627\u0644\u0629",
366
+ helpTitle: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
367
+ helpSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
368
+ helpEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0642\u0627\u0644\u0627\u062A \u0645\u0633\u0627\u0639\u062F\u0629 \u0628\u0639\u062F",
369
+ helpLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629\u2026",
370
+ helpSearchEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",
371
+ newsTitle: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
372
+ newsEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u062E\u0628\u0627\u0631 \u0628\u0639\u062F",
373
+ newsLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0623\u062E\u0628\u0627\u0631\u2026",
374
+ newsBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0623\u062E\u0628\u0627\u0631",
375
+ newsPublishedAt: "\u0646\u064F\u0634\u0631 \u0641\u064A {date}",
376
+ // ── Forms + human-in-the-loop (forms / ask-input / approval) ────
377
+ formSubmit: "\u0625\u0631\u0633\u0627\u0644",
378
+ formSkip: "\u0644\u0627\u062D\u0642\u064B\u0627",
379
+ formSubmitted: "\u062A\u0645",
380
+ formSkipped: "\u0644\u0627\u062D\u0642\u064B\u0627",
381
+ formFillOut: "\u062A\u0639\u0628\u0626\u0629",
382
+ formRequired: "\u0647\u0630\u0627 \u0627\u0644\u062D\u0642\u0644 \u0645\u0637\u0644\u0648\u0628",
383
+ formInvalidEmail: "\u0623\u062F\u062E\u0644 \u0628\u0631\u064A\u062F\u064B\u0627 \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
384
+ formInvalidTel: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0635\u062D\u064A\u062D\u064B\u0627",
385
+ formInvalidUrl: "\u0623\u062F\u062E\u0644 \u0631\u0627\u0628\u0637\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
386
+ formInvalidNumber: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
387
+ formTooShort: "\u0642\u0635\u064A\u0631 \u062C\u062F\u064B\u0627 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 {min} \u062D\u0631\u0641\u064B\u0627)",
388
+ formTooLong: "\u0637\u0648\u064A\u0644 \u062C\u062F\u064B\u0627 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 {max} \u062D\u0631\u0641\u064B\u0627)",
389
+ formNumberTooSmall: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0642\u0644 \u0639\u0646 {min}",
390
+ formNumberTooLarge: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0632\u064A\u062F \u0639\u0646 {max}",
391
+ formPatternMismatch: "\u064A\u0631\u062C\u0649 \u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0635\u064A\u063A\u0629 \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629",
392
+ formChooseAtLeast: "\u0627\u062E\u062A\u0631 {min} \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644",
393
+ formChooseAtMost: "\u0627\u062E\u062A\u0631 {max} \u0639\u0644\u0649 \u0627\u0644\u0623\u0643\u062B\u0631",
394
+ formOther: "\u0623\u062E\u0631\u0649",
395
+ formOtherPlaceholder: "\u0627\u0643\u062A\u0628 \u0625\u062C\u0627\u0628\u062A\u0643\u2026",
396
+ inputRequired: "\u0645\u0637\u0644\u0648\u0628 \u0625\u062F\u062E\u0627\u0644 \u0645\u0646 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
397
+ inputBadge: "\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
398
+ inputAnswered: "\u062A\u0645\u062A \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
399
+ inputSkipped: "\u062A\u0645 \u0627\u0644\u062A\u062E\u0637\u064A",
400
+ inputQuestion: "\u0627\u0644\u0633\u0624\u0627\u0644",
401
+ inputResponse: "\u0627\u0644\u0625\u062C\u0627\u0628\u0629",
402
+ inputYourAnswer: "\u0625\u062C\u0627\u0628\u062A\u0643",
403
+ inputSubmit: "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
404
+ inputSubmitHint: "Enter \u0644\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 Shift+Enter \u0644\u0633\u0637\u0631 \u062C\u062F\u064A\u062F",
405
+ inputSkip: "\u062A\u062E\u0637\u064D\u0651",
406
+ inputSubmitted: "\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
407
+ respFreeText: "\u0646\u0635 \u062D\u0631",
408
+ respSingleChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0648\u0627\u062D\u062F",
409
+ respMultiChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0645\u062A\u0639\u062F\u062F",
410
+ respConfirmation: "\u062A\u0623\u0643\u064A\u062F",
411
+ approvalRequired: "\u0645\u0637\u0644\u0648\u0628 \u0645\u0648\u0627\u0641\u0642\u0629",
412
+ approve: "\u0645\u0648\u0627\u0641\u0642\u0629",
413
+ reject: "\u0631\u0641\u0636",
414
+ approved: "\u062A\u0645\u062A \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629",
415
+ rejected: "\u0645\u0631\u0641\u0648\u0636",
416
+ approvalReason: "\u0623\u0636\u0641 \u0633\u0628\u0628\u064B\u0627 (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
417
+ stepNoLongerActive: "\u0644\u0645 \u064A\u0639\u062F \u0647\u0630\u0627 \u0627\u0644\u0637\u0644\u0628 \u0646\u0634\u0637\u064B\u0627.",
418
+ toolParameters: "\u0627\u0644\u0645\u0639\u0637\u064A\u0627\u062A",
419
+ statusCompleted: "\u0645\u0643\u062A\u0645\u0644",
420
+ statusDenied: "\u0645\u0631\u0641\u0648\u0636",
421
+ statusError: "\u062E\u0637\u0623"
264
422
  };
265
423
  var BUILTIN_STRINGS = {
266
424
  en: STRINGS_EN,
267
- fr: STRINGS_FR
425
+ fr: STRINGS_FR,
426
+ ar: STRINGS_AR
268
427
  };
269
428
  function resolveStrings(locale, override) {
270
429
  const tag = primaryTag(locale);
@@ -1238,7 +1397,7 @@ var tokens_default = ':host{--__P__-accent-user: __BRAND_ACCENT__;--__P__-accent
1238
1397
  var reset_default = '*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0}button{font:inherit;color:inherit;background:none;cursor:pointer;-webkit-appearance:none;appearance:none;line-height:1}button:focus-visible,[tabindex]:focus-visible,textarea:focus-visible,input:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}textarea,input{font:inherit;color:inherit;background:none;border:0;outline:0;resize:none}a{color:var(--__P__-accent);text-decoration:underline;text-underline-offset:2px}img,svg{display:block;max-width:100%}ul,ol{list-style:none}.__P__-app{display:block;width:100%;height:100%;font-family:var(--__P__-font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11","ss01","ss03"}.__P__-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n';
1239
1398
 
1240
1399
  // src/styles/panel.css
1241
- var panel_default = '.__P__-anchor{color-scheme:var(--__P__-color-scheme, light);right:16px;bottom:16px}.__P__-surface{display:contents}.__P__-surface[hidden]{display:none}:host([data-position="bottom-left"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{right:auto;left:16px}:host([data-position="top-right"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{bottom:auto;top:16px}.__P__-anchor{position:fixed;display:flex;flex-direction:column;align-items:flex-end;gap:var(--__P__-space-3);pointer-events:none}.__P__-anchor{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=sm]{--__P__-fab-size: 44px}.__P__-anchor[data-launcher-size=md]{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=lg]{--__P__-fab-size: 68px}.__P__-anchor>*{pointer-events:auto}.__P__-fab[data-size=sm]{--__P__-fab-size: 44px;font-size:var(--__P__-text-sm)}.__P__-fab[data-size=md]{--__P__-fab-size: 56px;font-size:calc(14px * var(--__P__-text-scale))}.__P__-fab[data-size=lg]{--__P__-fab-size: 68px;font-size:var(--__P__-text-base)}.__P__-fab{display:inline-flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);color:var(--__P__-accent-text);background:var(--__P__-accent);box-shadow:var(--__P__-shadow-fab);font-weight:600;line-height:1;transform-origin:bottom right;animation:__P__-fab-in var(--__P__-dur-base) var(--__P__-ease) both;transition:transform var(--__P__-dur-base) var(--__P__-ease),opacity var(--__P__-dur-base) var(--__P__-ease),box-shadow var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab:hover{transform:translateY(-2px)}.__P__-fab:active{transform:translateY(0)}.__P__-fab:focus-visible{outline:2px solid var(--__P__-on-accent);outline-offset:3px}.__P__-fab svg{width:24px;height:24px;flex-shrink:0}@keyframes __P__-fab-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}.__P__-fab[data-leaving]{position:absolute;right:0;bottom:0;animation:__P__-fab-out var(--__P__-dur-quick) var(--__P__-ease) forwards;pointer-events:none}:host([data-position^="top-"]) .__P__-fab[data-leaving]{bottom:auto;top:0}:host([data-position$="-left"]) .__P__-fab[data-leaving]{right:auto;left:0}@keyframes __P__-fab-out{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.85)}}.__P__-fab[data-variant=circle]{width:var(--__P__-fab-size);height:var(--__P__-fab-size);border-radius:999px}.__P__-fab[data-variant=circle] .__P__-fab-label{display:none}.__P__-fab[data-variant=pill]{height:var(--__P__-fab-size);padding:0 18px 0 16px;border-radius:999px}.__P__-fab[data-variant=bar]{height:var(--__P__-fab-size);padding:0 22px;border-radius:var(--__P__-radius)}.__P__-fab[data-variant=minimal]{height:var(--__P__-fab-size);padding:0 var(--__P__-space-4);border-radius:999px;background:transparent;color:var(--__P__-accent);box-shadow:none;border:1px solid currentColor}.__P__-fab[data-variant=minimal]:hover{background:color-mix(in srgb,var(--__P__-accent) 12%,transparent)}.__P__-callout{--__P__-callout-fab-h: var(--__P__-fab-size, 56px);--__P__-callout-gap: clamp(12px, calc(var(--__P__-callout-fab-h) * .25), 22px);--__P__-callout-nudge-direction: -1;position:absolute;display:inline-flex;align-items:center;gap:var(--__P__-space-2);padding:10px 14px;background:var(--__P__-fg);color:var(--__P__-bg);border-radius:999px;font-size:var(--__P__-text-sm);font-weight:600;line-height:1.2;box-shadow:0 10px 30px -8px #00000059;pointer-events:auto;animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease);z-index:1;max-width:240px;white-space:nowrap}.__P__-callout[data-position=left]{right:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%)}.__P__-callout[data-position=right]{left:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%);--__P__-callout-nudge-direction: 1}.__P__-callout[data-position=top]{bottom:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-position=bottom]{top:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}:host([data-position$="-left"]) .__P__-callout[data-position=top],:host([data-position$="-left"]) .__P__-callout[data-position=bottom]{right:auto;left:0}.__P__-callout[data-shape=bubble]{border-radius:var(--__P__-radius-md);white-space:normal;width:max-content;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-shape=callout]{padding:12px 18px;font-size:calc(14px * var(--__P__-text-scale));background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-callout:after{content:"";position:absolute;width:12px;height:12px;background:inherit;border-radius:2px;transform:rotate(45deg)}.__P__-callout[data-position=left]:after{right:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=right]:after{left:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=top]:after{bottom:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-position=bottom]:after{top:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}:host([data-position$="-left"]) .__P__-callout[data-position=top]:after,:host([data-position$="-left"]) .__P__-callout[data-position=bottom]:after{right:auto;left:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-animated]{animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease),__P__-callout-nudge 1.6s var(--__P__-ease-in-out) var(--__P__-dur-slow) infinite}@keyframes __P__-callout-in{0%{opacity:0}to{opacity:1}}@keyframes __P__-callout-nudge{0%,to{margin-left:0;margin-right:0}50%{margin-left:calc(6px * var(--__P__-callout-nudge-direction));margin-right:calc(-6px * var(--__P__-callout-nudge-direction))}}@media(prefers-reduced-motion:reduce){.__P__-callout[data-animated]{animation:__P__-callout-in 1ms var(--__P__-ease)}.__P__-icon-btn[data-recording=true],.__P__-typing span{animation:none}}.__P__-callout-close{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;color:inherit;opacity:.7;cursor:pointer}.__P__-callout-close:hover{opacity:1;background:color-mix(in srgb,currentColor 15%,transparent)}.__P__-callout-close:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-callout-close svg{width:12px;height:12px}.__P__-panel{width:var(--__P__-panel-w);height:var(--__P__-panel-h);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);background:var(--__P__-bg);color:var(--__P__-fg);border-radius:var(--__P__-radius-lg);box-shadow:var(--__P__-shadow-panel);display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;animation:__P__-panel-in var(--__P__-dur-slow) var(--__P__-ease);border:1px solid var(--__P__-border)}@media(prefers-reduced-motion:no-preference){.__P__-panel{transition:width var(--__P__-dur-base) var(--__P__-ease),height var(--__P__-dur-base) var(--__P__-ease),max-width var(--__P__-dur-base) var(--__P__-ease),max-height var(--__P__-dur-base) var(--__P__-ease)}.__P__-panel[data-resizing]{transition:none}}:host([data-mode="open"]) .__P__-panel{width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));min-width:var(--__P__-resize-min-w, auto);min-height:var(--__P__-resize-min-h, auto);max-width:var(--__P__-resize-max-w, calc(100vw - 32px) );max-height:var(--__P__-resize-max-h, calc(100dvh - 32px) )}@keyframes __P__-panel-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}:host([data-mode="expanded"]) .__P__-panel{width:var(--__P__-expanded-w, 640px);height:var(--__P__-expanded-h, 820px);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px)}:host([data-mode="fullscreen"]){z-index:var(--__P__-z-panel)!important}:host([data-mode="fullscreen"]) .__P__-anchor{inset:0;padding:0;justify-content:flex-end;align-items:flex-end}:host([data-mode="fullscreen"][data-position*="top"]) .__P__-anchor{justify-content:flex-start}:host([data-mode="fullscreen"][data-position*="left"]) .__P__-anchor{align-items:flex-start}:host([data-mode="fullscreen"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}:host([data-mode="fullscreen"]) .__P__-fab{display:none}@media(max-width:640px){:host([data-mode="open"]) .__P__-anchor,:host([data-mode="expanded"]) .__P__-anchor{inset:0;align-items:stretch;padding:0}:host([data-mode="open"]) .__P__-panel,:host([data-mode="expanded"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}}:host([data-mode="inline"]) .__P__-anchor,:host([data-mode="standalone"]) .__P__-anchor{position:static;inset:auto;padding:0;align-items:stretch;width:100%;height:100%;min-height:0}:host([data-mode="inline"]) .__P__-panel,:host([data-mode="standalone"]) .__P__-panel{width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;animation:none}:host([data-mode="inline"]) .__P__-fab,:host([data-mode="standalone"]) .__P__-fab{display:none}:host([data-mode="inline"]){min-height:320px}:host([data-mode="inline"]) .__P__-panel{border-radius:var(--__P__-radius)}:host([data-mode="standalone"]) .__P__-panel{border-radius:0;border:0;box-shadow:none}:host([data-mode="modal"]){position:fixed!important;inset:0!important;z-index:var(--__P__-z-panel)!important;display:block!important;width:100vw;height:100dvh;background:var(--__P__-modal-backdrop, var(--__P__-backdrop));animation:__P__-backdrop-in var(--__P__-dur-base) var(--__P__-ease) both;--__P__-panel-w: min(960px, 92vw);--__P__-panel-h: min(720px, 88dvh)}:host([data-mode="modal"]) .__P__-anchor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--__P__-space-6);pointer-events:none}:host([data-mode="modal"]) .__P__-panel{pointer-events:auto;width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);min-width:0;min-height:0;border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-panel);animation:__P__-modal-in var(--__P__-dur-base) var(--__P__-ease);translate:var(--__P__-modal-dx, 0px) var(--__P__-modal-dy, 0px)}:host([data-mode="modal"]) .__P__-header,:host([data-mode="modal"]) .__P__-back-header,:host([data-mode="modal"]) .__P__-home-hero{cursor:grab;touch-action:none}:host([data-mode="modal"]) .__P__-panel[data-dragging]{cursor:grabbing;user-select:none}:host([data-mode="modal"]) .__P__-panel[data-dragging] *{cursor:grabbing}:host([data-mode="modal"]) .__P__-fab{display:none}@keyframes __P__-backdrop-in{0%{background:#0000}to{background:var(--__P__-modal-backdrop, var(--__P__-backdrop))}}@keyframes __P__-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:host([data-mode="drawer"]){--__P__-panel-w: min(440px, calc(100vw - 32px) );--__P__-panel-h: 100dvh}:host([data-mode="drawer"]) .__P__-anchor{position:fixed;--__P__-inset-x: var(--__P__-panel-inset, 12px);--__P__-inset-y: var(--__P__-panel-inset, 3dvh);top:var(--__P__-inset-y);bottom:auto;right:var(--__P__-inset-x);left:auto;width:min(var(--__P__-widget-w, var(--__P__-panel-w)),calc(100vw - var(--__P__-inset-x) * 2));height:min(var(--__P__-widget-h, var(--__P__-panel-h)),calc(100dvh - var(--__P__-inset-y) * 2));padding:0;display:block;pointer-events:auto}:host([data-mode="drawer"][data-position$="-left"]) .__P__-anchor{right:auto;left:var(--__P__-inset-x)}:host([data-mode="drawer"][data-position^="bottom-"]) .__P__-anchor{top:auto;bottom:var(--__P__-inset-y)}:host([data-mode="drawer"]) .__P__-panel{width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;border-radius:var(--__P__-radius, 12px);border:1px solid var(--__P__-border);box-shadow:-8px 16px 32px -12px #00000038;animation:__P__-drawer-in var(--__P__-dur-base) var(--__P__-ease)}:host([data-mode="drawer"][data-position$="-left"]) .__P__-panel{box-shadow:8px 16px 32px -12px #00000038;animation:__P__-drawer-in-left var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab[data-edge-tab]{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-2);position:fixed;top:50%;height:140px;width:auto;min-width:0;padding:10px 8px;writing-mode:vertical-rl;text-orientation:mixed;transform:translateY(-50%);transform-origin:center;animation:__P__-edge-tab-in var(--__P__-dur-base) var(--__P__-ease) both}.__P__-fab[data-edge-tab] svg{writing-mode:horizontal-tb}.__P__-fab[data-edge-tab]:hover{transform:translateY(-50%) scale(1.03)}.__P__-fab[data-edge-tab]:active{transform:translateY(-50%) scale(.97)}:host([data-position$="-right"]) .__P__-fab[data-edge-tab]{right:0;left:auto;border-radius:12px 0 0 12px;box-shadow:-6px 0 18px -8px #0000004d}:host([data-position$="-left"]) .__P__-fab[data-edge-tab]{left:0;right:auto;border-radius:0 12px 12px 0;box-shadow:6px 0 18px -8px #0000004d}.__P__-fab[data-edge-tab][data-leaving]{position:fixed;top:50%;bottom:auto;animation:__P__-edge-tab-out var(--__P__-dur-quick) var(--__P__-ease) forwards}@keyframes __P__-edge-tab-in{0%{opacity:0;transform:translateY(-50%) scale(.9)}to{opacity:1;transform:translateY(-50%) scale(1)}}@keyframes __P__-edge-tab-out{0%{opacity:1;transform:translateY(-50%) scale(1)}to{opacity:0;transform:translateY(-50%) scale(.85)}}@keyframes __P__-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes __P__-drawer-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){:host([data-mode="drawer"]) .__P__-panel,.__P__-fab[data-edge-tab]{animation:none}}.__P__-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);background:var(--__P__-bg)}.__P__-header h1{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;flex:1;letter-spacing:-.01em}.__P__-header-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--__P__-space-1);flex-shrink:0}.__P__-agent{flex:1;display:inline-flex;align-items:center;gap:10px;min-width:0}.__P__-agent-avatar{position:relative;width:32px;height:32px;border-radius:999px;background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--__P__-text-xs);overflow:hidden;flex-shrink:0}.__P__-agent-avatar img{width:100%;height:100%;object-fit:cover}.__P__-agent-avatar:after{content:"";position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:999px;border:2px solid var(--__P__-bg);background:var(--__P__-neutral)}.__P__-agent-avatar[data-status=online]:after{background:var(--__P__-success)}.__P__-agent-avatar[data-status=away]:after{background:var(--__P__-warning)}.__P__-agent-avatar[data-status=offline]:after{background:var(--__P__-neutral)}.__P__-agent-meta{display:flex;flex-direction:column;line-height:1.15;min-width:0}.__P__-agent-meta strong{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-agent-meta span{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-suggestions{display:flex;flex-wrap:nowrap;gap:var(--__P__-space-2);padding:6px 14px 10px;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;min-width:0}.__P__-suggestions::-webkit-scrollbar{display:none}.__P__-suggestions:before,.__P__-suggestions:after{content:"";flex:1 1 0;min-width:0}.__P__-suggestion{flex:0 0 auto;scroll-snap-align:center;padding:7px 14px;border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg);font-size:var(--__P__-text-sm);font-weight:500;white-space:nowrap;transition:background var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-suggestion:hover{border-color:var(--__P__-accent);color:var(--__P__-accent);transform:translateY(-1px)}.__P__-suggestion:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px;border-color:var(--__P__-accent)}.__P__-suggestion:active{transform:translateY(0)}.__P__-icon-btn{width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);transition:background var(--__P__-dur-quick) var(--__P__-ease),color var(--__P__-dur-quick) var(--__P__-ease)}.__P__-icon-btn:hover{background:var(--__P__-bg-elevated);color:var(--__P__-fg)}.__P__-icon-btn:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-icon-btn:active{background:var(--__P__-border)}.__P__-icon-btn:disabled{opacity:.45;cursor:not-allowed}.__P__-icon-btn:before{content:"";position:absolute;inset:-6px}.__P__-icon-btn{position:relative}.__P__-icon-btn svg{width:18px;height:18px}.__P__-icon-btn[data-recording=true]{color:var(--__P__-accent);background:color-mix(in srgb,var(--__P__-accent) 12%,transparent);animation:__P__-pulse 1.2s var(--__P__-ease) infinite}@keyframes __P__-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--__P__-accent) 40%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--__P__-accent) 0%,transparent)}}.__P__-list,.__P__-history,.__P__-module-scroll,.__P__-home-scroll,.__P__-help-list,.__P__-tool-args,.__P__-sidebar-conversations{scrollbar-width:thin;scrollbar-color:var(--__P__-border-strong) transparent;overscroll-behavior:contain;scrollbar-gutter:stable}.__P__-list::-webkit-scrollbar,.__P__-history::-webkit-scrollbar,.__P__-module-scroll::-webkit-scrollbar,.__P__-home-scroll::-webkit-scrollbar,.__P__-help-list::-webkit-scrollbar,.__P__-tool-args::-webkit-scrollbar,.__P__-sidebar-conversations::-webkit-scrollbar{width:8px}.__P__-list::-webkit-scrollbar-thumb,.__P__-history::-webkit-scrollbar-thumb,.__P__-module-scroll::-webkit-scrollbar-thumb,.__P__-home-scroll::-webkit-scrollbar-thumb,.__P__-help-list::-webkit-scrollbar-thumb,.__P__-tool-args::-webkit-scrollbar-thumb,.__P__-sidebar-conversations::-webkit-scrollbar-thumb{background:var(--__P__-border-strong);border-radius:8px}.__P__-list-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.__P__-jump{position:absolute;inset-inline-end:14px;bottom:14px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);color:var(--__P__-fg);box-shadow:var(--__P__-shadow-panel);cursor:pointer;opacity:.85;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease);animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-jump:hover{opacity:1}.__P__-jump:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;opacity:1}.__P__-jump:active{transform:translateY(1px)}.__P__-jump svg{width:18px;height:18px}.__P__-list{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-4);padding-bottom:var(--__P__-space-8);display:flex;flex-direction:column;gap:14px}.__P__-date-divider{position:sticky;top:var(--__P__-space-2);z-index:2;display:flex;justify-content:center;align-items:flex-start;height:0;margin:0;pointer-events:none}.__P__-date-pill{padding:3px 10px;border-radius:999px;font-size:calc(11px * var(--__P__-text-scale));font-weight:600;color:var(--__P__-fg-muted);background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);box-shadow:var(--__P__-shadow-card);opacity:0;pointer-events:none;transition:opacity var(--__P__-dur-base) var(--__P__-ease)}.__P__-list[data-scrolling=true] .__P__-date-pill{opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.__P__-date-pill{transition:none}}.__P__-bubble-row{display:flex}.__P__-bubble-row[data-role=user]{justify-content:flex-end}.__P__-bubble-row[data-role=assistant]{justify-content:flex-start}.__P__-bubble{max-width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);line-height:1.6;font-size:calc(14px * var(--__P__-text-scale));word-wrap:break-word;overflow-wrap:anywhere;box-shadow:0 1px 2px #0000000a,0 1px 8px -4px #0000000f;animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-bubble ::selection{background:color-mix(in srgb,var(--__P__-accent) 30%,transparent)}.__P__-bubble-row[data-role=user] .__P__-bubble ::selection{background:#fff6;color:var(--__P__-bubble-user-text)}@keyframes __P__-bubble-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-bubble-row[data-role=user] .__P__-bubble{background:var(--__P__-bubble-user);color:var(--__P__-bubble-user-text);border-end-end-radius:5px}.__P__-bubble-row[data-role=assistant] .__P__-bubble{background:var(--__P__-bubble-assistant);color:var(--__P__-bubble-assistant-text);border-end-start-radius:5px}.__P__-bubble-col{display:flex;flex-direction:column;max-width:85%;min-width:0}.__P__-bubble-row[data-role=user] .__P__-bubble-col{align-items:flex-end}.__P__-bubble-row[data-role=assistant] .__P__-bubble-col{align-items:flex-start}.__P__-bubble-time{margin-top:3px;padding:0 4px;font-size:calc(11px * var(--__P__-text-scale));line-height:1;color:var(--__P__-fg-muted);user-select:none}.__P__-md>*:first-child{margin-top:0}.__P__-md>*:last-child{margin-bottom:0}.__P__-md p{margin:10px 0}.__P__-md h1,.__P__-md h2,.__P__-md h3,.__P__-md h4,.__P__-md h5,.__P__-md h6{margin:18px 0 8px;line-height:1.3;letter-spacing:-.01em;font-weight:700}.__P__-md h1{font-size:1.4em}.__P__-md h2{font-size:1.22em}.__P__-md h3{font-size:1.08em}.__P__-md h4,.__P__-md h5,.__P__-md h6{font-size:1em}.__P__-md>h1:first-child,.__P__-md>h2:first-child,.__P__-md>h3:first-child,.__P__-md>h4:first-child,.__P__-md>h5:first-child,.__P__-md>h6:first-child{margin-top:0}.__P__-md ul,.__P__-md ol{padding-inline-start:1.5em;margin:10px 0}.__P__-md ul{list-style:disc}.__P__-md ol{list-style:decimal}.__P__-md li{margin:6px 0;padding-inline-start:2px}.__P__-md li::marker{color:var(--__P__-fg-muted)}.__P__-md li>p{margin:6px 0}.__P__-md li>ul,.__P__-md li>ol{margin:6px 0}.__P__-md strong,.__P__-md b{font-weight:650;letter-spacing:-.005em}.__P__-md em,.__P__-md i{font-style:italic}.__P__-md code{font-family:var(--__P__-font-mono);font-size:.86em;padding:1px 6px;border-radius:5px;background:color-mix(in srgb,var(--__P__-accent) 10%,transparent);color:var(--__P__-fg);border:1px solid color-mix(in srgb,var(--__P__-accent) 16%,transparent)}.__P__-md pre{font-family:var(--__P__-font-mono);font-size:calc(12.5px * var(--__P__-text-scale));padding:12px 14px;border-radius:var(--__P__-radius-sm);background:#7f7f7f1f;overflow-x:auto;margin:var(--__P__-space-3) 0;line-height:1.5}.__P__-md pre code{padding:0;background:none}.__P__-md a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.__P__-md a:hover{text-decoration-thickness:2px}.__P__-md blockquote{margin:14px 0;padding:6px 14px;border-inline-start:3px solid color-mix(in srgb,var(--__P__-accent) 50%,transparent);background:color-mix(in srgb,var(--__P__-accent) 5%,transparent);border-start-end-radius:var(--__P__-radius-sm);border-end-end-radius:var(--__P__-radius-sm);color:var(--__P__-fg-muted)}.__P__-md blockquote>:first-child{margin-top:0}.__P__-md blockquote>:last-child{margin-bottom:0}.__P__-md hr{border:0;height:1px;background:color-mix(in srgb,currentColor 18%,transparent);margin:var(--__P__-space-4) 0}.__P__-md table{border-collapse:collapse;margin:var(--__P__-space-3) 0;font-size:.95em;display:block;overflow-x:auto;max-width:100%;font-variant-numeric:tabular-nums}.__P__-md th,.__P__-md td{padding:6px 10px;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent);text-align:start}.__P__-md th{font-weight:700;background:color-mix(in srgb,currentColor 6%,transparent)}.__P__-md h1+ul,.__P__-md h1+ol,.__P__-md h2+ul,.__P__-md h2+ol,.__P__-md h3+ul,.__P__-md h3+ol,.__P__-md h4+ul,.__P__-md h4+ol{margin-top:var(--__P__-space-1)}.__P__-loading{display:inline-flex;align-items:center;gap:var(--__P__-space-2);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-loading-spinner{width:14px;height:14px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:__P__-spin .8s linear infinite}@keyframes __P__-spin{to{transform:rotate(1turn)}}.__P__-typing{display:inline-flex;gap:var(--__P__-space-1);padding:var(--__P__-space-1) 0}.__P__-typing span{width:5px;height:5px;border-radius:999px;background:currentColor;opacity:.4;animation:__P__-blink 1.2s var(--__P__-ease) infinite}.__P__-typing span:nth-child(2){animation-delay:.2s}.__P__-typing span:nth-child(3){animation-delay:.4s}@keyframes __P__-blink{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.__P__-reasoning{margin:var(--__P__-space-1) 0 var(--__P__-space-2);padding-inline-start:var(--__P__-space-3);border-inline-start:2px solid var(--__P__-border-strong)}.__P__-reasoning-summary{display:inline-flex;align-items:center;gap:var(--__P__-space-1);cursor:pointer;list-style:none;user-select:none;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-reasoning-summary:hover{color:var(--__P__-fg)}.__P__-reasoning-summary:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;border-radius:var(--__P__-radius-sm)}.__P__-reasoning-summary::-webkit-details-marker{display:none}.__P__-reasoning-summary:before{content:"";width:5px;height:5px;border-inline-end:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.7;transition:transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-reasoning[open] .__P__-reasoning-summary:before{transform:rotate(45deg)}.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:__P__-reasoning-pulse 1.4s var(--__P__-ease) infinite}@keyframes __P__-reasoning-pulse{0%,to{opacity:.5}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:none}}.__P__-reasoning-body{margin-top:var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-reasoning-body>:first-child{margin-top:0}.__P__-reasoning-body>:last-child{margin-bottom:0}.__P__-tool-call{margin-top:6px;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg-elevated);font-size:var(--__P__-text-xs)}.__P__-tool-call-summary{display:flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2);cursor:pointer;list-style:none;color:var(--__P__-fg-muted)}.__P__-tool-call-summary::-webkit-details-marker{display:none}.__P__-tool-call-section{padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-tool-call-label{display:block;margin-bottom:4px;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);text-transform:uppercase;letter-spacing:.04em}.__P__-tool-call-section[data-error=true] .__P__-tool-args{color:var(--__P__-danger, #c0392b)}.__P__-source{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:6px;margin-inline-end:6px;padding:var(--__P__-space-1) var(--__P__-space-2);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);text-decoration:none}a.__P__-source:hover{color:var(--__P__-fg);border-color:var(--__P__-accent)}.__P__-source-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-composer{border-top:1px solid var(--__P__-border);padding:10px 12px;background:var(--__P__-bg);display:flex;flex-direction:column;gap:var(--__P__-space-2)}.__P__-composer-row{display:flex;align-items:flex-end;gap:6px}.__P__-textarea{flex:1;height:40px;max-height:160px;padding:10px 12px;border-radius:var(--__P__-radius);background:var(--__P__-bg-elevated);border:1px solid transparent;font-size:calc(14px * var(--__P__-text-scale));line-height:1.4;transition:height var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),box-shadow var(--__P__-dur-quick) var(--__P__-ease)}.__P__-textarea:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:1px;border-color:var(--__P__-focus)}@media(pointer:coarse){.__P__-textarea,.__P__-home-search-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}.__P__-textarea{height:44px}}.__P__-send{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease),background var(--__P__-dur-quick) var(--__P__-ease)}.__P__-send[data-shape=circle]{border-radius:999px}.__P__-send[data-shape=square]{border-radius:var(--__P__-radius-sm)}.__P__-send[data-shape=pill]{width:auto;padding:0 18px;border-radius:999px}.__P__-send[data-variant=filled]{background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-send[data-variant=outline]{background:transparent;color:var(--__P__-accent);border-color:var(--__P__-accent)}.__P__-send[data-variant=outline]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 10%,transparent)}.__P__-send[data-variant=ghost]{background:transparent;color:var(--__P__-accent)}.__P__-send[data-variant=ghost]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 8%,transparent)}.__P__-send:disabled{opacity:.4;cursor:not-allowed}.__P__-send:not(:disabled):hover{transform:translateY(-1px)}.__P__-send:not(:disabled):active{transform:translateY(0)}.__P__-send:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-send svg{width:18px;height:18px}.__P__-composer-actions{display:flex;gap:var(--__P__-space-1);flex-wrap:wrap}.__P__-attachments{display:flex;flex-wrap:wrap;gap:6px}.__P__-attachment-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-1);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);font-size:var(--__P__-text-xs);max-width:200px}.__P__-attachment-thumb{width:24px;height:24px;border-radius:999px;object-fit:cover;background:var(--__P__-border)}.__P__-attachment-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-attachment-remove{width:18px;height:18px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted)}.__P__-attachment-remove:hover{background:var(--__P__-border);color:var(--__P__-fg)}.__P__-dropzone{position:absolute;inset:8px;border:2px dashed var(--__P__-accent);border-radius:var(--__P__-radius);background:color-mix(in srgb,var(--__P__-accent) 8%,transparent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--__P__-accent);pointer-events:none;z-index:10;animation:__P__-fade-in var(--__P__-dur-quick) var(--__P__-ease)}@keyframes __P__-fade-in{0%{opacity:0}to{opacity:1}}.__P__-error{margin-top:var(--__P__-space-1);padding:8px 10px;border-radius:var(--__P__-radius-sm);background:var(--__P__-danger-bg);color:var(--__P__-danger-text);font-size:var(--__P__-text-sm);display:flex;align-items:center;gap:var(--__P__-space-2)}.__P__-error button{color:inherit;text-decoration:underline;font-size:var(--__P__-text-sm)}.__P__-history{flex:1;overflow-y:auto;padding:var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-3)}.__P__-history-footer{flex:none;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);border-top:1px solid var(--__P__-border);background:var(--__P__-surface)}.__P__-history-new{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);padding:var(--__P__-space-2) var(--__P__-space-3);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-on-accent);cursor:pointer;font-size:var(--__P__-text-sm);font-weight:600;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-history-new svg{width:16px;height:16px}.__P__-history-new:hover{filter:brightness(1.08)}.__P__-history-new:active{transform:translateY(1px)}.__P__-history-new:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-history-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 16px;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));text-align:center}.__P__-history-group{display:flex;flex-direction:column;padding:0 var(--__P__-space-3)}.__P__-history-heading{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted);padding:14px 4px 8px;text-transform:uppercase;letter-spacing:.04em}.__P__-history-card{display:flex;flex-direction:column;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-lg, 14px);overflow:hidden}.__P__-history-item{all:unset;display:flex;align-items:center;gap:var(--__P__-space-3);padding:12px var(--__P__-space-3);cursor:pointer;transition:background var(--__P__-dur-base) var(--__P__-ease)}.__P__-history-item+.__P__-history-item{border-top:1px solid var(--__P__-border)}.__P__-history-item:hover{background:var(--__P__-bg-elevated)}.__P__-history-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-history-avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:color-mix(in oklab,var(--__P__-accent) 12%,transparent);color:var(--__P__-accent)}.__P__-history-avatar svg{width:18px;height:18px}.__P__-history-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.__P__-history-row{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-2)}.__P__-history-title{flex:1;min-width:0;font-size:calc(14px * var(--__P__-text-scale));font-weight:500;color:var(--__P__-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-time{flex:none;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-history-preview{flex:1;min-width:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--__P__-accent)}.__P__-history-item[data-unread=true] .__P__-history-title{font-weight:600}.__P__-history-item[data-closed=true] .__P__-history-title{color:var(--__P__-fg-muted)}.__P__-history-item-skeleton{cursor:default;pointer-events:none}.__P__-skeleton{display:block;border-radius:4px;background:linear-gradient(90deg,color-mix(in oklab,var(--__P__-fg) 9%,transparent) 30%,color-mix(in oklab,var(--__P__-fg) 17%,transparent),color-mix(in oklab,var(--__P__-fg) 9%,transparent) 70%);background-size:200% 100%;animation:__P__-skeleton-shimmer 1.8s ease-in-out infinite}.__P__-history-avatar.__P__-skeleton{border-radius:50%}.__P__-skeleton-heading{width:52px;height:8px}.__P__-skeleton-title{width:55%;height:12px}.__P__-skeleton-time{width:34px;height:10px}.__P__-skeleton-preview{width:80%;height:10px}@keyframes __P__-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.__P__-skeleton{animation:none}}.__P__-list-loading{margin:auto;padding:var(--__P__-space-6) var(--__P__-space-4);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);text-align:center}.__P__-readonly-banner{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 12px;margin:0 var(--__P__-space-3) var(--__P__-space-3);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);text-align:center;font-size:var(--__P__-text-sm)}.__P__-readonly-label{line-height:1.4}.__P__-readonly-cta{appearance:none;border:0;cursor:pointer;padding:var(--__P__-space-2) var(--__P__-space-4);border-radius:999px;background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-readonly-cta:hover,.__P__-readonly-cta:focus-visible{filter:brightness(1.1)}.__P__-readonly-cta:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}.__P__-composer-footer{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 16px;margin:0 var(--__P__-space-3);border-top:1px solid var(--__P__-border);text-align:center;font-size:calc(11px * var(--__P__-text-scale));line-height:1.4;color:var(--__P__-fg-muted)}.__P__-disclaimer{max-width:320px;margin:0 auto;opacity:.9;letter-spacing:.01em}.__P__-poweredby{display:inline-flex;align-items:center;justify-content:center;gap:6px;color:inherit;text-decoration:none;opacity:.7;transition:opacity var(--__P__-dur-base) var(--__P__-ease);font-size:calc(11px * var(--__P__-text-scale));letter-spacing:.02em}.__P__-poweredby:hover{opacity:1}.__P__-poweredby-logo{height:12px;width:auto;display:inline-block;vertical-align:middle}.__P__-poweredby-bar{flex:none;display:flex;align-items:center;justify-content:center;padding:6px 16px;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated)}.__P__-menu-wrap{position:relative;display:inline-flex}.__P__-menu{position:absolute;top:100%;inset-inline-end:0;margin-top:6px;min-width:200px;padding:6px;background:var(--__P__-bg);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);box-shadow:var(--__P__-shadow-panel);z-index:10;display:flex;flex-direction:column;gap:2px;animation:__P__-menu-in var(--__P__-dur-base) var(--__P__-ease)}@media(prefers-reduced-motion:reduce){.__P__-menu{animation:none}}@keyframes __P__-menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98);transform-origin:top right}to{opacity:1;transform:none}}.__P__-menu-item{all:unset;display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);border-radius:var(--__P__-radius-sm);cursor:pointer;user-select:none}.__P__-menu-item:hover{background:var(--__P__-bg-elevated)}.__P__-menu-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-menu-item[disabled]{opacity:.45;cursor:not-allowed}.__P__-menu-icon{display:inline-flex;width:16px;height:16px;color:var(--__P__-fg-muted)}.__P__-menu-icon svg{width:16px;height:16px}.__P__-menu-label{flex:1}.__P__-menu-check{display:inline-flex;color:var(--__P__-accent)}.__P__-menu-check svg{width:14px;height:14px}.__P__-menu-item-segmented{cursor:default}.__P__-menu-item-segmented:hover{background:transparent}.__P__-segmented{display:inline-flex;gap:2px;padding:2px;background:var(--__P__-bg-elevated);border-radius:var(--__P__-radius-sm)}.__P__-segment{all:unset;min-width:26px;padding:3px 8px;font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.02em;text-align:center;color:var(--__P__-fg-muted);border-radius:calc(var(--__P__-radius-sm) - 2px);cursor:pointer;transition:color .12s ease,background .12s ease}.__P__-segment:hover{color:var(--__P__-fg)}.__P__-segment[data-on=true]{background:var(--__P__-bg);color:var(--__P__-accent);box-shadow:var(--__P__-shadow-card)}.__P__-segment:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-resize-grip{position:absolute;width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);opacity:.45;transition:opacity var(--__P__-dur-base) var(--__P__-ease);z-index:2;touch-action:none;user-select:none}.__P__-resize-grip:hover,.__P__-resize-grip:focus-visible{opacity:1}.__P__-resize-grip svg{width:10px;height:10px}.__P__-resize-grip--bottom-left{bottom:2px;left:2px;cursor:nesw-resize;transform:scaleX(-1)}.__P__-resize-grip--bottom-right{bottom:2px;right:2px;cursor:nwse-resize}.__P__-resize-grip--top-left{top:2px;left:2px;cursor:nwse-resize;transform:rotate(180deg)}.__P__-resize-grip--top-right{top:2px;right:2px;cursor:nesw-resize;transform:scaleY(-1)}:host(:not([data-mode="open"])) .__P__-resize-grip{display:none}.__P__-messenger{display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-body,.__P__-messenger-pane{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-pane[hidden]{display:none}@keyframes __P__-view-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-module{display:flex;flex-direction:column;height:100%;min-height:0}@media(prefers-reduced-motion:no-preference){.__P__-module,.__P__-history{animation:__P__-view-in .18s var(--__P__-ease-out)}}.__P__-module-scroll{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-3);display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-home{container-type:inline-size;background:radial-gradient(125% 65% at 88% 0%,color-mix(in srgb,#fff 16%,transparent),transparent 55%),linear-gradient(180deg,var(--__P__-accent) 0%,var(--__P__-accent) 22%,color-mix(in srgb,var(--__P__-accent) 28%,var(--__P__-surface)) 44%,var(--__P__-surface) 70%);border-radius:var(--__P__-radius-lg) var(--__P__-radius-lg) 0 0}.__P__-home-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:transparent}.__P__-home-cards{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:4px 14px 16px}.__P__-module-pad{padding:var(--__P__-space-3) var(--__P__-space-3) 0}.__P__-module-empty{display:flex;flex-direction:column;align-items:center;gap:var(--__P__-space-3);padding:var(--__P__-space-8) var(--__P__-space-4);text-align:center;color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-module-retry{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border-strong);border-radius:var(--__P__-radius-sm);color:var(--__P__-fg);font-weight:600;cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-module-retry:hover{background:var(--__P__-hover);border-color:var(--__P__-accent)}.__P__-module-retry:active{background:var(--__P__-border)}.__P__-module-retry:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-help-list{flex:1;min-height:0;overflow-y:auto;padding-bottom:var(--__P__-space-3)}.__P__-help-group{display:flex;flex-direction:column}.__P__-help-section-title{position:sticky;top:0;z-index:1;margin:0;padding:var(--__P__-space-3) var(--__P__-space-5) var(--__P__-space-2);font-size:var(--__P__-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--__P__-fg-muted);background:var(--__P__-bg)}.__P__-help-card{margin:0 var(--__P__-space-3) var(--__P__-space-3);background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden}.__P__-help-card .__P__-list-row{border-bottom:0;border-radius:0}.__P__-help-card .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-module-cta{padding:var(--__P__-space-3);border-top:1px solid var(--__P__-border)}.__P__-tabbar{display:flex;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);flex-shrink:0}.__P__-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-1);min-height:48px;padding:var(--__P__-space-2) var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;transition:color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-tab:hover{color:var(--__P__-fg)}.__P__-tab[aria-selected=true]{color:var(--__P__-accent)}.__P__-tab:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-tab:active{background:var(--__P__-hover)}.__P__-tab-icon{position:relative;display:inline-flex}.__P__-tab-icon svg{width:22px;height:22px}.__P__-tab-badge{position:absolute;top:-4px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--__P__-accent);color:var(--__P__-on-accent);font-size:calc(10px * var(--__P__-text-scale));font-weight:600;line-height:1}.__P__-home-hero{flex-shrink:0;padding:var(--__P__-space-5) var(--__P__-space-5) var(--__P__-space-3);color:var(--__P__-on-accent);--__P__-focus: var(--__P__-on-accent)}.__P__-home-hero-top{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-3);min-height:32px}.__P__-home-brand{font-size:clamp(calc(12px * var(--__P__-text-scale)),calc(3.2cqi * var(--__P__-text-scale)),calc(14px * var(--__P__-text-scale)));font-weight:600;letter-spacing:.01em;color:color-mix(in srgb,#fff 82%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.__P__-home-brand-spacer{flex:1}.__P__-home-hero-actions{display:flex;align-items:center;gap:var(--__P__-space-2);flex-shrink:0}.__P__-home-hero-actions .__P__-icon-btn{color:#fff}.__P__-home-hero-actions .__P__-icon-btn:hover{background:color-mix(in srgb,#fff 18%,transparent);color:#fff}.__P__-home-hero-actions .__P__-icon-btn:active{background:color-mix(in srgb,#fff 26%,transparent)}.__P__-home-greeting{margin:28px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(19px * var(--__P__-text-scale)),calc(5.5cqi * var(--__P__-text-scale)),var(--__P__-text-2xl));font-weight:800;line-height:1.18;letter-spacing:-.01em;overflow-wrap:anywhere}.__P__-home-lead{margin:10px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(15px * var(--__P__-text-scale)),calc(4.2cqi * var(--__P__-text-scale)),var(--__P__-text-xl));font-weight:600;line-height:1.25;letter-spacing:-.005em;color:color-mix(in srgb,var(--__P__-on-accent) 78%,transparent);overflow-wrap:anywhere}.__P__-home-avatars{display:flex}.__P__-home-avatar{width:30px;height:30px;border-radius:999px;overflow:hidden;margin-inline-start:-10px;border:2px solid color-mix(in srgb,#fff 92%,transparent);box-shadow:0 1px 3px #0000002e;background:var(--__P__-surface);display:inline-flex;align-items:center;justify-content:center;font-size:var(--__P__-text-xs);font-weight:700;color:var(--__P__-fg)}.__P__-home-avatar:first-child{margin-inline-start:0}.__P__-home-avatar img{width:100%;height:100%;object-fit:cover}.__P__-home-content{background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-card);overflow:hidden}.__P__-home-content-title{padding:var(--__P__-space-4) var(--__P__-space-4) var(--__P__-space-3);font-size:var(--__P__-text-sm);font-weight:700}.__P__-home-content-list{display:flex;flex-direction:column;padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-home-content-list .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-home-card{display:block;width:100%;text-align:start;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);padding:var(--__P__-space-4);box-shadow:var(--__P__-shadow-card)}.__P__-home-card[data-interactive=true]{cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-home-card[data-interactive=true]:hover{background:var(--__P__-bg-elevated)}.__P__-home-card[data-interactive=true]:active{transform:translateY(1px)}.__P__-home-card[data-interactive=true]:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-recent-row{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-recent-avatar{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border-radius:999px;background:color-mix(in oklch,var(--__P__-accent) 14%,transparent);color:var(--__P__-accent)}.__P__-home-recent-avatar svg{width:20px;height:20px}.__P__-home-recent-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.__P__-home-recent-title{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-recent-preview{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-home-recent-at{color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);flex-shrink:0}.__P__-home-recent-dot{width:8px;height:8px;border-radius:999px;background:var(--__P__-accent);flex-shrink:0}.__P__-home-recent-row[data-unread=true] .__P__-home-recent-title{font-weight:700}.__P__-home-status{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-status-icon svg{width:22px;height:22px;color:var(--__P__-success)}.__P__-home-status[data-level=degraded] .__P__-home-status-icon svg{color:var(--__P__-warning)}.__P__-home-status[data-level=down] .__P__-home-status-icon svg{color:var(--__P__-danger)}.__P__-home-status-text{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search{display:flex;align-items:center;gap:var(--__P__-space-2);width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);border:1px solid var(--__P__-border);background:var(--__P__-surface);text-align:start}.__P__-home-search[data-input=true]{background:var(--__P__-bg-elevated)}.__P__-home-search:hover{border-color:var(--__P__-border-strong)}.__P__-home-search:focus-visible,.__P__-home-search:focus-within{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-search-text{flex:1;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search-input{flex:1;border:0;background:transparent;font-size:calc(14px * var(--__P__-text-scale));color:var(--__P__-fg);outline:none}.__P__-home-search-icon svg{width:18px;height:18px;color:var(--__P__-accent)}.__P__-list-row{display:flex;align-items:center;gap:var(--__P__-space-3);width:100%;min-height:44px;text-align:start;padding:var(--__P__-space-3) var(--__P__-space-2);border-radius:var(--__P__-radius-sm)}.__P__-list-row:hover{background:var(--__P__-hover)}.__P__-list-row:active{background:var(--__P__-border)}.__P__-list-row:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-list-row-body{display:flex;flex-direction:column;min-width:0;flex:1}.__P__-list-row-title{font-weight:600;font-size:var(--__P__-text-md);line-height:1.35}.__P__-list-row-sub{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);margin-top:var(--__P__-space-1);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-list-row-chevron svg{width:18px;height:18px;color:var(--__P__-accent);flex-shrink:0}.__P__-back-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);flex-shrink:0}.__P__-back-title{flex:1;text-align:center;font-size:var(--__P__-text-md);font-weight:700;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-back-spacer{width:32px;height:1px}.__P__-content{display:flex;flex-direction:column;gap:14px;width:100%;max-width:68ch;margin:0 auto}.__P__-content-hero{width:100%;border-radius:var(--__P__-radius)}.__P__-content-subtitle{color:var(--__P__-fg-muted);margin:0}.__P__-content-frame{flex:1;min-height:0;width:100%;border:0;background:#fff}.__P__-news-list{display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-news-card{display:block;width:100%;text-align:start;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden;background:var(--__P__-surface)}.__P__-news-card{transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-news-card:hover{background:var(--__P__-bg-elevated)}.__P__-news-card:active{transform:translateY(1px)}.__P__-news-card:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-news-hero{width:100%;display:block}.__P__-news-body{display:flex;flex-direction:column;gap:6px;padding:14px 16px}.__P__-news-title{font-weight:700;font-size:var(--__P__-text-md)}.__P__-news-summary{color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-modules-empty{display:flex;align-items:center;justify-content:center;position:relative}.__P__-modules-empty-close{position:absolute;top:12px;inset-inline-end:12px}.__P__-modules-empty-text{color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-form{display:flex;flex-direction:column;gap:var(--__P__-space-4)}.__P__-field{display:flex;flex-direction:column;gap:6px}.__P__-field-label{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-field-req{color:var(--__P__-danger)}.__P__-field-input{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);color:var(--__P__-fg);font:inherit;font-size:var(--__P__-text-sm);resize:vertical;transition:border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-field-input:focus-visible{outline:none;border-color:var(--__P__-accent)}.__P__-field[data-invalid=true] .__P__-field-input{border-color:var(--__P__-danger)}.__P__-field-input[type=date],.__P__-field-input[type=time]{appearance:none;-webkit-appearance:none}@media(pointer:coarse){.__P__-field-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}}.__P__-field-hint{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-field-error{font-size:var(--__P__-text-xs);color:var(--__P__-danger)}.__P__-field-choices{display:flex;flex-direction:column;gap:10px;padding-top:2px}.__P__-choice{display:flex;align-items:flex-start;gap:10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);cursor:pointer}.__P__-choice input{margin-top:2px;accent-color:var(--__P__-accent)}.__P__-form-actions{display:flex;justify-content:flex-end;gap:var(--__P__-space-2);margin-top:var(--__P__-space-2)}.__P__-form-submit,.__P__-tool-approve{padding:var(--__P__-space-2) var(--__P__-space-4);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);cursor:pointer;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-submit:hover:not(:disabled),.__P__-tool-approve:hover:not(:disabled){filter:brightness(1.06)}.__P__-form-submit:disabled{opacity:.6;cursor:default}.__P__-form-skip,.__P__-tool-reject{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:transparent;color:var(--__P__-fg-muted);font:inherit;font-size:var(--__P__-text-sm);cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-skip:hover:not(:disabled),.__P__-tool-reject:hover:not(:disabled){background:var(--__P__-bg-elevated)}.__P__-form-gate{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-form-gate-title{margin:0;font-size:var(--__P__-text-base);font-weight:700;color:var(--__P__-fg)}.__P__-form-gate-desc{margin:0 0 var(--__P__-space-1);font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-form-done{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:1px dashed var(--__P__-border);border-radius:999px;align-self:center;font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted)}.__P__-form-done svg{width:14px;height:14px;color:var(--__P__-success, #22c55e)}.__P__-form-done[data-outcome=skipped] svg{color:var(--__P__-fg-muted)}.__P__-form-done-fill{border:0;background:none;padding:0 2px;cursor:pointer;font:inherit;font-weight:600;color:var(--__P__-accent)}.__P__-form-done-fill:hover{text-decoration:underline}details.__P__-form-done{display:block;padding:0;border-radius:var(--__P__-radius-md)}details[open].__P__-form-done{width:min(100%,420px);background:var(--__P__-surface)}.__P__-form-done-summary{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;cursor:pointer;list-style:none}.__P__-form-done-summary::-webkit-details-marker{display:none}.__P__-form-done-summary>svg:last-child{color:var(--__P__-fg-muted);transition:transform .15s var(--__P__-ease)}details[open]>.__P__-form-done-summary>svg:last-child{transform:rotate(90deg)}.__P__-form-answers{margin:0;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);display:grid;gap:var(--__P__-space-3);text-align:start}.__P__-form-answer{display:grid;gap:6px}.__P__-form-answer dt{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-form-answer dd{margin:0;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);font-size:var(--__P__-text-sm);font-weight:400;color:var(--__P__-fg);overflow-wrap:anywhere}.__P__-tool-ask-input,.__P__-tool-approval{display:flex;flex-direction:column;gap:var(--__P__-space-2);margin-top:6px;padding:var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-tool-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.__P__-tool-badge{padding:2px 8px;border-radius:999px;background:var(--__P__-warning, #f59e0b);color:#1a1206;font-size:var(--__P__-text-xs);font-weight:600}.__P__-tool-title{font-size:var(--__P__-text-sm);color:var(--__P__-fg)}.__P__-tool-question{margin:0;font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-tool-desc{margin:0;font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-tool-args{margin:0;padding:var(--__P__-space-2);max-height:160px;overflow:auto;border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);white-space:pre-wrap;word-break:break-word}.__P__-tool-stale-note{margin:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-tool-decided{flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px}.__P__-tool-decided-label{padding:2px 8px;border-radius:999px;background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-tool-decided-label[data-approved=true]{color:var(--__P__-success, #16a34a);border-color:var(--__P__-success, #16a34a)}.__P__-tool-decided-label[data-approved=false]{color:var(--__P__-danger);border-color:var(--__P__-danger)}.__P__-tool-decided-value{font-size:var(--__P__-text-sm);color:var(--__P__-fg)}:host([dir="rtl"]) .__P__-icon-dir{transform:scaleX(-1)}:host([dir="rtl"]) .__P__-field-input[type=date],:host([dir="rtl"]) .__P__-field-input[type=time]{position:relative;text-align:right;padding-left:34px}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-datetime-edit,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-datetime-edit{text-align:right}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-calendar-picker-indicator,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-calendar-picker-indicator{position:absolute;left:var(--__P__-space-3);margin:0}\n';
1400
+ var panel_default = '.__P__-anchor{color-scheme:var(--__P__-color-scheme, light);right:16px;bottom:16px}.__P__-surface{display:contents}.__P__-surface[hidden]{display:none}:host([data-position="bottom-left"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{right:auto;left:16px}:host([data-position="top-right"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{bottom:auto;top:16px}.__P__-anchor{position:fixed;display:flex;flex-direction:column;align-items:flex-end;gap:var(--__P__-space-3);pointer-events:none}.__P__-anchor{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=sm]{--__P__-fab-size: 44px}.__P__-anchor[data-launcher-size=md]{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=lg]{--__P__-fab-size: 68px}.__P__-anchor>*{pointer-events:auto}.__P__-fab[data-size=sm]{--__P__-fab-size: 44px;font-size:var(--__P__-text-sm)}.__P__-fab[data-size=md]{--__P__-fab-size: 56px;font-size:calc(14px * var(--__P__-text-scale))}.__P__-fab[data-size=lg]{--__P__-fab-size: 68px;font-size:var(--__P__-text-base)}.__P__-fab{display:inline-flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);color:var(--__P__-accent-text);background:var(--__P__-accent);box-shadow:var(--__P__-shadow-fab);font-weight:600;line-height:1;transform-origin:bottom right;animation:__P__-fab-in var(--__P__-dur-base) var(--__P__-ease) both;transition:transform var(--__P__-dur-base) var(--__P__-ease),opacity var(--__P__-dur-base) var(--__P__-ease),box-shadow var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab:hover{transform:translateY(-2px)}.__P__-fab:active{transform:translateY(0)}.__P__-fab:focus-visible{outline:2px solid var(--__P__-on-accent);outline-offset:3px}.__P__-fab svg{width:24px;height:24px;flex-shrink:0}@keyframes __P__-fab-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}.__P__-fab[data-leaving]{position:absolute;right:0;bottom:0;animation:__P__-fab-out var(--__P__-dur-quick) var(--__P__-ease) forwards;pointer-events:none}:host([data-position^="top-"]) .__P__-fab[data-leaving]{bottom:auto;top:0}:host([data-position$="-left"]) .__P__-fab[data-leaving]{right:auto;left:0}@keyframes __P__-fab-out{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.85)}}.__P__-fab[data-variant=circle]{width:var(--__P__-fab-size);height:var(--__P__-fab-size);border-radius:999px}.__P__-fab[data-variant=circle] .__P__-fab-label{display:none}.__P__-fab[data-variant=pill]{height:var(--__P__-fab-size);padding:0 18px 0 16px;border-radius:999px}.__P__-fab[data-variant=bar]{height:var(--__P__-fab-size);padding:0 22px;border-radius:var(--__P__-radius)}.__P__-fab[data-variant=minimal]{height:var(--__P__-fab-size);padding:0 var(--__P__-space-4);border-radius:999px;background:transparent;color:var(--__P__-accent);box-shadow:none;border:1px solid currentColor}.__P__-fab[data-variant=minimal]:hover{background:color-mix(in srgb,var(--__P__-accent) 12%,transparent)}.__P__-callout{--__P__-callout-fab-h: var(--__P__-fab-size, 56px);--__P__-callout-gap: clamp(12px, calc(var(--__P__-callout-fab-h) * .25), 22px);--__P__-callout-nudge-direction: -1;position:absolute;display:inline-flex;align-items:center;gap:var(--__P__-space-2);padding:10px 14px;background:var(--__P__-fg);color:var(--__P__-bg);border-radius:999px;font-size:var(--__P__-text-sm);font-weight:600;line-height:1.2;box-shadow:0 10px 30px -8px #00000059;pointer-events:auto;animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease);z-index:1;max-width:240px;white-space:nowrap}.__P__-callout[data-position=left]{right:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%)}.__P__-callout[data-position=right]{left:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%);--__P__-callout-nudge-direction: 1}.__P__-callout[data-position=top]{bottom:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-position=bottom]{top:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}:host([data-position$="-left"]) .__P__-callout[data-position=top],:host([data-position$="-left"]) .__P__-callout[data-position=bottom]{right:auto;left:0}.__P__-callout[data-shape=bubble]{border-radius:var(--__P__-radius-md);white-space:normal;width:max-content;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-shape=callout]{padding:12px 18px;font-size:calc(14px * var(--__P__-text-scale));background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-callout:after{content:"";position:absolute;width:12px;height:12px;background:inherit;border-radius:2px;transform:rotate(45deg)}.__P__-callout[data-position=left]:after{right:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=right]:after{left:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=top]:after{bottom:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-position=bottom]:after{top:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}:host([data-position$="-left"]) .__P__-callout[data-position=top]:after,:host([data-position$="-left"]) .__P__-callout[data-position=bottom]:after{right:auto;left:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-animated]{animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease),__P__-callout-nudge 1.6s var(--__P__-ease-in-out) var(--__P__-dur-slow) infinite}@keyframes __P__-callout-in{0%{opacity:0}to{opacity:1}}@keyframes __P__-callout-nudge{0%,to{margin-left:0;margin-right:0}50%{margin-left:calc(6px * var(--__P__-callout-nudge-direction));margin-right:calc(-6px * var(--__P__-callout-nudge-direction))}}@media(prefers-reduced-motion:reduce){.__P__-callout[data-animated]{animation:__P__-callout-in 1ms var(--__P__-ease)}.__P__-icon-btn[data-recording=true],.__P__-typing span{animation:none}}.__P__-callout-close{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;color:inherit;opacity:.7;cursor:pointer}.__P__-callout-close:hover{opacity:1;background:color-mix(in srgb,currentColor 15%,transparent)}.__P__-callout-close:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-callout-close svg{width:12px;height:12px}.__P__-panel{width:var(--__P__-panel-w);height:var(--__P__-panel-h);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);background:var(--__P__-bg);color:var(--__P__-fg);border-radius:var(--__P__-radius-lg);box-shadow:var(--__P__-shadow-panel);display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;animation:__P__-panel-in var(--__P__-dur-slow) var(--__P__-ease);border:1px solid var(--__P__-border)}@media(prefers-reduced-motion:no-preference){.__P__-panel{transition:width var(--__P__-dur-base) var(--__P__-ease),height var(--__P__-dur-base) var(--__P__-ease),max-width var(--__P__-dur-base) var(--__P__-ease),max-height var(--__P__-dur-base) var(--__P__-ease)}.__P__-panel[data-resizing]{transition:none}}:host([data-mode="open"]) .__P__-panel{width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));min-width:var(--__P__-resize-min-w, auto);min-height:var(--__P__-resize-min-h, auto);max-width:var(--__P__-resize-max-w, calc(100vw - 32px) );max-height:var(--__P__-resize-max-h, calc(100dvh - 32px) )}@keyframes __P__-panel-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}:host([data-mode="expanded"]) .__P__-panel{width:var(--__P__-expanded-w, 640px);height:var(--__P__-expanded-h, 820px);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px)}:host([data-mode="fullscreen"]){z-index:var(--__P__-z-panel)!important}:host([data-mode="fullscreen"]) .__P__-anchor{inset:0;padding:0;justify-content:flex-end;align-items:flex-end}:host([data-mode="fullscreen"][data-position*="top"]) .__P__-anchor{justify-content:flex-start}:host([data-mode="fullscreen"][data-position*="left"]) .__P__-anchor{align-items:flex-start}:host([data-mode="fullscreen"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}:host([data-mode="fullscreen"]) .__P__-fab{display:none}@media(max-width:640px){:host([data-mode="open"]) .__P__-anchor,:host([data-mode="expanded"]) .__P__-anchor{inset:0;align-items:stretch;padding:0}:host([data-mode="open"]) .__P__-panel,:host([data-mode="expanded"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}}:host([data-mode="inline"]) .__P__-anchor,:host([data-mode="standalone"]) .__P__-anchor{position:static;inset:auto;padding:0;align-items:stretch;width:100%;height:100%;min-height:0}:host([data-mode="inline"]) .__P__-panel,:host([data-mode="standalone"]) .__P__-panel{width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;animation:none}:host([data-mode="inline"]) .__P__-fab,:host([data-mode="standalone"]) .__P__-fab{display:none}:host([data-mode="inline"]){min-height:320px}:host([data-mode="inline"]) .__P__-panel{border-radius:var(--__P__-radius)}:host([data-mode="standalone"]) .__P__-panel{border-radius:0;border:0;box-shadow:none}:host([data-mode="modal"]){position:fixed!important;inset:0!important;z-index:var(--__P__-z-panel)!important;display:block!important;width:100vw;height:100dvh;background:var(--__P__-modal-backdrop, var(--__P__-backdrop));animation:__P__-backdrop-in var(--__P__-dur-base) var(--__P__-ease) both;--__P__-panel-w: min(960px, 92vw);--__P__-panel-h: min(720px, 88dvh)}:host([data-mode="modal"]) .__P__-anchor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--__P__-space-6);pointer-events:none}:host([data-mode="modal"]) .__P__-panel{pointer-events:auto;width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);min-width:0;min-height:0;border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-panel);animation:__P__-modal-in var(--__P__-dur-base) var(--__P__-ease);translate:var(--__P__-modal-dx, 0px) var(--__P__-modal-dy, 0px)}:host([data-mode="modal"]) .__P__-header,:host([data-mode="modal"]) .__P__-back-header,:host([data-mode="modal"]) .__P__-home-hero{cursor:grab;touch-action:none}:host([data-mode="modal"]) .__P__-panel[data-dragging]{cursor:grabbing;user-select:none}:host([data-mode="modal"]) .__P__-panel[data-dragging] *{cursor:grabbing}:host([data-mode="modal"]) .__P__-fab{display:none}@keyframes __P__-backdrop-in{0%{background:#0000}to{background:var(--__P__-modal-backdrop, var(--__P__-backdrop))}}@keyframes __P__-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:host([data-mode="drawer"]){--__P__-panel-w: min(440px, calc(100vw - 32px) );--__P__-panel-h: 100dvh}:host([data-mode="drawer"]) .__P__-anchor{position:fixed;--__P__-inset-x: var(--__P__-panel-inset, 12px);--__P__-inset-y: var(--__P__-panel-inset, 3dvh);top:var(--__P__-inset-y);bottom:auto;right:var(--__P__-inset-x);left:auto;width:min(var(--__P__-widget-w, var(--__P__-panel-w)),calc(100vw - var(--__P__-inset-x) * 2));height:min(var(--__P__-widget-h, var(--__P__-panel-h)),calc(100dvh - var(--__P__-inset-y) * 2));padding:0;display:block;pointer-events:auto}:host([data-mode="drawer"][data-position$="-left"]) .__P__-anchor{right:auto;left:var(--__P__-inset-x)}:host([data-mode="drawer"][data-position^="bottom-"]) .__P__-anchor{top:auto;bottom:var(--__P__-inset-y)}:host([data-mode="drawer"]) .__P__-panel{width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;border-radius:var(--__P__-radius, 12px);border:1px solid var(--__P__-border);box-shadow:-8px 16px 32px -12px #00000038;animation:__P__-drawer-in var(--__P__-dur-base) var(--__P__-ease)}:host([data-mode="drawer"][data-position$="-left"]) .__P__-panel{box-shadow:8px 16px 32px -12px #00000038;animation:__P__-drawer-in-left var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab[data-edge-tab]{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-2);position:fixed;top:50%;height:140px;width:auto;min-width:0;padding:10px 8px;writing-mode:vertical-rl;text-orientation:mixed;transform:translateY(-50%);transform-origin:center;animation:__P__-edge-tab-in var(--__P__-dur-base) var(--__P__-ease) both}.__P__-fab[data-edge-tab] svg{writing-mode:horizontal-tb}.__P__-fab[data-edge-tab]:hover{transform:translateY(-50%) scale(1.03)}.__P__-fab[data-edge-tab]:active{transform:translateY(-50%) scale(.97)}:host([data-position$="-right"]) .__P__-fab[data-edge-tab]{right:0;left:auto;border-radius:12px 0 0 12px;box-shadow:-6px 0 18px -8px #0000004d}:host([data-position$="-left"]) .__P__-fab[data-edge-tab]{left:0;right:auto;border-radius:0 12px 12px 0;box-shadow:6px 0 18px -8px #0000004d}.__P__-fab[data-edge-tab][data-leaving]{position:fixed;top:50%;bottom:auto;animation:__P__-edge-tab-out var(--__P__-dur-quick) var(--__P__-ease) forwards}@keyframes __P__-edge-tab-in{0%{opacity:0;transform:translateY(-50%) scale(.9)}to{opacity:1;transform:translateY(-50%) scale(1)}}@keyframes __P__-edge-tab-out{0%{opacity:1;transform:translateY(-50%) scale(1)}to{opacity:0;transform:translateY(-50%) scale(.85)}}@keyframes __P__-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes __P__-drawer-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){:host([data-mode="drawer"]) .__P__-panel,.__P__-fab[data-edge-tab]{animation:none}}.__P__-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);background:var(--__P__-bg)}.__P__-header h1{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;flex:1;letter-spacing:-.01em}.__P__-header-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--__P__-space-1);flex-shrink:0}.__P__-agent{flex:1;display:inline-flex;align-items:center;gap:10px;min-width:0}.__P__-agent-avatar{position:relative;width:32px;height:32px;border-radius:999px;background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--__P__-text-xs);overflow:hidden;flex-shrink:0}.__P__-agent-avatar img{width:100%;height:100%;object-fit:cover}.__P__-agent-avatar:after{content:"";position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:999px;border:2px solid var(--__P__-bg);background:var(--__P__-neutral)}.__P__-agent-avatar[data-status=online]:after{background:var(--__P__-success)}.__P__-agent-avatar[data-status=away]:after{background:var(--__P__-warning)}.__P__-agent-avatar[data-status=offline]:after{background:var(--__P__-neutral)}.__P__-agent-meta{display:flex;flex-direction:column;line-height:1.15;min-width:0}.__P__-agent-meta strong{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-agent-meta span{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-suggestions{display:flex;flex-wrap:nowrap;gap:var(--__P__-space-2);padding:6px 14px 10px;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;min-width:0}.__P__-suggestions::-webkit-scrollbar{display:none}.__P__-suggestions:before,.__P__-suggestions:after{content:"";flex:1 1 0;min-width:0}.__P__-suggestion{flex:0 0 auto;scroll-snap-align:center;padding:7px 14px;border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg);font-size:var(--__P__-text-sm);font-weight:500;white-space:nowrap;transition:background var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-suggestion:hover{border-color:var(--__P__-accent);color:var(--__P__-accent);transform:translateY(-1px)}.__P__-suggestion:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px;border-color:var(--__P__-accent)}.__P__-suggestion:active{transform:translateY(0)}.__P__-icon-btn{width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);transition:background var(--__P__-dur-quick) var(--__P__-ease),color var(--__P__-dur-quick) var(--__P__-ease)}.__P__-icon-btn:hover{background:var(--__P__-bg-elevated);color:var(--__P__-fg)}.__P__-icon-btn:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-icon-btn:active{background:var(--__P__-border)}.__P__-icon-btn:disabled{opacity:.45;cursor:not-allowed}.__P__-icon-btn:before{content:"";position:absolute;inset:-6px}.__P__-icon-btn{position:relative}.__P__-icon-btn svg{width:18px;height:18px}.__P__-icon-btn[data-recording=true]{color:var(--__P__-accent);background:color-mix(in srgb,var(--__P__-accent) 12%,transparent);animation:__P__-pulse 1.2s var(--__P__-ease) infinite}@keyframes __P__-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--__P__-accent) 40%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--__P__-accent) 0%,transparent)}}.__P__-list,.__P__-history,.__P__-module-scroll,.__P__-home-scroll,.__P__-help-list,.__P__-toolui-code,.__P__-sidebar-conversations{scrollbar-width:thin;scrollbar-color:var(--__P__-border-strong) transparent;overscroll-behavior:contain;scrollbar-gutter:stable}.__P__-list::-webkit-scrollbar,.__P__-history::-webkit-scrollbar,.__P__-module-scroll::-webkit-scrollbar,.__P__-home-scroll::-webkit-scrollbar,.__P__-help-list::-webkit-scrollbar,.__P__-toolui-code::-webkit-scrollbar,.__P__-sidebar-conversations::-webkit-scrollbar{width:8px}.__P__-list::-webkit-scrollbar-thumb,.__P__-history::-webkit-scrollbar-thumb,.__P__-module-scroll::-webkit-scrollbar-thumb,.__P__-home-scroll::-webkit-scrollbar-thumb,.__P__-help-list::-webkit-scrollbar-thumb,.__P__-toolui-code::-webkit-scrollbar-thumb,.__P__-sidebar-conversations::-webkit-scrollbar-thumb{background:var(--__P__-border-strong);border-radius:8px}.__P__-list-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.__P__-jump{position:absolute;inset-inline-end:14px;bottom:14px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);color:var(--__P__-fg);box-shadow:var(--__P__-shadow-panel);cursor:pointer;opacity:.85;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease);animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-jump:hover{opacity:1}.__P__-jump:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;opacity:1}.__P__-jump:active{transform:translateY(1px)}.__P__-jump svg{width:18px;height:18px}.__P__-list{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-4);padding-bottom:var(--__P__-space-8);display:flex;flex-direction:column;gap:14px}.__P__-date-divider{position:sticky;top:var(--__P__-space-2);z-index:2;display:flex;justify-content:center;align-items:flex-start;height:0;margin:0;pointer-events:none}.__P__-date-pill{padding:3px 10px;border-radius:999px;font-size:calc(11px * var(--__P__-text-scale));font-weight:600;color:var(--__P__-fg-muted);background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);box-shadow:var(--__P__-shadow-card);opacity:0;pointer-events:none;transition:opacity var(--__P__-dur-base) var(--__P__-ease)}.__P__-list[data-scrolling=true] .__P__-date-pill{opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.__P__-date-pill{transition:none}}.__P__-bubble-row{display:flex}.__P__-bubble-row[data-role=user]{justify-content:flex-end}.__P__-bubble-row[data-role=assistant]{justify-content:flex-start}.__P__-bubble{max-width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);line-height:1.6;font-size:calc(14px * var(--__P__-text-scale));word-wrap:break-word;overflow-wrap:anywhere;box-shadow:0 1px 2px #0000000a,0 1px 8px -4px #0000000f;animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-bubble ::selection{background:color-mix(in srgb,var(--__P__-accent) 30%,transparent)}.__P__-bubble-row[data-role=user] .__P__-bubble ::selection{background:#fff6;color:var(--__P__-bubble-user-text)}@keyframes __P__-bubble-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-bubble-row[data-role=user] .__P__-bubble{background:var(--__P__-bubble-user);color:var(--__P__-bubble-user-text);border-end-end-radius:5px}.__P__-bubble-row[data-role=assistant] .__P__-bubble{background:var(--__P__-bubble-assistant);color:var(--__P__-bubble-assistant-text);border-end-start-radius:5px}.__P__-bubble-col{display:flex;flex-direction:column;max-width:85%;min-width:0}.__P__-bubble-row[data-role=user] .__P__-bubble-col{align-items:flex-end}.__P__-bubble-row[data-role=assistant] .__P__-bubble-col{align-items:flex-start}.__P__-bubble-time{margin-top:3px;padding:0 4px;font-size:calc(11px * var(--__P__-text-scale));line-height:1;color:var(--__P__-fg-muted);user-select:none}.__P__-md>*:first-child{margin-top:0}.__P__-md>*:last-child{margin-bottom:0}.__P__-md p{margin:10px 0}.__P__-md h1,.__P__-md h2,.__P__-md h3,.__P__-md h4,.__P__-md h5,.__P__-md h6{margin:18px 0 8px;line-height:1.3;letter-spacing:-.01em;font-weight:700}.__P__-md h1{font-size:1.4em}.__P__-md h2{font-size:1.22em}.__P__-md h3{font-size:1.08em}.__P__-md h4,.__P__-md h5,.__P__-md h6{font-size:1em}.__P__-md>h1:first-child,.__P__-md>h2:first-child,.__P__-md>h3:first-child,.__P__-md>h4:first-child,.__P__-md>h5:first-child,.__P__-md>h6:first-child{margin-top:0}.__P__-md ul,.__P__-md ol{padding-inline-start:1.5em;margin:10px 0}.__P__-md ul{list-style:disc}.__P__-md ol{list-style:decimal}.__P__-md li{margin:6px 0;padding-inline-start:2px}.__P__-md li::marker{color:var(--__P__-fg-muted)}.__P__-md li>p{margin:6px 0}.__P__-md li>ul,.__P__-md li>ol{margin:6px 0}.__P__-md strong,.__P__-md b{font-weight:650;letter-spacing:-.005em}.__P__-md em,.__P__-md i{font-style:italic}.__P__-md code{font-family:var(--__P__-font-mono);font-size:.86em;padding:1px 6px;border-radius:5px;background:color-mix(in srgb,var(--__P__-accent) 10%,transparent);color:var(--__P__-fg);border:1px solid color-mix(in srgb,var(--__P__-accent) 16%,transparent)}.__P__-md pre{font-family:var(--__P__-font-mono);font-size:calc(12.5px * var(--__P__-text-scale));padding:12px 14px;border-radius:var(--__P__-radius-sm);background:#7f7f7f1f;overflow-x:auto;margin:var(--__P__-space-3) 0;line-height:1.5}.__P__-md pre code{padding:0;background:none}.__P__-md a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.__P__-md a:hover{text-decoration-thickness:2px}.__P__-md blockquote{margin:14px 0;padding:6px 14px;border-inline-start:3px solid color-mix(in srgb,var(--__P__-accent) 50%,transparent);background:color-mix(in srgb,var(--__P__-accent) 5%,transparent);border-start-end-radius:var(--__P__-radius-sm);border-end-end-radius:var(--__P__-radius-sm);color:var(--__P__-fg-muted)}.__P__-md blockquote>:first-child{margin-top:0}.__P__-md blockquote>:last-child{margin-bottom:0}.__P__-md hr{border:0;height:1px;background:color-mix(in srgb,currentColor 18%,transparent);margin:var(--__P__-space-4) 0}.__P__-md table{border-collapse:collapse;margin:var(--__P__-space-3) 0;font-size:.95em;display:block;overflow-x:auto;max-width:100%;font-variant-numeric:tabular-nums}.__P__-md th,.__P__-md td{padding:6px 10px;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent);text-align:start}.__P__-md th{font-weight:700;background:color-mix(in srgb,currentColor 6%,transparent)}.__P__-md h1+ul,.__P__-md h1+ol,.__P__-md h2+ul,.__P__-md h2+ol,.__P__-md h3+ul,.__P__-md h3+ol,.__P__-md h4+ul,.__P__-md h4+ol{margin-top:var(--__P__-space-1)}.__P__-loading{display:inline-flex;align-items:center;gap:var(--__P__-space-2);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-loading-spinner{width:14px;height:14px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:__P__-spin .8s linear infinite}@keyframes __P__-spin{to{transform:rotate(1turn)}}.__P__-typing{display:inline-flex;gap:var(--__P__-space-1);padding:var(--__P__-space-1) 0}.__P__-typing span{width:5px;height:5px;border-radius:999px;background:currentColor;opacity:.4;animation:__P__-blink 1.2s var(--__P__-ease) infinite}.__P__-typing span:nth-child(2){animation-delay:.2s}.__P__-typing span:nth-child(3){animation-delay:.4s}@keyframes __P__-blink{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.__P__-reasoning{margin:var(--__P__-space-1) 0 var(--__P__-space-2);padding-inline-start:var(--__P__-space-3);border-inline-start:2px solid var(--__P__-border-strong)}.__P__-reasoning-summary{display:inline-flex;align-items:center;gap:var(--__P__-space-1);cursor:pointer;list-style:none;user-select:none;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-reasoning-summary:hover{color:var(--__P__-fg)}.__P__-reasoning-summary:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;border-radius:var(--__P__-radius-sm)}.__P__-reasoning-summary::-webkit-details-marker{display:none}.__P__-reasoning-summary:before{content:"";width:5px;height:5px;border-inline-end:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.7;transition:transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-reasoning[open] .__P__-reasoning-summary:before{transform:rotate(45deg)}.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:__P__-reasoning-pulse 1.4s var(--__P__-ease) infinite}@keyframes __P__-reasoning-pulse{0%,to{opacity:.5}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:none}}.__P__-reasoning-body{margin-top:var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-reasoning-body>:first-child{margin-top:0}.__P__-reasoning-body>:last-child{margin-bottom:0}.__P__-source{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:6px;margin-inline-end:6px;padding:var(--__P__-space-1) var(--__P__-space-2);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);text-decoration:none}a.__P__-source:hover{color:var(--__P__-fg);border-color:var(--__P__-accent)}.__P__-source-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-composer{border-top:1px solid var(--__P__-border);padding:10px 12px;background:var(--__P__-bg);display:flex;flex-direction:column;gap:var(--__P__-space-2)}.__P__-composer-row{display:flex;align-items:flex-end;gap:6px}.__P__-textarea{flex:1;height:40px;max-height:160px;padding:10px 12px;border-radius:var(--__P__-radius);background:var(--__P__-bg-elevated);border:1px solid transparent;font-size:calc(14px * var(--__P__-text-scale));line-height:1.4;transition:height var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),box-shadow var(--__P__-dur-quick) var(--__P__-ease)}.__P__-textarea:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:1px;border-color:var(--__P__-focus)}@media(pointer:coarse){.__P__-textarea,.__P__-home-search-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}.__P__-textarea{height:44px}}.__P__-send{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease),background var(--__P__-dur-quick) var(--__P__-ease)}.__P__-send[data-shape=circle]{border-radius:999px}.__P__-send[data-shape=square]{border-radius:var(--__P__-radius-sm)}.__P__-send[data-shape=pill]{width:auto;padding:0 18px;border-radius:999px}.__P__-send[data-variant=filled]{background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-send[data-variant=outline]{background:transparent;color:var(--__P__-accent);border-color:var(--__P__-accent)}.__P__-send[data-variant=outline]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 10%,transparent)}.__P__-send[data-variant=ghost]{background:transparent;color:var(--__P__-accent)}.__P__-send[data-variant=ghost]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 8%,transparent)}.__P__-send:disabled{opacity:.4;cursor:not-allowed}.__P__-send:not(:disabled):hover{transform:translateY(-1px)}.__P__-send:not(:disabled):active{transform:translateY(0)}.__P__-send:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-send svg{width:18px;height:18px}.__P__-composer-actions{display:flex;gap:var(--__P__-space-1);flex-wrap:wrap}.__P__-attachments{display:flex;flex-wrap:wrap;gap:6px}.__P__-attachment-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-1);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);font-size:var(--__P__-text-xs);max-width:200px}.__P__-attachment-thumb{width:24px;height:24px;border-radius:999px;object-fit:cover;background:var(--__P__-border)}.__P__-attachment-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-attachment-remove{width:18px;height:18px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted)}.__P__-attachment-remove:hover{background:var(--__P__-border);color:var(--__P__-fg)}.__P__-dropzone{position:absolute;inset:8px;border:2px dashed var(--__P__-accent);border-radius:var(--__P__-radius);background:color-mix(in srgb,var(--__P__-accent) 8%,transparent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--__P__-accent);pointer-events:none;z-index:10;animation:__P__-fade-in var(--__P__-dur-quick) var(--__P__-ease)}@keyframes __P__-fade-in{0%{opacity:0}to{opacity:1}}.__P__-error{margin-top:var(--__P__-space-1);padding:8px 10px;border-radius:var(--__P__-radius-sm);background:var(--__P__-danger-bg);color:var(--__P__-danger-text);font-size:var(--__P__-text-sm);display:flex;align-items:center;gap:var(--__P__-space-2)}.__P__-error button{color:inherit;text-decoration:underline;font-size:var(--__P__-text-sm)}.__P__-history{flex:1;overflow-y:auto;padding:var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-3)}.__P__-history-footer{flex:none;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);border-top:1px solid var(--__P__-border);background:var(--__P__-surface)}.__P__-history-new{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);padding:var(--__P__-space-2) var(--__P__-space-3);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-on-accent);cursor:pointer;font-size:var(--__P__-text-sm);font-weight:600;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-history-new svg{width:16px;height:16px}.__P__-history-new:hover{filter:brightness(1.08)}.__P__-history-new:active{transform:translateY(1px)}.__P__-history-new:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-history-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 16px;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));text-align:center}.__P__-history-group{display:flex;flex-direction:column;padding:0 var(--__P__-space-3)}.__P__-history-heading{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted);padding:14px 4px 8px;text-transform:uppercase;letter-spacing:.04em}.__P__-history-card{display:flex;flex-direction:column;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-lg, 14px);overflow:hidden}.__P__-history-item{all:unset;display:flex;align-items:center;gap:var(--__P__-space-3);padding:12px var(--__P__-space-3);cursor:pointer;transition:background var(--__P__-dur-base) var(--__P__-ease)}.__P__-history-item+.__P__-history-item{border-top:1px solid var(--__P__-border)}.__P__-history-item:hover{background:var(--__P__-bg-elevated)}.__P__-history-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-history-avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:color-mix(in oklab,var(--__P__-accent) 12%,transparent);color:var(--__P__-accent)}.__P__-history-avatar svg{width:18px;height:18px}.__P__-history-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.__P__-history-row{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-2)}.__P__-history-title{flex:1;min-width:0;font-size:calc(14px * var(--__P__-text-scale));font-weight:500;color:var(--__P__-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-time{flex:none;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-history-preview{flex:1;min-width:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--__P__-accent)}.__P__-history-item[data-unread=true] .__P__-history-title{font-weight:600}.__P__-history-item[data-closed=true] .__P__-history-title{color:var(--__P__-fg-muted)}.__P__-history-item-skeleton{cursor:default;pointer-events:none}.__P__-skeleton{display:block;border-radius:4px;background:linear-gradient(90deg,color-mix(in oklab,var(--__P__-fg) 9%,transparent) 30%,color-mix(in oklab,var(--__P__-fg) 17%,transparent),color-mix(in oklab,var(--__P__-fg) 9%,transparent) 70%);background-size:200% 100%;animation:__P__-skeleton-shimmer 1.8s ease-in-out infinite}.__P__-history-avatar.__P__-skeleton{border-radius:50%}.__P__-skeleton-heading{width:52px;height:8px}.__P__-skeleton-title{width:55%;height:12px}.__P__-skeleton-time{width:34px;height:10px}.__P__-skeleton-preview{width:80%;height:10px}@keyframes __P__-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.__P__-skeleton{animation:none}}.__P__-list-loading{margin:auto;padding:var(--__P__-space-6) var(--__P__-space-4);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);text-align:center}.__P__-readonly-banner{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 12px;margin:0 var(--__P__-space-3) var(--__P__-space-3);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);text-align:center;font-size:var(--__P__-text-sm)}.__P__-readonly-label{line-height:1.4}.__P__-readonly-cta{appearance:none;border:0;cursor:pointer;padding:var(--__P__-space-2) var(--__P__-space-4);border-radius:999px;background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-readonly-cta:hover,.__P__-readonly-cta:focus-visible{filter:brightness(1.1)}.__P__-readonly-cta:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}.__P__-composer-footer{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 16px;margin:0 var(--__P__-space-3);border-top:1px solid var(--__P__-border);text-align:center;font-size:calc(11px * var(--__P__-text-scale));line-height:1.4;color:var(--__P__-fg-muted)}.__P__-disclaimer{max-width:320px;margin:0 auto;opacity:.9;letter-spacing:.01em}.__P__-poweredby{display:inline-flex;align-items:center;justify-content:center;gap:6px;color:inherit;text-decoration:none;opacity:.7;transition:opacity var(--__P__-dur-base) var(--__P__-ease);font-size:calc(11px * var(--__P__-text-scale));letter-spacing:.02em}.__P__-poweredby:hover{opacity:1}.__P__-poweredby-logo{height:12px;width:auto;display:inline-block;vertical-align:middle}.__P__-poweredby-bar{flex:none;display:flex;align-items:center;justify-content:center;padding:6px 16px;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated)}.__P__-menu-wrap{position:relative;display:inline-flex}.__P__-menu{position:absolute;top:100%;inset-inline-end:0;margin-top:6px;min-width:200px;padding:6px;background:var(--__P__-bg);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);box-shadow:var(--__P__-shadow-panel);z-index:10;display:flex;flex-direction:column;gap:2px;animation:__P__-menu-in var(--__P__-dur-base) var(--__P__-ease)}@media(prefers-reduced-motion:reduce){.__P__-menu{animation:none}}@keyframes __P__-menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98);transform-origin:top right}to{opacity:1;transform:none}}.__P__-menu-item{all:unset;display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);border-radius:var(--__P__-radius-sm);cursor:pointer;user-select:none}.__P__-menu-item:hover{background:var(--__P__-bg-elevated)}.__P__-menu-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-menu-item[disabled]{opacity:.45;cursor:not-allowed}.__P__-menu-icon{display:inline-flex;width:16px;height:16px;color:var(--__P__-fg-muted)}.__P__-menu-icon svg{width:16px;height:16px}.__P__-menu-label{flex:1}.__P__-menu-check{display:inline-flex;color:var(--__P__-accent)}.__P__-menu-check svg{width:14px;height:14px}.__P__-menu-item-segmented{cursor:default}.__P__-menu-item-segmented:hover{background:transparent}.__P__-segmented{display:inline-flex;gap:2px;padding:2px;background:var(--__P__-bg-elevated);border-radius:var(--__P__-radius-sm)}.__P__-segment{all:unset;min-width:26px;padding:3px 8px;font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.02em;text-align:center;color:var(--__P__-fg-muted);border-radius:calc(var(--__P__-radius-sm) - 2px);cursor:pointer;transition:color .12s ease,background .12s ease}.__P__-segment:hover{color:var(--__P__-fg)}.__P__-segment[data-on=true]{background:var(--__P__-bg);color:var(--__P__-accent);box-shadow:var(--__P__-shadow-card)}.__P__-segment:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-resize-grip{position:absolute;width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);opacity:.45;transition:opacity var(--__P__-dur-base) var(--__P__-ease);z-index:2;touch-action:none;user-select:none}.__P__-resize-grip:hover,.__P__-resize-grip:focus-visible{opacity:1}.__P__-resize-grip svg{width:10px;height:10px}.__P__-resize-grip--bottom-left{bottom:2px;left:2px;cursor:nesw-resize;transform:scaleX(-1)}.__P__-resize-grip--bottom-right{bottom:2px;right:2px;cursor:nwse-resize}.__P__-resize-grip--top-left{top:2px;left:2px;cursor:nwse-resize;transform:rotate(180deg)}.__P__-resize-grip--top-right{top:2px;right:2px;cursor:nesw-resize;transform:scaleY(-1)}:host(:not([data-mode="open"])) .__P__-resize-grip{display:none}.__P__-messenger{display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-body,.__P__-messenger-pane{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-pane[hidden]{display:none}@keyframes __P__-view-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-module{display:flex;flex-direction:column;height:100%;min-height:0}@media(prefers-reduced-motion:no-preference){.__P__-module,.__P__-history{animation:__P__-view-in .18s var(--__P__-ease-out)}}.__P__-module-scroll{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-3);display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-home{container-type:inline-size;background:radial-gradient(125% 65% at 88% 0%,color-mix(in srgb,#fff 16%,transparent),transparent 55%),linear-gradient(180deg,var(--__P__-accent) 0%,var(--__P__-accent) 22%,color-mix(in srgb,var(--__P__-accent) 28%,var(--__P__-surface)) 44%,var(--__P__-surface) 70%);border-radius:var(--__P__-radius-lg) var(--__P__-radius-lg) 0 0}.__P__-home-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:transparent}.__P__-home-cards{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:4px 14px 16px}.__P__-module-pad{padding:var(--__P__-space-3) var(--__P__-space-3) 0}.__P__-module-empty{display:flex;flex-direction:column;align-items:center;gap:var(--__P__-space-3);padding:var(--__P__-space-8) var(--__P__-space-4);text-align:center;color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-module-retry{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border-strong);border-radius:var(--__P__-radius-sm);color:var(--__P__-fg);font-weight:600;cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-module-retry:hover{background:var(--__P__-hover);border-color:var(--__P__-accent)}.__P__-module-retry:active{background:var(--__P__-border)}.__P__-module-retry:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-help-list{flex:1;min-height:0;overflow-y:auto;padding-bottom:var(--__P__-space-3)}.__P__-help-group{display:flex;flex-direction:column}.__P__-help-section-title{position:sticky;top:0;z-index:1;margin:0;padding:var(--__P__-space-3) var(--__P__-space-5) var(--__P__-space-2);font-size:var(--__P__-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--__P__-fg-muted);background:var(--__P__-bg)}.__P__-help-card{margin:0 var(--__P__-space-3) var(--__P__-space-3);background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden}.__P__-help-card .__P__-list-row{border-bottom:0;border-radius:0}.__P__-help-card .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-module-cta{padding:var(--__P__-space-3);border-top:1px solid var(--__P__-border)}.__P__-tabbar{display:flex;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);flex-shrink:0}.__P__-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-1);min-height:48px;padding:var(--__P__-space-2) var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;transition:color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-tab:hover{color:var(--__P__-fg)}.__P__-tab[aria-selected=true]{color:var(--__P__-accent)}.__P__-tab:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-tab:active{background:var(--__P__-hover)}.__P__-tab-icon{position:relative;display:inline-flex}.__P__-tab-icon svg{width:22px;height:22px}.__P__-tab-badge{position:absolute;top:-4px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--__P__-accent);color:var(--__P__-on-accent);font-size:calc(10px * var(--__P__-text-scale));font-weight:600;line-height:1}.__P__-home-hero{flex-shrink:0;padding:var(--__P__-space-5) var(--__P__-space-5) var(--__P__-space-3);color:var(--__P__-on-accent);--__P__-focus: var(--__P__-on-accent)}.__P__-home-hero-top{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-3);min-height:32px}.__P__-home-brand{font-size:clamp(calc(12px * var(--__P__-text-scale)),calc(3.2cqi * var(--__P__-text-scale)),calc(14px * var(--__P__-text-scale)));font-weight:600;letter-spacing:.01em;color:color-mix(in srgb,#fff 82%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.__P__-home-brand-spacer{flex:1}.__P__-home-hero-actions{display:flex;align-items:center;gap:var(--__P__-space-2);flex-shrink:0}.__P__-home-hero-actions .__P__-icon-btn{color:#fff}.__P__-home-hero-actions .__P__-icon-btn:hover{background:color-mix(in srgb,#fff 18%,transparent);color:#fff}.__P__-home-hero-actions .__P__-icon-btn:active{background:color-mix(in srgb,#fff 26%,transparent)}.__P__-home-greeting{margin:28px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(19px * var(--__P__-text-scale)),calc(5.5cqi * var(--__P__-text-scale)),var(--__P__-text-2xl));font-weight:800;line-height:1.18;letter-spacing:-.01em;overflow-wrap:anywhere}.__P__-home-lead{margin:10px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(15px * var(--__P__-text-scale)),calc(4.2cqi * var(--__P__-text-scale)),var(--__P__-text-xl));font-weight:600;line-height:1.25;letter-spacing:-.005em;color:color-mix(in srgb,var(--__P__-on-accent) 78%,transparent);overflow-wrap:anywhere}.__P__-home-avatars{display:flex}.__P__-home-avatar{width:30px;height:30px;border-radius:999px;overflow:hidden;margin-inline-start:-10px;border:2px solid color-mix(in srgb,#fff 92%,transparent);box-shadow:0 1px 3px #0000002e;background:var(--__P__-surface);display:inline-flex;align-items:center;justify-content:center;font-size:var(--__P__-text-xs);font-weight:700;color:var(--__P__-fg)}.__P__-home-avatar:first-child{margin-inline-start:0}.__P__-home-avatar img{width:100%;height:100%;object-fit:cover}.__P__-home-content{background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-card);overflow:hidden}.__P__-home-content-title{padding:var(--__P__-space-4) var(--__P__-space-4) var(--__P__-space-3);font-size:var(--__P__-text-sm);font-weight:700}.__P__-home-content-list{display:flex;flex-direction:column;padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-home-content-list .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-home-card{display:block;width:100%;text-align:start;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);padding:var(--__P__-space-4);box-shadow:var(--__P__-shadow-card)}.__P__-home-card[data-interactive=true]{cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-home-card[data-interactive=true]:hover{background:var(--__P__-bg-elevated)}.__P__-home-card[data-interactive=true]:active{transform:translateY(1px)}.__P__-home-card[data-interactive=true]:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-recent-row{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-recent-avatar{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border-radius:999px;background:color-mix(in oklch,var(--__P__-accent) 14%,transparent);color:var(--__P__-accent)}.__P__-home-recent-avatar svg{width:20px;height:20px}.__P__-home-recent-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.__P__-home-recent-title{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-recent-preview{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-home-recent-at{color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);flex-shrink:0}.__P__-home-recent-dot{width:8px;height:8px;border-radius:999px;background:var(--__P__-accent);flex-shrink:0}.__P__-home-recent-row[data-unread=true] .__P__-home-recent-title{font-weight:700}.__P__-home-status{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-status-icon svg{width:22px;height:22px;color:var(--__P__-success)}.__P__-home-status[data-level=degraded] .__P__-home-status-icon svg{color:var(--__P__-warning)}.__P__-home-status[data-level=down] .__P__-home-status-icon svg{color:var(--__P__-danger)}.__P__-home-status-text{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search{display:flex;align-items:center;gap:var(--__P__-space-2);width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);border:1px solid var(--__P__-border);background:var(--__P__-surface);text-align:start}.__P__-home-search[data-input=true]{background:var(--__P__-bg-elevated)}.__P__-home-search:hover{border-color:var(--__P__-border-strong)}.__P__-home-search:focus-visible,.__P__-home-search:focus-within{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-search-text{flex:1;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search-input{flex:1;border:0;background:transparent;font-size:calc(14px * var(--__P__-text-scale));color:var(--__P__-fg);outline:none}.__P__-home-search-icon svg{width:18px;height:18px;color:var(--__P__-accent)}.__P__-list-row{display:flex;align-items:center;gap:var(--__P__-space-3);width:100%;min-height:44px;text-align:start;padding:var(--__P__-space-3) var(--__P__-space-2);border-radius:var(--__P__-radius-sm)}.__P__-list-row:hover{background:var(--__P__-hover)}.__P__-list-row:active{background:var(--__P__-border)}.__P__-list-row:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-list-row-body{display:flex;flex-direction:column;min-width:0;flex:1}.__P__-list-row-title{font-weight:600;font-size:var(--__P__-text-md);line-height:1.35}.__P__-list-row-sub{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);margin-top:var(--__P__-space-1);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-list-row-chevron svg{width:18px;height:18px;color:var(--__P__-accent);flex-shrink:0}.__P__-back-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);flex-shrink:0}.__P__-back-title{flex:1;text-align:center;font-size:var(--__P__-text-md);font-weight:700;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-back-spacer{width:32px;height:1px}.__P__-content{display:flex;flex-direction:column;gap:14px;width:100%;max-width:68ch;margin:0 auto}.__P__-content-hero{width:100%;border-radius:var(--__P__-radius)}.__P__-content-subtitle{color:var(--__P__-fg-muted);margin:0}.__P__-content-frame{flex:1;min-height:0;width:100%;border:0;background:#fff}.__P__-news-list{display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-news-card{display:block;width:100%;text-align:start;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden;background:var(--__P__-surface)}.__P__-news-card{transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-news-card:hover{background:var(--__P__-bg-elevated)}.__P__-news-card:active{transform:translateY(1px)}.__P__-news-card:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-news-hero{width:100%;display:block}.__P__-news-body{display:flex;flex-direction:column;gap:6px;padding:14px 16px}.__P__-news-title{font-weight:700;font-size:var(--__P__-text-md)}.__P__-news-summary{color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-modules-empty{display:flex;align-items:center;justify-content:center;position:relative}.__P__-modules-empty-close{position:absolute;top:12px;inset-inline-end:12px}.__P__-modules-empty-text{color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-form{display:flex;flex-direction:column;gap:var(--__P__-space-4)}.__P__-field{display:flex;flex-direction:column;gap:6px}.__P__-field-label{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-field-req{color:var(--__P__-danger)}.__P__-field-input{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);color:var(--__P__-fg);font:inherit;font-size:var(--__P__-text-sm);resize:vertical;transition:border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-field-input:focus-visible{outline:none;border-color:var(--__P__-accent)}.__P__-field[data-invalid=true] .__P__-field-input{border-color:var(--__P__-danger)}.__P__-field-input[type=date],.__P__-field-input[type=time]{appearance:none;-webkit-appearance:none}@media(pointer:coarse){.__P__-field-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}}.__P__-field-hint{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-field-error{font-size:var(--__P__-text-xs);color:var(--__P__-danger)}.__P__-field-choices{display:flex;flex-direction:column;gap:10px;padding-top:2px}.__P__-choice{display:flex;align-items:flex-start;gap:10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);cursor:pointer}.__P__-choice input{margin-top:2px;accent-color:var(--__P__-accent)}.__P__-form-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--__P__-space-2);margin-top:var(--__P__-space-2)}.__P__-form-hint{margin-inline-end:auto;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-form-submit{padding:var(--__P__-space-2) var(--__P__-space-4);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);cursor:pointer;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-submit:hover:not(:disabled){filter:brightness(1.06)}.__P__-form-submit:disabled{opacity:.6;cursor:default}.__P__-form-skip{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:transparent;color:var(--__P__-fg-muted);font:inherit;font-size:var(--__P__-text-sm);cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-skip:hover:not(:disabled){background:var(--__P__-bg-elevated)}.__P__-form-gate{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-form-gate-title{margin:0;font-size:var(--__P__-text-base);font-weight:700;color:var(--__P__-fg)}.__P__-form-gate-desc{margin:0 0 var(--__P__-space-1);font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-form-done{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:1px dashed var(--__P__-border);border-radius:999px;align-self:center;font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted)}.__P__-form-done svg{width:14px;height:14px;color:var(--__P__-success, #22c55e)}.__P__-form-done[data-outcome=skipped] svg{color:var(--__P__-fg-muted)}.__P__-form-done-fill{border:0;background:none;padding:0 2px;cursor:pointer;font:inherit;font-weight:600;color:var(--__P__-accent)}.__P__-form-done-fill:hover{text-decoration:underline}details.__P__-form-done{display:block;padding:0;border-radius:var(--__P__-radius-md)}details[open].__P__-form-done{width:min(100%,420px);background:var(--__P__-surface)}.__P__-form-done-summary{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;cursor:pointer;list-style:none}.__P__-form-done-summary::-webkit-details-marker{display:none}.__P__-form-done-summary>svg:last-child{color:var(--__P__-fg-muted);transition:transform .15s var(--__P__-ease)}details[open]>.__P__-form-done-summary>svg:last-child{transform:rotate(90deg)}.__P__-form-answers{margin:0;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);display:grid;gap:var(--__P__-space-3);text-align:start}.__P__-form-answer{display:grid;gap:6px}.__P__-form-answer dt{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-form-answer dd{margin:0;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);font-size:var(--__P__-text-sm);font-weight:400;color:var(--__P__-fg);overflow-wrap:anywhere}.__P__-toolui{display:flex;flex-direction:column;gap:var(--__P__-space-3);margin-top:6px;padding:var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);font-size:var(--__P__-text-sm)}.__P__-toolui-stale{opacity:.7}details.__P__-toolui-collapsible{gap:0}details.__P__-toolui-collapsible>:not(summary){margin-top:var(--__P__-space-3)}.__P__-toolui-collapsible>summary{cursor:pointer;list-style:none}.__P__-toolui-collapsible>summary::-webkit-details-marker{display:none}.__P__-toolui-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.__P__-toolui-title{margin-inline-end:auto;font-weight:600;color:var(--__P__-fg);overflow-wrap:anywhere}.__P__-toolui-badge{padding:3px 10px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;white-space:nowrap}.__P__-toolui-badge-accent{border-color:color-mix(in oklab,var(--__P__-warning, #f59e0b) 55%,transparent);background:color-mix(in oklab,var(--__P__-warning, #f59e0b) 12%,transparent);color:var(--__P__-warning, #f59e0b)}.__P__-toolui-status{display:inline-flex;align-items:center;gap:5px;margin-inline-start:auto;font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted)}.__P__-toolui-status[data-status=completed],.__P__-toolui-status[data-status=approved]{color:var(--__P__-success, #16a34a)}.__P__-toolui-status[data-status=denied],.__P__-toolui-status[data-status=error]{color:var(--__P__-danger, #dc2626)}.__P__-toolui-desc{margin:0;padding:var(--__P__-space-3);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);line-height:1.5}.__P__-toolui-section{display:flex;flex-direction:column;gap:6px;padding:var(--__P__-space-3);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border)}.__P__-toolui-label{font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--__P__-fg-muted)}.__P__-toolui-text{margin:0;font-size:var(--__P__-text-base);font-weight:600;color:var(--__P__-fg);line-height:1.4;overflow-wrap:anywhere}.__P__-toolui-code{margin:0;max-height:220px;overflow:auto;color:var(--__P__-fg);font-size:var(--__P__-text-xs);white-space:pre-wrap;word-break:break-word}.__P__-toolui-code[data-error=true]{color:var(--__P__-danger, #dc2626)}.__P__-toolui-note{margin:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}:host([dir="rtl"]) .__P__-icon-dir{transform:scaleX(-1)}:host([dir="rtl"]) .__P__-field-input[type=date],:host([dir="rtl"]) .__P__-field-input[type=time]{position:relative;text-align:right;padding-left:34px}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-datetime-edit,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-datetime-edit{text-align:right}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-calendar-picker-indicator,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-calendar-picker-indicator{position:absolute;left:var(--__P__-space-3);margin:0}\n';
1242
1401
 
1243
1402
  // src/styles/standalone.css
1244
1403
  var standalone_default = ".__P__-standalone-page{margin:0;height:100vh;background:var(--__P__-bg, #fff);display:grid;place-items:stretch}\n";
@@ -1326,22 +1485,22 @@ function attachAdoptedSheet(shadow, doc) {
1326
1485
  }
1327
1486
  }
1328
1487
  function applyThemeOverrides(host, overrides) {
1329
- const p35 = BRAND.cssPrefix;
1330
- if (overrides.accent) host.style.setProperty(`--${p35}-accent-user`, overrides.accent);
1331
- if (overrides.accentText) host.style.setProperty(`--${p35}-accent-text-user`, overrides.accentText);
1332
- if (overrides.radius) host.style.setProperty(`--${p35}-radius`, overrides.radius);
1333
- if (overrides.fontFamily) host.style.setProperty(`--${p35}-font`, overrides.fontFamily);
1488
+ const p36 = BRAND.cssPrefix;
1489
+ if (overrides.accent) host.style.setProperty(`--${p36}-accent-user`, overrides.accent);
1490
+ if (overrides.accentText) host.style.setProperty(`--${p36}-accent-text-user`, overrides.accentText);
1491
+ if (overrides.radius) host.style.setProperty(`--${p36}-radius`, overrides.radius);
1492
+ if (overrides.fontFamily) host.style.setProperty(`--${p36}-font`, overrides.fontFamily);
1334
1493
  }
1335
1494
  function applyThemeMode(host, mode) {
1336
1495
  host.dataset.theme = mode;
1337
1496
  }
1338
1497
  function applySize(host, size) {
1339
- const p35 = BRAND.cssPrefix;
1340
- if (size.width !== void 0) host.style.setProperty(`--${p35}-panel-w`, size.width);
1341
- if (size.height !== void 0) host.style.setProperty(`--${p35}-panel-h`, size.height);
1342
- if (size.expanded?.width !== void 0) host.style.setProperty(`--${p35}-expanded-w`, size.expanded.width);
1343
- if (size.expanded?.height !== void 0) host.style.setProperty(`--${p35}-expanded-h`, size.expanded.height);
1344
- if (size.inset !== void 0) host.style.setProperty(`--${p35}-panel-inset`, size.inset);
1498
+ const p36 = BRAND.cssPrefix;
1499
+ if (size.width !== void 0) host.style.setProperty(`--${p36}-panel-w`, size.width);
1500
+ if (size.height !== void 0) host.style.setProperty(`--${p36}-panel-h`, size.height);
1501
+ if (size.expanded?.width !== void 0) host.style.setProperty(`--${p36}-expanded-w`, size.expanded.width);
1502
+ if (size.expanded?.height !== void 0) host.style.setProperty(`--${p36}-expanded-h`, size.expanded.height);
1503
+ if (size.inset !== void 0) host.style.setProperty(`--${p36}-panel-inset`, size.inset);
1345
1504
  }
1346
1505
  function applyPosition(host, pos) {
1347
1506
  host.dataset.position = pos;
@@ -1445,7 +1604,7 @@ function createAuth(opts) {
1445
1604
  }
1446
1605
 
1447
1606
  // src/core/version.ts
1448
- var ELEMENTS_VERSION = true ? "0.46.3" : "0.0.0-dev";
1607
+ var ELEMENTS_VERSION = true ? "0.47.1" : "0.0.0-dev";
1449
1608
  var ELEMENTS_VERSION_PARAM = "_ev";
1450
1609
 
1451
1610
  // src/stream/types.ts
@@ -1530,11 +1689,11 @@ function toBase64Url(json) {
1530
1689
  var nonEmpty = (ctx) => ctx && Object.keys(ctx).length > 0 ? ctx : void 0;
1531
1690
  function encodeContext(user, page) {
1532
1691
  const u = nonEmpty(user);
1533
- const p35 = nonEmpty(page);
1534
- if (!u && !p35) return void 0;
1692
+ const p36 = nonEmpty(page);
1693
+ if (!u && !p36) return void 0;
1535
1694
  const envelope = {};
1536
1695
  if (u) envelope.user = u;
1537
- if (p35) envelope.page = p35;
1696
+ if (p36) envelope.page = p36;
1538
1697
  return toBase64Url(JSON.stringify(envelope));
1539
1698
  }
1540
1699
 
@@ -1544,8 +1703,8 @@ function parseWireDate(value) {
1544
1703
  const ms = Date.parse(value);
1545
1704
  return Number.isFinite(ms) ? ms : void 0;
1546
1705
  }
1547
- function toolPartType(toolName) {
1548
- const bare = toolName.startsWith("tool:") ? toolName.slice(5) : toolName;
1706
+ function toolPartType(toolName2) {
1707
+ const bare = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
1549
1708
  return `tool-${bare}`;
1550
1709
  }
1551
1710
  function toolNameFromType(type) {
@@ -1633,8 +1792,8 @@ function buildSendMessageRequest(params) {
1633
1792
  if (tools?.length) body.data = { tools };
1634
1793
  return body;
1635
1794
  }
1636
- function isResolvedToolPart(p35) {
1637
- return p35.state === "output-available" || p35.state === "output-error" || p35.state === "output-denied" || p35.approval?.approved !== void 0;
1795
+ function isResolvedToolPart(p36) {
1796
+ return p36.state === "output-available" || p36.state === "output-error" || p36.state === "output-denied" || p36.approval?.approved !== void 0;
1638
1797
  }
1639
1798
  function normalizeToolRef(ref) {
1640
1799
  if (typeof ref === "string") return ref ? { code: ref } : null;
@@ -1642,29 +1801,29 @@ function normalizeToolRef(ref) {
1642
1801
  }
1643
1802
  function messageToWireParts(m) {
1644
1803
  const out = [];
1645
- for (const p35 of m.parts) {
1646
- if (p35.kind === "step-start") {
1804
+ for (const p36 of m.parts) {
1805
+ if (p36.kind === "step-start") {
1647
1806
  out.push({ type: "step-start" });
1648
1807
  }
1649
- if (p35.kind === "reasoning" && p35.text) {
1650
- out.push({ type: "reasoning", text: p35.text, state: p35.done ? "done" : "streaming" });
1808
+ if (p36.kind === "reasoning" && p36.text) {
1809
+ out.push({ type: "reasoning", text: p36.text, state: p36.done ? "done" : "streaming" });
1651
1810
  }
1652
- if (p35.kind === "text" && p35.text) {
1653
- out.push({ text: p35.text, type: "text" });
1811
+ if (p36.kind === "text" && p36.text) {
1812
+ out.push({ text: p36.text, type: "text" });
1654
1813
  }
1655
- if (p35.kind === "file" && p35.url) {
1656
- out.push({ mediaType: p35.mediaType, type: "file", url: p35.url });
1814
+ if (p36.kind === "file" && p36.url) {
1815
+ out.push({ mediaType: p36.mediaType, type: "file", url: p36.url });
1657
1816
  }
1658
- if (p35.kind === "tool" && isResolvedToolPart(p35)) {
1817
+ if (p36.kind === "tool" && isResolvedToolPart(p36)) {
1659
1818
  const part = {
1660
- type: toolPartType(p35.toolName),
1661
- toolCallId: p35.toolCallId,
1662
- state: p35.state
1819
+ type: toolPartType(p36.toolName),
1820
+ toolCallId: p36.toolCallId,
1821
+ state: p36.state
1663
1822
  };
1664
- if (p35.input !== void 0) part.input = p35.input;
1665
- if (p35.output !== void 0) part.output = p35.output;
1666
- if (p35.error !== void 0) part.errorText = p35.error;
1667
- if (p35.approval && p35.approval.approved !== void 0) part.approval = p35.approval;
1823
+ if (p36.input !== void 0) part.input = p36.input;
1824
+ if (p36.output !== void 0) part.output = p36.output;
1825
+ if (p36.error !== void 0) part.errorText = p36.error;
1826
+ if (p36.approval && p36.approval.approved !== void 0) part.approval = p36.approval;
1668
1827
  out.push(part);
1669
1828
  }
1670
1829
  }
@@ -2339,6 +2498,8 @@ function makeInstantWelcomeMessage(m) {
2339
2498
  role: m.role,
2340
2499
  createdAt: Date.now(),
2341
2500
  status: "complete",
2501
+ // Client-only intro — rendered, never sent to the backend (see Message.ephemeral).
2502
+ ephemeral: true,
2342
2503
  parts: [{ kind: "text", id: `${id}-t0`, text: m.text, done: true }]
2343
2504
  });
2344
2505
  }
@@ -2351,6 +2512,7 @@ function toReactive(m) {
2351
2512
  errorText: m.errorText,
2352
2513
  finishReason: m.finishReason,
2353
2514
  serverMessageId: m.serverMessageId,
2515
+ ephemeral: m.ephemeral,
2354
2516
  attachments: m.attachments,
2355
2517
  partsSig: signal(m.parts.map(partToReactive))
2356
2518
  };
@@ -2400,7 +2562,7 @@ function fromWireMessage(w) {
2400
2562
  };
2401
2563
  }
2402
2564
  return null;
2403
- }).filter((p35) => p35 !== null);
2565
+ }).filter((p36) => p36 !== null);
2404
2566
  return {
2405
2567
  id: w.id,
2406
2568
  role: w.role,
@@ -2423,6 +2585,7 @@ function fromReactive(m) {
2423
2585
  errorText: m.errorText,
2424
2586
  finishReason: m.finishReason,
2425
2587
  serverMessageId: m.serverMessageId,
2588
+ ephemeral: m.ephemeral,
2426
2589
  attachments: m.attachments,
2427
2590
  parts: m.partsSig.value.map(partFromReactive)
2428
2591
  };
@@ -2434,43 +2597,43 @@ function assistantText(m) {
2434
2597
  }
2435
2598
  return out;
2436
2599
  }
2437
- function partToReactive(p35) {
2438
- if (p35.kind === "text" || p35.kind === "reasoning") {
2439
- return { kind: p35.kind, id: p35.id, textSig: signal(p35.text), doneSig: signal(p35.done) };
2600
+ function partToReactive(p36) {
2601
+ if (p36.kind === "text" || p36.kind === "reasoning") {
2602
+ return { kind: p36.kind, id: p36.id, textSig: signal(p36.text), doneSig: signal(p36.done) };
2440
2603
  }
2441
- if (p35.kind === "tool") {
2604
+ if (p36.kind === "tool") {
2442
2605
  return {
2443
2606
  kind: "tool",
2444
- toolCallId: p35.toolCallId,
2445
- toolName: p35.toolName,
2446
- inputPartialSig: signal(p35.inputPartial),
2447
- inputSig: signal(p35.input),
2448
- outputSig: signal(p35.output),
2449
- errorSig: signal(p35.error),
2450
- stateSig: signal(p35.state),
2451
- approvalSig: signal(p35.approval)
2607
+ toolCallId: p36.toolCallId,
2608
+ toolName: p36.toolName,
2609
+ inputPartialSig: signal(p36.inputPartial),
2610
+ inputSig: signal(p36.input),
2611
+ outputSig: signal(p36.output),
2612
+ errorSig: signal(p36.error),
2613
+ stateSig: signal(p36.state),
2614
+ approvalSig: signal(p36.approval)
2452
2615
  };
2453
2616
  }
2454
- return p35;
2617
+ return p36;
2455
2618
  }
2456
- function partFromReactive(p35) {
2457
- if (p35.kind === "text" || p35.kind === "reasoning") {
2458
- return { kind: p35.kind, id: p35.id, text: p35.textSig.value, done: p35.doneSig.value };
2619
+ function partFromReactive(p36) {
2620
+ if (p36.kind === "text" || p36.kind === "reasoning") {
2621
+ return { kind: p36.kind, id: p36.id, text: p36.textSig.value, done: p36.doneSig.value };
2459
2622
  }
2460
- if (p35.kind === "tool") {
2623
+ if (p36.kind === "tool") {
2461
2624
  return {
2462
2625
  kind: "tool",
2463
- toolCallId: p35.toolCallId,
2464
- toolName: p35.toolName,
2465
- inputPartial: p35.inputPartialSig.value,
2466
- input: p35.inputSig.value,
2467
- output: p35.outputSig.value,
2468
- error: p35.errorSig.value,
2469
- state: p35.stateSig.value,
2470
- approval: p35.approvalSig.value
2626
+ toolCallId: p36.toolCallId,
2627
+ toolName: p36.toolName,
2628
+ inputPartial: p36.inputPartialSig.value,
2629
+ input: p36.inputSig.value,
2630
+ output: p36.outputSig.value,
2631
+ error: p36.errorSig.value,
2632
+ state: p36.stateSig.value,
2633
+ approval: p36.approvalSig.value
2471
2634
  };
2472
2635
  }
2473
- return p35;
2636
+ return p36;
2474
2637
  }
2475
2638
 
2476
2639
  // src/stream/reducer.ts
@@ -2516,8 +2679,8 @@ var StreamReducer = class {
2516
2679
  ensureTextPart(m, "text", chunk.id);
2517
2680
  return;
2518
2681
  case "text-delta": {
2519
- const p35 = ensureTextPart(m, "text", chunk.id);
2520
- p35.textSig.value += chunk.delta;
2682
+ const p36 = ensureTextPart(m, "text", chunk.id);
2683
+ p36.textSig.value += chunk.delta;
2521
2684
  return;
2522
2685
  }
2523
2686
  case "text-end":
@@ -2527,8 +2690,8 @@ var StreamReducer = class {
2527
2690
  ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
2528
2691
  return;
2529
2692
  case "reasoning-delta": {
2530
- const p35 = ensureTextPart(m, "reasoning", chunk.id);
2531
- p35.textSig.value += chunk.delta;
2693
+ const p36 = ensureTextPart(m, "reasoning", chunk.id);
2694
+ p36.textSig.value += chunk.delta;
2532
2695
  return;
2533
2696
  }
2534
2697
  case "reasoning-end":
@@ -2578,19 +2741,19 @@ var StreamReducer = class {
2578
2741
  }
2579
2742
  };
2580
2743
  function ensureTextPart(m, kind, id) {
2581
- const existing = m.partsSig.value.find((p35) => p35.kind === kind && p35.id === id);
2744
+ const existing = m.partsSig.value.find((p36) => p36.kind === kind && p36.id === id);
2582
2745
  if (existing) return existing;
2583
2746
  const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
2584
2747
  appendPart(m, part);
2585
2748
  return part;
2586
2749
  }
2587
- function ensureToolPart(m, toolCallId, toolName) {
2588
- const existing = m.partsSig.value.find((p35) => p35.kind === "tool" && p35.toolCallId === toolCallId);
2750
+ function ensureToolPart(m, toolCallId, toolName2) {
2751
+ const existing = m.partsSig.value.find((p36) => p36.kind === "tool" && p36.toolCallId === toolCallId);
2589
2752
  if (existing) return existing;
2590
2753
  const part = {
2591
2754
  kind: "tool",
2592
2755
  toolCallId,
2593
- toolName: toolName ?? "tool",
2756
+ toolName: toolName2 ?? "tool",
2594
2757
  inputPartialSig: signal2(""),
2595
2758
  inputSig: signal2(void 0),
2596
2759
  outputSig: signal2(void 0),
@@ -2605,7 +2768,7 @@ function appendPart(m, part) {
2605
2768
  m.partsSig.value = [...m.partsSig.value, part];
2606
2769
  }
2607
2770
  function appendSource(m, source) {
2608
- if (m.partsSig.value.some((p35) => p35.kind === "source" && p35.sourceId === source.sourceId)) return;
2771
+ if (m.partsSig.value.some((p36) => p36.kind === "source" && p36.sourceId === source.sourceId)) return;
2609
2772
  appendPart(m, source);
2610
2773
  }
2611
2774
  function applyTool(m, chunk) {
@@ -2614,37 +2777,37 @@ function applyTool(m, chunk) {
2614
2777
  ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2615
2778
  return;
2616
2779
  case "tool-input-delta": {
2617
- const p35 = ensureToolPart(m, chunk.toolCallId);
2618
- p35.inputPartialSig.value += chunk.inputTextDelta;
2780
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2781
+ p36.inputPartialSig.value += chunk.inputTextDelta;
2619
2782
  return;
2620
2783
  }
2621
2784
  case "tool-input-available": {
2622
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2623
- p35.inputSig.value = chunk.input;
2624
- p35.stateSig.value = "input-available";
2785
+ const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2786
+ p36.inputSig.value = chunk.input;
2787
+ p36.stateSig.value = "input-available";
2625
2788
  return;
2626
2789
  }
2627
2790
  case "tool-approval-request": {
2628
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2629
- p35.approvalSig.value = { id: chunk.approvalId };
2630
- p35.stateSig.value = "approval-requested";
2791
+ const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2792
+ p36.approvalSig.value = { id: chunk.approvalId };
2793
+ p36.stateSig.value = "approval-requested";
2631
2794
  return;
2632
2795
  }
2633
2796
  case "tool-output-available": {
2634
- const p35 = ensureToolPart(m, chunk.toolCallId);
2635
- p35.outputSig.value = chunk.output;
2636
- p35.stateSig.value = "output-available";
2797
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2798
+ p36.outputSig.value = chunk.output;
2799
+ p36.stateSig.value = "output-available";
2637
2800
  return;
2638
2801
  }
2639
2802
  case "tool-output-error": {
2640
- const p35 = ensureToolPart(m, chunk.toolCallId);
2641
- p35.errorSig.value = chunk.errorText;
2642
- p35.stateSig.value = "output-error";
2803
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2804
+ p36.errorSig.value = chunk.errorText;
2805
+ p36.stateSig.value = "output-error";
2643
2806
  return;
2644
2807
  }
2645
2808
  case "tool-output-denied": {
2646
- const p35 = ensureToolPart(m, chunk.toolCallId);
2647
- p35.stateSig.value = "output-denied";
2809
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2810
+ p36.stateSig.value = "output-denied";
2648
2811
  return;
2649
2812
  }
2650
2813
  default:
@@ -3341,24 +3504,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
3341
3504
  import { useEffect as useEffect2, useRef } from "preact/hooks";
3342
3505
  import { jsx as jsx3 } from "preact/jsx-runtime";
3343
3506
  function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
3344
- const p35 = BRAND.cssPrefix;
3507
+ const p36 = BRAND.cssPrefix;
3345
3508
  const dragRef = useRef(null);
3346
3509
  useEffect2(() => {
3347
3510
  if (!panelEl) return;
3348
3511
  const style = panelEl.style;
3349
- if (resize.minWidth) style.setProperty(`--${p35}-resize-min-w`, resize.minWidth);
3350
- if (resize.maxWidth) style.setProperty(`--${p35}-resize-max-w`, resize.maxWidth);
3351
- if (resize.minHeight) style.setProperty(`--${p35}-resize-min-h`, resize.minHeight);
3352
- if (resize.maxHeight) style.setProperty(`--${p35}-resize-max-h`, resize.maxHeight);
3512
+ if (resize.minWidth) style.setProperty(`--${p36}-resize-min-w`, resize.minWidth);
3513
+ if (resize.maxWidth) style.setProperty(`--${p36}-resize-max-w`, resize.maxWidth);
3514
+ if (resize.minHeight) style.setProperty(`--${p36}-resize-min-h`, resize.minHeight);
3515
+ if (resize.maxHeight) style.setProperty(`--${p36}-resize-max-h`, resize.maxHeight);
3353
3516
  if (initialSize) {
3354
- style.setProperty(`--${p35}-widget-w`, `${initialSize.width}px`);
3355
- style.setProperty(`--${p35}-widget-h`, `${initialSize.height}px`);
3517
+ style.setProperty(`--${p36}-widget-w`, `${initialSize.width}px`);
3518
+ style.setProperty(`--${p36}-widget-h`, `${initialSize.height}px`);
3356
3519
  }
3357
- }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p35, initialSize]);
3520
+ }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
3358
3521
  if (!panelEl) return null;
3359
3522
  const isTop = position.startsWith("top-");
3360
3523
  const isRight = position.endsWith("-right");
3361
- const cornerClass = `${p35}-resize-grip ${p35}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
3524
+ const cornerClass = `${p36}-resize-grip ${p36}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
3362
3525
  const onPointerDown = (e) => {
3363
3526
  if (!panelEl) return;
3364
3527
  const target = e.currentTarget;
@@ -3383,8 +3546,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
3383
3546
  if (!d || e.pointerId !== d.pointerId || !panelEl) return;
3384
3547
  const dx = (e.clientX - d.startX) * d.dirX;
3385
3548
  const dy = (e.clientY - d.startY) * d.dirY;
3386
- panelEl.style.setProperty(`--${p35}-widget-w`, `${d.startW + dx}px`);
3387
- panelEl.style.setProperty(`--${p35}-widget-h`, `${d.startH + dy}px`);
3549
+ panelEl.style.setProperty(`--${p36}-widget-w`, `${d.startW + dx}px`);
3550
+ panelEl.style.setProperty(`--${p36}-widget-h`, `${d.startH + dy}px`);
3388
3551
  };
3389
3552
  const onPointerUp = (e) => {
3390
3553
  const d = dragRef.current;
@@ -4121,7 +4284,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
4121
4284
  // src/ui/overflow-menu.tsx
4122
4285
  import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
4123
4286
  function OverflowMenu({ items, triggerLabel }) {
4124
- const p35 = BRAND.cssPrefix;
4287
+ const p36 = BRAND.cssPrefix;
4125
4288
  const menu = usePopoverMenu({ itemCount: items.length });
4126
4289
  const handleSelect = (item) => {
4127
4290
  if (item.disabled) return;
@@ -4144,13 +4307,13 @@ function OverflowMenu({ items, triggerLabel }) {
4144
4307
  e.stopPropagation();
4145
4308
  pickSegment(item, segs[next].value);
4146
4309
  };
4147
- return /* @__PURE__ */ jsxs6("div", { class: `${p35}-menu-wrap`, children: [
4310
+ return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
4148
4311
  /* @__PURE__ */ jsx8(
4149
4312
  "button",
4150
4313
  {
4151
4314
  ref: menu.triggerRef,
4152
4315
  type: "button",
4153
- class: `${p35}-icon-btn`,
4316
+ class: `${p36}-icon-btn`,
4154
4317
  "aria-label": triggerLabel,
4155
4318
  "aria-haspopup": "menu",
4156
4319
  "aria-expanded": menu.open,
@@ -4164,7 +4327,7 @@ function OverflowMenu({ items, triggerLabel }) {
4164
4327
  "div",
4165
4328
  {
4166
4329
  ref: menu.menuRef,
4167
- class: `${p35}-menu`,
4330
+ class: `${p36}-menu`,
4168
4331
  role: "menu",
4169
4332
  "aria-label": triggerLabel,
4170
4333
  onKeyDown: menu.onMenuKey,
@@ -4174,14 +4337,14 @@ function OverflowMenu({ items, triggerLabel }) {
4174
4337
  "div",
4175
4338
  {
4176
4339
  role: "menuitem",
4177
- class: `${p35}-menu-item ${p35}-menu-item-segmented`,
4340
+ class: `${p36}-menu-item ${p36}-menu-item-segmented`,
4178
4341
  "aria-label": item.label,
4179
4342
  tabIndex: -1,
4180
4343
  onKeyDown: (e) => onSegmentRowKey(e, item),
4181
4344
  children: [
4182
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4183
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4184
- /* @__PURE__ */ jsx8("span", { class: `${p35}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
4345
+ item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
4346
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
4347
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
4185
4348
  const active = seg.value === item.value;
4186
4349
  return /* @__PURE__ */ jsx8(
4187
4350
  "button",
@@ -4189,7 +4352,7 @@ function OverflowMenu({ items, triggerLabel }) {
4189
4352
  type: "button",
4190
4353
  role: "menuitemradio",
4191
4354
  "aria-checked": active,
4192
- class: `${p35}-segment`,
4355
+ class: `${p36}-segment`,
4193
4356
  "data-on": active ? "true" : void 0,
4194
4357
  lang: seg.lang,
4195
4358
  title: seg.value,
@@ -4209,14 +4372,14 @@ function OverflowMenu({ items, triggerLabel }) {
4209
4372
  {
4210
4373
  type: "button",
4211
4374
  role: "menuitem",
4212
- class: `${p35}-menu-item`,
4375
+ class: `${p36}-menu-item`,
4213
4376
  "aria-pressed": item.type === "switch" ? item.on : void 0,
4214
4377
  disabled: item.disabled,
4215
4378
  onClick: () => handleSelect(item),
4216
4379
  children: [
4217
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4218
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4219
- item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
4380
+ item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
4381
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
4382
+ item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
4220
4383
  ]
4221
4384
  },
4222
4385
  item.id
@@ -4459,6 +4622,7 @@ function DynamicForm({
4459
4622
  onSubmit,
4460
4623
  skipLabel,
4461
4624
  onSkip,
4625
+ footerHint,
4462
4626
  disabled,
4463
4627
  rootTestId,
4464
4628
  submitTestId,
@@ -4505,6 +4669,7 @@ function DynamicForm({
4505
4669
  field.name
4506
4670
  )),
4507
4671
  /* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
4672
+ footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
4508
4673
  skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
4509
4674
  /* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
4510
4675
  ] })
@@ -4759,9 +4924,9 @@ function FormDoneMarker({
4759
4924
  import { useComputed as useComputed5 } from "@preact/signals";
4760
4925
 
4761
4926
  // src/stream/constants.ts
4762
- function isAskUserInputTool(toolName) {
4763
- if (!toolName) return false;
4764
- const name = toolName.startsWith("tool:") ? toolName.slice(5) : toolName;
4927
+ function isAskUserInputTool(toolName2) {
4928
+ if (!toolName2) return false;
4929
+ const name = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
4765
4930
  return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
4766
4931
  }
4767
4932
 
@@ -4855,36 +5020,92 @@ function SourceView({ part, strings }) {
4855
5020
 
4856
5021
  // src/ui/tool-approval.tsx
4857
5022
  import { useComputed as useComputed2, useSignal } from "@preact/signals";
4858
- import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
5023
+
5024
+ // src/ui/tool-card.tsx
5025
+ import { jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
4859
5026
  var p13 = BRAND.cssPrefix;
4860
- function displayToolName(toolName) {
4861
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ");
5027
+ function toolName(raw) {
5028
+ if (raw.startsWith("tool:")) return raw.slice(5);
5029
+ if (raw.startsWith("tool-")) return raw.slice(5);
5030
+ return raw;
5031
+ }
5032
+ function statusOf(state, approval) {
5033
+ if (state === "output-error") return "error";
5034
+ if (state === "output-denied" || approval?.approved === false) return "denied";
5035
+ if (state === "output-available") return "completed";
5036
+ if (approval?.approved === true) return "approved";
5037
+ return "pending";
5038
+ }
5039
+ var ICON = {
5040
+ completed: "\u2713",
5041
+ approved: "\u2713",
5042
+ denied: "\u2715",
5043
+ error: "\u26A0",
5044
+ pending: "\u2022"
5045
+ };
5046
+ function ToolStatus({
5047
+ state,
5048
+ approval,
5049
+ strings
5050
+ }) {
5051
+ const status = statusOf(state, approval);
5052
+ const label = status === "completed" ? strings.statusCompleted : status === "approved" ? strings.approved : status === "denied" ? strings.statusDenied : status === "error" ? strings.statusError : "";
5053
+ if (!label) return null;
5054
+ return /* @__PURE__ */ jsxs11("span", { class: `${p13}-toolui-status`, "data-status": status, children: [
5055
+ /* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-status-icon`, "aria-hidden": "true", children: ICON[status] }),
5056
+ label
5057
+ ] });
5058
+ }
5059
+ function ToolSection({ label, value, error }) {
5060
+ const text = error ? String(value ?? "") : pretty(unwrapResult(value));
5061
+ if (!text) return null;
5062
+ return /* @__PURE__ */ jsxs11("div", { class: `${p13}-toolui-section`, children: [
5063
+ /* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-label`, children: label }),
5064
+ /* @__PURE__ */ jsx14("pre", { class: `${p13}-toolui-code`, "data-error": error ? "true" : void 0, children: text })
5065
+ ] });
5066
+ }
5067
+ function unwrapResult(output) {
5068
+ if (output && typeof output === "object") {
5069
+ const rec = output;
5070
+ if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5071
+ }
5072
+ return output;
4862
5073
  }
5074
+ function pretty(value) {
5075
+ if (value == null) return "";
5076
+ try {
5077
+ const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5078
+ if (!json || json === "{}" || json === "[]" || json === '""') return "";
5079
+ return json.length > 800 ? `${json.slice(0, 800)}\u2026` : json;
5080
+ } catch {
5081
+ return "";
5082
+ }
5083
+ }
5084
+
5085
+ // src/ui/tool-approval.tsx
5086
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
5087
+ var p14 = BRAND.cssPrefix;
4863
5088
  function ToolApproval({ part, strings, active, onDecision }) {
4864
5089
  const approval = useComputed2(() => part.approvalSig.value);
5090
+ const state = useComputed2(() => part.stateSig.value);
4865
5091
  const input = useComputed2(() => part.inputSig.value);
5092
+ const output = useComputed2(() => part.outputSig.value);
5093
+ const error = useComputed2(() => part.errorSig.value);
4866
5094
  const reason = useSignal("");
4867
- const decided = approval.value?.approved !== void 0;
4868
- if (decided) {
4869
- const ap = approval.value;
4870
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval ${p13}-tool-decided`, "data-testid": TID.toolDecision, children: [
4871
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-label`, "data-approved": ap?.approved ? "true" : "false", children: ap?.approved ? strings.approved : strings.rejected }),
4872
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) }),
4873
- ap?.reason ? /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-value`, children: ap.reason }) : null
4874
- ] });
4875
- }
4876
- const args = summarizeInput(input.value);
4877
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval`, "data-testid": TID.toolApproval, children: [
4878
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-head`, children: [
4879
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-badge`, children: strings.approvalRequired }),
4880
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) })
5095
+ const decided = approval.value?.approved !== void 0 || state.value !== "approval-requested";
5096
+ return /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui`, "data-testid": decided ? TID.toolDecision : TID.toolApproval, children: [
5097
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui-head`, children: [
5098
+ /* @__PURE__ */ jsx15("strong", { class: `${p14}-toolui-title`, children: toolName(part.toolName) }),
5099
+ decided ? /* @__PURE__ */ jsx15(ToolStatus, { state: state.value, approval: approval.value, strings }) : /* @__PURE__ */ jsx15("span", { class: `${p14}-toolui-badge ${p14}-toolui-badge-accent`, children: strings.approvalRequired })
4881
5100
  ] }),
4882
- args ? /* @__PURE__ */ jsx14("pre", { class: `${p13}-tool-args`, children: args }) : null,
4883
- active ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
4884
- /* @__PURE__ */ jsx14(
5101
+ /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolParameters, value: input.value }),
5102
+ output.value !== void 0 ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolResult, value: output.value }) : null,
5103
+ error.value ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null,
5104
+ decided ? null : active ? /* @__PURE__ */ jsxs12(Fragment2, { children: [
5105
+ /* @__PURE__ */ jsx15(
4885
5106
  "input",
4886
5107
  {
4887
- class: `${p13}-field-input`,
5108
+ class: `${p14}-field-input`,
4888
5109
  value: reason.value,
4889
5110
  placeholder: strings.approvalReason,
4890
5111
  onInput: (e) => {
@@ -4892,40 +5113,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
4892
5113
  }
4893
5114
  }
4894
5115
  ),
4895
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-form-actions`, children: [
4896
- /* @__PURE__ */ jsx14(
5116
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5117
+ /* @__PURE__ */ jsx15(
4897
5118
  "button",
4898
5119
  {
4899
5120
  type: "button",
4900
- class: `${p13}-tool-reject`,
5121
+ class: `${p14}-form-skip`,
4901
5122
  onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
4902
5123
  "data-testid": TID.toolReject,
4903
5124
  children: strings.reject
4904
5125
  }
4905
5126
  ),
4906
- /* @__PURE__ */ jsx14(
5127
+ /* @__PURE__ */ jsx15(
4907
5128
  "button",
4908
5129
  {
4909
5130
  type: "button",
4910
- class: `${p13}-tool-approve`,
5131
+ class: `${p14}-form-submit`,
4911
5132
  onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
4912
5133
  "data-testid": TID.toolApprove,
4913
5134
  children: strings.approve
4914
5135
  }
4915
5136
  )
4916
5137
  ] })
4917
- ] }) : /* @__PURE__ */ jsx14("p", { class: `${p13}-tool-stale-note`, children: strings.stepNoLongerActive })
5138
+ ] }) : (
5139
+ // eslint-disable-next-line unicorn/no-nested-ternary -- decided → none; active → controls; stale → note
5140
+ /* @__PURE__ */ jsx15("p", { class: `${p14}-toolui-note`, children: strings.stepNoLongerActive })
5141
+ )
4918
5142
  ] });
4919
5143
  }
4920
- function summarizeInput(input) {
4921
- if (input == null) return "";
4922
- try {
4923
- const json = typeof input === "string" ? input : JSON.stringify(input, null, 2);
4924
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
4925
- } catch {
4926
- return "";
4927
- }
4928
- }
4929
5144
 
4930
5145
  // src/ui/tool-ask-input.tsx
4931
5146
  import { useComputed as useComputed3 } from "@preact/signals";
@@ -4985,8 +5200,20 @@ function num(v) {
4985
5200
  }
4986
5201
 
4987
5202
  // src/ui/tool-ask-input.tsx
4988
- import { jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
4989
- var p14 = BRAND.cssPrefix;
5203
+ import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5204
+ var p15 = BRAND.cssPrefix;
5205
+ function responseTypeLabel(req, s) {
5206
+ switch (req.responseType) {
5207
+ case "single-choice":
5208
+ return s.respSingleChoice;
5209
+ case "multi-choice":
5210
+ return s.respMultiChoice;
5211
+ case "confirmation":
5212
+ return s.respConfirmation;
5213
+ default:
5214
+ return s.respFreeText;
5215
+ }
5216
+ }
4990
5217
  function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
4991
5218
  const state = useComputed3(() => part.stateSig.value);
4992
5219
  const approval = useComputed3(() => part.approvalSig.value);
@@ -4998,71 +5225,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
4998
5225
  else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
4999
5226
  else onSubmit(part.toolCallId, accepted ? { answer } : {});
5000
5227
  };
5228
+ const req = request.value;
5001
5229
  if (decided) {
5002
- return /* @__PURE__ */ jsx15(DecidedSummary, { part, strings });
5230
+ return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
5003
5231
  }
5004
- if (!active) {
5005
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-stale`, "data-testid": TID.toolAskInput, children: [
5006
- /* @__PURE__ */ jsx15(Header, { strings, title: request.value.title ?? request.value.question }),
5007
- /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-stale-note`, children: strings.stepNoLongerActive })
5008
- ] });
5009
- }
5010
- const req = request.value;
5011
- const isConfirmation = req.responseType === "confirmation";
5012
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input`, "data-testid": TID.toolAskInput, children: [
5013
- /* @__PURE__ */ jsx15(Header, { strings, title: req.title }),
5014
- req.description ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-desc`, children: req.description }) : null,
5015
- isConfirmation ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-question`, children: req.question }) : null,
5016
- isConfirmation ? /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5017
- /* @__PURE__ */ jsx15(
5232
+ const stale = !active;
5233
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui${stale ? ` ${p15}-toolui-stale` : ""}`, "data-testid": TID.toolAskInput, children: [
5234
+ /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
5235
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputRequired }),
5236
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: responseTypeLabel(req, strings) })
5237
+ ] }),
5238
+ req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
5239
+ /* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
5240
+ stale ? /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-note`, children: strings.stepNoLongerActive }) : /* @__PURE__ */ jsx16(AskBody, { req, strings, resolve })
5241
+ ] });
5242
+ }
5243
+ function AskBody({
5244
+ req,
5245
+ strings,
5246
+ resolve
5247
+ }) {
5248
+ if (req.responseType === "confirmation") {
5249
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-form-actions`, children: [
5250
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-form-hint`, children: strings.inputSubmitHint }),
5251
+ /* @__PURE__ */ jsx16(
5018
5252
  "button",
5019
5253
  {
5020
5254
  type: "button",
5021
- class: `${p14}-form-skip`,
5255
+ class: `${p15}-form-skip`,
5022
5256
  onClick: () => resolve(void 0, false),
5023
5257
  "data-testid": TID.toolInputSkip,
5024
5258
  children: strings.reject
5025
5259
  }
5026
5260
  ),
5027
- /* @__PURE__ */ jsx15(
5261
+ /* @__PURE__ */ jsx16(
5028
5262
  "button",
5029
5263
  {
5030
5264
  type: "button",
5031
- class: `${p14}-form-submit`,
5265
+ class: `${p15}-form-submit`,
5032
5266
  onClick: () => resolve(void 0, true),
5033
5267
  "data-testid": TID.toolInputSubmit,
5034
5268
  children: strings.approve
5035
5269
  }
5036
5270
  )
5037
- ] }) : /* @__PURE__ */ jsx15(
5038
- DynamicForm,
5039
- {
5040
- fields: askInputToFields(req),
5041
- strings,
5042
- submitLabel: strings.inputSubmit,
5043
- onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5044
- skipLabel: req.required === false ? strings.inputSkip : void 0,
5045
- onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5046
- submitTestId: TID.toolInputSubmit,
5047
- skipTestId: TID.toolInputSkip
5048
- }
5049
- )
5050
- ] });
5271
+ ] });
5272
+ }
5273
+ const fields = askInputToFields(req).map((f) => {
5274
+ f.label = strings.inputYourAnswer;
5275
+ return f;
5276
+ });
5277
+ return /* @__PURE__ */ jsx16(
5278
+ DynamicForm,
5279
+ {
5280
+ fields,
5281
+ strings,
5282
+ submitLabel: strings.inputSubmit,
5283
+ footerHint: strings.inputSubmitHint,
5284
+ onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5285
+ skipLabel: req.required === false ? strings.inputSkip : void 0,
5286
+ onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5287
+ submitTestId: TID.toolInputSubmit,
5288
+ skipTestId: TID.toolInputSkip
5289
+ }
5290
+ );
5051
5291
  }
5052
- function Header({ strings, title }) {
5053
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-head`, children: [
5054
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-badge`, children: strings.inputRequired }),
5055
- title ? /* @__PURE__ */ jsx15("strong", { class: `${p14}-tool-title`, children: title }) : null
5292
+ function Section({ label, text }) {
5293
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-section`, children: [
5294
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-label`, children: label }),
5295
+ /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-text`, children: text })
5056
5296
  ] });
5057
5297
  }
5058
- function DecidedSummary({ part, strings }) {
5298
+ function DecidedCard({
5299
+ part,
5300
+ strings,
5301
+ req
5302
+ }) {
5059
5303
  const output = useComputed3(() => part.outputSig.value);
5060
5304
  const approval = useComputed3(() => part.approvalSig.value);
5061
- const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5062
5305
  const skipped = approval.value?.approved === false;
5063
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-decided`, "data-testid": TID.toolDecision, children: [
5064
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-label`, children: skipped ? strings.inputSkip : strings.inputSubmitted }),
5065
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-value`, children: skipped ? "" : answer || strings.inputSubmitted })
5306
+ const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5307
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui`, "data-testid": TID.toolDecision, children: [
5308
+ /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
5309
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputBadge }),
5310
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: skipped ? strings.inputSkipped : strings.inputAnswered })
5311
+ ] }),
5312
+ req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
5313
+ /* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
5314
+ !skipped && answer ? /* @__PURE__ */ jsx16(Section, { label: strings.inputResponse, text: answer }) : null
5066
5315
  ] });
5067
5316
  }
5068
5317
  function summarizeOutput(output) {
@@ -5071,6 +5320,7 @@ function summarizeOutput(output) {
5071
5320
  if (typeof output === "object") {
5072
5321
  const rec = output;
5073
5322
  if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
5323
+ if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
5074
5324
  return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
5075
5325
  }
5076
5326
  return String(output);
@@ -5078,52 +5328,30 @@ function summarizeOutput(output) {
5078
5328
 
5079
5329
  // src/ui/tool-call.tsx
5080
5330
  import { useComputed as useComputed4 } from "@preact/signals";
5081
- import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5082
- var p15 = BRAND.cssPrefix;
5083
- function displayToolName2(toolName) {
5084
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
5085
- }
5331
+ import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5332
+ var p16 = BRAND.cssPrefix;
5086
5333
  function ToolCall({ part, strings }) {
5087
- const details = useComputed4(() => pretty(part.inputSig.value));
5088
- const result = useComputed4(() => part.errorSig.value ?? pretty(unwrapResult(part.outputSig.value)));
5089
- const isError = useComputed4(() => !!part.errorSig.value);
5090
- if (!details.value && !result.value) return null;
5091
- return /* @__PURE__ */ jsxs13("details", { class: `${p15}-tool-call`, "data-testid": TID.toolCall, children: [
5092
- /* @__PURE__ */ jsxs13("summary", { class: `${p15}-tool-call-summary`, children: [
5093
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-badge`, children: strings.usedTool }),
5094
- /* @__PURE__ */ jsx16("strong", { class: `${p15}-tool-title`, children: displayToolName2(part.toolName) })
5334
+ const input = useComputed4(() => part.inputSig.value);
5335
+ const output = useComputed4(() => part.outputSig.value);
5336
+ const error = useComputed4(() => part.errorSig.value);
5337
+ const state = useComputed4(() => part.stateSig.value);
5338
+ const approval = useComputed4(() => part.approvalSig.value);
5339
+ const hasDetails = useComputed4(() => !!pretty(input.value) || !!error.value || !!pretty(unwrapResult(output.value)));
5340
+ if (!hasDetails.value) return null;
5341
+ return /* @__PURE__ */ jsxs14("details", { class: `${p16}-toolui ${p16}-toolui-collapsible`, "data-testid": TID.toolCall, children: [
5342
+ /* @__PURE__ */ jsxs14("summary", { class: `${p16}-toolui-head`, children: [
5343
+ /* @__PURE__ */ jsx17("strong", { class: `${p16}-toolui-title`, children: toolName(part.toolName) }),
5344
+ /* @__PURE__ */ jsx17(ToolStatus, { state: state.value, approval: approval.value, strings })
5095
5345
  ] }),
5096
- details.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, children: [
5097
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolDetails }),
5098
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: details.value })
5099
- ] }) : null,
5100
- result.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, "data-error": isError.value ? "true" : void 0, children: [
5101
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolResult }),
5102
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: result.value })
5103
- ] }) : null
5346
+ /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolParameters, value: input.value }),
5347
+ output.value !== void 0 ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolResult, value: output.value }) : null,
5348
+ error.value ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null
5104
5349
  ] });
5105
5350
  }
5106
- function unwrapResult(output) {
5107
- if (output && typeof output === "object") {
5108
- const rec = output;
5109
- if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5110
- }
5111
- return output;
5112
- }
5113
- function pretty(value) {
5114
- if (value == null) return "";
5115
- try {
5116
- const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5117
- if (!json || json === "{}" || json === "[]" || json === '""') return "";
5118
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
5119
- } catch {
5120
- return "";
5121
- }
5122
- }
5123
5351
 
5124
5352
  // src/ui/message-bubble.tsx
5125
- import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5126
- var p16 = BRAND.cssPrefix;
5353
+ import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5354
+ var p17 = BRAND.cssPrefix;
5127
5355
  function MessageBubble({
5128
5356
  message,
5129
5357
  strings,
@@ -5147,9 +5375,9 @@ function MessageBubble({
5147
5375
  const working = streaming && !hasAnswerText.value;
5148
5376
  const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
5149
5377
  const stamp = formatStamp(message.createdAt);
5150
- return /* @__PURE__ */ jsx17("div", { class: `${p16}-bubble-row`, "data-role": message.role, "data-testid": tid(TID.messageBubble, message.id), children: /* @__PURE__ */ jsxs14("div", { class: `${p16}-bubble-col`, children: [
5151
- /* @__PURE__ */ jsxs14("div", { class: `${p16}-bubble`, children: [
5152
- bufferedHold ? /* @__PURE__ */ jsx17(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx17(
5378
+ return /* @__PURE__ */ jsx18("div", { class: `${p17}-bubble-row`, "data-role": message.role, "data-testid": tid(TID.messageBubble, message.id), children: /* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble-col`, children: [
5379
+ /* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble`, children: [
5380
+ bufferedHold ? /* @__PURE__ */ jsx18(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx18(
5153
5381
  PartView,
5154
5382
  {
5155
5383
  part,
@@ -5163,10 +5391,10 @@ function MessageBubble({
5163
5391
  },
5164
5392
  partKey(part)
5165
5393
  )),
5166
- showStreamDots && /* @__PURE__ */ jsx17(TypingDots, {}),
5167
- message.status === "error" && message.errorText ? /* @__PURE__ */ jsx17("div", { class: `${p16}-error`, role: "alert", children: /* @__PURE__ */ jsx17("span", { children: message.errorText }) }) : null
5394
+ showStreamDots && /* @__PURE__ */ jsx18(TypingDots, {}),
5395
+ message.status === "error" && message.errorText ? /* @__PURE__ */ jsx18("div", { class: `${p17}-error`, role: "alert", children: /* @__PURE__ */ jsx18("span", { children: message.errorText }) }) : null
5168
5396
  ] }),
5169
- stamp ? /* @__PURE__ */ jsx17("time", { class: `${p16}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
5397
+ stamp ? /* @__PURE__ */ jsx18("time", { class: `${p17}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
5170
5398
  ] }) });
5171
5399
  }
5172
5400
  function formatStamp(createdAt) {
@@ -5196,11 +5424,11 @@ function PartView({
5196
5424
  case "step-start":
5197
5425
  return null;
5198
5426
  case "text":
5199
- return /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5427
+ return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5200
5428
  case "reasoning":
5201
- return showReasoning ? /* @__PURE__ */ jsx17(ReasoningView, { part, active, strings }) : null;
5429
+ return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
5202
5430
  case "tool":
5203
- return /* @__PURE__ */ jsx17(
5431
+ return /* @__PURE__ */ jsx18(
5204
5432
  ToolPartView,
5205
5433
  {
5206
5434
  part,
@@ -5212,11 +5440,11 @@ function PartView({
5212
5440
  );
5213
5441
  case "file":
5214
5442
  if (part.mediaType.startsWith("image/")) {
5215
- return /* @__PURE__ */ jsx17("img", { src: part.url, alt: "", loading: "lazy" });
5443
+ return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
5216
5444
  }
5217
- return /* @__PURE__ */ jsx17("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
5445
+ return /* @__PURE__ */ jsx18("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
5218
5446
  case "source":
5219
- return showSources ? /* @__PURE__ */ jsx17(SourceView, { part, strings }) : null;
5447
+ return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
5220
5448
  }
5221
5449
  }
5222
5450
  function ToolPartView({
@@ -5229,7 +5457,7 @@ function ToolPartView({
5229
5457
  const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
5230
5458
  if (tool?.humanInLoop) {
5231
5459
  if (isAskUserInputTool(part.toolName)) {
5232
- return /* @__PURE__ */ jsx17(
5460
+ return /* @__PURE__ */ jsx18(
5233
5461
  ToolAskInput,
5234
5462
  {
5235
5463
  part,
@@ -5241,19 +5469,19 @@ function ToolPartView({
5241
5469
  );
5242
5470
  }
5243
5471
  if (hasApproval.value) {
5244
- return /* @__PURE__ */ jsx17(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5472
+ return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5245
5473
  }
5246
5474
  }
5247
- return showToolCalls ? /* @__PURE__ */ jsx17(ToolCall, { part, strings }) : null;
5475
+ return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
5248
5476
  }
5249
5477
  function ReasoningView({
5250
5478
  part,
5251
5479
  active,
5252
5480
  strings
5253
5481
  }) {
5254
- return /* @__PURE__ */ jsxs14("details", { class: `${p16}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5255
- /* @__PURE__ */ jsx17("summary", { class: `${p16}-reasoning-summary`, children: /* @__PURE__ */ jsx17("span", { class: `${p16}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5256
- /* @__PURE__ */ jsx17("div", { class: `${p16}-reasoning-body`, children: /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
5482
+ return /* @__PURE__ */ jsxs15("details", { class: `${p17}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5483
+ /* @__PURE__ */ jsx18("summary", { class: `${p17}-reasoning-summary`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5484
+ /* @__PURE__ */ jsx18("div", { class: `${p17}-reasoning-body`, children: /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
5257
5485
  ] });
5258
5486
  }
5259
5487
  function partKey(part) {
@@ -5271,22 +5499,22 @@ function partKey(part) {
5271
5499
  }
5272
5500
  }
5273
5501
  function TypingDots() {
5274
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-typing`, "aria-hidden": "true", children: [
5275
- /* @__PURE__ */ jsx17("span", {}),
5276
- /* @__PURE__ */ jsx17("span", {}),
5277
- /* @__PURE__ */ jsx17("span", {})
5502
+ return /* @__PURE__ */ jsxs15("span", { class: `${p17}-typing`, "aria-hidden": "true", children: [
5503
+ /* @__PURE__ */ jsx18("span", {}),
5504
+ /* @__PURE__ */ jsx18("span", {}),
5505
+ /* @__PURE__ */ jsx18("span", {})
5278
5506
  ] });
5279
5507
  }
5280
5508
  function LoadingSpinner({ label }) {
5281
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-loading`, role: "status", children: [
5282
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-spinner`, "aria-hidden": "true" }),
5283
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-label`, children: label })
5509
+ return /* @__PURE__ */ jsxs15("span", { class: `${p17}-loading`, role: "status", children: [
5510
+ /* @__PURE__ */ jsx18("span", { class: `${p17}-loading-spinner`, "aria-hidden": "true" }),
5511
+ /* @__PURE__ */ jsx18("span", { class: `${p17}-loading-label`, children: label })
5284
5512
  ] });
5285
5513
  }
5286
5514
 
5287
5515
  // src/ui/message-list.tsx
5288
- import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5289
- var p17 = BRAND.cssPrefix;
5516
+ import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5517
+ var p18 = BRAND.cssPrefix;
5290
5518
  var STICK_THRESHOLD = 120;
5291
5519
  var INTERACTION_GRACE_MS = 350;
5292
5520
  var DIVIDER_IDLE_MS = 1200;
@@ -5457,7 +5685,7 @@ function MessageList({
5457
5685
  const pendingMarkers = [...formMarkers ?? []].toSorted(
5458
5686
  (a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
5459
5687
  );
5460
- const markerRow = (marker) => /* @__PURE__ */ jsx18(
5688
+ const markerRow = (marker) => /* @__PURE__ */ jsx19(
5461
5689
  FormDoneMarker,
5462
5690
  {
5463
5691
  marker,
@@ -5478,12 +5706,12 @@ function MessageList({
5478
5706
  const day = dayKey(m.createdAt);
5479
5707
  if (day && day !== prevDay) {
5480
5708
  rows.push(
5481
- /* @__PURE__ */ jsx18("div", { class: `${p17}-date-divider`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-date-pill`, title: fullDate(m.createdAt), children: dayLabel(m.createdAt, strings) }) }, `day:${day}`)
5709
+ /* @__PURE__ */ jsx19("div", { class: `${p18}-date-divider`, children: /* @__PURE__ */ jsx19("span", { class: `${p18}-date-pill`, title: fullDate(m.createdAt), children: dayLabel(m.createdAt, strings) }) }, `day:${day}`)
5482
5710
  );
5483
5711
  prevDay = day;
5484
5712
  }
5485
5713
  rows.push(
5486
- /* @__PURE__ */ jsx18(
5714
+ /* @__PURE__ */ jsx19(
5487
5715
  MessageBubble,
5488
5716
  {
5489
5717
  message: m,
@@ -5502,33 +5730,33 @@ function MessageList({
5502
5730
  for (const marker of pendingMarkers) {
5503
5731
  rows.push(markerRow(marker));
5504
5732
  }
5505
- return /* @__PURE__ */ jsxs15("div", { class: `${p17}-list-wrap`, children: [
5506
- /* @__PURE__ */ jsxs15(
5733
+ return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
5734
+ /* @__PURE__ */ jsxs16(
5507
5735
  "div",
5508
5736
  {
5509
5737
  ref,
5510
- class: `${p17}-list`,
5738
+ class: `${p18}-list`,
5511
5739
  role: "log",
5512
5740
  "aria-live": "polite",
5513
5741
  "aria-relevant": "additions text",
5514
5742
  "data-scrolling": scrolling ? "true" : void 0,
5515
5743
  children: [
5516
- loading && messages.value.length === 0 ? /* @__PURE__ */ jsx18("div", { class: `${p17}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
5744
+ loading && messages.value.length === 0 ? /* @__PURE__ */ jsx19("div", { class: `${p18}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
5517
5745
  rows,
5518
- form ? /* @__PURE__ */ jsx18(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
5746
+ form ? /* @__PURE__ */ jsx19(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
5519
5747
  ]
5520
5748
  }
5521
5749
  ),
5522
- showJump ? /* @__PURE__ */ jsx18(
5750
+ showJump ? /* @__PURE__ */ jsx19(
5523
5751
  "button",
5524
5752
  {
5525
5753
  type: "button",
5526
- class: `${p17}-jump`,
5754
+ class: `${p18}-jump`,
5527
5755
  onClick: jumpToBottom,
5528
5756
  "aria-label": strings.scrollToBottom,
5529
5757
  title: strings.scrollToBottom,
5530
5758
  "data-testid": TID.scrollToBottom,
5531
- children: /* @__PURE__ */ jsx18(ChevronDownIcon, {})
5759
+ children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
5532
5760
  }
5533
5761
  ) : null
5534
5762
  ] });
@@ -5587,7 +5815,7 @@ function startOfDay(ms) {
5587
5815
  }
5588
5816
 
5589
5817
  // src/ui/conversation-list.tsx
5590
- import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5818
+ import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs17 } from "preact/jsx-runtime";
5591
5819
  var log11 = logger.scope("history");
5592
5820
  var DEFAULT_SKELETON_ROWS = 3;
5593
5821
  var MAX_SKELETON_ROWS = 6;
@@ -5614,7 +5842,7 @@ function ConversationList({
5614
5842
  onSelect,
5615
5843
  onNewConversation
5616
5844
  }) {
5617
- const p35 = BRAND.cssPrefix;
5845
+ const p36 = BRAND.cssPrefix;
5618
5846
  const seed = transport.peekConversations({ visitorId });
5619
5847
  const [state, setState] = useState7(seed ? "loaded" : "loading");
5620
5848
  const [conversations, setChats] = useState7(seed?.conversations ?? []);
@@ -5635,32 +5863,32 @@ function ConversationList({
5635
5863
  cancelled = true;
5636
5864
  };
5637
5865
  }, [transport, visitorId, persistence]);
5638
- const newChatButton = onNewConversation ? /* @__PURE__ */ jsx19("div", { class: `${p35}-history-footer`, children: /* @__PURE__ */ jsxs16(
5866
+ const newChatButton = onNewConversation ? /* @__PURE__ */ jsx20("div", { class: `${p36}-history-footer`, children: /* @__PURE__ */ jsxs17(
5639
5867
  "button",
5640
5868
  {
5641
5869
  type: "button",
5642
- class: `${p35}-history-new`,
5870
+ class: `${p36}-history-new`,
5643
5871
  onClick: onNewConversation,
5644
5872
  "data-testid": TID.sidebarNewConversation,
5645
5873
  children: [
5646
- /* @__PURE__ */ jsx19(PlusIcon, {}),
5874
+ /* @__PURE__ */ jsx20(PlusIcon, {}),
5647
5875
  strings.newConversation
5648
5876
  ]
5649
5877
  }
5650
5878
  ) }) : null;
5651
5879
  if (state === "loading") {
5652
5880
  const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
5653
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5654
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history`, "aria-busy": "true", "aria-label": strings.historyLoading, children: /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-group`, "aria-hidden": "true", children: [
5655
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-heading` }) }),
5656
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-card`, children: Array.from({ length: Math.max(1, rows) }, (_, i) => /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-item ${p35}-history-item-skeleton`, children: [
5657
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar ${p35}-skeleton` }),
5658
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5659
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5660
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-title` }) }),
5661
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-time`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-time` }) })
5881
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5882
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history`, "aria-busy": "true", "aria-label": strings.historyLoading, children: /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, "aria-hidden": "true", children: [
5883
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-heading` }) }),
5884
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: Array.from({ length: Math.max(1, rows) }, (_, i) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-item ${p36}-history-item-skeleton`, children: [
5885
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar ${p36}-skeleton` }),
5886
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
5887
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5888
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-title` }) }),
5889
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-time` }) })
5662
5890
  ] }),
5663
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-row`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-history-preview`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-preview` }) }) })
5891
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-row`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-preview` }) }) })
5664
5892
  ] })
5665
5893
  ] }, i)) })
5666
5894
  ] }) }),
@@ -5668,36 +5896,36 @@ function ConversationList({
5668
5896
  ] });
5669
5897
  }
5670
5898
  if (state === "error" || conversations.length === 0) {
5671
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5672
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-empty`, children: strings.historyEmpty }),
5899
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5900
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-empty`, children: strings.historyEmpty }),
5673
5901
  newChatButton
5674
5902
  ] });
5675
5903
  }
5676
5904
  const now = Date.now();
5677
5905
  const groups = groupByBucket(now, conversations);
5678
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5679
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-group`, children: [
5680
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5681
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs16(
5906
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5907
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, children: [
5908
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5909
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs17(
5682
5910
  "button",
5683
5911
  {
5684
5912
  type: "button",
5685
5913
  role: "listitem",
5686
- class: `${p35}-history-item`,
5914
+ class: `${p36}-history-item`,
5687
5915
  onClick: () => onSelect(chat),
5688
5916
  "data-closed": chat.canContinue ? void 0 : "true",
5689
5917
  "data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
5690
5918
  "data-testid": tid(TID.historyItem, chat.conversationId),
5691
5919
  children: [
5692
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx19(MessageIcon, {}) }),
5693
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5694
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5695
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: chat.title }),
5696
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
5920
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx20(MessageIcon, {}) }),
5921
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
5922
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5923
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: chat.title }),
5924
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
5697
5925
  ] }),
5698
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5699
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5700
- (chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx19("span", { class: `${p35}-history-dot` }) : null
5926
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5927
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5928
+ (chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx20("span", { class: `${p36}-history-dot` }) : null
5701
5929
  ] })
5702
5930
  ] })
5703
5931
  ]
@@ -5710,15 +5938,15 @@ function ConversationList({
5710
5938
  }
5711
5939
 
5712
5940
  // src/ui/suggestions.tsx
5713
- import { jsx as jsx20 } from "preact/jsx-runtime";
5714
- var p18 = BRAND.cssPrefix;
5941
+ import { jsx as jsx21 } from "preact/jsx-runtime";
5942
+ var p19 = BRAND.cssPrefix;
5715
5943
  function Suggestions({ suggestions, onPick }) {
5716
5944
  if (suggestions.length === 0) return null;
5717
- return /* @__PURE__ */ jsx20("div", { class: `${p18}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx20(
5945
+ return /* @__PURE__ */ jsx21("div", { class: `${p19}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx21(
5718
5946
  "button",
5719
5947
  {
5720
5948
  type: "button",
5721
- class: `${p18}-suggestion`,
5949
+ class: `${p19}-suggestion`,
5722
5950
  onClick: () => onPick(s),
5723
5951
  "data-testid": tid(TID.suggestion, i),
5724
5952
  children: s.label
@@ -5728,8 +5956,8 @@ function Suggestions({ suggestions, onPick }) {
5728
5956
  }
5729
5957
 
5730
5958
  // src/ui/panel.tsx
5731
- import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs17 } from "preact/jsx-runtime";
5732
- var p19 = BRAND.cssPrefix;
5959
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
5960
+ var p20 = BRAND.cssPrefix;
5733
5961
  function Panel(props2) {
5734
5962
  const { options, onClose } = props2;
5735
5963
  const s = options.strings;
@@ -5753,18 +5981,18 @@ function Panel(props2) {
5753
5981
  }, []);
5754
5982
  const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
5755
5983
  useDragMove(containerRef.current, options.mode === "modal");
5756
- return /* @__PURE__ */ jsxs17(
5984
+ return /* @__PURE__ */ jsxs18(
5757
5985
  "div",
5758
5986
  {
5759
5987
  ref: containerRef,
5760
- class: `${p19}-panel`,
5988
+ class: `${p20}-panel`,
5761
5989
  role: "dialog",
5762
5990
  "aria-modal": "false",
5763
5991
  "aria-label": s.panelTitle,
5764
5992
  style: { position: "relative" },
5765
5993
  "data-testid": TID.panel,
5766
5994
  children: [
5767
- /* @__PURE__ */ jsx21(
5995
+ /* @__PURE__ */ jsx22(
5768
5996
  PanelContent,
5769
5997
  {
5770
5998
  ...props2,
@@ -5773,7 +6001,7 @@ function Panel(props2) {
5773
6001
  composerAttachApiRef
5774
6002
  }
5775
6003
  ),
5776
- /* @__PURE__ */ jsx21(PoweredByBar, { poweredBy: props2.options.poweredBy })
6004
+ /* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
5777
6005
  ]
5778
6006
  }
5779
6007
  );
@@ -5820,9 +6048,9 @@ function PanelContent(props2) {
5820
6048
  if (activeForm) {
5821
6049
  composerArea = null;
5822
6050
  } else if (canSend) {
5823
- composerArea = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5824
- /* @__PURE__ */ jsx21(Suggestions, { suggestions, onPick: onSuggestion }),
5825
- /* @__PURE__ */ jsx21(
6051
+ composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6052
+ /* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
6053
+ /* @__PURE__ */ jsx22(
5826
6054
  Composer,
5827
6055
  {
5828
6056
  options,
@@ -5837,10 +6065,10 @@ function PanelContent(props2) {
5837
6065
  )
5838
6066
  ] });
5839
6067
  } else {
5840
- composerArea = /* @__PURE__ */ jsx21(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
6068
+ composerArea = /* @__PURE__ */ jsx22(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
5841
6069
  }
5842
- return /* @__PURE__ */ jsxs17(Fragment4, { children: [
5843
- view === "history" ? /* @__PURE__ */ jsx21(
6070
+ return /* @__PURE__ */ jsxs18(Fragment4, { children: [
6071
+ view === "history" ? /* @__PURE__ */ jsx22(
5844
6072
  HistoryHeader,
5845
6073
  {
5846
6074
  strings: s,
@@ -5848,22 +6076,22 @@ function PanelContent(props2) {
5848
6076
  onClose,
5849
6077
  showClose: canShowClose(options.mode, panelSize, options.actions)
5850
6078
  }
5851
- ) : /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, "data-testid": TID.panelHeader, children: [
5852
- onBack ? /* @__PURE__ */ jsx21(
6079
+ ) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
6080
+ onBack ? /* @__PURE__ */ jsx22(
5853
6081
  "button",
5854
6082
  {
5855
6083
  type: "button",
5856
- class: `${p19}-icon-btn`,
6084
+ class: `${p20}-icon-btn`,
5857
6085
  onClick: onBack,
5858
6086
  "aria-label": s.moduleBack,
5859
6087
  title: s.moduleBack,
5860
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6088
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5861
6089
  }
5862
6090
  ) : null,
5863
- agent ? /* @__PURE__ */ jsx21(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx21("h1", { children: s.panelTitle }),
5864
- /* @__PURE__ */ jsx21(HeaderActions, { panelProps: props2, variant: "chat" })
6091
+ agent ? /* @__PURE__ */ jsx22(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx22("h1", { children: s.panelTitle }),
6092
+ /* @__PURE__ */ jsx22(HeaderActions, { panelProps: props2, variant: "chat" })
5865
6093
  ] }),
5866
- view === "history" ? /* @__PURE__ */ jsx21(
6094
+ view === "history" ? /* @__PURE__ */ jsx22(
5867
6095
  ConversationList,
5868
6096
  {
5869
6097
  transport,
@@ -5874,9 +6102,9 @@ function PanelContent(props2) {
5874
6102
  onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
5875
6103
  onNewConversation
5876
6104
  }
5877
- ) : /* @__PURE__ */ jsxs17(Fragment4, { children: [
5878
- /* @__PURE__ */ jsx21(DropZone, { visible: dragOver, strings: s }),
5879
- /* @__PURE__ */ jsx21(
6105
+ ) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
6106
+ /* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
6107
+ /* @__PURE__ */ jsx22(
5880
6108
  MessageList,
5881
6109
  {
5882
6110
  messagesSig,
@@ -5894,9 +6122,9 @@ function PanelContent(props2) {
5894
6122
  }
5895
6123
  ),
5896
6124
  composerArea,
5897
- /* @__PURE__ */ jsx21(ComposerFooter, { disclaimer: options.composerDisclaimer })
6125
+ /* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
5898
6126
  ] }),
5899
- options.size.resize?.enabled ? /* @__PURE__ */ jsx21(
6127
+ options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
5900
6128
  ResizeGrip,
5901
6129
  {
5902
6130
  panelEl: containerEl,
@@ -5915,28 +6143,28 @@ function HistoryHeader({
5915
6143
  onClose,
5916
6144
  showClose
5917
6145
  }) {
5918
- return /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, children: [
5919
- /* @__PURE__ */ jsx21(
6146
+ return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
6147
+ /* @__PURE__ */ jsx22(
5920
6148
  "button",
5921
6149
  {
5922
6150
  type: "button",
5923
- class: `${p19}-icon-btn`,
6151
+ class: `${p20}-icon-btn`,
5924
6152
  onClick: onBack,
5925
6153
  "aria-label": strings.historyBack,
5926
6154
  title: strings.historyBack,
5927
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6155
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5928
6156
  }
5929
6157
  ),
5930
- /* @__PURE__ */ jsx21("h1", { children: strings.historyTitle }),
5931
- showClose ? /* @__PURE__ */ jsx21(
6158
+ /* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
6159
+ showClose ? /* @__PURE__ */ jsx22(
5932
6160
  "button",
5933
6161
  {
5934
6162
  type: "button",
5935
- class: `${p19}-icon-btn`,
6163
+ class: `${p20}-icon-btn`,
5936
6164
  onClick: onClose,
5937
6165
  "aria-label": strings.close,
5938
6166
  title: strings.close,
5939
- children: /* @__PURE__ */ jsx21(CloseIcon, {})
6167
+ children: /* @__PURE__ */ jsx22(CloseIcon, {})
5940
6168
  }
5941
6169
  ) : null
5942
6170
  ] });
@@ -5946,28 +6174,28 @@ function ReadOnlyBanner({
5946
6174
  ctaLabel,
5947
6175
  onNewConversation
5948
6176
  }) {
5949
- return /* @__PURE__ */ jsxs17("div", { class: `${p19}-readonly-banner`, role: "note", children: [
5950
- /* @__PURE__ */ jsx21("span", { class: `${p19}-readonly-label`, children: label }),
5951
- /* @__PURE__ */ jsx21("button", { type: "button", class: `${p19}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
6177
+ return /* @__PURE__ */ jsxs18("div", { class: `${p20}-readonly-banner`, role: "note", children: [
6178
+ /* @__PURE__ */ jsx22("span", { class: `${p20}-readonly-label`, children: label }),
6179
+ /* @__PURE__ */ jsx22("button", { type: "button", class: `${p20}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
5952
6180
  ] });
5953
6181
  }
5954
6182
  function ComposerFooter({ disclaimer }) {
5955
6183
  if (!disclaimer) return null;
5956
- return /* @__PURE__ */ jsx21("div", { class: `${p19}-composer-footer`, children: /* @__PURE__ */ jsx21("div", { class: `${p19}-disclaimer`, children: disclaimer }) });
6184
+ return /* @__PURE__ */ jsx22("div", { class: `${p20}-composer-footer`, children: /* @__PURE__ */ jsx22("div", { class: `${p20}-disclaimer`, children: disclaimer }) });
5957
6185
  }
5958
6186
  function PoweredByBar({ poweredBy }) {
5959
6187
  if (!poweredBy) return null;
5960
- return /* @__PURE__ */ jsx21("div", { class: `${p19}-poweredby-bar`, children: /* @__PURE__ */ jsx21(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
6188
+ return /* @__PURE__ */ jsx22("div", { class: `${p20}-poweredby-bar`, children: /* @__PURE__ */ jsx22(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
5961
6189
  }
5962
6190
  function PoweredBy({ logoUrl, text, href }) {
5963
- const inner = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5964
- logoUrl ? /* @__PURE__ */ jsx21("img", { class: `${p19}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
5965
- text ? /* @__PURE__ */ jsx21("span", { children: text }) : null
6191
+ const inner = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6192
+ logoUrl ? /* @__PURE__ */ jsx22("img", { class: `${p20}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
6193
+ text ? /* @__PURE__ */ jsx22("span", { children: text }) : null
5966
6194
  ] });
5967
6195
  if (href) {
5968
- return /* @__PURE__ */ jsx21("a", { class: `${p19}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
6196
+ return /* @__PURE__ */ jsx22("a", { class: `${p20}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
5969
6197
  }
5970
- return /* @__PURE__ */ jsx21("span", { class: `${p19}-poweredby`, children: inner });
6198
+ return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
5971
6199
  }
5972
6200
 
5973
6201
  // src/ui/form/form-controller.ts
@@ -6050,34 +6278,34 @@ function whenPasses(form, d) {
6050
6278
  }
6051
6279
 
6052
6280
  // src/ui/sidebar.tsx
6053
- import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
6281
+ import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6054
6282
  function Sidebar(props2) {
6055
- const p35 = BRAND.cssPrefix;
6283
+ const p36 = BRAND.cssPrefix;
6056
6284
  const { site, blocks, strings, collapsed } = props2;
6057
6285
  const navigation = blocks?.navigation ?? [];
6058
6286
  const linkCards = blocks?.linkCards ?? [];
6059
6287
  const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
6060
- return /* @__PURE__ */ jsxs18("aside", { class: `${p35}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6061
- /* @__PURE__ */ jsxs18("div", { class: `${p35}-sidebar-header`, children: [
6062
- /* @__PURE__ */ jsx22(SidebarBrand, { site }),
6063
- /* @__PURE__ */ jsx22(
6288
+ return /* @__PURE__ */ jsxs19("aside", { class: `${p36}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6289
+ /* @__PURE__ */ jsxs19("div", { class: `${p36}-sidebar-header`, children: [
6290
+ /* @__PURE__ */ jsx23(SidebarBrand, { site }),
6291
+ /* @__PURE__ */ jsx23(
6064
6292
  "button",
6065
6293
  {
6066
6294
  type: "button",
6067
- class: `${p35}-sidebar-toggle`,
6295
+ class: `${p36}-sidebar-toggle`,
6068
6296
  "aria-label": toggleLabel,
6069
6297
  "aria-expanded": collapsed ? "false" : "true",
6070
6298
  title: toggleLabel,
6071
6299
  onClick: props2.onToggleCollapsed,
6072
6300
  "data-testid": TID.sidebarToggle,
6073
- children: /* @__PURE__ */ jsx22(SidebarToggleIcon, { collapsed })
6301
+ children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
6074
6302
  }
6075
6303
  )
6076
6304
  ] }),
6077
- collapsed ? null : /* @__PURE__ */ jsxs18(Fragment5, { children: [
6078
- navigation.length > 0 ? /* @__PURE__ */ jsx22("nav", { class: `${p35}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx22(SidebarNav, { items: navigation }) }) : null,
6079
- linkCards.length > 0 ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx22(SidebarCards, { items: linkCards }) }) : null,
6080
- props2.showConversations ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-conversations`, children: /* @__PURE__ */ jsx22(
6305
+ collapsed ? null : /* @__PURE__ */ jsxs19(Fragment5, { children: [
6306
+ navigation.length > 0 ? /* @__PURE__ */ jsx23("nav", { class: `${p36}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx23(SidebarNav, { items: navigation }) }) : null,
6307
+ linkCards.length > 0 ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx23(SidebarCards, { items: linkCards }) }) : null,
6308
+ props2.showConversations ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-conversations`, children: /* @__PURE__ */ jsx23(
6081
6309
  ConversationList,
6082
6310
  {
6083
6311
  transport: props2.transport,
@@ -6093,18 +6321,18 @@ function Sidebar(props2) {
6093
6321
  ] });
6094
6322
  }
6095
6323
  function SidebarBrand({ site }) {
6096
- const p35 = BRAND.cssPrefix;
6324
+ const p36 = BRAND.cssPrefix;
6097
6325
  if (site?.logo?.url) {
6098
6326
  const alt = site.logo.alt ?? site.title ?? "Logo";
6099
- return /* @__PURE__ */ jsxs18("picture", { children: [
6100
- site.logoDark?.url ? /* @__PURE__ */ jsx22("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6101
- /* @__PURE__ */ jsx22("img", { class: `${p35}-sidebar-logo`, src: site.logo.url, alt })
6327
+ return /* @__PURE__ */ jsxs19("picture", { children: [
6328
+ site.logoDark?.url ? /* @__PURE__ */ jsx23("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6329
+ /* @__PURE__ */ jsx23("img", { class: `${p36}-sidebar-logo`, src: site.logo.url, alt })
6102
6330
  ] });
6103
6331
  }
6104
- return /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-title`, children: site?.title ?? BRAND.name });
6332
+ return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-title`, children: site?.title ?? BRAND.name });
6105
6333
  }
6106
6334
  function SidebarToggleIcon({ collapsed }) {
6107
- return /* @__PURE__ */ jsx22(
6335
+ return /* @__PURE__ */ jsx23(
6108
6336
  "svg",
6109
6337
  {
6110
6338
  width: "16",
@@ -6114,38 +6342,38 @@ function SidebarToggleIcon({ collapsed }) {
6114
6342
  stroke: "currentColor",
6115
6343
  "stroke-width": "2",
6116
6344
  "aria-hidden": "true",
6117
- children: collapsed ? /* @__PURE__ */ jsx22("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx22("polyline", { points: "15 6 9 12 15 18" })
6345
+ children: collapsed ? /* @__PURE__ */ jsx23("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx23("polyline", { points: "15 6 9 12 15 18" })
6118
6346
  }
6119
6347
  );
6120
6348
  }
6121
6349
  function SidebarNav({ items }) {
6122
- const p35 = BRAND.cssPrefix;
6123
- return /* @__PURE__ */ jsx22("ul", { class: `${p35}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx22("li", { children: /* @__PURE__ */ jsxs18(
6350
+ const p36 = BRAND.cssPrefix;
6351
+ return /* @__PURE__ */ jsx23("ul", { class: `${p36}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsxs19(
6124
6352
  "a",
6125
6353
  {
6126
- class: `${p35}-sidebar-nav-item`,
6354
+ class: `${p36}-sidebar-nav-item`,
6127
6355
  href: item.href,
6128
6356
  target: item.href ? "_blank" : void 0,
6129
6357
  rel: item.href ? "noreferrer" : void 0,
6130
6358
  children: [
6131
- item.icon ? /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6132
- /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-label`, children: item.label })
6359
+ item.icon ? /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6360
+ /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-label`, children: item.label })
6133
6361
  ]
6134
6362
  }
6135
6363
  ) }, item.id ?? item.label)) });
6136
6364
  }
6137
6365
  function SidebarCards({ items }) {
6138
- const p35 = BRAND.cssPrefix;
6139
- return /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs18(
6366
+ const p36 = BRAND.cssPrefix;
6367
+ return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs19(
6140
6368
  "a",
6141
6369
  {
6142
- class: `${p35}-sidebar-card`,
6370
+ class: `${p36}-sidebar-card`,
6143
6371
  href: item.href,
6144
6372
  target: item.href ? "_blank" : void 0,
6145
6373
  rel: item.href ? "noreferrer" : void 0,
6146
6374
  children: [
6147
- /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-label`, children: item.label }),
6148
- item.description ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-desc`, children: item.description }) : null
6375
+ /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-label`, children: item.label }),
6376
+ item.description ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-desc`, children: item.description }) : null
6149
6377
  ]
6150
6378
  },
6151
6379
  item.id ?? item.label
@@ -6153,11 +6381,11 @@ function SidebarCards({ items }) {
6153
6381
  }
6154
6382
 
6155
6383
  // src/ui/page-shell.tsx
6156
- import { jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6157
- var p20 = BRAND.cssPrefix;
6384
+ import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6385
+ var p21 = BRAND.cssPrefix;
6158
6386
  function PageShell(props2) {
6159
- return /* @__PURE__ */ jsxs19("main", { class: `${p20}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6160
- /* @__PURE__ */ jsx23(
6387
+ return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6388
+ /* @__PURE__ */ jsx24(
6161
6389
  Sidebar,
6162
6390
  {
6163
6391
  site: props2.site,
@@ -6174,7 +6402,7 @@ function PageShell(props2) {
6174
6402
  onToggleCollapsed: props2.onToggleSidebarCollapsed
6175
6403
  }
6176
6404
  ),
6177
- /* @__PURE__ */ jsx23("section", { class: `${p20}-page-chat`, "aria-label": "Chat", children: props2.children })
6405
+ /* @__PURE__ */ jsx24("section", { class: `${p21}-page-chat`, "aria-label": "Chat", children: props2.children })
6178
6406
  ] });
6179
6407
  }
6180
6408
 
@@ -6224,80 +6452,80 @@ var chatLayout = {
6224
6452
  import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
6225
6453
 
6226
6454
  // src/ui/back-header.tsx
6227
- import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6228
- var p21 = BRAND.cssPrefix;
6455
+ import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6456
+ var p22 = BRAND.cssPrefix;
6229
6457
  function TitleBar({ title, actions }) {
6230
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-variant": "title", children: [
6231
- /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" }),
6232
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6233
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" })
6458
+ return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-variant": "title", children: [
6459
+ /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" }),
6460
+ /* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
6461
+ actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
6234
6462
  ] });
6235
6463
  }
6236
6464
  function BackHeader({ title, backLabel, onBack, actions, testid }) {
6237
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-testid": testid, children: [
6238
- /* @__PURE__ */ jsx24("button", { type: "button", class: `${p21}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx24(BackIcon, {}) }),
6239
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6240
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" })
6465
+ return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-testid": testid, children: [
6466
+ /* @__PURE__ */ jsx25("button", { type: "button", class: `${p22}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx25(BackIcon, {}) }),
6467
+ /* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
6468
+ actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
6241
6469
  ] });
6242
6470
  }
6243
6471
 
6244
6472
  // src/ui/home-search.tsx
6245
- import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6246
- var p22 = BRAND.cssPrefix;
6473
+ import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6474
+ var p23 = BRAND.cssPrefix;
6247
6475
  function HomeSearchButton({ placeholder, onActivate }) {
6248
- return /* @__PURE__ */ jsxs21("button", { type: "button", class: `${p22}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6249
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-text`, children: placeholder }),
6250
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
6476
+ return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6477
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-text`, children: placeholder }),
6478
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
6251
6479
  ] });
6252
6480
  }
6253
6481
  function HelpSearchInput({ placeholder, value, onInput }) {
6254
- return /* @__PURE__ */ jsxs21("div", { class: `${p22}-home-search`, "data-input": "true", children: [
6255
- /* @__PURE__ */ jsx25(
6482
+ return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
6483
+ /* @__PURE__ */ jsx26(
6256
6484
  "input",
6257
6485
  {
6258
6486
  type: "search",
6259
- class: `${p22}-home-search-input`,
6487
+ class: `${p23}-home-search-input`,
6260
6488
  placeholder,
6261
6489
  value,
6262
6490
  onInput: (e) => onInput(e.currentTarget.value),
6263
6491
  "data-testid": TID.helpSearch
6264
6492
  }
6265
6493
  ),
6266
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
6494
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
6267
6495
  ] });
6268
6496
  }
6269
6497
 
6270
6498
  // src/ui/list-row.tsx
6271
- import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6272
- var p23 = BRAND.cssPrefix;
6499
+ import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6500
+ var p24 = BRAND.cssPrefix;
6273
6501
  function ListRow({ title, subtitle, onClick, testid }) {
6274
- return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-list-row`, onClick, "data-testid": testid, children: [
6275
- /* @__PURE__ */ jsxs22("span", { class: `${p23}-list-row-body`, children: [
6276
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-title`, children: title }),
6277
- subtitle ? /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-sub`, children: subtitle }) : null
6502
+ return /* @__PURE__ */ jsxs23("button", { type: "button", class: `${p24}-list-row`, onClick, "data-testid": testid, children: [
6503
+ /* @__PURE__ */ jsxs23("span", { class: `${p24}-list-row-body`, children: [
6504
+ /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-title`, children: title }),
6505
+ subtitle ? /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-sub`, children: subtitle }) : null
6278
6506
  ] }),
6279
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(ChevronRightIcon, {}) })
6507
+ /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx27(ChevronRightIcon, {}) })
6280
6508
  ] });
6281
6509
  }
6282
6510
 
6283
6511
  // src/ui/module-state.tsx
6284
- import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6285
- var p24 = BRAND.cssPrefix;
6512
+ import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6513
+ var p25 = BRAND.cssPrefix;
6286
6514
  function ModuleState({
6287
6515
  tone = "info",
6288
6516
  message,
6289
6517
  onRetry,
6290
6518
  strings
6291
6519
  }) {
6292
- return /* @__PURE__ */ jsxs23("div", { class: `${p24}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6293
- /* @__PURE__ */ jsx27("span", { children: message }),
6294
- onRetry ? /* @__PURE__ */ jsx27("button", { type: "button", class: `${p24}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
6520
+ return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6521
+ /* @__PURE__ */ jsx28("span", { children: message }),
6522
+ onRetry ? /* @__PURE__ */ jsx28("button", { type: "button", class: `${p25}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
6295
6523
  ] });
6296
6524
  }
6297
6525
 
6298
6526
  // src/ui/modules/help.tsx
6299
- import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6300
- var p25 = BRAND.cssPrefix;
6527
+ import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
6528
+ var p26 = BRAND.cssPrefix;
6301
6529
  var log12 = logger.scope("help");
6302
6530
  var openArticle = (nav, a) => a.url ? nav.push({ kind: "iframe", url: a.url, title: a.title }) : nav.push({ kind: "content", id: a.id, title: a.title });
6303
6531
  function groupByCategory(items) {
@@ -6326,7 +6554,7 @@ function fuzzySearch(items, query) {
6326
6554
  return items.map((item) => ({ item, score: Math.max(fuzzyScore(q, item.title) * 2, fuzzyScore(q, item.description ?? "")) })).filter((r) => r.score > 0).toSorted((a, b) => b.score - a.score).map((r) => r.item);
6327
6555
  }
6328
6556
  function ArticleRow({ article, nav }) {
6329
- return /* @__PURE__ */ jsx28(
6557
+ return /* @__PURE__ */ jsx29(
6330
6558
  ListRow,
6331
6559
  {
6332
6560
  title: article.title,
@@ -6371,46 +6599,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
6371
6599
  }, [query, results, bus]);
6372
6600
  function renderBody() {
6373
6601
  if (query.trim().length > 0) {
6374
- if (results.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpSearchEmpty, strings });
6375
- return /* @__PURE__ */ jsx28("div", { class: `${p25}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) });
6602
+ if (results.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpSearchEmpty, strings });
6603
+ return /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) });
6376
6604
  }
6377
- if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpLoading, strings });
6605
+ if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
6378
6606
  if (state === "error") {
6379
- return /* @__PURE__ */ jsx28(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6607
+ return /* @__PURE__ */ jsx29(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6380
6608
  }
6381
- if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpEmpty, strings });
6382
- return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs24("section", { class: `${p25}-help-group`, children: [
6383
- category ? /* @__PURE__ */ jsx28("h2", { class: `${p25}-help-section-title`, children: category }) : null,
6384
- /* @__PURE__ */ jsx28("div", { class: `${p25}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) })
6609
+ if (items.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpEmpty, strings });
6610
+ return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs25("section", { class: `${p26}-help-group`, children: [
6611
+ category ? /* @__PURE__ */ jsx29("h2", { class: `${p26}-help-section-title`, children: category }) : null,
6612
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) })
6385
6613
  ] }, category));
6386
6614
  }
6387
- return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module`, children: [
6388
- /* @__PURE__ */ jsx28(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx28(HeaderActions, { panelProps, variant: "plain" }) }),
6389
- /* @__PURE__ */ jsx28("div", { class: `${p25}-module-pad`, children: /* @__PURE__ */ jsx28(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6390
- /* @__PURE__ */ jsx28("div", { class: `${p25}-help-list`, children: renderBody() })
6615
+ return /* @__PURE__ */ jsxs25("div", { class: `${p26}-module`, children: [
6616
+ /* @__PURE__ */ jsx29(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx29(HeaderActions, { panelProps, variant: "plain" }) }),
6617
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-module-pad`, children: /* @__PURE__ */ jsx29(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6618
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-help-list`, children: renderBody() })
6391
6619
  ] });
6392
6620
  }
6393
6621
  var helpLayout = {
6394
6622
  Icon: HelpIcon,
6395
- Root: (props2) => /* @__PURE__ */ jsx28(HelpRoot, { ...props2 })
6623
+ Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
6396
6624
  };
6397
6625
 
6398
6626
  // src/ui/modules/home.tsx
6399
6627
  import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
6400
6628
 
6401
6629
  // src/ui/home-card.tsx
6402
- import { jsx as jsx29 } from "preact/jsx-runtime";
6403
- var p26 = BRAND.cssPrefix;
6630
+ import { jsx as jsx30 } from "preact/jsx-runtime";
6631
+ var p27 = BRAND.cssPrefix;
6404
6632
  function HomeCard({ onClick, children, testid }) {
6405
6633
  if (onClick) {
6406
- return /* @__PURE__ */ jsx29("button", { type: "button", class: `${p26}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
6634
+ return /* @__PURE__ */ jsx30("button", { type: "button", class: `${p27}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
6407
6635
  }
6408
- return /* @__PURE__ */ jsx29("div", { class: `${p26}-home-card`, "data-testid": testid, children });
6636
+ return /* @__PURE__ */ jsx30("div", { class: `${p27}-home-card`, "data-testid": testid, children });
6409
6637
  }
6410
6638
 
6411
6639
  // src/ui/modules/home.tsx
6412
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs25 } from "preact/jsx-runtime";
6413
- var p27 = BRAND.cssPrefix;
6640
+ import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6641
+ var p28 = BRAND.cssPrefix;
6414
6642
  var log13 = logger.scope("home");
6415
6643
  function resolveGreeting(props2) {
6416
6644
  const name = props2.options.userContext?.name;
@@ -6453,49 +6681,49 @@ function HomeRoot(props2) {
6453
6681
  const status = config.status;
6454
6682
  const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
6455
6683
  const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
6456
- return /* @__PURE__ */ jsx30("div", { class: `${p27}-module ${p27}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-scroll`, children: [
6457
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero`, children: [
6458
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-top`, children: [
6459
- config.brandName ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-brand`, "data-testid": TID.homeBrand, children: config.brandName }) : /* @__PURE__ */ jsx30("span", { class: `${p27}-home-brand-spacer`, "aria-hidden": "true" }),
6460
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-actions`, children: [
6461
- avatars.length > 0 ? /* @__PURE__ */ jsx30("div", { class: `${p27}-home-avatars`, children: avatars.map((a) => /* @__PURE__ */ jsx30("span", { class: `${p27}-home-avatar`, title: a.role ? `${a.name} \xB7 ${a.role}` : a.name, children: a.avatar ? /* @__PURE__ */ jsx30("img", { src: a.avatar, alt: "", loading: "lazy" }) : /* @__PURE__ */ jsx30("span", { children: initials(a.name) }) }, a.name)) }) : null,
6462
- /* @__PURE__ */ jsx30(HeaderActions, { panelProps, variant: "plain" })
6684
+ return /* @__PURE__ */ jsx31("div", { class: `${p28}-module ${p28}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-scroll`, children: [
6685
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero`, children: [
6686
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-top`, children: [
6687
+ config.brandName ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-brand`, "data-testid": TID.homeBrand, children: config.brandName }) : /* @__PURE__ */ jsx31("span", { class: `${p28}-home-brand-spacer`, "aria-hidden": "true" }),
6688
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-actions`, children: [
6689
+ avatars.length > 0 ? /* @__PURE__ */ jsx31("div", { class: `${p28}-home-avatars`, children: avatars.map((a) => /* @__PURE__ */ jsx31("span", { class: `${p28}-home-avatar`, title: a.role ? `${a.name} \xB7 ${a.role}` : a.name, children: a.avatar ? /* @__PURE__ */ jsx31("img", { src: a.avatar, alt: "", loading: "lazy" }) : /* @__PURE__ */ jsx31("span", { children: initials(a.name) }) }, a.name)) }) : null,
6690
+ /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" })
6463
6691
  ] })
6464
6692
  ] }),
6465
- config.showGreeting !== false ? /* @__PURE__ */ jsxs25(Fragment6, { children: [
6466
- /* @__PURE__ */ jsx30("h1", { class: `${p27}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6467
- greeting.subtitle ? /* @__PURE__ */ jsx30("p", { class: `${p27}-home-lead`, children: greeting.subtitle }) : null
6693
+ config.showGreeting !== false ? /* @__PURE__ */ jsxs26(Fragment6, { children: [
6694
+ /* @__PURE__ */ jsx31("h1", { class: `${p28}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6695
+ greeting.subtitle ? /* @__PURE__ */ jsx31("p", { class: `${p28}-home-lead`, children: greeting.subtitle }) : null
6468
6696
  ] }) : null
6469
6697
  ] }),
6470
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-cards`, children: [
6471
- config.showSearchBar !== false ? /* @__PURE__ */ jsx30(
6698
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
6699
+ config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
6472
6700
  HomeSearchButton,
6473
6701
  {
6474
6702
  placeholder: strings.homeSearchPlaceholder,
6475
6703
  onActivate: () => nav.switchToLayout("help")
6476
6704
  }
6477
6705
  ) : null,
6478
- recent ? /* @__PURE__ */ jsx30(HomeCard, { onClick: () => nav.selectConversation(recent.conversationId), testid: TID.homeRecent, children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-recent-row`, "data-unread": (recent.unreadCount ?? 0) > 0 ? "true" : void 0, children: [
6479
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(BubblesIcon, {}) }),
6480
- /* @__PURE__ */ jsxs25("span", { class: `${p27}-home-recent-body`, children: [
6481
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-title`, children: recent.title }),
6482
- recent.preview ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-preview`, children: recent.preview }) : null
6706
+ recent ? /* @__PURE__ */ jsx31(HomeCard, { onClick: () => nav.selectConversation(recent.conversationId), testid: TID.homeRecent, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-recent-row`, "data-unread": (recent.unreadCount ?? 0) > 0 ? "true" : void 0, children: [
6707
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(BubblesIcon, {}) }),
6708
+ /* @__PURE__ */ jsxs26("span", { class: `${p28}-home-recent-body`, children: [
6709
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-title`, children: recent.title }),
6710
+ recent.preview ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-preview`, children: recent.preview }) : null
6483
6711
  ] }),
6484
- (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-dot`, "aria-label": "Unread" }) : null
6712
+ (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-dot`, "aria-label": "Unread" }) : null
6485
6713
  ] }) }) : null,
6486
- status ? /* @__PURE__ */ jsx30(
6714
+ status ? /* @__PURE__ */ jsx31(
6487
6715
  HomeCard,
6488
6716
  {
6489
6717
  onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
6490
- children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-status`, "data-level": status.level ?? "operational", children: [
6491
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(StatusOkIcon, {}) }),
6492
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-text`, children: statusText })
6718
+ children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-status`, "data-level": status.level ?? "operational", children: [
6719
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(StatusOkIcon, {}) }),
6720
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-text`, children: statusText })
6493
6721
  ] })
6494
6722
  }
6495
6723
  ) : null,
6496
- content.length > 0 ? /* @__PURE__ */ jsxs25("section", { class: `${p27}-home-content`, children: [
6497
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-title`, children: contentTitle }),
6498
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx30(
6724
+ content.length > 0 ? /* @__PURE__ */ jsxs26("section", { class: `${p28}-home-content`, children: [
6725
+ /* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-title`, children: contentTitle }),
6726
+ /* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx31(
6499
6727
  ListRow,
6500
6728
  {
6501
6729
  title: item.title,
@@ -6511,13 +6739,13 @@ function HomeRoot(props2) {
6511
6739
  }
6512
6740
  var homeLayout = {
6513
6741
  Icon: HomeIcon,
6514
- Root: (props2) => /* @__PURE__ */ jsx30(HomeRoot, { ...props2 })
6742
+ Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
6515
6743
  };
6516
6744
 
6517
6745
  // src/ui/modules/news.tsx
6518
6746
  import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
6519
- import { jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6520
- var p28 = BRAND.cssPrefix;
6747
+ import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6748
+ var p29 = BRAND.cssPrefix;
6521
6749
  var log14 = logger.scope("news");
6522
6750
  function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6523
6751
  const tags = config.contentTags;
@@ -6545,37 +6773,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6545
6773
  };
6546
6774
  }, [transport, tags, reloadKey, bus]);
6547
6775
  function renderBody() {
6548
- if (state === "loading") return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsLoading, strings });
6776
+ if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
6549
6777
  if (state === "error") {
6550
- return /* @__PURE__ */ jsx31(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6778
+ return /* @__PURE__ */ jsx32(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6551
6779
  }
6552
- if (items.length === 0) return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsEmpty, strings });
6553
- return /* @__PURE__ */ jsx31("div", { class: `${p28}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs26(
6780
+ if (items.length === 0) return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsEmpty, strings });
6781
+ return /* @__PURE__ */ jsx32("div", { class: `${p29}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs27(
6554
6782
  "button",
6555
6783
  {
6556
6784
  type: "button",
6557
- class: `${p28}-news-card`,
6785
+ class: `${p29}-news-card`,
6558
6786
  onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
6559
6787
  "data-testid": tid(TID.newsItem, item.id),
6560
6788
  children: [
6561
- item.image ? /* @__PURE__ */ jsx31("img", { class: `${p28}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6562
- /* @__PURE__ */ jsxs26("span", { class: `${p28}-news-body`, children: [
6563
- /* @__PURE__ */ jsx31("span", { class: `${p28}-news-title`, children: item.title }),
6564
- item.description ? /* @__PURE__ */ jsx31("span", { class: `${p28}-news-summary`, children: item.description }) : null
6789
+ item.image ? /* @__PURE__ */ jsx32("img", { class: `${p29}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6790
+ /* @__PURE__ */ jsxs27("span", { class: `${p29}-news-body`, children: [
6791
+ /* @__PURE__ */ jsx32("span", { class: `${p29}-news-title`, children: item.title }),
6792
+ item.description ? /* @__PURE__ */ jsx32("span", { class: `${p29}-news-summary`, children: item.description }) : null
6565
6793
  ] })
6566
6794
  ]
6567
6795
  },
6568
6796
  item.id
6569
6797
  )) });
6570
6798
  }
6571
- return /* @__PURE__ */ jsxs26("div", { class: `${p28}-module`, children: [
6572
- /* @__PURE__ */ jsx31(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" }) }),
6573
- /* @__PURE__ */ jsx31("div", { class: `${p28}-module-scroll`, children: renderBody() })
6799
+ return /* @__PURE__ */ jsxs27("div", { class: `${p29}-module`, children: [
6800
+ /* @__PURE__ */ jsx32(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx32(HeaderActions, { panelProps, variant: "plain" }) }),
6801
+ /* @__PURE__ */ jsx32("div", { class: `${p29}-module-scroll`, children: renderBody() })
6574
6802
  ] });
6575
6803
  }
6576
6804
  var newsLayout = {
6577
6805
  Icon: NewsIcon,
6578
- Root: (props2) => /* @__PURE__ */ jsx31(NewsRoot, { ...props2 })
6806
+ Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
6579
6807
  };
6580
6808
 
6581
6809
  // src/ui/modules/registry.ts
@@ -6587,28 +6815,28 @@ var LAYOUTS = {
6587
6815
  };
6588
6816
 
6589
6817
  // src/ui/home-tab-bar.tsx
6590
- import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6591
- var p29 = BRAND.cssPrefix;
6818
+ import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6819
+ var p30 = BRAND.cssPrefix;
6592
6820
  function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6593
- return /* @__PURE__ */ jsx32("nav", { class: `${p29}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
6821
+ return /* @__PURE__ */ jsx33("nav", { class: `${p30}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
6594
6822
  const Icon = LAYOUTS[m.layout].Icon;
6595
6823
  const selected = m.id === activeTab;
6596
6824
  const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
6597
- return /* @__PURE__ */ jsxs27(
6825
+ return /* @__PURE__ */ jsxs28(
6598
6826
  "button",
6599
6827
  {
6600
6828
  type: "button",
6601
6829
  role: "tab",
6602
6830
  "aria-selected": selected,
6603
- class: `${p29}-tab`,
6831
+ class: `${p30}-tab`,
6604
6832
  onClick: () => onSelect(m.id),
6605
6833
  "data-testid": tid(TID.tab, m.id),
6606
6834
  children: [
6607
- /* @__PURE__ */ jsxs27("span", { class: `${p29}-tab-icon`, "aria-hidden": "true", children: [
6608
- /* @__PURE__ */ jsx32(Icon, {}),
6609
- badge ? /* @__PURE__ */ jsx32("span", { class: `${p29}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
6835
+ /* @__PURE__ */ jsxs28("span", { class: `${p30}-tab-icon`, "aria-hidden": "true", children: [
6836
+ /* @__PURE__ */ jsx33(Icon, {}),
6837
+ badge ? /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
6610
6838
  ] }),
6611
- /* @__PURE__ */ jsx32("span", { class: `${p29}-tab-label`, children: localizeText(strings, m.label) })
6839
+ /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-label`, children: localizeText(strings, m.label) })
6612
6840
  ]
6613
6841
  },
6614
6842
  m.id
@@ -6617,12 +6845,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6617
6845
  }
6618
6846
 
6619
6847
  // src/ui/iframe-view.tsx
6620
- import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6621
- var p30 = BRAND.cssPrefix;
6848
+ import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6849
+ var p31 = BRAND.cssPrefix;
6622
6850
  var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
6623
6851
  function IframeView({ url, title, strings, onBack, actions }) {
6624
- return /* @__PURE__ */ jsxs28("div", { class: `${p30}-module`, children: [
6625
- /* @__PURE__ */ jsx33(
6852
+ return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6853
+ /* @__PURE__ */ jsx34(
6626
6854
  BackHeader,
6627
6855
  {
6628
6856
  title: title || strings.moduleBack,
@@ -6631,10 +6859,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
6631
6859
  actions
6632
6860
  }
6633
6861
  ),
6634
- /* @__PURE__ */ jsx33(
6862
+ /* @__PURE__ */ jsx34(
6635
6863
  "iframe",
6636
6864
  {
6637
- class: `${p30}-content-frame`,
6865
+ class: `${p31}-content-frame`,
6638
6866
  src: url,
6639
6867
  title: title || "content",
6640
6868
  sandbox: SANDBOX,
@@ -6648,8 +6876,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
6648
6876
 
6649
6877
  // src/ui/content-view.tsx
6650
6878
  import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
6651
- import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6652
- var p31 = BRAND.cssPrefix;
6879
+ import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6880
+ var p32 = BRAND.cssPrefix;
6653
6881
  var log15 = logger.scope("content");
6654
6882
  var READ_DWELL_MS = 5e3;
6655
6883
  function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
@@ -6693,16 +6921,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6693
6921
  [bus, id]
6694
6922
  );
6695
6923
  function renderBody() {
6696
- if (failed) return /* @__PURE__ */ jsx34(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6697
- if (item === null) return /* @__PURE__ */ jsx34(ModuleState, { message: strings.contentLoading, strings });
6698
- return /* @__PURE__ */ jsxs29("article", { class: `${p31}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6699
- item.image ? /* @__PURE__ */ jsx34("img", { class: `${p31}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6700
- item.description ? /* @__PURE__ */ jsx34("p", { class: `${p31}-content-subtitle`, children: item.description }) : null,
6701
- /* @__PURE__ */ jsx34(StaticMarkdown, { text: item.content ?? "" })
6924
+ if (failed) return /* @__PURE__ */ jsx35(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6925
+ if (item === null) return /* @__PURE__ */ jsx35(ModuleState, { message: strings.contentLoading, strings });
6926
+ return /* @__PURE__ */ jsxs30("article", { class: `${p32}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6927
+ item.image ? /* @__PURE__ */ jsx35("img", { class: `${p32}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6928
+ item.description ? /* @__PURE__ */ jsx35("p", { class: `${p32}-content-subtitle`, children: item.description }) : null,
6929
+ /* @__PURE__ */ jsx35(StaticMarkdown, { text: item.content ?? "" })
6702
6930
  ] });
6703
6931
  }
6704
- return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6705
- /* @__PURE__ */ jsx34(
6932
+ return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
6933
+ /* @__PURE__ */ jsx35(
6706
6934
  BackHeader,
6707
6935
  {
6708
6936
  title: item?.title || title || strings.moduleBack,
@@ -6712,13 +6940,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6712
6940
  testid: TID.backHeader
6713
6941
  }
6714
6942
  ),
6715
- /* @__PURE__ */ jsx34("div", { class: `${p31}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6943
+ /* @__PURE__ */ jsx35("div", { class: `${p32}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6716
6944
  ] });
6717
6945
  }
6718
6946
 
6719
6947
  // src/ui/messenger-home.tsx
6720
- import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6721
- var p32 = BRAND.cssPrefix;
6948
+ import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6949
+ var p33 = BRAND.cssPrefix;
6722
6950
  function MessengerHome({
6723
6951
  panelProps,
6724
6952
  enabledModules,
@@ -6789,12 +7017,12 @@ function MessengerHome({
6789
7017
  bus,
6790
7018
  panelProps
6791
7019
  });
6792
- const plainActions = /* @__PURE__ */ jsx35(HeaderActions, { panelProps, variant: "plain" });
7020
+ const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
6793
7021
  if (activeModule) visitedRef.current.add(activeModule.id);
6794
7022
  const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
6795
7023
  const tabRoot = (module) => {
6796
7024
  if (module.layout === "chat") {
6797
- return /* @__PURE__ */ jsx35(
7025
+ return /* @__PURE__ */ jsx36(
6798
7026
  PanelContent,
6799
7027
  {
6800
7028
  ...panelProps,
@@ -6805,14 +7033,14 @@ function MessengerHome({
6805
7033
  );
6806
7034
  }
6807
7035
  const Root = LAYOUTS[module.layout].Root;
6808
- return Root ? /* @__PURE__ */ jsx35(Root, { ...screenProps(module) }) : null;
7036
+ return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
6809
7037
  };
6810
7038
  const renderReader = () => {
6811
7039
  if (top?.kind === "iframe") {
6812
- return /* @__PURE__ */ jsx35(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
7040
+ return /* @__PURE__ */ jsx36(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
6813
7041
  }
6814
7042
  if (top?.kind === "content") {
6815
- return /* @__PURE__ */ jsx35(
7043
+ return /* @__PURE__ */ jsx36(
6816
7044
  ContentView,
6817
7045
  {
6818
7046
  id: top.id,
@@ -6827,22 +7055,22 @@ function MessengerHome({
6827
7055
  }
6828
7056
  return null;
6829
7057
  };
6830
- return /* @__PURE__ */ jsxs30(
7058
+ return /* @__PURE__ */ jsxs31(
6831
7059
  "div",
6832
7060
  {
6833
7061
  ref: containerRef,
6834
- class: `${p32}-panel ${p32}-messenger`,
7062
+ class: `${p33}-panel ${p33}-messenger`,
6835
7063
  role: "dialog",
6836
7064
  "aria-modal": "false",
6837
7065
  "aria-label": strings.panelTitle,
6838
7066
  style: { position: "relative" },
6839
7067
  "data-testid": TID.messengerHome,
6840
7068
  children: [
6841
- /* @__PURE__ */ jsxs30("div", { class: `${p32}-messenger-body`, children: [
6842
- visitedTabs.map((m) => /* @__PURE__ */ jsx35("div", { class: `${p32}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
7069
+ /* @__PURE__ */ jsxs31("div", { class: `${p33}-messenger-body`, children: [
7070
+ visitedTabs.map((m) => /* @__PURE__ */ jsx36("div", { class: `${p33}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
6843
7071
  renderReader()
6844
7072
  ] }),
6845
- showTabBar ? /* @__PURE__ */ jsx35(
7073
+ showTabBar ? /* @__PURE__ */ jsx36(
6846
7074
  HomeTabBar,
6847
7075
  {
6848
7076
  modules: enabledModules,
@@ -6852,8 +7080,8 @@ function MessengerHome({
6852
7080
  onSelect: nav.switchTab
6853
7081
  }
6854
7082
  ) : null,
6855
- /* @__PURE__ */ jsx35(PoweredByBar, { poweredBy: options.poweredBy }),
6856
- options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx35(
7083
+ /* @__PURE__ */ jsx36(PoweredByBar, { poweredBy: options.poweredBy }),
7084
+ options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx36(
6857
7085
  ResizeGrip,
6858
7086
  {
6859
7087
  panelEl: containerRef.current,
@@ -6870,29 +7098,29 @@ function MessengerHome({
6870
7098
  }
6871
7099
 
6872
7100
  // src/ui/modules-empty.tsx
6873
- import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6874
- var p33 = BRAND.cssPrefix;
7101
+ import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7102
+ var p34 = BRAND.cssPrefix;
6875
7103
  function ModulesEmpty({ strings, onClose }) {
6876
- return /* @__PURE__ */ jsxs31(
7104
+ return /* @__PURE__ */ jsxs32(
6877
7105
  "div",
6878
7106
  {
6879
- class: `${p33}-panel ${p33}-modules-empty`,
7107
+ class: `${p34}-panel ${p34}-modules-empty`,
6880
7108
  role: "dialog",
6881
7109
  "aria-label": strings.panelTitle,
6882
7110
  "data-testid": TID.modulesEmpty,
6883
7111
  children: [
6884
- onClose ? /* @__PURE__ */ jsx36(
7112
+ onClose ? /* @__PURE__ */ jsx37(
6885
7113
  "button",
6886
7114
  {
6887
7115
  type: "button",
6888
- class: `${p33}-icon-btn ${p33}-modules-empty-close`,
7116
+ class: `${p34}-icon-btn ${p34}-modules-empty-close`,
6889
7117
  onClick: onClose,
6890
7118
  "aria-label": strings.close,
6891
7119
  title: strings.close,
6892
- children: /* @__PURE__ */ jsx36(CloseIcon, {})
7120
+ children: /* @__PURE__ */ jsx37(CloseIcon, {})
6893
7121
  }
6894
7122
  ) : null,
6895
- /* @__PURE__ */ jsx36("p", { class: `${p33}-modules-empty-text`, children: strings.modulesEmpty })
7123
+ /* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
6896
7124
  ]
6897
7125
  }
6898
7126
  );
@@ -6915,19 +7143,19 @@ function useLauncherCallout({ callout, persistence }) {
6915
7143
  }
6916
7144
 
6917
7145
  // src/ui/app.tsx
6918
- import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7146
+ import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
6919
7147
  var log16 = logger.scope("app");
6920
- var p34 = BRAND.cssPrefix;
7148
+ var p35 = BRAND.cssPrefix;
6921
7149
  function makeLocalizedWelcome(w, strings) {
6922
7150
  return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
6923
7151
  }
6924
7152
  function firstText(m) {
6925
- return m.partsSig.value.find((p35) => p35.kind === "text")?.textSig.value ?? "";
7153
+ return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
6926
7154
  }
6927
7155
  function allToolPartsSettled(msg) {
6928
- const tools = msg.partsSig.value.filter((p35) => p35.kind === "tool");
6929
- return tools.length > 0 && tools.every((p35) => {
6930
- const s = p35.stateSig.value;
7156
+ const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
7157
+ return tools.length > 0 && tools.every((pt) => {
7158
+ const s = pt.stateSig.value;
6931
7159
  return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
6932
7160
  });
6933
7161
  }
@@ -7404,7 +7632,9 @@ function App({ options, hostElement, bus }) {
7404
7632
  conversationIdSig.value = activeConversationId;
7405
7633
  persistence.saveConversationId(activeConversationId);
7406
7634
  }
7407
- const thread = continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1);
7635
+ const thread = (continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1)).filter(
7636
+ (m) => !m.ephemeral
7637
+ );
7408
7638
  const body = buildSendMessageRequest({
7409
7639
  messages: thread.map(fromReactive),
7410
7640
  conversationId: activeConversationId,
@@ -7846,12 +8076,12 @@ function App({ options, hostElement, bus }) {
7846
8076
  const renderSurface = (size) => {
7847
8077
  const closeable = isActionVisible("close", effectiveOptions.mode, size);
7848
8078
  if (enabledModules.length === 0) {
7849
- return /* @__PURE__ */ jsx37(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
8079
+ return /* @__PURE__ */ jsx38(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
7850
8080
  }
7851
8081
  if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
7852
- return /* @__PURE__ */ jsx37(Panel, { ...panelProps, panelSize: size });
8082
+ return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
7853
8083
  }
7854
- return /* @__PURE__ */ jsx37(
8084
+ return /* @__PURE__ */ jsx38(
7855
8085
  MessengerHome,
7856
8086
  {
7857
8087
  panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
@@ -7870,7 +8100,7 @@ function App({ options, hostElement, bus }) {
7870
8100
  void handleSelectHistoryConversation(chat.conversationId);
7871
8101
  };
7872
8102
  const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
7873
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: /* @__PURE__ */ jsx37(
8103
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
7874
8104
  PageShell,
7875
8105
  {
7876
8106
  site: parsedSite,
@@ -7891,15 +8121,15 @@ function App({ options, hostElement, bus }) {
7891
8121
  }
7892
8122
  if (isInlineLike) {
7893
8123
  const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
7894
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: renderSurface(inlineSize) });
8124
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
7895
8125
  }
7896
8126
  const drawerEdgeTab = options.mode === "drawer";
7897
8127
  const triggerOwnedByPage = options.mode === "modal";
7898
8128
  const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
7899
8129
  const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
7900
- return /* @__PURE__ */ jsxs32("div", { class: `${p34}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
7901
- isOpen || activated ? /* @__PURE__ */ jsx37("div", { class: `${p34}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
7902
- launcherVisible ? /* @__PURE__ */ jsx37(
8130
+ return /* @__PURE__ */ jsxs33("div", { class: `${p35}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
8131
+ isOpen || activated ? /* @__PURE__ */ jsx38("div", { class: `${p35}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
8132
+ launcherVisible ? /* @__PURE__ */ jsx38(
7903
8133
  Launcher,
7904
8134
  {
7905
8135
  onToggle: handleOpen,
@@ -7909,7 +8139,7 @@ function App({ options, hostElement, bus }) {
7909
8139
  edgeTab: drawerEdgeTab
7910
8140
  }
7911
8141
  ) : null,
7912
- calloutToRender ? /* @__PURE__ */ jsx37(
8142
+ calloutToRender ? /* @__PURE__ */ jsx38(
7913
8143
  LauncherCallout,
7914
8144
  {
7915
8145
  callout: calloutToRender,
@@ -7974,34 +8204,34 @@ var TRACKED = {
7974
8204
  expand: (on) => ({ on }),
7975
8205
  fullscreen: (on) => ({ on }),
7976
8206
  // Conversation funnel. `send` is the key conversion; text never rides.
7977
- send: (p35) => ({ attachments: p35.attachmentCount }),
7978
- message: (p35) => ({ role: p35.role }),
8207
+ send: (p36) => ({ attachments: p36.attachmentCount }),
8208
+ message: (p36) => ({ role: p36.role }),
7979
8209
  stop: () => void 0,
7980
8210
  clear: () => void 0,
7981
8211
  suggestion: () => void 0,
7982
- toggleHistory: (p35) => ({ view: p35.view }),
8212
+ toggleHistory: (p36) => ({ view: p36.view }),
7983
8213
  handshake: () => void 0,
7984
8214
  // Forms + human-in-the-loop — ids and outcomes, never values.
7985
- formSubmit: (p35) => ({ formId: p35.formId, skipped: p35.skipped }),
8215
+ formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
7986
8216
  toolResult: () => void 0,
7987
- toolDecision: (p35) => ({ approved: p35.approved }),
8217
+ toolDecision: (p36) => ({ approved: p36.approved }),
7988
8218
  // Content — ids, tags + counts only; titles/bodies never ride.
7989
- contentView: (p35) => ({ section: p35.section, tags: p35.tags, count: p35.count }),
7990
- contentOpen: (p35) => ({ contentId: p35.contentId, tags: p35.tags }),
7991
- contentSearch: (p35) => ({ qlen: p35.queryLength, hits: p35.hitCount }),
7992
- contentRead: (p35) => ({ contentId: p35.contentId }),
7993
- contentLinkClick: (p35) => ({ contentId: p35.contentId }),
8219
+ contentView: (p36) => ({ section: p36.section, tags: p36.tags, count: p36.count }),
8220
+ contentOpen: (p36) => ({ contentId: p36.contentId, tags: p36.tags }),
8221
+ contentSearch: (p36) => ({ qlen: p36.queryLength, hits: p36.hitCount }),
8222
+ contentRead: (p36) => ({ contentId: p36.contentId }),
8223
+ contentLinkClick: (p36) => ({ contentId: p36.contentId }),
7994
8224
  // Composer / attachments / voice.
7995
- attach: (p35) => ({ count: p35.count, bytes: p35.totalBytes }),
8225
+ attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
7996
8226
  voiceStart: () => void 0,
7997
- voiceStop: (p35) => ({ ms: p35.durationMs }),
8227
+ voiceStop: (p36) => ({ ms: p36.durationMs }),
7998
8228
  voiceCancel: () => void 0,
7999
8229
  // Preferences — how visitors tune the surface.
8000
8230
  localeChange: (locale) => ({ locale }),
8001
8231
  themeChange: (theme) => ({ theme }),
8002
8232
  textSizeChange: (size) => ({ size }),
8003
- soundToggle: (p35) => ({ muted: p35.muted }),
8004
- sidebarToggle: (p35) => ({ collapsed: p35.collapsed }),
8233
+ soundToggle: (p36) => ({ muted: p36.muted }),
8234
+ sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
8005
8235
  calloutDismiss: () => void 0,
8006
8236
  // Health signal only — the error object itself never leaves the page.
8007
8237
  error: () => void 0