@helpai/elements 0.46.3 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/elements-web-component.esm.js +27 -27
- package/elements-web-component.esm.js.map +4 -4
- package/elements.cjs.js +27 -27
- package/elements.cjs.js.map +4 -4
- package/elements.esm.js +27 -27
- package/elements.esm.js.map +4 -4
- package/elements.js +27 -27
- package/elements.js.map +4 -4
- package/index.d.ts +1 -1
- package/index.mjs +786 -562
- package/package.json +1 -1
- package/style.css +1 -1
- package/web-component.mjs +786 -562
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.
|
|
33
|
+
var ELEMENTS_VERSION = true ? "0.47.0" : "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: "
|
|
142
|
-
|
|
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: "
|
|
258
|
-
|
|
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
|
|
1296
|
-
if (overrides.accent) host.style.setProperty(`--${
|
|
1297
|
-
if (overrides.accentText) host.style.setProperty(`--${
|
|
1298
|
-
if (overrides.radius) host.style.setProperty(`--${
|
|
1299
|
-
if (overrides.fontFamily) host.style.setProperty(`--${
|
|
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
|
|
1306
|
-
if (size.width !== void 0) host.style.setProperty(`--${
|
|
1307
|
-
if (size.height !== void 0) host.style.setProperty(`--${
|
|
1308
|
-
if (size.expanded?.width !== void 0) host.style.setProperty(`--${
|
|
1309
|
-
if (size.expanded?.height !== void 0) host.style.setProperty(`--${
|
|
1310
|
-
if (size.inset !== void 0) host.style.setProperty(`--${
|
|
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
|
|
1575
|
-
if (!u && !
|
|
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 (
|
|
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(
|
|
1589
|
-
const bare =
|
|
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(
|
|
1678
|
-
return
|
|
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
|
|
1687
|
-
if (
|
|
1845
|
+
for (const p36 of m.parts) {
|
|
1846
|
+
if (p36.kind === "step-start") {
|
|
1688
1847
|
out.push({ type: "step-start" });
|
|
1689
1848
|
}
|
|
1690
|
-
if (
|
|
1691
|
-
out.push({ type: "reasoning", text:
|
|
1849
|
+
if (p36.kind === "reasoning" && p36.text) {
|
|
1850
|
+
out.push({ type: "reasoning", text: p36.text, state: p36.done ? "done" : "streaming" });
|
|
1692
1851
|
}
|
|
1693
|
-
if (
|
|
1694
|
-
out.push({ text:
|
|
1852
|
+
if (p36.kind === "text" && p36.text) {
|
|
1853
|
+
out.push({ text: p36.text, type: "text" });
|
|
1695
1854
|
}
|
|
1696
|
-
if (
|
|
1697
|
-
out.push({ mediaType:
|
|
1855
|
+
if (p36.kind === "file" && p36.url) {
|
|
1856
|
+
out.push({ mediaType: p36.mediaType, type: "file", url: p36.url });
|
|
1698
1857
|
}
|
|
1699
|
-
if (
|
|
1858
|
+
if (p36.kind === "tool" && isResolvedToolPart(p36)) {
|
|
1700
1859
|
const part = {
|
|
1701
|
-
type: toolPartType(
|
|
1702
|
-
toolCallId:
|
|
1703
|
-
state:
|
|
1860
|
+
type: toolPartType(p36.toolName),
|
|
1861
|
+
toolCallId: p36.toolCallId,
|
|
1862
|
+
state: p36.state
|
|
1704
1863
|
};
|
|
1705
|
-
if (
|
|
1706
|
-
if (
|
|
1707
|
-
if (
|
|
1708
|
-
if (
|
|
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
|
}
|
|
@@ -2441,7 +2600,7 @@ function fromWireMessage(w) {
|
|
|
2441
2600
|
};
|
|
2442
2601
|
}
|
|
2443
2602
|
return null;
|
|
2444
|
-
}).filter((
|
|
2603
|
+
}).filter((p36) => p36 !== null);
|
|
2445
2604
|
return {
|
|
2446
2605
|
id: w.id,
|
|
2447
2606
|
role: w.role,
|
|
@@ -2475,43 +2634,43 @@ function assistantText(m) {
|
|
|
2475
2634
|
}
|
|
2476
2635
|
return out;
|
|
2477
2636
|
}
|
|
2478
|
-
function partToReactive(
|
|
2479
|
-
if (
|
|
2480
|
-
return { kind:
|
|
2637
|
+
function partToReactive(p36) {
|
|
2638
|
+
if (p36.kind === "text" || p36.kind === "reasoning") {
|
|
2639
|
+
return { kind: p36.kind, id: p36.id, textSig: signal(p36.text), doneSig: signal(p36.done) };
|
|
2481
2640
|
}
|
|
2482
|
-
if (
|
|
2641
|
+
if (p36.kind === "tool") {
|
|
2483
2642
|
return {
|
|
2484
2643
|
kind: "tool",
|
|
2485
|
-
toolCallId:
|
|
2486
|
-
toolName:
|
|
2487
|
-
inputPartialSig: signal(
|
|
2488
|
-
inputSig: signal(
|
|
2489
|
-
outputSig: signal(
|
|
2490
|
-
errorSig: signal(
|
|
2491
|
-
stateSig: signal(
|
|
2492
|
-
approvalSig: signal(
|
|
2644
|
+
toolCallId: p36.toolCallId,
|
|
2645
|
+
toolName: p36.toolName,
|
|
2646
|
+
inputPartialSig: signal(p36.inputPartial),
|
|
2647
|
+
inputSig: signal(p36.input),
|
|
2648
|
+
outputSig: signal(p36.output),
|
|
2649
|
+
errorSig: signal(p36.error),
|
|
2650
|
+
stateSig: signal(p36.state),
|
|
2651
|
+
approvalSig: signal(p36.approval)
|
|
2493
2652
|
};
|
|
2494
2653
|
}
|
|
2495
|
-
return
|
|
2654
|
+
return p36;
|
|
2496
2655
|
}
|
|
2497
|
-
function partFromReactive(
|
|
2498
|
-
if (
|
|
2499
|
-
return { kind:
|
|
2656
|
+
function partFromReactive(p36) {
|
|
2657
|
+
if (p36.kind === "text" || p36.kind === "reasoning") {
|
|
2658
|
+
return { kind: p36.kind, id: p36.id, text: p36.textSig.value, done: p36.doneSig.value };
|
|
2500
2659
|
}
|
|
2501
|
-
if (
|
|
2660
|
+
if (p36.kind === "tool") {
|
|
2502
2661
|
return {
|
|
2503
2662
|
kind: "tool",
|
|
2504
|
-
toolCallId:
|
|
2505
|
-
toolName:
|
|
2506
|
-
inputPartial:
|
|
2507
|
-
input:
|
|
2508
|
-
output:
|
|
2509
|
-
error:
|
|
2510
|
-
state:
|
|
2511
|
-
approval:
|
|
2663
|
+
toolCallId: p36.toolCallId,
|
|
2664
|
+
toolName: p36.toolName,
|
|
2665
|
+
inputPartial: p36.inputPartialSig.value,
|
|
2666
|
+
input: p36.inputSig.value,
|
|
2667
|
+
output: p36.outputSig.value,
|
|
2668
|
+
error: p36.errorSig.value,
|
|
2669
|
+
state: p36.stateSig.value,
|
|
2670
|
+
approval: p36.approvalSig.value
|
|
2512
2671
|
};
|
|
2513
2672
|
}
|
|
2514
|
-
return
|
|
2673
|
+
return p36;
|
|
2515
2674
|
}
|
|
2516
2675
|
|
|
2517
2676
|
// src/stream/reducer.ts
|
|
@@ -2557,8 +2716,8 @@ var StreamReducer = class {
|
|
|
2557
2716
|
ensureTextPart(m, "text", chunk.id);
|
|
2558
2717
|
return;
|
|
2559
2718
|
case "text-delta": {
|
|
2560
|
-
const
|
|
2561
|
-
|
|
2719
|
+
const p36 = ensureTextPart(m, "text", chunk.id);
|
|
2720
|
+
p36.textSig.value += chunk.delta;
|
|
2562
2721
|
return;
|
|
2563
2722
|
}
|
|
2564
2723
|
case "text-end":
|
|
@@ -2568,8 +2727,8 @@ var StreamReducer = class {
|
|
|
2568
2727
|
ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
|
|
2569
2728
|
return;
|
|
2570
2729
|
case "reasoning-delta": {
|
|
2571
|
-
const
|
|
2572
|
-
|
|
2730
|
+
const p36 = ensureTextPart(m, "reasoning", chunk.id);
|
|
2731
|
+
p36.textSig.value += chunk.delta;
|
|
2573
2732
|
return;
|
|
2574
2733
|
}
|
|
2575
2734
|
case "reasoning-end":
|
|
@@ -2619,19 +2778,19 @@ var StreamReducer = class {
|
|
|
2619
2778
|
}
|
|
2620
2779
|
};
|
|
2621
2780
|
function ensureTextPart(m, kind, id) {
|
|
2622
|
-
const existing = m.partsSig.value.find((
|
|
2781
|
+
const existing = m.partsSig.value.find((p36) => p36.kind === kind && p36.id === id);
|
|
2623
2782
|
if (existing) return existing;
|
|
2624
2783
|
const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
|
|
2625
2784
|
appendPart(m, part);
|
|
2626
2785
|
return part;
|
|
2627
2786
|
}
|
|
2628
|
-
function ensureToolPart(m, toolCallId,
|
|
2629
|
-
const existing = m.partsSig.value.find((
|
|
2787
|
+
function ensureToolPart(m, toolCallId, toolName2) {
|
|
2788
|
+
const existing = m.partsSig.value.find((p36) => p36.kind === "tool" && p36.toolCallId === toolCallId);
|
|
2630
2789
|
if (existing) return existing;
|
|
2631
2790
|
const part = {
|
|
2632
2791
|
kind: "tool",
|
|
2633
2792
|
toolCallId,
|
|
2634
|
-
toolName:
|
|
2793
|
+
toolName: toolName2 ?? "tool",
|
|
2635
2794
|
inputPartialSig: signal2(""),
|
|
2636
2795
|
inputSig: signal2(void 0),
|
|
2637
2796
|
outputSig: signal2(void 0),
|
|
@@ -2646,7 +2805,7 @@ function appendPart(m, part) {
|
|
|
2646
2805
|
m.partsSig.value = [...m.partsSig.value, part];
|
|
2647
2806
|
}
|
|
2648
2807
|
function appendSource(m, source) {
|
|
2649
|
-
if (m.partsSig.value.some((
|
|
2808
|
+
if (m.partsSig.value.some((p36) => p36.kind === "source" && p36.sourceId === source.sourceId)) return;
|
|
2650
2809
|
appendPart(m, source);
|
|
2651
2810
|
}
|
|
2652
2811
|
function applyTool(m, chunk) {
|
|
@@ -2655,37 +2814,37 @@ function applyTool(m, chunk) {
|
|
|
2655
2814
|
ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2656
2815
|
return;
|
|
2657
2816
|
case "tool-input-delta": {
|
|
2658
|
-
const
|
|
2659
|
-
|
|
2817
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2818
|
+
p36.inputPartialSig.value += chunk.inputTextDelta;
|
|
2660
2819
|
return;
|
|
2661
2820
|
}
|
|
2662
2821
|
case "tool-input-available": {
|
|
2663
|
-
const
|
|
2664
|
-
|
|
2665
|
-
|
|
2822
|
+
const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2823
|
+
p36.inputSig.value = chunk.input;
|
|
2824
|
+
p36.stateSig.value = "input-available";
|
|
2666
2825
|
return;
|
|
2667
2826
|
}
|
|
2668
2827
|
case "tool-approval-request": {
|
|
2669
|
-
const
|
|
2670
|
-
|
|
2671
|
-
|
|
2828
|
+
const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
|
|
2829
|
+
p36.approvalSig.value = { id: chunk.approvalId };
|
|
2830
|
+
p36.stateSig.value = "approval-requested";
|
|
2672
2831
|
return;
|
|
2673
2832
|
}
|
|
2674
2833
|
case "tool-output-available": {
|
|
2675
|
-
const
|
|
2676
|
-
|
|
2677
|
-
|
|
2834
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2835
|
+
p36.outputSig.value = chunk.output;
|
|
2836
|
+
p36.stateSig.value = "output-available";
|
|
2678
2837
|
return;
|
|
2679
2838
|
}
|
|
2680
2839
|
case "tool-output-error": {
|
|
2681
|
-
const
|
|
2682
|
-
|
|
2683
|
-
|
|
2840
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2841
|
+
p36.errorSig.value = chunk.errorText;
|
|
2842
|
+
p36.stateSig.value = "output-error";
|
|
2684
2843
|
return;
|
|
2685
2844
|
}
|
|
2686
2845
|
case "tool-output-denied": {
|
|
2687
|
-
const
|
|
2688
|
-
|
|
2846
|
+
const p36 = ensureToolPart(m, chunk.toolCallId);
|
|
2847
|
+
p36.stateSig.value = "output-denied";
|
|
2689
2848
|
return;
|
|
2690
2849
|
}
|
|
2691
2850
|
default:
|
|
@@ -3382,24 +3541,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
|
|
|
3382
3541
|
import { useEffect as useEffect2, useRef } from "preact/hooks";
|
|
3383
3542
|
import { jsx as jsx3 } from "preact/jsx-runtime";
|
|
3384
3543
|
function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
|
|
3385
|
-
const
|
|
3544
|
+
const p36 = BRAND.cssPrefix;
|
|
3386
3545
|
const dragRef = useRef(null);
|
|
3387
3546
|
useEffect2(() => {
|
|
3388
3547
|
if (!panelEl) return;
|
|
3389
3548
|
const style = panelEl.style;
|
|
3390
|
-
if (resize.minWidth) style.setProperty(`--${
|
|
3391
|
-
if (resize.maxWidth) style.setProperty(`--${
|
|
3392
|
-
if (resize.minHeight) style.setProperty(`--${
|
|
3393
|
-
if (resize.maxHeight) style.setProperty(`--${
|
|
3549
|
+
if (resize.minWidth) style.setProperty(`--${p36}-resize-min-w`, resize.minWidth);
|
|
3550
|
+
if (resize.maxWidth) style.setProperty(`--${p36}-resize-max-w`, resize.maxWidth);
|
|
3551
|
+
if (resize.minHeight) style.setProperty(`--${p36}-resize-min-h`, resize.minHeight);
|
|
3552
|
+
if (resize.maxHeight) style.setProperty(`--${p36}-resize-max-h`, resize.maxHeight);
|
|
3394
3553
|
if (initialSize) {
|
|
3395
|
-
style.setProperty(`--${
|
|
3396
|
-
style.setProperty(`--${
|
|
3554
|
+
style.setProperty(`--${p36}-widget-w`, `${initialSize.width}px`);
|
|
3555
|
+
style.setProperty(`--${p36}-widget-h`, `${initialSize.height}px`);
|
|
3397
3556
|
}
|
|
3398
|
-
}, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight,
|
|
3557
|
+
}, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
|
|
3399
3558
|
if (!panelEl) return null;
|
|
3400
3559
|
const isTop = position.startsWith("top-");
|
|
3401
3560
|
const isRight = position.endsWith("-right");
|
|
3402
|
-
const cornerClass = `${
|
|
3561
|
+
const cornerClass = `${p36}-resize-grip ${p36}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
|
|
3403
3562
|
const onPointerDown = (e) => {
|
|
3404
3563
|
if (!panelEl) return;
|
|
3405
3564
|
const target = e.currentTarget;
|
|
@@ -3424,8 +3583,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
|
|
|
3424
3583
|
if (!d || e.pointerId !== d.pointerId || !panelEl) return;
|
|
3425
3584
|
const dx = (e.clientX - d.startX) * d.dirX;
|
|
3426
3585
|
const dy = (e.clientY - d.startY) * d.dirY;
|
|
3427
|
-
panelEl.style.setProperty(`--${
|
|
3428
|
-
panelEl.style.setProperty(`--${
|
|
3586
|
+
panelEl.style.setProperty(`--${p36}-widget-w`, `${d.startW + dx}px`);
|
|
3587
|
+
panelEl.style.setProperty(`--${p36}-widget-h`, `${d.startH + dy}px`);
|
|
3429
3588
|
};
|
|
3430
3589
|
const onPointerUp = (e) => {
|
|
3431
3590
|
const d = dragRef.current;
|
|
@@ -4162,7 +4321,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
|
|
|
4162
4321
|
// src/ui/overflow-menu.tsx
|
|
4163
4322
|
import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
|
|
4164
4323
|
function OverflowMenu({ items, triggerLabel }) {
|
|
4165
|
-
const
|
|
4324
|
+
const p36 = BRAND.cssPrefix;
|
|
4166
4325
|
const menu = usePopoverMenu({ itemCount: items.length });
|
|
4167
4326
|
const handleSelect = (item) => {
|
|
4168
4327
|
if (item.disabled) return;
|
|
@@ -4185,13 +4344,13 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4185
4344
|
e.stopPropagation();
|
|
4186
4345
|
pickSegment(item, segs[next].value);
|
|
4187
4346
|
};
|
|
4188
|
-
return /* @__PURE__ */ jsxs6("div", { class: `${
|
|
4347
|
+
return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
|
|
4189
4348
|
/* @__PURE__ */ jsx8(
|
|
4190
4349
|
"button",
|
|
4191
4350
|
{
|
|
4192
4351
|
ref: menu.triggerRef,
|
|
4193
4352
|
type: "button",
|
|
4194
|
-
class: `${
|
|
4353
|
+
class: `${p36}-icon-btn`,
|
|
4195
4354
|
"aria-label": triggerLabel,
|
|
4196
4355
|
"aria-haspopup": "menu",
|
|
4197
4356
|
"aria-expanded": menu.open,
|
|
@@ -4205,7 +4364,7 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4205
4364
|
"div",
|
|
4206
4365
|
{
|
|
4207
4366
|
ref: menu.menuRef,
|
|
4208
|
-
class: `${
|
|
4367
|
+
class: `${p36}-menu`,
|
|
4209
4368
|
role: "menu",
|
|
4210
4369
|
"aria-label": triggerLabel,
|
|
4211
4370
|
onKeyDown: menu.onMenuKey,
|
|
@@ -4215,14 +4374,14 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4215
4374
|
"div",
|
|
4216
4375
|
{
|
|
4217
4376
|
role: "menuitem",
|
|
4218
|
-
class: `${
|
|
4377
|
+
class: `${p36}-menu-item ${p36}-menu-item-segmented`,
|
|
4219
4378
|
"aria-label": item.label,
|
|
4220
4379
|
tabIndex: -1,
|
|
4221
4380
|
onKeyDown: (e) => onSegmentRowKey(e, item),
|
|
4222
4381
|
children: [
|
|
4223
|
-
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4224
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4225
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4382
|
+
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
|
|
4383
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
|
|
4384
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
|
|
4226
4385
|
const active = seg.value === item.value;
|
|
4227
4386
|
return /* @__PURE__ */ jsx8(
|
|
4228
4387
|
"button",
|
|
@@ -4230,7 +4389,7 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4230
4389
|
type: "button",
|
|
4231
4390
|
role: "menuitemradio",
|
|
4232
4391
|
"aria-checked": active,
|
|
4233
|
-
class: `${
|
|
4392
|
+
class: `${p36}-segment`,
|
|
4234
4393
|
"data-on": active ? "true" : void 0,
|
|
4235
4394
|
lang: seg.lang,
|
|
4236
4395
|
title: seg.value,
|
|
@@ -4250,14 +4409,14 @@ function OverflowMenu({ items, triggerLabel }) {
|
|
|
4250
4409
|
{
|
|
4251
4410
|
type: "button",
|
|
4252
4411
|
role: "menuitem",
|
|
4253
|
-
class: `${
|
|
4412
|
+
class: `${p36}-menu-item`,
|
|
4254
4413
|
"aria-pressed": item.type === "switch" ? item.on : void 0,
|
|
4255
4414
|
disabled: item.disabled,
|
|
4256
4415
|
onClick: () => handleSelect(item),
|
|
4257
4416
|
children: [
|
|
4258
|
-
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4259
|
-
/* @__PURE__ */ jsx8("span", { class: `${
|
|
4260
|
-
item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${
|
|
4417
|
+
item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
|
|
4418
|
+
/* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
|
|
4419
|
+
item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
|
|
4261
4420
|
]
|
|
4262
4421
|
},
|
|
4263
4422
|
item.id
|
|
@@ -4500,6 +4659,7 @@ function DynamicForm({
|
|
|
4500
4659
|
onSubmit,
|
|
4501
4660
|
skipLabel,
|
|
4502
4661
|
onSkip,
|
|
4662
|
+
footerHint,
|
|
4503
4663
|
disabled,
|
|
4504
4664
|
rootTestId,
|
|
4505
4665
|
submitTestId,
|
|
@@ -4546,6 +4706,7 @@ function DynamicForm({
|
|
|
4546
4706
|
field.name
|
|
4547
4707
|
)),
|
|
4548
4708
|
/* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
|
|
4709
|
+
footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
|
|
4549
4710
|
skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
|
|
4550
4711
|
/* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
|
|
4551
4712
|
] })
|
|
@@ -4800,9 +4961,9 @@ function FormDoneMarker({
|
|
|
4800
4961
|
import { useComputed as useComputed5 } from "@preact/signals";
|
|
4801
4962
|
|
|
4802
4963
|
// src/stream/constants.ts
|
|
4803
|
-
function isAskUserInputTool(
|
|
4804
|
-
if (!
|
|
4805
|
-
const name =
|
|
4964
|
+
function isAskUserInputTool(toolName2) {
|
|
4965
|
+
if (!toolName2) return false;
|
|
4966
|
+
const name = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
|
|
4806
4967
|
return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
|
|
4807
4968
|
}
|
|
4808
4969
|
|
|
@@ -4896,36 +5057,92 @@ function SourceView({ part, strings }) {
|
|
|
4896
5057
|
|
|
4897
5058
|
// src/ui/tool-approval.tsx
|
|
4898
5059
|
import { useComputed as useComputed2, useSignal } from "@preact/signals";
|
|
4899
|
-
|
|
5060
|
+
|
|
5061
|
+
// src/ui/tool-card.tsx
|
|
5062
|
+
import { jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
|
|
4900
5063
|
var p13 = BRAND.cssPrefix;
|
|
4901
|
-
function
|
|
4902
|
-
|
|
5064
|
+
function toolName(raw) {
|
|
5065
|
+
if (raw.startsWith("tool:")) return raw.slice(5);
|
|
5066
|
+
if (raw.startsWith("tool-")) return raw.slice(5);
|
|
5067
|
+
return raw;
|
|
5068
|
+
}
|
|
5069
|
+
function statusOf(state, approval) {
|
|
5070
|
+
if (state === "output-error") return "error";
|
|
5071
|
+
if (state === "output-denied" || approval?.approved === false) return "denied";
|
|
5072
|
+
if (state === "output-available") return "completed";
|
|
5073
|
+
if (approval?.approved === true) return "approved";
|
|
5074
|
+
return "pending";
|
|
5075
|
+
}
|
|
5076
|
+
var ICON = {
|
|
5077
|
+
completed: "\u2713",
|
|
5078
|
+
approved: "\u2713",
|
|
5079
|
+
denied: "\u2715",
|
|
5080
|
+
error: "\u26A0",
|
|
5081
|
+
pending: "\u2022"
|
|
5082
|
+
};
|
|
5083
|
+
function ToolStatus({
|
|
5084
|
+
state,
|
|
5085
|
+
approval,
|
|
5086
|
+
strings
|
|
5087
|
+
}) {
|
|
5088
|
+
const status = statusOf(state, approval);
|
|
5089
|
+
const label = status === "completed" ? strings.statusCompleted : status === "approved" ? strings.approved : status === "denied" ? strings.statusDenied : status === "error" ? strings.statusError : "";
|
|
5090
|
+
if (!label) return null;
|
|
5091
|
+
return /* @__PURE__ */ jsxs11("span", { class: `${p13}-toolui-status`, "data-status": status, children: [
|
|
5092
|
+
/* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-status-icon`, "aria-hidden": "true", children: ICON[status] }),
|
|
5093
|
+
label
|
|
5094
|
+
] });
|
|
5095
|
+
}
|
|
5096
|
+
function ToolSection({ label, value, error }) {
|
|
5097
|
+
const text = error ? String(value ?? "") : pretty(unwrapResult(value));
|
|
5098
|
+
if (!text) return null;
|
|
5099
|
+
return /* @__PURE__ */ jsxs11("div", { class: `${p13}-toolui-section`, children: [
|
|
5100
|
+
/* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-label`, children: label }),
|
|
5101
|
+
/* @__PURE__ */ jsx14("pre", { class: `${p13}-toolui-code`, "data-error": error ? "true" : void 0, children: text })
|
|
5102
|
+
] });
|
|
5103
|
+
}
|
|
5104
|
+
function unwrapResult(output) {
|
|
5105
|
+
if (output && typeof output === "object") {
|
|
5106
|
+
const rec = output;
|
|
5107
|
+
if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
|
|
5108
|
+
}
|
|
5109
|
+
return output;
|
|
4903
5110
|
}
|
|
5111
|
+
function pretty(value) {
|
|
5112
|
+
if (value == null) return "";
|
|
5113
|
+
try {
|
|
5114
|
+
const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
|
|
5115
|
+
if (!json || json === "{}" || json === "[]" || json === '""') return "";
|
|
5116
|
+
return json.length > 800 ? `${json.slice(0, 800)}\u2026` : json;
|
|
5117
|
+
} catch {
|
|
5118
|
+
return "";
|
|
5119
|
+
}
|
|
5120
|
+
}
|
|
5121
|
+
|
|
5122
|
+
// src/ui/tool-approval.tsx
|
|
5123
|
+
import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
|
|
5124
|
+
var p14 = BRAND.cssPrefix;
|
|
4904
5125
|
function ToolApproval({ part, strings, active, onDecision }) {
|
|
4905
5126
|
const approval = useComputed2(() => part.approvalSig.value);
|
|
5127
|
+
const state = useComputed2(() => part.stateSig.value);
|
|
4906
5128
|
const input = useComputed2(() => part.inputSig.value);
|
|
5129
|
+
const output = useComputed2(() => part.outputSig.value);
|
|
5130
|
+
const error = useComputed2(() => part.errorSig.value);
|
|
4907
5131
|
const reason = useSignal("");
|
|
4908
|
-
const decided = approval.value?.approved !== void 0;
|
|
4909
|
-
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
/* @__PURE__ */
|
|
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) })
|
|
5132
|
+
const decided = approval.value?.approved !== void 0 || state.value !== "approval-requested";
|
|
5133
|
+
return /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui`, "data-testid": decided ? TID.toolDecision : TID.toolApproval, children: [
|
|
5134
|
+
/* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui-head`, children: [
|
|
5135
|
+
/* @__PURE__ */ jsx15("strong", { class: `${p14}-toolui-title`, children: toolName(part.toolName) }),
|
|
5136
|
+
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
5137
|
] }),
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
|
|
5138
|
+
/* @__PURE__ */ jsx15(ToolSection, { label: strings.toolParameters, value: input.value }),
|
|
5139
|
+
output.value !== void 0 ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolResult, value: output.value }) : null,
|
|
5140
|
+
error.value ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null,
|
|
5141
|
+
decided ? null : active ? /* @__PURE__ */ jsxs12(Fragment2, { children: [
|
|
5142
|
+
/* @__PURE__ */ jsx15(
|
|
4926
5143
|
"input",
|
|
4927
5144
|
{
|
|
4928
|
-
class: `${
|
|
5145
|
+
class: `${p14}-field-input`,
|
|
4929
5146
|
value: reason.value,
|
|
4930
5147
|
placeholder: strings.approvalReason,
|
|
4931
5148
|
onInput: (e) => {
|
|
@@ -4933,40 +5150,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
|
|
|
4933
5150
|
}
|
|
4934
5151
|
}
|
|
4935
5152
|
),
|
|
4936
|
-
/* @__PURE__ */
|
|
4937
|
-
/* @__PURE__ */
|
|
5153
|
+
/* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
|
|
5154
|
+
/* @__PURE__ */ jsx15(
|
|
4938
5155
|
"button",
|
|
4939
5156
|
{
|
|
4940
5157
|
type: "button",
|
|
4941
|
-
class: `${
|
|
5158
|
+
class: `${p14}-form-skip`,
|
|
4942
5159
|
onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
|
|
4943
5160
|
"data-testid": TID.toolReject,
|
|
4944
5161
|
children: strings.reject
|
|
4945
5162
|
}
|
|
4946
5163
|
),
|
|
4947
|
-
/* @__PURE__ */
|
|
5164
|
+
/* @__PURE__ */ jsx15(
|
|
4948
5165
|
"button",
|
|
4949
5166
|
{
|
|
4950
5167
|
type: "button",
|
|
4951
|
-
class: `${
|
|
5168
|
+
class: `${p14}-form-submit`,
|
|
4952
5169
|
onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
|
|
4953
5170
|
"data-testid": TID.toolApprove,
|
|
4954
5171
|
children: strings.approve
|
|
4955
5172
|
}
|
|
4956
5173
|
)
|
|
4957
5174
|
] })
|
|
4958
|
-
] }) :
|
|
5175
|
+
] }) : (
|
|
5176
|
+
// eslint-disable-next-line unicorn/no-nested-ternary -- decided → none; active → controls; stale → note
|
|
5177
|
+
/* @__PURE__ */ jsx15("p", { class: `${p14}-toolui-note`, children: strings.stepNoLongerActive })
|
|
5178
|
+
)
|
|
4959
5179
|
] });
|
|
4960
5180
|
}
|
|
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
5181
|
|
|
4971
5182
|
// src/ui/tool-ask-input.tsx
|
|
4972
5183
|
import { useComputed as useComputed3 } from "@preact/signals";
|
|
@@ -5026,8 +5237,20 @@ function num(v) {
|
|
|
5026
5237
|
}
|
|
5027
5238
|
|
|
5028
5239
|
// src/ui/tool-ask-input.tsx
|
|
5029
|
-
import { jsx as
|
|
5030
|
-
var
|
|
5240
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
|
|
5241
|
+
var p15 = BRAND.cssPrefix;
|
|
5242
|
+
function responseTypeLabel(req, s) {
|
|
5243
|
+
switch (req.responseType) {
|
|
5244
|
+
case "single-choice":
|
|
5245
|
+
return s.respSingleChoice;
|
|
5246
|
+
case "multi-choice":
|
|
5247
|
+
return s.respMultiChoice;
|
|
5248
|
+
case "confirmation":
|
|
5249
|
+
return s.respConfirmation;
|
|
5250
|
+
default:
|
|
5251
|
+
return s.respFreeText;
|
|
5252
|
+
}
|
|
5253
|
+
}
|
|
5031
5254
|
function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
|
|
5032
5255
|
const state = useComputed3(() => part.stateSig.value);
|
|
5033
5256
|
const approval = useComputed3(() => part.approvalSig.value);
|
|
@@ -5039,71 +5262,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
|
|
|
5039
5262
|
else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
|
|
5040
5263
|
else onSubmit(part.toolCallId, accepted ? { answer } : {});
|
|
5041
5264
|
};
|
|
5265
|
+
const req = request.value;
|
|
5042
5266
|
if (decided) {
|
|
5043
|
-
return /* @__PURE__ */
|
|
5267
|
+
return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
|
|
5044
5268
|
}
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
/* @__PURE__ */
|
|
5049
|
-
|
|
5050
|
-
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5055
|
-
|
|
5056
|
-
|
|
5057
|
-
|
|
5058
|
-
|
|
5269
|
+
const stale = !active;
|
|
5270
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui${stale ? ` ${p15}-toolui-stale` : ""}`, "data-testid": TID.toolAskInput, children: [
|
|
5271
|
+
/* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
|
|
5272
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputRequired }),
|
|
5273
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: responseTypeLabel(req, strings) })
|
|
5274
|
+
] }),
|
|
5275
|
+
req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
|
|
5276
|
+
/* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
|
|
5277
|
+
stale ? /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-note`, children: strings.stepNoLongerActive }) : /* @__PURE__ */ jsx16(AskBody, { req, strings, resolve })
|
|
5278
|
+
] });
|
|
5279
|
+
}
|
|
5280
|
+
function AskBody({
|
|
5281
|
+
req,
|
|
5282
|
+
strings,
|
|
5283
|
+
resolve
|
|
5284
|
+
}) {
|
|
5285
|
+
if (req.responseType === "confirmation") {
|
|
5286
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-form-actions`, children: [
|
|
5287
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-form-hint`, children: strings.inputSubmitHint }),
|
|
5288
|
+
/* @__PURE__ */ jsx16(
|
|
5059
5289
|
"button",
|
|
5060
5290
|
{
|
|
5061
5291
|
type: "button",
|
|
5062
|
-
class: `${
|
|
5292
|
+
class: `${p15}-form-skip`,
|
|
5063
5293
|
onClick: () => resolve(void 0, false),
|
|
5064
5294
|
"data-testid": TID.toolInputSkip,
|
|
5065
5295
|
children: strings.reject
|
|
5066
5296
|
}
|
|
5067
5297
|
),
|
|
5068
|
-
/* @__PURE__ */
|
|
5298
|
+
/* @__PURE__ */ jsx16(
|
|
5069
5299
|
"button",
|
|
5070
5300
|
{
|
|
5071
5301
|
type: "button",
|
|
5072
|
-
class: `${
|
|
5302
|
+
class: `${p15}-form-submit`,
|
|
5073
5303
|
onClick: () => resolve(void 0, true),
|
|
5074
5304
|
"data-testid": TID.toolInputSubmit,
|
|
5075
5305
|
children: strings.approve
|
|
5076
5306
|
}
|
|
5077
5307
|
)
|
|
5078
|
-
] })
|
|
5079
|
-
|
|
5080
|
-
|
|
5081
|
-
|
|
5082
|
-
|
|
5083
|
-
|
|
5084
|
-
|
|
5085
|
-
|
|
5086
|
-
|
|
5087
|
-
|
|
5088
|
-
|
|
5089
|
-
|
|
5090
|
-
|
|
5091
|
-
|
|
5308
|
+
] });
|
|
5309
|
+
}
|
|
5310
|
+
const fields = askInputToFields(req).map((f) => {
|
|
5311
|
+
f.label = strings.inputYourAnswer;
|
|
5312
|
+
return f;
|
|
5313
|
+
});
|
|
5314
|
+
return /* @__PURE__ */ jsx16(
|
|
5315
|
+
DynamicForm,
|
|
5316
|
+
{
|
|
5317
|
+
fields,
|
|
5318
|
+
strings,
|
|
5319
|
+
submitLabel: strings.inputSubmit,
|
|
5320
|
+
footerHint: strings.inputSubmitHint,
|
|
5321
|
+
onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
|
|
5322
|
+
skipLabel: req.required === false ? strings.inputSkip : void 0,
|
|
5323
|
+
onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
|
|
5324
|
+
submitTestId: TID.toolInputSubmit,
|
|
5325
|
+
skipTestId: TID.toolInputSkip
|
|
5326
|
+
}
|
|
5327
|
+
);
|
|
5092
5328
|
}
|
|
5093
|
-
function
|
|
5094
|
-
return /* @__PURE__ */
|
|
5095
|
-
/* @__PURE__ */
|
|
5096
|
-
|
|
5329
|
+
function Section({ label, text }) {
|
|
5330
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-section`, children: [
|
|
5331
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-label`, children: label }),
|
|
5332
|
+
/* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-text`, children: text })
|
|
5097
5333
|
] });
|
|
5098
5334
|
}
|
|
5099
|
-
function
|
|
5335
|
+
function DecidedCard({
|
|
5336
|
+
part,
|
|
5337
|
+
strings,
|
|
5338
|
+
req
|
|
5339
|
+
}) {
|
|
5100
5340
|
const output = useComputed3(() => part.outputSig.value);
|
|
5101
5341
|
const approval = useComputed3(() => part.approvalSig.value);
|
|
5102
|
-
const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
|
|
5103
5342
|
const skipped = approval.value?.approved === false;
|
|
5104
|
-
|
|
5105
|
-
|
|
5106
|
-
/* @__PURE__ */
|
|
5343
|
+
const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
|
|
5344
|
+
return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui`, "data-testid": TID.toolDecision, children: [
|
|
5345
|
+
/* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
|
|
5346
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputBadge }),
|
|
5347
|
+
/* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: skipped ? strings.inputSkipped : strings.inputAnswered })
|
|
5348
|
+
] }),
|
|
5349
|
+
req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
|
|
5350
|
+
/* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
|
|
5351
|
+
!skipped && answer ? /* @__PURE__ */ jsx16(Section, { label: strings.inputResponse, text: answer }) : null
|
|
5107
5352
|
] });
|
|
5108
5353
|
}
|
|
5109
5354
|
function summarizeOutput(output) {
|
|
@@ -5112,6 +5357,7 @@ function summarizeOutput(output) {
|
|
|
5112
5357
|
if (typeof output === "object") {
|
|
5113
5358
|
const rec = output;
|
|
5114
5359
|
if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
|
|
5360
|
+
if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
|
|
5115
5361
|
return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
|
|
5116
5362
|
}
|
|
5117
5363
|
return String(output);
|
|
@@ -5119,52 +5365,30 @@ function summarizeOutput(output) {
|
|
|
5119
5365
|
|
|
5120
5366
|
// src/ui/tool-call.tsx
|
|
5121
5367
|
import { useComputed as useComputed4 } from "@preact/signals";
|
|
5122
|
-
import { jsx as
|
|
5123
|
-
var
|
|
5124
|
-
function displayToolName2(toolName) {
|
|
5125
|
-
return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
|
|
5126
|
-
}
|
|
5368
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
|
|
5369
|
+
var p16 = BRAND.cssPrefix;
|
|
5127
5370
|
function ToolCall({ part, strings }) {
|
|
5128
|
-
const
|
|
5129
|
-
const
|
|
5130
|
-
const
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5134
|
-
|
|
5135
|
-
|
|
5371
|
+
const input = useComputed4(() => part.inputSig.value);
|
|
5372
|
+
const output = useComputed4(() => part.outputSig.value);
|
|
5373
|
+
const error = useComputed4(() => part.errorSig.value);
|
|
5374
|
+
const state = useComputed4(() => part.stateSig.value);
|
|
5375
|
+
const approval = useComputed4(() => part.approvalSig.value);
|
|
5376
|
+
const hasDetails = useComputed4(() => !!pretty(input.value) || !!error.value || !!pretty(unwrapResult(output.value)));
|
|
5377
|
+
if (!hasDetails.value) return null;
|
|
5378
|
+
return /* @__PURE__ */ jsxs14("details", { class: `${p16}-toolui ${p16}-toolui-collapsible`, "data-testid": TID.toolCall, children: [
|
|
5379
|
+
/* @__PURE__ */ jsxs14("summary", { class: `${p16}-toolui-head`, children: [
|
|
5380
|
+
/* @__PURE__ */ jsx17("strong", { class: `${p16}-toolui-title`, children: toolName(part.toolName) }),
|
|
5381
|
+
/* @__PURE__ */ jsx17(ToolStatus, { state: state.value, approval: approval.value, strings })
|
|
5136
5382
|
] }),
|
|
5137
|
-
|
|
5138
|
-
|
|
5139
|
-
|
|
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
|
|
5383
|
+
/* @__PURE__ */ jsx17(ToolSection, { label: strings.toolParameters, value: input.value }),
|
|
5384
|
+
output.value !== void 0 ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolResult, value: output.value }) : null,
|
|
5385
|
+
error.value ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null
|
|
5145
5386
|
] });
|
|
5146
5387
|
}
|
|
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
5388
|
|
|
5165
5389
|
// src/ui/message-bubble.tsx
|
|
5166
|
-
import { jsx as
|
|
5167
|
-
var
|
|
5390
|
+
import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
|
|
5391
|
+
var p17 = BRAND.cssPrefix;
|
|
5168
5392
|
function MessageBubble({
|
|
5169
5393
|
message,
|
|
5170
5394
|
strings,
|
|
@@ -5188,9 +5412,9 @@ function MessageBubble({
|
|
|
5188
5412
|
const working = streaming && !hasAnswerText.value;
|
|
5189
5413
|
const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
|
|
5190
5414
|
const stamp = formatStamp(message.createdAt);
|
|
5191
|
-
return /* @__PURE__ */
|
|
5192
|
-
/* @__PURE__ */
|
|
5193
|
-
bufferedHold ? /* @__PURE__ */
|
|
5415
|
+
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: [
|
|
5416
|
+
/* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble`, children: [
|
|
5417
|
+
bufferedHold ? /* @__PURE__ */ jsx18(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx18(
|
|
5194
5418
|
PartView,
|
|
5195
5419
|
{
|
|
5196
5420
|
part,
|
|
@@ -5204,10 +5428,10 @@ function MessageBubble({
|
|
|
5204
5428
|
},
|
|
5205
5429
|
partKey(part)
|
|
5206
5430
|
)),
|
|
5207
|
-
showStreamDots && /* @__PURE__ */
|
|
5208
|
-
message.status === "error" && message.errorText ? /* @__PURE__ */
|
|
5431
|
+
showStreamDots && /* @__PURE__ */ jsx18(TypingDots, {}),
|
|
5432
|
+
message.status === "error" && message.errorText ? /* @__PURE__ */ jsx18("div", { class: `${p17}-error`, role: "alert", children: /* @__PURE__ */ jsx18("span", { children: message.errorText }) }) : null
|
|
5209
5433
|
] }),
|
|
5210
|
-
stamp ? /* @__PURE__ */
|
|
5434
|
+
stamp ? /* @__PURE__ */ jsx18("time", { class: `${p17}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
|
|
5211
5435
|
] }) });
|
|
5212
5436
|
}
|
|
5213
5437
|
function formatStamp(createdAt) {
|
|
@@ -5237,11 +5461,11 @@ function PartView({
|
|
|
5237
5461
|
case "step-start":
|
|
5238
5462
|
return null;
|
|
5239
5463
|
case "text":
|
|
5240
|
-
return /* @__PURE__ */
|
|
5464
|
+
return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
|
|
5241
5465
|
case "reasoning":
|
|
5242
|
-
return showReasoning ? /* @__PURE__ */
|
|
5466
|
+
return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
|
|
5243
5467
|
case "tool":
|
|
5244
|
-
return /* @__PURE__ */
|
|
5468
|
+
return /* @__PURE__ */ jsx18(
|
|
5245
5469
|
ToolPartView,
|
|
5246
5470
|
{
|
|
5247
5471
|
part,
|
|
@@ -5253,11 +5477,11 @@ function PartView({
|
|
|
5253
5477
|
);
|
|
5254
5478
|
case "file":
|
|
5255
5479
|
if (part.mediaType.startsWith("image/")) {
|
|
5256
|
-
return /* @__PURE__ */
|
|
5480
|
+
return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
|
|
5257
5481
|
}
|
|
5258
|
-
return /* @__PURE__ */
|
|
5482
|
+
return /* @__PURE__ */ jsx18("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
|
|
5259
5483
|
case "source":
|
|
5260
|
-
return showSources ? /* @__PURE__ */
|
|
5484
|
+
return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
|
|
5261
5485
|
}
|
|
5262
5486
|
}
|
|
5263
5487
|
function ToolPartView({
|
|
@@ -5270,7 +5494,7 @@ function ToolPartView({
|
|
|
5270
5494
|
const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
|
|
5271
5495
|
if (tool?.humanInLoop) {
|
|
5272
5496
|
if (isAskUserInputTool(part.toolName)) {
|
|
5273
|
-
return /* @__PURE__ */
|
|
5497
|
+
return /* @__PURE__ */ jsx18(
|
|
5274
5498
|
ToolAskInput,
|
|
5275
5499
|
{
|
|
5276
5500
|
part,
|
|
@@ -5282,19 +5506,19 @@ function ToolPartView({
|
|
|
5282
5506
|
);
|
|
5283
5507
|
}
|
|
5284
5508
|
if (hasApproval.value) {
|
|
5285
|
-
return /* @__PURE__ */
|
|
5509
|
+
return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
|
|
5286
5510
|
}
|
|
5287
5511
|
}
|
|
5288
|
-
return showToolCalls ? /* @__PURE__ */
|
|
5512
|
+
return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
|
|
5289
5513
|
}
|
|
5290
5514
|
function ReasoningView({
|
|
5291
5515
|
part,
|
|
5292
5516
|
active,
|
|
5293
5517
|
strings
|
|
5294
5518
|
}) {
|
|
5295
|
-
return /* @__PURE__ */
|
|
5296
|
-
/* @__PURE__ */
|
|
5297
|
-
/* @__PURE__ */
|
|
5519
|
+
return /* @__PURE__ */ jsxs15("details", { class: `${p17}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
|
|
5520
|
+
/* @__PURE__ */ jsx18("summary", { class: `${p17}-reasoning-summary`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
|
|
5521
|
+
/* @__PURE__ */ jsx18("div", { class: `${p17}-reasoning-body`, children: /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
|
|
5298
5522
|
] });
|
|
5299
5523
|
}
|
|
5300
5524
|
function partKey(part) {
|
|
@@ -5312,22 +5536,22 @@ function partKey(part) {
|
|
|
5312
5536
|
}
|
|
5313
5537
|
}
|
|
5314
5538
|
function TypingDots() {
|
|
5315
|
-
return /* @__PURE__ */
|
|
5316
|
-
/* @__PURE__ */
|
|
5317
|
-
/* @__PURE__ */
|
|
5318
|
-
/* @__PURE__ */
|
|
5539
|
+
return /* @__PURE__ */ jsxs15("span", { class: `${p17}-typing`, "aria-hidden": "true", children: [
|
|
5540
|
+
/* @__PURE__ */ jsx18("span", {}),
|
|
5541
|
+
/* @__PURE__ */ jsx18("span", {}),
|
|
5542
|
+
/* @__PURE__ */ jsx18("span", {})
|
|
5319
5543
|
] });
|
|
5320
5544
|
}
|
|
5321
5545
|
function LoadingSpinner({ label }) {
|
|
5322
|
-
return /* @__PURE__ */
|
|
5323
|
-
/* @__PURE__ */
|
|
5324
|
-
/* @__PURE__ */
|
|
5546
|
+
return /* @__PURE__ */ jsxs15("span", { class: `${p17}-loading`, role: "status", children: [
|
|
5547
|
+
/* @__PURE__ */ jsx18("span", { class: `${p17}-loading-spinner`, "aria-hidden": "true" }),
|
|
5548
|
+
/* @__PURE__ */ jsx18("span", { class: `${p17}-loading-label`, children: label })
|
|
5325
5549
|
] });
|
|
5326
5550
|
}
|
|
5327
5551
|
|
|
5328
5552
|
// src/ui/message-list.tsx
|
|
5329
|
-
import { jsx as
|
|
5330
|
-
var
|
|
5553
|
+
import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
|
|
5554
|
+
var p18 = BRAND.cssPrefix;
|
|
5331
5555
|
var STICK_THRESHOLD = 120;
|
|
5332
5556
|
var INTERACTION_GRACE_MS = 350;
|
|
5333
5557
|
var DIVIDER_IDLE_MS = 1200;
|
|
@@ -5498,7 +5722,7 @@ function MessageList({
|
|
|
5498
5722
|
const pendingMarkers = [...formMarkers ?? []].toSorted(
|
|
5499
5723
|
(a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
|
|
5500
5724
|
);
|
|
5501
|
-
const markerRow = (marker) => /* @__PURE__ */
|
|
5725
|
+
const markerRow = (marker) => /* @__PURE__ */ jsx19(
|
|
5502
5726
|
FormDoneMarker,
|
|
5503
5727
|
{
|
|
5504
5728
|
marker,
|
|
@@ -5519,12 +5743,12 @@ function MessageList({
|
|
|
5519
5743
|
const day = dayKey(m.createdAt);
|
|
5520
5744
|
if (day && day !== prevDay) {
|
|
5521
5745
|
rows.push(
|
|
5522
|
-
/* @__PURE__ */
|
|
5746
|
+
/* @__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
5747
|
);
|
|
5524
5748
|
prevDay = day;
|
|
5525
5749
|
}
|
|
5526
5750
|
rows.push(
|
|
5527
|
-
/* @__PURE__ */
|
|
5751
|
+
/* @__PURE__ */ jsx19(
|
|
5528
5752
|
MessageBubble,
|
|
5529
5753
|
{
|
|
5530
5754
|
message: m,
|
|
@@ -5543,33 +5767,33 @@ function MessageList({
|
|
|
5543
5767
|
for (const marker of pendingMarkers) {
|
|
5544
5768
|
rows.push(markerRow(marker));
|
|
5545
5769
|
}
|
|
5546
|
-
return /* @__PURE__ */
|
|
5547
|
-
/* @__PURE__ */
|
|
5770
|
+
return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
|
|
5771
|
+
/* @__PURE__ */ jsxs16(
|
|
5548
5772
|
"div",
|
|
5549
5773
|
{
|
|
5550
5774
|
ref,
|
|
5551
|
-
class: `${
|
|
5775
|
+
class: `${p18}-list`,
|
|
5552
5776
|
role: "log",
|
|
5553
5777
|
"aria-live": "polite",
|
|
5554
5778
|
"aria-relevant": "additions text",
|
|
5555
5779
|
"data-scrolling": scrolling ? "true" : void 0,
|
|
5556
5780
|
children: [
|
|
5557
|
-
loading && messages.value.length === 0 ? /* @__PURE__ */
|
|
5781
|
+
loading && messages.value.length === 0 ? /* @__PURE__ */ jsx19("div", { class: `${p18}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
|
|
5558
5782
|
rows,
|
|
5559
|
-
form ? /* @__PURE__ */
|
|
5783
|
+
form ? /* @__PURE__ */ jsx19(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
|
|
5560
5784
|
]
|
|
5561
5785
|
}
|
|
5562
5786
|
),
|
|
5563
|
-
showJump ? /* @__PURE__ */
|
|
5787
|
+
showJump ? /* @__PURE__ */ jsx19(
|
|
5564
5788
|
"button",
|
|
5565
5789
|
{
|
|
5566
5790
|
type: "button",
|
|
5567
|
-
class: `${
|
|
5791
|
+
class: `${p18}-jump`,
|
|
5568
5792
|
onClick: jumpToBottom,
|
|
5569
5793
|
"aria-label": strings.scrollToBottom,
|
|
5570
5794
|
title: strings.scrollToBottom,
|
|
5571
5795
|
"data-testid": TID.scrollToBottom,
|
|
5572
|
-
children: /* @__PURE__ */
|
|
5796
|
+
children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
|
|
5573
5797
|
}
|
|
5574
5798
|
) : null
|
|
5575
5799
|
] });
|
|
@@ -5628,7 +5852,7 @@ function startOfDay(ms) {
|
|
|
5628
5852
|
}
|
|
5629
5853
|
|
|
5630
5854
|
// src/ui/conversation-list.tsx
|
|
5631
|
-
import { Fragment as Fragment3, jsx as
|
|
5855
|
+
import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs17 } from "preact/jsx-runtime";
|
|
5632
5856
|
var log12 = logger.scope("history");
|
|
5633
5857
|
var DEFAULT_SKELETON_ROWS = 3;
|
|
5634
5858
|
var MAX_SKELETON_ROWS = 6;
|
|
@@ -5655,7 +5879,7 @@ function ConversationList({
|
|
|
5655
5879
|
onSelect,
|
|
5656
5880
|
onNewConversation
|
|
5657
5881
|
}) {
|
|
5658
|
-
const
|
|
5882
|
+
const p36 = BRAND.cssPrefix;
|
|
5659
5883
|
const seed = transport.peekConversations({ visitorId });
|
|
5660
5884
|
const [state, setState] = useState7(seed ? "loaded" : "loading");
|
|
5661
5885
|
const [conversations, setChats] = useState7(seed?.conversations ?? []);
|
|
@@ -5676,32 +5900,32 @@ function ConversationList({
|
|
|
5676
5900
|
cancelled = true;
|
|
5677
5901
|
};
|
|
5678
5902
|
}, [transport, visitorId, persistence]);
|
|
5679
|
-
const newChatButton = onNewConversation ? /* @__PURE__ */
|
|
5903
|
+
const newChatButton = onNewConversation ? /* @__PURE__ */ jsx20("div", { class: `${p36}-history-footer`, children: /* @__PURE__ */ jsxs17(
|
|
5680
5904
|
"button",
|
|
5681
5905
|
{
|
|
5682
5906
|
type: "button",
|
|
5683
|
-
class: `${
|
|
5907
|
+
class: `${p36}-history-new`,
|
|
5684
5908
|
onClick: onNewConversation,
|
|
5685
5909
|
"data-testid": TID.sidebarNewConversation,
|
|
5686
5910
|
children: [
|
|
5687
|
-
/* @__PURE__ */
|
|
5911
|
+
/* @__PURE__ */ jsx20(PlusIcon, {}),
|
|
5688
5912
|
strings.newConversation
|
|
5689
5913
|
]
|
|
5690
5914
|
}
|
|
5691
5915
|
) }) : null;
|
|
5692
5916
|
if (state === "loading") {
|
|
5693
5917
|
const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
|
|
5694
|
-
return /* @__PURE__ */
|
|
5695
|
-
/* @__PURE__ */
|
|
5696
|
-
/* @__PURE__ */
|
|
5697
|
-
/* @__PURE__ */
|
|
5698
|
-
/* @__PURE__ */
|
|
5699
|
-
/* @__PURE__ */
|
|
5700
|
-
/* @__PURE__ */
|
|
5701
|
-
/* @__PURE__ */
|
|
5702
|
-
/* @__PURE__ */
|
|
5918
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5919
|
+
/* @__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: [
|
|
5920
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-heading` }) }),
|
|
5921
|
+
/* @__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: [
|
|
5922
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar ${p36}-skeleton` }),
|
|
5923
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
|
|
5924
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5925
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-title` }) }),
|
|
5926
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-time` }) })
|
|
5703
5927
|
] }),
|
|
5704
|
-
/* @__PURE__ */
|
|
5928
|
+
/* @__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
5929
|
] })
|
|
5706
5930
|
] }, i)) })
|
|
5707
5931
|
] }) }),
|
|
@@ -5709,36 +5933,36 @@ function ConversationList({
|
|
|
5709
5933
|
] });
|
|
5710
5934
|
}
|
|
5711
5935
|
if (state === "error" || conversations.length === 0) {
|
|
5712
|
-
return /* @__PURE__ */
|
|
5713
|
-
/* @__PURE__ */
|
|
5936
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5937
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-empty`, children: strings.historyEmpty }),
|
|
5714
5938
|
newChatButton
|
|
5715
5939
|
] });
|
|
5716
5940
|
}
|
|
5717
5941
|
const now = Date.now();
|
|
5718
5942
|
const groups = groupByBucket(now, conversations);
|
|
5719
|
-
return /* @__PURE__ */
|
|
5720
|
-
/* @__PURE__ */
|
|
5721
|
-
/* @__PURE__ */
|
|
5722
|
-
/* @__PURE__ */
|
|
5943
|
+
return /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
5944
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, children: [
|
|
5945
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
|
|
5946
|
+
/* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs17(
|
|
5723
5947
|
"button",
|
|
5724
5948
|
{
|
|
5725
5949
|
type: "button",
|
|
5726
5950
|
role: "listitem",
|
|
5727
|
-
class: `${
|
|
5951
|
+
class: `${p36}-history-item`,
|
|
5728
5952
|
onClick: () => onSelect(chat),
|
|
5729
5953
|
"data-closed": chat.canContinue ? void 0 : "true",
|
|
5730
5954
|
"data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
|
|
5731
5955
|
"data-testid": tid(TID.historyItem, chat.conversationId),
|
|
5732
5956
|
children: [
|
|
5733
|
-
/* @__PURE__ */
|
|
5734
|
-
/* @__PURE__ */
|
|
5735
|
-
/* @__PURE__ */
|
|
5736
|
-
/* @__PURE__ */
|
|
5737
|
-
/* @__PURE__ */
|
|
5957
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx20(MessageIcon, {}) }),
|
|
5958
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
|
|
5959
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5960
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: chat.title }),
|
|
5961
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
|
|
5738
5962
|
] }),
|
|
5739
|
-
/* @__PURE__ */
|
|
5740
|
-
/* @__PURE__ */
|
|
5741
|
-
(chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */
|
|
5963
|
+
/* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
|
|
5964
|
+
/* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
|
|
5965
|
+
(chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx20("span", { class: `${p36}-history-dot` }) : null
|
|
5742
5966
|
] })
|
|
5743
5967
|
] })
|
|
5744
5968
|
]
|
|
@@ -5751,15 +5975,15 @@ function ConversationList({
|
|
|
5751
5975
|
}
|
|
5752
5976
|
|
|
5753
5977
|
// src/ui/suggestions.tsx
|
|
5754
|
-
import { jsx as
|
|
5755
|
-
var
|
|
5978
|
+
import { jsx as jsx21 } from "preact/jsx-runtime";
|
|
5979
|
+
var p19 = BRAND.cssPrefix;
|
|
5756
5980
|
function Suggestions({ suggestions, onPick }) {
|
|
5757
5981
|
if (suggestions.length === 0) return null;
|
|
5758
|
-
return /* @__PURE__ */
|
|
5982
|
+
return /* @__PURE__ */ jsx21("div", { class: `${p19}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx21(
|
|
5759
5983
|
"button",
|
|
5760
5984
|
{
|
|
5761
5985
|
type: "button",
|
|
5762
|
-
class: `${
|
|
5986
|
+
class: `${p19}-suggestion`,
|
|
5763
5987
|
onClick: () => onPick(s),
|
|
5764
5988
|
"data-testid": tid(TID.suggestion, i),
|
|
5765
5989
|
children: s.label
|
|
@@ -5769,8 +5993,8 @@ function Suggestions({ suggestions, onPick }) {
|
|
|
5769
5993
|
}
|
|
5770
5994
|
|
|
5771
5995
|
// src/ui/panel.tsx
|
|
5772
|
-
import { Fragment as Fragment4, jsx as
|
|
5773
|
-
var
|
|
5996
|
+
import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
|
|
5997
|
+
var p20 = BRAND.cssPrefix;
|
|
5774
5998
|
function Panel(props2) {
|
|
5775
5999
|
const { options, onClose } = props2;
|
|
5776
6000
|
const s = options.strings;
|
|
@@ -5794,18 +6018,18 @@ function Panel(props2) {
|
|
|
5794
6018
|
}, []);
|
|
5795
6019
|
const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
|
|
5796
6020
|
useDragMove(containerRef.current, options.mode === "modal");
|
|
5797
|
-
return /* @__PURE__ */
|
|
6021
|
+
return /* @__PURE__ */ jsxs18(
|
|
5798
6022
|
"div",
|
|
5799
6023
|
{
|
|
5800
6024
|
ref: containerRef,
|
|
5801
|
-
class: `${
|
|
6025
|
+
class: `${p20}-panel`,
|
|
5802
6026
|
role: "dialog",
|
|
5803
6027
|
"aria-modal": "false",
|
|
5804
6028
|
"aria-label": s.panelTitle,
|
|
5805
6029
|
style: { position: "relative" },
|
|
5806
6030
|
"data-testid": TID.panel,
|
|
5807
6031
|
children: [
|
|
5808
|
-
/* @__PURE__ */
|
|
6032
|
+
/* @__PURE__ */ jsx22(
|
|
5809
6033
|
PanelContent,
|
|
5810
6034
|
{
|
|
5811
6035
|
...props2,
|
|
@@ -5814,7 +6038,7 @@ function Panel(props2) {
|
|
|
5814
6038
|
composerAttachApiRef
|
|
5815
6039
|
}
|
|
5816
6040
|
),
|
|
5817
|
-
/* @__PURE__ */
|
|
6041
|
+
/* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
|
|
5818
6042
|
]
|
|
5819
6043
|
}
|
|
5820
6044
|
);
|
|
@@ -5861,9 +6085,9 @@ function PanelContent(props2) {
|
|
|
5861
6085
|
if (activeForm) {
|
|
5862
6086
|
composerArea = null;
|
|
5863
6087
|
} else if (canSend) {
|
|
5864
|
-
composerArea = /* @__PURE__ */
|
|
5865
|
-
/* @__PURE__ */
|
|
5866
|
-
/* @__PURE__ */
|
|
6088
|
+
composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6089
|
+
/* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
|
|
6090
|
+
/* @__PURE__ */ jsx22(
|
|
5867
6091
|
Composer,
|
|
5868
6092
|
{
|
|
5869
6093
|
options,
|
|
@@ -5878,10 +6102,10 @@ function PanelContent(props2) {
|
|
|
5878
6102
|
)
|
|
5879
6103
|
] });
|
|
5880
6104
|
} else {
|
|
5881
|
-
composerArea = /* @__PURE__ */
|
|
6105
|
+
composerArea = /* @__PURE__ */ jsx22(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
|
|
5882
6106
|
}
|
|
5883
|
-
return /* @__PURE__ */
|
|
5884
|
-
view === "history" ? /* @__PURE__ */
|
|
6107
|
+
return /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6108
|
+
view === "history" ? /* @__PURE__ */ jsx22(
|
|
5885
6109
|
HistoryHeader,
|
|
5886
6110
|
{
|
|
5887
6111
|
strings: s,
|
|
@@ -5889,22 +6113,22 @@ function PanelContent(props2) {
|
|
|
5889
6113
|
onClose,
|
|
5890
6114
|
showClose: canShowClose(options.mode, panelSize, options.actions)
|
|
5891
6115
|
}
|
|
5892
|
-
) : /* @__PURE__ */
|
|
5893
|
-
onBack ? /* @__PURE__ */
|
|
6116
|
+
) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
|
|
6117
|
+
onBack ? /* @__PURE__ */ jsx22(
|
|
5894
6118
|
"button",
|
|
5895
6119
|
{
|
|
5896
6120
|
type: "button",
|
|
5897
|
-
class: `${
|
|
6121
|
+
class: `${p20}-icon-btn`,
|
|
5898
6122
|
onClick: onBack,
|
|
5899
6123
|
"aria-label": s.moduleBack,
|
|
5900
6124
|
title: s.moduleBack,
|
|
5901
|
-
children: /* @__PURE__ */
|
|
6125
|
+
children: /* @__PURE__ */ jsx22(BackIcon, {})
|
|
5902
6126
|
}
|
|
5903
6127
|
) : null,
|
|
5904
|
-
agent ? /* @__PURE__ */
|
|
5905
|
-
/* @__PURE__ */
|
|
6128
|
+
agent ? /* @__PURE__ */ jsx22(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx22("h1", { children: s.panelTitle }),
|
|
6129
|
+
/* @__PURE__ */ jsx22(HeaderActions, { panelProps: props2, variant: "chat" })
|
|
5906
6130
|
] }),
|
|
5907
|
-
view === "history" ? /* @__PURE__ */
|
|
6131
|
+
view === "history" ? /* @__PURE__ */ jsx22(
|
|
5908
6132
|
ConversationList,
|
|
5909
6133
|
{
|
|
5910
6134
|
transport,
|
|
@@ -5915,9 +6139,9 @@ function PanelContent(props2) {
|
|
|
5915
6139
|
onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
|
|
5916
6140
|
onNewConversation
|
|
5917
6141
|
}
|
|
5918
|
-
) : /* @__PURE__ */
|
|
5919
|
-
/* @__PURE__ */
|
|
5920
|
-
/* @__PURE__ */
|
|
6142
|
+
) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6143
|
+
/* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
|
|
6144
|
+
/* @__PURE__ */ jsx22(
|
|
5921
6145
|
MessageList,
|
|
5922
6146
|
{
|
|
5923
6147
|
messagesSig,
|
|
@@ -5935,9 +6159,9 @@ function PanelContent(props2) {
|
|
|
5935
6159
|
}
|
|
5936
6160
|
),
|
|
5937
6161
|
composerArea,
|
|
5938
|
-
/* @__PURE__ */
|
|
6162
|
+
/* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
|
|
5939
6163
|
] }),
|
|
5940
|
-
options.size.resize?.enabled ? /* @__PURE__ */
|
|
6164
|
+
options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
|
|
5941
6165
|
ResizeGrip,
|
|
5942
6166
|
{
|
|
5943
6167
|
panelEl: containerEl,
|
|
@@ -5956,28 +6180,28 @@ function HistoryHeader({
|
|
|
5956
6180
|
onClose,
|
|
5957
6181
|
showClose
|
|
5958
6182
|
}) {
|
|
5959
|
-
return /* @__PURE__ */
|
|
5960
|
-
/* @__PURE__ */
|
|
6183
|
+
return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
|
|
6184
|
+
/* @__PURE__ */ jsx22(
|
|
5961
6185
|
"button",
|
|
5962
6186
|
{
|
|
5963
6187
|
type: "button",
|
|
5964
|
-
class: `${
|
|
6188
|
+
class: `${p20}-icon-btn`,
|
|
5965
6189
|
onClick: onBack,
|
|
5966
6190
|
"aria-label": strings.historyBack,
|
|
5967
6191
|
title: strings.historyBack,
|
|
5968
|
-
children: /* @__PURE__ */
|
|
6192
|
+
children: /* @__PURE__ */ jsx22(BackIcon, {})
|
|
5969
6193
|
}
|
|
5970
6194
|
),
|
|
5971
|
-
/* @__PURE__ */
|
|
5972
|
-
showClose ? /* @__PURE__ */
|
|
6195
|
+
/* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
|
|
6196
|
+
showClose ? /* @__PURE__ */ jsx22(
|
|
5973
6197
|
"button",
|
|
5974
6198
|
{
|
|
5975
6199
|
type: "button",
|
|
5976
|
-
class: `${
|
|
6200
|
+
class: `${p20}-icon-btn`,
|
|
5977
6201
|
onClick: onClose,
|
|
5978
6202
|
"aria-label": strings.close,
|
|
5979
6203
|
title: strings.close,
|
|
5980
|
-
children: /* @__PURE__ */
|
|
6204
|
+
children: /* @__PURE__ */ jsx22(CloseIcon, {})
|
|
5981
6205
|
}
|
|
5982
6206
|
) : null
|
|
5983
6207
|
] });
|
|
@@ -5987,28 +6211,28 @@ function ReadOnlyBanner({
|
|
|
5987
6211
|
ctaLabel,
|
|
5988
6212
|
onNewConversation
|
|
5989
6213
|
}) {
|
|
5990
|
-
return /* @__PURE__ */
|
|
5991
|
-
/* @__PURE__ */
|
|
5992
|
-
/* @__PURE__ */
|
|
6214
|
+
return /* @__PURE__ */ jsxs18("div", { class: `${p20}-readonly-banner`, role: "note", children: [
|
|
6215
|
+
/* @__PURE__ */ jsx22("span", { class: `${p20}-readonly-label`, children: label }),
|
|
6216
|
+
/* @__PURE__ */ jsx22("button", { type: "button", class: `${p20}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
|
|
5993
6217
|
] });
|
|
5994
6218
|
}
|
|
5995
6219
|
function ComposerFooter({ disclaimer }) {
|
|
5996
6220
|
if (!disclaimer) return null;
|
|
5997
|
-
return /* @__PURE__ */
|
|
6221
|
+
return /* @__PURE__ */ jsx22("div", { class: `${p20}-composer-footer`, children: /* @__PURE__ */ jsx22("div", { class: `${p20}-disclaimer`, children: disclaimer }) });
|
|
5998
6222
|
}
|
|
5999
6223
|
function PoweredByBar({ poweredBy }) {
|
|
6000
6224
|
if (!poweredBy) return null;
|
|
6001
|
-
return /* @__PURE__ */
|
|
6225
|
+
return /* @__PURE__ */ jsx22("div", { class: `${p20}-poweredby-bar`, children: /* @__PURE__ */ jsx22(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
|
|
6002
6226
|
}
|
|
6003
6227
|
function PoweredBy({ logoUrl, text, href }) {
|
|
6004
|
-
const inner = /* @__PURE__ */
|
|
6005
|
-
logoUrl ? /* @__PURE__ */
|
|
6006
|
-
text ? /* @__PURE__ */
|
|
6228
|
+
const inner = /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
6229
|
+
logoUrl ? /* @__PURE__ */ jsx22("img", { class: `${p20}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
|
|
6230
|
+
text ? /* @__PURE__ */ jsx22("span", { children: text }) : null
|
|
6007
6231
|
] });
|
|
6008
6232
|
if (href) {
|
|
6009
|
-
return /* @__PURE__ */
|
|
6233
|
+
return /* @__PURE__ */ jsx22("a", { class: `${p20}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
|
|
6010
6234
|
}
|
|
6011
|
-
return /* @__PURE__ */
|
|
6235
|
+
return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
|
|
6012
6236
|
}
|
|
6013
6237
|
|
|
6014
6238
|
// src/ui/form/form-controller.ts
|
|
@@ -6091,34 +6315,34 @@ function whenPasses(form, d) {
|
|
|
6091
6315
|
}
|
|
6092
6316
|
|
|
6093
6317
|
// src/ui/sidebar.tsx
|
|
6094
|
-
import { Fragment as Fragment5, jsx as
|
|
6318
|
+
import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
|
|
6095
6319
|
function Sidebar(props2) {
|
|
6096
|
-
const
|
|
6320
|
+
const p36 = BRAND.cssPrefix;
|
|
6097
6321
|
const { site, blocks, strings, collapsed } = props2;
|
|
6098
6322
|
const navigation = blocks?.navigation ?? [];
|
|
6099
6323
|
const linkCards = blocks?.linkCards ?? [];
|
|
6100
6324
|
const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
|
|
6101
|
-
return /* @__PURE__ */
|
|
6102
|
-
/* @__PURE__ */
|
|
6103
|
-
/* @__PURE__ */
|
|
6104
|
-
/* @__PURE__ */
|
|
6325
|
+
return /* @__PURE__ */ jsxs19("aside", { class: `${p36}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
|
|
6326
|
+
/* @__PURE__ */ jsxs19("div", { class: `${p36}-sidebar-header`, children: [
|
|
6327
|
+
/* @__PURE__ */ jsx23(SidebarBrand, { site }),
|
|
6328
|
+
/* @__PURE__ */ jsx23(
|
|
6105
6329
|
"button",
|
|
6106
6330
|
{
|
|
6107
6331
|
type: "button",
|
|
6108
|
-
class: `${
|
|
6332
|
+
class: `${p36}-sidebar-toggle`,
|
|
6109
6333
|
"aria-label": toggleLabel,
|
|
6110
6334
|
"aria-expanded": collapsed ? "false" : "true",
|
|
6111
6335
|
title: toggleLabel,
|
|
6112
6336
|
onClick: props2.onToggleCollapsed,
|
|
6113
6337
|
"data-testid": TID.sidebarToggle,
|
|
6114
|
-
children: /* @__PURE__ */
|
|
6338
|
+
children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
|
|
6115
6339
|
}
|
|
6116
6340
|
)
|
|
6117
6341
|
] }),
|
|
6118
|
-
collapsed ? null : /* @__PURE__ */
|
|
6119
|
-
navigation.length > 0 ? /* @__PURE__ */
|
|
6120
|
-
linkCards.length > 0 ? /* @__PURE__ */
|
|
6121
|
-
props2.showConversations ? /* @__PURE__ */
|
|
6342
|
+
collapsed ? null : /* @__PURE__ */ jsxs19(Fragment5, { children: [
|
|
6343
|
+
navigation.length > 0 ? /* @__PURE__ */ jsx23("nav", { class: `${p36}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx23(SidebarNav, { items: navigation }) }) : null,
|
|
6344
|
+
linkCards.length > 0 ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx23(SidebarCards, { items: linkCards }) }) : null,
|
|
6345
|
+
props2.showConversations ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-conversations`, children: /* @__PURE__ */ jsx23(
|
|
6122
6346
|
ConversationList,
|
|
6123
6347
|
{
|
|
6124
6348
|
transport: props2.transport,
|
|
@@ -6134,18 +6358,18 @@ function Sidebar(props2) {
|
|
|
6134
6358
|
] });
|
|
6135
6359
|
}
|
|
6136
6360
|
function SidebarBrand({ site }) {
|
|
6137
|
-
const
|
|
6361
|
+
const p36 = BRAND.cssPrefix;
|
|
6138
6362
|
if (site?.logo?.url) {
|
|
6139
6363
|
const alt = site.logo.alt ?? site.title ?? "Logo";
|
|
6140
|
-
return /* @__PURE__ */
|
|
6141
|
-
site.logoDark?.url ? /* @__PURE__ */
|
|
6142
|
-
/* @__PURE__ */
|
|
6364
|
+
return /* @__PURE__ */ jsxs19("picture", { children: [
|
|
6365
|
+
site.logoDark?.url ? /* @__PURE__ */ jsx23("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
|
|
6366
|
+
/* @__PURE__ */ jsx23("img", { class: `${p36}-sidebar-logo`, src: site.logo.url, alt })
|
|
6143
6367
|
] });
|
|
6144
6368
|
}
|
|
6145
|
-
return /* @__PURE__ */
|
|
6369
|
+
return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-title`, children: site?.title ?? BRAND.name });
|
|
6146
6370
|
}
|
|
6147
6371
|
function SidebarToggleIcon({ collapsed }) {
|
|
6148
|
-
return /* @__PURE__ */
|
|
6372
|
+
return /* @__PURE__ */ jsx23(
|
|
6149
6373
|
"svg",
|
|
6150
6374
|
{
|
|
6151
6375
|
width: "16",
|
|
@@ -6155,38 +6379,38 @@ function SidebarToggleIcon({ collapsed }) {
|
|
|
6155
6379
|
stroke: "currentColor",
|
|
6156
6380
|
"stroke-width": "2",
|
|
6157
6381
|
"aria-hidden": "true",
|
|
6158
|
-
children: collapsed ? /* @__PURE__ */
|
|
6382
|
+
children: collapsed ? /* @__PURE__ */ jsx23("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx23("polyline", { points: "15 6 9 12 15 18" })
|
|
6159
6383
|
}
|
|
6160
6384
|
);
|
|
6161
6385
|
}
|
|
6162
6386
|
function SidebarNav({ items }) {
|
|
6163
|
-
const
|
|
6164
|
-
return /* @__PURE__ */
|
|
6387
|
+
const p36 = BRAND.cssPrefix;
|
|
6388
|
+
return /* @__PURE__ */ jsx23("ul", { class: `${p36}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsxs19(
|
|
6165
6389
|
"a",
|
|
6166
6390
|
{
|
|
6167
|
-
class: `${
|
|
6391
|
+
class: `${p36}-sidebar-nav-item`,
|
|
6168
6392
|
href: item.href,
|
|
6169
6393
|
target: item.href ? "_blank" : void 0,
|
|
6170
6394
|
rel: item.href ? "noreferrer" : void 0,
|
|
6171
6395
|
children: [
|
|
6172
|
-
item.icon ? /* @__PURE__ */
|
|
6173
|
-
/* @__PURE__ */
|
|
6396
|
+
item.icon ? /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
|
|
6397
|
+
/* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-label`, children: item.label })
|
|
6174
6398
|
]
|
|
6175
6399
|
}
|
|
6176
6400
|
) }, item.id ?? item.label)) });
|
|
6177
6401
|
}
|
|
6178
6402
|
function SidebarCards({ items }) {
|
|
6179
|
-
const
|
|
6180
|
-
return /* @__PURE__ */
|
|
6403
|
+
const p36 = BRAND.cssPrefix;
|
|
6404
|
+
return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs19(
|
|
6181
6405
|
"a",
|
|
6182
6406
|
{
|
|
6183
|
-
class: `${
|
|
6407
|
+
class: `${p36}-sidebar-card`,
|
|
6184
6408
|
href: item.href,
|
|
6185
6409
|
target: item.href ? "_blank" : void 0,
|
|
6186
6410
|
rel: item.href ? "noreferrer" : void 0,
|
|
6187
6411
|
children: [
|
|
6188
|
-
/* @__PURE__ */
|
|
6189
|
-
item.description ? /* @__PURE__ */
|
|
6412
|
+
/* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-label`, children: item.label }),
|
|
6413
|
+
item.description ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-desc`, children: item.description }) : null
|
|
6190
6414
|
]
|
|
6191
6415
|
},
|
|
6192
6416
|
item.id ?? item.label
|
|
@@ -6194,11 +6418,11 @@ function SidebarCards({ items }) {
|
|
|
6194
6418
|
}
|
|
6195
6419
|
|
|
6196
6420
|
// src/ui/page-shell.tsx
|
|
6197
|
-
import { jsx as
|
|
6198
|
-
var
|
|
6421
|
+
import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
|
|
6422
|
+
var p21 = BRAND.cssPrefix;
|
|
6199
6423
|
function PageShell(props2) {
|
|
6200
|
-
return /* @__PURE__ */
|
|
6201
|
-
/* @__PURE__ */
|
|
6424
|
+
return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
|
|
6425
|
+
/* @__PURE__ */ jsx24(
|
|
6202
6426
|
Sidebar,
|
|
6203
6427
|
{
|
|
6204
6428
|
site: props2.site,
|
|
@@ -6215,7 +6439,7 @@ function PageShell(props2) {
|
|
|
6215
6439
|
onToggleCollapsed: props2.onToggleSidebarCollapsed
|
|
6216
6440
|
}
|
|
6217
6441
|
),
|
|
6218
|
-
/* @__PURE__ */
|
|
6442
|
+
/* @__PURE__ */ jsx24("section", { class: `${p21}-page-chat`, "aria-label": "Chat", children: props2.children })
|
|
6219
6443
|
] });
|
|
6220
6444
|
}
|
|
6221
6445
|
|
|
@@ -6265,80 +6489,80 @@ var chatLayout = {
|
|
|
6265
6489
|
import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
|
|
6266
6490
|
|
|
6267
6491
|
// src/ui/back-header.tsx
|
|
6268
|
-
import { jsx as
|
|
6269
|
-
var
|
|
6492
|
+
import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
|
|
6493
|
+
var p22 = BRAND.cssPrefix;
|
|
6270
6494
|
function TitleBar({ title, actions }) {
|
|
6271
|
-
return /* @__PURE__ */
|
|
6272
|
-
/* @__PURE__ */
|
|
6273
|
-
/* @__PURE__ */
|
|
6274
|
-
actions ?? /* @__PURE__ */
|
|
6495
|
+
return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-variant": "title", children: [
|
|
6496
|
+
/* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" }),
|
|
6497
|
+
/* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
|
|
6498
|
+
actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
|
|
6275
6499
|
] });
|
|
6276
6500
|
}
|
|
6277
6501
|
function BackHeader({ title, backLabel, onBack, actions, testid }) {
|
|
6278
|
-
return /* @__PURE__ */
|
|
6279
|
-
/* @__PURE__ */
|
|
6280
|
-
/* @__PURE__ */
|
|
6281
|
-
actions ?? /* @__PURE__ */
|
|
6502
|
+
return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-testid": testid, children: [
|
|
6503
|
+
/* @__PURE__ */ jsx25("button", { type: "button", class: `${p22}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx25(BackIcon, {}) }),
|
|
6504
|
+
/* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
|
|
6505
|
+
actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
|
|
6282
6506
|
] });
|
|
6283
6507
|
}
|
|
6284
6508
|
|
|
6285
6509
|
// src/ui/home-search.tsx
|
|
6286
|
-
import { jsx as
|
|
6287
|
-
var
|
|
6510
|
+
import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
|
|
6511
|
+
var p23 = BRAND.cssPrefix;
|
|
6288
6512
|
function HomeSearchButton({ placeholder, onActivate }) {
|
|
6289
|
-
return /* @__PURE__ */
|
|
6290
|
-
/* @__PURE__ */
|
|
6291
|
-
/* @__PURE__ */
|
|
6513
|
+
return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
|
|
6514
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-text`, children: placeholder }),
|
|
6515
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
|
|
6292
6516
|
] });
|
|
6293
6517
|
}
|
|
6294
6518
|
function HelpSearchInput({ placeholder, value, onInput }) {
|
|
6295
|
-
return /* @__PURE__ */
|
|
6296
|
-
/* @__PURE__ */
|
|
6519
|
+
return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
|
|
6520
|
+
/* @__PURE__ */ jsx26(
|
|
6297
6521
|
"input",
|
|
6298
6522
|
{
|
|
6299
6523
|
type: "search",
|
|
6300
|
-
class: `${
|
|
6524
|
+
class: `${p23}-home-search-input`,
|
|
6301
6525
|
placeholder,
|
|
6302
6526
|
value,
|
|
6303
6527
|
onInput: (e) => onInput(e.currentTarget.value),
|
|
6304
6528
|
"data-testid": TID.helpSearch
|
|
6305
6529
|
}
|
|
6306
6530
|
),
|
|
6307
|
-
/* @__PURE__ */
|
|
6531
|
+
/* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
|
|
6308
6532
|
] });
|
|
6309
6533
|
}
|
|
6310
6534
|
|
|
6311
6535
|
// src/ui/list-row.tsx
|
|
6312
|
-
import { jsx as
|
|
6313
|
-
var
|
|
6536
|
+
import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
|
|
6537
|
+
var p24 = BRAND.cssPrefix;
|
|
6314
6538
|
function ListRow({ title, subtitle, onClick, testid }) {
|
|
6315
|
-
return /* @__PURE__ */
|
|
6316
|
-
/* @__PURE__ */
|
|
6317
|
-
/* @__PURE__ */
|
|
6318
|
-
subtitle ? /* @__PURE__ */
|
|
6539
|
+
return /* @__PURE__ */ jsxs23("button", { type: "button", class: `${p24}-list-row`, onClick, "data-testid": testid, children: [
|
|
6540
|
+
/* @__PURE__ */ jsxs23("span", { class: `${p24}-list-row-body`, children: [
|
|
6541
|
+
/* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-title`, children: title }),
|
|
6542
|
+
subtitle ? /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-sub`, children: subtitle }) : null
|
|
6319
6543
|
] }),
|
|
6320
|
-
/* @__PURE__ */
|
|
6544
|
+
/* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx27(ChevronRightIcon, {}) })
|
|
6321
6545
|
] });
|
|
6322
6546
|
}
|
|
6323
6547
|
|
|
6324
6548
|
// src/ui/module-state.tsx
|
|
6325
|
-
import { jsx as
|
|
6326
|
-
var
|
|
6549
|
+
import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
|
|
6550
|
+
var p25 = BRAND.cssPrefix;
|
|
6327
6551
|
function ModuleState({
|
|
6328
6552
|
tone = "info",
|
|
6329
6553
|
message,
|
|
6330
6554
|
onRetry,
|
|
6331
6555
|
strings
|
|
6332
6556
|
}) {
|
|
6333
|
-
return /* @__PURE__ */
|
|
6334
|
-
/* @__PURE__ */
|
|
6335
|
-
onRetry ? /* @__PURE__ */
|
|
6557
|
+
return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
|
|
6558
|
+
/* @__PURE__ */ jsx28("span", { children: message }),
|
|
6559
|
+
onRetry ? /* @__PURE__ */ jsx28("button", { type: "button", class: `${p25}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
|
|
6336
6560
|
] });
|
|
6337
6561
|
}
|
|
6338
6562
|
|
|
6339
6563
|
// src/ui/modules/help.tsx
|
|
6340
|
-
import { jsx as
|
|
6341
|
-
var
|
|
6564
|
+
import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
|
|
6565
|
+
var p26 = BRAND.cssPrefix;
|
|
6342
6566
|
var log13 = logger.scope("help");
|
|
6343
6567
|
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
6568
|
function groupByCategory(items) {
|
|
@@ -6367,7 +6591,7 @@ function fuzzySearch(items, query) {
|
|
|
6367
6591
|
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
6592
|
}
|
|
6369
6593
|
function ArticleRow({ article, nav }) {
|
|
6370
|
-
return /* @__PURE__ */
|
|
6594
|
+
return /* @__PURE__ */ jsx29(
|
|
6371
6595
|
ListRow,
|
|
6372
6596
|
{
|
|
6373
6597
|
title: article.title,
|
|
@@ -6412,46 +6636,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
|
6412
6636
|
}, [query, results, bus]);
|
|
6413
6637
|
function renderBody() {
|
|
6414
6638
|
if (query.trim().length > 0) {
|
|
6415
|
-
if (results.length === 0) return /* @__PURE__ */
|
|
6416
|
-
return /* @__PURE__ */
|
|
6639
|
+
if (results.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpSearchEmpty, strings });
|
|
6640
|
+
return /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) });
|
|
6417
6641
|
}
|
|
6418
|
-
if (state === "loading") return /* @__PURE__ */
|
|
6642
|
+
if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
|
|
6419
6643
|
if (state === "error") {
|
|
6420
|
-
return /* @__PURE__ */
|
|
6644
|
+
return /* @__PURE__ */ jsx29(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
6421
6645
|
}
|
|
6422
|
-
if (items.length === 0) return /* @__PURE__ */
|
|
6423
|
-
return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */
|
|
6424
|
-
category ? /* @__PURE__ */
|
|
6425
|
-
/* @__PURE__ */
|
|
6646
|
+
if (items.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpEmpty, strings });
|
|
6647
|
+
return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs25("section", { class: `${p26}-help-group`, children: [
|
|
6648
|
+
category ? /* @__PURE__ */ jsx29("h2", { class: `${p26}-help-section-title`, children: category }) : null,
|
|
6649
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) })
|
|
6426
6650
|
] }, category));
|
|
6427
6651
|
}
|
|
6428
|
-
return /* @__PURE__ */
|
|
6429
|
-
/* @__PURE__ */
|
|
6430
|
-
/* @__PURE__ */
|
|
6431
|
-
/* @__PURE__ */
|
|
6652
|
+
return /* @__PURE__ */ jsxs25("div", { class: `${p26}-module`, children: [
|
|
6653
|
+
/* @__PURE__ */ jsx29(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx29(HeaderActions, { panelProps, variant: "plain" }) }),
|
|
6654
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-module-pad`, children: /* @__PURE__ */ jsx29(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
|
|
6655
|
+
/* @__PURE__ */ jsx29("div", { class: `${p26}-help-list`, children: renderBody() })
|
|
6432
6656
|
] });
|
|
6433
6657
|
}
|
|
6434
6658
|
var helpLayout = {
|
|
6435
6659
|
Icon: HelpIcon,
|
|
6436
|
-
Root: (props2) => /* @__PURE__ */
|
|
6660
|
+
Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
|
|
6437
6661
|
};
|
|
6438
6662
|
|
|
6439
6663
|
// src/ui/modules/home.tsx
|
|
6440
6664
|
import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
|
|
6441
6665
|
|
|
6442
6666
|
// src/ui/home-card.tsx
|
|
6443
|
-
import { jsx as
|
|
6444
|
-
var
|
|
6667
|
+
import { jsx as jsx30 } from "preact/jsx-runtime";
|
|
6668
|
+
var p27 = BRAND.cssPrefix;
|
|
6445
6669
|
function HomeCard({ onClick, children, testid }) {
|
|
6446
6670
|
if (onClick) {
|
|
6447
|
-
return /* @__PURE__ */
|
|
6671
|
+
return /* @__PURE__ */ jsx30("button", { type: "button", class: `${p27}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
|
|
6448
6672
|
}
|
|
6449
|
-
return /* @__PURE__ */
|
|
6673
|
+
return /* @__PURE__ */ jsx30("div", { class: `${p27}-home-card`, "data-testid": testid, children });
|
|
6450
6674
|
}
|
|
6451
6675
|
|
|
6452
6676
|
// src/ui/modules/home.tsx
|
|
6453
|
-
import { Fragment as Fragment6, jsx as
|
|
6454
|
-
var
|
|
6677
|
+
import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
|
|
6678
|
+
var p28 = BRAND.cssPrefix;
|
|
6455
6679
|
var log14 = logger.scope("home");
|
|
6456
6680
|
function resolveGreeting(props2) {
|
|
6457
6681
|
const name = props2.options.userContext?.name;
|
|
@@ -6494,49 +6718,49 @@ function HomeRoot(props2) {
|
|
|
6494
6718
|
const status = config.status;
|
|
6495
6719
|
const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
|
|
6496
6720
|
const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
|
|
6497
|
-
return /* @__PURE__ */
|
|
6498
|
-
/* @__PURE__ */
|
|
6499
|
-
/* @__PURE__ */
|
|
6500
|
-
config.brandName ? /* @__PURE__ */
|
|
6501
|
-
/* @__PURE__ */
|
|
6502
|
-
avatars.length > 0 ? /* @__PURE__ */
|
|
6503
|
-
/* @__PURE__ */
|
|
6721
|
+
return /* @__PURE__ */ jsx31("div", { class: `${p28}-module ${p28}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-scroll`, children: [
|
|
6722
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero`, children: [
|
|
6723
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-top`, children: [
|
|
6724
|
+
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" }),
|
|
6725
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-actions`, children: [
|
|
6726
|
+
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,
|
|
6727
|
+
/* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" })
|
|
6504
6728
|
] })
|
|
6505
6729
|
] }),
|
|
6506
|
-
config.showGreeting !== false ? /* @__PURE__ */
|
|
6507
|
-
/* @__PURE__ */
|
|
6508
|
-
greeting.subtitle ? /* @__PURE__ */
|
|
6730
|
+
config.showGreeting !== false ? /* @__PURE__ */ jsxs26(Fragment6, { children: [
|
|
6731
|
+
/* @__PURE__ */ jsx31("h1", { class: `${p28}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
|
|
6732
|
+
greeting.subtitle ? /* @__PURE__ */ jsx31("p", { class: `${p28}-home-lead`, children: greeting.subtitle }) : null
|
|
6509
6733
|
] }) : null
|
|
6510
6734
|
] }),
|
|
6511
|
-
/* @__PURE__ */
|
|
6512
|
-
config.showSearchBar !== false ? /* @__PURE__ */
|
|
6735
|
+
/* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
|
|
6736
|
+
config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
|
|
6513
6737
|
HomeSearchButton,
|
|
6514
6738
|
{
|
|
6515
6739
|
placeholder: strings.homeSearchPlaceholder,
|
|
6516
6740
|
onActivate: () => nav.switchToLayout("help")
|
|
6517
6741
|
}
|
|
6518
6742
|
) : null,
|
|
6519
|
-
recent ? /* @__PURE__ */
|
|
6520
|
-
/* @__PURE__ */
|
|
6521
|
-
/* @__PURE__ */
|
|
6522
|
-
/* @__PURE__ */
|
|
6523
|
-
recent.preview ? /* @__PURE__ */
|
|
6743
|
+
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: [
|
|
6744
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(BubblesIcon, {}) }),
|
|
6745
|
+
/* @__PURE__ */ jsxs26("span", { class: `${p28}-home-recent-body`, children: [
|
|
6746
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-title`, children: recent.title }),
|
|
6747
|
+
recent.preview ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-preview`, children: recent.preview }) : null
|
|
6524
6748
|
] }),
|
|
6525
|
-
(recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */
|
|
6749
|
+
(recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-dot`, "aria-label": "Unread" }) : null
|
|
6526
6750
|
] }) }) : null,
|
|
6527
|
-
status ? /* @__PURE__ */
|
|
6751
|
+
status ? /* @__PURE__ */ jsx31(
|
|
6528
6752
|
HomeCard,
|
|
6529
6753
|
{
|
|
6530
6754
|
onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
|
|
6531
|
-
children: /* @__PURE__ */
|
|
6532
|
-
/* @__PURE__ */
|
|
6533
|
-
/* @__PURE__ */
|
|
6755
|
+
children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-status`, "data-level": status.level ?? "operational", children: [
|
|
6756
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(StatusOkIcon, {}) }),
|
|
6757
|
+
/* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-text`, children: statusText })
|
|
6534
6758
|
] })
|
|
6535
6759
|
}
|
|
6536
6760
|
) : null,
|
|
6537
|
-
content.length > 0 ? /* @__PURE__ */
|
|
6538
|
-
/* @__PURE__ */
|
|
6539
|
-
/* @__PURE__ */
|
|
6761
|
+
content.length > 0 ? /* @__PURE__ */ jsxs26("section", { class: `${p28}-home-content`, children: [
|
|
6762
|
+
/* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-title`, children: contentTitle }),
|
|
6763
|
+
/* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx31(
|
|
6540
6764
|
ListRow,
|
|
6541
6765
|
{
|
|
6542
6766
|
title: item.title,
|
|
@@ -6552,13 +6776,13 @@ function HomeRoot(props2) {
|
|
|
6552
6776
|
}
|
|
6553
6777
|
var homeLayout = {
|
|
6554
6778
|
Icon: HomeIcon,
|
|
6555
|
-
Root: (props2) => /* @__PURE__ */
|
|
6779
|
+
Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
|
|
6556
6780
|
};
|
|
6557
6781
|
|
|
6558
6782
|
// src/ui/modules/news.tsx
|
|
6559
6783
|
import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
|
|
6560
|
-
import { jsx as
|
|
6561
|
-
var
|
|
6784
|
+
import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
|
|
6785
|
+
var p29 = BRAND.cssPrefix;
|
|
6562
6786
|
var log15 = logger.scope("news");
|
|
6563
6787
|
function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
6564
6788
|
const tags = config.contentTags;
|
|
@@ -6586,37 +6810,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
|
|
|
6586
6810
|
};
|
|
6587
6811
|
}, [transport, tags, reloadKey, bus]);
|
|
6588
6812
|
function renderBody() {
|
|
6589
|
-
if (state === "loading") return /* @__PURE__ */
|
|
6813
|
+
if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
|
|
6590
6814
|
if (state === "error") {
|
|
6591
|
-
return /* @__PURE__ */
|
|
6815
|
+
return /* @__PURE__ */ jsx32(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
|
|
6592
6816
|
}
|
|
6593
|
-
if (items.length === 0) return /* @__PURE__ */
|
|
6594
|
-
return /* @__PURE__ */
|
|
6817
|
+
if (items.length === 0) return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsEmpty, strings });
|
|
6818
|
+
return /* @__PURE__ */ jsx32("div", { class: `${p29}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs27(
|
|
6595
6819
|
"button",
|
|
6596
6820
|
{
|
|
6597
6821
|
type: "button",
|
|
6598
|
-
class: `${
|
|
6822
|
+
class: `${p29}-news-card`,
|
|
6599
6823
|
onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
|
|
6600
6824
|
"data-testid": tid(TID.newsItem, item.id),
|
|
6601
6825
|
children: [
|
|
6602
|
-
item.image ? /* @__PURE__ */
|
|
6603
|
-
/* @__PURE__ */
|
|
6604
|
-
/* @__PURE__ */
|
|
6605
|
-
item.description ? /* @__PURE__ */
|
|
6826
|
+
item.image ? /* @__PURE__ */ jsx32("img", { class: `${p29}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
|
|
6827
|
+
/* @__PURE__ */ jsxs27("span", { class: `${p29}-news-body`, children: [
|
|
6828
|
+
/* @__PURE__ */ jsx32("span", { class: `${p29}-news-title`, children: item.title }),
|
|
6829
|
+
item.description ? /* @__PURE__ */ jsx32("span", { class: `${p29}-news-summary`, children: item.description }) : null
|
|
6606
6830
|
] })
|
|
6607
6831
|
]
|
|
6608
6832
|
},
|
|
6609
6833
|
item.id
|
|
6610
6834
|
)) });
|
|
6611
6835
|
}
|
|
6612
|
-
return /* @__PURE__ */
|
|
6613
|
-
/* @__PURE__ */
|
|
6614
|
-
/* @__PURE__ */
|
|
6836
|
+
return /* @__PURE__ */ jsxs27("div", { class: `${p29}-module`, children: [
|
|
6837
|
+
/* @__PURE__ */ jsx32(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx32(HeaderActions, { panelProps, variant: "plain" }) }),
|
|
6838
|
+
/* @__PURE__ */ jsx32("div", { class: `${p29}-module-scroll`, children: renderBody() })
|
|
6615
6839
|
] });
|
|
6616
6840
|
}
|
|
6617
6841
|
var newsLayout = {
|
|
6618
6842
|
Icon: NewsIcon,
|
|
6619
|
-
Root: (props2) => /* @__PURE__ */
|
|
6843
|
+
Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
|
|
6620
6844
|
};
|
|
6621
6845
|
|
|
6622
6846
|
// src/ui/modules/registry.ts
|
|
@@ -6628,28 +6852,28 @@ var LAYOUTS = {
|
|
|
6628
6852
|
};
|
|
6629
6853
|
|
|
6630
6854
|
// src/ui/home-tab-bar.tsx
|
|
6631
|
-
import { jsx as
|
|
6632
|
-
var
|
|
6855
|
+
import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
|
|
6856
|
+
var p30 = BRAND.cssPrefix;
|
|
6633
6857
|
function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
|
|
6634
|
-
return /* @__PURE__ */
|
|
6858
|
+
return /* @__PURE__ */ jsx33("nav", { class: `${p30}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
|
|
6635
6859
|
const Icon = LAYOUTS[m.layout].Icon;
|
|
6636
6860
|
const selected = m.id === activeTab;
|
|
6637
6861
|
const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
|
|
6638
|
-
return /* @__PURE__ */
|
|
6862
|
+
return /* @__PURE__ */ jsxs28(
|
|
6639
6863
|
"button",
|
|
6640
6864
|
{
|
|
6641
6865
|
type: "button",
|
|
6642
6866
|
role: "tab",
|
|
6643
6867
|
"aria-selected": selected,
|
|
6644
|
-
class: `${
|
|
6868
|
+
class: `${p30}-tab`,
|
|
6645
6869
|
onClick: () => onSelect(m.id),
|
|
6646
6870
|
"data-testid": tid(TID.tab, m.id),
|
|
6647
6871
|
children: [
|
|
6648
|
-
/* @__PURE__ */
|
|
6649
|
-
/* @__PURE__ */
|
|
6650
|
-
badge ? /* @__PURE__ */
|
|
6872
|
+
/* @__PURE__ */ jsxs28("span", { class: `${p30}-tab-icon`, "aria-hidden": "true", children: [
|
|
6873
|
+
/* @__PURE__ */ jsx33(Icon, {}),
|
|
6874
|
+
badge ? /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
|
|
6651
6875
|
] }),
|
|
6652
|
-
/* @__PURE__ */
|
|
6876
|
+
/* @__PURE__ */ jsx33("span", { class: `${p30}-tab-label`, children: localizeText(strings, m.label) })
|
|
6653
6877
|
]
|
|
6654
6878
|
},
|
|
6655
6879
|
m.id
|
|
@@ -6658,12 +6882,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
|
|
|
6658
6882
|
}
|
|
6659
6883
|
|
|
6660
6884
|
// src/ui/iframe-view.tsx
|
|
6661
|
-
import { jsx as
|
|
6662
|
-
var
|
|
6885
|
+
import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
|
|
6886
|
+
var p31 = BRAND.cssPrefix;
|
|
6663
6887
|
var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
|
|
6664
6888
|
function IframeView({ url, title, strings, onBack, actions }) {
|
|
6665
|
-
return /* @__PURE__ */
|
|
6666
|
-
/* @__PURE__ */
|
|
6889
|
+
return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
|
|
6890
|
+
/* @__PURE__ */ jsx34(
|
|
6667
6891
|
BackHeader,
|
|
6668
6892
|
{
|
|
6669
6893
|
title: title || strings.moduleBack,
|
|
@@ -6672,10 +6896,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
|
|
|
6672
6896
|
actions
|
|
6673
6897
|
}
|
|
6674
6898
|
),
|
|
6675
|
-
/* @__PURE__ */
|
|
6899
|
+
/* @__PURE__ */ jsx34(
|
|
6676
6900
|
"iframe",
|
|
6677
6901
|
{
|
|
6678
|
-
class: `${
|
|
6902
|
+
class: `${p31}-content-frame`,
|
|
6679
6903
|
src: url,
|
|
6680
6904
|
title: title || "content",
|
|
6681
6905
|
sandbox: SANDBOX,
|
|
@@ -6689,8 +6913,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
|
|
|
6689
6913
|
|
|
6690
6914
|
// src/ui/content-view.tsx
|
|
6691
6915
|
import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
|
|
6692
|
-
import { jsx as
|
|
6693
|
-
var
|
|
6916
|
+
import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
|
|
6917
|
+
var p32 = BRAND.cssPrefix;
|
|
6694
6918
|
var log16 = logger.scope("content");
|
|
6695
6919
|
var READ_DWELL_MS = 5e3;
|
|
6696
6920
|
function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
@@ -6734,16 +6958,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
|
6734
6958
|
[bus, id]
|
|
6735
6959
|
);
|
|
6736
6960
|
function renderBody() {
|
|
6737
|
-
if (failed) return /* @__PURE__ */
|
|
6738
|
-
if (item === null) return /* @__PURE__ */
|
|
6739
|
-
return /* @__PURE__ */
|
|
6740
|
-
item.image ? /* @__PURE__ */
|
|
6741
|
-
item.description ? /* @__PURE__ */
|
|
6742
|
-
/* @__PURE__ */
|
|
6961
|
+
if (failed) return /* @__PURE__ */ jsx35(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
|
|
6962
|
+
if (item === null) return /* @__PURE__ */ jsx35(ModuleState, { message: strings.contentLoading, strings });
|
|
6963
|
+
return /* @__PURE__ */ jsxs30("article", { class: `${p32}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
|
|
6964
|
+
item.image ? /* @__PURE__ */ jsx35("img", { class: `${p32}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
|
|
6965
|
+
item.description ? /* @__PURE__ */ jsx35("p", { class: `${p32}-content-subtitle`, children: item.description }) : null,
|
|
6966
|
+
/* @__PURE__ */ jsx35(StaticMarkdown, { text: item.content ?? "" })
|
|
6743
6967
|
] });
|
|
6744
6968
|
}
|
|
6745
|
-
return /* @__PURE__ */
|
|
6746
|
-
/* @__PURE__ */
|
|
6969
|
+
return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
|
|
6970
|
+
/* @__PURE__ */ jsx35(
|
|
6747
6971
|
BackHeader,
|
|
6748
6972
|
{
|
|
6749
6973
|
title: item?.title || title || strings.moduleBack,
|
|
@@ -6753,13 +6977,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
|
|
|
6753
6977
|
testid: TID.backHeader
|
|
6754
6978
|
}
|
|
6755
6979
|
),
|
|
6756
|
-
/* @__PURE__ */
|
|
6980
|
+
/* @__PURE__ */ jsx35("div", { class: `${p32}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
|
|
6757
6981
|
] });
|
|
6758
6982
|
}
|
|
6759
6983
|
|
|
6760
6984
|
// src/ui/messenger-home.tsx
|
|
6761
|
-
import { jsx as
|
|
6762
|
-
var
|
|
6985
|
+
import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
|
|
6986
|
+
var p33 = BRAND.cssPrefix;
|
|
6763
6987
|
function MessengerHome({
|
|
6764
6988
|
panelProps,
|
|
6765
6989
|
enabledModules,
|
|
@@ -6830,12 +7054,12 @@ function MessengerHome({
|
|
|
6830
7054
|
bus,
|
|
6831
7055
|
panelProps
|
|
6832
7056
|
});
|
|
6833
|
-
const plainActions = /* @__PURE__ */
|
|
7057
|
+
const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
|
|
6834
7058
|
if (activeModule) visitedRef.current.add(activeModule.id);
|
|
6835
7059
|
const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
|
|
6836
7060
|
const tabRoot = (module) => {
|
|
6837
7061
|
if (module.layout === "chat") {
|
|
6838
|
-
return /* @__PURE__ */
|
|
7062
|
+
return /* @__PURE__ */ jsx36(
|
|
6839
7063
|
PanelContent,
|
|
6840
7064
|
{
|
|
6841
7065
|
...panelProps,
|
|
@@ -6846,14 +7070,14 @@ function MessengerHome({
|
|
|
6846
7070
|
);
|
|
6847
7071
|
}
|
|
6848
7072
|
const Root = LAYOUTS[module.layout].Root;
|
|
6849
|
-
return Root ? /* @__PURE__ */
|
|
7073
|
+
return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
|
|
6850
7074
|
};
|
|
6851
7075
|
const renderReader = () => {
|
|
6852
7076
|
if (top?.kind === "iframe") {
|
|
6853
|
-
return /* @__PURE__ */
|
|
7077
|
+
return /* @__PURE__ */ jsx36(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
|
|
6854
7078
|
}
|
|
6855
7079
|
if (top?.kind === "content") {
|
|
6856
|
-
return /* @__PURE__ */
|
|
7080
|
+
return /* @__PURE__ */ jsx36(
|
|
6857
7081
|
ContentView,
|
|
6858
7082
|
{
|
|
6859
7083
|
id: top.id,
|
|
@@ -6868,22 +7092,22 @@ function MessengerHome({
|
|
|
6868
7092
|
}
|
|
6869
7093
|
return null;
|
|
6870
7094
|
};
|
|
6871
|
-
return /* @__PURE__ */
|
|
7095
|
+
return /* @__PURE__ */ jsxs31(
|
|
6872
7096
|
"div",
|
|
6873
7097
|
{
|
|
6874
7098
|
ref: containerRef,
|
|
6875
|
-
class: `${
|
|
7099
|
+
class: `${p33}-panel ${p33}-messenger`,
|
|
6876
7100
|
role: "dialog",
|
|
6877
7101
|
"aria-modal": "false",
|
|
6878
7102
|
"aria-label": strings.panelTitle,
|
|
6879
7103
|
style: { position: "relative" },
|
|
6880
7104
|
"data-testid": TID.messengerHome,
|
|
6881
7105
|
children: [
|
|
6882
|
-
/* @__PURE__ */
|
|
6883
|
-
visitedTabs.map((m) => /* @__PURE__ */
|
|
7106
|
+
/* @__PURE__ */ jsxs31("div", { class: `${p33}-messenger-body`, children: [
|
|
7107
|
+
visitedTabs.map((m) => /* @__PURE__ */ jsx36("div", { class: `${p33}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
|
|
6884
7108
|
renderReader()
|
|
6885
7109
|
] }),
|
|
6886
|
-
showTabBar ? /* @__PURE__ */
|
|
7110
|
+
showTabBar ? /* @__PURE__ */ jsx36(
|
|
6887
7111
|
HomeTabBar,
|
|
6888
7112
|
{
|
|
6889
7113
|
modules: enabledModules,
|
|
@@ -6893,8 +7117,8 @@ function MessengerHome({
|
|
|
6893
7117
|
onSelect: nav.switchTab
|
|
6894
7118
|
}
|
|
6895
7119
|
) : null,
|
|
6896
|
-
/* @__PURE__ */
|
|
6897
|
-
options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */
|
|
7120
|
+
/* @__PURE__ */ jsx36(PoweredByBar, { poweredBy: options.poweredBy }),
|
|
7121
|
+
options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx36(
|
|
6898
7122
|
ResizeGrip,
|
|
6899
7123
|
{
|
|
6900
7124
|
panelEl: containerRef.current,
|
|
@@ -6911,29 +7135,29 @@ function MessengerHome({
|
|
|
6911
7135
|
}
|
|
6912
7136
|
|
|
6913
7137
|
// src/ui/modules-empty.tsx
|
|
6914
|
-
import { jsx as
|
|
6915
|
-
var
|
|
7138
|
+
import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
|
|
7139
|
+
var p34 = BRAND.cssPrefix;
|
|
6916
7140
|
function ModulesEmpty({ strings, onClose }) {
|
|
6917
|
-
return /* @__PURE__ */
|
|
7141
|
+
return /* @__PURE__ */ jsxs32(
|
|
6918
7142
|
"div",
|
|
6919
7143
|
{
|
|
6920
|
-
class: `${
|
|
7144
|
+
class: `${p34}-panel ${p34}-modules-empty`,
|
|
6921
7145
|
role: "dialog",
|
|
6922
7146
|
"aria-label": strings.panelTitle,
|
|
6923
7147
|
"data-testid": TID.modulesEmpty,
|
|
6924
7148
|
children: [
|
|
6925
|
-
onClose ? /* @__PURE__ */
|
|
7149
|
+
onClose ? /* @__PURE__ */ jsx37(
|
|
6926
7150
|
"button",
|
|
6927
7151
|
{
|
|
6928
7152
|
type: "button",
|
|
6929
|
-
class: `${
|
|
7153
|
+
class: `${p34}-icon-btn ${p34}-modules-empty-close`,
|
|
6930
7154
|
onClick: onClose,
|
|
6931
7155
|
"aria-label": strings.close,
|
|
6932
7156
|
title: strings.close,
|
|
6933
|
-
children: /* @__PURE__ */
|
|
7157
|
+
children: /* @__PURE__ */ jsx37(CloseIcon, {})
|
|
6934
7158
|
}
|
|
6935
7159
|
) : null,
|
|
6936
|
-
/* @__PURE__ */
|
|
7160
|
+
/* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
|
|
6937
7161
|
]
|
|
6938
7162
|
}
|
|
6939
7163
|
);
|
|
@@ -6956,19 +7180,19 @@ function useLauncherCallout({ callout, persistence }) {
|
|
|
6956
7180
|
}
|
|
6957
7181
|
|
|
6958
7182
|
// src/ui/app.tsx
|
|
6959
|
-
import { jsx as
|
|
7183
|
+
import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
|
|
6960
7184
|
var log17 = logger.scope("app");
|
|
6961
|
-
var
|
|
7185
|
+
var p35 = BRAND.cssPrefix;
|
|
6962
7186
|
function makeLocalizedWelcome(w, strings) {
|
|
6963
7187
|
return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
|
|
6964
7188
|
}
|
|
6965
7189
|
function firstText(m) {
|
|
6966
|
-
return m.partsSig.value.find((
|
|
7190
|
+
return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
|
|
6967
7191
|
}
|
|
6968
7192
|
function allToolPartsSettled(msg) {
|
|
6969
|
-
const tools = msg.partsSig.value.filter((
|
|
6970
|
-
return tools.length > 0 && tools.every((
|
|
6971
|
-
const s =
|
|
7193
|
+
const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
|
|
7194
|
+
return tools.length > 0 && tools.every((pt) => {
|
|
7195
|
+
const s = pt.stateSig.value;
|
|
6972
7196
|
return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
|
|
6973
7197
|
});
|
|
6974
7198
|
}
|
|
@@ -7887,12 +8111,12 @@ function App({ options, hostElement, bus }) {
|
|
|
7887
8111
|
const renderSurface = (size) => {
|
|
7888
8112
|
const closeable = isActionVisible("close", effectiveOptions.mode, size);
|
|
7889
8113
|
if (enabledModules.length === 0) {
|
|
7890
|
-
return /* @__PURE__ */
|
|
8114
|
+
return /* @__PURE__ */ jsx38(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
|
|
7891
8115
|
}
|
|
7892
8116
|
if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
|
|
7893
|
-
return /* @__PURE__ */
|
|
8117
|
+
return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
|
|
7894
8118
|
}
|
|
7895
|
-
return /* @__PURE__ */
|
|
8119
|
+
return /* @__PURE__ */ jsx38(
|
|
7896
8120
|
MessengerHome,
|
|
7897
8121
|
{
|
|
7898
8122
|
panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
|
|
@@ -7911,7 +8135,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7911
8135
|
void handleSelectHistoryConversation(chat.conversationId);
|
|
7912
8136
|
};
|
|
7913
8137
|
const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
|
|
7914
|
-
return /* @__PURE__ */
|
|
8138
|
+
return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
|
|
7915
8139
|
PageShell,
|
|
7916
8140
|
{
|
|
7917
8141
|
site: parsedSite,
|
|
@@ -7932,15 +8156,15 @@ function App({ options, hostElement, bus }) {
|
|
|
7932
8156
|
}
|
|
7933
8157
|
if (isInlineLike) {
|
|
7934
8158
|
const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
|
|
7935
|
-
return /* @__PURE__ */
|
|
8159
|
+
return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
|
|
7936
8160
|
}
|
|
7937
8161
|
const drawerEdgeTab = options.mode === "drawer";
|
|
7938
8162
|
const triggerOwnedByPage = options.mode === "modal";
|
|
7939
8163
|
const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
|
|
7940
8164
|
const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
|
|
7941
|
-
return /* @__PURE__ */
|
|
7942
|
-
isOpen || activated ? /* @__PURE__ */
|
|
7943
|
-
launcherVisible ? /* @__PURE__ */
|
|
8165
|
+
return /* @__PURE__ */ jsxs33("div", { class: `${p35}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
|
|
8166
|
+
isOpen || activated ? /* @__PURE__ */ jsx38("div", { class: `${p35}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
|
|
8167
|
+
launcherVisible ? /* @__PURE__ */ jsx38(
|
|
7944
8168
|
Launcher,
|
|
7945
8169
|
{
|
|
7946
8170
|
onToggle: handleOpen,
|
|
@@ -7950,7 +8174,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7950
8174
|
edgeTab: drawerEdgeTab
|
|
7951
8175
|
}
|
|
7952
8176
|
) : null,
|
|
7953
|
-
calloutToRender ? /* @__PURE__ */
|
|
8177
|
+
calloutToRender ? /* @__PURE__ */ jsx38(
|
|
7954
8178
|
LauncherCallout,
|
|
7955
8179
|
{
|
|
7956
8180
|
callout: calloutToRender,
|
|
@@ -8015,34 +8239,34 @@ var TRACKED = {
|
|
|
8015
8239
|
expand: (on) => ({ on }),
|
|
8016
8240
|
fullscreen: (on) => ({ on }),
|
|
8017
8241
|
// Conversation funnel. `send` is the key conversion; text never rides.
|
|
8018
|
-
send: (
|
|
8019
|
-
message: (
|
|
8242
|
+
send: (p36) => ({ attachments: p36.attachmentCount }),
|
|
8243
|
+
message: (p36) => ({ role: p36.role }),
|
|
8020
8244
|
stop: () => void 0,
|
|
8021
8245
|
clear: () => void 0,
|
|
8022
8246
|
suggestion: () => void 0,
|
|
8023
|
-
toggleHistory: (
|
|
8247
|
+
toggleHistory: (p36) => ({ view: p36.view }),
|
|
8024
8248
|
handshake: () => void 0,
|
|
8025
8249
|
// Forms + human-in-the-loop — ids and outcomes, never values.
|
|
8026
|
-
formSubmit: (
|
|
8250
|
+
formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
|
|
8027
8251
|
toolResult: () => void 0,
|
|
8028
|
-
toolDecision: (
|
|
8252
|
+
toolDecision: (p36) => ({ approved: p36.approved }),
|
|
8029
8253
|
// Content — ids, tags + counts only; titles/bodies never ride.
|
|
8030
|
-
contentView: (
|
|
8031
|
-
contentOpen: (
|
|
8032
|
-
contentSearch: (
|
|
8033
|
-
contentRead: (
|
|
8034
|
-
contentLinkClick: (
|
|
8254
|
+
contentView: (p36) => ({ section: p36.section, tags: p36.tags, count: p36.count }),
|
|
8255
|
+
contentOpen: (p36) => ({ contentId: p36.contentId, tags: p36.tags }),
|
|
8256
|
+
contentSearch: (p36) => ({ qlen: p36.queryLength, hits: p36.hitCount }),
|
|
8257
|
+
contentRead: (p36) => ({ contentId: p36.contentId }),
|
|
8258
|
+
contentLinkClick: (p36) => ({ contentId: p36.contentId }),
|
|
8035
8259
|
// Composer / attachments / voice.
|
|
8036
|
-
attach: (
|
|
8260
|
+
attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
|
|
8037
8261
|
voiceStart: () => void 0,
|
|
8038
|
-
voiceStop: (
|
|
8262
|
+
voiceStop: (p36) => ({ ms: p36.durationMs }),
|
|
8039
8263
|
voiceCancel: () => void 0,
|
|
8040
8264
|
// Preferences — how visitors tune the surface.
|
|
8041
8265
|
localeChange: (locale) => ({ locale }),
|
|
8042
8266
|
themeChange: (theme) => ({ theme }),
|
|
8043
8267
|
textSizeChange: (size) => ({ size }),
|
|
8044
|
-
soundToggle: (
|
|
8045
|
-
sidebarToggle: (
|
|
8268
|
+
soundToggle: (p36) => ({ muted: p36.muted }),
|
|
8269
|
+
sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
|
|
8046
8270
|
calloutDismiss: () => void 0,
|
|
8047
8271
|
// Health signal only — the error object itself never leaves the page.
|
|
8048
8272
|
error: () => void 0
|