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