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