@helpai/elements 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/elements-web-component.esm.js +10 -10
- package/elements-web-component.esm.js.map +3 -3
- package/elements.cjs.js +24 -24
- package/elements.cjs.js.map +3 -3
- package/elements.esm.js +24 -24
- package/elements.esm.js.map +3 -3
- package/elements.js +16 -16
- package/elements.js.map +3 -3
- package/index.mjs +143 -11
- package/package.json +1 -1
- package/web-component.mjs +143 -11
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.48.0" : "0.0.0-dev";
|
|
34
34
|
var ELEMENTS_VERSION_PARAM = "_ev";
|
|
35
35
|
|
|
36
36
|
// src/i18n/strings.ts
|
|
@@ -348,7 +348,7 @@ var STRINGS_AR = {
|
|
|
348
348
|
textSizeNormal: "\u0639\u0627\u062F\u064A",
|
|
349
349
|
textSizeLarge: "\u0643\u0628\u064A\u0631",
|
|
350
350
|
loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
|
|
351
|
-
thinking: "\u064A\u0641\u0643\u0631\u2026",
|
|
351
|
+
thinking: "\u064A\u0641\u0643\u0651\u0631\u2026",
|
|
352
352
|
thoughts: "\u0627\u0644\u0623\u0641\u0643\u0627\u0631",
|
|
353
353
|
usedTool: "\u0623\u062F\u0627\u0629 \u0645\u064F\u0633\u062A\u062E\u062F\u064E\u0645\u0629",
|
|
354
354
|
toolResult: "\u0627\u0644\u0646\u062A\u064A\u062C\u0629",
|
|
@@ -405,7 +405,7 @@ var STRINGS_AR = {
|
|
|
405
405
|
inputResponse: "\u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
406
406
|
inputYourAnswer: "\u0625\u062C\u0627\u0628\u062A\u0643",
|
|
407
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",
|
|
408
|
+
inputSubmitHint: "\u0627\u0636\u063A\u0637 Enter \u0644\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 Shift+Enter \u0644\u0633\u0637\u0631 \u062C\u062F\u064A\u062F",
|
|
409
409
|
inputSkip: "\u062A\u062E\u0637\u064D\u0651",
|
|
410
410
|
inputSubmitted: "\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
411
411
|
respFreeText: "\u0646\u0635 \u062D\u0631",
|
|
@@ -424,10 +424,141 @@ var STRINGS_AR = {
|
|
|
424
424
|
statusDenied: "\u0645\u0631\u0641\u0648\u0636",
|
|
425
425
|
statusError: "\u062E\u0637\u0623"
|
|
426
426
|
};
|
|
427
|
+
var STRINGS_ES = {
|
|
428
|
+
attach: "Adjuntar archivos",
|
|
429
|
+
attachmentMimeRejected: "Tipo de archivo no admitido",
|
|
430
|
+
attachmentTooLarge: "El archivo es demasiado grande",
|
|
431
|
+
attachmentTooMany: "Se alcanz\xF3 el l\xEDmite de adjuntos",
|
|
432
|
+
conversationClosed: "Esta conversaci\xF3n est\xE1 cerrada",
|
|
433
|
+
conversationLoading: "Cargando conversaci\xF3n\u2026",
|
|
434
|
+
close: "Cerrar",
|
|
435
|
+
collapse: "Contraer",
|
|
436
|
+
collapseSidebar: "Contraer la barra lateral",
|
|
437
|
+
composerPlaceholder: "Escribe un mensaje\u2026",
|
|
438
|
+
dateLastWeek: "\xDAltimos 7 d\xEDas",
|
|
439
|
+
dateOlder: "Anteriores",
|
|
440
|
+
dateToday: "Hoy",
|
|
441
|
+
dateYesterday: "Ayer",
|
|
442
|
+
dropZone: "Suelta los archivos para adjuntarlos",
|
|
443
|
+
errorGeneric: "Algo sali\xF3 mal",
|
|
444
|
+
errorRateLimited: "Demasiadas solicitudes: int\xE9ntalo de nuevo en un momento.",
|
|
445
|
+
errorRetry: "Reintentar",
|
|
446
|
+
expand: "Ampliar",
|
|
447
|
+
expandSidebar: "Expandir la barra lateral",
|
|
448
|
+
exitFullscreen: "Salir de pantalla completa",
|
|
449
|
+
fullscreen: "Pantalla completa",
|
|
450
|
+
history: "Historial",
|
|
451
|
+
historyBack: "Volver al chat",
|
|
452
|
+
historyEmpty: "A\xFAn no tienes conversaciones",
|
|
453
|
+
historyContinue: "Continuar la conversaci\xF3n",
|
|
454
|
+
historyLoading: "Cargando tus conversaciones\u2026",
|
|
455
|
+
historyTitle: "Historial de conversaciones",
|
|
456
|
+
language: "Idioma",
|
|
457
|
+
launcherOpen: "Abrir el chat",
|
|
458
|
+
launcherLabel: "Chatea con nosotros",
|
|
459
|
+
micStart: "Iniciar entrada de voz",
|
|
460
|
+
micStop: "Detener entrada de voz",
|
|
461
|
+
micUnsupported: "Este navegador no admite la entrada de voz",
|
|
462
|
+
moreActions: "M\xE1s acciones",
|
|
463
|
+
newConversation: "Nueva conversaci\xF3n",
|
|
464
|
+
panelTitle: "Chat",
|
|
465
|
+
resizeHandle: "Arrastra para cambiar el tama\xF1o",
|
|
466
|
+
scrollToBottom: "Ir a lo m\xE1s reciente",
|
|
467
|
+
send: "Enviar",
|
|
468
|
+
soundOff: "Sonido desactivado",
|
|
469
|
+
soundOn: "Sonido activado",
|
|
470
|
+
startNewConversation: "Iniciar una conversaci\xF3n nueva",
|
|
471
|
+
stop: "Detener",
|
|
472
|
+
theme: "Tema",
|
|
473
|
+
themeAuto: "Autom\xE1tico",
|
|
474
|
+
themeDark: "Oscuro",
|
|
475
|
+
themeLight: "Claro",
|
|
476
|
+
textSize: "Tama\xF1o del texto",
|
|
477
|
+
textSizeSmall: "Peque\xF1o",
|
|
478
|
+
textSizeNormal: "Normal",
|
|
479
|
+
textSizeLarge: "Grande",
|
|
480
|
+
loading: "Cargando\u2026",
|
|
481
|
+
thinking: "Pensando\u2026",
|
|
482
|
+
thoughts: "Razonamiento",
|
|
483
|
+
usedTool: "Herramienta usada",
|
|
484
|
+
toolResult: "Resultado",
|
|
485
|
+
sources: "Fuentes",
|
|
486
|
+
// ── Messenger modules ──────────────────────────────────────────
|
|
487
|
+
tabHome: "Inicio",
|
|
488
|
+
tabConversations: "Conversaciones",
|
|
489
|
+
tabHelp: "Ayuda",
|
|
490
|
+
tabNews: "Novedades",
|
|
491
|
+
modulesEmpty: "A\xFAn no hay nada aqu\xED",
|
|
492
|
+
moduleBack: "Atr\xE1s",
|
|
493
|
+
contentLoading: "Cargando\u2026",
|
|
494
|
+
homeGreeting: "\xBFC\xF3mo podemos ayudarte?",
|
|
495
|
+
homeGreetingNamed: "Hola, {name} \u{1F44B}",
|
|
496
|
+
homeGreetingLead: "\xBFC\xF3mo podemos ayudarte?",
|
|
497
|
+
homeSearchPlaceholder: "Buscar ayuda",
|
|
498
|
+
homeContentTitle: "Art\xEDculos populares",
|
|
499
|
+
homeStatus: "Estado",
|
|
500
|
+
helpTitle: "Ayuda",
|
|
501
|
+
helpSearchPlaceholder: "Buscar ayuda",
|
|
502
|
+
helpEmpty: "A\xFAn no hay art\xEDculos de ayuda",
|
|
503
|
+
helpLoading: "Cargando la ayuda\u2026",
|
|
504
|
+
helpSearchEmpty: "No se encontraron resultados",
|
|
505
|
+
newsTitle: "Novedades",
|
|
506
|
+
newsEmpty: "A\xFAn no hay novedades",
|
|
507
|
+
newsLoading: "Cargando novedades\u2026",
|
|
508
|
+
newsBack: "Volver a novedades",
|
|
509
|
+
newsPublishedAt: "Publicado el {date}",
|
|
510
|
+
// ── Forms + human-in-the-loop (forms / ask-input / approval) ────
|
|
511
|
+
formSubmit: "Enviar",
|
|
512
|
+
formSkip: "Quiz\xE1 m\xE1s tarde",
|
|
513
|
+
formSubmitted: "Completado",
|
|
514
|
+
formSkipped: "Quiz\xE1 m\xE1s tarde",
|
|
515
|
+
formFillOut: "Completar",
|
|
516
|
+
formRequired: "Este campo es obligatorio",
|
|
517
|
+
formInvalidEmail: "Introduce un correo electr\xF3nico v\xE1lido",
|
|
518
|
+
formInvalidTel: "Introduce un n\xFAmero de tel\xE9fono v\xE1lido",
|
|
519
|
+
formInvalidUrl: "Introduce una URL v\xE1lida",
|
|
520
|
+
formInvalidNumber: "Introduce un n\xFAmero v\xE1lido",
|
|
521
|
+
formTooShort: "Demasiado corto (m\xEDn. {min} caracteres)",
|
|
522
|
+
formTooLong: "Demasiado largo (m\xE1x. {max} caracteres)",
|
|
523
|
+
formNumberTooSmall: "Debe ser al menos {min}",
|
|
524
|
+
formNumberTooLarge: "Debe ser como m\xE1ximo {max}",
|
|
525
|
+
formPatternMismatch: "Respeta el formato solicitado",
|
|
526
|
+
formChooseAtLeast: "Elige al menos {min}",
|
|
527
|
+
formChooseAtMost: "Elige como m\xE1ximo {max}",
|
|
528
|
+
formOther: "Otro",
|
|
529
|
+
formOtherPlaceholder: "Escribe tu respuesta\u2026",
|
|
530
|
+
inputRequired: "Entrada requerida",
|
|
531
|
+
inputBadge: "Entrada",
|
|
532
|
+
inputAnswered: "Respondido",
|
|
533
|
+
inputSkipped: "Omitido",
|
|
534
|
+
inputQuestion: "Pregunta",
|
|
535
|
+
inputResponse: "Respuesta",
|
|
536
|
+
inputYourAnswer: "Tu respuesta",
|
|
537
|
+
inputSubmit: "Enviar respuesta",
|
|
538
|
+
inputSubmitHint: "Enter para enviar \xB7 May\xFAs+Enter para una nueva l\xEDnea",
|
|
539
|
+
inputSkip: "Omitir",
|
|
540
|
+
inputSubmitted: "Respuesta enviada",
|
|
541
|
+
respFreeText: "Texto libre",
|
|
542
|
+
respSingleChoice: "Opci\xF3n \xFAnica",
|
|
543
|
+
respMultiChoice: "Opci\xF3n m\xFAltiple",
|
|
544
|
+
respConfirmation: "Confirmaci\xF3n",
|
|
545
|
+
approvalRequired: "Aprobaci\xF3n requerida",
|
|
546
|
+
approve: "Aprobar",
|
|
547
|
+
reject: "Rechazar",
|
|
548
|
+
approved: "Aprobado",
|
|
549
|
+
rejected: "Rechazado",
|
|
550
|
+
approvalReason: "A\xF1ade un motivo (opcional)",
|
|
551
|
+
stepNoLongerActive: "Esta solicitud ya no est\xE1 activa.",
|
|
552
|
+
toolParameters: "Par\xE1metros",
|
|
553
|
+
statusCompleted: "Completado",
|
|
554
|
+
statusDenied: "Denegado",
|
|
555
|
+
statusError: "Error"
|
|
556
|
+
};
|
|
427
557
|
var BUILTIN_STRINGS = {
|
|
428
558
|
en: STRINGS_EN,
|
|
429
559
|
fr: STRINGS_FR,
|
|
430
|
-
ar: STRINGS_AR
|
|
560
|
+
ar: STRINGS_AR,
|
|
561
|
+
es: STRINGS_ES
|
|
431
562
|
};
|
|
432
563
|
function resolveStrings(locale, override) {
|
|
433
564
|
const tag = primaryTag(locale);
|
|
@@ -2539,6 +2670,8 @@ function makeInstantWelcomeMessage(m) {
|
|
|
2539
2670
|
role: m.role,
|
|
2540
2671
|
createdAt: Date.now(),
|
|
2541
2672
|
status: "complete",
|
|
2673
|
+
// Client-only intro — rendered, never sent to the backend (see Message.ephemeral).
|
|
2674
|
+
ephemeral: true,
|
|
2542
2675
|
parts: [{ kind: "text", id: `${id}-t0`, text: m.text, done: true }]
|
|
2543
2676
|
});
|
|
2544
2677
|
}
|
|
@@ -2551,6 +2684,7 @@ function toReactive(m) {
|
|
|
2551
2684
|
errorText: m.errorText,
|
|
2552
2685
|
finishReason: m.finishReason,
|
|
2553
2686
|
serverMessageId: m.serverMessageId,
|
|
2687
|
+
ephemeral: m.ephemeral,
|
|
2554
2688
|
attachments: m.attachments,
|
|
2555
2689
|
partsSig: signal(m.parts.map(partToReactive))
|
|
2556
2690
|
};
|
|
@@ -2623,6 +2757,7 @@ function fromReactive(m) {
|
|
|
2623
2757
|
errorText: m.errorText,
|
|
2624
2758
|
finishReason: m.finishReason,
|
|
2625
2759
|
serverMessageId: m.serverMessageId,
|
|
2760
|
+
ephemeral: m.ephemeral,
|
|
2626
2761
|
attachments: m.attachments,
|
|
2627
2762
|
parts: m.partsSig.value.map(partFromReactive)
|
|
2628
2763
|
};
|
|
@@ -7186,9 +7321,6 @@ var p35 = BRAND.cssPrefix;
|
|
|
7186
7321
|
function makeLocalizedWelcome(w, strings) {
|
|
7187
7322
|
return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
|
|
7188
7323
|
}
|
|
7189
|
-
function firstText(m) {
|
|
7190
|
-
return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
|
|
7191
|
-
}
|
|
7192
7324
|
function allToolPartsSettled(msg) {
|
|
7193
7325
|
const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
|
|
7194
7326
|
return tools.length > 0 && tools.every((pt) => {
|
|
@@ -7382,9 +7514,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7382
7514
|
(n) => n !== void 0
|
|
7383
7515
|
);
|
|
7384
7516
|
const welcomeAnchor = (timelineStamps.length ? Math.min(...timelineStamps) : Date.now()) - 1;
|
|
7385
|
-
const
|
|
7386
|
-
const loadedKeys = new Set(loaded.map((m) => welcomeKey(m.role, firstText(m))));
|
|
7387
|
-
const welcomeRows = (welcomeRef.current?.messages ?? []).filter((w) => !loadedKeys.has(welcomeKey(w.role, localizeText(stringsRef.current, w.text)))).map((w) => {
|
|
7517
|
+
const welcomeRows = (welcomeRef.current?.messages ?? []).map((w) => {
|
|
7388
7518
|
const row = makeLocalizedWelcome(w, stringsRef.current);
|
|
7389
7519
|
row.createdAt = welcomeAnchor;
|
|
7390
7520
|
return row;
|
|
@@ -7669,7 +7799,9 @@ function App({ options, hostElement, bus }) {
|
|
|
7669
7799
|
conversationIdSig.value = activeConversationId;
|
|
7670
7800
|
persistence.saveConversationId(activeConversationId);
|
|
7671
7801
|
}
|
|
7672
|
-
const thread = continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1)
|
|
7802
|
+
const thread = (continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1)).filter(
|
|
7803
|
+
(m) => !m.ephemeral
|
|
7804
|
+
);
|
|
7673
7805
|
const body = buildSendMessageRequest({
|
|
7674
7806
|
messages: thread.map(fromReactive),
|
|
7675
7807
|
conversationId: activeConversationId,
|
package/package.json
CHANGED
package/web-component.mjs
CHANGED
|
@@ -344,7 +344,7 @@ var STRINGS_AR = {
|
|
|
344
344
|
textSizeNormal: "\u0639\u0627\u062F\u064A",
|
|
345
345
|
textSizeLarge: "\u0643\u0628\u064A\u0631",
|
|
346
346
|
loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
|
|
347
|
-
thinking: "\u064A\u0641\u0643\u0631\u2026",
|
|
347
|
+
thinking: "\u064A\u0641\u0643\u0651\u0631\u2026",
|
|
348
348
|
thoughts: "\u0627\u0644\u0623\u0641\u0643\u0627\u0631",
|
|
349
349
|
usedTool: "\u0623\u062F\u0627\u0629 \u0645\u064F\u0633\u062A\u062E\u062F\u064E\u0645\u0629",
|
|
350
350
|
toolResult: "\u0627\u0644\u0646\u062A\u064A\u062C\u0629",
|
|
@@ -401,7 +401,7 @@ var STRINGS_AR = {
|
|
|
401
401
|
inputResponse: "\u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
402
402
|
inputYourAnswer: "\u0625\u062C\u0627\u0628\u062A\u0643",
|
|
403
403
|
inputSubmit: "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
404
|
-
inputSubmitHint: "Enter \u0644\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 Shift+Enter \u0644\u0633\u0637\u0631 \u062C\u062F\u064A\u062F",
|
|
404
|
+
inputSubmitHint: "\u0627\u0636\u063A\u0637 Enter \u0644\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 Shift+Enter \u0644\u0633\u0637\u0631 \u062C\u062F\u064A\u062F",
|
|
405
405
|
inputSkip: "\u062A\u062E\u0637\u064D\u0651",
|
|
406
406
|
inputSubmitted: "\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
|
|
407
407
|
respFreeText: "\u0646\u0635 \u062D\u0631",
|
|
@@ -420,10 +420,141 @@ var STRINGS_AR = {
|
|
|
420
420
|
statusDenied: "\u0645\u0631\u0641\u0648\u0636",
|
|
421
421
|
statusError: "\u062E\u0637\u0623"
|
|
422
422
|
};
|
|
423
|
+
var STRINGS_ES = {
|
|
424
|
+
attach: "Adjuntar archivos",
|
|
425
|
+
attachmentMimeRejected: "Tipo de archivo no admitido",
|
|
426
|
+
attachmentTooLarge: "El archivo es demasiado grande",
|
|
427
|
+
attachmentTooMany: "Se alcanz\xF3 el l\xEDmite de adjuntos",
|
|
428
|
+
conversationClosed: "Esta conversaci\xF3n est\xE1 cerrada",
|
|
429
|
+
conversationLoading: "Cargando conversaci\xF3n\u2026",
|
|
430
|
+
close: "Cerrar",
|
|
431
|
+
collapse: "Contraer",
|
|
432
|
+
collapseSidebar: "Contraer la barra lateral",
|
|
433
|
+
composerPlaceholder: "Escribe un mensaje\u2026",
|
|
434
|
+
dateLastWeek: "\xDAltimos 7 d\xEDas",
|
|
435
|
+
dateOlder: "Anteriores",
|
|
436
|
+
dateToday: "Hoy",
|
|
437
|
+
dateYesterday: "Ayer",
|
|
438
|
+
dropZone: "Suelta los archivos para adjuntarlos",
|
|
439
|
+
errorGeneric: "Algo sali\xF3 mal",
|
|
440
|
+
errorRateLimited: "Demasiadas solicitudes: int\xE9ntalo de nuevo en un momento.",
|
|
441
|
+
errorRetry: "Reintentar",
|
|
442
|
+
expand: "Ampliar",
|
|
443
|
+
expandSidebar: "Expandir la barra lateral",
|
|
444
|
+
exitFullscreen: "Salir de pantalla completa",
|
|
445
|
+
fullscreen: "Pantalla completa",
|
|
446
|
+
history: "Historial",
|
|
447
|
+
historyBack: "Volver al chat",
|
|
448
|
+
historyEmpty: "A\xFAn no tienes conversaciones",
|
|
449
|
+
historyContinue: "Continuar la conversaci\xF3n",
|
|
450
|
+
historyLoading: "Cargando tus conversaciones\u2026",
|
|
451
|
+
historyTitle: "Historial de conversaciones",
|
|
452
|
+
language: "Idioma",
|
|
453
|
+
launcherOpen: "Abrir el chat",
|
|
454
|
+
launcherLabel: "Chatea con nosotros",
|
|
455
|
+
micStart: "Iniciar entrada de voz",
|
|
456
|
+
micStop: "Detener entrada de voz",
|
|
457
|
+
micUnsupported: "Este navegador no admite la entrada de voz",
|
|
458
|
+
moreActions: "M\xE1s acciones",
|
|
459
|
+
newConversation: "Nueva conversaci\xF3n",
|
|
460
|
+
panelTitle: "Chat",
|
|
461
|
+
resizeHandle: "Arrastra para cambiar el tama\xF1o",
|
|
462
|
+
scrollToBottom: "Ir a lo m\xE1s reciente",
|
|
463
|
+
send: "Enviar",
|
|
464
|
+
soundOff: "Sonido desactivado",
|
|
465
|
+
soundOn: "Sonido activado",
|
|
466
|
+
startNewConversation: "Iniciar una conversaci\xF3n nueva",
|
|
467
|
+
stop: "Detener",
|
|
468
|
+
theme: "Tema",
|
|
469
|
+
themeAuto: "Autom\xE1tico",
|
|
470
|
+
themeDark: "Oscuro",
|
|
471
|
+
themeLight: "Claro",
|
|
472
|
+
textSize: "Tama\xF1o del texto",
|
|
473
|
+
textSizeSmall: "Peque\xF1o",
|
|
474
|
+
textSizeNormal: "Normal",
|
|
475
|
+
textSizeLarge: "Grande",
|
|
476
|
+
loading: "Cargando\u2026",
|
|
477
|
+
thinking: "Pensando\u2026",
|
|
478
|
+
thoughts: "Razonamiento",
|
|
479
|
+
usedTool: "Herramienta usada",
|
|
480
|
+
toolResult: "Resultado",
|
|
481
|
+
sources: "Fuentes",
|
|
482
|
+
// ── Messenger modules ──────────────────────────────────────────
|
|
483
|
+
tabHome: "Inicio",
|
|
484
|
+
tabConversations: "Conversaciones",
|
|
485
|
+
tabHelp: "Ayuda",
|
|
486
|
+
tabNews: "Novedades",
|
|
487
|
+
modulesEmpty: "A\xFAn no hay nada aqu\xED",
|
|
488
|
+
moduleBack: "Atr\xE1s",
|
|
489
|
+
contentLoading: "Cargando\u2026",
|
|
490
|
+
homeGreeting: "\xBFC\xF3mo podemos ayudarte?",
|
|
491
|
+
homeGreetingNamed: "Hola, {name} \u{1F44B}",
|
|
492
|
+
homeGreetingLead: "\xBFC\xF3mo podemos ayudarte?",
|
|
493
|
+
homeSearchPlaceholder: "Buscar ayuda",
|
|
494
|
+
homeContentTitle: "Art\xEDculos populares",
|
|
495
|
+
homeStatus: "Estado",
|
|
496
|
+
helpTitle: "Ayuda",
|
|
497
|
+
helpSearchPlaceholder: "Buscar ayuda",
|
|
498
|
+
helpEmpty: "A\xFAn no hay art\xEDculos de ayuda",
|
|
499
|
+
helpLoading: "Cargando la ayuda\u2026",
|
|
500
|
+
helpSearchEmpty: "No se encontraron resultados",
|
|
501
|
+
newsTitle: "Novedades",
|
|
502
|
+
newsEmpty: "A\xFAn no hay novedades",
|
|
503
|
+
newsLoading: "Cargando novedades\u2026",
|
|
504
|
+
newsBack: "Volver a novedades",
|
|
505
|
+
newsPublishedAt: "Publicado el {date}",
|
|
506
|
+
// ── Forms + human-in-the-loop (forms / ask-input / approval) ────
|
|
507
|
+
formSubmit: "Enviar",
|
|
508
|
+
formSkip: "Quiz\xE1 m\xE1s tarde",
|
|
509
|
+
formSubmitted: "Completado",
|
|
510
|
+
formSkipped: "Quiz\xE1 m\xE1s tarde",
|
|
511
|
+
formFillOut: "Completar",
|
|
512
|
+
formRequired: "Este campo es obligatorio",
|
|
513
|
+
formInvalidEmail: "Introduce un correo electr\xF3nico v\xE1lido",
|
|
514
|
+
formInvalidTel: "Introduce un n\xFAmero de tel\xE9fono v\xE1lido",
|
|
515
|
+
formInvalidUrl: "Introduce una URL v\xE1lida",
|
|
516
|
+
formInvalidNumber: "Introduce un n\xFAmero v\xE1lido",
|
|
517
|
+
formTooShort: "Demasiado corto (m\xEDn. {min} caracteres)",
|
|
518
|
+
formTooLong: "Demasiado largo (m\xE1x. {max} caracteres)",
|
|
519
|
+
formNumberTooSmall: "Debe ser al menos {min}",
|
|
520
|
+
formNumberTooLarge: "Debe ser como m\xE1ximo {max}",
|
|
521
|
+
formPatternMismatch: "Respeta el formato solicitado",
|
|
522
|
+
formChooseAtLeast: "Elige al menos {min}",
|
|
523
|
+
formChooseAtMost: "Elige como m\xE1ximo {max}",
|
|
524
|
+
formOther: "Otro",
|
|
525
|
+
formOtherPlaceholder: "Escribe tu respuesta\u2026",
|
|
526
|
+
inputRequired: "Entrada requerida",
|
|
527
|
+
inputBadge: "Entrada",
|
|
528
|
+
inputAnswered: "Respondido",
|
|
529
|
+
inputSkipped: "Omitido",
|
|
530
|
+
inputQuestion: "Pregunta",
|
|
531
|
+
inputResponse: "Respuesta",
|
|
532
|
+
inputYourAnswer: "Tu respuesta",
|
|
533
|
+
inputSubmit: "Enviar respuesta",
|
|
534
|
+
inputSubmitHint: "Enter para enviar \xB7 May\xFAs+Enter para una nueva l\xEDnea",
|
|
535
|
+
inputSkip: "Omitir",
|
|
536
|
+
inputSubmitted: "Respuesta enviada",
|
|
537
|
+
respFreeText: "Texto libre",
|
|
538
|
+
respSingleChoice: "Opci\xF3n \xFAnica",
|
|
539
|
+
respMultiChoice: "Opci\xF3n m\xFAltiple",
|
|
540
|
+
respConfirmation: "Confirmaci\xF3n",
|
|
541
|
+
approvalRequired: "Aprobaci\xF3n requerida",
|
|
542
|
+
approve: "Aprobar",
|
|
543
|
+
reject: "Rechazar",
|
|
544
|
+
approved: "Aprobado",
|
|
545
|
+
rejected: "Rechazado",
|
|
546
|
+
approvalReason: "A\xF1ade un motivo (opcional)",
|
|
547
|
+
stepNoLongerActive: "Esta solicitud ya no est\xE1 activa.",
|
|
548
|
+
toolParameters: "Par\xE1metros",
|
|
549
|
+
statusCompleted: "Completado",
|
|
550
|
+
statusDenied: "Denegado",
|
|
551
|
+
statusError: "Error"
|
|
552
|
+
};
|
|
423
553
|
var BUILTIN_STRINGS = {
|
|
424
554
|
en: STRINGS_EN,
|
|
425
555
|
fr: STRINGS_FR,
|
|
426
|
-
ar: STRINGS_AR
|
|
556
|
+
ar: STRINGS_AR,
|
|
557
|
+
es: STRINGS_ES
|
|
427
558
|
};
|
|
428
559
|
function resolveStrings(locale, override) {
|
|
429
560
|
const tag = primaryTag(locale);
|
|
@@ -1604,7 +1735,7 @@ function createAuth(opts) {
|
|
|
1604
1735
|
}
|
|
1605
1736
|
|
|
1606
1737
|
// src/core/version.ts
|
|
1607
|
-
var ELEMENTS_VERSION = true ? "0.
|
|
1738
|
+
var ELEMENTS_VERSION = true ? "0.48.0" : "0.0.0-dev";
|
|
1608
1739
|
var ELEMENTS_VERSION_PARAM = "_ev";
|
|
1609
1740
|
|
|
1610
1741
|
// src/stream/types.ts
|
|
@@ -2498,6 +2629,8 @@ function makeInstantWelcomeMessage(m) {
|
|
|
2498
2629
|
role: m.role,
|
|
2499
2630
|
createdAt: Date.now(),
|
|
2500
2631
|
status: "complete",
|
|
2632
|
+
// Client-only intro — rendered, never sent to the backend (see Message.ephemeral).
|
|
2633
|
+
ephemeral: true,
|
|
2501
2634
|
parts: [{ kind: "text", id: `${id}-t0`, text: m.text, done: true }]
|
|
2502
2635
|
});
|
|
2503
2636
|
}
|
|
@@ -2510,6 +2643,7 @@ function toReactive(m) {
|
|
|
2510
2643
|
errorText: m.errorText,
|
|
2511
2644
|
finishReason: m.finishReason,
|
|
2512
2645
|
serverMessageId: m.serverMessageId,
|
|
2646
|
+
ephemeral: m.ephemeral,
|
|
2513
2647
|
attachments: m.attachments,
|
|
2514
2648
|
partsSig: signal(m.parts.map(partToReactive))
|
|
2515
2649
|
};
|
|
@@ -2582,6 +2716,7 @@ function fromReactive(m) {
|
|
|
2582
2716
|
errorText: m.errorText,
|
|
2583
2717
|
finishReason: m.finishReason,
|
|
2584
2718
|
serverMessageId: m.serverMessageId,
|
|
2719
|
+
ephemeral: m.ephemeral,
|
|
2585
2720
|
attachments: m.attachments,
|
|
2586
2721
|
parts: m.partsSig.value.map(partFromReactive)
|
|
2587
2722
|
};
|
|
@@ -7145,9 +7280,6 @@ var p35 = BRAND.cssPrefix;
|
|
|
7145
7280
|
function makeLocalizedWelcome(w, strings) {
|
|
7146
7281
|
return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
|
|
7147
7282
|
}
|
|
7148
|
-
function firstText(m) {
|
|
7149
|
-
return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
|
|
7150
|
-
}
|
|
7151
7283
|
function allToolPartsSettled(msg) {
|
|
7152
7284
|
const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
|
|
7153
7285
|
return tools.length > 0 && tools.every((pt) => {
|
|
@@ -7341,9 +7473,7 @@ function App({ options, hostElement, bus }) {
|
|
|
7341
7473
|
(n) => n !== void 0
|
|
7342
7474
|
);
|
|
7343
7475
|
const welcomeAnchor = (timelineStamps.length ? Math.min(...timelineStamps) : Date.now()) - 1;
|
|
7344
|
-
const
|
|
7345
|
-
const loadedKeys = new Set(loaded.map((m) => welcomeKey(m.role, firstText(m))));
|
|
7346
|
-
const welcomeRows = (welcomeRef.current?.messages ?? []).filter((w) => !loadedKeys.has(welcomeKey(w.role, localizeText(stringsRef.current, w.text)))).map((w) => {
|
|
7476
|
+
const welcomeRows = (welcomeRef.current?.messages ?? []).map((w) => {
|
|
7347
7477
|
const row = makeLocalizedWelcome(w, stringsRef.current);
|
|
7348
7478
|
row.createdAt = welcomeAnchor;
|
|
7349
7479
|
return row;
|
|
@@ -7628,7 +7758,9 @@ function App({ options, hostElement, bus }) {
|
|
|
7628
7758
|
conversationIdSig.value = activeConversationId;
|
|
7629
7759
|
persistence.saveConversationId(activeConversationId);
|
|
7630
7760
|
}
|
|
7631
|
-
const thread = continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1)
|
|
7761
|
+
const thread = (continueExisting ? messagesSig.value : messagesSig.value.slice(0, -1)).filter(
|
|
7762
|
+
(m) => !m.ephemeral
|
|
7763
|
+
);
|
|
7632
7764
|
const body = buildSendMessageRequest({
|
|
7633
7765
|
messages: thread.map(fromReactive),
|
|
7634
7766
|
conversationId: activeConversationId,
|