@projectcor/maia-components 2.37.0 → 2.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/lib/components/atoms/ActionableButton.js +6 -1
  2. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +14 -4
  3. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +12 -3
  4. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +20 -4
  5. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +18 -7
  6. package/lib/components/atoms/MAIAInput/MAIAInput.js +26 -10
  7. package/lib/components/atoms/MAIAInput/styles.js +34 -27
  8. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +36 -19
  9. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +23 -2
  10. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +33 -5
  11. package/lib/components/molecules/ChatAIHome/styles.js +11 -2
  12. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +31 -20
  13. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +7 -2
  14. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +4 -4
  15. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  16. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +8 -1
  17. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +15 -9
  18. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +18 -3
  19. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -2
  20. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -2
  21. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +14 -5
  22. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  23. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +12 -2
  24. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +3 -3
  25. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +34 -10
  26. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +14 -6
  27. package/lib/components/molecules/ChatFooter/ChatFooter.js +66 -45
  28. package/lib/components/molecules/ChatFooter/styles.js +12 -6
  29. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +15 -5
  30. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
  31. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +30 -0
  32. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.styles.js +47 -0
  33. package/lib/components/molecules/UsageBlockedBanner/index.js +2 -0
  34. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +30 -11
  35. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +31 -18
  36. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +40 -19
  37. package/lib/components/organisms/ChatAI/ChatAI.js +6 -1
  38. package/lib/hooks/useChatManager/useChatManager.js +55 -34
  39. package/lib/lang/__mocks__/index.js +9 -0
  40. package/lib/lang/br/index.js +5 -1
  41. package/lib/lang/en/index.js +5 -1
  42. package/lib/lang/es/index.js +5 -1
  43. package/lib/lang/fr/index.js +6 -2
  44. package/lib/services/maia/Usage/getUsage.js +45 -0
  45. package/lib/services/maia/Usage/index.js +6 -0
  46. package/lib/services/maia/index.js +4 -2
  47. package/lib/services/utils/MaiaApiError.js +34 -0
  48. package/lib/services/utils/fetchCOR.js +106 -57
  49. package/lib/services/utils/index.js +2 -1
  50. package/lib/store/index.js +2 -1
  51. package/lib/store/sessions/sessionStreamManager.js +70 -35
  52. package/lib/store/sessions/sessions.types.js +1 -1
  53. package/lib/store/useUsageStore.js +115 -0
  54. package/lib/types/usage.js +16 -0
  55. package/lib/utils/usageBlockedMessage.js +11 -0
  56. package/package.json +1 -1
  57. package/README.md +0 -2
@@ -1,20 +1,97 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _typeof from "@babel/runtime/helpers/typeof";
3
4
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
5
  /* eslint-disable camelcase */
5
6
  /* eslint-disable no-nested-ternary */
6
7
  /* eslint-disable no-undef */
7
8
 
8
9
  import { getCookie } from './getCookie';
10
+ import { MaiaApiError } from './MaiaApiError';
9
11
  var MAX_ATTEMPTS = 2;
10
- var _fetchCOR = /*#__PURE__*/function () {
11
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, _ref) {
12
- var _$_ca, _$_ca2, _$_ca3;
13
- var path, _ref$method, method, _ref$body, body, _ref$attempt, attempt, headers, signal, token, requestHeaders, response, _$_ca4, contentType, errorData, _t;
12
+ var parseErrorDetail = function parseErrorDetail(errorData) {
13
+ if (!errorData || _typeof(errorData) !== 'object') {
14
+ return {};
15
+ }
16
+ var data = errorData;
17
+ var detail = data.detail;
18
+ if (typeof detail === 'string') {
19
+ return {
20
+ accessDeniedDetail: detail.includes('Access denied') ? detail : undefined,
21
+ message: detail,
22
+ detail: detail
23
+ };
24
+ }
25
+ if (detail && _typeof(detail) === 'object') {
26
+ var detailObj = detail;
27
+ return {
28
+ message: typeof detailObj.message === 'string' ? detailObj.message : undefined,
29
+ code: typeof detailObj.code === 'string' ? detailObj.code : undefined,
30
+ detail: detail
31
+ };
32
+ }
33
+ return {
34
+ detail: detail
35
+ };
36
+ };
37
+
38
+ /** Lanza MaiaApiError preservando status/code/message (p. ej. 402 usage_quota_exceeded). */
39
+ var throwFromFailedResponse = /*#__PURE__*/function () {
40
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
41
+ var errorData, parsed, _t;
14
42
  return _regeneratorRuntime.wrap(function (_context) {
15
43
  while (1) switch (_context.prev = _context.next) {
16
44
  case 0:
17
- path = _ref.path, _ref$method = _ref.method, method = _ref$method === void 0 ? 'GET' : _ref$method, _ref$body = _ref.body, body = _ref$body === void 0 ? null : _ref$body, _ref$attempt = _ref.attempt, attempt = _ref$attempt === void 0 ? 0 : _ref$attempt, headers = _ref.headers, signal = _ref.signal;
45
+ _context.prev = 0;
46
+ _context.next = 1;
47
+ return response.json();
48
+ case 1:
49
+ errorData = _context.sent;
50
+ parsed = parseErrorDetail(errorData);
51
+ if (!(response.status === 403 && parsed.accessDeniedDetail)) {
52
+ _context.next = 2;
53
+ break;
54
+ }
55
+ throw new Error(parsed.accessDeniedDetail);
56
+ case 2:
57
+ if (!(parsed.code || parsed.message)) {
58
+ _context.next = 3;
59
+ break;
60
+ }
61
+ throw new MaiaApiError(parsed.message || 'Failed fetching data', response.status, {
62
+ code: parsed.code,
63
+ detail: parsed.detail
64
+ });
65
+ case 3:
66
+ throw new Error('Failed fetching data');
67
+ case 4:
68
+ _context.prev = 4;
69
+ _t = _context["catch"](0);
70
+ if (!(_t instanceof SyntaxError)) {
71
+ _context.next = 5;
72
+ break;
73
+ }
74
+ throw new Error('Failed fetching data');
75
+ case 5:
76
+ throw _t;
77
+ case 6:
78
+ case "end":
79
+ return _context.stop();
80
+ }
81
+ }, _callee, null, [[0, 4]]);
82
+ }));
83
+ return function throwFromFailedResponse(_x) {
84
+ return _ref.apply(this, arguments);
85
+ };
86
+ }();
87
+ var _fetchCOR = /*#__PURE__*/function () {
88
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url, _ref2) {
89
+ var _$_ca, _$_ca2, _$_ca3;
90
+ var path, _ref2$method, method, _ref2$body, body, _ref2$attempt, attempt, headers, signal, token, requestHeaders, response, _$_ca4, contentType;
91
+ return _regeneratorRuntime.wrap(function (_context2) {
92
+ while (1) switch (_context2.prev = _context2.next) {
93
+ case 0:
94
+ path = _ref2.path, _ref2$method = _ref2.method, method = _ref2$method === void 0 ? 'GET' : _ref2$method, _ref2$body = _ref2.body, body = _ref2$body === void 0 ? null : _ref2$body, _ref2$attempt = _ref2.attempt, attempt = _ref2$attempt === void 0 ? 0 : _ref2$attempt, headers = _ref2.headers, signal = _ref2.signal;
18
95
  token = process.env.MOCK_CORPILOT_TOKEN ? process.env.MOCK_CORPILOT_TOKEN : typeof $_ca !== 'undefined' && (_$_ca = $_ca) !== null && _$_ca !== void 0 && _$_ca.getCookieATS ? (_$_ca2 = $_ca) === null || _$_ca2 === void 0 ? void 0 : _$_ca2.getCookieATS() : getCookie('ATS');
19
96
  requestHeaders = new Headers();
20
97
  if (!(headers !== null && headers !== void 0 && headers['Content-Type']) && !(body instanceof FormData)) {
@@ -22,14 +99,14 @@ var _fetchCOR = /*#__PURE__*/function () {
22
99
  }
23
100
  requestHeaders.append('Authorization', "Bearer ".concat(token));
24
101
  if (headers) {
25
- Object.entries(headers).forEach(function (_ref3) {
26
- var _ref4 = _slicedToArray(_ref3, 2),
27
- key = _ref4[0],
28
- value = _ref4[1];
102
+ Object.entries(headers).forEach(function (_ref4) {
103
+ var _ref5 = _slicedToArray(_ref4, 2),
104
+ key = _ref5[0],
105
+ value = _ref5[1];
29
106
  requestHeaders.append(key, value);
30
107
  });
31
108
  }
32
- _context.next = 1;
109
+ _context2.next = 1;
33
110
  return fetch("".concat(url, "/").concat(path), {
34
111
  method: method,
35
112
  headers: requestHeaders,
@@ -37,15 +114,15 @@ var _fetchCOR = /*#__PURE__*/function () {
37
114
  signal: signal // Add abort signal support
38
115
  });
39
116
  case 1:
40
- response = _context.sent;
117
+ response = _context2.sent;
41
118
  if (!(response.status === 401 && typeof $_ca !== 'undefined' && (_$_ca3 = $_ca) !== null && _$_ca3 !== void 0 && _$_ca3.refreshToken && attempt < MAX_ATTEMPTS)) {
42
- _context.next = 3;
119
+ _context2.next = 3;
43
120
  break;
44
121
  }
45
- _context.next = 2;
122
+ _context2.next = 2;
46
123
  return (_$_ca4 = $_ca) === null || _$_ca4 === void 0 ? void 0 : _$_ca4.refreshToken();
47
124
  case 2:
48
- return _context.abrupt("return", _fetchCOR(url, {
125
+ return _context2.abrupt("return", _fetchCOR(url, {
49
126
  path: path,
50
127
  method: method,
51
128
  body: body,
@@ -55,63 +132,35 @@ var _fetchCOR = /*#__PURE__*/function () {
55
132
  case 3:
56
133
  contentType = response.headers.get('content-type');
57
134
  if (!(contentType !== null && contentType !== void 0 && contentType.includes('text/event-stream'))) {
58
- _context.next = 5;
135
+ _context2.next = 5;
59
136
  break;
60
137
  }
61
138
  if (response.ok) {
62
- _context.next = 4;
139
+ _context2.next = 4;
63
140
  break;
64
141
  }
65
- throw new Error('Failed fetching data');
142
+ _context2.next = 4;
143
+ return throwFromFailedResponse(response);
66
144
  case 4:
67
- return _context.abrupt("return", response);
145
+ return _context2.abrupt("return", response);
68
146
  case 5:
69
147
  if (response.ok) {
70
- _context.next = 13;
71
- break;
72
- }
73
- if (!(response.status === 403)) {
74
- _context.next = 12;
148
+ _context2.next = 6;
75
149
  break;
76
150
  }
77
- _context.prev = 6;
78
- _context.next = 7;
79
- return response.json();
151
+ _context2.next = 6;
152
+ return throwFromFailedResponse(response);
153
+ case 6:
154
+ return _context2.abrupt("return", response);
80
155
  case 7:
81
- errorData = _context.sent;
82
- if (!(errorData.detail && errorData.detail.includes('Access denied'))) {
83
- _context.next = 8;
84
- break;
85
- }
86
- throw new Error(errorData.detail);
87
- case 8:
88
- throw new Error('Failed fetching data');
89
- case 9:
90
- _context.prev = 9;
91
- _t = _context["catch"](6);
92
- if (!(_t instanceof SyntaxError)) {
93
- _context.next = 10;
94
- break;
95
- }
96
- throw new Error('Failed fetching data');
97
- case 10:
98
- throw _t;
99
- case 11:
100
- _context.next = 13;
101
- break;
102
- case 12:
103
- throw new Error('Failed fetching data');
104
- case 13:
105
- return _context.abrupt("return", response);
106
- case 14:
107
156
  case "end":
108
- return _context.stop();
157
+ return _context2.stop();
109
158
  }
110
- }, _callee, null, [[6, 9]]);
159
+ }, _callee2);
111
160
  }));
112
- return function fetchCOR(_x, _x2) {
113
- return _ref2.apply(this, arguments);
161
+ return function fetchCOR(_x2, _x3) {
162
+ return _ref3.apply(this, arguments);
114
163
  };
115
164
  }();
116
165
  export { _fetchCOR as fetchCOR };
117
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb29raWUiLCJNQVhfQVRURU1QVFMiLCJmZXRjaENPUiIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ1cmwiLCJfcmVmIiwiXyRfY2EiLCJfJF9jYTIiLCJfJF9jYTMiLCJwYXRoIiwiX3JlZiRtZXRob2QiLCJtZXRob2QiLCJfcmVmJGJvZHkiLCJib2R5IiwiX3JlZiRhdHRlbXB0IiwiYXR0ZW1wdCIsImhlYWRlcnMiLCJzaWduYWwiLCJ0b2tlbiIsInJlcXVlc3RIZWFkZXJzIiwicmVzcG9uc2UiLCJfJF9jYTQiLCJjb250ZW50VHlwZSIsImVycm9yRGF0YSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJwcm9jZXNzIiwiZW52IiwiTU9DS19DT1JQSUxPVF9UT0tFTiIsIiRfY2EiLCJnZXRDb29raWVBVFMiLCJIZWFkZXJzIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJjb25jYXQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsIl9yZWYzIiwiX3JlZjQiLCJfc2xpY2VkVG9BcnJheSIsImtleSIsInZhbHVlIiwiZmV0Y2giLCJKU09OIiwic3RyaW5naWZ5Iiwic2VudCIsInN0YXR1cyIsInJlZnJlc2hUb2tlbiIsImFicnVwdCIsImdldCIsImluY2x1ZGVzIiwib2siLCJFcnJvciIsImpzb24iLCJkZXRhaWwiLCJTeW50YXhFcnJvciIsInN0b3AiLCJfeCIsIl94MiIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2ZldGNoQ09SIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3V0aWxzL2ZldGNoQ09SLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5cbmltcG9ydCB7IGdldENvb2tpZSB9IGZyb20gJy4vZ2V0Q29va2llJ1xuXG5jb25zdCBNQVhfQVRURU1QVFMgPSAyXG5cbmV4cG9ydCB0eXBlIEZldGNoQ09SUGFyYW1zID0ge1xuICBwYXRoOiBzdHJpbmdcbiAgbWV0aG9kPzogc3RyaW5nXG4gIGJvZHk/OiB1bmtub3duXG4gIGF0dGVtcHQ/OiBudW1iZXJcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgc2lnbmFsPzogQWJvcnRTaWduYWxcbn1cblxuZXhwb3J0IGNvbnN0IGZldGNoQ09SID0gYXN5bmMgKFxuICB1cmw6IHN0cmluZyxcbiAgeyBwYXRoLCBtZXRob2QgPSAnR0VUJywgYm9keSA9IG51bGwsIGF0dGVtcHQgPSAwLCBoZWFkZXJzLCBzaWduYWwgfTogRmV0Y2hDT1JQYXJhbXNcbik6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgdG9rZW4gPSBwcm9jZXNzLmVudi5NT0NLX0NPUlBJTE9UX1RPS0VOXG4gICAgPyBwcm9jZXNzLmVudi5NT0NLX0NPUlBJTE9UX1RPS0VOXG4gICAgOiB0eXBlb2YgJF9jYSAhPT0gJ3VuZGVmaW5lZCcgJiYgJF9jYT8uZ2V0Q29va2llQVRTXG4gICAgICA/ICRfY2E/LmdldENvb2tpZUFUUygpXG4gICAgICA6IGdldENvb2tpZSgnQVRTJylcblxuICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgaWYgKCFoZWFkZXJzPy5bJ0NvbnRlbnQtVHlwZSddICYmICEoYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhKSkge1xuICAgIHJlcXVlc3RIZWFkZXJzLmFwcGVuZCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICB9XG4gIHJlcXVlc3RIZWFkZXJzLmFwcGVuZCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt0b2tlbn1gKVxuICBpZiAoaGVhZGVycykge1xuICAgIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgcmVxdWVzdEhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7dXJsfS8ke3BhdGh9YCwge1xuICAgIG1ldGhvZCxcbiAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICBib2R5OiBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEgPyBib2R5IDogYm9keSA/IEpTT04uc3RyaW5naWZ5KGJvZHkpIDogbnVsbCxcbiAgICBzaWduYWwsIC8vIEFkZCBhYm9ydCBzaWduYWwgc3VwcG9ydFxuICB9KVxuXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMSAmJiB0eXBlb2YgJF9jYSAhPT0gJ3VuZGVmaW5lZCcgJiYgJF9jYT8ucmVmcmVzaFRva2VuICYmIGF0dGVtcHQgPCBNQVhfQVRURU1QVFMpIHtcbiAgICBhd2FpdCAkX2NhPy5yZWZyZXNoVG9rZW4oKVxuICAgIHJldHVybiBmZXRjaENPUih1cmwsIHsgcGF0aCwgbWV0aG9kLCBib2R5LCBhdHRlbXB0OiBhdHRlbXB0ICsgMSwgc2lnbmFsIH0pXG4gIH1cblxuICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKVxuICBpZiAoY29udGVudFR5cGU/LmluY2x1ZGVzKCd0ZXh0L2V2ZW50LXN0cmVhbScpKSB7XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZXJyb3JEYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIGlmIChlcnJvckRhdGEuZGV0YWlsICYmIGVycm9yRGF0YS5kZXRhaWwuaW5jbHVkZXMoJ0FjY2VzcyBkZW5pZWQnKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvckRhdGEuZGV0YWlsKVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIGRhdGEnKVxuICAgICAgfSBjYXRjaCAoanNvbkVycm9yKSB7XG4gICAgICAgIGlmIChqc29uRXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIGRhdGEnKVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGpzb25FcnJvclxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2Vcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTtBQUNBOztBQUVBLFNBQVNBLFNBQVMsUUFBUSxhQUFhO0FBRXZDLElBQU1DLFlBQVksR0FBRyxDQUFDO0FBV2YsSUFBTUMsU0FBUTtFQUFBLElBQUFDLEtBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUFDLFFBQ3RCQyxHQUFXLEVBQUFDLElBQUE7SUFBQSxJQUFBQyxLQUFBLEVBQUFDLE1BQUEsRUFBQUMsTUFBQTtJQUFBLElBQUFDLElBQUEsRUFBQUMsV0FBQSxFQUFBQyxNQUFBLEVBQUFDLFNBQUEsRUFBQUMsSUFBQSxFQUFBQyxZQUFBLEVBQUFDLE9BQUEsRUFBQUMsT0FBQSxFQUFBQyxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsY0FBQSxFQUFBQyxRQUFBLEVBQUFDLE1BQUEsRUFBQUMsV0FBQSxFQUFBQyxTQUFBLEVBQUFDLEVBQUE7SUFBQSxPQUFBdkIsbUJBQUEsQ0FBQXdCLElBQUEsV0FBQUMsUUFBQTtNQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEs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
166
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb29raWUiLCJNYWlhQXBpRXJyb3IiLCJNQVhfQVRURU1QVFMiLCJwYXJzZUVycm9yRGV0YWlsIiwiZXJyb3JEYXRhIiwiX3R5cGVvZiIsImRhdGEiLCJkZXRhaWwiLCJhY2Nlc3NEZW5pZWREZXRhaWwiLCJpbmNsdWRlcyIsInVuZGVmaW5lZCIsIm1lc3NhZ2UiLCJkZXRhaWxPYmoiLCJjb2RlIiwidGhyb3dGcm9tRmFpbGVkUmVzcG9uc2UiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInBhcnNlZCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJqc29uIiwic2VudCIsInN0YXR1cyIsIkVycm9yIiwiU3ludGF4RXJyb3IiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImZldGNoQ09SIiwiX3JlZjMiLCJfY2FsbGVlMiIsInVybCIsIl9yZWYyIiwiXyRfY2EiLCJfJF9jYTIiLCJfJF9jYTMiLCJwYXRoIiwiX3JlZjIkbWV0aG9kIiwibWV0aG9kIiwiX3JlZjIkYm9keSIsImJvZHkiLCJfcmVmMiRhdHRlbXB0IiwiYXR0ZW1wdCIsImhlYWRlcnMiLCJzaWduYWwiLCJ0b2tlbiIsInJlcXVlc3RIZWFkZXJzIiwiXyRfY2E0IiwiY29udGVudFR5cGUiLCJfY29udGV4dDIiLCJwcm9jZXNzIiwiZW52IiwiTU9DS19DT1JQSUxPVF9UT0tFTiIsIiRfY2EiLCJnZXRDb29raWVBVFMiLCJIZWFkZXJzIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJjb25jYXQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsIl9yZWY0IiwiX3JlZjUiLCJfc2xpY2VkVG9BcnJheSIsImtleSIsInZhbHVlIiwiZmV0Y2giLCJKU09OIiwic3RyaW5naWZ5IiwicmVmcmVzaFRva2VuIiwiYWJydXB0IiwiZ2V0Iiwib2siLCJfeDIiLCJfeDMiLCJfZmV0Y2hDT1IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdXRpbHMvZmV0Y2hDT1IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cblxuaW1wb3J0IHsgZ2V0Q29va2llIH0gZnJvbSAnLi9nZXRDb29raWUnXG5pbXBvcnQgeyBNYWlhQXBpRXJyb3IgfSBmcm9tICcuL01haWFBcGlFcnJvcidcblxuY29uc3QgTUFYX0FUVEVNUFRTID0gMlxuXG5leHBvcnQgdHlwZSBGZXRjaENPUlBhcmFtcyA9IHtcbiAgcGF0aDogc3RyaW5nXG4gIG1ldGhvZD86IHN0cmluZ1xuICBib2R5PzogdW5rbm93blxuICBhdHRlbXB0PzogbnVtYmVyXG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsXG59XG5cbmNvbnN0IHBhcnNlRXJyb3JEZXRhaWwgPSAoXG4gIGVycm9yRGF0YTogdW5rbm93blxuKToge1xuICBtZXNzYWdlPzogc3RyaW5nXG4gIGNvZGU/OiBzdHJpbmdcbiAgZGV0YWlsPzogdW5rbm93blxuICBhY2Nlc3NEZW5pZWREZXRhaWw/OiBzdHJpbmdcbn0gPT4ge1xuICBpZiAoIWVycm9yRGF0YSB8fCB0eXBlb2YgZXJyb3JEYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB7fVxuICB9XG5cbiAgY29uc3QgZGF0YSA9IGVycm9yRGF0YSBhcyB7IGRldGFpbD86IHVua25vd24gfVxuICBjb25zdCB7IGRldGFpbCB9ID0gZGF0YVxuXG4gIGlmICh0eXBlb2YgZGV0YWlsID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBhY2Nlc3NEZW5pZWREZXRhaWw6IGRldGFpbC5pbmNsdWRlcygnQWNjZXNzIGRlbmllZCcpID8gZGV0YWlsIDogdW5kZWZpbmVkLFxuICAgICAgbWVzc2FnZTogZGV0YWlsLFxuICAgICAgZGV0YWlsLFxuICAgIH1cbiAgfVxuXG4gIGlmIChkZXRhaWwgJiYgdHlwZW9mIGRldGFpbCA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBkZXRhaWxPYmogPSBkZXRhaWwgYXMgeyBtZXNzYWdlPzogdW5rbm93bjsgY29kZT86IHVua25vd24gfVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0eXBlb2YgZGV0YWlsT2JqLm1lc3NhZ2UgPT09ICdzdHJpbmcnID8gZGV0YWlsT2JqLm1lc3NhZ2UgOiB1bmRlZmluZWQsXG4gICAgICBjb2RlOiB0eXBlb2YgZGV0YWlsT2JqLmNvZGUgPT09ICdzdHJpbmcnID8gZGV0YWlsT2JqLmNvZGUgOiB1bmRlZmluZWQsXG4gICAgICBkZXRhaWwsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgZGV0YWlsIH1cbn1cblxuLyoqIExhbnphIE1haWFBcGlFcnJvciBwcmVzZXJ2YW5kbyBzdGF0dXMvY29kZS9tZXNzYWdlIChwLiBlai4gNDAyIHVzYWdlX3F1b3RhX2V4Y2VlZGVkKS4gKi9cbmNvbnN0IHRocm93RnJvbUZhaWxlZFJlc3BvbnNlID0gYXN5bmMgKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8bmV2ZXI+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlcnJvckRhdGE6IHVua25vd24gPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUVycm9yRGV0YWlsKGVycm9yRGF0YSlcblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMyAmJiBwYXJzZWQuYWNjZXNzRGVuaWVkRGV0YWlsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocGFyc2VkLmFjY2Vzc0RlbmllZERldGFpbClcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkLmNvZGUgfHwgcGFyc2VkLm1lc3NhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBNYWlhQXBpRXJyb3IocGFyc2VkLm1lc3NhZ2UgfHwgJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJywgcmVzcG9uc2Uuc3RhdHVzLCB7XG4gICAgICAgIGNvZGU6IHBhcnNlZC5jb2RlLFxuICAgICAgICBkZXRhaWw6IHBhcnNlZC5kZXRhaWwsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIGRhdGEnKVxuICB9IGNhdGNoIChqc29uRXJyb3IpIHtcbiAgICBpZiAoanNvbkVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIGRhdGEnKVxuICAgIH1cbiAgICB0aHJvdyBqc29uRXJyb3JcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZmV0Y2hDT1IgPSBhc3luYyAoXG4gIHVybDogc3RyaW5nLFxuICB7IHBhdGgsIG1ldGhvZCA9ICdHRVQnLCBib2R5ID0gbnVsbCwgYXR0ZW1wdCA9IDAsIGhlYWRlcnMsIHNpZ25hbCB9OiBGZXRjaENPUlBhcmFtc1xuKTogUHJvbWlzZTxSZXNwb25zZT4gPT4ge1xuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52Lk1PQ0tfQ09SUElMT1RfVE9LRU5cbiAgICA/IHByb2Nlc3MuZW52Lk1PQ0tfQ09SUElMT1RfVE9LRU5cbiAgICA6IHR5cGVvZiAkX2NhICE9PSAndW5kZWZpbmVkJyAmJiAkX2NhPy5nZXRDb29raWVBVFNcbiAgICAgID8gJF9jYT8uZ2V0Q29va2llQVRTKClcbiAgICAgIDogZ2V0Q29va2llKCdBVFMnKVxuXG4gIGNvbnN0IHJlcXVlc3RIZWFkZXJzID0gbmV3IEhlYWRlcnMoKVxuICBpZiAoIWhlYWRlcnM/LlsnQ29udGVudC1UeXBlJ10gJiYgIShib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XG4gICAgcmVxdWVzdEhlYWRlcnMuYXBwZW5kKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXG4gIH1cbiAgcmVxdWVzdEhlYWRlcnMuYXBwZW5kKCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApXG4gIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoaGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICByZXF1ZXN0SGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt1cmx9LyR7cGF0aH1gLCB7XG4gICAgbWV0aG9kLFxuICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzLFxuICAgIGJvZHk6IGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSA/IGJvZHkgOiBib2R5ID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiBudWxsLFxuICAgIHNpZ25hbCwgLy8gQWRkIGFib3J0IHNpZ25hbCBzdXBwb3J0XG4gIH0pXG5cbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxICYmIHR5cGVvZiAkX2NhICE9PSAndW5kZWZpbmVkJyAmJiAkX2NhPy5yZWZyZXNoVG9rZW4gJiYgYXR0ZW1wdCA8IE1BWF9BVFRFTVBUUykge1xuICAgIGF3YWl0ICRfY2E/LnJlZnJlc2hUb2tlbigpXG4gICAgcmV0dXJuIGZldGNoQ09SKHVybCwgeyBwYXRoLCBtZXRob2QsIGJvZHksIGF0dGVtcHQ6IGF0dGVtcHQgKyAxLCBzaWduYWwgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpXG4gIGlmIChjb250ZW50VHlwZT8uaW5jbHVkZXMoJ3RleHQvZXZlbnQtc3RyZWFtJykpIHtcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBhd2FpdCB0aHJvd0Zyb21GYWlsZWRSZXNwb25zZShyZXNwb25zZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgYXdhaXQgdGhyb3dGcm9tRmFpbGVk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
@@ -1,3 +1,4 @@
1
1
  export { getCookie } from './getCookie';
2
2
  export { fetchCOR } from './fetchCOR';
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb29raWUiLCJmZXRjaENPUiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy91dGlscy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBnZXRDb29raWUgfSBmcm9tICcuL2dldENvb2tpZSdcbmV4cG9ydCB7IGZldGNoQ09SLCB0eXBlIEZldGNoQ09SUGFyYW1zIH0gZnJvbSAnLi9mZXRjaENPUidcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLGFBQWE7QUFDdkMsU0FBU0MsUUFBUSxRQUE2QixZQUFZIiwiaWdub3JlTGlzdCI6W119
3
+ export { MaiaApiError, isMaiaApiError } from './MaiaApiError';
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb29raWUiLCJmZXRjaENPUiIsIk1haWFBcGlFcnJvciIsImlzTWFpYUFwaUVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3V0aWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGdldENvb2tpZSB9IGZyb20gJy4vZ2V0Q29va2llJ1xuZXhwb3J0IHsgZmV0Y2hDT1IsIHR5cGUgRmV0Y2hDT1JQYXJhbXMgfSBmcm9tICcuL2ZldGNoQ09SJ1xuZXhwb3J0IHsgTWFpYUFwaUVycm9yLCBpc01haWFBcGlFcnJvciB9IGZyb20gJy4vTWFpYUFwaUVycm9yJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLFFBQVEsYUFBYTtBQUN2QyxTQUFTQyxRQUFRLFFBQTZCLFlBQVk7QUFDMUQsU0FBU0MsWUFBWSxFQUFFQyxjQUFjLFFBQVEsZ0JBQWdCIiwiaWdub3JlTGlzdCI6W119
@@ -1,4 +1,5 @@
1
1
  export { useChatsStore, getChatsStoreState } from './useChatsStore';
2
2
  export { acquireChatsStore, releaseChatsStore } from './chatsStoreLifecycle';
3
3
  export { useFaqsStore } from './useFaqsStore';
4
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDaGF0c1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiYWNxdWlyZUNoYXRzU3RvcmUiLCJyZWxlYXNlQ2hhdHNTdG9yZSIsInVzZUZhcXNTdG9yZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyB1c2VDaGF0c1N0b3JlLCBnZXRDaGF0c1N0b3JlU3RhdGUgfSBmcm9tICcuL3VzZUNoYXRzU3RvcmUnXG5leHBvcnQgeyBhY3F1aXJlQ2hhdHNTdG9yZSwgcmVsZWFzZUNoYXRzU3RvcmUgfSBmcm9tICcuL2NoYXRzU3RvcmVMaWZlY3ljbGUnXG5leHBvcnQgeyB1c2VGYXFzU3RvcmUgfSBmcm9tICcuL3VzZUZhcXNTdG9yZSdcbmV4cG9ydCB0eXBlIHtcbiAgQ2hhdExpc3RJdGVtLFxuICBGZXRjaENoYXRzUGFyYW1zLFxuICBMb2FkTW9yZUNoYXRzUGFyYW1zLFxuICBEZWxldGVDaGF0UGFyYW1zLFxuICBTZWN0aW9uVHlwZSxcbn0gZnJvbSAnLi9jaGF0c1N0b3JlLnR5cGVzJ1xuZXhwb3J0IHR5cGUgeyBGYXFzQ2FjaGVFbnRyeSB9IGZyb20gJy4vZmFxc1N0b3JlLnR5cGVzJ1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxhQUFhLEVBQUVDLGtCQUFrQixRQUFRLGlCQUFpQjtBQUNuRSxTQUFTQyxpQkFBaUIsRUFBRUMsaUJBQWlCLFFBQVEsdUJBQXVCO0FBQzVFLFNBQVNDLFlBQVksUUFBUSxnQkFBZ0IiLCJpZ25vcmVMaXN0IjpbXX0=
4
+ export { useUsageStore, getUsageStoreState } from './useUsageStore';
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDaGF0c1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiYWNxdWlyZUNoYXRzU3RvcmUiLCJyZWxlYXNlQ2hhdHNTdG9yZSIsInVzZUZhcXNTdG9yZSIsInVzZVVzYWdlU3RvcmUiLCJnZXRVc2FnZVN0b3JlU3RhdGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgdXNlQ2hhdHNTdG9yZSwgZ2V0Q2hhdHNTdG9yZVN0YXRlIH0gZnJvbSAnLi91c2VDaGF0c1N0b3JlJ1xuZXhwb3J0IHsgYWNxdWlyZUNoYXRzU3RvcmUsIHJlbGVhc2VDaGF0c1N0b3JlIH0gZnJvbSAnLi9jaGF0c1N0b3JlTGlmZWN5Y2xlJ1xuZXhwb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi91c2VGYXFzU3RvcmUnXG5leHBvcnQgeyB1c2VVc2FnZVN0b3JlLCBnZXRVc2FnZVN0b3JlU3RhdGUgfSBmcm9tICcuL3VzZVVzYWdlU3RvcmUnXG5leHBvcnQgdHlwZSB7XG4gIENoYXRMaXN0SXRlbSxcbiAgRmV0Y2hDaGF0c1BhcmFtcyxcbiAgTG9hZE1vcmVDaGF0c1BhcmFtcyxcbiAgRGVsZXRlQ2hhdFBhcmFtcyxcbiAgU2VjdGlvblR5cGUsXG59IGZyb20gJy4vY2hhdHNTdG9yZS50eXBlcydcbmV4cG9ydCB0eXBlIHsgRmFxc0NhY2hlRW50cnkgfSBmcm9tICcuL2ZhcXNTdG9yZS50eXBlcydcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxFQUFFQyxrQkFBa0IsUUFBUSxpQkFBaUI7QUFDbkUsU0FBU0MsaUJBQWlCLEVBQUVDLGlCQUFpQixRQUFRLHVCQUF1QjtBQUM1RSxTQUFTQyxZQUFZLFFBQVEsZ0JBQWdCO0FBQzdDLFNBQVNDLGFBQWEsRUFBRUMsa0JBQWtCLFFBQVEsaUJBQWlCIiwiaWdub3JlTGlzdCI6W119