@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/index.mjs CHANGED
@@ -30,7 +30,7 @@ var BRAND = {
30
30
  };
31
31
 
32
32
  // src/core/version.ts
33
- var ELEMENTS_VERSION = true ? "0.46.3" : "0.0.0-dev";
33
+ var ELEMENTS_VERSION = true ? "0.47.1" : "0.0.0-dev";
34
34
  var ELEMENTS_VERSION_PARAM = "_ev";
35
35
 
36
36
  // src/i18n/strings.ts
@@ -91,7 +91,6 @@ var STRINGS_EN = {
91
91
  thinking: "Thinking\u2026",
92
92
  thoughts: "Thoughts",
93
93
  usedTool: "Used tool",
94
- toolDetails: "Details",
95
94
  toolResult: "Result",
96
95
  sources: "Sources",
97
96
  // ── Messenger modules ──────────────────────────────────────────
@@ -138,17 +137,32 @@ var STRINGS_EN = {
138
137
  formChooseAtMost: "Choose at most {max}",
139
138
  formOther: "Other",
140
139
  formOtherPlaceholder: "Type your answer\u2026",
141
- inputRequired: "I need a bit more info",
142
- inputSubmit: "Submit",
140
+ inputRequired: "User Input Required",
141
+ inputBadge: "User Input",
142
+ inputAnswered: "Answered",
143
+ inputSkipped: "Skipped",
144
+ inputQuestion: "Question",
145
+ inputResponse: "Response",
146
+ inputYourAnswer: "Your answer",
147
+ inputSubmit: "Submit answer",
148
+ inputSubmitHint: "Enter to submit \xB7 Shift+Enter for new line",
143
149
  inputSkip: "Skip",
144
150
  inputSubmitted: "Answer submitted",
151
+ respFreeText: "Free Text",
152
+ respSingleChoice: "Single Choice",
153
+ respMultiChoice: "Multiple Choice",
154
+ respConfirmation: "Confirmation",
145
155
  approvalRequired: "Approval required",
146
156
  approve: "Approve",
147
157
  reject: "Reject",
148
158
  approved: "Approved",
149
159
  rejected: "Rejected",
150
160
  approvalReason: "Add a reason (optional)",
151
- stepNoLongerActive: "This request is no longer active."
161
+ stepNoLongerActive: "This request is no longer active.",
162
+ toolParameters: "Parameters",
163
+ statusCompleted: "Completed",
164
+ statusDenied: "Denied",
165
+ statusError: "Error"
152
166
  };
153
167
  var STRINGS_FR = {
154
168
  attach: "Joindre des fichiers",
@@ -207,7 +221,6 @@ var STRINGS_FR = {
207
221
  thinking: "R\xE9flexion\u2026",
208
222
  thoughts: "R\xE9flexions",
209
223
  usedTool: "Outil utilis\xE9",
210
- toolDetails: "D\xE9tails",
211
224
  toolResult: "R\xE9sultat",
212
225
  sources: "Sources",
213
226
  // ── Messenger modules ──────────────────────────────────────────
@@ -254,21 +267,167 @@ var STRINGS_FR = {
254
267
  formChooseAtMost: "Choisissez au plus {max}",
255
268
  formOther: "Autre",
256
269
  formOtherPlaceholder: "Saisissez votre r\xE9ponse\u2026",
257
- inputRequired: "J'ai besoin de quelques pr\xE9cisions",
258
- inputSubmit: "Envoyer",
270
+ inputRequired: "Saisie requise",
271
+ inputBadge: "Saisie",
272
+ inputAnswered: "R\xE9pondu",
273
+ inputSkipped: "Ignor\xE9",
274
+ inputQuestion: "Question",
275
+ inputResponse: "R\xE9ponse",
276
+ inputYourAnswer: "Votre r\xE9ponse",
277
+ inputSubmit: "Envoyer la r\xE9ponse",
278
+ inputSubmitHint: "Entr\xE9e pour envoyer \xB7 Maj+Entr\xE9e pour un saut de ligne",
259
279
  inputSkip: "Ignorer",
260
280
  inputSubmitted: "R\xE9ponse envoy\xE9e",
281
+ respFreeText: "Texte libre",
282
+ respSingleChoice: "Choix unique",
283
+ respMultiChoice: "Choix multiple",
284
+ respConfirmation: "Confirmation",
261
285
  approvalRequired: "Approbation requise",
262
286
  approve: "Approuver",
263
287
  reject: "Refuser",
264
288
  approved: "Approuv\xE9",
265
289
  rejected: "Refus\xE9",
266
290
  approvalReason: "Ajouter une raison (facultatif)",
267
- stepNoLongerActive: "Cette demande n'est plus active."
291
+ stepNoLongerActive: "Cette demande n'est plus active.",
292
+ toolParameters: "Param\xE8tres",
293
+ statusCompleted: "Termin\xE9",
294
+ statusDenied: "Refus\xE9",
295
+ statusError: "Erreur"
296
+ };
297
+ var STRINGS_AR = {
298
+ attach: "\u0625\u0631\u0641\u0627\u0642 \u0645\u0644\u0641\u0627\u062A",
299
+ attachmentMimeRejected: "\u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",
300
+ attachmentTooLarge: "\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u064B\u0627",
301
+ 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",
302
+ conversationClosed: "\u062A\u0645 \u0625\u063A\u0644\u0627\u0642 \u0647\u0630\u0647 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
303
+ conversationLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629\u2026",
304
+ close: "\u0625\u063A\u0644\u0627\u0642",
305
+ collapse: "\u0637\u064A\u0651",
306
+ collapseSidebar: "\u0637\u064A\u0651 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
307
+ composerPlaceholder: "\u0627\u0643\u062A\u0628 \u0631\u0633\u0627\u0644\u0629\u2026",
308
+ dateLastWeek: "\u0622\u062E\u0631 \u0667 \u0623\u064A\u0627\u0645",
309
+ dateOlder: "\u0623\u0642\u062F\u0645",
310
+ dateToday: "\u0627\u0644\u064A\u0648\u0645",
311
+ dateYesterday: "\u0623\u0645\u0633",
312
+ dropZone: "\u0623\u0641\u0644\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0644\u0625\u0631\u0641\u0627\u0642\u0647\u0627",
313
+ errorGeneric: "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627",
314
+ 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.",
315
+ errorRetry: "\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",
316
+ expand: "\u062A\u0648\u0633\u064A\u0639",
317
+ expandSidebar: "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
318
+ exitFullscreen: "\u0625\u0646\u0647\u0627\u0621 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
319
+ fullscreen: "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
320
+ history: "\u0627\u0644\u0633\u062C\u0644",
321
+ historyBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
322
+ historyEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062D\u0627\u062F\u062B\u0627\u062A \u0633\u0627\u0628\u0642\u0629 \u0628\u0639\u062F",
323
+ historyContinue: "\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
324
+ historyLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0645\u062D\u0627\u062F\u062B\u0627\u062A\u0643\u2026",
325
+ historyTitle: "\u0633\u062C\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
326
+ language: "\u0627\u0644\u0644\u063A\u0629",
327
+ launcherOpen: "\u0641\u062A\u062D \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
328
+ launcherLabel: "\u062A\u062D\u062F\u062B \u0645\u0639\u0646\u0627",
329
+ micStart: "\u0628\u062F\u0621 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
330
+ micStop: "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
331
+ 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",
332
+ moreActions: "\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629",
333
+ newConversation: "\u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
334
+ panelTitle: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
335
+ resizeHandle: "\u0627\u0633\u062D\u0628 \u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u062D\u062C\u0645",
336
+ scrollToBottom: "\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u062D\u062F\u062B",
337
+ send: "\u0625\u0631\u0633\u0627\u0644",
338
+ soundOff: "\u0643\u062A\u0645 \u0627\u0644\u0635\u0648\u062A",
339
+ soundOn: "\u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u0635\u0648\u062A",
340
+ startNewConversation: "\u0628\u062F\u0621 \u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
341
+ stop: "\u0625\u064A\u0642\u0627\u0641",
342
+ theme: "\u0627\u0644\u0645\u0638\u0647\u0631",
343
+ themeAuto: "\u062A\u0644\u0642\u0627\u0626\u064A",
344
+ themeDark: "\u062F\u0627\u0643\u0646",
345
+ themeLight: "\u0641\u0627\u062A\u062D",
346
+ textSize: "\u062D\u062C\u0645 \u0627\u0644\u0646\u0635",
347
+ textSizeSmall: "\u0635\u063A\u064A\u0631",
348
+ textSizeNormal: "\u0639\u0627\u062F\u064A",
349
+ textSizeLarge: "\u0643\u0628\u064A\u0631",
350
+ loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
351
+ thinking: "\u064A\u0641\u0643\u0631\u2026",
352
+ thoughts: "\u0627\u0644\u0623\u0641\u0643\u0627\u0631",
353
+ usedTool: "\u0623\u062F\u0627\u0629 \u0645\u064F\u0633\u062A\u062E\u062F\u064E\u0645\u0629",
354
+ toolResult: "\u0627\u0644\u0646\u062A\u064A\u062C\u0629",
355
+ sources: "\u0627\u0644\u0645\u0635\u0627\u062F\u0631",
356
+ // ── Messenger modules ──────────────────────────────────────────
357
+ tabHome: "\u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629",
358
+ tabConversations: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
359
+ tabHelp: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
360
+ tabNews: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
361
+ modulesEmpty: "\u0644\u0627 \u0634\u064A\u0621 \u0647\u0646\u0627 \u0628\u0639\u062F",
362
+ moduleBack: "\u0631\u062C\u0648\u0639",
363
+ contentLoading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
364
+ homeGreeting: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
365
+ homeGreetingNamed: "\u0645\u0631\u062D\u0628\u064B\u0627 {name} \u{1F44B}",
366
+ homeGreetingLead: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
367
+ homeSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
368
+ homeContentTitle: "\u0645\u0642\u0627\u0644\u0627\u062A \u0634\u0627\u0626\u0639\u0629",
369
+ homeStatus: "\u0627\u0644\u062D\u0627\u0644\u0629",
370
+ helpTitle: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
371
+ helpSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
372
+ helpEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0642\u0627\u0644\u0627\u062A \u0645\u0633\u0627\u0639\u062F\u0629 \u0628\u0639\u062F",
373
+ helpLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629\u2026",
374
+ helpSearchEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",
375
+ newsTitle: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
376
+ newsEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u062E\u0628\u0627\u0631 \u0628\u0639\u062F",
377
+ newsLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0623\u062E\u0628\u0627\u0631\u2026",
378
+ newsBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0623\u062E\u0628\u0627\u0631",
379
+ newsPublishedAt: "\u0646\u064F\u0634\u0631 \u0641\u064A {date}",
380
+ // ── Forms + human-in-the-loop (forms / ask-input / approval) ────
381
+ formSubmit: "\u0625\u0631\u0633\u0627\u0644",
382
+ formSkip: "\u0644\u0627\u062D\u0642\u064B\u0627",
383
+ formSubmitted: "\u062A\u0645",
384
+ formSkipped: "\u0644\u0627\u062D\u0642\u064B\u0627",
385
+ formFillOut: "\u062A\u0639\u0628\u0626\u0629",
386
+ formRequired: "\u0647\u0630\u0627 \u0627\u0644\u062D\u0642\u0644 \u0645\u0637\u0644\u0648\u0628",
387
+ 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",
388
+ formInvalidTel: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0635\u062D\u064A\u062D\u064B\u0627",
389
+ formInvalidUrl: "\u0623\u062F\u062E\u0644 \u0631\u0627\u0628\u0637\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
390
+ formInvalidNumber: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
391
+ 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)",
392
+ 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)",
393
+ formNumberTooSmall: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0642\u0644 \u0639\u0646 {min}",
394
+ formNumberTooLarge: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0632\u064A\u062F \u0639\u0646 {max}",
395
+ 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",
396
+ formChooseAtLeast: "\u0627\u062E\u062A\u0631 {min} \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644",
397
+ formChooseAtMost: "\u0627\u062E\u062A\u0631 {max} \u0639\u0644\u0649 \u0627\u0644\u0623\u0643\u062B\u0631",
398
+ formOther: "\u0623\u062E\u0631\u0649",
399
+ formOtherPlaceholder: "\u0627\u0643\u062A\u0628 \u0625\u062C\u0627\u0628\u062A\u0643\u2026",
400
+ inputRequired: "\u0645\u0637\u0644\u0648\u0628 \u0625\u062F\u062E\u0627\u0644 \u0645\u0646 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
401
+ inputBadge: "\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
402
+ inputAnswered: "\u062A\u0645\u062A \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
403
+ inputSkipped: "\u062A\u0645 \u0627\u0644\u062A\u062E\u0637\u064A",
404
+ inputQuestion: "\u0627\u0644\u0633\u0624\u0627\u0644",
405
+ inputResponse: "\u0627\u0644\u0625\u062C\u0627\u0628\u0629",
406
+ inputYourAnswer: "\u0625\u062C\u0627\u0628\u062A\u0643",
407
+ inputSubmit: "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
408
+ inputSubmitHint: "Enter \u0644\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 Shift+Enter \u0644\u0633\u0637\u0631 \u062C\u062F\u064A\u062F",
409
+ inputSkip: "\u062A\u062E\u0637\u064D\u0651",
410
+ inputSubmitted: "\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
411
+ respFreeText: "\u0646\u0635 \u062D\u0631",
412
+ respSingleChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0648\u0627\u062D\u062F",
413
+ respMultiChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0645\u062A\u0639\u062F\u062F",
414
+ respConfirmation: "\u062A\u0623\u0643\u064A\u062F",
415
+ approvalRequired: "\u0645\u0637\u0644\u0648\u0628 \u0645\u0648\u0627\u0641\u0642\u0629",
416
+ approve: "\u0645\u0648\u0627\u0641\u0642\u0629",
417
+ reject: "\u0631\u0641\u0636",
418
+ approved: "\u062A\u0645\u062A \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629",
419
+ rejected: "\u0645\u0631\u0641\u0648\u0636",
420
+ approvalReason: "\u0623\u0636\u0641 \u0633\u0628\u0628\u064B\u0627 (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
421
+ stepNoLongerActive: "\u0644\u0645 \u064A\u0639\u062F \u0647\u0630\u0627 \u0627\u0644\u0637\u0644\u0628 \u0646\u0634\u0637\u064B\u0627.",
422
+ toolParameters: "\u0627\u0644\u0645\u0639\u0637\u064A\u0627\u062A",
423
+ statusCompleted: "\u0645\u0643\u062A\u0645\u0644",
424
+ statusDenied: "\u0645\u0631\u0641\u0648\u0636",
425
+ statusError: "\u062E\u0637\u0623"
268
426
  };
269
427
  var BUILTIN_STRINGS = {
270
428
  en: STRINGS_EN,
271
- fr: STRINGS_FR
429
+ fr: STRINGS_FR,
430
+ ar: STRINGS_AR
272
431
  };
273
432
  function resolveStrings(locale, override) {
274
433
  const tag = primaryTag(locale);
@@ -1204,7 +1363,7 @@ var tokens_default = ':host{--__P__-accent-user: __BRAND_ACCENT__;--__P__-accent
1204
1363
  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';
1205
1364
 
1206
1365
  // src/styles/panel.css
1207
- 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';
1366
+ 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';
1208
1367
 
1209
1368
  // src/styles/standalone.css
1210
1369
  var standalone_default = ".__P__-standalone-page{margin:0;height:100vh;background:var(--__P__-bg, #fff);display:grid;place-items:stretch}\n";
@@ -1292,22 +1451,22 @@ function attachAdoptedSheet(shadow, doc) {
1292
1451
  }
1293
1452
  }
1294
1453
  function applyThemeOverrides(host, overrides) {
1295
- const p35 = BRAND.cssPrefix;
1296
- if (overrides.accent) host.style.setProperty(`--${p35}-accent-user`, overrides.accent);
1297
- if (overrides.accentText) host.style.setProperty(`--${p35}-accent-text-user`, overrides.accentText);
1298
- if (overrides.radius) host.style.setProperty(`--${p35}-radius`, overrides.radius);
1299
- if (overrides.fontFamily) host.style.setProperty(`--${p35}-font`, overrides.fontFamily);
1454
+ const p36 = BRAND.cssPrefix;
1455
+ if (overrides.accent) host.style.setProperty(`--${p36}-accent-user`, overrides.accent);
1456
+ if (overrides.accentText) host.style.setProperty(`--${p36}-accent-text-user`, overrides.accentText);
1457
+ if (overrides.radius) host.style.setProperty(`--${p36}-radius`, overrides.radius);
1458
+ if (overrides.fontFamily) host.style.setProperty(`--${p36}-font`, overrides.fontFamily);
1300
1459
  }
1301
1460
  function applyThemeMode(host, mode) {
1302
1461
  host.dataset.theme = mode;
1303
1462
  }
1304
1463
  function applySize(host, size) {
1305
- const p35 = BRAND.cssPrefix;
1306
- if (size.width !== void 0) host.style.setProperty(`--${p35}-panel-w`, size.width);
1307
- if (size.height !== void 0) host.style.setProperty(`--${p35}-panel-h`, size.height);
1308
- if (size.expanded?.width !== void 0) host.style.setProperty(`--${p35}-expanded-w`, size.expanded.width);
1309
- if (size.expanded?.height !== void 0) host.style.setProperty(`--${p35}-expanded-h`, size.expanded.height);
1310
- if (size.inset !== void 0) host.style.setProperty(`--${p35}-panel-inset`, size.inset);
1464
+ const p36 = BRAND.cssPrefix;
1465
+ if (size.width !== void 0) host.style.setProperty(`--${p36}-panel-w`, size.width);
1466
+ if (size.height !== void 0) host.style.setProperty(`--${p36}-panel-h`, size.height);
1467
+ if (size.expanded?.width !== void 0) host.style.setProperty(`--${p36}-expanded-w`, size.expanded.width);
1468
+ if (size.expanded?.height !== void 0) host.style.setProperty(`--${p36}-expanded-h`, size.expanded.height);
1469
+ if (size.inset !== void 0) host.style.setProperty(`--${p36}-panel-inset`, size.inset);
1311
1470
  }
1312
1471
  function applyPosition(host, pos) {
1313
1472
  host.dataset.position = pos;
@@ -1571,11 +1730,11 @@ function toBase64Url(json) {
1571
1730
  var nonEmpty = (ctx) => ctx && Object.keys(ctx).length > 0 ? ctx : void 0;
1572
1731
  function encodeContext(user, page) {
1573
1732
  const u = nonEmpty(user);
1574
- const p35 = nonEmpty(page);
1575
- if (!u && !p35) return void 0;
1733
+ const p36 = nonEmpty(page);
1734
+ if (!u && !p36) return void 0;
1576
1735
  const envelope = {};
1577
1736
  if (u) envelope.user = u;
1578
- if (p35) envelope.page = p35;
1737
+ if (p36) envelope.page = p36;
1579
1738
  return toBase64Url(JSON.stringify(envelope));
1580
1739
  }
1581
1740
 
@@ -1585,8 +1744,8 @@ function parseWireDate(value) {
1585
1744
  const ms = Date.parse(value);
1586
1745
  return Number.isFinite(ms) ? ms : void 0;
1587
1746
  }
1588
- function toolPartType(toolName) {
1589
- const bare = toolName.startsWith("tool:") ? toolName.slice(5) : toolName;
1747
+ function toolPartType(toolName2) {
1748
+ const bare = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
1590
1749
  return `tool-${bare}`;
1591
1750
  }
1592
1751
  function toolNameFromType(type) {
@@ -1674,8 +1833,8 @@ function buildSendMessageRequest(params) {
1674
1833
  if (tools?.length) body.data = { tools };
1675
1834
  return body;
1676
1835
  }
1677
- function isResolvedToolPart(p35) {
1678
- return p35.state === "output-available" || p35.state === "output-error" || p35.state === "output-denied" || p35.approval?.approved !== void 0;
1836
+ function isResolvedToolPart(p36) {
1837
+ return p36.state === "output-available" || p36.state === "output-error" || p36.state === "output-denied" || p36.approval?.approved !== void 0;
1679
1838
  }
1680
1839
  function normalizeToolRef(ref) {
1681
1840
  if (typeof ref === "string") return ref ? { code: ref } : null;
@@ -1683,29 +1842,29 @@ function normalizeToolRef(ref) {
1683
1842
  }
1684
1843
  function messageToWireParts(m) {
1685
1844
  const out = [];
1686
- for (const p35 of m.parts) {
1687
- if (p35.kind === "step-start") {
1845
+ for (const p36 of m.parts) {
1846
+ if (p36.kind === "step-start") {
1688
1847
  out.push({ type: "step-start" });
1689
1848
  }
1690
- if (p35.kind === "reasoning" && p35.text) {
1691
- out.push({ type: "reasoning", text: p35.text, state: p35.done ? "done" : "streaming" });
1849
+ if (p36.kind === "reasoning" && p36.text) {
1850
+ out.push({ type: "reasoning", text: p36.text, state: p36.done ? "done" : "streaming" });
1692
1851
  }
1693
- if (p35.kind === "text" && p35.text) {
1694
- out.push({ text: p35.text, type: "text" });
1852
+ if (p36.kind === "text" && p36.text) {
1853
+ out.push({ text: p36.text, type: "text" });
1695
1854
  }
1696
- if (p35.kind === "file" && p35.url) {
1697
- out.push({ mediaType: p35.mediaType, type: "file", url: p35.url });
1855
+ if (p36.kind === "file" && p36.url) {
1856
+ out.push({ mediaType: p36.mediaType, type: "file", url: p36.url });
1698
1857
  }
1699
- if (p35.kind === "tool" && isResolvedToolPart(p35)) {
1858
+ if (p36.kind === "tool" && isResolvedToolPart(p36)) {
1700
1859
  const part = {
1701
- type: toolPartType(p35.toolName),
1702
- toolCallId: p35.toolCallId,
1703
- state: p35.state
1860
+ type: toolPartType(p36.toolName),
1861
+ toolCallId: p36.toolCallId,
1862
+ state: p36.state
1704
1863
  };
1705
- if (p35.input !== void 0) part.input = p35.input;
1706
- if (p35.output !== void 0) part.output = p35.output;
1707
- if (p35.error !== void 0) part.errorText = p35.error;
1708
- if (p35.approval && p35.approval.approved !== void 0) part.approval = p35.approval;
1864
+ if (p36.input !== void 0) part.input = p36.input;
1865
+ if (p36.output !== void 0) part.output = p36.output;
1866
+ if (p36.error !== void 0) part.errorText = p36.error;
1867
+ if (p36.approval && p36.approval.approved !== void 0) part.approval = p36.approval;
1709
1868
  out.push(part);
1710
1869
  }
1711
1870
  }
@@ -2380,6 +2539,8 @@ function makeInstantWelcomeMessage(m) {
2380
2539
  role: m.role,
2381
2540
  createdAt: Date.now(),
2382
2541
  status: "complete",
2542
+ // Client-only intro — rendered, never sent to the backend (see Message.ephemeral).
2543
+ ephemeral: true,
2383
2544
  parts: [{ kind: "text", id: `${id}-t0`, text: m.text, done: true }]
2384
2545
  });
2385
2546
  }
@@ -2392,6 +2553,7 @@ function toReactive(m) {
2392
2553
  errorText: m.errorText,
2393
2554
  finishReason: m.finishReason,
2394
2555
  serverMessageId: m.serverMessageId,
2556
+ ephemeral: m.ephemeral,
2395
2557
  attachments: m.attachments,
2396
2558
  partsSig: signal(m.parts.map(partToReactive))
2397
2559
  };
@@ -2441,7 +2603,7 @@ function fromWireMessage(w) {
2441
2603
  };
2442
2604
  }
2443
2605
  return null;
2444
- }).filter((p35) => p35 !== null);
2606
+ }).filter((p36) => p36 !== null);
2445
2607
  return {
2446
2608
  id: w.id,
2447
2609
  role: w.role,
@@ -2464,6 +2626,7 @@ function fromReactive(m) {
2464
2626
  errorText: m.errorText,
2465
2627
  finishReason: m.finishReason,
2466
2628
  serverMessageId: m.serverMessageId,
2629
+ ephemeral: m.ephemeral,
2467
2630
  attachments: m.attachments,
2468
2631
  parts: m.partsSig.value.map(partFromReactive)
2469
2632
  };
@@ -2475,43 +2638,43 @@ function assistantText(m) {
2475
2638
  }
2476
2639
  return out;
2477
2640
  }
2478
- function partToReactive(p35) {
2479
- if (p35.kind === "text" || p35.kind === "reasoning") {
2480
- return { kind: p35.kind, id: p35.id, textSig: signal(p35.text), doneSig: signal(p35.done) };
2641
+ function partToReactive(p36) {
2642
+ if (p36.kind === "text" || p36.kind === "reasoning") {
2643
+ return { kind: p36.kind, id: p36.id, textSig: signal(p36.text), doneSig: signal(p36.done) };
2481
2644
  }
2482
- if (p35.kind === "tool") {
2645
+ if (p36.kind === "tool") {
2483
2646
  return {
2484
2647
  kind: "tool",
2485
- toolCallId: p35.toolCallId,
2486
- toolName: p35.toolName,
2487
- inputPartialSig: signal(p35.inputPartial),
2488
- inputSig: signal(p35.input),
2489
- outputSig: signal(p35.output),
2490
- errorSig: signal(p35.error),
2491
- stateSig: signal(p35.state),
2492
- approvalSig: signal(p35.approval)
2648
+ toolCallId: p36.toolCallId,
2649
+ toolName: p36.toolName,
2650
+ inputPartialSig: signal(p36.inputPartial),
2651
+ inputSig: signal(p36.input),
2652
+ outputSig: signal(p36.output),
2653
+ errorSig: signal(p36.error),
2654
+ stateSig: signal(p36.state),
2655
+ approvalSig: signal(p36.approval)
2493
2656
  };
2494
2657
  }
2495
- return p35;
2658
+ return p36;
2496
2659
  }
2497
- function partFromReactive(p35) {
2498
- if (p35.kind === "text" || p35.kind === "reasoning") {
2499
- return { kind: p35.kind, id: p35.id, text: p35.textSig.value, done: p35.doneSig.value };
2660
+ function partFromReactive(p36) {
2661
+ if (p36.kind === "text" || p36.kind === "reasoning") {
2662
+ return { kind: p36.kind, id: p36.id, text: p36.textSig.value, done: p36.doneSig.value };
2500
2663
  }
2501
- if (p35.kind === "tool") {
2664
+ if (p36.kind === "tool") {
2502
2665
  return {
2503
2666
  kind: "tool",
2504
- toolCallId: p35.toolCallId,
2505
- toolName: p35.toolName,
2506
- inputPartial: p35.inputPartialSig.value,
2507
- input: p35.inputSig.value,
2508
- output: p35.outputSig.value,
2509
- error: p35.errorSig.value,
2510
- state: p35.stateSig.value,
2511
- approval: p35.approvalSig.value
2667
+ toolCallId: p36.toolCallId,
2668
+ toolName: p36.toolName,
2669
+ inputPartial: p36.inputPartialSig.value,
2670
+ input: p36.inputSig.value,
2671
+ output: p36.outputSig.value,
2672
+ error: p36.errorSig.value,
2673
+ state: p36.stateSig.value,
2674
+ approval: p36.approvalSig.value
2512
2675
  };
2513
2676
  }
2514
- return p35;
2677
+ return p36;
2515
2678
  }
2516
2679
 
2517
2680
  // src/stream/reducer.ts
@@ -2557,8 +2720,8 @@ var StreamReducer = class {
2557
2720
  ensureTextPart(m, "text", chunk.id);
2558
2721
  return;
2559
2722
  case "text-delta": {
2560
- const p35 = ensureTextPart(m, "text", chunk.id);
2561
- p35.textSig.value += chunk.delta;
2723
+ const p36 = ensureTextPart(m, "text", chunk.id);
2724
+ p36.textSig.value += chunk.delta;
2562
2725
  return;
2563
2726
  }
2564
2727
  case "text-end":
@@ -2568,8 +2731,8 @@ var StreamReducer = class {
2568
2731
  ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
2569
2732
  return;
2570
2733
  case "reasoning-delta": {
2571
- const p35 = ensureTextPart(m, "reasoning", chunk.id);
2572
- p35.textSig.value += chunk.delta;
2734
+ const p36 = ensureTextPart(m, "reasoning", chunk.id);
2735
+ p36.textSig.value += chunk.delta;
2573
2736
  return;
2574
2737
  }
2575
2738
  case "reasoning-end":
@@ -2619,19 +2782,19 @@ var StreamReducer = class {
2619
2782
  }
2620
2783
  };
2621
2784
  function ensureTextPart(m, kind, id) {
2622
- const existing = m.partsSig.value.find((p35) => p35.kind === kind && p35.id === id);
2785
+ const existing = m.partsSig.value.find((p36) => p36.kind === kind && p36.id === id);
2623
2786
  if (existing) return existing;
2624
2787
  const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
2625
2788
  appendPart(m, part);
2626
2789
  return part;
2627
2790
  }
2628
- function ensureToolPart(m, toolCallId, toolName) {
2629
- const existing = m.partsSig.value.find((p35) => p35.kind === "tool" && p35.toolCallId === toolCallId);
2791
+ function ensureToolPart(m, toolCallId, toolName2) {
2792
+ const existing = m.partsSig.value.find((p36) => p36.kind === "tool" && p36.toolCallId === toolCallId);
2630
2793
  if (existing) return existing;
2631
2794
  const part = {
2632
2795
  kind: "tool",
2633
2796
  toolCallId,
2634
- toolName: toolName ?? "tool",
2797
+ toolName: toolName2 ?? "tool",
2635
2798
  inputPartialSig: signal2(""),
2636
2799
  inputSig: signal2(void 0),
2637
2800
  outputSig: signal2(void 0),
@@ -2646,7 +2809,7 @@ function appendPart(m, part) {
2646
2809
  m.partsSig.value = [...m.partsSig.value, part];
2647
2810
  }
2648
2811
  function appendSource(m, source) {
2649
- if (m.partsSig.value.some((p35) => p35.kind === "source" && p35.sourceId === source.sourceId)) return;
2812
+ if (m.partsSig.value.some((p36) => p36.kind === "source" && p36.sourceId === source.sourceId)) return;
2650
2813
  appendPart(m, source);
2651
2814
  }
2652
2815
  function applyTool(m, chunk) {
@@ -2655,37 +2818,37 @@ function applyTool(m, chunk) {
2655
2818
  ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2656
2819
  return;
2657
2820
  case "tool-input-delta": {
2658
- const p35 = ensureToolPart(m, chunk.toolCallId);
2659
- p35.inputPartialSig.value += chunk.inputTextDelta;
2821
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2822
+ p36.inputPartialSig.value += chunk.inputTextDelta;
2660
2823
  return;
2661
2824
  }
2662
2825
  case "tool-input-available": {
2663
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2664
- p35.inputSig.value = chunk.input;
2665
- p35.stateSig.value = "input-available";
2826
+ const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2827
+ p36.inputSig.value = chunk.input;
2828
+ p36.stateSig.value = "input-available";
2666
2829
  return;
2667
2830
  }
2668
2831
  case "tool-approval-request": {
2669
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2670
- p35.approvalSig.value = { id: chunk.approvalId };
2671
- p35.stateSig.value = "approval-requested";
2832
+ const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2833
+ p36.approvalSig.value = { id: chunk.approvalId };
2834
+ p36.stateSig.value = "approval-requested";
2672
2835
  return;
2673
2836
  }
2674
2837
  case "tool-output-available": {
2675
- const p35 = ensureToolPart(m, chunk.toolCallId);
2676
- p35.outputSig.value = chunk.output;
2677
- p35.stateSig.value = "output-available";
2838
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2839
+ p36.outputSig.value = chunk.output;
2840
+ p36.stateSig.value = "output-available";
2678
2841
  return;
2679
2842
  }
2680
2843
  case "tool-output-error": {
2681
- const p35 = ensureToolPart(m, chunk.toolCallId);
2682
- p35.errorSig.value = chunk.errorText;
2683
- p35.stateSig.value = "output-error";
2844
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2845
+ p36.errorSig.value = chunk.errorText;
2846
+ p36.stateSig.value = "output-error";
2684
2847
  return;
2685
2848
  }
2686
2849
  case "tool-output-denied": {
2687
- const p35 = ensureToolPart(m, chunk.toolCallId);
2688
- p35.stateSig.value = "output-denied";
2850
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2851
+ p36.stateSig.value = "output-denied";
2689
2852
  return;
2690
2853
  }
2691
2854
  default:
@@ -3382,24 +3545,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
3382
3545
  import { useEffect as useEffect2, useRef } from "preact/hooks";
3383
3546
  import { jsx as jsx3 } from "preact/jsx-runtime";
3384
3547
  function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
3385
- const p35 = BRAND.cssPrefix;
3548
+ const p36 = BRAND.cssPrefix;
3386
3549
  const dragRef = useRef(null);
3387
3550
  useEffect2(() => {
3388
3551
  if (!panelEl) return;
3389
3552
  const style = panelEl.style;
3390
- if (resize.minWidth) style.setProperty(`--${p35}-resize-min-w`, resize.minWidth);
3391
- if (resize.maxWidth) style.setProperty(`--${p35}-resize-max-w`, resize.maxWidth);
3392
- if (resize.minHeight) style.setProperty(`--${p35}-resize-min-h`, resize.minHeight);
3393
- if (resize.maxHeight) style.setProperty(`--${p35}-resize-max-h`, resize.maxHeight);
3553
+ if (resize.minWidth) style.setProperty(`--${p36}-resize-min-w`, resize.minWidth);
3554
+ if (resize.maxWidth) style.setProperty(`--${p36}-resize-max-w`, resize.maxWidth);
3555
+ if (resize.minHeight) style.setProperty(`--${p36}-resize-min-h`, resize.minHeight);
3556
+ if (resize.maxHeight) style.setProperty(`--${p36}-resize-max-h`, resize.maxHeight);
3394
3557
  if (initialSize) {
3395
- style.setProperty(`--${p35}-widget-w`, `${initialSize.width}px`);
3396
- style.setProperty(`--${p35}-widget-h`, `${initialSize.height}px`);
3558
+ style.setProperty(`--${p36}-widget-w`, `${initialSize.width}px`);
3559
+ style.setProperty(`--${p36}-widget-h`, `${initialSize.height}px`);
3397
3560
  }
3398
- }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p35, initialSize]);
3561
+ }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
3399
3562
  if (!panelEl) return null;
3400
3563
  const isTop = position.startsWith("top-");
3401
3564
  const isRight = position.endsWith("-right");
3402
- const cornerClass = `${p35}-resize-grip ${p35}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
3565
+ const cornerClass = `${p36}-resize-grip ${p36}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
3403
3566
  const onPointerDown = (e) => {
3404
3567
  if (!panelEl) return;
3405
3568
  const target = e.currentTarget;
@@ -3424,8 +3587,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
3424
3587
  if (!d || e.pointerId !== d.pointerId || !panelEl) return;
3425
3588
  const dx = (e.clientX - d.startX) * d.dirX;
3426
3589
  const dy = (e.clientY - d.startY) * d.dirY;
3427
- panelEl.style.setProperty(`--${p35}-widget-w`, `${d.startW + dx}px`);
3428
- panelEl.style.setProperty(`--${p35}-widget-h`, `${d.startH + dy}px`);
3590
+ panelEl.style.setProperty(`--${p36}-widget-w`, `${d.startW + dx}px`);
3591
+ panelEl.style.setProperty(`--${p36}-widget-h`, `${d.startH + dy}px`);
3429
3592
  };
3430
3593
  const onPointerUp = (e) => {
3431
3594
  const d = dragRef.current;
@@ -4162,7 +4325,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
4162
4325
  // src/ui/overflow-menu.tsx
4163
4326
  import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
4164
4327
  function OverflowMenu({ items, triggerLabel }) {
4165
- const p35 = BRAND.cssPrefix;
4328
+ const p36 = BRAND.cssPrefix;
4166
4329
  const menu = usePopoverMenu({ itemCount: items.length });
4167
4330
  const handleSelect = (item) => {
4168
4331
  if (item.disabled) return;
@@ -4185,13 +4348,13 @@ function OverflowMenu({ items, triggerLabel }) {
4185
4348
  e.stopPropagation();
4186
4349
  pickSegment(item, segs[next].value);
4187
4350
  };
4188
- return /* @__PURE__ */ jsxs6("div", { class: `${p35}-menu-wrap`, children: [
4351
+ return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
4189
4352
  /* @__PURE__ */ jsx8(
4190
4353
  "button",
4191
4354
  {
4192
4355
  ref: menu.triggerRef,
4193
4356
  type: "button",
4194
- class: `${p35}-icon-btn`,
4357
+ class: `${p36}-icon-btn`,
4195
4358
  "aria-label": triggerLabel,
4196
4359
  "aria-haspopup": "menu",
4197
4360
  "aria-expanded": menu.open,
@@ -4205,7 +4368,7 @@ function OverflowMenu({ items, triggerLabel }) {
4205
4368
  "div",
4206
4369
  {
4207
4370
  ref: menu.menuRef,
4208
- class: `${p35}-menu`,
4371
+ class: `${p36}-menu`,
4209
4372
  role: "menu",
4210
4373
  "aria-label": triggerLabel,
4211
4374
  onKeyDown: menu.onMenuKey,
@@ -4215,14 +4378,14 @@ function OverflowMenu({ items, triggerLabel }) {
4215
4378
  "div",
4216
4379
  {
4217
4380
  role: "menuitem",
4218
- class: `${p35}-menu-item ${p35}-menu-item-segmented`,
4381
+ class: `${p36}-menu-item ${p36}-menu-item-segmented`,
4219
4382
  "aria-label": item.label,
4220
4383
  tabIndex: -1,
4221
4384
  onKeyDown: (e) => onSegmentRowKey(e, item),
4222
4385
  children: [
4223
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4224
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4225
- /* @__PURE__ */ jsx8("span", { class: `${p35}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
4386
+ item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
4387
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
4388
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
4226
4389
  const active = seg.value === item.value;
4227
4390
  return /* @__PURE__ */ jsx8(
4228
4391
  "button",
@@ -4230,7 +4393,7 @@ function OverflowMenu({ items, triggerLabel }) {
4230
4393
  type: "button",
4231
4394
  role: "menuitemradio",
4232
4395
  "aria-checked": active,
4233
- class: `${p35}-segment`,
4396
+ class: `${p36}-segment`,
4234
4397
  "data-on": active ? "true" : void 0,
4235
4398
  lang: seg.lang,
4236
4399
  title: seg.value,
@@ -4250,14 +4413,14 @@ function OverflowMenu({ items, triggerLabel }) {
4250
4413
  {
4251
4414
  type: "button",
4252
4415
  role: "menuitem",
4253
- class: `${p35}-menu-item`,
4416
+ class: `${p36}-menu-item`,
4254
4417
  "aria-pressed": item.type === "switch" ? item.on : void 0,
4255
4418
  disabled: item.disabled,
4256
4419
  onClick: () => handleSelect(item),
4257
4420
  children: [
4258
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4259
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4260
- item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
4421
+ item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
4422
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
4423
+ item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
4261
4424
  ]
4262
4425
  },
4263
4426
  item.id
@@ -4500,6 +4663,7 @@ function DynamicForm({
4500
4663
  onSubmit,
4501
4664
  skipLabel,
4502
4665
  onSkip,
4666
+ footerHint,
4503
4667
  disabled,
4504
4668
  rootTestId,
4505
4669
  submitTestId,
@@ -4546,6 +4710,7 @@ function DynamicForm({
4546
4710
  field.name
4547
4711
  )),
4548
4712
  /* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
4713
+ footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
4549
4714
  skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
4550
4715
  /* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
4551
4716
  ] })
@@ -4800,9 +4965,9 @@ function FormDoneMarker({
4800
4965
  import { useComputed as useComputed5 } from "@preact/signals";
4801
4966
 
4802
4967
  // src/stream/constants.ts
4803
- function isAskUserInputTool(toolName) {
4804
- if (!toolName) return false;
4805
- const name = toolName.startsWith("tool:") ? toolName.slice(5) : toolName;
4968
+ function isAskUserInputTool(toolName2) {
4969
+ if (!toolName2) return false;
4970
+ const name = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
4806
4971
  return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
4807
4972
  }
4808
4973
 
@@ -4896,36 +5061,92 @@ function SourceView({ part, strings }) {
4896
5061
 
4897
5062
  // src/ui/tool-approval.tsx
4898
5063
  import { useComputed as useComputed2, useSignal } from "@preact/signals";
4899
- import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
5064
+
5065
+ // src/ui/tool-card.tsx
5066
+ import { jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
4900
5067
  var p13 = BRAND.cssPrefix;
4901
- function displayToolName(toolName) {
4902
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ");
5068
+ function toolName(raw) {
5069
+ if (raw.startsWith("tool:")) return raw.slice(5);
5070
+ if (raw.startsWith("tool-")) return raw.slice(5);
5071
+ return raw;
5072
+ }
5073
+ function statusOf(state, approval) {
5074
+ if (state === "output-error") return "error";
5075
+ if (state === "output-denied" || approval?.approved === false) return "denied";
5076
+ if (state === "output-available") return "completed";
5077
+ if (approval?.approved === true) return "approved";
5078
+ return "pending";
5079
+ }
5080
+ var ICON = {
5081
+ completed: "\u2713",
5082
+ approved: "\u2713",
5083
+ denied: "\u2715",
5084
+ error: "\u26A0",
5085
+ pending: "\u2022"
5086
+ };
5087
+ function ToolStatus({
5088
+ state,
5089
+ approval,
5090
+ strings
5091
+ }) {
5092
+ const status = statusOf(state, approval);
5093
+ const label = status === "completed" ? strings.statusCompleted : status === "approved" ? strings.approved : status === "denied" ? strings.statusDenied : status === "error" ? strings.statusError : "";
5094
+ if (!label) return null;
5095
+ return /* @__PURE__ */ jsxs11("span", { class: `${p13}-toolui-status`, "data-status": status, children: [
5096
+ /* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-status-icon`, "aria-hidden": "true", children: ICON[status] }),
5097
+ label
5098
+ ] });
5099
+ }
5100
+ function ToolSection({ label, value, error }) {
5101
+ const text = error ? String(value ?? "") : pretty(unwrapResult(value));
5102
+ if (!text) return null;
5103
+ return /* @__PURE__ */ jsxs11("div", { class: `${p13}-toolui-section`, children: [
5104
+ /* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-label`, children: label }),
5105
+ /* @__PURE__ */ jsx14("pre", { class: `${p13}-toolui-code`, "data-error": error ? "true" : void 0, children: text })
5106
+ ] });
5107
+ }
5108
+ function unwrapResult(output) {
5109
+ if (output && typeof output === "object") {
5110
+ const rec = output;
5111
+ if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5112
+ }
5113
+ return output;
4903
5114
  }
5115
+ function pretty(value) {
5116
+ if (value == null) return "";
5117
+ try {
5118
+ const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5119
+ if (!json || json === "{}" || json === "[]" || json === '""') return "";
5120
+ return json.length > 800 ? `${json.slice(0, 800)}\u2026` : json;
5121
+ } catch {
5122
+ return "";
5123
+ }
5124
+ }
5125
+
5126
+ // src/ui/tool-approval.tsx
5127
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
5128
+ var p14 = BRAND.cssPrefix;
4904
5129
  function ToolApproval({ part, strings, active, onDecision }) {
4905
5130
  const approval = useComputed2(() => part.approvalSig.value);
5131
+ const state = useComputed2(() => part.stateSig.value);
4906
5132
  const input = useComputed2(() => part.inputSig.value);
5133
+ const output = useComputed2(() => part.outputSig.value);
5134
+ const error = useComputed2(() => part.errorSig.value);
4907
5135
  const reason = useSignal("");
4908
- const decided = approval.value?.approved !== void 0;
4909
- if (decided) {
4910
- const ap = approval.value;
4911
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval ${p13}-tool-decided`, "data-testid": TID.toolDecision, children: [
4912
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-label`, "data-approved": ap?.approved ? "true" : "false", children: ap?.approved ? strings.approved : strings.rejected }),
4913
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) }),
4914
- ap?.reason ? /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-value`, children: ap.reason }) : null
4915
- ] });
4916
- }
4917
- const args = summarizeInput(input.value);
4918
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval`, "data-testid": TID.toolApproval, children: [
4919
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-head`, children: [
4920
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-badge`, children: strings.approvalRequired }),
4921
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) })
5136
+ const decided = approval.value?.approved !== void 0 || state.value !== "approval-requested";
5137
+ return /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui`, "data-testid": decided ? TID.toolDecision : TID.toolApproval, children: [
5138
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui-head`, children: [
5139
+ /* @__PURE__ */ jsx15("strong", { class: `${p14}-toolui-title`, children: toolName(part.toolName) }),
5140
+ 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 })
4922
5141
  ] }),
4923
- args ? /* @__PURE__ */ jsx14("pre", { class: `${p13}-tool-args`, children: args }) : null,
4924
- active ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
4925
- /* @__PURE__ */ jsx14(
5142
+ /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolParameters, value: input.value }),
5143
+ output.value !== void 0 ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolResult, value: output.value }) : null,
5144
+ error.value ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null,
5145
+ decided ? null : active ? /* @__PURE__ */ jsxs12(Fragment2, { children: [
5146
+ /* @__PURE__ */ jsx15(
4926
5147
  "input",
4927
5148
  {
4928
- class: `${p13}-field-input`,
5149
+ class: `${p14}-field-input`,
4929
5150
  value: reason.value,
4930
5151
  placeholder: strings.approvalReason,
4931
5152
  onInput: (e) => {
@@ -4933,40 +5154,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
4933
5154
  }
4934
5155
  }
4935
5156
  ),
4936
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-form-actions`, children: [
4937
- /* @__PURE__ */ jsx14(
5157
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5158
+ /* @__PURE__ */ jsx15(
4938
5159
  "button",
4939
5160
  {
4940
5161
  type: "button",
4941
- class: `${p13}-tool-reject`,
5162
+ class: `${p14}-form-skip`,
4942
5163
  onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
4943
5164
  "data-testid": TID.toolReject,
4944
5165
  children: strings.reject
4945
5166
  }
4946
5167
  ),
4947
- /* @__PURE__ */ jsx14(
5168
+ /* @__PURE__ */ jsx15(
4948
5169
  "button",
4949
5170
  {
4950
5171
  type: "button",
4951
- class: `${p13}-tool-approve`,
5172
+ class: `${p14}-form-submit`,
4952
5173
  onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
4953
5174
  "data-testid": TID.toolApprove,
4954
5175
  children: strings.approve
4955
5176
  }
4956
5177
  )
4957
5178
  ] })
4958
- ] }) : /* @__PURE__ */ jsx14("p", { class: `${p13}-tool-stale-note`, children: strings.stepNoLongerActive })
5179
+ ] }) : (
5180
+ // eslint-disable-next-line unicorn/no-nested-ternary -- decided → none; active → controls; stale → note
5181
+ /* @__PURE__ */ jsx15("p", { class: `${p14}-toolui-note`, children: strings.stepNoLongerActive })
5182
+ )
4959
5183
  ] });
4960
5184
  }
4961
- function summarizeInput(input) {
4962
- if (input == null) return "";
4963
- try {
4964
- const json = typeof input === "string" ? input : JSON.stringify(input, null, 2);
4965
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
4966
- } catch {
4967
- return "";
4968
- }
4969
- }
4970
5185
 
4971
5186
  // src/ui/tool-ask-input.tsx
4972
5187
  import { useComputed as useComputed3 } from "@preact/signals";
@@ -5026,8 +5241,20 @@ function num(v) {
5026
5241
  }
5027
5242
 
5028
5243
  // src/ui/tool-ask-input.tsx
5029
- import { jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
5030
- var p14 = BRAND.cssPrefix;
5244
+ import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5245
+ var p15 = BRAND.cssPrefix;
5246
+ function responseTypeLabel(req, s) {
5247
+ switch (req.responseType) {
5248
+ case "single-choice":
5249
+ return s.respSingleChoice;
5250
+ case "multi-choice":
5251
+ return s.respMultiChoice;
5252
+ case "confirmation":
5253
+ return s.respConfirmation;
5254
+ default:
5255
+ return s.respFreeText;
5256
+ }
5257
+ }
5031
5258
  function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
5032
5259
  const state = useComputed3(() => part.stateSig.value);
5033
5260
  const approval = useComputed3(() => part.approvalSig.value);
@@ -5039,71 +5266,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
5039
5266
  else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
5040
5267
  else onSubmit(part.toolCallId, accepted ? { answer } : {});
5041
5268
  };
5269
+ const req = request.value;
5042
5270
  if (decided) {
5043
- return /* @__PURE__ */ jsx15(DecidedSummary, { part, strings });
5271
+ return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
5044
5272
  }
5045
- if (!active) {
5046
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-stale`, "data-testid": TID.toolAskInput, children: [
5047
- /* @__PURE__ */ jsx15(Header, { strings, title: request.value.title ?? request.value.question }),
5048
- /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-stale-note`, children: strings.stepNoLongerActive })
5049
- ] });
5050
- }
5051
- const req = request.value;
5052
- const isConfirmation = req.responseType === "confirmation";
5053
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input`, "data-testid": TID.toolAskInput, children: [
5054
- /* @__PURE__ */ jsx15(Header, { strings, title: req.title }),
5055
- req.description ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-desc`, children: req.description }) : null,
5056
- isConfirmation ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-question`, children: req.question }) : null,
5057
- isConfirmation ? /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5058
- /* @__PURE__ */ jsx15(
5273
+ const stale = !active;
5274
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui${stale ? ` ${p15}-toolui-stale` : ""}`, "data-testid": TID.toolAskInput, children: [
5275
+ /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
5276
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputRequired }),
5277
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: responseTypeLabel(req, strings) })
5278
+ ] }),
5279
+ req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
5280
+ /* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
5281
+ stale ? /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-note`, children: strings.stepNoLongerActive }) : /* @__PURE__ */ jsx16(AskBody, { req, strings, resolve })
5282
+ ] });
5283
+ }
5284
+ function AskBody({
5285
+ req,
5286
+ strings,
5287
+ resolve
5288
+ }) {
5289
+ if (req.responseType === "confirmation") {
5290
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-form-actions`, children: [
5291
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-form-hint`, children: strings.inputSubmitHint }),
5292
+ /* @__PURE__ */ jsx16(
5059
5293
  "button",
5060
5294
  {
5061
5295
  type: "button",
5062
- class: `${p14}-form-skip`,
5296
+ class: `${p15}-form-skip`,
5063
5297
  onClick: () => resolve(void 0, false),
5064
5298
  "data-testid": TID.toolInputSkip,
5065
5299
  children: strings.reject
5066
5300
  }
5067
5301
  ),
5068
- /* @__PURE__ */ jsx15(
5302
+ /* @__PURE__ */ jsx16(
5069
5303
  "button",
5070
5304
  {
5071
5305
  type: "button",
5072
- class: `${p14}-form-submit`,
5306
+ class: `${p15}-form-submit`,
5073
5307
  onClick: () => resolve(void 0, true),
5074
5308
  "data-testid": TID.toolInputSubmit,
5075
5309
  children: strings.approve
5076
5310
  }
5077
5311
  )
5078
- ] }) : /* @__PURE__ */ jsx15(
5079
- DynamicForm,
5080
- {
5081
- fields: askInputToFields(req),
5082
- strings,
5083
- submitLabel: strings.inputSubmit,
5084
- onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5085
- skipLabel: req.required === false ? strings.inputSkip : void 0,
5086
- onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5087
- submitTestId: TID.toolInputSubmit,
5088
- skipTestId: TID.toolInputSkip
5089
- }
5090
- )
5091
- ] });
5312
+ ] });
5313
+ }
5314
+ const fields = askInputToFields(req).map((f) => {
5315
+ f.label = strings.inputYourAnswer;
5316
+ return f;
5317
+ });
5318
+ return /* @__PURE__ */ jsx16(
5319
+ DynamicForm,
5320
+ {
5321
+ fields,
5322
+ strings,
5323
+ submitLabel: strings.inputSubmit,
5324
+ footerHint: strings.inputSubmitHint,
5325
+ onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5326
+ skipLabel: req.required === false ? strings.inputSkip : void 0,
5327
+ onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5328
+ submitTestId: TID.toolInputSubmit,
5329
+ skipTestId: TID.toolInputSkip
5330
+ }
5331
+ );
5092
5332
  }
5093
- function Header({ strings, title }) {
5094
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-head`, children: [
5095
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-badge`, children: strings.inputRequired }),
5096
- title ? /* @__PURE__ */ jsx15("strong", { class: `${p14}-tool-title`, children: title }) : null
5333
+ function Section({ label, text }) {
5334
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-section`, children: [
5335
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-label`, children: label }),
5336
+ /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-text`, children: text })
5097
5337
  ] });
5098
5338
  }
5099
- function DecidedSummary({ part, strings }) {
5339
+ function DecidedCard({
5340
+ part,
5341
+ strings,
5342
+ req
5343
+ }) {
5100
5344
  const output = useComputed3(() => part.outputSig.value);
5101
5345
  const approval = useComputed3(() => part.approvalSig.value);
5102
- const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5103
5346
  const skipped = approval.value?.approved === false;
5104
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-decided`, "data-testid": TID.toolDecision, children: [
5105
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-label`, children: skipped ? strings.inputSkip : strings.inputSubmitted }),
5106
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-value`, children: skipped ? "" : answer || strings.inputSubmitted })
5347
+ const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5348
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui`, "data-testid": TID.toolDecision, children: [
5349
+ /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
5350
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputBadge }),
5351
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: skipped ? strings.inputSkipped : strings.inputAnswered })
5352
+ ] }),
5353
+ req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
5354
+ /* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
5355
+ !skipped && answer ? /* @__PURE__ */ jsx16(Section, { label: strings.inputResponse, text: answer }) : null
5107
5356
  ] });
5108
5357
  }
5109
5358
  function summarizeOutput(output) {
@@ -5112,6 +5361,7 @@ function summarizeOutput(output) {
5112
5361
  if (typeof output === "object") {
5113
5362
  const rec = output;
5114
5363
  if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
5364
+ if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
5115
5365
  return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
5116
5366
  }
5117
5367
  return String(output);
@@ -5119,52 +5369,30 @@ function summarizeOutput(output) {
5119
5369
 
5120
5370
  // src/ui/tool-call.tsx
5121
5371
  import { useComputed as useComputed4 } from "@preact/signals";
5122
- import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5123
- var p15 = BRAND.cssPrefix;
5124
- function displayToolName2(toolName) {
5125
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
5126
- }
5372
+ import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5373
+ var p16 = BRAND.cssPrefix;
5127
5374
  function ToolCall({ part, strings }) {
5128
- const details = useComputed4(() => pretty(part.inputSig.value));
5129
- const result = useComputed4(() => part.errorSig.value ?? pretty(unwrapResult(part.outputSig.value)));
5130
- const isError = useComputed4(() => !!part.errorSig.value);
5131
- if (!details.value && !result.value) return null;
5132
- return /* @__PURE__ */ jsxs13("details", { class: `${p15}-tool-call`, "data-testid": TID.toolCall, children: [
5133
- /* @__PURE__ */ jsxs13("summary", { class: `${p15}-tool-call-summary`, children: [
5134
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-badge`, children: strings.usedTool }),
5135
- /* @__PURE__ */ jsx16("strong", { class: `${p15}-tool-title`, children: displayToolName2(part.toolName) })
5375
+ const input = useComputed4(() => part.inputSig.value);
5376
+ const output = useComputed4(() => part.outputSig.value);
5377
+ const error = useComputed4(() => part.errorSig.value);
5378
+ const state = useComputed4(() => part.stateSig.value);
5379
+ const approval = useComputed4(() => part.approvalSig.value);
5380
+ const hasDetails = useComputed4(() => !!pretty(input.value) || !!error.value || !!pretty(unwrapResult(output.value)));
5381
+ if (!hasDetails.value) return null;
5382
+ return /* @__PURE__ */ jsxs14("details", { class: `${p16}-toolui ${p16}-toolui-collapsible`, "data-testid": TID.toolCall, children: [
5383
+ /* @__PURE__ */ jsxs14("summary", { class: `${p16}-toolui-head`, children: [
5384
+ /* @__PURE__ */ jsx17("strong", { class: `${p16}-toolui-title`, children: toolName(part.toolName) }),
5385
+ /* @__PURE__ */ jsx17(ToolStatus, { state: state.value, approval: approval.value, strings })
5136
5386
  ] }),
5137
- details.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, children: [
5138
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolDetails }),
5139
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: details.value })
5140
- ] }) : null,
5141
- result.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, "data-error": isError.value ? "true" : void 0, children: [
5142
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolResult }),
5143
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: result.value })
5144
- ] }) : null
5387
+ /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolParameters, value: input.value }),
5388
+ output.value !== void 0 ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolResult, value: output.value }) : null,
5389
+ error.value ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null
5145
5390
  ] });
5146
5391
  }
5147
- function unwrapResult(output) {
5148
- if (output && typeof output === "object") {
5149
- const rec = output;
5150
- if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5151
- }
5152
- return output;
5153
- }
5154
- function pretty(value) {
5155
- if (value == null) return "";
5156
- try {
5157
- const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5158
- if (!json || json === "{}" || json === "[]" || json === '""') return "";
5159
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
5160
- } catch {
5161
- return "";
5162
- }
5163
- }
5164
5392
 
5165
5393
  // src/ui/message-bubble.tsx
5166
- import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5167
- var p16 = BRAND.cssPrefix;
5394
+ import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5395
+ var p17 = BRAND.cssPrefix;
5168
5396
  function MessageBubble({
5169
5397
  message,
5170
5398
  strings,
@@ -5188,9 +5416,9 @@ function MessageBubble({
5188
5416
  const working = streaming && !hasAnswerText.value;
5189
5417
  const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
5190
5418
  const stamp = formatStamp(message.createdAt);
5191
- 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: [
5192
- /* @__PURE__ */ jsxs14("div", { class: `${p16}-bubble`, children: [
5193
- bufferedHold ? /* @__PURE__ */ jsx17(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx17(
5419
+ 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: [
5420
+ /* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble`, children: [
5421
+ bufferedHold ? /* @__PURE__ */ jsx18(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx18(
5194
5422
  PartView,
5195
5423
  {
5196
5424
  part,
@@ -5204,10 +5432,10 @@ function MessageBubble({
5204
5432
  },
5205
5433
  partKey(part)
5206
5434
  )),
5207
- showStreamDots && /* @__PURE__ */ jsx17(TypingDots, {}),
5208
- message.status === "error" && message.errorText ? /* @__PURE__ */ jsx17("div", { class: `${p16}-error`, role: "alert", children: /* @__PURE__ */ jsx17("span", { children: message.errorText }) }) : null
5435
+ showStreamDots && /* @__PURE__ */ jsx18(TypingDots, {}),
5436
+ message.status === "error" && message.errorText ? /* @__PURE__ */ jsx18("div", { class: `${p17}-error`, role: "alert", children: /* @__PURE__ */ jsx18("span", { children: message.errorText }) }) : null
5209
5437
  ] }),
5210
- stamp ? /* @__PURE__ */ jsx17("time", { class: `${p16}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
5438
+ stamp ? /* @__PURE__ */ jsx18("time", { class: `${p17}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
5211
5439
  ] }) });
5212
5440
  }
5213
5441
  function formatStamp(createdAt) {
@@ -5237,11 +5465,11 @@ function PartView({
5237
5465
  case "step-start":
5238
5466
  return null;
5239
5467
  case "text":
5240
- return /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5468
+ return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5241
5469
  case "reasoning":
5242
- return showReasoning ? /* @__PURE__ */ jsx17(ReasoningView, { part, active, strings }) : null;
5470
+ return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
5243
5471
  case "tool":
5244
- return /* @__PURE__ */ jsx17(
5472
+ return /* @__PURE__ */ jsx18(
5245
5473
  ToolPartView,
5246
5474
  {
5247
5475
  part,
@@ -5253,11 +5481,11 @@ function PartView({
5253
5481
  );
5254
5482
  case "file":
5255
5483
  if (part.mediaType.startsWith("image/")) {
5256
- return /* @__PURE__ */ jsx17("img", { src: part.url, alt: "", loading: "lazy" });
5484
+ return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
5257
5485
  }
5258
- return /* @__PURE__ */ jsx17("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
5486
+ return /* @__PURE__ */ jsx18("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
5259
5487
  case "source":
5260
- return showSources ? /* @__PURE__ */ jsx17(SourceView, { part, strings }) : null;
5488
+ return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
5261
5489
  }
5262
5490
  }
5263
5491
  function ToolPartView({
@@ -5270,7 +5498,7 @@ function ToolPartView({
5270
5498
  const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
5271
5499
  if (tool?.humanInLoop) {
5272
5500
  if (isAskUserInputTool(part.toolName)) {
5273
- return /* @__PURE__ */ jsx17(
5501
+ return /* @__PURE__ */ jsx18(
5274
5502
  ToolAskInput,
5275
5503
  {
5276
5504
  part,
@@ -5282,19 +5510,19 @@ function ToolPartView({
5282
5510
  );
5283
5511
  }
5284
5512
  if (hasApproval.value) {
5285
- return /* @__PURE__ */ jsx17(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5513
+ return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5286
5514
  }
5287
5515
  }
5288
- return showToolCalls ? /* @__PURE__ */ jsx17(ToolCall, { part, strings }) : null;
5516
+ return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
5289
5517
  }
5290
5518
  function ReasoningView({
5291
5519
  part,
5292
5520
  active,
5293
5521
  strings
5294
5522
  }) {
5295
- return /* @__PURE__ */ jsxs14("details", { class: `${p16}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5296
- /* @__PURE__ */ jsx17("summary", { class: `${p16}-reasoning-summary`, children: /* @__PURE__ */ jsx17("span", { class: `${p16}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5297
- /* @__PURE__ */ jsx17("div", { class: `${p16}-reasoning-body`, children: /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
5523
+ return /* @__PURE__ */ jsxs15("details", { class: `${p17}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5524
+ /* @__PURE__ */ jsx18("summary", { class: `${p17}-reasoning-summary`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5525
+ /* @__PURE__ */ jsx18("div", { class: `${p17}-reasoning-body`, children: /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
5298
5526
  ] });
5299
5527
  }
5300
5528
  function partKey(part) {
@@ -5312,22 +5540,22 @@ function partKey(part) {
5312
5540
  }
5313
5541
  }
5314
5542
  function TypingDots() {
5315
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-typing`, "aria-hidden": "true", children: [
5316
- /* @__PURE__ */ jsx17("span", {}),
5317
- /* @__PURE__ */ jsx17("span", {}),
5318
- /* @__PURE__ */ jsx17("span", {})
5543
+ return /* @__PURE__ */ jsxs15("span", { class: `${p17}-typing`, "aria-hidden": "true", children: [
5544
+ /* @__PURE__ */ jsx18("span", {}),
5545
+ /* @__PURE__ */ jsx18("span", {}),
5546
+ /* @__PURE__ */ jsx18("span", {})
5319
5547
  ] });
5320
5548
  }
5321
5549
  function LoadingSpinner({ label }) {
5322
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-loading`, role: "status", children: [
5323
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-spinner`, "aria-hidden": "true" }),
5324
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-label`, children: label })
5550
+ return /* @__PURE__ */ jsxs15("span", { class: `${p17}-loading`, role: "status", children: [
5551
+ /* @__PURE__ */ jsx18("span", { class: `${p17}-loading-spinner`, "aria-hidden": "true" }),
5552
+ /* @__PURE__ */ jsx18("span", { class: `${p17}-loading-label`, children: label })
5325
5553
  ] });
5326
5554
  }
5327
5555
 
5328
5556
  // src/ui/message-list.tsx
5329
- import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5330
- var p17 = BRAND.cssPrefix;
5557
+ import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5558
+ var p18 = BRAND.cssPrefix;
5331
5559
  var STICK_THRESHOLD = 120;
5332
5560
  var INTERACTION_GRACE_MS = 350;
5333
5561
  var DIVIDER_IDLE_MS = 1200;
@@ -5498,7 +5726,7 @@ function MessageList({
5498
5726
  const pendingMarkers = [...formMarkers ?? []].toSorted(
5499
5727
  (a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
5500
5728
  );
5501
- const markerRow = (marker) => /* @__PURE__ */ jsx18(
5729
+ const markerRow = (marker) => /* @__PURE__ */ jsx19(
5502
5730
  FormDoneMarker,
5503
5731
  {
5504
5732
  marker,
@@ -5519,12 +5747,12 @@ function MessageList({
5519
5747
  const day = dayKey(m.createdAt);
5520
5748
  if (day && day !== prevDay) {
5521
5749
  rows.push(
5522
- /* @__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}`)
5750
+ /* @__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}`)
5523
5751
  );
5524
5752
  prevDay = day;
5525
5753
  }
5526
5754
  rows.push(
5527
- /* @__PURE__ */ jsx18(
5755
+ /* @__PURE__ */ jsx19(
5528
5756
  MessageBubble,
5529
5757
  {
5530
5758
  message: m,
@@ -5543,33 +5771,33 @@ function MessageList({
5543
5771
  for (const marker of pendingMarkers) {
5544
5772
  rows.push(markerRow(marker));
5545
5773
  }
5546
- return /* @__PURE__ */ jsxs15("div", { class: `${p17}-list-wrap`, children: [
5547
- /* @__PURE__ */ jsxs15(
5774
+ return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
5775
+ /* @__PURE__ */ jsxs16(
5548
5776
  "div",
5549
5777
  {
5550
5778
  ref,
5551
- class: `${p17}-list`,
5779
+ class: `${p18}-list`,
5552
5780
  role: "log",
5553
5781
  "aria-live": "polite",
5554
5782
  "aria-relevant": "additions text",
5555
5783
  "data-scrolling": scrolling ? "true" : void 0,
5556
5784
  children: [
5557
- loading && messages.value.length === 0 ? /* @__PURE__ */ jsx18("div", { class: `${p17}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
5785
+ loading && messages.value.length === 0 ? /* @__PURE__ */ jsx19("div", { class: `${p18}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
5558
5786
  rows,
5559
- form ? /* @__PURE__ */ jsx18(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
5787
+ form ? /* @__PURE__ */ jsx19(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
5560
5788
  ]
5561
5789
  }
5562
5790
  ),
5563
- showJump ? /* @__PURE__ */ jsx18(
5791
+ showJump ? /* @__PURE__ */ jsx19(
5564
5792
  "button",
5565
5793
  {
5566
5794
  type: "button",
5567
- class: `${p17}-jump`,
5795
+ class: `${p18}-jump`,
5568
5796
  onClick: jumpToBottom,
5569
5797
  "aria-label": strings.scrollToBottom,
5570
5798
  title: strings.scrollToBottom,
5571
5799
  "data-testid": TID.scrollToBottom,
5572
- children: /* @__PURE__ */ jsx18(ChevronDownIcon, {})
5800
+ children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
5573
5801
  }
5574
5802
  ) : null
5575
5803
  ] });
@@ -5628,7 +5856,7 @@ function startOfDay(ms) {
5628
5856
  }
5629
5857
 
5630
5858
  // src/ui/conversation-list.tsx
5631
- import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5859
+ import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs17 } from "preact/jsx-runtime";
5632
5860
  var log12 = logger.scope("history");
5633
5861
  var DEFAULT_SKELETON_ROWS = 3;
5634
5862
  var MAX_SKELETON_ROWS = 6;
@@ -5655,7 +5883,7 @@ function ConversationList({
5655
5883
  onSelect,
5656
5884
  onNewConversation
5657
5885
  }) {
5658
- const p35 = BRAND.cssPrefix;
5886
+ const p36 = BRAND.cssPrefix;
5659
5887
  const seed = transport.peekConversations({ visitorId });
5660
5888
  const [state, setState] = useState7(seed ? "loaded" : "loading");
5661
5889
  const [conversations, setChats] = useState7(seed?.conversations ?? []);
@@ -5676,32 +5904,32 @@ function ConversationList({
5676
5904
  cancelled = true;
5677
5905
  };
5678
5906
  }, [transport, visitorId, persistence]);
5679
- const newChatButton = onNewConversation ? /* @__PURE__ */ jsx19("div", { class: `${p35}-history-footer`, children: /* @__PURE__ */ jsxs16(
5907
+ const newChatButton = onNewConversation ? /* @__PURE__ */ jsx20("div", { class: `${p36}-history-footer`, children: /* @__PURE__ */ jsxs17(
5680
5908
  "button",
5681
5909
  {
5682
5910
  type: "button",
5683
- class: `${p35}-history-new`,
5911
+ class: `${p36}-history-new`,
5684
5912
  onClick: onNewConversation,
5685
5913
  "data-testid": TID.sidebarNewConversation,
5686
5914
  children: [
5687
- /* @__PURE__ */ jsx19(PlusIcon, {}),
5915
+ /* @__PURE__ */ jsx20(PlusIcon, {}),
5688
5916
  strings.newConversation
5689
5917
  ]
5690
5918
  }
5691
5919
  ) }) : null;
5692
5920
  if (state === "loading") {
5693
5921
  const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
5694
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5695
- /* @__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: [
5696
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-heading` }) }),
5697
- /* @__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: [
5698
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar ${p35}-skeleton` }),
5699
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5700
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5701
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-title` }) }),
5702
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-time`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-time` }) })
5922
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5923
+ /* @__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: [
5924
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-heading` }) }),
5925
+ /* @__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: [
5926
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar ${p36}-skeleton` }),
5927
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
5928
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5929
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-title` }) }),
5930
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-time` }) })
5703
5931
  ] }),
5704
- /* @__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` }) }) })
5932
+ /* @__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` }) }) })
5705
5933
  ] })
5706
5934
  ] }, i)) })
5707
5935
  ] }) }),
@@ -5709,36 +5937,36 @@ function ConversationList({
5709
5937
  ] });
5710
5938
  }
5711
5939
  if (state === "error" || conversations.length === 0) {
5712
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5713
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-empty`, children: strings.historyEmpty }),
5940
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5941
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-empty`, children: strings.historyEmpty }),
5714
5942
  newChatButton
5715
5943
  ] });
5716
5944
  }
5717
5945
  const now = Date.now();
5718
5946
  const groups = groupByBucket(now, conversations);
5719
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5720
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-group`, children: [
5721
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5722
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs16(
5947
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5948
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, children: [
5949
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5950
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs17(
5723
5951
  "button",
5724
5952
  {
5725
5953
  type: "button",
5726
5954
  role: "listitem",
5727
- class: `${p35}-history-item`,
5955
+ class: `${p36}-history-item`,
5728
5956
  onClick: () => onSelect(chat),
5729
5957
  "data-closed": chat.canContinue ? void 0 : "true",
5730
5958
  "data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
5731
5959
  "data-testid": tid(TID.historyItem, chat.conversationId),
5732
5960
  children: [
5733
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx19(MessageIcon, {}) }),
5734
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5735
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5736
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: chat.title }),
5737
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
5961
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx20(MessageIcon, {}) }),
5962
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
5963
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5964
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: chat.title }),
5965
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
5738
5966
  ] }),
5739
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5740
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5741
- (chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx19("span", { class: `${p35}-history-dot` }) : null
5967
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5968
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5969
+ (chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx20("span", { class: `${p36}-history-dot` }) : null
5742
5970
  ] })
5743
5971
  ] })
5744
5972
  ]
@@ -5751,15 +5979,15 @@ function ConversationList({
5751
5979
  }
5752
5980
 
5753
5981
  // src/ui/suggestions.tsx
5754
- import { jsx as jsx20 } from "preact/jsx-runtime";
5755
- var p18 = BRAND.cssPrefix;
5982
+ import { jsx as jsx21 } from "preact/jsx-runtime";
5983
+ var p19 = BRAND.cssPrefix;
5756
5984
  function Suggestions({ suggestions, onPick }) {
5757
5985
  if (suggestions.length === 0) return null;
5758
- return /* @__PURE__ */ jsx20("div", { class: `${p18}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx20(
5986
+ return /* @__PURE__ */ jsx21("div", { class: `${p19}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx21(
5759
5987
  "button",
5760
5988
  {
5761
5989
  type: "button",
5762
- class: `${p18}-suggestion`,
5990
+ class: `${p19}-suggestion`,
5763
5991
  onClick: () => onPick(s),
5764
5992
  "data-testid": tid(TID.suggestion, i),
5765
5993
  children: s.label
@@ -5769,8 +5997,8 @@ function Suggestions({ suggestions, onPick }) {
5769
5997
  }
5770
5998
 
5771
5999
  // src/ui/panel.tsx
5772
- import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs17 } from "preact/jsx-runtime";
5773
- var p19 = BRAND.cssPrefix;
6000
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
6001
+ var p20 = BRAND.cssPrefix;
5774
6002
  function Panel(props2) {
5775
6003
  const { options, onClose } = props2;
5776
6004
  const s = options.strings;
@@ -5794,18 +6022,18 @@ function Panel(props2) {
5794
6022
  }, []);
5795
6023
  const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
5796
6024
  useDragMove(containerRef.current, options.mode === "modal");
5797
- return /* @__PURE__ */ jsxs17(
6025
+ return /* @__PURE__ */ jsxs18(
5798
6026
  "div",
5799
6027
  {
5800
6028
  ref: containerRef,
5801
- class: `${p19}-panel`,
6029
+ class: `${p20}-panel`,
5802
6030
  role: "dialog",
5803
6031
  "aria-modal": "false",
5804
6032
  "aria-label": s.panelTitle,
5805
6033
  style: { position: "relative" },
5806
6034
  "data-testid": TID.panel,
5807
6035
  children: [
5808
- /* @__PURE__ */ jsx21(
6036
+ /* @__PURE__ */ jsx22(
5809
6037
  PanelContent,
5810
6038
  {
5811
6039
  ...props2,
@@ -5814,7 +6042,7 @@ function Panel(props2) {
5814
6042
  composerAttachApiRef
5815
6043
  }
5816
6044
  ),
5817
- /* @__PURE__ */ jsx21(PoweredByBar, { poweredBy: props2.options.poweredBy })
6045
+ /* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
5818
6046
  ]
5819
6047
  }
5820
6048
  );
@@ -5861,9 +6089,9 @@ function PanelContent(props2) {
5861
6089
  if (activeForm) {
5862
6090
  composerArea = null;
5863
6091
  } else if (canSend) {
5864
- composerArea = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5865
- /* @__PURE__ */ jsx21(Suggestions, { suggestions, onPick: onSuggestion }),
5866
- /* @__PURE__ */ jsx21(
6092
+ composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6093
+ /* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
6094
+ /* @__PURE__ */ jsx22(
5867
6095
  Composer,
5868
6096
  {
5869
6097
  options,
@@ -5878,10 +6106,10 @@ function PanelContent(props2) {
5878
6106
  )
5879
6107
  ] });
5880
6108
  } else {
5881
- composerArea = /* @__PURE__ */ jsx21(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
6109
+ composerArea = /* @__PURE__ */ jsx22(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
5882
6110
  }
5883
- return /* @__PURE__ */ jsxs17(Fragment4, { children: [
5884
- view === "history" ? /* @__PURE__ */ jsx21(
6111
+ return /* @__PURE__ */ jsxs18(Fragment4, { children: [
6112
+ view === "history" ? /* @__PURE__ */ jsx22(
5885
6113
  HistoryHeader,
5886
6114
  {
5887
6115
  strings: s,
@@ -5889,22 +6117,22 @@ function PanelContent(props2) {
5889
6117
  onClose,
5890
6118
  showClose: canShowClose(options.mode, panelSize, options.actions)
5891
6119
  }
5892
- ) : /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, "data-testid": TID.panelHeader, children: [
5893
- onBack ? /* @__PURE__ */ jsx21(
6120
+ ) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
6121
+ onBack ? /* @__PURE__ */ jsx22(
5894
6122
  "button",
5895
6123
  {
5896
6124
  type: "button",
5897
- class: `${p19}-icon-btn`,
6125
+ class: `${p20}-icon-btn`,
5898
6126
  onClick: onBack,
5899
6127
  "aria-label": s.moduleBack,
5900
6128
  title: s.moduleBack,
5901
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6129
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5902
6130
  }
5903
6131
  ) : null,
5904
- agent ? /* @__PURE__ */ jsx21(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx21("h1", { children: s.panelTitle }),
5905
- /* @__PURE__ */ jsx21(HeaderActions, { panelProps: props2, variant: "chat" })
6132
+ agent ? /* @__PURE__ */ jsx22(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx22("h1", { children: s.panelTitle }),
6133
+ /* @__PURE__ */ jsx22(HeaderActions, { panelProps: props2, variant: "chat" })
5906
6134
  ] }),
5907
- view === "history" ? /* @__PURE__ */ jsx21(
6135
+ view === "history" ? /* @__PURE__ */ jsx22(
5908
6136
  ConversationList,
5909
6137
  {
5910
6138
  transport,
@@ -5915,9 +6143,9 @@ function PanelContent(props2) {
5915
6143
  onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
5916
6144
  onNewConversation
5917
6145
  }
5918
- ) : /* @__PURE__ */ jsxs17(Fragment4, { children: [
5919
- /* @__PURE__ */ jsx21(DropZone, { visible: dragOver, strings: s }),
5920
- /* @__PURE__ */ jsx21(
6146
+ ) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
6147
+ /* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
6148
+ /* @__PURE__ */ jsx22(
5921
6149
  MessageList,
5922
6150
  {
5923
6151
  messagesSig,
@@ -5935,9 +6163,9 @@ function PanelContent(props2) {
5935
6163
  }
5936
6164
  ),
5937
6165
  composerArea,
5938
- /* @__PURE__ */ jsx21(ComposerFooter, { disclaimer: options.composerDisclaimer })
6166
+ /* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
5939
6167
  ] }),
5940
- options.size.resize?.enabled ? /* @__PURE__ */ jsx21(
6168
+ options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
5941
6169
  ResizeGrip,
5942
6170
  {
5943
6171
  panelEl: containerEl,
@@ -5956,28 +6184,28 @@ function HistoryHeader({
5956
6184
  onClose,
5957
6185
  showClose
5958
6186
  }) {
5959
- return /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, children: [
5960
- /* @__PURE__ */ jsx21(
6187
+ return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
6188
+ /* @__PURE__ */ jsx22(
5961
6189
  "button",
5962
6190
  {
5963
6191
  type: "button",
5964
- class: `${p19}-icon-btn`,
6192
+ class: `${p20}-icon-btn`,
5965
6193
  onClick: onBack,
5966
6194
  "aria-label": strings.historyBack,
5967
6195
  title: strings.historyBack,
5968
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6196
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5969
6197
  }
5970
6198
  ),
5971
- /* @__PURE__ */ jsx21("h1", { children: strings.historyTitle }),
5972
- showClose ? /* @__PURE__ */ jsx21(
6199
+ /* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
6200
+ showClose ? /* @__PURE__ */ jsx22(
5973
6201
  "button",
5974
6202
  {
5975
6203
  type: "button",
5976
- class: `${p19}-icon-btn`,
6204
+ class: `${p20}-icon-btn`,
5977
6205
  onClick: onClose,
5978
6206
  "aria-label": strings.close,
5979
6207
  title: strings.close,
5980
- children: /* @__PURE__ */ jsx21(CloseIcon, {})
6208
+ children: /* @__PURE__ */ jsx22(CloseIcon, {})
5981
6209
  }
5982
6210
  ) : null
5983
6211
  ] });
@@ -5987,28 +6215,28 @@ function ReadOnlyBanner({
5987
6215
  ctaLabel,
5988
6216
  onNewConversation
5989
6217
  }) {
5990
- return /* @__PURE__ */ jsxs17("div", { class: `${p19}-readonly-banner`, role: "note", children: [
5991
- /* @__PURE__ */ jsx21("span", { class: `${p19}-readonly-label`, children: label }),
5992
- /* @__PURE__ */ jsx21("button", { type: "button", class: `${p19}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
6218
+ return /* @__PURE__ */ jsxs18("div", { class: `${p20}-readonly-banner`, role: "note", children: [
6219
+ /* @__PURE__ */ jsx22("span", { class: `${p20}-readonly-label`, children: label }),
6220
+ /* @__PURE__ */ jsx22("button", { type: "button", class: `${p20}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
5993
6221
  ] });
5994
6222
  }
5995
6223
  function ComposerFooter({ disclaimer }) {
5996
6224
  if (!disclaimer) return null;
5997
- return /* @__PURE__ */ jsx21("div", { class: `${p19}-composer-footer`, children: /* @__PURE__ */ jsx21("div", { class: `${p19}-disclaimer`, children: disclaimer }) });
6225
+ return /* @__PURE__ */ jsx22("div", { class: `${p20}-composer-footer`, children: /* @__PURE__ */ jsx22("div", { class: `${p20}-disclaimer`, children: disclaimer }) });
5998
6226
  }
5999
6227
  function PoweredByBar({ poweredBy }) {
6000
6228
  if (!poweredBy) return null;
6001
- return /* @__PURE__ */ jsx21("div", { class: `${p19}-poweredby-bar`, children: /* @__PURE__ */ jsx21(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
6229
+ return /* @__PURE__ */ jsx22("div", { class: `${p20}-poweredby-bar`, children: /* @__PURE__ */ jsx22(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
6002
6230
  }
6003
6231
  function PoweredBy({ logoUrl, text, href }) {
6004
- const inner = /* @__PURE__ */ jsxs17(Fragment4, { children: [
6005
- logoUrl ? /* @__PURE__ */ jsx21("img", { class: `${p19}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
6006
- text ? /* @__PURE__ */ jsx21("span", { children: text }) : null
6232
+ const inner = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6233
+ logoUrl ? /* @__PURE__ */ jsx22("img", { class: `${p20}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
6234
+ text ? /* @__PURE__ */ jsx22("span", { children: text }) : null
6007
6235
  ] });
6008
6236
  if (href) {
6009
- return /* @__PURE__ */ jsx21("a", { class: `${p19}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
6237
+ return /* @__PURE__ */ jsx22("a", { class: `${p20}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
6010
6238
  }
6011
- return /* @__PURE__ */ jsx21("span", { class: `${p19}-poweredby`, children: inner });
6239
+ return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
6012
6240
  }
6013
6241
 
6014
6242
  // src/ui/form/form-controller.ts
@@ -6091,34 +6319,34 @@ function whenPasses(form, d) {
6091
6319
  }
6092
6320
 
6093
6321
  // src/ui/sidebar.tsx
6094
- import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
6322
+ import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6095
6323
  function Sidebar(props2) {
6096
- const p35 = BRAND.cssPrefix;
6324
+ const p36 = BRAND.cssPrefix;
6097
6325
  const { site, blocks, strings, collapsed } = props2;
6098
6326
  const navigation = blocks?.navigation ?? [];
6099
6327
  const linkCards = blocks?.linkCards ?? [];
6100
6328
  const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
6101
- return /* @__PURE__ */ jsxs18("aside", { class: `${p35}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6102
- /* @__PURE__ */ jsxs18("div", { class: `${p35}-sidebar-header`, children: [
6103
- /* @__PURE__ */ jsx22(SidebarBrand, { site }),
6104
- /* @__PURE__ */ jsx22(
6329
+ return /* @__PURE__ */ jsxs19("aside", { class: `${p36}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6330
+ /* @__PURE__ */ jsxs19("div", { class: `${p36}-sidebar-header`, children: [
6331
+ /* @__PURE__ */ jsx23(SidebarBrand, { site }),
6332
+ /* @__PURE__ */ jsx23(
6105
6333
  "button",
6106
6334
  {
6107
6335
  type: "button",
6108
- class: `${p35}-sidebar-toggle`,
6336
+ class: `${p36}-sidebar-toggle`,
6109
6337
  "aria-label": toggleLabel,
6110
6338
  "aria-expanded": collapsed ? "false" : "true",
6111
6339
  title: toggleLabel,
6112
6340
  onClick: props2.onToggleCollapsed,
6113
6341
  "data-testid": TID.sidebarToggle,
6114
- children: /* @__PURE__ */ jsx22(SidebarToggleIcon, { collapsed })
6342
+ children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
6115
6343
  }
6116
6344
  )
6117
6345
  ] }),
6118
- collapsed ? null : /* @__PURE__ */ jsxs18(Fragment5, { children: [
6119
- navigation.length > 0 ? /* @__PURE__ */ jsx22("nav", { class: `${p35}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx22(SidebarNav, { items: navigation }) }) : null,
6120
- linkCards.length > 0 ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx22(SidebarCards, { items: linkCards }) }) : null,
6121
- props2.showConversations ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-conversations`, children: /* @__PURE__ */ jsx22(
6346
+ collapsed ? null : /* @__PURE__ */ jsxs19(Fragment5, { children: [
6347
+ navigation.length > 0 ? /* @__PURE__ */ jsx23("nav", { class: `${p36}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx23(SidebarNav, { items: navigation }) }) : null,
6348
+ linkCards.length > 0 ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx23(SidebarCards, { items: linkCards }) }) : null,
6349
+ props2.showConversations ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-conversations`, children: /* @__PURE__ */ jsx23(
6122
6350
  ConversationList,
6123
6351
  {
6124
6352
  transport: props2.transport,
@@ -6134,18 +6362,18 @@ function Sidebar(props2) {
6134
6362
  ] });
6135
6363
  }
6136
6364
  function SidebarBrand({ site }) {
6137
- const p35 = BRAND.cssPrefix;
6365
+ const p36 = BRAND.cssPrefix;
6138
6366
  if (site?.logo?.url) {
6139
6367
  const alt = site.logo.alt ?? site.title ?? "Logo";
6140
- return /* @__PURE__ */ jsxs18("picture", { children: [
6141
- site.logoDark?.url ? /* @__PURE__ */ jsx22("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6142
- /* @__PURE__ */ jsx22("img", { class: `${p35}-sidebar-logo`, src: site.logo.url, alt })
6368
+ return /* @__PURE__ */ jsxs19("picture", { children: [
6369
+ site.logoDark?.url ? /* @__PURE__ */ jsx23("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6370
+ /* @__PURE__ */ jsx23("img", { class: `${p36}-sidebar-logo`, src: site.logo.url, alt })
6143
6371
  ] });
6144
6372
  }
6145
- return /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-title`, children: site?.title ?? BRAND.name });
6373
+ return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-title`, children: site?.title ?? BRAND.name });
6146
6374
  }
6147
6375
  function SidebarToggleIcon({ collapsed }) {
6148
- return /* @__PURE__ */ jsx22(
6376
+ return /* @__PURE__ */ jsx23(
6149
6377
  "svg",
6150
6378
  {
6151
6379
  width: "16",
@@ -6155,38 +6383,38 @@ function SidebarToggleIcon({ collapsed }) {
6155
6383
  stroke: "currentColor",
6156
6384
  "stroke-width": "2",
6157
6385
  "aria-hidden": "true",
6158
- children: collapsed ? /* @__PURE__ */ jsx22("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx22("polyline", { points: "15 6 9 12 15 18" })
6386
+ children: collapsed ? /* @__PURE__ */ jsx23("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx23("polyline", { points: "15 6 9 12 15 18" })
6159
6387
  }
6160
6388
  );
6161
6389
  }
6162
6390
  function SidebarNav({ items }) {
6163
- const p35 = BRAND.cssPrefix;
6164
- return /* @__PURE__ */ jsx22("ul", { class: `${p35}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx22("li", { children: /* @__PURE__ */ jsxs18(
6391
+ const p36 = BRAND.cssPrefix;
6392
+ return /* @__PURE__ */ jsx23("ul", { class: `${p36}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsxs19(
6165
6393
  "a",
6166
6394
  {
6167
- class: `${p35}-sidebar-nav-item`,
6395
+ class: `${p36}-sidebar-nav-item`,
6168
6396
  href: item.href,
6169
6397
  target: item.href ? "_blank" : void 0,
6170
6398
  rel: item.href ? "noreferrer" : void 0,
6171
6399
  children: [
6172
- item.icon ? /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6173
- /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-label`, children: item.label })
6400
+ item.icon ? /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6401
+ /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-label`, children: item.label })
6174
6402
  ]
6175
6403
  }
6176
6404
  ) }, item.id ?? item.label)) });
6177
6405
  }
6178
6406
  function SidebarCards({ items }) {
6179
- const p35 = BRAND.cssPrefix;
6180
- return /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs18(
6407
+ const p36 = BRAND.cssPrefix;
6408
+ return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs19(
6181
6409
  "a",
6182
6410
  {
6183
- class: `${p35}-sidebar-card`,
6411
+ class: `${p36}-sidebar-card`,
6184
6412
  href: item.href,
6185
6413
  target: item.href ? "_blank" : void 0,
6186
6414
  rel: item.href ? "noreferrer" : void 0,
6187
6415
  children: [
6188
- /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-label`, children: item.label }),
6189
- item.description ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-desc`, children: item.description }) : null
6416
+ /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-label`, children: item.label }),
6417
+ item.description ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-desc`, children: item.description }) : null
6190
6418
  ]
6191
6419
  },
6192
6420
  item.id ?? item.label
@@ -6194,11 +6422,11 @@ function SidebarCards({ items }) {
6194
6422
  }
6195
6423
 
6196
6424
  // src/ui/page-shell.tsx
6197
- import { jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6198
- var p20 = BRAND.cssPrefix;
6425
+ import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6426
+ var p21 = BRAND.cssPrefix;
6199
6427
  function PageShell(props2) {
6200
- return /* @__PURE__ */ jsxs19("main", { class: `${p20}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6201
- /* @__PURE__ */ jsx23(
6428
+ return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6429
+ /* @__PURE__ */ jsx24(
6202
6430
  Sidebar,
6203
6431
  {
6204
6432
  site: props2.site,
@@ -6215,7 +6443,7 @@ function PageShell(props2) {
6215
6443
  onToggleCollapsed: props2.onToggleSidebarCollapsed
6216
6444
  }
6217
6445
  ),
6218
- /* @__PURE__ */ jsx23("section", { class: `${p20}-page-chat`, "aria-label": "Chat", children: props2.children })
6446
+ /* @__PURE__ */ jsx24("section", { class: `${p21}-page-chat`, "aria-label": "Chat", children: props2.children })
6219
6447
  ] });
6220
6448
  }
6221
6449
 
@@ -6265,80 +6493,80 @@ var chatLayout = {
6265
6493
  import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
6266
6494
 
6267
6495
  // src/ui/back-header.tsx
6268
- import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6269
- var p21 = BRAND.cssPrefix;
6496
+ import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6497
+ var p22 = BRAND.cssPrefix;
6270
6498
  function TitleBar({ title, actions }) {
6271
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-variant": "title", children: [
6272
- /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" }),
6273
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6274
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" })
6499
+ return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-variant": "title", children: [
6500
+ /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" }),
6501
+ /* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
6502
+ actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
6275
6503
  ] });
6276
6504
  }
6277
6505
  function BackHeader({ title, backLabel, onBack, actions, testid }) {
6278
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-testid": testid, children: [
6279
- /* @__PURE__ */ jsx24("button", { type: "button", class: `${p21}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx24(BackIcon, {}) }),
6280
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6281
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" })
6506
+ return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-testid": testid, children: [
6507
+ /* @__PURE__ */ jsx25("button", { type: "button", class: `${p22}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx25(BackIcon, {}) }),
6508
+ /* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
6509
+ actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
6282
6510
  ] });
6283
6511
  }
6284
6512
 
6285
6513
  // src/ui/home-search.tsx
6286
- import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6287
- var p22 = BRAND.cssPrefix;
6514
+ import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6515
+ var p23 = BRAND.cssPrefix;
6288
6516
  function HomeSearchButton({ placeholder, onActivate }) {
6289
- return /* @__PURE__ */ jsxs21("button", { type: "button", class: `${p22}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6290
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-text`, children: placeholder }),
6291
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
6517
+ return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6518
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-text`, children: placeholder }),
6519
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
6292
6520
  ] });
6293
6521
  }
6294
6522
  function HelpSearchInput({ placeholder, value, onInput }) {
6295
- return /* @__PURE__ */ jsxs21("div", { class: `${p22}-home-search`, "data-input": "true", children: [
6296
- /* @__PURE__ */ jsx25(
6523
+ return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
6524
+ /* @__PURE__ */ jsx26(
6297
6525
  "input",
6298
6526
  {
6299
6527
  type: "search",
6300
- class: `${p22}-home-search-input`,
6528
+ class: `${p23}-home-search-input`,
6301
6529
  placeholder,
6302
6530
  value,
6303
6531
  onInput: (e) => onInput(e.currentTarget.value),
6304
6532
  "data-testid": TID.helpSearch
6305
6533
  }
6306
6534
  ),
6307
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
6535
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
6308
6536
  ] });
6309
6537
  }
6310
6538
 
6311
6539
  // src/ui/list-row.tsx
6312
- import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6313
- var p23 = BRAND.cssPrefix;
6540
+ import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6541
+ var p24 = BRAND.cssPrefix;
6314
6542
  function ListRow({ title, subtitle, onClick, testid }) {
6315
- return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-list-row`, onClick, "data-testid": testid, children: [
6316
- /* @__PURE__ */ jsxs22("span", { class: `${p23}-list-row-body`, children: [
6317
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-title`, children: title }),
6318
- subtitle ? /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-sub`, children: subtitle }) : null
6543
+ return /* @__PURE__ */ jsxs23("button", { type: "button", class: `${p24}-list-row`, onClick, "data-testid": testid, children: [
6544
+ /* @__PURE__ */ jsxs23("span", { class: `${p24}-list-row-body`, children: [
6545
+ /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-title`, children: title }),
6546
+ subtitle ? /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-sub`, children: subtitle }) : null
6319
6547
  ] }),
6320
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(ChevronRightIcon, {}) })
6548
+ /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx27(ChevronRightIcon, {}) })
6321
6549
  ] });
6322
6550
  }
6323
6551
 
6324
6552
  // src/ui/module-state.tsx
6325
- import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6326
- var p24 = BRAND.cssPrefix;
6553
+ import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6554
+ var p25 = BRAND.cssPrefix;
6327
6555
  function ModuleState({
6328
6556
  tone = "info",
6329
6557
  message,
6330
6558
  onRetry,
6331
6559
  strings
6332
6560
  }) {
6333
- return /* @__PURE__ */ jsxs23("div", { class: `${p24}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6334
- /* @__PURE__ */ jsx27("span", { children: message }),
6335
- onRetry ? /* @__PURE__ */ jsx27("button", { type: "button", class: `${p24}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
6561
+ return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6562
+ /* @__PURE__ */ jsx28("span", { children: message }),
6563
+ onRetry ? /* @__PURE__ */ jsx28("button", { type: "button", class: `${p25}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
6336
6564
  ] });
6337
6565
  }
6338
6566
 
6339
6567
  // src/ui/modules/help.tsx
6340
- import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6341
- var p25 = BRAND.cssPrefix;
6568
+ import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
6569
+ var p26 = BRAND.cssPrefix;
6342
6570
  var log13 = logger.scope("help");
6343
6571
  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 });
6344
6572
  function groupByCategory(items) {
@@ -6367,7 +6595,7 @@ function fuzzySearch(items, query) {
6367
6595
  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);
6368
6596
  }
6369
6597
  function ArticleRow({ article, nav }) {
6370
- return /* @__PURE__ */ jsx28(
6598
+ return /* @__PURE__ */ jsx29(
6371
6599
  ListRow,
6372
6600
  {
6373
6601
  title: article.title,
@@ -6412,46 +6640,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
6412
6640
  }, [query, results, bus]);
6413
6641
  function renderBody() {
6414
6642
  if (query.trim().length > 0) {
6415
- if (results.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpSearchEmpty, strings });
6416
- return /* @__PURE__ */ jsx28("div", { class: `${p25}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) });
6643
+ if (results.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpSearchEmpty, strings });
6644
+ return /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) });
6417
6645
  }
6418
- if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpLoading, strings });
6646
+ if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
6419
6647
  if (state === "error") {
6420
- return /* @__PURE__ */ jsx28(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6648
+ return /* @__PURE__ */ jsx29(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6421
6649
  }
6422
- if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpEmpty, strings });
6423
- return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs24("section", { class: `${p25}-help-group`, children: [
6424
- category ? /* @__PURE__ */ jsx28("h2", { class: `${p25}-help-section-title`, children: category }) : null,
6425
- /* @__PURE__ */ jsx28("div", { class: `${p25}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) })
6650
+ if (items.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpEmpty, strings });
6651
+ return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs25("section", { class: `${p26}-help-group`, children: [
6652
+ category ? /* @__PURE__ */ jsx29("h2", { class: `${p26}-help-section-title`, children: category }) : null,
6653
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) })
6426
6654
  ] }, category));
6427
6655
  }
6428
- return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module`, children: [
6429
- /* @__PURE__ */ jsx28(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx28(HeaderActions, { panelProps, variant: "plain" }) }),
6430
- /* @__PURE__ */ jsx28("div", { class: `${p25}-module-pad`, children: /* @__PURE__ */ jsx28(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6431
- /* @__PURE__ */ jsx28("div", { class: `${p25}-help-list`, children: renderBody() })
6656
+ return /* @__PURE__ */ jsxs25("div", { class: `${p26}-module`, children: [
6657
+ /* @__PURE__ */ jsx29(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx29(HeaderActions, { panelProps, variant: "plain" }) }),
6658
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-module-pad`, children: /* @__PURE__ */ jsx29(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6659
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-help-list`, children: renderBody() })
6432
6660
  ] });
6433
6661
  }
6434
6662
  var helpLayout = {
6435
6663
  Icon: HelpIcon,
6436
- Root: (props2) => /* @__PURE__ */ jsx28(HelpRoot, { ...props2 })
6664
+ Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
6437
6665
  };
6438
6666
 
6439
6667
  // src/ui/modules/home.tsx
6440
6668
  import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
6441
6669
 
6442
6670
  // src/ui/home-card.tsx
6443
- import { jsx as jsx29 } from "preact/jsx-runtime";
6444
- var p26 = BRAND.cssPrefix;
6671
+ import { jsx as jsx30 } from "preact/jsx-runtime";
6672
+ var p27 = BRAND.cssPrefix;
6445
6673
  function HomeCard({ onClick, children, testid }) {
6446
6674
  if (onClick) {
6447
- return /* @__PURE__ */ jsx29("button", { type: "button", class: `${p26}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
6675
+ return /* @__PURE__ */ jsx30("button", { type: "button", class: `${p27}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
6448
6676
  }
6449
- return /* @__PURE__ */ jsx29("div", { class: `${p26}-home-card`, "data-testid": testid, children });
6677
+ return /* @__PURE__ */ jsx30("div", { class: `${p27}-home-card`, "data-testid": testid, children });
6450
6678
  }
6451
6679
 
6452
6680
  // src/ui/modules/home.tsx
6453
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs25 } from "preact/jsx-runtime";
6454
- var p27 = BRAND.cssPrefix;
6681
+ import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6682
+ var p28 = BRAND.cssPrefix;
6455
6683
  var log14 = logger.scope("home");
6456
6684
  function resolveGreeting(props2) {
6457
6685
  const name = props2.options.userContext?.name;
@@ -6494,49 +6722,49 @@ function HomeRoot(props2) {
6494
6722
  const status = config.status;
6495
6723
  const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
6496
6724
  const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
6497
- return /* @__PURE__ */ jsx30("div", { class: `${p27}-module ${p27}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-scroll`, children: [
6498
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero`, children: [
6499
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-top`, children: [
6500
- 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" }),
6501
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-actions`, children: [
6502
- 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,
6503
- /* @__PURE__ */ jsx30(HeaderActions, { panelProps, variant: "plain" })
6725
+ return /* @__PURE__ */ jsx31("div", { class: `${p28}-module ${p28}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-scroll`, children: [
6726
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero`, children: [
6727
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-top`, children: [
6728
+ 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" }),
6729
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-actions`, children: [
6730
+ 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,
6731
+ /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" })
6504
6732
  ] })
6505
6733
  ] }),
6506
- config.showGreeting !== false ? /* @__PURE__ */ jsxs25(Fragment6, { children: [
6507
- /* @__PURE__ */ jsx30("h1", { class: `${p27}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6508
- greeting.subtitle ? /* @__PURE__ */ jsx30("p", { class: `${p27}-home-lead`, children: greeting.subtitle }) : null
6734
+ config.showGreeting !== false ? /* @__PURE__ */ jsxs26(Fragment6, { children: [
6735
+ /* @__PURE__ */ jsx31("h1", { class: `${p28}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6736
+ greeting.subtitle ? /* @__PURE__ */ jsx31("p", { class: `${p28}-home-lead`, children: greeting.subtitle }) : null
6509
6737
  ] }) : null
6510
6738
  ] }),
6511
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-cards`, children: [
6512
- config.showSearchBar !== false ? /* @__PURE__ */ jsx30(
6739
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
6740
+ config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
6513
6741
  HomeSearchButton,
6514
6742
  {
6515
6743
  placeholder: strings.homeSearchPlaceholder,
6516
6744
  onActivate: () => nav.switchToLayout("help")
6517
6745
  }
6518
6746
  ) : null,
6519
- 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: [
6520
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(BubblesIcon, {}) }),
6521
- /* @__PURE__ */ jsxs25("span", { class: `${p27}-home-recent-body`, children: [
6522
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-title`, children: recent.title }),
6523
- recent.preview ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-preview`, children: recent.preview }) : null
6747
+ 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: [
6748
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(BubblesIcon, {}) }),
6749
+ /* @__PURE__ */ jsxs26("span", { class: `${p28}-home-recent-body`, children: [
6750
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-title`, children: recent.title }),
6751
+ recent.preview ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-preview`, children: recent.preview }) : null
6524
6752
  ] }),
6525
- (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-dot`, "aria-label": "Unread" }) : null
6753
+ (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-dot`, "aria-label": "Unread" }) : null
6526
6754
  ] }) }) : null,
6527
- status ? /* @__PURE__ */ jsx30(
6755
+ status ? /* @__PURE__ */ jsx31(
6528
6756
  HomeCard,
6529
6757
  {
6530
6758
  onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
6531
- children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-status`, "data-level": status.level ?? "operational", children: [
6532
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(StatusOkIcon, {}) }),
6533
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-text`, children: statusText })
6759
+ children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-status`, "data-level": status.level ?? "operational", children: [
6760
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(StatusOkIcon, {}) }),
6761
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-text`, children: statusText })
6534
6762
  ] })
6535
6763
  }
6536
6764
  ) : null,
6537
- content.length > 0 ? /* @__PURE__ */ jsxs25("section", { class: `${p27}-home-content`, children: [
6538
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-title`, children: contentTitle }),
6539
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx30(
6765
+ content.length > 0 ? /* @__PURE__ */ jsxs26("section", { class: `${p28}-home-content`, children: [
6766
+ /* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-title`, children: contentTitle }),
6767
+ /* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx31(
6540
6768
  ListRow,
6541
6769
  {
6542
6770
  title: item.title,
@@ -6552,13 +6780,13 @@ function HomeRoot(props2) {
6552
6780
  }
6553
6781
  var homeLayout = {
6554
6782
  Icon: HomeIcon,
6555
- Root: (props2) => /* @__PURE__ */ jsx30(HomeRoot, { ...props2 })
6783
+ Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
6556
6784
  };
6557
6785
 
6558
6786
  // src/ui/modules/news.tsx
6559
6787
  import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
6560
- import { jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6561
- var p28 = BRAND.cssPrefix;
6788
+ import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6789
+ var p29 = BRAND.cssPrefix;
6562
6790
  var log15 = logger.scope("news");
6563
6791
  function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6564
6792
  const tags = config.contentTags;
@@ -6586,37 +6814,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6586
6814
  };
6587
6815
  }, [transport, tags, reloadKey, bus]);
6588
6816
  function renderBody() {
6589
- if (state === "loading") return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsLoading, strings });
6817
+ if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
6590
6818
  if (state === "error") {
6591
- return /* @__PURE__ */ jsx31(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6819
+ return /* @__PURE__ */ jsx32(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6592
6820
  }
6593
- if (items.length === 0) return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsEmpty, strings });
6594
- return /* @__PURE__ */ jsx31("div", { class: `${p28}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs26(
6821
+ if (items.length === 0) return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsEmpty, strings });
6822
+ return /* @__PURE__ */ jsx32("div", { class: `${p29}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs27(
6595
6823
  "button",
6596
6824
  {
6597
6825
  type: "button",
6598
- class: `${p28}-news-card`,
6826
+ class: `${p29}-news-card`,
6599
6827
  onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
6600
6828
  "data-testid": tid(TID.newsItem, item.id),
6601
6829
  children: [
6602
- item.image ? /* @__PURE__ */ jsx31("img", { class: `${p28}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6603
- /* @__PURE__ */ jsxs26("span", { class: `${p28}-news-body`, children: [
6604
- /* @__PURE__ */ jsx31("span", { class: `${p28}-news-title`, children: item.title }),
6605
- item.description ? /* @__PURE__ */ jsx31("span", { class: `${p28}-news-summary`, children: item.description }) : null
6830
+ item.image ? /* @__PURE__ */ jsx32("img", { class: `${p29}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6831
+ /* @__PURE__ */ jsxs27("span", { class: `${p29}-news-body`, children: [
6832
+ /* @__PURE__ */ jsx32("span", { class: `${p29}-news-title`, children: item.title }),
6833
+ item.description ? /* @__PURE__ */ jsx32("span", { class: `${p29}-news-summary`, children: item.description }) : null
6606
6834
  ] })
6607
6835
  ]
6608
6836
  },
6609
6837
  item.id
6610
6838
  )) });
6611
6839
  }
6612
- return /* @__PURE__ */ jsxs26("div", { class: `${p28}-module`, children: [
6613
- /* @__PURE__ */ jsx31(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" }) }),
6614
- /* @__PURE__ */ jsx31("div", { class: `${p28}-module-scroll`, children: renderBody() })
6840
+ return /* @__PURE__ */ jsxs27("div", { class: `${p29}-module`, children: [
6841
+ /* @__PURE__ */ jsx32(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx32(HeaderActions, { panelProps, variant: "plain" }) }),
6842
+ /* @__PURE__ */ jsx32("div", { class: `${p29}-module-scroll`, children: renderBody() })
6615
6843
  ] });
6616
6844
  }
6617
6845
  var newsLayout = {
6618
6846
  Icon: NewsIcon,
6619
- Root: (props2) => /* @__PURE__ */ jsx31(NewsRoot, { ...props2 })
6847
+ Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
6620
6848
  };
6621
6849
 
6622
6850
  // src/ui/modules/registry.ts
@@ -6628,28 +6856,28 @@ var LAYOUTS = {
6628
6856
  };
6629
6857
 
6630
6858
  // src/ui/home-tab-bar.tsx
6631
- import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6632
- var p29 = BRAND.cssPrefix;
6859
+ import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6860
+ var p30 = BRAND.cssPrefix;
6633
6861
  function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6634
- return /* @__PURE__ */ jsx32("nav", { class: `${p29}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
6862
+ return /* @__PURE__ */ jsx33("nav", { class: `${p30}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
6635
6863
  const Icon = LAYOUTS[m.layout].Icon;
6636
6864
  const selected = m.id === activeTab;
6637
6865
  const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
6638
- return /* @__PURE__ */ jsxs27(
6866
+ return /* @__PURE__ */ jsxs28(
6639
6867
  "button",
6640
6868
  {
6641
6869
  type: "button",
6642
6870
  role: "tab",
6643
6871
  "aria-selected": selected,
6644
- class: `${p29}-tab`,
6872
+ class: `${p30}-tab`,
6645
6873
  onClick: () => onSelect(m.id),
6646
6874
  "data-testid": tid(TID.tab, m.id),
6647
6875
  children: [
6648
- /* @__PURE__ */ jsxs27("span", { class: `${p29}-tab-icon`, "aria-hidden": "true", children: [
6649
- /* @__PURE__ */ jsx32(Icon, {}),
6650
- badge ? /* @__PURE__ */ jsx32("span", { class: `${p29}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
6876
+ /* @__PURE__ */ jsxs28("span", { class: `${p30}-tab-icon`, "aria-hidden": "true", children: [
6877
+ /* @__PURE__ */ jsx33(Icon, {}),
6878
+ badge ? /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
6651
6879
  ] }),
6652
- /* @__PURE__ */ jsx32("span", { class: `${p29}-tab-label`, children: localizeText(strings, m.label) })
6880
+ /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-label`, children: localizeText(strings, m.label) })
6653
6881
  ]
6654
6882
  },
6655
6883
  m.id
@@ -6658,12 +6886,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6658
6886
  }
6659
6887
 
6660
6888
  // src/ui/iframe-view.tsx
6661
- import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6662
- var p30 = BRAND.cssPrefix;
6889
+ import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6890
+ var p31 = BRAND.cssPrefix;
6663
6891
  var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
6664
6892
  function IframeView({ url, title, strings, onBack, actions }) {
6665
- return /* @__PURE__ */ jsxs28("div", { class: `${p30}-module`, children: [
6666
- /* @__PURE__ */ jsx33(
6893
+ return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6894
+ /* @__PURE__ */ jsx34(
6667
6895
  BackHeader,
6668
6896
  {
6669
6897
  title: title || strings.moduleBack,
@@ -6672,10 +6900,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
6672
6900
  actions
6673
6901
  }
6674
6902
  ),
6675
- /* @__PURE__ */ jsx33(
6903
+ /* @__PURE__ */ jsx34(
6676
6904
  "iframe",
6677
6905
  {
6678
- class: `${p30}-content-frame`,
6906
+ class: `${p31}-content-frame`,
6679
6907
  src: url,
6680
6908
  title: title || "content",
6681
6909
  sandbox: SANDBOX,
@@ -6689,8 +6917,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
6689
6917
 
6690
6918
  // src/ui/content-view.tsx
6691
6919
  import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
6692
- import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6693
- var p31 = BRAND.cssPrefix;
6920
+ import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6921
+ var p32 = BRAND.cssPrefix;
6694
6922
  var log16 = logger.scope("content");
6695
6923
  var READ_DWELL_MS = 5e3;
6696
6924
  function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
@@ -6734,16 +6962,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6734
6962
  [bus, id]
6735
6963
  );
6736
6964
  function renderBody() {
6737
- if (failed) return /* @__PURE__ */ jsx34(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6738
- if (item === null) return /* @__PURE__ */ jsx34(ModuleState, { message: strings.contentLoading, strings });
6739
- return /* @__PURE__ */ jsxs29("article", { class: `${p31}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6740
- item.image ? /* @__PURE__ */ jsx34("img", { class: `${p31}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6741
- item.description ? /* @__PURE__ */ jsx34("p", { class: `${p31}-content-subtitle`, children: item.description }) : null,
6742
- /* @__PURE__ */ jsx34(StaticMarkdown, { text: item.content ?? "" })
6965
+ if (failed) return /* @__PURE__ */ jsx35(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6966
+ if (item === null) return /* @__PURE__ */ jsx35(ModuleState, { message: strings.contentLoading, strings });
6967
+ return /* @__PURE__ */ jsxs30("article", { class: `${p32}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6968
+ item.image ? /* @__PURE__ */ jsx35("img", { class: `${p32}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6969
+ item.description ? /* @__PURE__ */ jsx35("p", { class: `${p32}-content-subtitle`, children: item.description }) : null,
6970
+ /* @__PURE__ */ jsx35(StaticMarkdown, { text: item.content ?? "" })
6743
6971
  ] });
6744
6972
  }
6745
- return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6746
- /* @__PURE__ */ jsx34(
6973
+ return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
6974
+ /* @__PURE__ */ jsx35(
6747
6975
  BackHeader,
6748
6976
  {
6749
6977
  title: item?.title || title || strings.moduleBack,
@@ -6753,13 +6981,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6753
6981
  testid: TID.backHeader
6754
6982
  }
6755
6983
  ),
6756
- /* @__PURE__ */ jsx34("div", { class: `${p31}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6984
+ /* @__PURE__ */ jsx35("div", { class: `${p32}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6757
6985
  ] });
6758
6986
  }
6759
6987
 
6760
6988
  // src/ui/messenger-home.tsx
6761
- import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6762
- var p32 = BRAND.cssPrefix;
6989
+ import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6990
+ var p33 = BRAND.cssPrefix;
6763
6991
  function MessengerHome({
6764
6992
  panelProps,
6765
6993
  enabledModules,
@@ -6830,12 +7058,12 @@ function MessengerHome({
6830
7058
  bus,
6831
7059
  panelProps
6832
7060
  });
6833
- const plainActions = /* @__PURE__ */ jsx35(HeaderActions, { panelProps, variant: "plain" });
7061
+ const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
6834
7062
  if (activeModule) visitedRef.current.add(activeModule.id);
6835
7063
  const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
6836
7064
  const tabRoot = (module) => {
6837
7065
  if (module.layout === "chat") {
6838
- return /* @__PURE__ */ jsx35(
7066
+ return /* @__PURE__ */ jsx36(
6839
7067
  PanelContent,
6840
7068
  {
6841
7069
  ...panelProps,
@@ -6846,14 +7074,14 @@ function MessengerHome({
6846
7074
  );
6847
7075
  }
6848
7076
  const Root = LAYOUTS[module.layout].Root;
6849
- return Root ? /* @__PURE__ */ jsx35(Root, { ...screenProps(module) }) : null;
7077
+ return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
6850
7078
  };
6851
7079
  const renderReader = () => {
6852
7080
  if (top?.kind === "iframe") {
6853
- return /* @__PURE__ */ jsx35(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
7081
+ return /* @__PURE__ */ jsx36(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
6854
7082
  }
6855
7083
  if (top?.kind === "content") {
6856
- return /* @__PURE__ */ jsx35(
7084
+ return /* @__PURE__ */ jsx36(
6857
7085
  ContentView,
6858
7086
  {
6859
7087
  id: top.id,
@@ -6868,22 +7096,22 @@ function MessengerHome({
6868
7096
  }
6869
7097
  return null;
6870
7098
  };
6871
- return /* @__PURE__ */ jsxs30(
7099
+ return /* @__PURE__ */ jsxs31(
6872
7100
  "div",
6873
7101
  {
6874
7102
  ref: containerRef,
6875
- class: `${p32}-panel ${p32}-messenger`,
7103
+ class: `${p33}-panel ${p33}-messenger`,
6876
7104
  role: "dialog",
6877
7105
  "aria-modal": "false",
6878
7106
  "aria-label": strings.panelTitle,
6879
7107
  style: { position: "relative" },
6880
7108
  "data-testid": TID.messengerHome,
6881
7109
  children: [
6882
- /* @__PURE__ */ jsxs30("div", { class: `${p32}-messenger-body`, children: [
6883
- visitedTabs.map((m) => /* @__PURE__ */ jsx35("div", { class: `${p32}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
7110
+ /* @__PURE__ */ jsxs31("div", { class: `${p33}-messenger-body`, children: [
7111
+ visitedTabs.map((m) => /* @__PURE__ */ jsx36("div", { class: `${p33}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
6884
7112
  renderReader()
6885
7113
  ] }),
6886
- showTabBar ? /* @__PURE__ */ jsx35(
7114
+ showTabBar ? /* @__PURE__ */ jsx36(
6887
7115
  HomeTabBar,
6888
7116
  {
6889
7117
  modules: enabledModules,
@@ -6893,8 +7121,8 @@ function MessengerHome({
6893
7121
  onSelect: nav.switchTab
6894
7122
  }
6895
7123
  ) : null,
6896
- /* @__PURE__ */ jsx35(PoweredByBar, { poweredBy: options.poweredBy }),
6897
- options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx35(
7124
+ /* @__PURE__ */ jsx36(PoweredByBar, { poweredBy: options.poweredBy }),
7125
+ options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx36(
6898
7126
  ResizeGrip,
6899
7127
  {
6900
7128
  panelEl: containerRef.current,
@@ -6911,29 +7139,29 @@ function MessengerHome({
6911
7139
  }
6912
7140
 
6913
7141
  // src/ui/modules-empty.tsx
6914
- import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6915
- var p33 = BRAND.cssPrefix;
7142
+ import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7143
+ var p34 = BRAND.cssPrefix;
6916
7144
  function ModulesEmpty({ strings, onClose }) {
6917
- return /* @__PURE__ */ jsxs31(
7145
+ return /* @__PURE__ */ jsxs32(
6918
7146
  "div",
6919
7147
  {
6920
- class: `${p33}-panel ${p33}-modules-empty`,
7148
+ class: `${p34}-panel ${p34}-modules-empty`,
6921
7149
  role: "dialog",
6922
7150
  "aria-label": strings.panelTitle,
6923
7151
  "data-testid": TID.modulesEmpty,
6924
7152
  children: [
6925
- onClose ? /* @__PURE__ */ jsx36(
7153
+ onClose ? /* @__PURE__ */ jsx37(
6926
7154
  "button",
6927
7155
  {
6928
7156
  type: "button",
6929
- class: `${p33}-icon-btn ${p33}-modules-empty-close`,
7157
+ class: `${p34}-icon-btn ${p34}-modules-empty-close`,
6930
7158
  onClick: onClose,
6931
7159
  "aria-label": strings.close,
6932
7160
  title: strings.close,
6933
- children: /* @__PURE__ */ jsx36(CloseIcon, {})
7161
+ children: /* @__PURE__ */ jsx37(CloseIcon, {})
6934
7162
  }
6935
7163
  ) : null,
6936
- /* @__PURE__ */ jsx36("p", { class: `${p33}-modules-empty-text`, children: strings.modulesEmpty })
7164
+ /* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
6937
7165
  ]
6938
7166
  }
6939
7167
  );
@@ -6956,19 +7184,19 @@ function useLauncherCallout({ callout, persistence }) {
6956
7184
  }
6957
7185
 
6958
7186
  // src/ui/app.tsx
6959
- import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7187
+ import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
6960
7188
  var log17 = logger.scope("app");
6961
- var p34 = BRAND.cssPrefix;
7189
+ var p35 = BRAND.cssPrefix;
6962
7190
  function makeLocalizedWelcome(w, strings) {
6963
7191
  return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
6964
7192
  }
6965
7193
  function firstText(m) {
6966
- return m.partsSig.value.find((p35) => p35.kind === "text")?.textSig.value ?? "";
7194
+ return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
6967
7195
  }
6968
7196
  function allToolPartsSettled(msg) {
6969
- const tools = msg.partsSig.value.filter((p35) => p35.kind === "tool");
6970
- return tools.length > 0 && tools.every((p35) => {
6971
- const s = p35.stateSig.value;
7197
+ const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
7198
+ return tools.length > 0 && tools.every((pt) => {
7199
+ const s = pt.stateSig.value;
6972
7200
  return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
6973
7201
  });
6974
7202
  }
@@ -7445,7 +7673,9 @@ function App({ options, hostElement, bus }) {
7445
7673
  conversationIdSig.value = activeConversationId;
7446
7674
  persistence.saveConversationId(activeConversationId);
7447
7675
  }
7448
- const thread = continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1);
7676
+ const thread = (continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1)).filter(
7677
+ (m) => !m.ephemeral
7678
+ );
7449
7679
  const body = buildSendMessageRequest({
7450
7680
  messages: thread.map(fromReactive),
7451
7681
  conversationId: activeConversationId,
@@ -7887,12 +8117,12 @@ function App({ options, hostElement, bus }) {
7887
8117
  const renderSurface = (size) => {
7888
8118
  const closeable = isActionVisible("close", effectiveOptions.mode, size);
7889
8119
  if (enabledModules.length === 0) {
7890
- return /* @__PURE__ */ jsx37(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
8120
+ return /* @__PURE__ */ jsx38(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
7891
8121
  }
7892
8122
  if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
7893
- return /* @__PURE__ */ jsx37(Panel, { ...panelProps, panelSize: size });
8123
+ return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
7894
8124
  }
7895
- return /* @__PURE__ */ jsx37(
8125
+ return /* @__PURE__ */ jsx38(
7896
8126
  MessengerHome,
7897
8127
  {
7898
8128
  panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
@@ -7911,7 +8141,7 @@ function App({ options, hostElement, bus }) {
7911
8141
  void handleSelectHistoryConversation(chat.conversationId);
7912
8142
  };
7913
8143
  const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
7914
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: /* @__PURE__ */ jsx37(
8144
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
7915
8145
  PageShell,
7916
8146
  {
7917
8147
  site: parsedSite,
@@ -7932,15 +8162,15 @@ function App({ options, hostElement, bus }) {
7932
8162
  }
7933
8163
  if (isInlineLike) {
7934
8164
  const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
7935
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: renderSurface(inlineSize) });
8165
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
7936
8166
  }
7937
8167
  const drawerEdgeTab = options.mode === "drawer";
7938
8168
  const triggerOwnedByPage = options.mode === "modal";
7939
8169
  const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
7940
8170
  const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
7941
- return /* @__PURE__ */ jsxs32("div", { class: `${p34}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
7942
- isOpen || activated ? /* @__PURE__ */ jsx37("div", { class: `${p34}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
7943
- launcherVisible ? /* @__PURE__ */ jsx37(
8171
+ return /* @__PURE__ */ jsxs33("div", { class: `${p35}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
8172
+ isOpen || activated ? /* @__PURE__ */ jsx38("div", { class: `${p35}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
8173
+ launcherVisible ? /* @__PURE__ */ jsx38(
7944
8174
  Launcher,
7945
8175
  {
7946
8176
  onToggle: handleOpen,
@@ -7950,7 +8180,7 @@ function App({ options, hostElement, bus }) {
7950
8180
  edgeTab: drawerEdgeTab
7951
8181
  }
7952
8182
  ) : null,
7953
- calloutToRender ? /* @__PURE__ */ jsx37(
8183
+ calloutToRender ? /* @__PURE__ */ jsx38(
7954
8184
  LauncherCallout,
7955
8185
  {
7956
8186
  callout: calloutToRender,
@@ -8015,34 +8245,34 @@ var TRACKED = {
8015
8245
  expand: (on) => ({ on }),
8016
8246
  fullscreen: (on) => ({ on }),
8017
8247
  // Conversation funnel. `send` is the key conversion; text never rides.
8018
- send: (p35) => ({ attachments: p35.attachmentCount }),
8019
- message: (p35) => ({ role: p35.role }),
8248
+ send: (p36) => ({ attachments: p36.attachmentCount }),
8249
+ message: (p36) => ({ role: p36.role }),
8020
8250
  stop: () => void 0,
8021
8251
  clear: () => void 0,
8022
8252
  suggestion: () => void 0,
8023
- toggleHistory: (p35) => ({ view: p35.view }),
8253
+ toggleHistory: (p36) => ({ view: p36.view }),
8024
8254
  handshake: () => void 0,
8025
8255
  // Forms + human-in-the-loop — ids and outcomes, never values.
8026
- formSubmit: (p35) => ({ formId: p35.formId, skipped: p35.skipped }),
8256
+ formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
8027
8257
  toolResult: () => void 0,
8028
- toolDecision: (p35) => ({ approved: p35.approved }),
8258
+ toolDecision: (p36) => ({ approved: p36.approved }),
8029
8259
  // Content — ids, tags + counts only; titles/bodies never ride.
8030
- contentView: (p35) => ({ section: p35.section, tags: p35.tags, count: p35.count }),
8031
- contentOpen: (p35) => ({ contentId: p35.contentId, tags: p35.tags }),
8032
- contentSearch: (p35) => ({ qlen: p35.queryLength, hits: p35.hitCount }),
8033
- contentRead: (p35) => ({ contentId: p35.contentId }),
8034
- contentLinkClick: (p35) => ({ contentId: p35.contentId }),
8260
+ contentView: (p36) => ({ section: p36.section, tags: p36.tags, count: p36.count }),
8261
+ contentOpen: (p36) => ({ contentId: p36.contentId, tags: p36.tags }),
8262
+ contentSearch: (p36) => ({ qlen: p36.queryLength, hits: p36.hitCount }),
8263
+ contentRead: (p36) => ({ contentId: p36.contentId }),
8264
+ contentLinkClick: (p36) => ({ contentId: p36.contentId }),
8035
8265
  // Composer / attachments / voice.
8036
- attach: (p35) => ({ count: p35.count, bytes: p35.totalBytes }),
8266
+ attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
8037
8267
  voiceStart: () => void 0,
8038
- voiceStop: (p35) => ({ ms: p35.durationMs }),
8268
+ voiceStop: (p36) => ({ ms: p36.durationMs }),
8039
8269
  voiceCancel: () => void 0,
8040
8270
  // Preferences — how visitors tune the surface.
8041
8271
  localeChange: (locale) => ({ locale }),
8042
8272
  themeChange: (theme) => ({ theme }),
8043
8273
  textSizeChange: (size) => ({ size }),
8044
- soundToggle: (p35) => ({ muted: p35.muted }),
8045
- sidebarToggle: (p35) => ({ collapsed: p35.collapsed }),
8274
+ soundToggle: (p36) => ({ muted: p36.muted }),
8275
+ sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
8046
8276
  calloutDismiss: () => void 0,
8047
8277
  // Health signal only — the error object itself never leaves the page.
8048
8278
  error: () => void 0