@projectcor/maia-components 2.11.103-3 → 2.11.103-4

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.
Files changed (65) hide show
  1. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +7 -6
  2. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +9 -12
  3. package/lib/components/atoms/MAIAInput/MAIAInput.js +6 -1
  4. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +20 -0
  5. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +20 -0
  6. package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
  7. package/lib/components/atoms/icons/MaiaSparkleIcon.js +75 -0
  8. package/lib/components/atoms/icons/index.js +2 -1
  9. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +68 -97
  10. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +9 -18
  11. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +3 -3
  12. package/lib/components/molecules/ChatAIHome/styles.js +26 -32
  13. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +46 -7
  14. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +308 -69
  15. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +28 -18
  16. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +9 -2
  17. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +15 -3
  18. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -1
  19. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +66 -0
  20. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +55 -0
  21. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +2 -0
  22. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -2
  23. package/lib/components/molecules/Sidebar/Sidebar.js +106 -61
  24. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +16 -1
  25. package/lib/components/molecules/Sidebar/Sidebar.styles.js +30 -29
  26. package/lib/components/organisms/ChatAI/ChatAI.js +131 -40
  27. package/lib/context/cor-user.js +1 -5
  28. package/lib/context/global-context.js +3 -1
  29. package/lib/hooks/useChatManager/useChatManager.js +530 -438
  30. package/lib/hooks/useChatMessages/useChatMessages.js +427 -236
  31. package/lib/hooks/useChats/useChats.js +21 -4
  32. package/lib/hooks/useMinimizedPillBottomOffset.js +97 -0
  33. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  34. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +139 -521
  35. package/lib/hooks/useStreamingMessage/index.js +2 -3
  36. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +13 -17
  37. package/lib/lang/br/index.js +11 -6
  38. package/lib/lang/en/index.js +11 -6
  39. package/lib/lang/es/index.js +11 -6
  40. package/lib/lang/fr/index.js +13 -7
  41. package/lib/services/maia/Chats/getChatsByUserId.js +6 -4
  42. package/lib/services/maia/Chats/index.js +3 -1
  43. package/lib/services/maia/Chats/markSessionAsRead.js +32 -0
  44. package/lib/store/chatsSidebarOptimistic.js +92 -0
  45. package/lib/store/chatsStore.types.js +1 -1
  46. package/lib/store/maiaMinimizedPersistence.js +49 -0
  47. package/lib/store/sessions/activeView.js +22 -0
  48. package/lib/store/sessions/index.js +9 -0
  49. package/lib/store/sessions/sessionHitlContext.js +15 -0
  50. package/lib/store/sessions/sessionNotificationSound.js +57 -0
  51. package/lib/store/sessions/sessionNotifications.js +110 -0
  52. package/lib/store/sessions/sessionNotifications.types.js +2 -0
  53. package/lib/store/sessions/sessionStreamManager.js +576 -0
  54. package/lib/store/sessions/sessionStreamingText.js +80 -0
  55. package/lib/store/sessions/sessions.types.js +35 -0
  56. package/lib/store/sessions/useSessionMeta.js +39 -0
  57. package/lib/store/sessions/useSessionStreamingText.js +18 -0
  58. package/lib/store/sessions/useSessionsStore.js +197 -0
  59. package/lib/store/useChatsStore.js +149 -12
  60. package/lib/types/Chat.js +1 -1
  61. package/lib/utils/formatUnreadCount.js +6 -0
  62. package/lib/utils/maiaHostOpen.js +54 -0
  63. package/package.json +3 -3
  64. package/lib/hooks/useStreamingMessage/streamingStore.js +0 -69
  65. package/lib/utils/managerHoursHomeFuas.js +0 -54
@@ -0,0 +1,49 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
2
+ var STORAGE_PREFIX = 'maia:minimized';
3
+ var EMPTY = {
4
+ minimized: false,
5
+ chatId: null
6
+ };
7
+ var canUseStorage = function canUseStorage() {
8
+ return typeof window !== 'undefined' && typeof localStorage !== 'undefined';
9
+ };
10
+ var buildKey = function buildKey(userId) {
11
+ return "".concat(STORAGE_PREFIX, ":").concat(userId);
12
+ };
13
+
14
+ /**
15
+ * Estado de minimizado de MAIA, persistido para que el flotante siga visible al
16
+ * navegar entre secciones o refrescar. Scopeado por usuario para no arrastrar el
17
+ * estado de una cuenta a otra en el mismo browser.
18
+ */
19
+ export var readMinimizedState = function readMinimizedState(userId) {
20
+ if (!canUseStorage()) return EMPTY;
21
+ try {
22
+ var raw = localStorage.getItem(buildKey(userId));
23
+ if (!raw) return EMPTY;
24
+ var parsed = JSON.parse(raw);
25
+ if (!parsed || _typeof(parsed) !== 'object') return EMPTY;
26
+ var _ref = parsed,
27
+ minimized = _ref.minimized,
28
+ chatId = _ref.chatId;
29
+ return {
30
+ minimized: minimized === true,
31
+ chatId: typeof chatId === 'string' && chatId.length > 0 ? chatId : null
32
+ };
33
+ } catch (_unused) {
34
+ return EMPTY;
35
+ }
36
+ };
37
+ export var writeMinimizedState = function writeMinimizedState(userId, state) {
38
+ if (!canUseStorage()) return;
39
+ try {
40
+ if (!state.minimized) {
41
+ localStorage.removeItem(buildKey(userId));
42
+ return;
43
+ }
44
+ localStorage.setItem(buildKey(userId), JSON.stringify(state));
45
+ } catch (_unused2) {
46
+ // storage lleno o bloqueado: el flotante simplemente no persiste
47
+ }
48
+ };
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVE9SQUdFX1BSRUZJWCIsIkVNUFRZIiwibWluaW1pemVkIiwiY2hhdElkIiwiY2FuVXNlU3RvcmFnZSIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsImJ1aWxkS2V5IiwidXNlcklkIiwiY29uY2F0IiwicmVhZE1pbmltaXplZFN0YXRlIiwicmF3IiwiZ2V0SXRlbSIsInBhcnNlZCIsIkpTT04iLCJwYXJzZSIsIl90eXBlb2YiLCJfcmVmIiwibGVuZ3RoIiwiX3VudXNlZCIsIndyaXRlTWluaW1pemVkU3RhdGUiLCJzdGF0ZSIsInJlbW92ZUl0ZW0iLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwiX3VudXNlZDIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUvbWFpYU1pbmltaXplZFBlcnNpc3RlbmNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNUT1JBR0VfUFJFRklYID0gJ21haWE6bWluaW1pemVkJ1xuXG5leHBvcnQgdHlwZSBNaW5pbWl6ZWRTdGF0ZSA9IHtcbiAgbWluaW1pemVkOiBib29sZWFuXG4gIC8qKiBDaGF0IGFjdGl2byBhbCBtaW5pbWl6YXI6IGRlc3Rpbm8gZGUgZmFsbGJhY2sgYWwgcmVhYnJpci4gKi9cbiAgY2hhdElkOiBzdHJpbmcgfCBudWxsXG59XG5cbmNvbnN0IEVNUFRZOiBNaW5pbWl6ZWRTdGF0ZSA9IHsgbWluaW1pemVkOiBmYWxzZSwgY2hhdElkOiBudWxsIH1cblxuY29uc3QgY2FuVXNlU3RvcmFnZSA9ICgpOiBib29sZWFuID0+IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnXG5cbmNvbnN0IGJ1aWxkS2V5ID0gKHVzZXJJZDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IGAke1NUT1JBR0VfUFJFRklYfToke3VzZXJJZH1gXG5cbi8qKlxuICogRXN0YWRvIGRlIG1pbmltaXphZG8gZGUgTUFJQSwgcGVyc2lzdGlkbyBwYXJhIHF1ZSBlbCBmbG90YW50ZSBzaWdhIHZpc2libGUgYWxcbiAqIG5hdmVnYXIgZW50cmUgc2VjY2lvbmVzIG8gcmVmcmVzY2FyLiBTY29wZWFkbyBwb3IgdXN1YXJpbyBwYXJhIG5vIGFycmFzdHJhciBlbFxuICogZXN0YWRvIGRlIHVuYSBjdWVudGEgYSBvdHJhIGVuIGVsIG1pc21vIGJyb3dzZXIuXG4gKi9cbmV4cG9ydCBjb25zdCByZWFkTWluaW1pemVkU3RhdGUgPSAodXNlcklkOiBudW1iZXIgfCBzdHJpbmcpOiBNaW5pbWl6ZWRTdGF0ZSA9PiB7XG4gIGlmICghY2FuVXNlU3RvcmFnZSgpKSByZXR1cm4gRU1QVFlcblxuICB0cnkge1xuICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGJ1aWxkS2V5KHVzZXJJZCkpXG4gICAgaWYgKCFyYXcpIHJldHVybiBFTVBUWVxuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KSBhcyB1bmtub3duXG4gICAgaWYgKCFwYXJzZWQgfHwgdHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcpIHJldHVybiBFTVBUWVxuICAgIGNvbnN0IHsgbWluaW1pemVkLCBjaGF0SWQgfSA9IHBhcnNlZCBhcyBQYXJ0aWFsPE1pbmltaXplZFN0YXRlPlxuICAgIHJldHVybiB7XG4gICAgICBtaW5pbWl6ZWQ6IG1pbmltaXplZCA9PT0gdHJ1ZSxcbiAgICAgIGNoYXRJZDogdHlwZW9mIGNoYXRJZCA9PT0gJ3N0cmluZycgJiYgY2hhdElkLmxlbmd0aCA+IDAgPyBjaGF0SWQgOiBudWxsLFxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIEVNUFRZXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHdyaXRlTWluaW1pemVkU3RhdGUgPSAodXNlcklkOiBudW1iZXIgfCBzdHJpbmcsIHN0YXRlOiBNaW5pbWl6ZWRTdGF0ZSk6IHZvaWQgPT4ge1xuICBpZiAoIWNhblVzZVN0b3JhZ2UoKSkgcmV0dXJuXG5cbiAgdHJ5IHtcbiAgICBpZiAoIXN0YXRlLm1pbmltaXplZCkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYnVpbGRLZXkodXNlcklkKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShidWlsZEtleSh1c2VySWQpLCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpXG4gIH0gY2F0Y2gge1xuICAgIC8vIHN0b3JhZ2UgbGxlbm8gbyBibG9xdWVhZG86IGVsIGZsb3RhbnRlIHNpbXBsZW1lbnRlIG5vIHBlcnNpc3RlXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQU1BLGNBQWMsR0FBRyxnQkFBZ0I7QUFRdkMsSUFBTUMsS0FBcUIsR0FBRztFQUFFQyxTQUFTLEVBQUUsS0FBSztFQUFFQyxNQUFNLEVBQUU7QUFBSyxDQUFDO0FBRWhFLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBQTtFQUFBLE9BQWtCLE9BQU9DLE1BQU0sS0FBSyxXQUFXLElBQUksT0FBT0MsWUFBWSxLQUFLLFdBQVc7QUFBQTtBQUV6RyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBSUMsTUFBdUI7RUFBQSxVQUFBQyxNQUFBLENBQWdCVCxjQUFjLE9BQUFTLE1BQUEsQ0FBSUQsTUFBTTtBQUFBLENBQUU7O0FBRW5GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1FLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUlGLE1BQXVCLEVBQXFCO0VBQzdFLElBQUksQ0FBQ0osYUFBYSxDQUFDLENBQUMsRUFBRSxPQUFPSCxLQUFLO0VBRWxDLElBQUk7SUFDRixJQUFNVSxHQUFHLEdBQUdMLFlBQVksQ0FBQ00sT0FBTyxDQUFDTCxRQUFRLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQ0csR0FBRyxFQUFFLE9BQU9WLEtBQUs7SUFDdEIsSUFBTVksTUFBTSxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0osR0FBRyxDQUFZO0lBQ3pDLElBQUksQ0FBQ0UsTUFBTSxJQUFJRyxPQUFBLENBQU9ILE1BQU0sTUFBSyxRQUFRLEVBQUUsT0FBT1osS0FBSztJQUN2RCxJQUFBZ0IsSUFBQSxHQUE4QkosTUFBTTtNQUE1QlgsU0FBUyxHQUFBZSxJQUFBLENBQVRmLFNBQVM7TUFBRUMsTUFBTSxHQUFBYyxJQUFBLENBQU5kLE1BQU07SUFDekIsT0FBTztNQUNMRCxTQUFTLEVBQUVBLFNBQVMsS0FBSyxJQUFJO01BQzdCQyxNQUFNLEVBQUUsT0FBT0EsTUFBTSxLQUFLLFFBQVEsSUFBSUEsTUFBTSxDQUFDZSxNQUFNLEdBQUcsQ0FBQyxHQUFHZixNQUFNLEdBQUc7SUFDckUsQ0FBQztFQUNILENBQUMsQ0FBQyxPQUFBZ0IsT0FBQSxFQUFNO0lBQ04sT0FBT2xCLEtBQUs7RUFDZDtBQUNGLENBQUM7QUFFRCxPQUFPLElBQU1tQixtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJWixNQUF1QixFQUFFYSxLQUFxQixFQUFXO0VBQzNGLElBQUksQ0FBQ2pCLGFBQWEsQ0FBQyxDQUFDLEVBQUU7RUFFdEIsSUFBSTtJQUNGLElBQUksQ0FBQ2lCLEtBQUssQ0FBQ25CLFNBQVMsRUFBRTtNQUNwQkksWUFBWSxDQUFDZ0IsVUFBVSxDQUFDZixRQUFRLENBQUNDLE1BQU0sQ0FBQyxDQUFDO01BQ3pDO0lBQ0Y7SUFDQUYsWUFBWSxDQUFDaUIsT0FBTyxDQUFDaEIsUUFBUSxDQUFDQyxNQUFNLENBQUMsRUFBRU0sSUFBSSxDQUFDVSxTQUFTLENBQUNILEtBQUssQ0FBQyxDQUFDO0VBQy9ELENBQUMsQ0FBQyxPQUFBSSxRQUFBLEVBQU07SUFDTjtFQUFBO0FBRUosQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Sesión actualmente visible en la UI (module-level).
3
+ *
4
+ * El motor de streaming vive en `sessionStreamManager` y sobrevive al
5
+ * desmontaje del componente. Por eso los callbacks de un stream NO pueden
6
+ * decidir "¿es la sesión activa?" leyendo un ref de la instancia que lo arrancó
7
+ * (puede estar desmontada). Este tracker global da la respuesta correcta sin
8
+ * importar qué closure ejecute el callback.
9
+ */
10
+ var activeViewSessionId = null;
11
+ export var activeView = {
12
+ set: function set(sessionId) {
13
+ activeViewSessionId = sessionId;
14
+ },
15
+ get: function get() {
16
+ return activeViewSessionId;
17
+ },
18
+ is: function is(sessionId) {
19
+ return sessionId != null && sessionId === activeViewSessionId;
20
+ }
21
+ };
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhY3RpdmVWaWV3U2Vzc2lvbklkIiwiYWN0aXZlVmlldyIsInNldCIsInNlc3Npb25JZCIsImdldCIsImlzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL2FjdGl2ZVZpZXcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXNpw7NuIGFjdHVhbG1lbnRlIHZpc2libGUgZW4gbGEgVUkgKG1vZHVsZS1sZXZlbCkuXG4gKlxuICogRWwgbW90b3IgZGUgc3RyZWFtaW5nIHZpdmUgZW4gYHNlc3Npb25TdHJlYW1NYW5hZ2VyYCB5IHNvYnJldml2ZSBhbFxuICogZGVzbW9udGFqZSBkZWwgY29tcG9uZW50ZS4gUG9yIGVzbyBsb3MgY2FsbGJhY2tzIGRlIHVuIHN0cmVhbSBOTyBwdWVkZW5cbiAqIGRlY2lkaXIgXCLCv2VzIGxhIHNlc2nDs24gYWN0aXZhP1wiIGxleWVuZG8gdW4gcmVmIGRlIGxhIGluc3RhbmNpYSBxdWUgbG8gYXJyYW5jw7NcbiAqIChwdWVkZSBlc3RhciBkZXNtb250YWRhKS4gRXN0ZSB0cmFja2VyIGdsb2JhbCBkYSBsYSByZXNwdWVzdGEgY29ycmVjdGEgc2luXG4gKiBpbXBvcnRhciBxdcOpIGNsb3N1cmUgZWplY3V0ZSBlbCBjYWxsYmFjay5cbiAqL1xubGV0IGFjdGl2ZVZpZXdTZXNzaW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbmV4cG9ydCBjb25zdCBhY3RpdmVWaWV3ID0ge1xuICBzZXQoc2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgYWN0aXZlVmlld1Nlc3Npb25JZCA9IHNlc3Npb25JZFxuICB9LFxuICBnZXQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGFjdGl2ZVZpZXdTZXNzaW9uSWRcbiAgfSxcbiAgaXMoc2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNlc3Npb25JZCAhPSBudWxsICYmIHNlc3Npb25JZCA9PT0gYWN0aXZlVmlld1Nlc3Npb25JZFxuICB9LFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxtQkFBa0MsR0FBRyxJQUFJO0FBRTdDLE9BQU8sSUFBTUMsVUFBVSxHQUFHO0VBQ3hCQyxHQUFHLFdBQUhBLEdBQUdBLENBQUNDLFNBQXdCLEVBQVE7SUFDbENILG1CQUFtQixHQUFHRyxTQUFTO0VBQ2pDLENBQUM7RUFDREMsR0FBRyxXQUFIQSxHQUFHQSxDQUFBLEVBQWtCO0lBQ25CLE9BQU9KLG1CQUFtQjtFQUM1QixDQUFDO0VBQ0RLLEVBQUUsV0FBRkEsRUFBRUEsQ0FBQ0YsU0FBb0MsRUFBVztJQUNoRCxPQUFPQSxTQUFTLElBQUksSUFBSSxJQUFJQSxTQUFTLEtBQUtILG1CQUFtQjtFQUMvRDtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,9 @@
1
+ export { useSessionsStore } from './useSessionsStore';
2
+ export { sessionStreamingText } from './sessionStreamingText';
3
+ export { useSessionStreamingText } from './useSessionStreamingText';
4
+ export { useSessionMeta, useSessionStreamState, useActiveSessionIds, useIsSessionGenerating } from './useSessionMeta';
5
+ export { sessionStreamManager, MAX_CONCURRENT_STREAMS } from './sessionStreamManager';
6
+ export { activeView } from './activeView';
7
+ export { ensureSessionNotificationsInitialized, notifySessionFinishedInBackground } from './sessionNotifications';
8
+ export { isActiveSessionStatus, ACTIVE_SESSION_STATUSES } from './sessions.types';
9
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTZXNzaW9uc1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uU3RyZWFtaW5nVGV4dCIsInVzZVNlc3Npb25NZXRhIiwidXNlU2Vzc2lvblN0cmVhbVN0YXRlIiwidXNlQWN0aXZlU2Vzc2lvbklkcyIsInVzZUlzU2Vzc2lvbkdlbmVyYXRpbmciLCJzZXNzaW9uU3RyZWFtTWFuYWdlciIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJhY3RpdmVWaWV3IiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsIm5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZCIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsIkFDVElWRV9TRVNTSU9OX1NUQVRVU0VTIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuL3VzZVNlc3Npb25zU3RvcmUnXG5leHBvcnQgeyBzZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4vc2Vzc2lvblN0cmVhbWluZ1RleHQnXG5leHBvcnQgeyB1c2VTZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4vdXNlU2Vzc2lvblN0cmVhbWluZ1RleHQnXG5leHBvcnQgeyB1c2VTZXNzaW9uTWV0YSwgdXNlU2Vzc2lvblN0cmVhbVN0YXRlLCB1c2VBY3RpdmVTZXNzaW9uSWRzLCB1c2VJc1Nlc3Npb25HZW5lcmF0aW5nIH0gZnJvbSAnLi91c2VTZXNzaW9uTWV0YSdcbmV4cG9ydCB7IHNlc3Npb25TdHJlYW1NYW5hZ2VyLCBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TIH0gZnJvbSAnLi9zZXNzaW9uU3RyZWFtTWFuYWdlcidcbmV4cG9ydCB7IGFjdGl2ZVZpZXcgfSBmcm9tICcuL2FjdGl2ZVZpZXcnXG5leHBvcnQgeyBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkLCBub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQgfSBmcm9tICcuL3Nlc3Npb25Ob3RpZmljYXRpb25zJ1xuZXhwb3J0IHR5cGUgeyBNYWlhU2Vzc2lvbkZpbmlzaGVkRGV0YWlsLCBTZXNzaW9uRmluaXNoZWRLaW5kIH0gZnJvbSAnLi9zZXNzaW9uTm90aWZpY2F0aW9ucy50eXBlcydcbmV4cG9ydCB7IGlzQWN0aXZlU2Vzc2lvblN0YXR1cywgQUNUSVZFX1NFU1NJT05fU1RBVFVTRVMgfSBmcm9tICcuL3Nlc3Npb25zLnR5cGVzJ1xuZXhwb3J0IHR5cGUge1xuICBTZXNzaW9uU3RhdHVzLFxuICBTZXNzaW9uRXJyb3IsXG4gIFNlc3Npb25SdW50aW1lTWV0YSxcbiAgU2Vzc2lvblN0cmVhbWluZ1NuYXBzaG90LFxuICBTZXNzaW9uRmluaXNoUGF5bG9hZCxcbiAgU2Vzc2lvblN0cmVhbUNhbGxiYWNrcyxcbiAgU3RhcnRTdHJlYW1SZXN1bHQsXG4gIFNlc3Npb25NZXNzYWdlc01hcCxcbn0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQWdCLFFBQVEsb0JBQW9CO0FBQ3JELFNBQVNDLG9CQUFvQixRQUFRLHdCQUF3QjtBQUM3RCxTQUFTQyx1QkFBdUIsUUFBUSwyQkFBMkI7QUFDbkUsU0FBU0MsY0FBYyxFQUFFQyxxQkFBcUIsRUFBRUMsbUJBQW1CLEVBQUVDLHNCQUFzQixRQUFRLGtCQUFrQjtBQUNySCxTQUFTQyxvQkFBb0IsRUFBRUMsc0JBQXNCLFFBQVEsd0JBQXdCO0FBQ3JGLFNBQVNDLFVBQVUsUUFBUSxjQUFjO0FBQ3pDLFNBQVNDLHFDQUFxQyxFQUFFQyxpQ0FBaUMsUUFBUSx3QkFBd0I7QUFFakgsU0FBU0MscUJBQXFCLEVBQUVDLHVCQUF1QixRQUFRLGtCQUFrQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,15 @@
1
+ /** Contexto HITL por sesión (sobrevive al cambio de vista dentro del motor). */
2
+ var contexts = new Map();
3
+ export var sessionHitlContext = {
4
+ set: function set(sessionId, context) {
5
+ contexts.set(sessionId, context);
6
+ },
7
+ get: function get(sessionId) {
8
+ var _contexts$get;
9
+ return (_contexts$get = contexts.get(sessionId)) !== null && _contexts$get !== void 0 ? _contexts$get : null;
10
+ },
11
+ clear: function clear(sessionId) {
12
+ contexts["delete"](sessionId);
13
+ }
14
+ };
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb250ZXh0cyIsIk1hcCIsInNlc3Npb25IaXRsQ29udGV4dCIsInNldCIsInNlc3Npb25JZCIsImNvbnRleHQiLCJnZXQiLCJfY29udGV4dHMkZ2V0IiwiY2xlYXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvbkhpdGxDb250ZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuXG4vKiogQ29udGV4dG8gSElUTCBwb3Igc2VzacOzbiAoc29icmV2aXZlIGFsIGNhbWJpbyBkZSB2aXN0YSBkZW50cm8gZGVsIG1vdG9yKS4gKi9cbmNvbnN0IGNvbnRleHRzID0gbmV3IE1hcDxzdHJpbmcsIEhpdGxFeGVjdXRpb25Db250ZXh0PigpXG5cbmV4cG9ydCBjb25zdCBzZXNzaW9uSGl0bENvbnRleHQgPSB7XG4gIHNldChzZXNzaW9uSWQ6IHN0cmluZywgY29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICBjb250ZXh0cy5zZXQoc2Vzc2lvbklkLCBjb250ZXh0KVxuICB9LFxuICBnZXQoc2Vzc2lvbklkOiBzdHJpbmcpOiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiBjb250ZXh0cy5nZXQoc2Vzc2lvbklkKSA/PyBudWxsXG4gIH0sXG4gIGNsZWFyKHNlc3Npb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29udGV4dHMuZGVsZXRlKHNlc3Npb25JZClcbiAgfSxcbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUE7QUFDQSxJQUFNQSxRQUFRLEdBQUcsSUFBSUMsR0FBRyxDQUErQixDQUFDO0FBRXhELE9BQU8sSUFBTUMsa0JBQWtCLEdBQUc7RUFDaENDLEdBQUcsV0FBSEEsR0FBR0EsQ0FBQ0MsU0FBaUIsRUFBRUMsT0FBNkIsRUFBUTtJQUMxREwsUUFBUSxDQUFDRyxHQUFHLENBQUNDLFNBQVMsRUFBRUMsT0FBTyxDQUFDO0VBQ2xDLENBQUM7RUFDREMsR0FBRyxXQUFIQSxHQUFHQSxDQUFDRixTQUFpQixFQUErQjtJQUFBLElBQUFHLGFBQUE7SUFDbEQsUUFBQUEsYUFBQSxHQUFPUCxRQUFRLENBQUNNLEdBQUcsQ0FBQ0YsU0FBUyxDQUFDLGNBQUFHLGFBQUEsY0FBQUEsYUFBQSxHQUFJLElBQUk7RUFDeEMsQ0FBQztFQUNEQyxLQUFLLFdBQUxBLEtBQUtBLENBQUNKLFNBQWlCLEVBQVE7SUFDN0JKLFFBQVEsVUFBTyxDQUFDSSxTQUFTLENBQUM7RUFDNUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,57 @@
1
+ var audioContext = null;
2
+ var getAudioContext = function getAudioContext() {
3
+ if (typeof window === 'undefined') return null;
4
+ if (!audioContext) {
5
+ audioContext = new AudioContext();
6
+ }
7
+ return audioContext;
8
+ };
9
+ /**
10
+ * Dos notas ascendentes, envelope suave — aproximación al ding de Cursor al
11
+ * terminar una tarea (corto, limpio, no estridente).
12
+ */
13
+ var CURSOR_LIKE_CHIME = [{
14
+ frequency: 830,
15
+ startOffset: 0,
16
+ duration: 0.075,
17
+ peakGain: 0.055
18
+ }, {
19
+ frequency: 1046,
20
+ startOffset: 0.085,
21
+ duration: 0.095,
22
+ peakGain: 0.075
23
+ }];
24
+ var playChimeNote = function playChimeNote(ctx, note, baseTime) {
25
+ var start = baseTime + note.startOffset;
26
+ var oscillator = ctx.createOscillator();
27
+ var gain = ctx.createGain();
28
+ oscillator.type = 'sine';
29
+ oscillator.frequency.setValueAtTime(note.frequency, start);
30
+ gain.gain.setValueAtTime(0.0001, start);
31
+ gain.gain.exponentialRampToValueAtTime(note.peakGain, start + 0.01);
32
+ gain.gain.exponentialRampToValueAtTime(0.0001, start + note.duration);
33
+ oscillator.connect(gain);
34
+ gain.connect(ctx.destination);
35
+ oscillator.start(start);
36
+ oscillator.stop(start + note.duration + 0.025);
37
+ };
38
+
39
+ /** Sonido corto al terminar una sesión en background (sin asset externo). */
40
+ export var playSessionFinishedSound = function playSessionFinishedSound() {
41
+ try {
42
+ var ctx = getAudioContext();
43
+ if (!ctx) return;
44
+ if (ctx.state === 'suspended') {
45
+ ctx.resume()["catch"](function () {
46
+ // ignore
47
+ });
48
+ }
49
+ var baseTime = ctx.currentTime;
50
+ CURSOR_LIKE_CHIME.forEach(function (note) {
51
+ return playChimeNote(ctx, note, baseTime);
52
+ });
53
+ } catch (_unused) {
54
+ // Autoplay policy o AudioContext no disponible — ignorar.
55
+ }
56
+ };
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhdWRpb0NvbnRleHQiLCJnZXRBdWRpb0NvbnRleHQiLCJ3aW5kb3ciLCJBdWRpb0NvbnRleHQiLCJDVVJTT1JfTElLRV9DSElNRSIsImZyZXF1ZW5jeSIsInN0YXJ0T2Zmc2V0IiwiZHVyYXRpb24iLCJwZWFrR2FpbiIsInBsYXlDaGltZU5vdGUiLCJjdHgiLCJub3RlIiwiYmFzZVRpbWUiLCJzdGFydCIsIm9zY2lsbGF0b3IiLCJjcmVhdGVPc2NpbGxhdG9yIiwiZ2FpbiIsImNyZWF0ZUdhaW4iLCJ0eXBlIiwic2V0VmFsdWVBdFRpbWUiLCJleHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lIiwiY29ubmVjdCIsImRlc3RpbmF0aW9uIiwic3RvcCIsInBsYXlTZXNzaW9uRmluaXNoZWRTb3VuZCIsInN0YXRlIiwicmVzdW1lIiwiY3VycmVudFRpbWUiLCJmb3JFYWNoIiwiX3VudXNlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uTm90aWZpY2F0aW9uU291bmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsibGV0IGF1ZGlvQ29udGV4dDogQXVkaW9Db250ZXh0IHwgbnVsbCA9IG51bGxcblxuY29uc3QgZ2V0QXVkaW9Db250ZXh0ID0gKCk6IEF1ZGlvQ29udGV4dCB8IG51bGwgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBudWxsXG4gIGlmICghYXVkaW9Db250ZXh0KSB7XG4gICAgYXVkaW9Db250ZXh0ID0gbmV3IEF1ZGlvQ29udGV4dCgpXG4gIH1cbiAgcmV0dXJuIGF1ZGlvQ29udGV4dFxufVxuXG50eXBlIENoaW1lTm90ZSA9IHtcbiAgZnJlcXVlbmN5OiBudW1iZXJcbiAgc3RhcnRPZmZzZXQ6IG51bWJlclxuICBkdXJhdGlvbjogbnVtYmVyXG4gIHBlYWtHYWluOiBudW1iZXJcbn1cblxuLyoqXG4gKiBEb3Mgbm90YXMgYXNjZW5kZW50ZXMsIGVudmVsb3BlIHN1YXZlIOKAlCBhcHJveGltYWNpw7NuIGFsIGRpbmcgZGUgQ3Vyc29yIGFsXG4gKiB0ZXJtaW5hciB1bmEgdGFyZWEgKGNvcnRvLCBsaW1waW8sIG5vIGVzdHJpZGVudGUpLlxuICovXG5jb25zdCBDVVJTT1JfTElLRV9DSElNRTogQ2hpbWVOb3RlW10gPSBbXG4gIHsgZnJlcXVlbmN5OiA4MzAsIHN0YXJ0T2Zmc2V0OiAwLCBkdXJhdGlvbjogMC4wNzUsIHBlYWtHYWluOiAwLjA1NSB9LFxuICB7IGZyZXF1ZW5jeTogMTA0Niwgc3RhcnRPZmZzZXQ6IDAuMDg1LCBkdXJhdGlvbjogMC4wOTUsIHBlYWtHYWluOiAwLjA3NSB9LFxuXVxuXG5jb25zdCBwbGF5Q2hpbWVOb3RlID0gKGN0eDogQXVkaW9Db250ZXh0LCBub3RlOiBDaGltZU5vdGUsIGJhc2VUaW1lOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgY29uc3Qgc3RhcnQgPSBiYXNlVGltZSArIG5vdGUuc3RhcnRPZmZzZXRcbiAgY29uc3Qgb3NjaWxsYXRvciA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKClcbiAgY29uc3QgZ2FpbiA9IGN0eC5jcmVhdGVHYWluKClcblxuICBvc2NpbGxhdG9yLnR5cGUgPSAnc2luZSdcbiAgb3NjaWxsYXRvci5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUobm90ZS5mcmVxdWVuY3ksIHN0YXJ0KVxuXG4gIGdhaW4uZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLjAwMDEsIHN0YXJ0KVxuICBnYWluLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShub3RlLnBlYWtHYWluLCBzdGFydCArIDAuMDEpXG4gIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAwMSwgc3RhcnQgKyBub3RlLmR1cmF0aW9uKVxuXG4gIG9zY2lsbGF0b3IuY29ubmVjdChnYWluKVxuICBnYWluLmNvbm5lY3QoY3R4LmRlc3RpbmF0aW9uKVxuICBvc2NpbGxhdG9yLnN0YXJ0KHN0YXJ0KVxuICBvc2NpbGxhdG9yLnN0b3Aoc3RhcnQgKyBub3RlLmR1cmF0aW9uICsgMC4wMjUpXG59XG5cbi8qKiBTb25pZG8gY29ydG8gYWwgdGVybWluYXIgdW5hIHNlc2nDs24gZW4gYmFja2dyb3VuZCAoc2luIGFzc2V0IGV4dGVybm8pLiAqL1xuZXhwb3J0IGNvbnN0IHBsYXlTZXNzaW9uRmluaXNoZWRTb3VuZCA9ICgpOiB2b2lkID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjdHggPSBnZXRBdWRpb0NvbnRleHQoKVxuICAgIGlmICghY3R4KSByZXR1cm5cblxuICAgIGlmIChjdHguc3RhdGUgPT09ICdzdXNwZW5kZWQnKSB7XG4gICAgICBjdHgucmVzdW1lKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVRpbWUgPSBjdHguY3VycmVudFRpbWVcbiAgICBDVVJTT1JfTElLRV9DSElNRS5mb3JFYWNoKG5vdGUgPT4gcGxheUNoaW1lTm90ZShjdHgsIG5vdGUsIGJhc2VUaW1lKSlcbiAgfSBjYXRjaCB7XG4gICAgLy8gQXV0b3BsYXkgcG9saWN5IG8gQXVkaW9Db250ZXh0IG5vIGRpc3BvbmlibGUg4oCUIGlnbm9yYXIuXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsWUFBaUMsR0FBRyxJQUFJO0FBRTVDLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQSxFQUE4QjtFQUNqRCxJQUFJLE9BQU9DLE1BQU0sS0FBSyxXQUFXLEVBQUUsT0FBTyxJQUFJO0VBQzlDLElBQUksQ0FBQ0YsWUFBWSxFQUFFO0lBQ2pCQSxZQUFZLEdBQUcsSUFBSUcsWUFBWSxDQUFDLENBQUM7RUFDbkM7RUFDQSxPQUFPSCxZQUFZO0FBQ3JCLENBQUM7QUFTRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1JLGlCQUE4QixHQUFHLENBQ3JDO0VBQUVDLFNBQVMsRUFBRSxHQUFHO0VBQUVDLFdBQVcsRUFBRSxDQUFDO0VBQUVDLFFBQVEsRUFBRSxLQUFLO0VBQUVDLFFBQVEsRUFBRTtBQUFNLENBQUMsRUFDcEU7RUFBRUgsU0FBUyxFQUFFLElBQUk7RUFBRUMsV0FBVyxFQUFFLEtBQUs7RUFBRUMsUUFBUSxFQUFFLEtBQUs7RUFBRUMsUUFBUSxFQUFFO0FBQU0sQ0FBQyxDQUMxRTtBQUVELElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBSUMsR0FBaUIsRUFBRUMsSUFBZSxFQUFFQyxRQUFnQixFQUFXO0VBQ3BGLElBQU1DLEtBQUssR0FBR0QsUUFBUSxHQUFHRCxJQUFJLENBQUNMLFdBQVc7RUFDekMsSUFBTVEsVUFBVSxHQUFHSixHQUFHLENBQUNLLGdCQUFnQixDQUFDLENBQUM7RUFDekMsSUFBTUMsSUFBSSxHQUFHTixHQUFHLENBQUNPLFVBQVUsQ0FBQyxDQUFDO0VBRTdCSCxVQUFVLENBQUNJLElBQUksR0FBRyxNQUFNO0VBQ3hCSixVQUFVLENBQUNULFNBQVMsQ0FBQ2MsY0FBYyxDQUFDUixJQUFJLENBQUNOLFNBQVMsRUFBRVEsS0FBSyxDQUFDO0VBRTFERyxJQUFJLENBQUNBLElBQUksQ0FBQ0csY0FBYyxDQUFDLE1BQU0sRUFBRU4sS0FBSyxDQUFDO0VBQ3ZDRyxJQUFJLENBQUNBLElBQUksQ0FBQ0ksNEJBQTRCLENBQUNULElBQUksQ0FBQ0gsUUFBUSxFQUFFSyxLQUFLLEdBQUcsSUFBSSxDQUFDO0VBQ25FRyxJQUFJLENBQUNBLElBQUksQ0FBQ0ksNEJBQTRCLENBQUMsTUFBTSxFQUFFUCxLQUFLLEdBQUdGLElBQUksQ0FBQ0osUUFBUSxDQUFDO0VBRXJFTyxVQUFVLENBQUNPLE9BQU8sQ0FBQ0wsSUFBSSxDQUFDO0VBQ3hCQSxJQUFJLENBQUNLLE9BQU8sQ0FBQ1gsR0FBRyxDQUFDWSxXQUFXLENBQUM7RUFDN0JSLFVBQVUsQ0FBQ0QsS0FBSyxDQUFDQSxLQUFLLENBQUM7RUFDdkJDLFVBQVUsQ0FBQ1MsSUFBSSxDQUFDVixLQUFLLEdBQUdGLElBQUksQ0FBQ0osUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNoRCxDQUFDOztBQUVEO0FBQ0EsT0FBTyxJQUFNaUIsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBQSxFQUFlO0VBQ2xELElBQUk7SUFDRixJQUFNZCxHQUFHLEdBQUdULGVBQWUsQ0FBQyxDQUFDO0lBQzdCLElBQUksQ0FBQ1MsR0FBRyxFQUFFO0lBRVYsSUFBSUEsR0FBRyxDQUFDZSxLQUFLLEtBQUssV0FBVyxFQUFFO01BQzdCZixHQUFHLENBQUNnQixNQUFNLENBQUMsQ0FBQyxTQUFNLENBQUMsWUFBTTtRQUN2QjtNQUFBLENBQ0QsQ0FBQztJQUNKO0lBRUEsSUFBTWQsUUFBUSxHQUFHRixHQUFHLENBQUNpQixXQUFXO0lBQ2hDdkIsaUJBQWlCLENBQUN3QixPQUFPLENBQUMsVUFBQWpCLElBQUk7TUFBQSxPQUFJRixhQUFhLENBQUNDLEdBQUcsRUFBRUMsSUFBSSxFQUFFQyxRQUFRLENBQUM7SUFBQSxFQUFDO0VBQ3ZFLENBQUMsQ0FBQyxPQUFBaUIsT0FBQSxFQUFNO0lBQ047RUFBQTtBQUVKLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,110 @@
1
+ import i18n from '../../lang';
2
+ import { SECTIONS } from '../../constants/config';
3
+ import { formatChatListTitleMentions } from '../../utils/renderContextMentions';
4
+ import { ChatHistoryRole } from '../../types/Chat';
5
+ import { useChatsStore } from '../useChatsStore';
6
+ import { useSessionsStore } from './useSessionsStore';
7
+ import { activeView } from './activeView';
8
+ import { playSessionFinishedSound } from './sessionNotificationSound';
9
+ var initialized = false;
10
+ var resolveSessionNotificationTitle = function resolveSessionNotificationTitle(sessionId) {
11
+ var _chat$title, _meta$title, _userMessage$message;
12
+ var chat = useChatsStore.getState().chats.find(function (item) {
13
+ return item.sessionExternalId === sessionId;
14
+ });
15
+ if (chat !== null && chat !== void 0 && (_chat$title = chat.title) !== null && _chat$title !== void 0 && _chat$title.trim()) {
16
+ return formatChatListTitleMentions(chat.title);
17
+ }
18
+ var meta = useSessionsStore.getState().getMeta(sessionId);
19
+ if (meta !== null && meta !== void 0 && (_meta$title = meta.title) !== null && _meta$title !== void 0 && _meta$title.trim()) {
20
+ return meta.title.trim();
21
+ }
22
+ var messages = useSessionsStore.getState().getMessages(sessionId);
23
+ var userMessage = messages.find(function (msg) {
24
+ var _msg$user;
25
+ return msg.role === ChatHistoryRole.USER || ((_msg$user = msg.user) === null || _msg$user === void 0 ? void 0 : _msg$user.id) && msg.user.id !== 'assistant';
26
+ });
27
+ var raw = userMessage === null || userMessage === void 0 || (_userMessage$message = userMessage.message) === null || _userMessage$message === void 0 ? void 0 : _userMessage$message.trim();
28
+ if (raw) {
29
+ return raw.length > 60 ? "".concat(raw.slice(0, 60), "\u2026") : raw;
30
+ }
31
+ return i18n.t('conversations.emptyLabel', {
32
+ ns: SECTIONS.chatAI,
33
+ defaultValue: 'Conversation'
34
+ });
35
+ };
36
+ var buildNotificationMessage = function buildNotificationMessage(kind, title) {
37
+ var truncatedTitle = title.length > 48 ? "".concat(title.slice(0, 48), "\u2026") : title;
38
+ if (kind === 'approval_required') {
39
+ return i18n.t('conversations.sessionFinishedApproval', {
40
+ ns: SECTIONS.chatAI,
41
+ title: truncatedTitle,
42
+ defaultValue: '{{title}} requires your approval'
43
+ });
44
+ }
45
+ if (kind === 'error') {
46
+ return i18n.t('conversations.sessionFinishedError', {
47
+ ns: SECTIONS.chatAI,
48
+ title: truncatedTitle,
49
+ defaultValue: '{{title}} encountered an error'
50
+ });
51
+ }
52
+ return i18n.t('conversations.sessionFinished', {
53
+ ns: SECTIONS.chatAI,
54
+ title: truncatedTitle,
55
+ defaultValue: '{{title}} finished responding'
56
+ });
57
+ };
58
+ var showBrowserNotificationIfAllowed = function showBrowserNotificationIfAllowed(message) {
59
+ if (typeof window === 'undefined' || !('Notification' in window)) return;
60
+ if (Notification.permission !== 'granted') return;
61
+ if (!document.hidden) return;
62
+ try {
63
+ // eslint-disable-next-line no-new
64
+ new Notification('MAIA', {
65
+ body: message,
66
+ tag: 'maia-session-finished'
67
+ });
68
+ } catch (_unused) {
69
+ // ignore
70
+ }
71
+ };
72
+ var handleSessionFinishedEvent = function handleSessionFinishedEvent(event) {
73
+ var _ref = event,
74
+ detail = _ref.detail;
75
+ if (!(detail !== null && detail !== void 0 && detail.sessionId)) return;
76
+ playSessionFinishedSound();
77
+ var message = buildNotificationMessage(detail.kind, resolveSessionNotificationTitle(detail.sessionId));
78
+ document.dispatchEvent(new CustomEvent('snackbar-event', {
79
+ detail: {
80
+ show: true,
81
+ severity: detail.kind === 'error' ? 'error' : 'info',
82
+ message: message,
83
+ autoHideDuration: 5000
84
+ }
85
+ }));
86
+ showBrowserNotificationIfAllowed(message);
87
+ };
88
+
89
+ /** Registra el listener global (idempotente). Sobrevive al desmontaje del chat visible. */
90
+ export var ensureSessionNotificationsInitialized = function ensureSessionNotificationsInitialized() {
91
+ if (initialized || typeof document === 'undefined') return;
92
+ initialized = true;
93
+ document.addEventListener('maia-session-finished', handleSessionFinishedEvent);
94
+ };
95
+
96
+ /**
97
+ * Marca unread y emite evento solo si la sesión NO es la que el usuario está mirando.
98
+ * Toast + sonido los consume `ensureSessionNotificationsInitialized`.
99
+ */
100
+ export var notifySessionFinishedInBackground = function notifySessionFinishedInBackground(sessionId, kind) {
101
+ ensureSessionNotificationsInitialized();
102
+ if (activeView.is(sessionId)) return;
103
+ document.dispatchEvent(new CustomEvent('maia-session-finished', {
104
+ detail: {
105
+ sessionId: sessionId,
106
+ kind: kind
107
+ }
108
+ }));
109
+ };
110
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpMThuIiwiU0VDVElPTlMiLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJDaGF0SGlzdG9yeVJvbGUiLCJ1c2VDaGF0c1N0b3JlIiwidXNlU2Vzc2lvbnNTdG9yZSIsImFjdGl2ZVZpZXciLCJwbGF5U2Vzc2lvbkZpbmlzaGVkU291bmQiLCJpbml0aWFsaXplZCIsInJlc29sdmVTZXNzaW9uTm90aWZpY2F0aW9uVGl0bGUiLCJzZXNzaW9uSWQiLCJfY2hhdCR0aXRsZSIsIl9tZXRhJHRpdGxlIiwiX3VzZXJNZXNzYWdlJG1lc3NhZ2UiLCJjaGF0IiwiZ2V0U3RhdGUiLCJjaGF0cyIsImZpbmQiLCJpdGVtIiwic2Vzc2lvbkV4dGVybmFsSWQiLCJ0aXRsZSIsInRyaW0iLCJtZXRhIiwiZ2V0TWV0YSIsIm1lc3NhZ2VzIiwiZ2V0TWVzc2FnZXMiLCJ1c2VyTWVzc2FnZSIsIm1zZyIsIl9tc2ckdXNlciIsInJvbGUiLCJVU0VSIiwidXNlciIsImlkIiwicmF3IiwibWVzc2FnZSIsImxlbmd0aCIsImNvbmNhdCIsInNsaWNlIiwidCIsIm5zIiwiY2hhdEFJIiwiZGVmYXVsdFZhbHVlIiwiYnVpbGROb3RpZmljYXRpb25NZXNzYWdlIiwia2luZCIsInRydW5jYXRlZFRpdGxlIiwic2hvd0Jyb3dzZXJOb3RpZmljYXRpb25JZkFsbG93ZWQiLCJ3aW5kb3ciLCJOb3RpZmljYXRpb24iLCJwZXJtaXNzaW9uIiwiZG9jdW1lbnQiLCJoaWRkZW4iLCJib2R5IiwidGFnIiwiX3VudXNlZCIsImhhbmRsZVNlc3Npb25GaW5pc2hlZEV2ZW50IiwiZXZlbnQiLCJfcmVmIiwiZGV0YWlsIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50Iiwic2hvdyIsInNldmVyaXR5IiwiYXV0b0hpZGVEdXJhdGlvbiIsImVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQiLCJhZGRFdmVudExpc3RlbmVyIiwibm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kIiwiaXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvbk5vdGlmaWNhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vbGFuZydcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IENoYXRIaXN0b3J5Um9sZSB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyB1c2VDaGF0c1N0b3JlIH0gZnJvbSAnLi4vdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyBhY3RpdmVWaWV3IH0gZnJvbSAnLi9hY3RpdmVWaWV3J1xuaW1wb3J0IHsgcGxheVNlc3Npb25GaW5pc2hlZFNvdW5kIH0gZnJvbSAnLi9zZXNzaW9uTm90aWZpY2F0aW9uU291bmQnXG5pbXBvcnQgdHlwZSB7IE1haWFTZXNzaW9uRmluaXNoZWREZXRhaWwsIFNlc3Npb25GaW5pc2hlZEtpbmQgfSBmcm9tICcuL3Nlc3Npb25Ob3RpZmljYXRpb25zLnR5cGVzJ1xuXG5sZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZVxuXG5jb25zdCByZXNvbHZlU2Vzc2lvbk5vdGlmaWNhdGlvblRpdGxlID0gKHNlc3Npb25JZDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY2hhdCA9IHVzZUNoYXRzU3RvcmUuZ2V0U3RhdGUoKS5jaGF0cy5maW5kKGl0ZW0gPT4gaXRlbS5zZXNzaW9uRXh0ZXJuYWxJZCA9PT0gc2Vzc2lvbklkKVxuICBpZiAoY2hhdD8udGl0bGU/LnRyaW0oKSkge1xuICAgIHJldHVybiBmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMoY2hhdC50aXRsZSlcbiAgfVxuXG4gIGNvbnN0IG1ldGEgPSB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuZ2V0TWV0YShzZXNzaW9uSWQpXG4gIGlmIChtZXRhPy50aXRsZT8udHJpbSgpKSB7XG4gICAgcmV0dXJuIG1ldGEudGl0bGUudHJpbSgpXG4gIH1cblxuICBjb25zdCBtZXNzYWdlcyA9IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5nZXRNZXNzYWdlcyhzZXNzaW9uSWQpXG4gIGNvbnN0IHVzZXJNZXNzYWdlID0gbWVzc2FnZXMuZmluZChcbiAgICBtc2cgPT4gbXNnLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IChtc2cudXNlcj8uaWQgJiYgbXNnLnVzZXIuaWQgIT09ICdhc3Npc3RhbnQnKVxuICApXG4gIGNvbnN0IHJhdyA9IHVzZXJNZXNzYWdlPy5tZXNzYWdlPy50cmltKClcbiAgaWYgKHJhdykge1xuICAgIHJldHVybiByYXcubGVuZ3RoID4gNjAgPyBgJHtyYXcuc2xpY2UoMCwgNjApfeKApmAgOiByYXdcbiAgfVxuXG4gIHJldHVybiBpMThuLnQoJ2NvbnZlcnNhdGlvbnMuZW1wdHlMYWJlbCcsIHtcbiAgICBuczogU0VDVElPTlMuY2hhdEFJLFxuICAgIGRlZmF1bHRWYWx1ZTogJ0NvbnZlcnNhdGlvbicsXG4gIH0pXG59XG5cbmNvbnN0IGJ1aWxkTm90aWZpY2F0aW9uTWVzc2FnZSA9IChraW5kOiBTZXNzaW9uRmluaXNoZWRLaW5kLCB0aXRsZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdHJ1bmNhdGVkVGl0bGUgPSB0aXRsZS5sZW5ndGggPiA0OCA/IGAke3RpdGxlLnNsaWNlKDAsIDQ4KX3igKZgIDogdGl0bGVcblxuICBpZiAoa2luZCA9PT0gJ2FwcHJvdmFsX3JlcXVpcmVkJykge1xuICAgIHJldHVybiBpMThuLnQoJ2NvbnZlcnNhdGlvbnMuc2Vzc2lvbkZpbmlzaGVkQXBwcm92YWwnLCB7XG4gICAgICBuczogU0VDVElPTlMuY2hhdEFJLFxuICAgICAgdGl0bGU6IHRydW5jYXRlZFRpdGxlLFxuICAgICAgZGVmYXVsdFZhbHVlOiAne3t0aXRsZX19IHJlcXVpcmVzIHlvdXIgYXBwcm92YWwnLFxuICAgIH0pXG4gIH1cblxuICBpZiAoa2luZCA9PT0gJ2Vycm9yJykge1xuICAgIHJldHVybiBpMThuLnQoJ2NvbnZlcnNhdGlvbnMuc2Vzc2lvbkZpbmlzaGVkRXJyb3InLCB7XG4gICAgICBuczogU0VDVElPTlMuY2hhdEFJLFxuICAgICAgdGl0bGU6IHRydW5jYXRlZFRpdGxlLFxuICAgICAgZGVmYXVsdFZhbHVlOiAne3t0aXRsZX19IGVuY291bnRlcmVkIGFuIGVycm9yJyxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGkxOG4udCgnY29udmVyc2F0aW9ucy5zZXNzaW9uRmluaXNoZWQnLCB7XG4gICAgbnM6IFNFQ1RJT05TLmNoYXRBSSxcbiAgICB0aXRsZTogdHJ1bmNhdGVkVGl0bGUsXG4gICAgZGVmYXVsdFZhbHVlOiAne3t0aXRsZX19IGZpbmlzaGVkIHJlc3BvbmRpbmcnLFxuICB9KVxufVxuXG5jb25zdCBzaG93QnJvd3Nlck5vdGlmaWNhdGlvbklmQWxsb3dlZCA9IChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICEoJ05vdGlmaWNhdGlvbicgaW4gd2luZG93KSkgcmV0dXJuXG4gIGlmIChOb3RpZmljYXRpb24ucGVybWlzc2lvbiAhPT0gJ2dyYW50ZWQnKSByZXR1cm5cbiAgaWYgKCFkb2N1bWVudC5oaWRkZW4pIHJldHVyblxuXG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ld1xuICAgIG5ldyBOb3RpZmljYXRpb24oJ01BSUEnLCB7IGJvZHk6IG1lc3NhZ2UsIHRhZzogJ21haWEtc2Vzc2lvbi1maW5pc2hlZCcgfSlcbiAgfSBjYXRjaCB7XG4gICAgLy8gaWdub3JlXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlU2Vzc2lvbkZpbmlzaGVkRXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDxNYWlhU2Vzc2lvbkZpbmlzaGVkRGV0YWlsPlxuICBpZiAoIWRldGFpbD8uc2Vzc2lvbklkKSByZXR1cm5cblxuICBwbGF5U2Vzc2lvbkZpbmlzaGVkU291bmQoKVxuXG4gIGNvbnN0IG1lc3NhZ2UgPSBidWlsZE5vdGlmaWNhdGlvbk1lc3NhZ2UoZGV0YWlsLmtpbmQsIHJlc29sdmVTZXNzaW9uTm90aWZpY2F0aW9uVGl0bGUoZGV0YWlsLnNlc3Npb25JZCkpXG5cbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICBuZXcgQ3VzdG9tRXZlbnQoJ3NuYWNrYmFyLWV2ZW50Jywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgIHNldmVyaXR5OiBkZXRhaWwua2luZCA9PT0gJ2Vycm9yJyA/ICdlcnJvcicgOiAnaW5mbycsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGF1dG9IaWRlRHVyYXRpb246IDUwMDAsXG4gICAgICB9LFxuICAgIH0pXG4gIClcblxuICBzaG93QnJvd3Nlck5vdGlmaWNhdGlvbklmQWxsb3dlZChtZXNzYWdlKVxufVxuXG4vKiogUmVnaXN0cmEgZWwgbGlzdGVuZXIgZ2xvYmFsIChpZGVtcG90ZW50ZSkuIFNvYnJldml2ZSBhbCBkZXNtb250YWplIGRlbCBjaGF0IHZpc2libGUuICovXG5leHBvcnQgY29uc3QgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCA9ICgpOiB2b2lkID0+IHtcbiAgaWYgKGluaXRpYWxpemVkIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVyblxuICBpbml0aWFsaXplZCA9IHRydWVcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1zZXNzaW9uLWZpbmlzaGVkJywgaGFuZGxlU2Vzc2lvbkZpbmlzaGVkRXZlbnQpXG59XG5cbi8qKlxuICogTWFyY2EgdW5yZWFkIHkgZW1pdGUgZXZlbnRvIHNvbG8gc2kgbGEgc2VzacOzbiBOTyBlcyBsYSBxdWUgZWwgdXN1YXJpbyBlc3TDoSBtaXJhbmRvLlxuICogVG9hc3QgKyBzb25pZG8gbG9zIGNvbnN1bWUgYGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWRgLlxuICovXG5leHBvcnQgY29uc3Qgbm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kID0gKHNlc3Npb25JZDogc3RyaW5nLCBraW5kOiBTZXNzaW9uRmluaXNoZWRLaW5kKTogdm9pZCA9PiB7XG4gIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gIGlmIChhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHJldHVyblxuXG4gIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLXNlc3Npb24tZmluaXNoZWQnLCB7XG4gICAgICBkZXRhaWw6IHsgc2Vzc2lvbklkLCBraW5kIH0gc2F0aXNmaWVzIE1haWFTZXNzaW9uRmluaXNoZWREZXRhaWwsXG4gICAgfSlcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxJQUFJLE1BQU0sWUFBWTtBQUM3QixTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBQ2pELFNBQVNDLDJCQUEyQixRQUFRLG1DQUFtQztBQUMvRSxTQUFTQyxlQUFlLFFBQVEsa0JBQWtCO0FBQ2xELFNBQVNDLGFBQWEsUUFBUSxrQkFBa0I7QUFDaEQsU0FBU0MsZ0JBQWdCLFFBQVEsb0JBQW9CO0FBQ3JELFNBQVNDLFVBQVUsUUFBUSxjQUFjO0FBQ3pDLFNBQVNDLHdCQUF3QixRQUFRLDRCQUE0QjtBQUdyRSxJQUFJQyxXQUFXLEdBQUcsS0FBSztBQUV2QixJQUFNQywrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUFJQyxTQUFpQixFQUFhO0VBQUEsSUFBQUMs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
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25Ob3RpZmljYXRpb25zLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNlc3Npb25GaW5pc2hlZEtpbmQgPSAnY29tcGxldGUnIHwgJ2FwcHJvdmFsX3JlcXVpcmVkJyB8ICdlcnJvcidcblxuZXhwb3J0IHR5cGUgTWFpYVNlc3Npb25GaW5pc2hlZERldGFpbCA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAga2luZDogU2Vzc2lvbkZpbmlzaGVkS2luZFxufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119