@projectcor/maia-components 2.11.100-7 → 2.11.100-9

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 (41) hide show
  1. package/lib/components/atoms/Chip/Chip.js +12 -5
  2. package/lib/components/atoms/Chip/styles.js +6 -6
  3. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +121 -28
  4. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +6 -2
  5. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +12 -5
  6. package/lib/components/atoms/MAIAInput/MAIAInput.js +390 -270
  7. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +5 -8
  8. package/lib/components/atoms/MAIAInput/maiaInputLayout.js +25 -0
  9. package/lib/components/atoms/MAIAInput/styles.js +102 -86
  10. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +54 -41
  11. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +25 -12
  12. package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
  13. package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
  14. package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
  15. package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
  16. package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
  17. package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
  18. package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
  19. package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
  20. package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
  21. package/lib/components/atoms/icons/index.js +10 -1
  22. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +18 -7
  23. package/lib/components/molecules/ChatAIHome/styles.js +54 -38
  24. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +11 -36
  25. package/lib/components/molecules/ChatAIMessages/newStyles.js +10 -26
  26. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +1 -5
  27. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +1 -4
  28. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +1 -8
  29. package/lib/components/molecules/ChatFooter/ChatFooter.js +23 -62
  30. package/lib/components/molecules/Sidebar/Sidebar.js +14 -3
  31. package/lib/hooks/useMentionPopover.js +4 -2
  32. package/lib/lang/br/index.js +6 -3
  33. package/lib/lang/en/index.js +6 -3
  34. package/lib/lang/es/index.js +6 -3
  35. package/lib/lang/fr/index.js +8 -2
  36. package/lib/services/maia/Agents/getAgents.js +30 -54
  37. package/lib/styles/config.js +2 -2
  38. package/package.json +1 -1
  39. package/lib/services/maia/bootstrap/agentsPrefetchSession.js +0 -124
  40. package/lib/services/maia/bootstrap/fetchAgentsList.js +0 -267
  41. package/lib/services/maia/bootstrap/prefetchMaiaAgents.js +0 -110
@@ -1,124 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- import { mapCORLang } from '../../../lang/utils';
4
- var LOG_PREFIX = '[MaiaAgentsPrefetch]';
5
- var session = null;
6
- export var buildAgentsPrefetchKey = function buildAgentsPrefetchKey(section, lang, isMultiAgents) {
7
- return "".concat(section, ":").concat(mapCORLang(lang), ":").concat(isMultiAgents ? '1' : '0');
8
- };
9
-
10
- /**
11
- * Guarda el resultado del hover hasta que se abre MAIA (takeAgentsPrefetch).
12
- * Si el usuario cierra el modal, resetAgentsPrefetchSession invalida la sesión.
13
- */
14
- export var registerAgentsPrefetch = function registerAgentsPrefetch(key, promise) {
15
- session = {
16
- key: key,
17
- promise: promise
18
- };
19
- return promise.then(function (result) {
20
- var _session;
21
- if (((_session = session) === null || _session === void 0 ? void 0 : _session.key) === key) {
22
- session = {
23
- key: key,
24
- result: result
25
- };
26
- console.info(LOG_PREFIX, 'session:ready', {
27
- key: key,
28
- count: result.data.length
29
- });
30
- }
31
- return result;
32
- })["catch"](function (error) {
33
- var _session2;
34
- if (((_session2 = session) === null || _session2 === void 0 ? void 0 : _session2.key) === key) {
35
- session = null;
36
- }
37
- throw error;
38
- });
39
- };
40
- export var hasAgentsPrefetchReady = function hasAgentsPrefetchReady(key) {
41
- var _session3;
42
- return ((_session3 = session) === null || _session3 === void 0 ? void 0 : _session3.key) === key && session.result != null;
43
- };
44
- export var hasAgentsPrefetchInFlight = function hasAgentsPrefetchInFlight(key) {
45
- var _session4;
46
- return ((_session4 = session) === null || _session4 === void 0 ? void 0 : _session4.key) === key && session.promise != null && session.result == null;
47
- };
48
-
49
- /**
50
- * Consumido al abrir MAIA: devuelve agents prefetched y limpia la sesión.
51
- * Si el prefetch sigue en vuelo, espera la misma Promise (una sola petición).
52
- */
53
- export var takeAgentsPrefetch = /*#__PURE__*/function () {
54
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(key) {
55
- var _session5, result, _t;
56
- return _regeneratorRuntime.wrap(function (_context) {
57
- while (1) switch (_context.prev = _context.next) {
58
- case 0:
59
- if (!(!session || session.key !== key)) {
60
- _context.next = 1;
61
- break;
62
- }
63
- console.info(LOG_PREFIX, 'take:miss', {
64
- key: key,
65
- hasSession: Boolean(session)
66
- });
67
- return _context.abrupt("return", null);
68
- case 1:
69
- _context.prev = 1;
70
- if (!(session.promise && !session.result)) {
71
- _context.next = 2;
72
- break;
73
- }
74
- console.info(LOG_PREFIX, 'take:await-in-flight', {
75
- key: key
76
- });
77
- _context.next = 2;
78
- return session.promise;
79
- case 2:
80
- if (!(!session || session.key !== key || !session.result)) {
81
- _context.next = 3;
82
- break;
83
- }
84
- console.info(LOG_PREFIX, 'take:empty-after-await', {
85
- key: key
86
- });
87
- return _context.abrupt("return", null);
88
- case 3:
89
- _session5 = session, result = _session5.result;
90
- session = null;
91
- console.info(LOG_PREFIX, 'take:consumed', {
92
- key: key,
93
- count: result.data.length
94
- });
95
- return _context.abrupt("return", result);
96
- case 4:
97
- _context.prev = 4;
98
- _t = _context["catch"](1);
99
- session = null;
100
- console.info(LOG_PREFIX, 'take:failed', {
101
- key: key
102
- });
103
- return _context.abrupt("return", null);
104
- case 5:
105
- case "end":
106
- return _context.stop();
107
- }
108
- }, _callee, null, [[1, 4]]);
109
- }));
110
- return function takeAgentsPrefetch(_x) {
111
- return _ref.apply(this, arguments);
112
- };
113
- }();
114
-
115
- /** Al cerrar MAIA: invalidar prefetch para que el próximo hover vuelva a pedir agents. */
116
- export var resetAgentsPrefetchSession = function resetAgentsPrefetchSession() {
117
- if (session) {
118
- console.info(LOG_PREFIX, 'session:reset', {
119
- key: session.key
120
- });
121
- }
122
- session = null;
123
- };
124
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXBDT1JMYW5nIiwiTE9HX1BSRUZJWCIsInNlc3Npb24iLCJidWlsZEFnZW50c1ByZWZldGNoS2V5Iiwic2VjdGlvbiIsImxhbmciLCJpc011bHRpQWdlbnRzIiwiY29uY2F0IiwicmVnaXN0ZXJBZ2VudHNQcmVmZXRjaCIsImtleSIsInByb21pc2UiLCJ0aGVuIiwicmVzdWx0IiwiX3Nlc3Npb24iLCJjb25zb2xlIiwiaW5mbyIsImNvdW50IiwiZGF0YSIsImxlbmd0aCIsImVycm9yIiwiX3Nlc3Npb24yIiwiaGFzQWdlbnRzUHJlZmV0Y2hSZWFkeSIsIl9zZXNzaW9uMyIsImhhc0FnZW50c1ByZWZldGNoSW5GbGlnaHQiLCJfc2Vzc2lvbjQiLCJ0YWtlQWdlbnRzUHJlZmV0Y2giLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfc2Vzc2lvbjUiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiaGFzU2Vzc2lvbiIsIkJvb2xlYW4iLCJhYnJ1cHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsInJlc2V0QWdlbnRzUHJlZmV0Y2hTZXNzaW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvYm9vdHN0cmFwL2FnZW50c1ByZWZldGNoU2Vzc2lvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEZldGNoQWdlbnRzTGlzdFJlc3VsdCB9IGZyb20gJy4vZmV0Y2hBZ2VudHNMaXN0J1xuXG5jb25zdCBMT0dfUFJFRklYID0gJ1tNYWlhQWdlbnRzUHJlZmV0Y2hdJ1xuXG50eXBlIEFnZW50c1ByZWZldGNoU2Vzc2lvbiA9IHtcbiAga2V5OiBzdHJpbmdcbiAgcmVzdWx0PzogRmV0Y2hBZ2VudHNMaXN0UmVzdWx0XG4gIHByb21pc2U/OiBQcm9taXNlPEZldGNoQWdlbnRzTGlzdFJlc3VsdD5cbn1cblxubGV0IHNlc3Npb246IEFnZW50c1ByZWZldGNoU2Vzc2lvbiB8IG51bGwgPSBudWxsXG5cbmV4cG9ydCBjb25zdCBidWlsZEFnZW50c1ByZWZldGNoS2V5ID0gKHNlY3Rpb246IFNlY3Rpb24sIGxhbmc6IHN0cmluZywgaXNNdWx0aUFnZW50czogYm9vbGVhbik6IHN0cmluZyA9PlxuICBgJHtzZWN0aW9ufToke21hcENPUkxhbmcobGFuZyl9OiR7aXNNdWx0aUFnZW50cyA/ICcxJyA6ICcwJ31gXG5cbi8qKlxuICogR3VhcmRhIGVsIHJlc3VsdGFkbyBkZWwgaG92ZXIgaGFzdGEgcXVlIHNlIGFicmUgTUFJQSAodGFrZUFnZW50c1ByZWZldGNoKS5cbiAqIFNpIGVsIHVzdWFyaW8gY2llcnJhIGVsIG1vZGFsLCByZXNldEFnZW50c1ByZWZldGNoU2Vzc2lvbiBpbnZhbGlkYSBsYSBzZXNpw7NuLlxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJBZ2VudHNQcmVmZXRjaCA9IChcbiAga2V5OiBzdHJpbmcsXG4gIHByb21pc2U6IFByb21pc2U8RmV0Y2hBZ2VudHNMaXN0UmVzdWx0PlxuKTogUHJvbWlzZTxGZXRjaEFnZW50c0xpc3RSZXN1bHQ+ID0+IHtcbiAgc2Vzc2lvbiA9IHsga2V5LCBwcm9taXNlIH1cblxuICByZXR1cm4gcHJvbWlzZVxuICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBpZiAoc2Vzc2lvbj8ua2V5ID09PSBrZXkpIHtcbiAgICAgICAgc2Vzc2lvbiA9IHsga2V5LCByZXN1bHQgfVxuICAgICAgICBjb25zb2xlLmluZm8oTE9HX1BSRUZJWCwgJ3Nlc3Npb246cmVhZHknLCB7IGtleSwgY291bnQ6IHJlc3VsdC5kYXRhLmxlbmd0aCB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0pXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGlmIChzZXNzaW9uPy5rZXkgPT09IGtleSkge1xuICAgICAgICBzZXNzaW9uID0gbnVsbFxuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9KVxufVxuXG5leHBvcnQgY29uc3QgaGFzQWdlbnRzUHJlZmV0Y2hSZWFkeSA9IChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4gc2Vzc2lvbj8ua2V5ID09PSBrZXkgJiYgc2Vzc2lvbi5yZXN1bHQgIT0gbnVsbFxuXG5leHBvcnQgY29uc3QgaGFzQWdlbnRzUHJlZmV0Y2hJbkZsaWdodCA9IChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgc2Vzc2lvbj8ua2V5ID09PSBrZXkgJiYgc2Vzc2lvbi5wcm9taXNlICE9IG51bGwgJiYgc2Vzc2lvbi5yZXN1bHQgPT0gbnVsbFxuXG4vKipcbiAqIENvbnN1bWlkbyBhbCBhYnJpciBNQUlBOiBkZXZ1ZWx2ZSBhZ2VudHMgcHJlZmV0Y2hlZCB5IGxpbXBpYSBsYSBzZXNpw7NuLlxuICogU2kgZWwgcHJlZmV0Y2ggc2lndWUgZW4gdnVlbG8sIGVzcGVyYSBsYSBtaXNtYSBQcm9taXNlICh1bmEgc29sYSBwZXRpY2nDs24pLlxuICovXG5leHBvcnQgY29uc3QgdGFrZUFnZW50c1ByZWZldGNoID0gYXN5bmMgKGtleTogc3RyaW5nKTogUHJvbWlzZTxGZXRjaEFnZW50c0xpc3RSZXN1bHQgfCBudWxsPiA9PiB7XG4gIGlmICghc2Vzc2lvbiB8fCBzZXNzaW9uLmtleSAhPT0ga2V5KSB7XG4gICAgY29uc29sZS5pbmZvKExPR19QUkVGSVgsICd0YWtlOm1pc3MnLCB7IGtleSwgaGFzU2Vzc2lvbjogQm9vbGVhbihzZXNzaW9uKSB9KVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICB0cnkge1xuICAgIGlmIChzZXNzaW9uLnByb21pc2UgJiYgIXNlc3Npb24ucmVzdWx0KSB7XG4gICAgICBjb25zb2xlLmluZm8oTE9HX1BSRUZJWCwgJ3Rha2U6YXdhaXQtaW4tZmxpZ2h0JywgeyBrZXkgfSlcbiAgICAgIGF3YWl0IHNlc3Npb24ucHJvbWlzZVxuICAgIH1cblxuICAgIGlmICghc2Vzc2lvbiB8fCBzZXNzaW9uLmtleSAhPT0ga2V5IHx8ICFzZXNzaW9uLnJlc3VsdCkge1xuICAgICAgY29uc29sZS5pbmZvKExPR19QUkVGSVgsICd0YWtlOmVtcHR5LWFmdGVyLWF3YWl0JywgeyBrZXkgfSlcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgeyByZXN1bHQgfSA9IHNlc3Npb25cbiAgICBzZXNzaW9uID0gbnVsbFxuICAgIGNvbnNvbGUuaW5mbyhMT0dfUFJFRklYLCAndGFrZTpjb25zdW1lZCcsIHsga2V5LCBjb3VudDogcmVzdWx0LmRhdGEubGVuZ3RoIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9IGNhdGNoIHtcbiAgICBzZXNzaW9uID0gbnVsbFxuICAgIGNvbnNvbGUuaW5mbyhMT0dfUFJFRklYLCAndGFrZTpmYWlsZWQnLCB7IGtleSB9KVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuLyoqIEFsIGNlcnJhciBNQUlBOiBpbnZhbGlkYXIgcHJlZmV0Y2ggcGFyYSBxdWUgZWwgcHLDs3hpbW8gaG92ZXIgdnVlbHZhIGEgcGVkaXIgYWdlbnRzLiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0QWdlbnRzUHJlZmV0Y2hTZXNzaW9uID0gKCk6IHZvaWQgPT4ge1xuICBpZiAoc2Vzc2lvbikge1xuICAgIGNvbnNvbGUuaW5mbyhMT0dfUFJFRklYLCAnc2Vzc2lvbjpyZXNldCcsIHsga2V5OiBzZXNzaW9uLmtleSB9KVxuICB9XG4gIHNlc3Npb24gPSBudWxsXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsU0FBU0EsVUFBVSxRQUFRLHFCQUFxQjtBQUdoRCxJQUFNQyxVQUFVLEdBQUcsc0JBQXNCO0FBUXpDLElBQUlDLE9BQXFDLEdBQUcsSUFBSTtBQUVoRCxPQUFPLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUlDLE9BQWdCLEVBQUVDLElBQVksRUFBRUMsYUFBc0I7RUFBQSxVQUFBQyxNQUFBLENBQ3hGSCxPQUFPLE9BQUFHLE1BQUEsQ0FBSVAsVUFBVSxDQUFDSyxJQUFJLENBQUMsT0FBQUUsTUFBQSxDQUFJRCxhQUFhLEdBQUcsR0FBRyxHQUFHLEdBQUc7QUFBQSxDQUFFOztBQUUvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUUsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FDakNDLEdBQVcsRUFDWEMsT0FBdUMsRUFDSjtFQUNuQ1IsT0FBTyxHQUFHO0lBQUVPLEdBQUcsRUFBSEEsR0FBRztJQUFFQyxPQUFPLEVBQVBBO0VBQVEsQ0FBQztFQUUxQixPQUFPQSxPQUFPLENBQ1hDLElBQUksQ0FBQyxVQUFBQyxNQUFNLEVBQUk7SUFBQSxJQUFBQyxRQUFBO0lBQ2QsSUFBSSxFQUFBQSxRQUFBLEdBQUFYLE9BQU8sY0FBQVcsUUFBQSx1QkFBUEEsUUFBQSxDQUFTSixHQUFHLE1BQUtBLEdBQUcsRUFBRTtNQUN4QlAsT0FBTyxHQUFHO1FBQUVPLEdBQUcsRUFBSEEsR0FBRztRQUFFRyxNQUFNLEVBQU5BO01BQU8sQ0FBQztNQUN6QkUsT0FBTyxDQUFDQyxJQUFJLENBQUNkLFVBQVUsRUFBRSxlQUFlLEVBQUU7UUFBRVEsR0FBRyxFQUFIQSxHQUFHO1FBQUVPLEtBQUssRUFBRUosTUFBTSxDQUFDSyxJQUFJLENBQUNDO01BQU8sQ0FBQyxDQUFDO0lBQy9FO0lBQ0EsT0FBT04sTUFBTTtFQUNmLENBQUMsQ0FBQyxTQUNJLENBQUMsVUFBQU8sS0FBSyxFQUFJO0lBQUEsSUFBQUMsU0FBQTtJQUNkLElBQUksRUFBQUEsU0FBQSxHQUFBbEIsT0FBTyxjQUFBa0IsU0FBQSx1QkFBUEEsU0FBQSxDQUFTWCxHQUFHLE1BQUtBLEdBQUcsRUFBRTtNQUN4QlAsT0FBTyxHQUFHLElBQUk7SUFDaEI7SUFDQSxNQUFNaUIsS0FBSztFQUNiLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxPQUFPLElBQU1FLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUlaLEdBQVc7RUFBQSxJQUFBYSxTQUFBO0VBQUEsT0FBYyxFQUFBQSxTQUFBLEdBQUFwQixPQUFPLGNBQUFvQixTQUFBLHVCQUFQQSxTQUFBLENBQVNiLEdBQUcsTUFBS0EsR0FBRyxJQUFJUCxPQUFPLENBQUNVLE1BQU0sSUFBSSxJQUFJO0FBQUE7QUFFOUcsT0FBTyxJQUFNVyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJZCxHQUFXO0VBQUEsSUFBQWUsU0FBQTtFQUFBLE9BQ25ELEVBQUFBLFNBQUEsR0FBQXRCLE9BQU8sY0FBQXNCLFNBQUEsdUJBQVBBLFNBQUEsQ0FBU2YsR0FBRyxNQUFLQSxHQUFHLElBQUlQLE9BQU8sQ0FBQ1EsT0FBTyxJQUFJLElBQUksSUFBSVIsT0FBTyxDQUFDVSxNQUFNLElBQUksSUFBSTtBQUFBOztBQUUzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTWEsa0JBQWtCO0VBQUEsSUFBQUMsSUFBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQUMsUUFBT3JCLEdBQVc7SUFBQSxJQUFBc0IsU0FBQSxFQUFBbkIsTUFBQSxFQUFBb0IsRUFBQTtJQUFBLE9BQUFKLG1CQUFBLENBQUFLLElBQUEsV0FBQUMsUUFBQTtNQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1FBQUE7VUFBQSxNQUM5QyxDQUFDbEMsT0FBTyxJQUFJQSxPQUFPLENBQUNPLEdBQUcsS0FBS0EsR0FBRztZQUFBeUIsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUNqQ3RCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDZCxVQUFVLEVBQUUsV0FBVyxFQUFFO1lBQUVRLEdBQUcsRUFBSEEsR0FBRztZQUFFNEIsVUFBVSxFQUFFQyxPQUFPLENBQUNwQyxPQUFPO1VBQUUsQ0FBQyxDQUFDO1VBQUEsT0FBQWdDLFFBQUEsQ0FBQUssTUFBQSxXQUNyRSxJQUFJO1FBQUE7VUFBQUwsUUFBQSxDQUFBQyxJQUFBO1VBQUEsTUFJUGpDLE9BQU8sQ0FBQ1EsT0FBTyxJQUFJLENBQUNSLE9BQU8sQ0FBQ1UsTUFBTTtZQUFBc0IsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUNwQ3RCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDZCxVQUFVLEVBQUUsc0JBQXNCLEVBQUU7WUFBRVEsR0FBRyxFQUFIQTtVQUFJLENBQUMsQ0FBQztVQUFBeUIsUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FDbkRsQyxPQUFPLENBQUNRLE9BQU87UUFBQTtVQUFBLE1BR25CLENBQUNSLE9BQU8sSUFBSUEsT0FBTyxDQUFDTyxHQUFHLEtBQUtBLEdBQUcsSUFBSSxDQUFDUCxPQUFPLENBQUNVLE1BQU07WUFBQXNCLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFDcER0QixPQUFPLENBQUNDLElBQUksQ0FBQ2QsVUFBVSxFQUFFLHdCQUF3QixFQUFFO1lBQUVRLEdBQUcsRUFBSEE7VUFBSSxDQUFDLENBQUM7VUFBQSxPQUFBeUIsUUFBQSxDQUFBSyxNQUFBLFdBQ3BELElBQUk7UUFBQTtVQUFBUixTQUFBLEdBR003QixPQUFPLEVBQWxCVSxNQUFNLEdBQUFtQixTQUFBLENBQU5uQixNQUFNO1VBQ2RWLE9BQU8sR0FBRyxJQUFJO1VBQ2RZLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDZCxVQUFVLEVBQUUsZUFBZSxFQUFFO1lBQUVRLEdBQUcsRUFBSEEsR0FBRztZQUFFTyxLQUFLLEVBQUVKLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDQztVQUFPLENBQUMsQ0FBQztVQUFBLE9BQUFnQixRQUFBLENBQUFLLE1BQUEsV0FDdEUzQixNQUFNO1FBQUE7VUFBQXNCLFFBQUEsQ0FBQUMsSUFBQTtVQUFBSCxFQUFBLEdBQUFFLFFBQUE7VUFFYmhDLE9BQU8sR0FBRyxJQUFJO1VBQ2RZLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDZCxVQUFVLEVBQUUsYUFBYSxFQUFFO1lBQUVRLEdBQUcsRUFBSEE7VUFBSSxDQUFDLENBQUM7VUFBQSxPQUFBeUIsUUFBQSxDQUFBSyxNQUFBLFdBQ3pDLElBQUk7UUFBQTtRQUFBO1VBQUEsT0FBQUwsUUFBQSxDQUFBTSxJQUFBO01BQUE7SUFBQSxHQUFBVixPQUFBO0VBQUEsQ0FFZDtFQUFBLGdCQTFCWUwsa0JBQWtCQSxDQUFBZ0IsRUFBQTtJQUFBLE9BQUFmLElBQUEsQ0FBQWdCLEtBQUEsT0FBQUMsU0FBQTtFQUFBO0FBQUEsR0EwQjlCOztBQUVEO0FBQ0EsT0FBTyxJQUFNQywwQkFBMEIsR0FBRyxTQUE3QkEsMEJBQTBCQSxDQUFBLEVBQWU7RUFDcEQsSUFBSTFDLE9BQU8sRUFBRTtJQUNYWSxPQUFPLENBQUNDLElBQUksQ0FBQ2QsVUFBVSxFQUFFLGVBQWUsRUFBRTtNQUFFUSxHQUFHLEVBQUVQLE9BQU8sQ0FBQ087SUFBSSxDQUFDLENBQUM7RUFDakU7RUFDQVAsT0FBTyxHQUFHLElBQUk7QUFDaEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,267 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- import { fetchMaia } from '../client';
6
- import { withNormalizedConnectors } from '../../../utils/normalizeAgentConnectors';
7
- import { mapCORLang } from '../../../lang/utils';
8
- var isMaiaAgent = function isMaiaAgent(agent) {
9
- return (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator';
10
- };
11
- export var is403AgentFetchError = function is403AgentFetchError(err) {
12
- var _error$response, _error$message, _error$message2;
13
- var error = err;
14
- return (error === null || error === void 0 || (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 403 || (error === null || error === void 0 ? void 0 : error.status) === 403 || Boolean(error === null || error === void 0 || (_error$message = error.message) === null || _error$message === void 0 ? void 0 : _error$message.includes("You don't have permission to view agents")) || Boolean(error === null || error === void 0 || (_error$message2 = error.message) === null || _error$message2 === void 0 ? void 0 : _error$message2.includes('Failed fetching data'));
15
- };
16
- export var mergeAgentsWithoutDuplicates = function mergeAgentsWithoutDuplicates(base, extra) {
17
- var ids = new Set(base.map(function (agent) {
18
- return agent.id;
19
- }));
20
- var merged = _toConsumableArray(base);
21
- extra.forEach(function (agent) {
22
- if (!ids.has(agent.id)) merged.push(agent);
23
- });
24
- return merged;
25
- };
26
- export var sortAgentsList = function sortAgentsList(agents) {
27
- var maiaAgents = agents.filter(isMaiaAgent);
28
- var otherAgents = agents.filter(function (ag) {
29
- return !isMaiaAgent(ag);
30
- });
31
- var favorites = otherAgents.filter(function (ag) {
32
- return ag.is_favorite;
33
- }).sort(function (a, b) {
34
- return a.name.localeCompare(b.name);
35
- });
36
- var nonFavorites = otherAgents.filter(function (ag) {
37
- return !ag.is_favorite;
38
- }).sort(function (a, b) {
39
- return a.name.localeCompare(b.name);
40
- });
41
- return maiaAgents.length ? [].concat(_toConsumableArray(maiaAgents), _toConsumableArray(favorites), _toConsumableArray(nonFavorites)) : [].concat(_toConsumableArray(favorites), _toConsumableArray(nonFavorites));
42
- };
43
- var normalizeCustomAgentsFromApi = function normalizeCustomAgentsFromApi(agents) {
44
- return agents.map(function (agent) {
45
- return agent.type === 'custom' ? withNormalizedConnectors(agent) : agent;
46
- });
47
- };
48
- var fetchGlobalCloneAgents = /*#__PURE__*/function () {
49
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(lang, canFetchCloneAgents) {
50
- var cloneResponse, cloneData, _t;
51
- return _regeneratorRuntime.wrap(function (_context) {
52
- while (1) switch (_context.prev = _context.next) {
53
- case 0:
54
- if (!(!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS || !canFetchCloneAgents)) {
55
- _context.next = 1;
56
- break;
57
- }
58
- return _context.abrupt("return", []);
59
- case 1:
60
- _context.prev = 1;
61
- _context.next = 2;
62
- return fetchMaia({
63
- path: "agents?agent_type=clone&entity=global&lang=".concat(mapCORLang(lang)),
64
- method: 'GET'
65
- });
66
- case 2:
67
- cloneResponse = _context.sent;
68
- _context.next = 3;
69
- return cloneResponse.json();
70
- case 3:
71
- cloneData = _context.sent;
72
- return _context.abrupt("return", (cloneData.data || []).filter(function (ag) {
73
- return ag.type === 'clone';
74
- }));
75
- case 4:
76
- _context.prev = 4;
77
- _t = _context["catch"](1);
78
- if (!is403AgentFetchError(_t)) {
79
- _context.next = 5;
80
- break;
81
- }
82
- return _context.abrupt("return", []);
83
- case 5:
84
- throw _t;
85
- case 6:
86
- case "end":
87
- return _context.stop();
88
- }
89
- }, _callee, null, [[1, 4]]);
90
- }));
91
- return function fetchGlobalCloneAgents(_x, _x2) {
92
- return _ref.apply(this, arguments);
93
- };
94
- }();
95
- export var fetchAgentsList = /*#__PURE__*/function () {
96
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref2) {
97
- var section, lang, isMultiAgents, canFetchCloneAgents, mappedLang, customAgents, customHasMore, customNextOffset, maiaAgents, loadCloneAgents, loadCustomAgents, agentParsed, queryParams, queryString, path, _yield$Promise$all3, _yield$Promise$all4, response, globalCloneAgents, data, _agentParsed, _t4;
98
- return _regeneratorRuntime.wrap(function (_context4) {
99
- while (1) switch (_context4.prev = _context4.next) {
100
- case 0:
101
- section = _ref2.section, lang = _ref2.lang, isMultiAgents = _ref2.isMultiAgents, canFetchCloneAgents = _ref2.canFetchCloneAgents;
102
- mappedLang = mapCORLang(lang);
103
- if (!isMultiAgents) {
104
- _context4.next = 2;
105
- break;
106
- }
107
- customAgents = [];
108
- customHasMore = false;
109
- customNextOffset = null;
110
- maiaAgents = [];
111
- loadCloneAgents = /*#__PURE__*/function () {
112
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
113
- var _maiaData$data, _yield$Promise$all, _yield$Promise$all2, maiaResponse, globalCloneAgents, maiaData, orchestrators, _t2;
114
- return _regeneratorRuntime.wrap(function (_context2) {
115
- while (1) switch (_context2.prev = _context2.next) {
116
- case 0:
117
- if (canFetchCloneAgents) {
118
- _context2.next = 1;
119
- break;
120
- }
121
- return _context2.abrupt("return");
122
- case 1:
123
- _context2.prev = 1;
124
- _context2.next = 2;
125
- return Promise.all([fetchMaia({
126
- path: "agents?agent_type=orchestrator&lang=".concat(mappedLang),
127
- method: 'GET'
128
- }), fetchGlobalCloneAgents(lang, canFetchCloneAgents)]);
129
- case 2:
130
- _yield$Promise$all = _context2.sent;
131
- _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
132
- maiaResponse = _yield$Promise$all2[0];
133
- globalCloneAgents = _yield$Promise$all2[1];
134
- _context2.next = 3;
135
- return maiaResponse.json();
136
- case 3:
137
- maiaData = _context2.sent;
138
- orchestrators = ((_maiaData$data = maiaData.data) === null || _maiaData$data === void 0 ? void 0 : _maiaData$data.filter(isMaiaAgent)) || [];
139
- maiaAgents = mergeAgentsWithoutDuplicates(orchestrators, globalCloneAgents);
140
- _context2.next = 5;
141
- break;
142
- case 4:
143
- _context2.prev = 4;
144
- _t2 = _context2["catch"](1);
145
- if (is403AgentFetchError(_t2)) {
146
- _context2.next = 5;
147
- break;
148
- }
149
- throw _t2;
150
- case 5:
151
- case "end":
152
- return _context2.stop();
153
- }
154
- }, _callee2, null, [[1, 4]]);
155
- }));
156
- return function loadCloneAgents() {
157
- return _ref4.apply(this, arguments);
158
- };
159
- }();
160
- loadCustomAgents = /*#__PURE__*/function () {
161
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
162
- var customResponse, customData, _t3;
163
- return _regeneratorRuntime.wrap(function (_context3) {
164
- while (1) switch (_context3.prev = _context3.next) {
165
- case 0:
166
- _context3.prev = 0;
167
- _context3.next = 1;
168
- return fetchMaia({
169
- path: 'agents?agent_type=custom&limit=7&offset=0',
170
- method: 'GET'
171
- });
172
- case 1:
173
- customResponse = _context3.sent;
174
- _context3.next = 2;
175
- return customResponse.json();
176
- case 2:
177
- customData = _context3.sent;
178
- customAgents = normalizeCustomAgentsFromApi(customData.data || []);
179
- customHasMore = customData.has_more || false;
180
- customNextOffset = customData.next_offset || null;
181
- _context3.next = 4;
182
- break;
183
- case 3:
184
- _context3.prev = 3;
185
- _t3 = _context3["catch"](0);
186
- if (is403AgentFetchError(_t3)) {
187
- _context3.next = 4;
188
- break;
189
- }
190
- throw _t3;
191
- case 4:
192
- case "end":
193
- return _context3.stop();
194
- }
195
- }, _callee3, null, [[0, 3]]);
196
- }));
197
- return function loadCustomAgents() {
198
- return _ref5.apply(this, arguments);
199
- };
200
- }();
201
- _context4.next = 1;
202
- return Promise.all([loadCloneAgents(), loadCustomAgents()]);
203
- case 1:
204
- agentParsed = sortAgentsList(!canFetchCloneAgents ? customAgents : maiaAgents.length ? [].concat(_toConsumableArray(maiaAgents), _toConsumableArray(customAgents)) : customAgents);
205
- return _context4.abrupt("return", {
206
- data: agentParsed,
207
- has_more: customHasMore,
208
- next_offset: customNextOffset
209
- });
210
- case 2:
211
- queryParams = new URLSearchParams();
212
- if (section === 'project' || section === 'client' || section === 'header' || section === 'task' || section === 'planner') {
213
- queryParams.append('agent_type', 'orchestrator');
214
- queryParams.append('lang', mappedLang);
215
- if (section === 'header') {
216
- queryParams.append('limit', '7');
217
- queryParams.append('offset', '0');
218
- }
219
- }
220
- queryString = queryParams.toString();
221
- path = "agents".concat(queryString ? "?".concat(queryString) : '');
222
- _context4.prev = 3;
223
- _context4.next = 4;
224
- return Promise.all([fetchMaia({
225
- path: path,
226
- method: 'GET'
227
- }), fetchGlobalCloneAgents(lang, canFetchCloneAgents)]);
228
- case 4:
229
- _yield$Promise$all3 = _context4.sent;
230
- _yield$Promise$all4 = _slicedToArray(_yield$Promise$all3, 2);
231
- response = _yield$Promise$all4[0];
232
- globalCloneAgents = _yield$Promise$all4[1];
233
- _context4.next = 5;
234
- return response.json();
235
- case 5:
236
- data = _context4.sent;
237
- _agentParsed = sortAgentsList(mergeAgentsWithoutDuplicates(data.data || [], globalCloneAgents));
238
- return _context4.abrupt("return", {
239
- data: _agentParsed,
240
- has_more: data.has_more,
241
- next_offset: data.next_offset
242
- });
243
- case 6:
244
- _context4.prev = 6;
245
- _t4 = _context4["catch"](3);
246
- if (!is403AgentFetchError(_t4)) {
247
- _context4.next = 7;
248
- break;
249
- }
250
- return _context4.abrupt("return", {
251
- data: [],
252
- has_more: false,
253
- next_offset: null
254
- });
255
- case 7:
256
- throw _t4;
257
- case 8:
258
- case "end":
259
- return _context4.stop();
260
- }
261
- }, _callee4, null, [[3, 6]]);
262
- }));
263
- return function fetchAgentsList(_x3) {
264
- return _ref3.apply(this, arguments);
265
- };
266
- }();
267
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJ3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMiLCJtYXBDT1JMYW5nIiwiaXNNYWlhQWdlbnQiLCJhZ2VudCIsInR5cGUiLCJpczQwM0FnZW50RmV0Y2hFcnJvciIsImVyciIsIl9lcnJvciRyZXNwb25zZSIsIl9lcnJvciRtZXNzYWdlIiwiX2Vycm9yJG1lc3NhZ2UyIiwiZXJyb3IiLCJyZXNwb25zZSIsInN0YXR1cyIsIkJvb2xlYW4iLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJtZXJnZUFnZW50c1dpdGhvdXREdXBsaWNhdGVzIiwiYmFzZSIsImV4dHJhIiwiaWRzIiwiU2V0IiwibWFwIiwiaWQiLCJtZXJnZWQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJmb3JFYWNoIiwiaGFzIiwicHVzaCIsInNvcnRBZ2VudHNMaXN0IiwiYWdlbnRzIiwibWFpYUFnZW50cyIsImZpbHRlciIsIm90aGVyQWdlbnRzIiwiYWciLCJmYXZvcml0ZXMiLCJpc19mYXZvcml0ZSIsInNvcnQiLCJhIiwiYiIsIm5hbWUiLCJsb2NhbGVDb21wYXJlIiwibm9uRmF2b3JpdGVzIiwibGVuZ3RoIiwiY29uY2F0Iiwibm9ybWFsaXplQ3VzdG9tQWdlbnRzRnJvbUFwaSIsImZldGNoR2xvYmFsQ2xvbmVBZ2VudHMiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJsYW5nIiwiY2FuRmV0Y2hDbG9uZUFnZW50cyIsImNsb25lUmVzcG9uc2UiLCJjbG9uZURhdGEiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImFicnVwdCIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImRhdGEiLCJzdG9wIiwiX3giLCJfeDIiLCJhcHBseSIsImFyZ3VtZW50cyIsImZldGNoQWdlbnRzTGlzdCIsIl9yZWYzIiwiX2NhbGxlZTQiLCJfcmVmMiIsInNlY3Rpb24iLCJpc011bHRpQWdlbnRzIiwibWFwcGVkTGFuZyIsImN1c3RvbUFnZW50cyIsImN1c3RvbUhhc01vcmUiLCJjdXN0b21OZXh0T2Zmc2V0IiwibG9hZENsb25lQWdlbnRzIiwibG9hZEN1c3RvbUFnZW50cyIsImFnZW50UGFyc2VkIiwicXVlcnlQYXJhbXMiLCJxdWVyeVN0cmluZyIsIl95aWVsZCRQcm9taXNlJGFsbDMiLCJfeWllbGQkUHJvbWlzZSRhbGw0IiwiZ2xvYmFsQ2xvbmVBZ2VudHMiLCJfYWdlbnRQYXJzZWQiLCJfdDQiLCJfY29udGV4dDQiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX21haWFEYXRhJGRhdGEiLCJfeWllbGQkUHJvbWlzZSRhbGwiLCJfeWllbGQkUHJvbWlzZSRhbGwyIiwibWFpYVJlc3BvbnNlIiwibWFpYURhdGEiLCJvcmNoZXN0cmF0b3JzIiwiX3QyIiwiX2NvbnRleHQyIiwiUHJvbWlzZSIsImFsbCIsIl9zbGljZWRUb0FycmF5IiwiX3JlZjUiLCJfY2FsbGVlMyIsImN1c3RvbVJlc3BvbnNlIiwiY3VzdG9tRGF0YSIsIl90MyIsIl9jb250ZXh0MyIsImhhc19tb3JlIiwibmV4dF9vZmZzZXQiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcHBlbmQiLCJ0b1N0cmluZyIsIl94MyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL2Jvb3RzdHJhcC9mZXRjaEFnZW50c0xpc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuaW1wb3J0IHsgd2l0aE5vcm1hbGl6ZWRDb25uZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5cbmNvbnN0IGlzTWFpYUFnZW50ID0gKGFnZW50OiBBZ2VudCkgPT4gYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG5cbmV4cG9ydCBjb25zdCBpczQwM0FnZW50RmV0Y2hFcnJvciA9IChlcnI6IHVua25vd24pOiBib29sZWFuID0+IHtcbiAgY29uc3QgZXJyb3IgPSBlcnIgYXMgeyByZXNwb25zZT86IHsgc3RhdHVzPzogbnVtYmVyIH07IHN0YXR1cz86IG51bWJlcjsgbWVzc2FnZT86IHN0cmluZyB9XG4gIHJldHVybiAoXG4gICAgZXJyb3I/LnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgIGVycm9yPy5zdGF0dXMgPT09IDQwMyB8fFxuICAgIEJvb2xlYW4oZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IGFnZW50c1wiKSkgfHxcbiAgICBCb29sZWFuKGVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSlcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgbWVyZ2VBZ2VudHNXaXRob3V0RHVwbGljYXRlcyA9IChiYXNlOiBBZ2VudFtdLCBleHRyYTogQWdlbnRbXSk6IEFnZW50W10gPT4ge1xuICBjb25zdCBpZHMgPSBuZXcgU2V0KGJhc2UubWFwKGFnZW50ID0+IGFnZW50LmlkKSlcbiAgY29uc3QgbWVyZ2VkID0gWy4uLmJhc2VdXG4gIGV4dHJhLmZvckVhY2goYWdlbnQgPT4ge1xuICAgIGlmICghaWRzLmhhcyhhZ2VudC5pZCkpIG1lcmdlZC5wdXNoKGFnZW50KVxuICB9KVxuICByZXR1cm4gbWVyZ2VkXG59XG5cbmV4cG9ydCBjb25zdCBzb3J0QWdlbnRzTGlzdCA9IChhZ2VudHM6IEFnZW50W10pOiBBZ2VudFtdID0+IHtcbiAgY29uc3QgbWFpYUFnZW50cyA9IGFnZW50cy5maWx0ZXIoaXNNYWlhQWdlbnQpXG4gIGNvbnN0IG90aGVyQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZyA9PiAhaXNNYWlhQWdlbnQoYWcpKVxuICBjb25zdCBmYXZvcml0ZXMgPSBvdGhlckFnZW50cy5maWx0ZXIoYWcgPT4gYWcuaXNfZmF2b3JpdGUpLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gIGNvbnN0IG5vbkZhdm9yaXRlcyA9IG90aGVyQWdlbnRzLmZpbHRlcihhZyA9PiAhYWcuaXNfZmF2b3JpdGUpLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gIHJldHVybiBtYWlhQWdlbnRzLmxlbmd0aCA/IFsuLi5tYWlhQWdlbnRzLCAuLi5mYXZvcml0ZXMsIC4uLm5vbkZhdm9yaXRlc10gOiBbLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdXG59XG5cbmNvbnN0IG5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkgPSAoYWdlbnRzOiBBZ2VudFtdKTogQWdlbnRbXSA9PlxuICBhZ2VudHMubWFwKGFnZW50ID0+IChhZ2VudC50eXBlID09PSAnY3VzdG9tJyA/IHdpdGhOb3JtYWxpemVkQ29ubmVjdG9ycyhhZ2VudCkgOiBhZ2VudCkpXG5cbmV4cG9ydCB0eXBlIEZldGNoQWdlbnRzTGlzdFBhcmFtcyA9IHtcbiAgc2VjdGlvbjogU2VjdGlvblxuICBsYW5nOiBzdHJpbmdcbiAgaXNNdWx0aUFnZW50czogYm9vbGVhblxuICBjYW5GZXRjaENsb25lQWdlbnRzOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEZldGNoQWdlbnRzTGlzdFJlc3VsdCA9IHtcbiAgZGF0YTogQWdlbnRbXVxuICBoYXNfbW9yZT86IGJvb2xlYW5cbiAgbmV4dF9vZmZzZXQ/OiBudW1iZXIgfCBudWxsXG59XG5cbmNvbnN0IGZldGNoR2xvYmFsQ2xvbmVBZ2VudHMgPSBhc3luYyAobGFuZzogc3RyaW5nLCBjYW5GZXRjaENsb25lQWdlbnRzOiBib29sZWFuKTogUHJvbWlzZTxBZ2VudFtdPiA9PiB7XG4gIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgIWNhbkZldGNoQ2xvbmVBZ2VudHMpIHJldHVybiBbXVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY2xvbmVSZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhsYW5nKX1gLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuICAgIGNvbnN0IGNsb25lRGF0YSA9IGF3YWl0IGNsb25lUmVzcG9uc2UuanNvbigpXG4gICAgcmV0dXJuIChjbG9uZURhdGEuZGF0YSB8fCBbXSkuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpXG4gIH0gY2F0Y2ggKGNsb25lRXJyb3IpIHtcbiAgICBpZiAoaXM0MDNBZ2VudEZldGNoRXJyb3IoY2xvbmVFcnJvcikpIHJldHVybiBbXVxuICAgIHRocm93IGNsb25lRXJyb3JcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZmV0Y2hBZ2VudHNMaXN0ID0gYXN5bmMgKHtcbiAgc2VjdGlvbixcbiAgbGFuZyxcbiAgaXNNdWx0aUFnZW50cyxcbiAgY2FuRmV0Y2hDbG9uZUFnZW50cyxcbn06IEZldGNoQWdlbnRzTGlzdFBhcmFtcyk6IFByb21pc2U8RmV0Y2hBZ2VudHNMaXN0UmVzdWx0PiA9PiB7XG4gIGNvbnN0IG1hcHBlZExhbmcgPSBtYXBDT1JMYW5nKGxhbmcpXG5cbiAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICBsZXQgY3VzdG9tQWdlbnRzOiBBZ2VudFtdID0gW11cbiAgICBsZXQgY3VzdG9tSGFzTW9yZSA9IGZhbHNlXG4gICAgbGV0IGN1c3RvbU5leHRPZmZzZXQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgbGV0IG1haWFBZ2VudHM6IEFnZW50W10gPSBbXVxuXG4gICAgY29uc3QgbG9hZENsb25lQWdlbnRzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFjYW5GZXRjaENsb25lQWdlbnRzKSByZXR1cm5cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgW21haWFSZXNwb25zZSwgZ2xvYmFsQ2xvbmVBZ2VudHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgIGZldGNoTWFpYSh7XG4gICAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9b3JjaGVzdHJhdG9yJmxhbmc9JHttYXBwZWRMYW5nfWAsXG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZldGNoR2xvYmFsQ2xvbmVBZ2VudHMobGFuZywgY2FuRmV0Y2hDbG9uZUFnZW50cyksXG4gICAgICAgIF0pXG4gICAgICAgIGNvbnN0IG1haWFEYXRhID0gYXdhaXQgbWFpYVJlc3BvbnNlLmpzb24oKVxuICAgICAgICBjb25zdCBvcmNoZXN0cmF0b3JzID0gbWFpYURhdGEuZGF0YT8uZmlsdGVyKGlzTWFpYUFnZW50KSB8fCBbXVxuICAgICAgICBtYWlhQWdlbnRzID0gbWVyZ2VBZ2VudHNXaXRob3V0RHVwbGljYXRlcyhvcmNoZXN0cmF0b3JzLCBnbG9iYWxDbG9uZUFnZW50cylcbiAgICAgIH0gY2F0Y2ggKG1haWFFcnJvcjogdW5rbm93bikge1xuICAgICAgICBpZiAoIWlzNDAzQWdlbnRGZXRjaEVycm9yKG1haWFFcnJvcikpIHRocm93IG1haWFFcnJvclxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxvYWRDdXN0b21BZ2VudHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjdXN0b21SZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgcGF0aDogJ2FnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD03Jm9mZnNldD0wJyxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBjdXN0b21EYXRhID0gYXdhaXQgY3VzdG9tUmVzcG9uc2UuanNvbigpXG4gICAgICAgIGN1c3RvbUFnZW50cyA9IG5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkoY3VzdG9tRGF0YS5kYXRhIHx8IFtdKVxuICAgICAgICBjdXN0b21IYXNNb3JlID0gY3VzdG9tRGF0YS5oYXNfbW9yZSB8fCBmYWxzZVxuICAgICAgICBjdXN0b21OZXh0T2Zmc2V0ID0gY3VzdG9tRGF0YS5uZXh0X29mZnNldCB8fCBudWxsXG4gICAgICB9IGNhdGNoIChjdXN0b21FcnJvcjogdW5rbm93bikge1xuICAgICAgICBpZiAoIWlzNDAzQWdlbnRGZXRjaEVycm9yKGN1c3RvbUVycm9yKSkgdGhyb3cgY3VzdG9tRXJyb3JcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChbbG9hZENsb25lQWdlbnRzKCksIGxvYWRDdXN0b21BZ2VudHMoKV0pXG5cbiAgICBjb25zdCBhZ2VudFBhcnNlZCA9IHNvcnRBZ2VudHNMaXN0KFxuICAgICAgIWNhbkZldGNoQ2xvbmVBZ2VudHMgPyBjdXN0b21BZ2VudHMgOiBtYWlhQWdlbnRzLmxlbmd0aCA/IFsuLi5tYWlhQWdlbnRzLCAuLi5jdXN0b21BZ2VudHNdIDogY3VzdG9tQWdlbnRzXG4gICAgKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGFnZW50UGFyc2VkLFxuICAgICAgaGFzX21vcmU6IGN1c3RvbUhhc01vcmUsXG4gICAgICBuZXh0X29mZnNldDogY3VzdG9tTmV4dE9mZnNldCxcbiAgICB9XG4gIH1cblxuICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICBpZiAoXG4gICAgc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8XG4gICAgc2VjdGlvbiA9PT0gJ2NsaWVudCcgfHxcbiAgICBzZWN0aW9uID09PSAnaGVhZGVyJyB8fFxuICAgIHNlY3Rpb24gPT09ICd0YXNrJyB8fFxuICAgIHNlY3Rpb24gPT09ICdwbGFubmVyJ1xuICApIHtcbiAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnb3JjaGVzdHJhdG9yJylcbiAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xhbmcnLCBtYXBwZWRMYW5nKVxuICAgIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJykge1xuICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc3JylcbiAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgJzAnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcXVlcnlQYXJhbXMudG9TdHJpbmcoKVxuICBjb25zdCBwYXRoID0gYGFnZW50cyR7cXVlcnlTdHJpbmcgPyBgPyR7cXVlcnlTdHJpbmd9YCA6ICcnfWBcblxuICB0cnkge1xuICAgIGNvbnN0IFtyZXNwb25zZSwgZ2xvYmFsQ2xvbmVBZ2VudHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgZmV0Y2hNYWlhKHsgcGF0aCwgbWV0aG9kOiAnR0VUJyB9KSxcbiAgICAgIGZldGNoR2xvYmFsQ2xvbmVBZ2VudHMobGFuZywgY2FuRmV0Y2hDbG9uZUFnZW50cyksXG4gICAgXSlcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgY29uc3QgYWdlbnRQYXJzZWQgPSBzb3J0QWdlbnRzTGlzdChtZXJnZUFnZW50c1dpdGhvdXREdXBsaWNhdGVzKGRhdGEuZGF0YSB8fCBbXSwgZ2xvYmFsQ2xvbmVBZ2VudHMpKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGFnZW50UGFyc2VkLFxuICAgICAgaGFzX21vcmU6IGRhdGEuaGFzX21vcmUsXG4gICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICB9XG4gIH0gY2F0Y2ggKHJlc3BvbnNlRXJyb3I6IHVua25vd24pIHtcbiAgICBpZiAoaXM0MDNBZ2VudEZldGNoRXJyb3IocmVzcG9uc2VFcnJvcikpIHtcbiAgICAgIHJldHVybiB7IGRhdGE6IFtdLCBoYXNfbW9yZTogZmFsc2UsIG5leHRfb2Zmc2V0OiBudWxsIH1cbiAgICB9XG4gICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTQyx3QkFBd0IsUUFBUSx5Q0FBeUM7QUFHbEYsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjtBQUVoRCxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsS0FBWTtFQUFBLE9BQUssQ0FBQUEsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVDLElBQUksTUFBSyxjQUFjO0FBQUE7QUFFcEUsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJQyxHQUFZLEVBQWM7RUFBQSxJQUFBQyxlQUFBLEVBQUFDLGNBQUEsRUFBQUMsZUFBQTtFQUM3RCxJQUFNQyxLQUFLLEdBQUdKLEdBQTRFO0VBQzFGLE9BQ0UsQ0FBQUksS0FBSyxhQUFMQSxLQUFLLGdCQUFBSCxlQUFBLEdBQUxHLEtBQUssQ0FBRUMsUUFBUSxjQUFBSixlQUFBLHVCQUFmQSxlQUFBLENBQWlCSyxNQUFNLE1BQUssR0FBRyxJQUMvQixDQUFBRixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUUsTUFBTSxNQUFLLEdBQUcsSUFDckJDLE9BQU8sQ0FBQ0gsS0FBSyxhQUFMQSxLQUFLLGdCQUFBRixjQUFBLEdBQUxFLEtBQUssQ0FBRUksT0FBTyxjQUFBTixjQUFBLHVCQUFkQSxjQUFBLENBQWdCTyxRQUFRLENBQUMsMENBQTBDLENBQUMsQ0FBQyxJQUM3RUYsT0FBTyxDQUFDSCxLQUFLLGFBQUxBLEtBQUssZ0JBQUFELGVBQUEsR0FBTEMsS0FBSyxDQUFFSSxPQUFPLGNBQUFMLGVBQUEsdUJBQWRBLGVBQUEsQ0FBZ0JNLFFBQVEsQ0FBQyxzQkFB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
@@ -1,110 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- import { isMaiaCloneAgentsRoleBlocked } from '../../../constants/maiaTaskPanelAccess';
4
- import { mapCORLang } from '../../../lang/utils';
5
- import { fetchAgentsList } from './fetchAgentsList';
6
- import { buildAgentsPrefetchKey, hasAgentsPrefetchInFlight, hasAgentsPrefetchReady, registerAgentsPrefetch } from './agentsPrefetchSession';
7
- var LOG_PREFIX = '[MaiaAgentsPrefetch]';
8
- export { takeAgentsPrefetch, resetAgentsPrefetchSession, buildAgentsPrefetchKey } from './agentsPrefetchSession';
9
- var resolveLang = function resolveLang(lang) {
10
- var _ref, _window$lang, _window$userInfo;
11
- if (lang) {
12
- return mapCORLang(lang);
13
- }
14
- if (typeof window === 'undefined') {
15
- return 'es';
16
- }
17
- var raw = (_ref = (_window$lang = window.lang) !== null && _window$lang !== void 0 ? _window$lang : (_window$userInfo = window.userInfo) === null || _window$userInfo === void 0 || (_window$userInfo = _window$userInfo.info) === null || _window$userInfo === void 0 ? void 0 : _window$userInfo.lang) !== null && _ref !== void 0 ? _ref : 'es';
18
- return mapCORLang(String(raw).trim().toLowerCase());
19
- };
20
- var serializeError = function serializeError(error) {
21
- if (error instanceof Error) {
22
- return {
23
- name: error.name,
24
- message: error.message,
25
- stack: error.stack
26
- };
27
- }
28
- return {
29
- value: error
30
- };
31
- };
32
-
33
- /**
34
- * Prefetch en hover/idle: guarda agents en memoria hasta abrir MAIA.
35
- * getAgents consume con takeAgentsPrefetch; al cerrar el modal se resetea la sesión.
36
- */
37
- export var prefetchMaiaAgents = /*#__PURE__*/function () {
38
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2) {
39
- var _window$userInfo2;
40
- var section, lang, roleId, resolvedLang, isMultiAgents, userLike, canFetchCloneAgents, prefetchKey, promise, _t;
41
- return _regeneratorRuntime.wrap(function (_context) {
42
- while (1) switch (_context.prev = _context.next) {
43
- case 0:
44
- section = _ref2.section, lang = _ref2.lang, roleId = _ref2.roleId;
45
- resolvedLang = resolveLang(lang);
46
- isMultiAgents = !!window.MAIA_CHAT_AI_FEATURE_ACCESS && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
47
- userLike = roleId != null ? {
48
- role_id: roleId
49
- } : (_window$userInfo2 = window.userInfo) === null || _window$userInfo2 === void 0 ? void 0 : _window$userInfo2.info;
50
- canFetchCloneAgents = !isMaiaCloneAgentsRoleBlocked(userLike, section);
51
- prefetchKey = buildAgentsPrefetchKey(section, resolvedLang, isMultiAgents);
52
- if (!hasAgentsPrefetchReady(prefetchKey)) {
53
- _context.next = 1;
54
- break;
55
- }
56
- console.info(LOG_PREFIX, 'skip:already-ready', {
57
- prefetchKey: prefetchKey,
58
- section: section
59
- });
60
- return _context.abrupt("return");
61
- case 1:
62
- if (!hasAgentsPrefetchInFlight(prefetchKey)) {
63
- _context.next = 2;
64
- break;
65
- }
66
- console.info(LOG_PREFIX, 'skip:in-flight', {
67
- prefetchKey: prefetchKey,
68
- section: section
69
- });
70
- return _context.abrupt("return");
71
- case 2:
72
- console.info(LOG_PREFIX, 'start', {
73
- section: section,
74
- prefetchKey: prefetchKey
75
- });
76
- promise = fetchAgentsList({
77
- section: section,
78
- lang: resolvedLang,
79
- isMultiAgents: isMultiAgents,
80
- canFetchCloneAgents: canFetchCloneAgents
81
- });
82
- _context.prev = 3;
83
- _context.next = 4;
84
- return registerAgentsPrefetch(prefetchKey, promise);
85
- case 4:
86
- console.info(LOG_PREFIX, 'ok', {
87
- section: section,
88
- prefetchKey: prefetchKey
89
- });
90
- _context.next = 6;
91
- break;
92
- case 5:
93
- _context.prev = 5;
94
- _t = _context["catch"](3);
95
- console.error(LOG_PREFIX, 'failed', {
96
- section: section,
97
- prefetchKey: prefetchKey,
98
- error: serializeError(_t)
99
- });
100
- case 6:
101
- case "end":
102
- return _context.stop();
103
- }
104
- }, _callee, null, [[3, 5]]);
105
- }));
106
- return function prefetchMaiaAgents(_x) {
107
- return _ref3.apply(this, arguments);
108
- };
109
- }();
110
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwibWFwQ09STGFuZyIsImZldGNoQWdlbnRzTGlzdCIsImJ1aWxkQWdlbnRzUHJlZmV0Y2hLZXkiLCJoYXNBZ2VudHNQcmVmZXRjaEluRmxpZ2h0IiwiaGFzQWdlbnRzUHJlZmV0Y2hSZWFkeSIsInJlZ2lzdGVyQWdlbnRzUHJlZmV0Y2giLCJMT0dfUFJFRklYIiwidGFrZUFnZW50c1ByZWZldGNoIiwicmVzZXRBZ2VudHNQcmVmZXRjaFNlc3Npb24iLCJyZXNvbHZlTGFuZyIsImxhbmciLCJfcmVmIiwiX3dpbmRvdyRsYW5nIiwiX3dpbmRvdyR1c2VySW5mbyIsIndpbmRvdyIsInJhdyIsInVzZXJJbmZvIiwiaW5mbyIsIlN0cmluZyIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInNlcmlhbGl6ZUVycm9yIiwiZXJyb3IiLCJFcnJvciIsIm5hbWUiLCJtZXNzYWdlIiwic3RhY2siLCJ2YWx1ZSIsInByZWZldGNoTWFpYUFnZW50cyIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmMiIsIl93aW5kb3ckdXNlckluZm8yIiwic2VjdGlvbiIsInJvbGVJZCIsInJlc29sdmVkTGFuZyIsImlzTXVsdGlBZ2VudHMiLCJ1c2VyTGlrZSIsImNhbkZldGNoQ2xvbmVBZ2VudHMiLCJwcmVmZXRjaEtleSIsInByb21pc2UiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsInJvbGVfaWQiLCJjb25zb2xlIiwiYWJydXB0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9ib290c3RyYXAvcHJlZmV0Y2hNYWlhQWdlbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxBY2Nlc3MnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGZldGNoQWdlbnRzTGlzdCB9IGZyb20gJy4vZmV0Y2hBZ2VudHNMaXN0J1xuaW1wb3J0IHtcbiAgYnVpbGRBZ2VudHNQcmVmZXRjaEtleSxcbiAgaGFzQWdlbnRzUHJlZmV0Y2hJbkZsaWdodCxcbiAgaGFzQWdlbnRzUHJlZmV0Y2hSZWFkeSxcbiAgcmVnaXN0ZXJBZ2VudHNQcmVmZXRjaCxcbn0gZnJvbSAnLi9hZ2VudHNQcmVmZXRjaFNlc3Npb24nXG5cbmNvbnN0IExPR19QUkVGSVggPSAnW01haWFBZ2VudHNQcmVmZXRjaF0nXG5cbmV4cG9ydCB0eXBlIFByZWZldGNoTWFpYUFnZW50c1BhcmFtcyA9IHtcbiAgc2VjdGlvbjogU2VjdGlvblxuICBsYW5nPzogc3RyaW5nXG4gIC8qKiBQYXJhIHJlc29sdmVyIHBlcm1pc29zIGRlIGNsb25lIGFnZW50cyBjdWFuZG8gbm8gaGF5IFVzZXJQcm92aWRlciBtb250YWRvICovXG4gIHJvbGVJZD86IG51bWJlclxufVxuXG5leHBvcnQgeyB0YWtlQWdlbnRzUHJlZmV0Y2gsIHJlc2V0QWdlbnRzUHJlZmV0Y2hTZXNzaW9uLCBidWlsZEFnZW50c1ByZWZldGNoS2V5IH0gZnJvbSAnLi9hZ2VudHNQcmVmZXRjaFNlc3Npb24nXG5cbmNvbnN0IHJlc29sdmVMYW5nID0gKGxhbmc/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAobGFuZykge1xuICAgIHJldHVybiBtYXBDT1JMYW5nKGxhbmcpXG4gIH1cbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuICdlcydcbiAgfVxuICBjb25zdCByYXcgPSB3aW5kb3cubGFuZyA/PyB3aW5kb3cudXNlckluZm8/LmluZm8/LmxhbmcgPz8gJ2VzJ1xuICByZXR1cm4gbWFwQ09STGFuZyhTdHJpbmcocmF3KS50cmltKCkudG9Mb3dlckNhc2UoKSlcbn1cblxuY29uc3Qgc2VyaWFsaXplRXJyb3IgPSAoZXJyb3I6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgcmV0dXJuIHsgbmFtZTogZXJyb3IubmFtZSwgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrIH1cbiAgfVxuICByZXR1cm4geyB2YWx1ZTogZXJyb3IgfVxufVxuXG4vKipcbiAqIFByZWZldGNoIGVuIGhvdmVyL2lkbGU6IGd1YXJkYSBhZ2VudHMgZW4gbWVtb3JpYSBoYXN0YSBhYnJpciBNQUlBLlxuICogZ2V0QWdlbnRzIGNvbnN1bWUgY29uIHRha2VBZ2VudHNQcmVmZXRjaDsgYWwgY2VycmFyIGVsIG1vZGFsIHNlIHJlc2V0ZWEgbGEgc2VzacOzbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHByZWZldGNoTWFpYUFnZW50cyA9IGFzeW5jICh7IHNlY3Rpb24sIGxhbmcsIHJvbGVJZCB9OiBQcmVmZXRjaE1haWFBZ2VudHNQYXJhbXMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVzb2x2ZWRMYW5nID0gcmVzb2x2ZUxhbmcobGFuZylcbiAgY29uc3QgaXNNdWx0aUFnZW50cyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IHVzZXJMaWtlID0gcm9sZUlkICE9IG51bGwgPyB7IHJvbGVfaWQ6IHJvbGVJZCB9IDogd2luZG93LnVzZXJJbmZvPy5pbmZvXG4gIGNvbnN0IGNhbkZldGNoQ2xvbmVBZ2VudHMgPSAhaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCh1c2VyTGlrZSwgc2VjdGlvbilcbiAgY29uc3QgcHJlZmV0Y2hLZXkgPSBidWlsZEFnZW50c1ByZWZldGNoS2V5KHNlY3Rpb24sIHJlc29sdmVkTGFuZywgaXNNdWx0aUFnZW50cylcblxuICBpZiAoaGFzQWdlbnRzUHJlZmV0Y2hSZWFkeShwcmVmZXRjaEtleSkpIHtcbiAgICBjb25zb2xlLmluZm8oTE9HX1BSRUZJWCwgJ3NraXA6YWxyZWFkeS1yZWFkeScsIHsgcHJlZmV0Y2hLZXksIHNlY3Rpb24gfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChoYXNBZ2VudHNQcmVmZXRjaEluRmxpZ2h0KHByZWZldGNoS2V5KSkge1xuICAgIGNvbnNvbGUuaW5mbyhMT0dfUFJFRklYLCAnc2tpcDppbi1mbGlnaHQnLCB7IHByZWZldGNoS2V5LCBzZWN0aW9uIH0pXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zb2xlLmluZm8oTE9HX1BSRUZJWCwgJ3N0YXJ0JywgeyBzZWN0aW9uLCBwcmVmZXRjaEtleSB9KVxuXG4gIGNvbnN0IHByb21pc2UgPSBmZXRjaEFnZW50c0xpc3Qoe1xuICAgIHNlY3Rpb24sXG4gICAgbGFuZzogcmVzb2x2ZWRMYW5nLFxuICAgIGlzTXVsdGlBZ2VudHMsXG4gICAgY2FuRmV0Y2hDbG9uZUFnZW50cyxcbiAgfSlcblxuICB0cnkge1xuICAgIGF3YWl0IHJlZ2lzdGVyQWdlbnRzUHJlZmV0Y2gocHJlZmV0Y2hLZXksIHByb21pc2UpXG4gICAgY29uc29sZS5pbmZvKExPR19QUkVGSVgsICdvaycsIHsgc2VjdGlvbiwgcHJlZmV0Y2hLZXkgfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKExPR19QUkVGSVgsICdmYWlsZWQnLCB7IHNlY3Rpb24sIHByZWZldGNoS2V5LCBlcnJvcjogc2VyaWFsaXplRXJyb3IoZXJy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