@projectcor/maia-components 2.11.78-2 → 2.11.78-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 (63) hide show
  1. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +27 -0
  2. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +18 -0
  3. package/lib/components/atoms/OptionCorPermission/index.js +2 -0
  4. package/lib/components/atoms/Switch/Switch.js +27 -0
  5. package/lib/components/atoms/Switch/Switch.styles.js +22 -0
  6. package/lib/components/atoms/Switch/index.js +2 -0
  7. package/lib/components/atoms/icons/CorAccessIcon.js +41 -0
  8. package/lib/components/atoms/icons/index.js +2 -1
  9. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +71 -43
  10. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +23 -7
  11. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +7 -46
  12. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +5 -4
  13. package/lib/components/molecules/ChatFooter/ChatFooter.js +18 -6
  14. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.js +32 -0
  15. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.styles.js +14 -0
  16. package/lib/components/molecules/ChatFooter/styles.js +5 -1
  17. package/lib/components/molecules/Sidebar/Sidebar.js +42 -51
  18. package/lib/components/molecules/Sidebar/Sidebar.styles.js +6 -10
  19. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +16 -12
  20. package/lib/components/organisms/ChatAI/ChatAI.js +2 -10
  21. package/lib/hooks/useAgentModel/useCreateAgent.js +36 -13
  22. package/lib/hooks/useAgentModel/useUpdateAgent.js +34 -10
  23. package/lib/hooks/useChatManager/useChatManager.js +431 -456
  24. package/lib/hooks/useChatMessages/useChatMessages.js +249 -411
  25. package/lib/hooks/useChats/useChats.js +3 -8
  26. package/lib/hooks/useMentionAllowedTypes.js +12 -11
  27. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  28. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +518 -140
  29. package/lib/hooks/useStreamingMessage/index.js +3 -2
  30. package/lib/hooks/useStreamingMessage/streamingStore.js +69 -0
  31. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +17 -13
  32. package/lib/lang/br/index.js +20 -16
  33. package/lib/lang/en/index.js +18 -14
  34. package/lib/lang/es/index.js +18 -14
  35. package/lib/lang/fr/index.js +22 -19
  36. package/lib/services/maia/Agents/getAgentById.js +4 -2
  37. package/lib/services/maia/Agents/setAgentToolGroups.js +42 -0
  38. package/lib/store/chatsStore.types.js +1 -1
  39. package/lib/store/useChatsStore.js +9 -41
  40. package/lib/types/agentModal.js +1 -1
  41. package/lib/utils/corConnectorMentionTypes.js +10 -6
  42. package/lib/utils/normalizeAgentConnectors.js +39 -1
  43. package/package.json +1 -1
  44. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +0 -17
  45. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +0 -15
  46. package/lib/components/atoms/SessionGeneratingDot/index.js +0 -2
  47. package/lib/components/atoms/SessionUnreadDot/SessionUnreadDot.js +0 -12
  48. package/lib/components/atoms/SessionUnreadDot/SessionUnreadDot.styles.js +0 -8
  49. package/lib/components/atoms/SessionUnreadDot/index.js +0 -2
  50. package/lib/store/chatsSidebarOptimistic.js +0 -87
  51. package/lib/store/sessions/activeView.js +0 -22
  52. package/lib/store/sessions/index.js +0 -10
  53. package/lib/store/sessions/sessionHitlContext.js +0 -15
  54. package/lib/store/sessions/sessionNotificationSound.js +0 -57
  55. package/lib/store/sessions/sessionNotifications.js +0 -111
  56. package/lib/store/sessions/sessionNotifications.types.js +0 -2
  57. package/lib/store/sessions/sessionStreamManager.js +0 -585
  58. package/lib/store/sessions/sessionStreamingText.js +0 -80
  59. package/lib/store/sessions/sessionUnreadPersistence.js +0 -49
  60. package/lib/store/sessions/sessions.types.js +0 -35
  61. package/lib/store/sessions/useSessionMeta.js +0 -39
  62. package/lib/store/sessions/useSessionStreamingText.js +0 -18
  63. package/lib/store/sessions/useSessionsStore.js +0 -234
@@ -1,80 +0,0 @@
1
- /**
2
- * Store externo (module-level) para el texto en streaming, keyed por
3
- * `sessionId`. A diferencia del `streamingStore` legacy (un único mensaje),
4
- * acá conviven varias sesiones haciendo streaming a la vez.
5
- *
6
- * El texto vive fuera del array de `messages` para que solo el componente del
7
- * mensaje en streaming re-renderice (vía `useSyncExternalStore`), sin disparar
8
- * re-renders del árbol completo en cada token.
9
- */
10
-
11
- var EMPTY_SNAPSHOT = {
12
- placeholderId: null,
13
- text: ''
14
- };
15
- var snapshots = new Map();
16
- var listeners = new Set();
17
- var emitChange = function emitChange() {
18
- listeners.forEach(function (listener) {
19
- return listener();
20
- });
21
- };
22
- export var sessionStreamingText = {
23
- /** Inicia una sesión de streaming con su placeholder. */start: function start(sessionId, placeholderId) {
24
- snapshots.set(sessionId, {
25
- placeholderId: placeholderId,
26
- text: ''
27
- });
28
- emitChange();
29
- },
30
- /** Setea el texto en vivo de la sesión. */setText: function setText(sessionId, placeholderId, text) {
31
- var current = snapshots.get(sessionId);
32
- if (current && current.placeholderId === placeholderId && current.text === text) {
33
- return;
34
- }
35
- snapshots.set(sessionId, {
36
- placeholderId: placeholderId,
37
- text: text
38
- });
39
- emitChange();
40
- },
41
- /** Limpia el streaming de una sesión (fin, error, stop o approval). */clear: function clear(sessionId) {
42
- if (!snapshots.has(sessionId)) return;
43
- snapshots["delete"](sessionId);
44
- emitChange();
45
- },
46
- /** Limpia el streaming de todas las sesiones. */clearAll: function clearAll() {
47
- if (snapshots.size === 0) return;
48
- snapshots.clear();
49
- emitChange();
50
- },
51
- subscribe: function subscribe(listener) {
52
- listeners.add(listener);
53
- return function () {
54
- listeners["delete"](listener);
55
- };
56
- },
57
- /** Snapshot referencialmente estable por sesión mientras no cambie. */getSnapshot: function getSnapshot(sessionId) {
58
- var _snapshots$get;
59
- return (_snapshots$get = snapshots.get(sessionId)) !== null && _snapshots$get !== void 0 ? _snapshots$get : EMPTY_SNAPSHOT;
60
- },
61
- /**
62
- * Texto en vivo del placeholder indicado, buscando en todas las sesiones.
63
- * El placeholderId es único por stream, así que el lookup no necesita saber
64
- * a qué sesión pertenece (útil para renderizar sin pasar sessionId por props).
65
- */
66
- getTextByPlaceholder: function getTextByPlaceholder(placeholderId) {
67
- if (!placeholderId) return '';
68
- var found = '';
69
- snapshots.forEach(function (snapshot) {
70
- if (snapshot.placeholderId === placeholderId) {
71
- found = snapshot.text;
72
- }
73
- });
74
- return found;
75
- },
76
- getServerSnapshot: function getServerSnapshot() {
77
- return EMPTY_SNAPSHOT;
78
- }
79
- };
80
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFTVBUWV9TTkFQU0hPVCIsInBsYWNlaG9sZGVySWQiLCJ0ZXh0Iiwic25hcHNob3RzIiwiTWFwIiwibGlzdGVuZXJzIiwiU2V0IiwiZW1pdENoYW5nZSIsImZvckVhY2giLCJsaXN0ZW5lciIsInNlc3Npb25TdHJlYW1pbmdUZXh0Iiwic3RhcnQiLCJzZXNzaW9uSWQiLCJzZXQiLCJzZXRUZXh0IiwiY3VycmVudCIsImdldCIsImNsZWFyIiwiaGFzIiwiY2xlYXJBbGwiLCJzaXplIiwic3Vic2NyaWJlIiwiYWRkIiwiZ2V0U25hcHNob3QiLCJfc25hcHNob3RzJGdldCIsImdldFRleHRCeVBsYWNlaG9sZGVyIiwiZm91bmQiLCJzbmFwc2hvdCIsImdldFNlcnZlclNuYXBzaG90Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1pbmdUZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2Vzc2lvblN0cmVhbWluZ1NuYXBzaG90IH0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcblxuLyoqXG4gKiBTdG9yZSBleHRlcm5vIChtb2R1bGUtbGV2ZWwpIHBhcmEgZWwgdGV4dG8gZW4gc3RyZWFtaW5nLCBrZXllZCBwb3JcbiAqIGBzZXNzaW9uSWRgLiBBIGRpZmVyZW5jaWEgZGVsIGBzdHJlYW1pbmdTdG9yZWAgbGVnYWN5ICh1biDDum5pY28gbWVuc2FqZSksXG4gKiBhY8OhIGNvbnZpdmVuIHZhcmlhcyBzZXNpb25lcyBoYWNpZW5kbyBzdHJlYW1pbmcgYSBsYSB2ZXouXG4gKlxuICogRWwgdGV4dG8gdml2ZSBmdWVyYSBkZWwgYXJyYXkgZGUgYG1lc3NhZ2VzYCBwYXJhIHF1ZSBzb2xvIGVsIGNvbXBvbmVudGUgZGVsXG4gKiBtZW5zYWplIGVuIHN0cmVhbWluZyByZS1yZW5kZXJpY2UgKHbDrWEgYHVzZVN5bmNFeHRlcm5hbFN0b3JlYCksIHNpbiBkaXNwYXJhclxuICogcmUtcmVuZGVycyBkZWwgw6FyYm9sIGNvbXBsZXRvIGVuIGNhZGEgdG9rZW4uXG4gKi9cblxuY29uc3QgRU1QVFlfU05BUFNIT1Q6IFNlc3Npb25TdHJlYW1pbmdTbmFwc2hvdCA9IHsgcGxhY2Vob2xkZXJJZDogbnVsbCwgdGV4dDogJycgfVxuXG5jb25zdCBzbmFwc2hvdHMgPSBuZXcgTWFwPHN0cmluZywgU2Vzc2lvblN0cmVhbWluZ1NuYXBzaG90PigpXG5jb25zdCBsaXN0ZW5lcnMgPSBuZXcgU2V0PCgpID0+IHZvaWQ+KClcblxuY29uc3QgZW1pdENoYW5nZSA9ICgpID0+IHtcbiAgbGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIoKSlcbn1cblxuZXhwb3J0IGNvbnN0IHNlc3Npb25TdHJlYW1pbmdUZXh0ID0ge1xuICAvKiogSW5pY2lhIHVuYSBzZXNpw7NuIGRlIHN0cmVhbWluZyBjb24gc3UgcGxhY2Vob2xkZXIuICovXG4gIHN0YXJ0KHNlc3Npb25JZDogc3RyaW5nLCBwbGFjZWhvbGRlcklkOiBzdHJpbmcpIHtcbiAgICBzbmFwc2hvdHMuc2V0KHNlc3Npb25JZCwgeyBwbGFjZWhvbGRlcklkLCB0ZXh0OiAnJyB9KVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuICAvKiogU2V0ZWEgZWwgdGV4dG8gZW4gdml2byBkZSBsYSBzZXNpw7NuLiAqL1xuICBzZXRUZXh0KHNlc3Npb25JZDogc3RyaW5nLCBwbGFjZWhvbGRlcklkOiBzdHJpbmcsIHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBzbmFwc2hvdHMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50LnBsYWNlaG9sZGVySWQgPT09IHBsYWNlaG9sZGVySWQgJiYgY3VycmVudC50ZXh0ID09PSB0ZXh0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc25hcHNob3RzLnNldChzZXNzaW9uSWQsIHsgcGxhY2Vob2xkZXJJZCwgdGV4dCB9KVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuICAvKiogTGltcGlhIGVsIHN0cmVhbWluZyBkZSB1bmEgc2VzacOzbiAoZmluLCBlcnJvciwgc3RvcCBvIGFwcHJvdmFsKS4gKi9cbiAgY2xlYXIoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXNuYXBzaG90cy5oYXMoc2Vzc2lvbklkKSkgcmV0dXJuXG4gICAgc25hcHNob3RzLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG4gIC8qKiBMaW1waWEgZWwgc3RyZWFtaW5nIGRlIHRvZGFzIGxhcyBzZXNpb25lcy4gKi9cbiAgY2xlYXJBbGwoKSB7XG4gICAgaWYgKHNuYXBzaG90cy5zaXplID09PSAwKSByZXR1cm5cbiAgICBzbmFwc2hvdHMuY2xlYXIoKVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICgpID0+IHZvaWQpIHtcbiAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKVxuICAgIH1cbiAgfSxcbiAgLyoqIFNuYXBzaG90IHJlZmVyZW5jaWFsbWVudGUgZXN0YWJsZSBwb3Igc2VzacOzbiBtaWVudHJhcyBubyBjYW1iaWUuICovXG4gIGdldFNuYXBzaG90KHNlc3Npb25JZDogc3RyaW5nKTogU2Vzc2lvblN0cmVhbWluZ1NuYXBzaG90IHtcbiAgICByZXR1cm4gc25hcHNob3RzLmdldChzZXNzaW9uSWQpID8/IEVNUFRZX1NOQVBTSE9UXG4gIH0sXG4gIC8qKlxuICAgKiBUZXh0byBlbiB2aXZvIGRlbCBwbGFjZWhvbGRlciBpbmRpY2FkbywgYnVzY2FuZG8gZW4gdG9kYXMgbGFzIHNlc2lvbmVzLlxuICAgKiBFbCBwbGFjZWhvbGRlcklkIGVzIMO6bmljbyBwb3Igc3RyZWFtLCBhc8OtIHF1ZSBlbCBsb29rdXAgbm8gbmVjZXNpdGEgc2FiZXJcbiAgICogYSBxdcOpIHNlc2nDs24gcGVydGVuZWNlICjDunRpbCBwYXJhIHJlbmRlcml6YXIgc2luIHBhc2FyIHNlc3Npb25JZCBwb3IgcHJvcHMpLlxuICAgKi9cbiAgZ2V0VGV4dEJ5UGxhY2Vob2xkZXIocGxhY2Vob2xkZXJJZDogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCFwbGFjZWhvbGRlcklkKSByZXR1cm4gJydcbiAgICBsZXQgZm91bmQgPSAnJ1xuICAgIHNuYXBzaG90cy5mb3JFYWNoKHNuYXBzaG90ID0+IHtcbiAgICAgIGlmIChzbmFwc2hvdC5wbGFjZWhvbGRlcklkID09PSBwbGFjZWhvbGRlcklkKSB7XG4gICAgICAgIGZvdW5kID0gc25hcHNob3QudGV4dFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIGZvdW5kXG4gIH0sXG4gIGdldFNlcnZlclNuYXBzaG90KCk6IFNlc3Npb25TdHJlYW1pbmdTbmFwc2hvdCB7XG4gICAgcmV0dXJuIEVNUFRZX1NOQVBTSE9UXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiJBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNQSxjQUF3QyxHQUFHO0VBQUVDLGFBQWEsRUFBRSxJQUFJO0VBQUVDLElBQUksRUFBRTtBQUFHLENBQUM7QUFFbEYsSUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUcsQ0FBbUMsQ0FBQztBQUM3RCxJQUFNQyxTQUFTLEdBQUcsSUFBSUMsR0FBRyxDQUFhLENBQUM7QUFFdkMsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBUztFQUN2QkYsU0FBUyxDQUFDRyxPQUFPLENBQUMsVUFBQUMsUUFBUTtJQUFBLE9BQUlBLFFBQVEsQ0FBQyxDQUFDO0VBQUEsRUFBQztBQUMzQyxDQUFDO0FBRUQsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRztFQUNsQyx5REFDQUMsS0FBSyxXQUFMQSxLQUFLQSxDQUFDQyxTQUFpQixFQUFFWCxhQUFxQixFQUFFO0lBQzlDRSxTQUFTLENBQUNVLEdBQUcsQ0FBQ0QsU0FBUyxFQUFFO01BQUVYLGFBQWEsRUFBYkEsYUFBYTtNQUFFQyxJQUFJLEVBQUU7SUFBRyxDQUFDLENBQUM7SUFDckRLLFVBQVUsQ0FBQyxDQUFDO0VBQ2QsQ0FBQztFQUNELDJDQUNBTyxPQUFPLFdBQVBBLE9BQU9BLENBQUNGLFNBQWlCLEVBQUVYLGFBQXFCLEVBQUVDLElBQVksRUFBRTtJQUM5RCxJQUFNYSxPQUFPLEdBQUdaLFNBQVMsQ0FBQ2EsR0FBRyxDQUFDSixTQUFTLENBQUM7SUFDeEMsSUFBSUcsT0FBTyxJQUFJQSxPQUFPLENBQUNkLGFBQWEsS0FBS0EsYUFBYSxJQUFJYyxPQUFPLENBQUNiLElBQUksS0FBS0EsSUFBSSxFQUFFO01BQy9FO0lBQ0Y7SUFDQUMsU0FBUyxDQUFDVSxHQUFHLENBQUNELFNBQVMsRUFBRTtNQUFFWCxhQUFhLEVBQWJBLGFBQWE7TUFBRUMsSUFBSSxFQUFKQTtJQUFLLENBQUMsQ0FBQztJQUNqREssVUFBVSxDQUFDLENBQUM7RUFDZCxDQUFDO0VBQ0QsdUVBQ0FVLEtBQUssV0FBTEEsS0FBS0EsQ0FBQ0wsU0FBaUIsRUFBRTtJQUN2QixJQUFJLENBQUNULFNBQVMsQ0FBQ2UsR0FBRyxDQUFDTixTQUFTLENBQUMsRUFBRTtJQUMvQlQsU0FBUyxVQUFPLENBQUNTLFNBQVMsQ0FBQztJQUMzQkwsVUFBVSxDQUFDLENBQUM7RUFDZCxDQUFDO0VBQ0QsaURBQ0FZLFFBQVEsV0FBUkEsUUFBUUEsQ0FBQSxFQUFHO0lBQ1QsSUFBSWhCLFNBQVMsQ0FBQ2lCLElBQUksS0FBSyxDQUFDLEVBQUU7SUFDMUJqQixTQUFTLENBQUNjLEtBQUssQ0FBQyxDQUFDO0lBQ2pCVixVQUFVLENBQUMsQ0FBQztFQUNkLENBQUM7RUFDRGMsU0FBUyxXQUFUQSxTQUFTQSxDQUFDWixRQUFvQixFQUFFO0lBQzlCSixTQUFTLENBQUNpQixHQUFHLENBQUNiLFFBQVEsQ0FBQztJQUN2QixPQUFPLFlBQU07TUFDWEosU0FBUyxVQUFPLENBQUNJLFFBQVEsQ0FBQztJQUM1QixDQUFDO0VBQ0gsQ0FBQztFQUNELHVFQUNBYyxXQUFXLFdBQVhBLFdBQVdBLENBQUNYLFNBQWlCLEVBQTRCO0lBQUEsSUFBQVksY0FBQTtJQUN2RCxRQUFBQSxjQUFBLEdBQU9yQixTQUFTLENBQUNhLEdBQUcsQ0FBQ0osU0FBUyxDQUFDLGNBQUFZLGNBQUEsY0FBQUEsY0FBQSxHQUFJeEIsY0FBYztFQUNuRCxDQUFDO0VBQ0Q7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNFeUIsb0JBQW9CLFdBQXBCQSxvQkFBb0JBLENBQUN4QixhQUE0QixFQUFVO0lBQ3pELElBQUksQ0FBQ0EsYUFBYSxFQUFFLE9BQU8sRUFBRTtJQUM3QixJQUFJeUIsS0FBSyxHQUFHLEVBQUU7SUFDZHZCLFNBQVMsQ0FBQ0ssT0FBTyxDQUFDLFVBQUFtQixRQUFRLEVBQUk7TUFDNUIsSUFBSUEsUUFBUSxDQUFDMUIsYUFBYSxLQUFLQSxhQUFhLEVBQUU7UUFDNUN5QixLQUFLLEdBQUdDLFFBQVEsQ0FBQ3pCLElBQUk7TUFDdkI7SUFDRixDQUFDLENBQUM7SUFDRixPQUFPd0IsS0FBSztFQUNkLENBQUM7RUFDREUsaUJBQWlCLFdBQWpCQSxpQkFBaUJBLENBQUEsRUFBNkI7SUFDNUMsT0FBTzVCLGNBQWM7RUFDdkI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,49 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- var STORAGE_PREFIX = 'maia:sessions:unread';
3
- var scopeKey = null;
4
- var canUseStorage = function canUseStorage() {
5
- return typeof window !== 'undefined' && typeof localStorage !== 'undefined';
6
- };
7
- var readSet = function readSet() {
8
- if (!scopeKey || !canUseStorage()) return new Set();
9
- try {
10
- var raw = localStorage.getItem(scopeKey);
11
- if (!raw) return new Set();
12
- var parsed = JSON.parse(raw);
13
- if (!Array.isArray(parsed)) return new Set();
14
- return new Set(parsed.filter(function (id) {
15
- return typeof id === 'string' && id.length > 0;
16
- }));
17
- } catch (_unused) {
18
- return new Set();
19
- }
20
- };
21
- var writeSet = function writeSet(ids) {
22
- if (!scopeKey || !canUseStorage()) return;
23
- localStorage.setItem(scopeKey, JSON.stringify(_toConsumableArray(ids)));
24
- };
25
-
26
- /** Scope de persistencia por usuario (evita mezclar unread entre cuentas en el mismo browser). */
27
- export var initSessionUnreadPersistence = function initSessionUnreadPersistence(userId, companyId) {
28
- scopeKey = "".concat(STORAGE_PREFIX, ":").concat(companyId, ":").concat(userId);
29
- };
30
- export var isPersistedSessionUnread = function isPersistedSessionUnread(sessionId) {
31
- return readSet().has(sessionId);
32
- };
33
- export var getPersistedUnreadSessionIds = function getPersistedUnreadSessionIds() {
34
- return _toConsumableArray(readSet());
35
- };
36
- export var setPersistedSessionUnread = function setPersistedSessionUnread(sessionId, unread) {
37
- if (!sessionId) return;
38
- var ids = readSet();
39
- if (unread) {
40
- ids.add(sessionId);
41
- } else {
42
- ids["delete"](sessionId);
43
- }
44
- writeSet(ids);
45
- };
46
- export var removePersistedSessionUnread = function removePersistedSessionUnread(sessionId) {
47
- setPersistedSessionUnread(sessionId, false);
48
- };
49
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVE9SQUdFX1BSRUZJWCIsInNjb3BlS2V5IiwiY2FuVXNlU3RvcmFnZSIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsInJlYWRTZXQiLCJTZXQiLCJyYXciLCJnZXRJdGVtIiwicGFyc2VkIiwiSlNPTiIsInBhcnNlIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiaWQiLCJsZW5ndGgiLCJfdW51c2VkIiwid3JpdGVTZXQiLCJpZHMiLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaW5pdFNlc3Npb25VbnJlYWRQZXJzaXN0ZW5jZSIsInVzZXJJZCIsImNvbXBhbnlJZCIsImNvbmNhdCIsImlzUGVyc2lzdGVkU2Vzc2lvblVucmVhZCIsInNlc3Npb25JZCIsImhhcyIsImdldFBlcnNpc3RlZFVucmVhZFNlc3Npb25JZHMiLCJzZXRQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkIiwidW5yZWFkIiwiYWRkIiwicmVtb3ZlUGVyc2lzdGVkU2Vzc2lvblVucmVhZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uVW5yZWFkUGVyc2lzdGVuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU1RPUkFHRV9QUkVGSVggPSAnbWFpYTpzZXNzaW9uczp1bnJlYWQnXG5cbmxldCBzY29wZUtleTogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuY29uc3QgY2FuVXNlU3RvcmFnZSA9ICgpOiBib29sZWFuID0+IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnXG5cbmNvbnN0IHJlYWRTZXQgPSAoKTogU2V0PHN0cmluZz4gPT4ge1xuICBpZiAoIXNjb3BlS2V5IHx8ICFjYW5Vc2VTdG9yYWdlKCkpIHJldHVybiBuZXcgU2V0KClcblxuICB0cnkge1xuICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHNjb3BlS2V5KVxuICAgIGlmICghcmF3KSByZXR1cm4gbmV3IFNldCgpXG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpIGFzIHVua25vd25cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSkgcmV0dXJuIG5ldyBTZXQoKVxuICAgIHJldHVybiBuZXcgU2V0KHBhcnNlZC5maWx0ZXIoKGlkKTogaWQgaXMgc3RyaW5nID0+IHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgJiYgaWQubGVuZ3RoID4gMCkpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBuZXcgU2V0KClcbiAgfVxufVxuXG5jb25zdCB3cml0ZVNldCA9IChpZHM6IFNldDxzdHJpbmc+KTogdm9pZCA9PiB7XG4gIGlmICghc2NvcGVLZXkgfHwgIWNhblVzZVN0b3JhZ2UoKSkgcmV0dXJuXG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHNjb3BlS2V5LCBKU09OLnN0cmluZ2lmeShbLi4uaWRzXSkpXG59XG5cbi8qKiBTY29wZSBkZSBwZXJzaXN0ZW5jaWEgcG9yIHVzdWFyaW8gKGV2aXRhIG1lemNsYXIgdW5yZWFkIGVudHJlIGN1ZW50YXMgZW4gZWwgbWlzbW8gYnJvd3NlcikuICovXG5leHBvcnQgY29uc3QgaW5pdFNlc3Npb25VbnJlYWRQZXJzaXN0ZW5jZSA9ICh1c2VySWQ6IG51bWJlciwgY29tcGFueUlkOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgc2NvcGVLZXkgPSBgJHtTVE9SQUdFX1BSRUZJWH06JHtjb21wYW55SWR9OiR7dXNlcklkfWBcbn1cblxuZXhwb3J0IGNvbnN0IGlzUGVyc2lzdGVkU2Vzc2lvblVucmVhZCA9IChzZXNzaW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gcmVhZFNldCgpLmhhcyhzZXNzaW9uSWQpXG5cbmV4cG9ydCBjb25zdCBnZXRQZXJzaXN0ZWRVbnJlYWRTZXNzaW9uSWRzID0gKCk6IHN0cmluZ1tdID0+IFsuLi5yZWFkU2V0KCldXG5cbmV4cG9ydCBjb25zdCBzZXRQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkID0gKHNlc3Npb25JZDogc3RyaW5nLCB1bnJlYWQ6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgaWYgKCFzZXNzaW9uSWQpIHJldHVyblxuICBjb25zdCBpZHMgPSByZWFkU2V0KClcbiAgaWYgKHVucmVhZCkge1xuICAgIGlkcy5hZGQoc2Vzc2lvbklkKVxuICB9IGVsc2Uge1xuICAgIGlkcy5kZWxldGUoc2Vzc2lvbklkKVxuICB9XG4gIHdyaXRlU2V0KGlkcylcbn1cblxuZXhwb3J0IGNvbnN0IHJlbW92ZVBlcnNpc3RlZFNlc3Npb25VbnJlYWQgPSAoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgc2V0UGVyc2lzdGVkU2Vzc2lvblVucmVhZChzZXNzaW9uSWQsIGZhbHNlKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBTUEsY0FBYyxHQUFHLHNCQUFzQjtBQUU3QyxJQUFJQyxRQUF1QixHQUFHLElBQUk7QUFFbEMsSUFBTUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBO0VBQUEsT0FBa0IsT0FBT0MsTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPQyxZQUFZLEtBQUssV0FBVztBQUFBO0FBRXpHLElBQU1DLE9BQU8sR0FBRyxTQUFWQSxPQUFPQSxDQUFBLEVBQXNCO0VBQ2pDLElBQUksQ0FBQ0osUUFBUSxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJSSxHQUFHLENBQUMsQ0FBQztFQUVuRCxJQUFJO0lBQ0YsSUFBTUMsR0FBRyxHQUFHSCxZQUFZLENBQUNJLE9BQU8sQ0FBQ1AsUUFBUSxDQUFDO0lBQzFDLElBQUksQ0FBQ00sR0FBRyxFQUFFLE9BQU8sSUFBSUQsR0FBRyxDQUFDLENBQUM7SUFDMUIsSUFBTUcsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0osR0FBRyxDQUFZO0lBQ3pDLElBQUksQ0FBQ0ssS0FBSyxDQUFDQyxPQUFPLENBQUNKLE1BQU0sQ0FBQyxFQUFFLE9BQU8sSUFBSUgsR0FBRyxDQUFDLENBQUM7SUFDNUMsT0FBTyxJQUFJQSxHQUFHLENBQUNHLE1BQU0sQ0FBQ0ssTUFBTSxDQUFDLFVBQUNDLEVBQUU7TUFBQSxPQUFtQixPQUFPQSxFQUFFLEtBQUssUUFBUSxJQUFJQSxFQUFFLENBQUNDLE1BQU0sR0FBRyxDQUFDO0lBQUEsRUFBQyxDQUFDO0VBQzlGLENBQUMsQ0FBQyxPQUFBQyxPQUFBLEVBQU07SUFDTixPQUFPLElBQUlYLEdBQUcsQ0FBQyxDQUFDO0VBQ2xCO0FBQ0YsQ0FBQztBQUVELElBQU1ZLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJQyxHQUFnQixFQUFXO0VBQzNDLElBQUksQ0FBQ2xCLFFBQVEsSUFBSSxDQUFDQyxhQUFhLENBQUMsQ0FBQyxFQUFFO0VBQ25DRSxZQUFZLENBQUNnQixPQUFPLENBQUNuQixRQUFRLEVBQUVTLElBQUksQ0FBQ1csU0FBUyxDQUFBQyxrQkFBQSxDQUFLSCxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUM7O0FBRUQ7QUFDQSxPQUFPLElBQU1JLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQUlDLE1BQWMsRUFBRUMsU0FBaUIsRUFBVztFQUN2RnhCLFFBQVEsTUFBQXlCLE1BQUEsQ0FBTTFCLGNBQWMsT0FBQTBCLE1BQUEsQ0FBSUQsU0FBUyxPQUFBQyxNQUFBLENBQUlGLE1BQU0sQ0FBRTtBQUN2RCxDQUFDO0FBRUQsT0FBTyxJQUFNRyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJQyxTQUFpQjtFQUFBLE9BQWN2QixPQUFPLENBQUMsQ0FBQyxDQUFDd0IsR0FBRyxDQUFDRCxTQUFTLENBQUM7QUFBQTtBQUVoRyxPQUFPLElBQU1FLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQUE7RUFBQSxPQUFBUixrQkFBQSxDQUF1QmpCLE9BQU8sQ0FBQyxDQUFDO0FBQUEsQ0FBQztBQUUxRSxPQUFPLElBQU0wQix5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJSCxTQUFpQixFQUFFSSxNQUFlLEVBQVc7RUFDckYsSUFBSSxDQUFDSixTQUFTLEVBQUU7RUFDaEIsSUFBTVQsR0FBRyxHQUFHZCxPQUFPLENBQUMsQ0FBQztFQUNyQixJQUFJMkIsTUFBTSxFQUFFO0lBQ1ZiLEdBQUcsQ0FBQ2MsR0FBRyxDQUFDTCxTQUFTLENBQUM7RUFDcEIsQ0FBQyxNQUFNO0lBQ0xULEdBQUcsVUFBTyxDQUFDUyxTQUFTLENBQUM7RUFDdkI7RUFDQVYsUUFBUSxDQUFDQyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQsT0FBTyxJQUFNZSw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUFJTixTQUFpQixFQUFXO0VBQ3ZFRyx5QkFBeUIsQ0FBQ0gsU0FBUyxFQUFFLEtBQUssQ0FBQztBQUM3QyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,35 +0,0 @@
1
- /**
2
- * Estado de alto nivel de una sesión respecto al agente. Cada sesión
3
- * (thread/chat) tiene su propio ciclo de vida independiente, lo que permite
4
- * tener varias generando en paralelo.
5
- */
6
-
7
- /** Estados en los que la sesión está trabajando (mostramos indicador). */
8
- export var ACTIVE_SESSION_STATUSES = ['thinking', 'writing', 'awaiting_approval'];
9
- export var isActiveSessionStatus = function isActiveSessionStatus(status) {
10
- return status != null && ACTIVE_SESSION_STATUSES.includes(status);
11
- };
12
-
13
- /**
14
- * Metadata reactiva de una sesión (lo que la UI necesita para pintar estado,
15
- * indicadores y notificaciones). El texto en vivo NO vive acá: viaja por
16
- * `sessionStreamingText` para no re-renderizar listas en cada token.
17
- */
18
-
19
- /** Snapshot del texto en streaming de una sesión (hot path). */
20
-
21
- /** Payload consolidado que emite el manager al completar un stream. */
22
-
23
- /**
24
- * Callbacks por sesión para que `useChatManager` reaccione al ciclo de vida
25
- * del stream sin acoplar la lógica de mensajes / side-effects al manager.
26
- */
27
-
28
- /** Slice de mensajes por sesión (full store). */
29
-
30
- /** Contexto de conversación restaurable al reabrir una sesión cacheada. */
31
-
32
- /** Evento `maia-chat-session-meta` persistido para rehidratación sin refetch. */
33
-
34
- /** Cache en memoria de sesiones ya visitadas (evita refetch al volver). */
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBQ1RJVkVfU0VTU0lPTl9TVEFUVVNFUyIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsInN0YXR1cyIsImluY2x1ZGVzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25zLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2hhdE1lc3NhZ2UsIEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5cbi8qKlxuICogRXN0YWRvIGRlIGFsdG8gbml2ZWwgZGUgdW5hIHNlc2nDs24gcmVzcGVjdG8gYWwgYWdlbnRlLiBDYWRhIHNlc2nDs25cbiAqICh0aHJlYWQvY2hhdCkgdGllbmUgc3UgcHJvcGlvIGNpY2xvIGRlIHZpZGEgaW5kZXBlbmRpZW50ZSwgbG8gcXVlIHBlcm1pdGVcbiAqIHRlbmVyIHZhcmlhcyBnZW5lcmFuZG8gZW4gcGFyYWxlbG8uXG4gKi9cbmV4cG9ydCB0eXBlIFNlc3Npb25TdGF0dXMgPSAnaWRsZScgfCAndGhpbmtpbmcnIHwgJ3dyaXRpbmcnIHwgJ2F3YWl0aW5nX2FwcHJvdmFsJyB8ICdjb21wbGV0ZScgfCAnZXJyb3InIHwgJ2NhbmNlbGxlZCdcblxuLyoqIEVzdGFkb3MgZW4gbG9zIHF1ZSBsYSBzZXNpw7NuIGVzdMOhIHRyYWJhamFuZG8gKG1vc3RyYW1vcyBpbmRpY2Fkb3IpLiAqL1xuZXhwb3J0IGNvbnN0IEFDVElWRV9TRVNTSU9OX1NUQVRVU0VTOiByZWFkb25seSBTZXNzaW9uU3RhdHVzW10gPSBbJ3RoaW5raW5nJywgJ3dyaXRpbmcnLCAnYXdhaXRpbmdfYXBwcm92YWwnXVxuXG5leHBvcnQgY29uc3QgaXNBY3RpdmVTZXNzaW9uU3RhdHVzID0gKHN0YXR1czogU2Vzc2lvblN0YXR1cyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgc3RhdHVzICE9IG51bGwgJiYgQUNUSVZFX1NFU1NJT05fU1RBVFVTRVMuaW5jbHVkZXMoc3RhdHVzKVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uRXJyb3IgPSB7XG4gIHR5cGU/OiBzdHJpbmdcbiAgbWVzc2FnZT86IHN0cmluZ1xufSB8IG51bGxcblxuLyoqXG4gKiBNZXRhZGF0YSByZWFjdGl2YSBkZSB1bmEgc2VzacOzbiAobG8gcXVlIGxhIFVJIG5lY2VzaXRhIHBhcmEgcGludGFyIGVzdGFkbyxcbiAqIGluZGljYWRvcmVzIHkgbm90aWZpY2FjaW9uZXMpLiBFbCB0ZXh0byBlbiB2aXZvIE5PIHZpdmUgYWPDoTogdmlhamEgcG9yXG4gKiBgc2Vzc2lvblN0cmVhbWluZ1RleHRgIHBhcmEgbm8gcmUtcmVuZGVyaXphciBsaXN0YXMgZW4gY2FkYSB0b2tlbi5cbiAqL1xuZXhwb3J0IHR5cGUgU2Vzc2lvblJ1bnRpbWVNZXRhID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBzdGF0dXM6IFNlc3Npb25TdGF0dXNcbiAgLyoqIEZpZWwgYSBgc2V0TG9hZGluZ2AgZGVsIG1vdG9yIG9yaWdpbmFsOiBoYXkgdW5hIHJlcXVlc3QgZW4gdnVlbG8uICovXG4gIGlzTG9hZGluZzogYm9vbGVhblxuICAvKiogRmllbCBhIGBzZXRJc1dyaXRpbmdgOiB5YSBsbGVnYXJvbiB0b2tlbnMgeSBzZSBlc3TDoSBwaW50YW5kbyB0ZXh0by4gKi9cbiAgaXNXcml0aW5nOiBib29sZWFuXG4gIHN0cmVhbUFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSB8IG51bGxcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyB8IG51bGxcbiAgLyoqIElkIGRlbCBtZW5zYWplIHBsYWNlaG9sZGVyIHF1ZSBzZSBlc3TDoSBwaW50YW5kbyBtaWVudHJhcyBoYWNlIHN0cmVhbWluZy4gKi9cbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nIHwgbnVsbFxuICAvKiogTGEgc2VzacOzbiB0ZXJtaW7DsyBmdWVyYSBkZSBsYSB2aXN0YSBhY3RpdmEgeSBhw7puIG5vIHNlIGFicmnDsy4gKi9cbiAgdW5yZWFkOiBib29sZWFuXG4gIHN0YXJ0ZWRBdDogbnVtYmVyIHwgbnVsbFxuICBmaW5pc2hlZEF0OiBudW1iZXIgfCBudWxsXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nIHwgbnVsbFxuICBlcnJvcjogU2Vzc2lvbkVycm9yXG59XG5cbi8qKiBTbmFwc2hvdCBkZWwgdGV4dG8gZW4gc3RyZWFtaW5nIGRlIHVuYSBzZXNpw7NuIChob3QgcGF0aCkuICovXG5leHBvcnQgdHlwZSBTZXNzaW9uU3RyZWFtaW5nU25hcHNob3QgPSB7XG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZyB8IG51bGxcbiAgdGV4dDogc3RyaW5nXG59XG5cbi8qKiBQYXlsb2FkIGNvbnNvbGlkYWRvIHF1ZSBlbWl0ZSBlbCBtYW5hZ2VyIGFsIGNvbXBsZXRhciB1biBzdHJlYW0uICovXG5leHBvcnQgdHlwZSBTZXNzaW9uRmluaXNoUGF5bG9hZCA9IHtcbiAgY29udGVudDogc3RyaW5nXG4gIHNvdXJjZXM6IHVua25vd25cbiAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmdcbiAgYXR0YWNobWVudHM6IHVua25vd25bXSB8IG51bGxcbiAgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdIHwgbnVsbFxuICBjb21wbGV0ZWRBZ2VudElkOiBzdHJpbmcgfCBudWxsXG4gIHJlc29sdmVkQ29udGV4dDogdW5rbm93blxufVxuXG4vKipcbiAqIENhbGxiYWNrcyBwb3Igc2VzacOzbiBwYXJhIHF1ZSBgdXNlQ2hhdE1hbmFnZXJgIHJlYWNjaW9uZSBhbCBjaWNsbyBkZSB2aWRhXG4gKiBkZWwgc3RyZWFtIHNpbiBhY29wbGFyIGxhIGzDs2dpY2EgZGUgbWVuc2FqZXMgLyBzaWRlLWVmZmVjdHMgYWwgbWFuYWdlci5cbiAqL1xuZXhwb3J0IHR5cGUgU2Vzc2lvblN0cmVhbUNhbGxiYWNrcyA9IHtcbiAgb25TdHJlYW1VcGRhdGU/OiAoY29udGVudDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uU3RhcnRXcml0aW5nPzogKCkgPT4gdm9pZFxuICBvbkZpbmlzaFN0cmVhbT86IChwYXlsb2FkOiBTZXNzaW9uRmluaXNoUGF5bG9hZCkgPT4gdm9pZFxuICBvblN0b3A/OiAoKSA9PiB2b2lkXG4gIG9uRXJyb3I/OiAoZXJyb3JUeXBlPzogc3RyaW5nLCBlcnJvck1lc3NhZ2U/OiBzdHJpbmcpID0+IHZvaWRcbiAgb25BcHByb3ZhbFJlcXVpcmVkPzogKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFN0YXJ0U3RyZWFtUmVzdWx0ID0geyBzdGFydGVkOiB0cnVlIH0gfCB7IHN0YXJ0ZWQ6IGZhbHNlOyByZWFzb246ICdsaW1pdCcgfCAnYWxyZWFkeV9hY3RpdmUnIH1cblxuLyoqIFNsaWNlIGRlIG1lbnNhamVzIHBvciBzZXNpw7NuIChmdWxsIHN0b3JlKS4gKi9cbmV4cG9ydCB0eXBlIFNlc3Npb25NZXNzYWdlc01hcCA9IFJlY29yZDxzdHJpbmcsIENoYXRNZXNzYWdlW10+XG5cbi8qKiBDb250ZXh0byBkZSBjb252ZXJzYWNpw7NuIHJlc3RhdXJhYmxlIGFsIHJlYWJyaXIgdW5hIHNlc2nDs24gY2FjaGVhZGEuICovXG5leHBvcnQgdHlwZSBTZXNzaW9uQ29udmVyc2F0aW9uTWV0YSA9IHtcbiAgcHJvamVjdElkTWVzc2FnZT86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbj86IHN0cmluZyB8IG51bGxcbiAgY2xpZW50SWRGcm9tU2Vzc2lvbj86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgY2xpZW50TmFtZUZyb21TZXNzaW9uPzogc3RyaW5nIHwgbnVsbFxuICB0YXNrSWRGcm9tU2Vzc2lvbj86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgdGFza05hbWVGcm9tU2Vzc2lvbj86IHN0cmluZyB8IG51bGxcbn1cblxuLyoqIEV2ZW50byBgbWFpYS1jaGF0LXNlc3Npb24tbWV0YWAgcGVyc2lzdGlkbyBwYXJhIHJlaGlkcmF0YWNpw7NuIHNpbiByZWZldGNoLiAqL1xuZXhwb3J0IHR5cGUgU2Vzc2lvbk1ldGFFdmVudERldGFpbCA9IHtcbiAgY2hhdElkOiBzdHJpbmdcbiAgYWdlbnRUeXBlPzogc3RyaW5nXG4gIGFnZW50RW50aXR5Pzogc3RyaW5nXG4gIHByb2plY3RJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBjbGllbnROYW1lPzogc3RyaW5nIHwgbnVsbFxuICB0YXNrSWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHRhc2tOYW1lPzogc3RyaW5nIHwgbnVsbFxufVxuXG4vKiogQ2FjaGUgZW4gbWVtb3JpYSBkZSBzZXNpb25lcyB5YSB2aXNpdGFkYXMgKGV2aXRhIHJlZmV0Y2ggYWwgdm9sdmVyKS4gKi9cbmV4cG9ydCB0eXBlIFNlc3Npb25WaWV3Q2FjaGUgPSB7XG4gIGh5ZHJhdGVkRnJvbUFwaTogYm9vbGVhblxuICBsYXN0RXZhbHVhdGVkS2V5OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgY29udmVyc2F0aW9uTWV0YTogU2Vzc2lvbkNvbnZlcnNhdGlvbk1ldGEgfCBudWxsXG4gIHNlc3Npb25NZXRhRXZlbnQ6IFNlc3Npb25NZXRhRXZlbnREZXRhaWwgfCBudWxsXG4gIGFnZW50U25hcHNob3Q6IEFnZW50IHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uVmlld0NhY2hlTWFwID0gUmVjb3JkPHN0cmluZywgU2Vzc2lvblZpZXdDYWNoZT5cbiJdLCJtYXBwaW5ncyI6IkFBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBLE9BQU8sSUFBTUEsdUJBQWlELEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixDQUFDO0FBRTdHLE9BQU8sSUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUMsTUFBaUM7RUFBQSxPQUNyRUEsTUFBTSxJQUFJLElBQUksSUFBSUYsdUJBQXVCLENBQUNHLFFBQVEsQ0FBQ0QsTUFBTSxDQUFDO0FBQUE7O0FBTzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBc0JBOztBQU1BOztBQVdBO0FBQ0E7QUFDQTtBQUNBOztBQVlBOztBQUdBOztBQVVBOztBQWFBIiwiaWdub3JlTGlzdCI6W119
@@ -1,39 +0,0 @@
1
- import { useSessionsStore } from './useSessionsStore';
2
- import { isActiveSessionStatus } from './sessions.types';
3
-
4
- /** Metadata reactiva de una sesión (o undefined si no existe). */
5
- export var useSessionMeta = function useSessionMeta(sessionId) {
6
- return useSessionsStore(function (state) {
7
- return sessionId ? state.meta[sessionId] : undefined;
8
- });
9
- };
10
-
11
- /** Estado de streaming de la sesión activa, compatible con el motor anterior. */
12
- export var useSessionStreamState = function useSessionStreamState(sessionId) {
13
- var _meta$isLoading, _meta$isWriting, _meta$loadingMessage, _meta$streamActivity;
14
- var meta = useSessionMeta(sessionId);
15
- return {
16
- isLoading: (_meta$isLoading = meta === null || meta === void 0 ? void 0 : meta.isLoading) !== null && _meta$isLoading !== void 0 ? _meta$isLoading : false,
17
- isWriting: (_meta$isWriting = meta === null || meta === void 0 ? void 0 : meta.isWriting) !== null && _meta$isWriting !== void 0 ? _meta$isWriting : false,
18
- loadingMessage: (_meta$loadingMessage = meta === null || meta === void 0 ? void 0 : meta.loadingMessage) !== null && _meta$loadingMessage !== void 0 ? _meta$loadingMessage : null,
19
- streamActivity: (_meta$streamActivity = meta === null || meta === void 0 ? void 0 : meta.streamActivity) !== null && _meta$streamActivity !== void 0 ? _meta$streamActivity : null
20
- };
21
- };
22
-
23
- /** Ids de sesiones que están generando (para indicadores / notificaciones). */
24
- export var useActiveSessionIds = function useActiveSessionIds() {
25
- return useSessionsStore(function (state) {
26
- return Object.values(state.meta).filter(function (meta) {
27
- return isActiveSessionStatus(meta.status);
28
- }).map(function (meta) {
29
- return meta.sessionId;
30
- });
31
- });
32
- };
33
-
34
- /** True si la sesión está generando (thinking / writing / awaiting approval). */
35
- export var useIsSessionGenerating = function useIsSessionGenerating(sessionId) {
36
- var meta = useSessionMeta(sessionId);
37
- return isActiveSessionStatus(meta === null || meta === void 0 ? void 0 : meta.status);
38
- };
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTZXNzaW9uc1N0b3JlIiwiaXNBY3RpdmVTZXNzaW9uU3RhdHVzIiwidXNlU2Vzc2lvbk1ldGEiLCJzZXNzaW9uSWQiLCJzdGF0ZSIsIm1ldGEiLCJ1bmRlZmluZWQiLCJ1c2VTZXNzaW9uU3RyZWFtU3RhdGUiLCJfbWV0YSRpc0xvYWRpbmciLCJfbWV0YSRpc1dyaXRpbmciLCJfbWV0YSRsb2FkaW5nTWVzc2FnZSIsIl9tZXRhJHN0cmVhbUFjdGl2aXR5IiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVzZUFjdGl2ZVNlc3Npb25JZHMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJmaWx0ZXIiLCJzdGF0dXMiLCJtYXAiLCJ1c2VJc1Nlc3Npb25HZW5lcmF0aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25NZXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgdHlwZSB7IFNlc3Npb25SdW50aW1lTWV0YSB9IGZyb20gJy4vc2Vzc2lvbnMudHlwZXMnXG5pbXBvcnQgeyBpc0FjdGl2ZVNlc3Npb25TdGF0dXMgfSBmcm9tICcuL3Nlc3Npb25zLnR5cGVzJ1xuXG4vKiogTWV0YWRhdGEgcmVhY3RpdmEgZGUgdW5hIHNlc2nDs24gKG8gdW5kZWZpbmVkIHNpIG5vIGV4aXN0ZSkuICovXG5leHBvcnQgY29uc3QgdXNlU2Vzc2lvbk1ldGEgPSAoc2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogU2Vzc2lvblJ1bnRpbWVNZXRhIHwgdW5kZWZpbmVkID0+XG4gIHVzZVNlc3Npb25zU3RvcmUoc3RhdGUgPT4gKHNlc3Npb25JZCA/IHN0YXRlLm1ldGFbc2Vzc2lvbklkXSA6IHVuZGVmaW5lZCkpXG5cbi8qKiBFc3RhZG8gZGUgc3RyZWFtaW5nIGRlIGxhIHNlc2nDs24gYWN0aXZhLCBjb21wYXRpYmxlIGNvbiBlbCBtb3RvciBhbnRlcmlvci4gKi9cbmV4cG9ydCBjb25zdCB1c2VTZXNzaW9uU3RyZWFtU3RhdGUgPSAoXG4gIHNlc3Npb25JZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKToge1xuICBpc0xvYWRpbmc6IGJvb2xlYW5cbiAgaXNXcml0aW5nOiBib29sZWFuXG4gIGxvYWRpbmdNZXNzYWdlOiBzdHJpbmcgfCBudWxsXG4gIHN0cmVhbUFjdGl2aXR5OiBTZXNzaW9uUnVudGltZU1ldGFbJ3N0cmVhbUFjdGl2aXR5J11cbn0gPT4ge1xuICBjb25zdCBtZXRhID0gdXNlU2Vzc2lvbk1ldGEoc2Vzc2lvbklkKVxuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZzogbWV0YT8uaXNMb2FkaW5nID8/IGZhbHNlLFxuICAgIGlzV3JpdGluZzogbWV0YT8uaXNXcml0aW5nID8/IGZhbHNlLFxuICAgIGxvYWRpbmdNZXNzYWdlOiBtZXRhPy5sb2FkaW5nTWVzc2FnZSA/PyBudWxsLFxuICAgIHN0cmVhbUFjdGl2aXR5OiBtZXRhPy5zdHJlYW1BY3Rpdml0eSA/PyBudWxsLFxuICB9XG59XG5cbi8qKiBJZHMgZGUgc2VzaW9uZXMgcXVlIGVzdMOhbiBnZW5lcmFuZG8gKHBhcmEgaW5kaWNhZG9yZXMgLyBub3RpZmljYWNpb25lcykuICovXG5leHBvcnQgY29uc3QgdXNlQWN0aXZlU2Vzc2lvbklkcyA9ICgpOiBzdHJpbmdbXSA9PlxuICB1c2VTZXNzaW9uc1N0b3JlKHN0YXRlID0+XG4gICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhKVxuICAgICAgLmZpbHRlcihtZXRhID0+IGlzQWN0aXZlU2Vzc2lvblN0YXR1cyhtZXRhLnN0YXR1cykpXG4gICAgICAubWFwKG1ldGEgPT4gbWV0YS5zZXNzaW9uSWQpXG4gIClcblxuLyoqIFRydWUgc2kgbGEgc2VzacOzbiBlc3TDoSBnZW5lcmFuZG8gKHRoaW5raW5nIC8gd3JpdGluZyAvIGF3YWl0aW5nIGFwcHJvdmFsKS4gKi9cbmV4cG9ydCBjb25zdCB1c2VJc1Nlc3Npb25HZW5lcmF0aW5nID0gKHNlc3Npb25JZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBtZXRhID0gdXNlU2Vzc2lvbk1ldGEoc2Vzc2lvbklkKVxuICByZXR1cm4gaXNBY3RpdmVTZXNzaW9uU3RhdHVzKG1ldGE/LnN0YXR1cylcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQWdCLFFBQVEsb0JBQW9CO0FBRXJELFNBQVNDLHFCQUFxQixRQUFRLGtCQUFrQjs7QUFFeEQ7QUFDQSxPQUFPLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSUMsU0FBb0M7RUFBQSxPQUNqRUgsZ0JBQWdCLENBQUMsVUFBQUksS0FBSztJQUFBLE9BQUtELFNBQVMsR0FBR0MsS0FBSyxDQUFDQyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxHQUFHRyxTQUFTO0VBQUEsQ0FBQyxDQUFDO0FBQUE7O0FBRTVFO0FBQ0EsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUNoQ0osU0FBb0MsRUFNakM7RUFBQSxJQUFBSyxlQUFBLEVBQUFDLGVBQUEsRUFBQUMsb0JBQUEsRUFBQUMsb0JBQUE7RUFDSCxJQUFNTixJQUFJLEdBQUdILGNBQWMsQ0FBQ0MsU0FBUyxDQUFDO0VBQ3RDLE9BQU87SUFDTFMsU0FBUyxHQUFBSixlQUFBLEdBQUVILElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFTyxTQUFTLGNBQUFKLGVBQUEsY0FBQUEsZUFBQSxHQUFJLEtBQUs7SUFDbkNLLFNBQVMsR0FBQUosZUFBQSxHQUFFSixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRVEsU0FBUyxjQUFBSixlQUFBLGNBQUFBLGVBQUEsR0FBSSxLQUFLO0lBQ25DSyxjQUFjLEdBQUFKLG9CQUFBLEdBQUVMLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFUyxjQUFjLGNBQUFKLG9CQUFBLGNBQUFBLG9CQUFBLEdBQUksSUFBSTtJQUM1Q0ssY0FBYyxHQUFBSixvQkFBQSxHQUFFTixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRVUsY0FBYyxjQUFBSixvQkFBQSxjQUFBQSxvQkFBQSxHQUFJO0VBQzFDLENBQUM7QUFDSCxDQUFDOztBQUVEO0FBQ0EsT0FBTyxJQUFNSyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFBO0VBQUEsT0FDOUJoQixnQkFBZ0IsQ0FBQyxVQUFBSSxLQUFLO0lBQUEsT0FDcEJhLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDZCxLQUFLLENBQUNDLElBQUksQ0FBQyxDQUN0QmMsTUFBTSxDQUFDLFVBQUFkLElBQUk7TUFBQSxPQUFJSixxQkFBcUIsQ0FBQ0ksSUFBSSxDQUFDZSxNQUFNLENBQUM7SUFBQSxFQUFDLENBQ2xEQyxHQUFHLENBQUMsVUFBQWhCLElBQUk7TUFBQSxPQUFJQSxJQUFJLENBQUNGLFNBQVM7SUFBQSxFQUFDO0VBQUEsQ0FDaEMsQ0FBQztBQUFBOztBQUVIO0FBQ0EsT0FBTyxJQUFNbUIsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBSW5CLFNBQW9DLEVBQWM7RUFDdkYsSUFBTUUsSUFBSSxHQUFHSCxjQUFjLENBQUNDLFNBQVMsQ0FBQztFQUN0QyxPQUFPRixxQkFBcUIsQ0FBQ0ksSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVlLE1BQU0sQ0FBQztBQUM1QyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,18 +0,0 @@
1
- import { useCallback, useSyncExternalStore } from 'react';
2
- import { sessionStreamingText } from './sessionStreamingText';
3
-
4
- /**
5
- * Devuelve el texto en streaming de una sesión para un placeholder dado.
6
- * Solo re-renderiza el componente del mensaje en streaming de esa sesión.
7
- */
8
- export var useSessionStreamingText = function useSessionStreamingText(sessionId, placeholderId) {
9
- var getSnapshot = useCallback(function () {
10
- if (!sessionId) return sessionStreamingText.getServerSnapshot();
11
- return sessionStreamingText.getSnapshot(sessionId);
12
- }, [sessionId]);
13
- var snapshot = useSyncExternalStore(sessionStreamingText.subscribe, getSnapshot, sessionStreamingText.getServerSnapshot);
14
- if (!sessionId || !placeholderId) return '';
15
- if (snapshot.placeholderId !== placeholderId) return '';
16
- return snapshot.text;
17
- };
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN5bmNFeHRlcm5hbFN0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uU3RyZWFtaW5nVGV4dCIsInNlc3Npb25JZCIsInBsYWNlaG9sZGVySWQiLCJnZXRTbmFwc2hvdCIsImdldFNlcnZlclNuYXBzaG90Iiwic25hcHNob3QiLCJzdWJzY3JpYmUiLCJ0ZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25TdHJlYW1pbmdUZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTeW5jRXh0ZXJuYWxTdG9yZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbWluZ1RleHQgfSBmcm9tICcuL3Nlc3Npb25TdHJlYW1pbmdUZXh0J1xuXG4vKipcbiAqIERldnVlbHZlIGVsIHRleHRvIGVuIHN0cmVhbWluZyBkZSB1bmEgc2VzacOzbiBwYXJhIHVuIHBsYWNlaG9sZGVyIGRhZG8uXG4gKiBTb2xvIHJlLXJlbmRlcml6YSBlbCBjb21wb25lbnRlIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBkZSBlc2Egc2VzacOzbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVNlc3Npb25TdHJlYW1pbmdUZXh0ID0gKFxuICBzZXNzaW9uSWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGdldFNuYXBzaG90ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghc2Vzc2lvbklkKSByZXR1cm4gc2Vzc2lvblN0cmVhbWluZ1RleHQuZ2V0U2VydmVyU25hcHNob3QoKVxuICAgIHJldHVybiBzZXNzaW9uU3RyZWFtaW5nVGV4dC5nZXRTbmFwc2hvdChzZXNzaW9uSWQpXG4gIH0sIFtzZXNzaW9uSWRdKVxuXG4gIGNvbnN0IHNuYXBzaG90ID0gdXNlU3luY0V4dGVybmFsU3RvcmUoXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3Vic2NyaWJlLFxuICAgIGdldFNuYXBzaG90LFxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmdldFNlcnZlclNuYXBzaG90XG4gIClcblxuICBpZiAoIXNlc3Npb25JZCB8fCAhcGxhY2Vob2xkZXJJZCkgcmV0dXJuICcnXG4gIGlmIChzbmFwc2hvdC5wbGFjZWhvbGRlcklkICE9PSBwbGFjZWhvbGRlcklkKSByZXR1cm4gJydcbiAgcmV0dXJuIHNuYXBzaG90LnRleHRcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsV0FBVyxFQUFFQyxvQkFBb0IsUUFBUSxPQUFPO0FBQ3pELFNBQVNDLG9CQUFvQixRQUFRLHdCQUF3Qjs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQ2xDQyxTQUFvQyxFQUNwQ0MsYUFBd0MsRUFDN0I7RUFDWCxJQUFNQyxXQUFXLEdBQUdOLFdBQVcsQ0FBQyxZQUFNO0lBQ3BDLElBQUksQ0FBQ0ksU0FBUyxFQUFFLE9BQU9GLG9CQUFvQixDQUFDSyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9ELE9BQU9MLG9CQUFvQixDQUFDSSxXQUFXLENBQUNGLFNBQVMsQ0FBQztFQUNwRCxDQUFDLEVBQUUsQ0FBQ0EsU0FBUyxDQUFDLENBQUM7RUFFZixJQUFNSSxRQUFRLEdBQUdQLG9CQUFvQixDQUNuQ0Msb0JBQW9CLENBQUNPLFNBQVMsRUFDOUJILFdBQVcsRUFDWEosb0JBQW9CLENBQUNLLGlCQUN2QixDQUFDO0VBRUQsSUFBSSxDQUFDSCxTQUFTLElBQUksQ0FBQ0MsYUFBYSxFQUFFLE9BQU8sRUFBRTtFQUMzQyxJQUFJRyxRQUFRLENBQUNILGFBQWEsS0FBS0EsYUFBYSxFQUFFLE9BQU8sRUFBRTtFQUN2RCxPQUFPRyxRQUFRLENBQUNFLElBQUk7QUFDdEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,234 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
- /* eslint-disable import/no-extraneous-dependencies */
6
- import { create } from 'zustand';
7
- import { isActiveSessionStatus } from './sessions.types';
8
- import { getPersistedUnreadSessionIds, isPersistedSessionUnread, removePersistedSessionUnread, setPersistedSessionUnread } from './sessionUnreadPersistence';
9
- var createInitialMeta = function createInitialMeta(sessionId) {
10
- return {
11
- sessionId: sessionId,
12
- status: 'idle',
13
- isLoading: false,
14
- isWriting: false,
15
- streamActivity: null,
16
- loadingMessage: null,
17
- placeholderId: null,
18
- unread: false,
19
- startedAt: null,
20
- finishedAt: null,
21
- error: null
22
- };
23
- };
24
- export var useSessionsStore = create(function (set, get) {
25
- return {
26
- meta: {},
27
- messages: {},
28
- viewCache: {},
29
- ensureSession: function ensureSession(sessionId) {
30
- if (get().meta[sessionId]) return;
31
- var initialMeta = createInitialMeta(sessionId);
32
- if (isPersistedSessionUnread(sessionId)) {
33
- initialMeta.unread = true;
34
- }
35
- set(function (state) {
36
- return {
37
- meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, initialMeta))
38
- };
39
- });
40
- },
41
- getMeta: function getMeta(sessionId) {
42
- return get().meta[sessionId];
43
- },
44
- patchMeta: function patchMeta(sessionId, patch) {
45
- return set(function (state) {
46
- var _state$meta$sessionId;
47
- var current = (_state$meta$sessionId = state.meta[sessionId]) !== null && _state$meta$sessionId !== void 0 ? _state$meta$sessionId : createInitialMeta(sessionId);
48
- return {
49
- meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), patch)))
50
- };
51
- });
52
- },
53
- setStatus: function setStatus(sessionId, status) {
54
- return set(function (state) {
55
- var _state$meta$sessionId2;
56
- var current = (_state$meta$sessionId2 = state.meta[sessionId]) !== null && _state$meta$sessionId2 !== void 0 ? _state$meta$sessionId2 : createInitialMeta(sessionId);
57
- var isTerminal = status === 'complete' || status === 'error' || status === 'cancelled';
58
- return {
59
- meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread(_objectSpread({}, current), {}, {
60
- status: status
61
- }, status !== 'idle' && current.startedAt == null ? {
62
- startedAt: Date.now()
63
- } : {}), isTerminal ? {
64
- finishedAt: Date.now()
65
- } : {})))
66
- };
67
- });
68
- },
69
- setActivity: function setActivity(sessionId, activity, loadingMessage) {
70
- return set(function (state) {
71
- var _state$meta$sessionId3, _activity$message;
72
- var current = (_state$meta$sessionId3 = state.meta[sessionId]) !== null && _state$meta$sessionId3 !== void 0 ? _state$meta$sessionId3 : createInitialMeta(sessionId);
73
- return {
74
- meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), {}, {
75
- streamActivity: activity,
76
- loadingMessage: loadingMessage !== undefined ? loadingMessage : (_activity$message = activity === null || activity === void 0 ? void 0 : activity.message) !== null && _activity$message !== void 0 ? _activity$message : null
77
- })))
78
- };
79
- });
80
- },
81
- setError: function setError(sessionId, error) {
82
- return set(function (state) {
83
- var _state$meta$sessionId4;
84
- var current = (_state$meta$sessionId4 = state.meta[sessionId]) !== null && _state$meta$sessionId4 !== void 0 ? _state$meta$sessionId4 : createInitialMeta(sessionId);
85
- return {
86
- meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), {}, {
87
- error: error
88
- })))
89
- };
90
- });
91
- },
92
- markUnread: function markUnread(sessionId, unread) {
93
- setPersistedSessionUnread(sessionId, unread);
94
- set(function (state) {
95
- var _state$meta$sessionId5;
96
- var current = (_state$meta$sessionId5 = state.meta[sessionId]) !== null && _state$meta$sessionId5 !== void 0 ? _state$meta$sessionId5 : createInitialMeta(sessionId);
97
- return {
98
- meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), {}, {
99
- unread: unread
100
- })))
101
- };
102
- });
103
- },
104
- hydratePersistedUnreadSessions: function hydratePersistedUnreadSessions() {
105
- getPersistedUnreadSessionIds().forEach(function (sessionId) {
106
- var existing = get().meta[sessionId];
107
- if (existing) {
108
- if (!existing.unread) {
109
- set(function (state) {
110
- return {
111
- meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, existing), {}, {
112
- unread: true
113
- })))
114
- };
115
- });
116
- }
117
- return;
118
- }
119
- get().ensureSession(sessionId);
120
- });
121
- },
122
- getActiveSessionIds: function getActiveSessionIds() {
123
- return Object.values(get().meta).filter(function (meta) {
124
- return isActiveSessionStatus(meta.status);
125
- }).map(function (meta) {
126
- return meta.sessionId;
127
- });
128
- },
129
- getActiveCount: function getActiveCount() {
130
- return Object.values(get().meta).filter(function (meta) {
131
- return isActiveSessionStatus(meta.status);
132
- }).length;
133
- },
134
- removeSession: function removeSession(sessionId) {
135
- removePersistedSessionUnread(sessionId);
136
- set(function (state) {
137
- var nextMeta = _objectSpread({}, state.meta);
138
- var nextMessages = _objectSpread({}, state.messages);
139
- var nextViewCache = _objectSpread({}, state.viewCache);
140
- delete nextMeta[sessionId];
141
- delete nextMessages[sessionId];
142
- delete nextViewCache[sessionId];
143
- return {
144
- meta: nextMeta,
145
- messages: nextMessages,
146
- viewCache: nextViewCache
147
- };
148
- });
149
- },
150
- resetAll: function resetAll() {
151
- return set({
152
- meta: {},
153
- messages: {},
154
- viewCache: {}
155
- });
156
- },
157
- setMessages: function setMessages(sessionId, messages) {
158
- return set(function (state) {
159
- return {
160
- messages: _objectSpread(_objectSpread({}, state.messages), {}, _defineProperty({}, sessionId, messages))
161
- };
162
- });
163
- },
164
- getMessages: function getMessages(sessionId) {
165
- var _get$messages$session;
166
- return (_get$messages$session = get().messages[sessionId]) !== null && _get$messages$session !== void 0 ? _get$messages$session : [];
167
- },
168
- addMessage: function addMessage(sessionId, message) {
169
- return set(function (state) {
170
- var _state$messages$sessi;
171
- var prev = (_state$messages$sessi = state.messages[sessionId]) !== null && _state$messages$sessi !== void 0 ? _state$messages$sessi : [];
172
- var existingIndex = prev.findIndex(function (msg) {
173
- return msg.id === message.id;
174
- });
175
- if (existingIndex >= 0) {
176
- var next = _toConsumableArray(prev);
177
- next[existingIndex] = message;
178
- return {
179
- messages: _objectSpread(_objectSpread({}, state.messages), {}, _defineProperty({}, sessionId, next))
180
- };
181
- }
182
- return {
183
- messages: _objectSpread(_objectSpread({}, state.messages), {}, _defineProperty({}, sessionId, [].concat(_toConsumableArray(prev), [message])))
184
- };
185
- });
186
- },
187
- removeMessage: function removeMessage(sessionId, messageId) {
188
- return set(function (state) {
189
- var prev = state.messages[sessionId];
190
- if (!prev) return {};
191
- return {
192
- messages: _objectSpread(_objectSpread({}, state.messages), {}, _defineProperty({}, sessionId, prev.filter(function (msg) {
193
- return msg.id !== messageId;
194
- })))
195
- };
196
- });
197
- },
198
- getViewCache: function getViewCache(sessionId) {
199
- return get().viewCache[sessionId];
200
- },
201
- setViewCache: function setViewCache(sessionId, cache) {
202
- return set(function (state) {
203
- return {
204
- viewCache: _objectSpread(_objectSpread({}, state.viewCache), {}, _defineProperty({}, sessionId, cache))
205
- };
206
- });
207
- },
208
- patchViewCache: function patchViewCache(sessionId, patch) {
209
- return set(function (state) {
210
- var _state$viewCache$sess;
211
- var current = (_state$viewCache$sess = state.viewCache[sessionId]) !== null && _state$viewCache$sess !== void 0 ? _state$viewCache$sess : {
212
- hydratedFromApi: true,
213
- lastEvaluatedKey: 0,
214
- conversationMeta: null,
215
- sessionMetaEvent: null,
216
- agentSnapshot: null
217
- };
218
- return {
219
- viewCache: _objectSpread(_objectSpread({}, state.viewCache), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), patch)))
220
- };
221
- });
222
- },
223
- isSessionHydrated: function isSessionHydrated(sessionId) {
224
- var _get$viewCache$sessio;
225
- return ((_get$viewCache$sessio = get().viewCache[sessionId]) === null || _get$viewCache$sessio === void 0 ? void 0 : _get$viewCache$sessio.hydratedFromApi) === true;
226
- },
227
- canRestoreSession: function canRestoreSession(sessionId) {
228
- var _get$messages$session2, _get$messages$session3;
229
- var cache = get().viewCache[sessionId];
230
- return (cache === null || cache === void 0 ? void 0 : cache.hydratedFromApi) === true && ((_get$messages$session2 = (_get$messages$session3 = get().messages[sessionId]) === null || _get$messages$session3 === void 0 ? void 0 : _get$messages$session3.length) !== null && _get$messages$session2 !== void 0 ? _get$messages$session2 : 0) > 0;
231
- }
232
- };
233
- });
234
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGUiLCJpc0FjdGl2ZVNlc3Npb25TdGF0dXMiLCJnZXRQZXJzaXN0ZWRVbnJlYWRTZXNzaW9uSWRzIiwiaXNQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkIiwicmVtb3ZlUGVyc2lzdGVkU2Vzc2lvblVucmVhZCIsInNldFBlcnNpc3RlZFNlc3Npb25VbnJlYWQiLCJjcmVhdGVJbml0aWFsTWV0YSIsInNlc3Npb25JZCIsInN0YXR1cyIsImlzTG9hZGluZyIsImlzV3JpdGluZyIsInN0cmVhbUFjdGl2aXR5IiwibG9hZGluZ01lc3NhZ2UiLCJwbGFjZWhvbGRlcklkIiwidW5yZWFkIiwic3RhcnRlZEF0IiwiZmluaXNoZWRBdCIsImVycm9yIiwidXNlU2Vzc2lvbnNTdG9yZSIsInNldCIsImdldCIsIm1ldGEiLCJtZXNzYWdlcyIsInZpZXdDYWNoZSIsImVuc3VyZVNlc3Npb24iLCJpbml0aWFsTWV0YSIsInN0YXRlIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE1ldGEiLCJwYXRjaE1ldGEiLCJwYXRjaCIsIl9zdGF0ZSRtZXRhJHNlc3Npb25JZCIsImN1cnJlbnQiLCJzZXRTdGF0dXMiLCJfc3RhdGUkbWV0YSRzZXNzaW9uSWQyIiwiaXNUZXJtaW5hbCIsIkRhdGUiLCJub3ciLCJzZXRBY3Rpdml0eSIsImFjdGl2aXR5IiwiX3N0YXRlJG1ldGEkc2Vzc2lvbklkMyIsIl9hY3Rpdml0eSRtZXNzYWdlIiwidW5kZWZpbmVkIiwibWVzc2FnZSIsInNldEVycm9yIiwiX3N0YXRlJG1ldGEkc2Vzc2lvbklkNCIsIm1hcmtVbnJlYWQiLCJfc3RhdGUkbWV0YSRzZXNzaW9uSWQ1IiwiaHlkcmF0ZVBlcnNpc3RlZFVucmVhZFNlc3Npb25zIiwiZm9yRWFjaCIsImV4aXN0aW5nIiwiZ2V0QWN0aXZlU2Vzc2lvbklkcyIsIk9iamVjdCIsInZhbHVlcyIsImZpbHRlciIsIm1hcCIsImdldEFjdGl2ZUNvdW50IiwibGVuZ3RoIiwicmVtb3ZlU2Vzc2lvbiIsIm5leHRNZXRhIiwibmV4dE1lc3NhZ2VzIiwibmV4dFZpZXdDYWNoZSIsInJlc2V0QWxsIiwic2V0TWVzc2FnZXMiLCJnZXRNZXNzYWdlcyIsIl9nZXQkbWVzc2FnZXMkc2Vzc2lvbiIsImFkZE1lc3NhZ2UiLCJfc3RhdGUkbWVzc2FnZXMkc2Vzc2kiLCJwcmV2IiwiZXhpc3RpbmdJbmRleCIsImZpbmRJbmRleCIsIm1zZyIsImlkIiwibmV4dCIsIl90b0NvbnN1bWFibGVBcnJheSIsImNvbmNhdCIsInJlbW92ZU1lc3NhZ2UiLCJtZXNzYWdlSWQiLCJnZXRWaWV3Q2FjaGUiLCJzZXRWaWV3Q2FjaGUiLCJjYWNoZSIsInBhdGNoVmlld0NhY2hlIiwiX3N0YXRlJHZpZXdDYWNoZSRzZXNzIiwiaHlkcmF0ZWRGcm9tQXBpIiwibGFzdEV2YWx1YXRlZEtleSIsImNvbnZlcnNhdGlvbk1ldGEiLCJzZXNzaW9uTWV0YUV2ZW50IiwiYWdlbnRTbmFwc2hvdCIsImlzU2Vzc2lvbkh5ZHJhdGVkIiwiX2dldCR2aWV3Q2FjaGUkc2Vzc2lvIiwiY2FuUmVzdG9yZVNlc3Npb24iLCJfZ2V0JG1lc3NhZ2VzJHNlc3Npb24yIiwiX2dldCRtZXNzYWdlcyRzZXNzaW9uMyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uc1N0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgY3JlYXRlIH0gZnJvbSAnenVzdGFuZCdcbmltcG9ydCB0eXBlIHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUge1xuICBTZXNzaW9uRXJyb3IsXG4gIFNlc3Npb25NZXNzYWdlc01hcCxcbiAgU2Vzc2lvblJ1bnRpbWVNZXRhLFxuICBTZXNzaW9uU3RhdHVzLFxuICBTZXNzaW9uVmlld0NhY2hlLFxuICBTZXNzaW9uVmlld0NhY2hlTWFwLFxufSBmcm9tICcuL3Nlc3Npb25zLnR5cGVzJ1xuaW1wb3J0IHsgaXNBY3RpdmVTZXNzaW9uU3RhdHVzIH0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcbmltcG9ydCB7XG4gIGdldFBlcnNpc3RlZFVucmVhZFNlc3Npb25JZHMsXG4gIGlzUGVyc2lzdGVkU2Vzc2lvblVucmVhZCxcbiAgcmVtb3ZlUGVyc2lzdGVkU2Vzc2lvblVucmVhZCxcbiAgc2V0UGVyc2lzdGVkU2Vzc2lvblVucmVhZCxcbn0gZnJvbSAnLi9zZXNzaW9uVW5yZWFkUGVyc2lzdGVuY2UnXG5cbmNvbnN0IGNyZWF0ZUluaXRpYWxNZXRhID0gKHNlc3Npb25JZDogc3RyaW5nKTogU2Vzc2lvblJ1bnRpbWVNZXRhID0+ICh7XG4gIHNlc3Npb25JZCxcbiAgc3RhdHVzOiAnaWRsZScsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGlzV3JpdGluZzogZmFsc2UsXG4gIHN0cmVhbUFjdGl2aXR5OiBudWxsLFxuICBsb2FkaW5nTWVzc2FnZTogbnVsbCxcbiAgcGxhY2Vob2xkZXJJZDogbnVsbCxcbiAgdW5yZWFkOiBmYWxzZSxcbiAgc3RhcnRlZEF0OiBudWxsLFxuICBmaW5pc2hlZEF0OiBudWxsLFxuICBlcnJvcjogbnVsbCxcbn0pXG5cbnR5cGUgU2Vzc2lvbnNTdGF0ZSA9IHtcbiAgLyoqIE1ldGFkYXRhIHJlYWN0aXZhIGRlIGNhZGEgc2VzacOzbiAoZXN0YWRvLCBhY3RpdmlkYWQsIHVucmVhZCwgZXRjLikuICovXG4gIG1ldGE6IFJlY29yZDxzdHJpbmcsIFNlc3Npb25SdW50aW1lTWV0YT5cbiAgLyoqIE1lbnNhamVzIGNvbW1pdGVhZG9zIHBvciBzZXNpw7NuIChmdWxsIHN0b3JlKS4gKi9cbiAgbWVzc2FnZXM6IFNlc3Npb25NZXNzYWdlc01hcFxuICAvKiogQ2FjaGUgZGUgc2VzaW9uZXMgdmlzaXRhZGFzIChwYWdpbmFjacOzbiwgY29udGV4dG8sIGFnZW50ZSkuICovXG4gIHZpZXdDYWNoZTogU2Vzc2lvblZpZXdDYWNoZU1hcFxufVxuXG50eXBlIFNlc3Npb25zQWN0aW9ucyA9IHtcbiAgZW5zdXJlU2Vzc2lvbjogKHNlc3Npb25JZDogc3RyaW5nKSA9PiB2b2lkXG4gIGdldE1ldGE6IChzZXNzaW9uSWQ6IHN0cmluZykgPT4gU2Vzc2lvblJ1bnRpbWVNZXRhIHwgdW5kZWZpbmVkXG4gIHBhdGNoTWV0YTogKHNlc3Npb25JZDogc3RyaW5nLCBwYXRjaDogUGFydGlhbDxTZXNzaW9uUnVudGltZU1ldGE+KSA9PiB2b2lkXG4gIHNldFN0YXR1czogKHNlc3Npb25JZDogc3RyaW5nLCBzdGF0dXM6IFNlc3Npb25TdGF0dXMpID0+IHZvaWRcbiAgc2V0QWN0aXZpdHk6IChzZXNzaW9uSWQ6IHN0cmluZywgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCwgbG9hZGluZ01lc3NhZ2U/OiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkXG4gIHNldEVycm9yOiAoc2Vzc2lvbklkOiBzdHJpbmcsIGVycm9yOiBTZXNzaW9uRXJyb3IpID0+IHZvaWRcbiAgbWFya1VucmVhZDogKHNlc3Npb25JZDogc3RyaW5nLCB1bnJlYWQ6IGJvb2xlYW4pID0+IHZvaWRcbiAgaHlkcmF0ZVBlcnNpc3RlZFVucmVhZFNlc3Npb25zOiAoKSA9PiB2b2lkXG4gIGdldEFjdGl2ZVNlc3Npb25JZHM6ICgpID0+IHN0cmluZ1tdXG4gIGdldEFjdGl2ZUNvdW50OiAoKSA9PiBudW1iZXJcbiAgcmVtb3ZlU2Vzc2lvbjogKHNlc3Npb25JZDogc3RyaW5nKSA9PiB2b2lkXG4gIHJlc2V0QWxsOiAoKSA9PiB2b2lkXG5cbiAgc2V0TWVzc2FnZXM6IChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZXM6IENoYXRNZXNzYWdlW10pID0+IHZvaWRcbiAgZ2V0TWVzc2FnZXM6IChzZXNzaW9uSWQ6IHN0cmluZykgPT4gQ2hhdE1lc3NhZ2VbXVxuICBhZGRNZXNzYWdlOiAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2U6IENoYXRNZXNzYWdlKSA9PiB2b2lkXG4gIHJlbW92ZU1lc3NhZ2U6IChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcpID0+IHZvaWRcblxuICBnZXRWaWV3Q2FjaGU6IChzZXNzaW9uSWQ6IHN0cmluZykgPT4gU2Vzc2lvblZpZXdDYWNoZSB8IHVuZGVmaW5lZFxuICBzZXRWaWV3Q2FjaGU6IChzZXNzaW9uSWQ6IHN0cmluZywgY2FjaGU6IFNlc3Npb25WaWV3Q2FjaGUpID0+IHZvaWRcbiAgcGF0Y2hWaWV3Q2FjaGU6IChzZXNzaW9uSWQ6IHN0cmluZywgcGF0Y2g6IFBhcnRpYWw8U2Vzc2lvblZpZXdDYWNoZT4pID0+IHZvaWRcbiAgaXNTZXNzaW9uSHlkcmF0ZWQ6IChzZXNzaW9uSWQ6IHN0cmluZykgPT4gYm9vbGVhblxuICBjYW5SZXN0b3JlU2Vzc2lvbjogKHNlc3Npb25JZDogc3RyaW5nKSA9PiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCB1c2VTZXNzaW9uc1N0b3JlID0gY3JlYXRlPFNlc3Npb25zU3RhdGUgJiBTZXNzaW9uc0FjdGlvbnM+KChzZXQsIGdldCkgPT4gKHtcbiAgbWV0YToge30sXG4gIG1lc3NhZ2VzOiB7fSxcbiAgdmlld0NhY2hlOiB7fSxcblxuICBlbnN1cmVTZXNzaW9uOiBzZXNzaW9uSWQgPT4ge1xuICAgIGlmIChnZXQoKS5tZXRhW3Nlc3Npb25JZF0pIHJldHVyblxuICAgIGNvbnN0IGluaXRpYWxNZXRhID0gY3JlYXRlSW5pdGlhbE1ldGEoc2Vzc2lvbklkKVxuICAgIGlmIChpc1BlcnNpc3RlZFNlc3Npb25VbnJlYWQoc2Vzc2lvbklkKSkge1xuICAgICAgaW5pdGlhbE1ldGEudW5yZWFkID0gdHJ1ZVxuICAgIH1cbiAgICBzZXQoc3RhdGUgPT4gKHsgbWV0YTogeyAuLi5zdGF0ZS5tZXRhLCBbc2Vzc2lvbklkXTogaW5pdGlhbE1ldGEgfSB9KSlcbiAgfSxcblxuICBnZXRNZXRhOiBzZXNzaW9uSWQgPT4gZ2V0KCkubWV0YVtzZXNzaW9uSWRdLFxuXG4gIHBhdGNoTWV0YTogKHNlc3Npb25JZCwgcGF0Y2gpID0+XG4gICAgc2V0KHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBzdGF0ZS5tZXRhW3Nlc3Npb25JZF0gPz8gY3JlYXRlSW5pdGlhbE1ldGEoc2Vzc2lvbklkKVxuICAgICAgcmV0dXJuIHsgbWV0YTogeyAuLi5zdGF0ZS5tZXRhLCBbc2Vzc2lvbklkXTogeyAuLi5jdXJyZW50LCAuLi5wYXRjaCB9IH0gfVxuICAgIH0pLFxuXG4gIHNldFN0YXR1czogKHNlc3Npb25JZCwgc3RhdHVzKSA9PlxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RhdGUubWV0YVtzZXNzaW9uSWRdID8/IGNyZWF0ZUluaXRpYWxNZXRhKHNlc3Npb25JZClcbiAgICAgIGNvbnN0IGlzVGVybWluYWwgPSBzdGF0dXMgPT09ICdjb21wbGV0ZScgfHwgc3RhdHVzID09PSAnZXJyb3InIHx8IHN0YXR1cyA9PT0gJ2NhbmNlbGxlZCdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgICAgIFtzZXNzaW9uSWRdOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgLi4uKHN0YXR1cyAhPT0gJ2lkbGUnICYmIGN1cnJlbnQuc3RhcnRlZEF0ID09IG51bGwgPyB7IHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGlzVGVybWluYWwgPyB7IGZpbmlzaGVkQXQ6IERhdGUubm93KCkgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0pLFxuXG4gIHNldEFjdGl2aXR5OiAoc2Vzc2lvbklkLCBhY3Rpdml0eSwgbG9hZGluZ01lc3NhZ2UpID0+XG4gICAgc2V0KHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBzdGF0ZS5tZXRhW3Nlc3Npb25JZF0gPz8gY3JlYXRlSW5pdGlhbE1ldGEoc2Vzc2lvbklkKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgIC4uLnN0YXRlLm1ldGEsXG4gICAgICAgICAgW3Nlc3Npb25JZF06IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICBzdHJlYW1BY3Rpdml0eTogYWN0aXZpdHksXG4gICAgICAgICAgICBsb2FkaW5nTWVzc2FnZTogbG9hZGluZ01lc3NhZ2UgIT09IHVuZGVmaW5lZCA/IGxvYWRpbmdNZXNzYWdlIDogKGFjdGl2aXR5Py5tZXNzYWdlID8/IG51bGwpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfSksXG5cbiAgc2V0RXJyb3I6IChzZXNzaW9uSWQsIGVycm9yKSA9PlxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RhdGUubWV0YVtzZXNzaW9uSWRdID8/IGNyZWF0ZUluaXRpYWxNZXRhKHNlc3Npb25JZClcbiAgICAgIHJldHVybiB7IG1ldGE6IHsgLi4uc3RhdGUubWV0YSwgW3Nlc3Npb25JZF06IHsgLi4uY3VycmVudCwgZXJyb3IgfSB9IH1cbiAgICB9KSxcblxuICBtYXJrVW5yZWFkOiAoc2Vzc2lvbklkLCB1bnJlYWQpID0+IHtcbiAgICBzZXRQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkKHNlc3Npb25JZCwgdW5yZWFkKVxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RhdGUubWV0YVtzZXNzaW9uSWRdID8/IGNyZWF0ZUluaXRpYWxNZXRhKHNlc3Npb25JZClcbiAgICAgIHJldHVybiB7IG1ldGE6IHsgLi4uc3RhdGUubWV0YSwgW3Nlc3Npb25JZF06IHsgLi4uY3VycmVudCwgdW5yZWFkIH0gfSB9XG4gICAgfSlcbiAgfSxcblxuICBoeWRyYXRlUGVyc2lzdGVkVW5yZWFkU2Vzc2lvbnM6ICgpID0+IHtcbiAgICBnZXRQZXJzaXN0ZWRVbnJlYWRTZXNzaW9uSWRzKCkuZm9yRWFjaChzZXNzaW9uSWQgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBnZXQoKS5tZXRhW3Nlc3Npb25JZF1cbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICBpZiAoIWV4aXN0aW5nLnVucmVhZCkge1xuICAgICAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgICBbc2Vzc2lvbklkXTogeyAuLi5leGlzdGluZywgdW5yZWFkOiB0cnVlIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZ2V0KCkuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSWQpXG4gICAgfSlcbiAgfSxcblxuICBnZXRBY3RpdmVTZXNzaW9uSWRzOiAoKSA9PlxuICAgIE9iamVjdC52YWx1ZXMoZ2V0KCkubWV0YSlcbiAgICAgIC5maWx0ZXIobWV0YSA9PiBpc0FjdGl2ZVNlc3Npb25TdGF0dXMobWV0YS5zdGF0dXMpKVxuICAgICAgLm1hcChtZXRhID0+IG1ldGEuc2Vzc2lvbklkKSxcblxuICBnZXRBY3RpdmVDb3VudDogKCkgPT4gT2JqZWN0LnZhbHVlcyhnZXQoKS5tZXRhKS5maWx0ZXIobWV0YSA9PiBpc0FjdGl2ZVNlc3Npb25TdGF0dXMobWV0YS5zdGF0dXMpKS5sZW5ndGgsXG5cbiAgcmVtb3ZlU2Vzc2lvbjogc2Vzc2lvbklkID0+IHtcbiAgICByZW1vdmVQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkKHNlc3Npb25JZClcbiAgICBzZXQoc3RhdGUgPT4ge1xuICAgICAgY29uc3QgbmV4dE1ldGEgPSB7IC4uLnN0YXRlLm1ldGEgfVxuICAgICAgY29uc3QgbmV4dE1lc3NhZ2VzID0geyAuLi5zdGF0ZS5tZXNzYWdlcyB9XG4gICAgICBjb25zdCBuZXh0Vmlld0NhY2hlID0geyAuLi5zdGF0ZS52aWV3Q2FjaGUgfVxuICAgICAgZGVsZXRlIG5leHRNZXRhW3Nlc3Npb25JZF1cbiAgICAgIGRlbGV0ZSBuZXh0TWVzc2FnZXNbc2Vzc2lvbklkXVxuICAgICAgZGVsZXRlIG5leHRWaWV3Q2FjaGVbc2Vzc2lvbklkXVxuICAgICAgcmV0dXJuIHsgbWV0YTogbmV4dE1ldGEsIG1lc3NhZ2VzOiBuZXh0TWVzc2FnZXMsIHZpZXdDYWNoZTogbmV4dFZpZXdDYWNoZSB9XG4gICAgfSlcbiAgfSxcblxuICByZXNldEFsbDogKCkgPT4gc2V0KHsgbWV0YToge30sIG1lc3NhZ2VzOiB7fSwgdmlld0NhY2hlOiB7fSB9KSxcblxuICBzZXRNZXNzYWdlczogKHNlc3Npb25JZCwgbWVzc2FnZXMpID0+IHNldChzdGF0ZSA9PiAoeyBtZXNzYWdlczogeyAuLi5zdGF0ZS5tZXNzYWdlcywgW3Nlc3Npb25JZF06IG1lc3NhZ2VzIH0gfSkpLFxuXG4gIGdldE1lc3NhZ2VzOiBzZXNzaW9uSWQgPT4gZ2V0KCkubWVzc2FnZXNbc2Vzc2lvbklkXSA/PyBbXSxcblxuICBhZGRNZXNzYWdlOiAoc2Vzc2lvbklkLCBtZXNzYWdlKSA9PlxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBwcmV2ID0gc3RhdGUubWVzc2FnZXNbc2Vzc2lvbklkXSA/PyBbXVxuICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHByZXYuZmluZEluZGV4KG1zZyA9PiBtc2cuaWQgPT09IG1lc3NhZ2UuaWQpXG4gICAgICBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBbLi4ucHJldl1cbiAgICAgICAgbmV4dFtleGlzdGluZ0luZGV4XSA9IG1lc3NhZ2VcbiAgICAgICAgcmV0dXJuIHsgbWVzc2FnZXM6IHsgLi4uc3RhdGUubWVzc2FnZXMsIFtzZXNzaW9uSWRdOiBuZXh0IH0gfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbWVzc2FnZXM6IHsgLi4uc3RhdGUubWVzc2FnZXMsIFtzZXNzaW9uSWRdOiBbLi4ucHJldiwgbWVzc2FnZV0gfSB9XG4gICAgfSksXG5cbiAgcmVtb3ZlTWVzc2FnZTogKHNlc3Npb25JZCwgbWVzc2FnZUlkKSA9PlxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBwcmV2ID0gc3RhdGUubWVzc2FnZXNbc2Vzc2lvbklkXVxuICAgICAgaWYgKCFwcmV2KSByZXR1cm4ge31cbiAgICAgIHJldHVybiB7IG1lc3NhZ2VzOiB7IC4uLnN0YXRlLm1lc3NhZ2VzLCBbc2Vzc2lvbklkXTogcHJldi5maWx0ZXIobXNnID0+IG1zZy5pZCAhPT0gbWVzc2FnZUlkKSB9IH1cbiAgICB9KSxcblxuICBnZXRWaWV3Q2FjaGU6IHNlc3Npb25JZCA9PiBnZXQoKS52aWV3Q2FjaGVbc2Vzc2lvbklkXSxcblxuICBzZXRWaWV3Q2FjaGU6IChzZXNzaW9uSWQsIGNhY2hlKSA9PiBzZXQoc3RhdGUgPT4gKHsgdmlld0NhY2hlOiB7IC4uLnN0YXRlLnZpZXdDYWNoZSwgW3Nlc3Npb25JZF06IGNhY2hlIH0gfSkpLFxuXG4gIHBhdGNoVmlld0NhY2hlOiAoc2Vzc2lvbklkLCBwYXRjaCkgPT5cbiAgICBzZXQoc3RhdGUgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IHN0YXRlLnZpZXdDYWNoZVtzZXNzaW9uSWRdID8/IHtcbiAgICAgICAgaHlkcmF0ZWRGcm9tQXBpOiB0cnVlLFxuICAgICAgICBsYXN0RXZhbHVhdGVkS2V5OiAwLFxuICAgICAgICBjb252ZXJzYXRpb25NZXRhOiBudWxsLFxuICAgICAgICBzZXNzaW9uTWV0YUV2ZW50OiBudWxsLFxuICAgICAgICBhZ2VudFNuYXBzaG90OiBudWxsLFxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdmlld0NhY2hlOiB7IC4uLnN0YXRlLnZpZXdDYWNoZSwgW3Nlc3Npb25JZF06IHsgLi4uY3VycmVudCwgLi4ucGF0Y2ggfSB9IH1cbiAgICB9KSxcblxuICBpc1Nlc3Npb25IeWRyYXRlZDogc2Vzc2lvbklkID0+IGdldCgpLnZpZXdDYWNoZVtzZXNzaW9uSWRdPy5oeWRyYXRlZEZyb21BcGkgPT09IHRydWUsXG5cbiAgY2FuUmVzdG9yZVNlc3Npb246IHNlc3Npb25JZCA9PiB7XG4gICAgY29uc3QgY2FjaGUgPSBnZXQoKS52aWV3Q2FjaGVbc2Vzc2lvbklkXVxuICAgIHJldHVybiBjYWNoZT8uaHlkcmF0ZWRGcm9tQXBpID09PSB0cnVlICYmIChnZXQoKS5tZXNzYWdlc1tzZXNzaW9uSWRdPy5sZW5ndGggPz8gMCkgPiAwXG4gIH0sXG59KSlcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0EsU0FBU0EsTUFBTSxRQUFRLFNBQVM7QUFXaEMsU0FBU0MscUJBQXFCLFFBQVEsa0JBQWtCO0FBQ3hELFNBQ0VDLDRCQUE0QixFQUM1QkMsd0JBQXdCLEVBQ3hCQyw0QkFBNEIsRUFDNUJDLHlCQUF5QixRQUNwQiw0QkFBNEI7QUFFbkMsSUFBTUMsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUMsU0FBaUI7RUFBQSxPQUEwQjtJQUNwRUEsU0FBUyxFQUFUQSxTQUFTO0lBQ1RDLE1BQU0sRUFBRSxNQUFNO0lBQ2RDLFNBQVMsRUFBRSxLQUFLO0lBQ2hCQyxTQUFTLEVBQUUsS0FBSztJQUNoQkMsY0FBYyxFQUFFLElBQUk7SUFDcEJDLGNBQWMsRUFBRSxJQUFJO0lBQ3BCQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsTUFBTSxFQUFFLEtBQUs7SUFDYkMsU0FBUyxFQUFFLElBQUk7SUFDZkMsVUFBVSxFQUFFLElBQUk7SUFDaEJDLEtBQUssRUFBRTtFQUNULENBQUM7QUFBQSxDQUFDO0FBcUNGLE9BQU8sSUFBTUMsZ0JBQWdCLEdBQUdsQixNQUFNLENBQWtDLFVBQUNtQixHQUFHLEVBQUVDLEdBQUc7RUFBQSxPQUFNO0lBQ3JGQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ1JDLFFBQVEsRUFBRSxDQUFDLENBQUM7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