@projectcor/maia-components 2.11.51-0 → 2.11.51-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.
@@ -0,0 +1,256 @@
1
+ import { normalizeHitlToolName } from './hitlAnalytics';
2
+ var THINKING_MESSAGE_KEYS = ['chat.activity.thinking.analyzing', 'chat.activity.thinking.reviewing', 'chat.activity.thinking.planning'];
3
+ var GENERATING_MESSAGE_KEYS = ['chat.activity.generating.preparing', 'chat.activity.generating.considering', 'chat.activity.generating.almostReady'];
4
+ var SEARCH_MESSAGE_KEYS = ['chat.activity.search.scanning', 'chat.activity.search.summarizing'];
5
+ var DEEP_SEARCH_MESSAGE_KEYS = ['chat.activity.deepSearch.exploring', 'chat.activity.deepSearch.crossChecking'];
6
+ var ATTACHMENT_MESSAGE_KEYS = ['chat.activity.attachment.reading', 'chat.activity.attachment.extracting'];
7
+ export var WRITING_ACTIVITY_MESSAGE_KEY = 'chat.activity.writing.composing';
8
+
9
+ /** Tools HITL / node SSE → key i18n del indicador de actividad (tiempo presente continuo). */
10
+ var HITL_TOOL_ACTIVITY_KEYS = {
11
+ create_task: 'chat.activity.creatingTask',
12
+ clone_task: 'chat.activity.creatingTask',
13
+ create_tasks_batch: 'chat.activity.creatingTasksBatch',
14
+ create_agent: 'chat.activity.creatingAgent',
15
+ edit_agent: 'chat.activity.editingAgent',
16
+ edit_task: 'chat.activity.editingTask',
17
+ edit_tasks_batch: 'chat.activity.editingTasksBatch',
18
+ delete_task: 'chat.activity.deletingTask',
19
+ delete_tasks_batch: 'chat.activity.deletingTasksBatch',
20
+ task_assign: 'chat.activity.assigningUser',
21
+ task_unassign: 'chat.activity.unassigningUser',
22
+ assign_task_label: 'chat.activity.assigningLabel',
23
+ update_task_type: 'chat.activity.updatingTaskType',
24
+ update_estimated_hours: 'chat.activity.updatingEstimatedHours',
25
+ update_deliverable: 'chat.activity.updatingDeliverable',
26
+ create_hour: 'chat.activity.loggingHours',
27
+ create_checklist: 'chat.activity.creatingChecklist',
28
+ get_task_date_hours: 'chat.activity.queryingHours',
29
+ configure_agent_access: 'chat.activity.configuringAgentAccess',
30
+ send_task_message: 'chat.activity.sendingTaskMessage',
31
+ delete_checklist_item: 'chat.activity.deletingChecklistItem',
32
+ remove_task_type: 'chat.activity.removingTaskType',
33
+ remove_task_label: 'chat.activity.removingLabel',
34
+ count_deliverable: 'chat.activity.updatingDeliverableCount',
35
+ create_rework: 'chat.activity.creatingRework',
36
+ update_rework: 'chat.activity.updatingRework'
37
+ };
38
+ var HITL_TOOL_NAMES_BY_SPECIFICITY = Object.keys(HITL_TOOL_ACTIVITY_KEYS).sort(function (a, b) {
39
+ return b.length - a.length;
40
+ });
41
+ export var mapHitlToolNameToStreamActivity = function mapHitlToolNameToStreamActivity(toolName, t, options) {
42
+ var normalized = normalizeHitlToolName(toolName);
43
+ var key = HITL_TOOL_ACTIVITY_KEYS[normalized];
44
+ if (key) {
45
+ return {
46
+ phase: 'action',
47
+ message: t(key)
48
+ };
49
+ }
50
+ if (options !== null && options !== void 0 && options.useResumingFallback) {
51
+ return {
52
+ phase: 'action',
53
+ message: t('chat.activity.resumingAction')
54
+ };
55
+ }
56
+ return {
57
+ phase: 'action',
58
+ message: t('chat.executingAction')
59
+ };
60
+ };
61
+ var resolveHitlToolFromNodeMessage = function resolveHitlToolFromNodeMessage(nodeMessage) {
62
+ var normalized = nodeMessage.toLowerCase().trim();
63
+ if (!normalized) return null;
64
+ if (HITL_TOOL_ACTIVITY_KEYS[normalized]) {
65
+ return normalized;
66
+ }
67
+ var asToolName = normalizeHitlToolName(normalized.replace(/\s+/g, '_'));
68
+ if (HITL_TOOL_ACTIVITY_KEYS[asToolName]) {
69
+ return asToolName;
70
+ }
71
+ var matchedTool = HITL_TOOL_NAMES_BY_SPECIFICITY.find(function (toolName) {
72
+ return normalized.includes(toolName);
73
+ });
74
+ return matchedTool !== null && matchedTool !== void 0 ? matchedTool : null;
75
+ };
76
+ export var ACTIVITY_MESSAGE_ROTATE_MS = 3200;
77
+ var ROTATABLE_PHASES = ['generating', 'thinking', 'search', 'deep_search', 'attachment'];
78
+ var getMessageKeysForPhase = function getMessageKeysForPhase(phase) {
79
+ switch (phase) {
80
+ case 'generating':
81
+ return GENERATING_MESSAGE_KEYS;
82
+ case 'thinking':
83
+ return THINKING_MESSAGE_KEYS;
84
+ case 'search':
85
+ return SEARCH_MESSAGE_KEYS;
86
+ case 'deep_search':
87
+ return DEEP_SEARCH_MESSAGE_KEYS;
88
+ case 'attachment':
89
+ return ATTACHMENT_MESSAGE_KEYS;
90
+ default:
91
+ return null;
92
+ }
93
+ };
94
+ export var getStreamActivityMessageAtIndex = function getStreamActivityMessageAtIndex(phase, index, t) {
95
+ if (phase === 'writing') {
96
+ return t(WRITING_ACTIVITY_MESSAGE_KEY);
97
+ }
98
+ var keys = getMessageKeysForPhase(phase);
99
+ if (!(keys !== null && keys !== void 0 && keys.length)) {
100
+ return '';
101
+ }
102
+ var clampedIndex = Math.min(Math.max(0, index), keys.length - 1);
103
+ return t(keys[clampedIndex]);
104
+ };
105
+ export var getThinkingLoadingMessage = function getThinkingLoadingMessage(index, t) {
106
+ return getStreamActivityMessageAtIndex('thinking', index, t);
107
+ };
108
+ export var getGeneratingLoadingMessage = function getGeneratingLoadingMessage(index, t) {
109
+ return getStreamActivityMessageAtIndex('generating', index, t);
110
+ };
111
+ export var canAdvanceStreamActivityMessage = function canAdvanceStreamActivityMessage(phase, currentIndex) {
112
+ var keys = getMessageKeysForPhase(phase);
113
+ if (!keys) {
114
+ return false;
115
+ }
116
+ return currentIndex < keys.length - 1;
117
+ };
118
+ export var advanceStreamActivityMessage = function advanceStreamActivityMessage(activity, currentIndex, t) {
119
+ if (!canAdvanceStreamActivityMessage(activity.phase, currentIndex)) {
120
+ return null;
121
+ }
122
+ var nextIndex = currentIndex + 1;
123
+ return {
124
+ activity: {
125
+ phase: activity.phase,
126
+ message: getStreamActivityMessageAtIndex(activity.phase, nextIndex, t)
127
+ },
128
+ nextIndex: nextIndex
129
+ };
130
+ };
131
+ export var canRotateStreamActivityPhase = function canRotateStreamActivityPhase(phase) {
132
+ return ROTATABLE_PHASES.includes(phase);
133
+ };
134
+ export var getWritingStreamActivity = function getWritingStreamActivity(t) {
135
+ return {
136
+ phase: 'writing',
137
+ message: t(WRITING_ACTIVITY_MESSAGE_KEY)
138
+ };
139
+ };
140
+ export var getInitialStreamActivity = function getInitialStreamActivity(t, options) {
141
+ if (options.isWebSearchActive) {
142
+ return {
143
+ phase: 'search',
144
+ message: t(SEARCH_MESSAGE_KEYS[0])
145
+ };
146
+ }
147
+ if (options.isDeepSearchActive) {
148
+ return {
149
+ phase: 'deep_search',
150
+ message: t(DEEP_SEARCH_MESSAGE_KEYS[0])
151
+ };
152
+ }
153
+ if (options.hasAttachments) {
154
+ return {
155
+ phase: 'attachment',
156
+ message: t(ATTACHMENT_MESSAGE_KEYS[0])
157
+ };
158
+ }
159
+ return {
160
+ phase: 'generating',
161
+ message: t(GENERATING_MESSAGE_KEYS[0])
162
+ };
163
+ };
164
+ export var mapNodeMessageToStreamActivity = function mapNodeMessageToStreamActivity(nodeMessage, t, options) {
165
+ var normalized = nodeMessage.toLowerCase();
166
+ var hitlTool = resolveHitlToolFromNodeMessage(nodeMessage);
167
+ if (hitlTool) {
168
+ return mapHitlToolNameToStreamActivity(hitlTool, t, options);
169
+ }
170
+ if (normalized.includes('response_file_generation') || normalized.includes('generando archivo') || normalized.includes('generating file')) {
171
+ return {
172
+ phase: 'action',
173
+ message: t('chat.activity.generatingFile')
174
+ };
175
+ }
176
+ if (normalized.includes('resuming') || normalized.includes('aprobada') || normalized.includes('approved')) {
177
+ return {
178
+ phase: 'action',
179
+ message: t('chat.activity.resumingAction')
180
+ };
181
+ }
182
+ if (normalized.includes('tavily') || normalized.includes('search_web') || normalized.includes('buscando en la web') || normalized.includes('searching the web')) {
183
+ return {
184
+ phase: 'search',
185
+ message: t(SEARCH_MESSAGE_KEYS[0])
186
+ };
187
+ }
188
+ if (options !== null && options !== void 0 && options.useResumingFallback) {
189
+ return {
190
+ phase: 'action',
191
+ message: t('chat.activity.resumingAction')
192
+ };
193
+ }
194
+ return {
195
+ phase: 'action',
196
+ message: t('chat.executingAction')
197
+ };
198
+ };
199
+ export var resolveStreamLoadingDisplay = function resolveStreamLoadingDisplay(params) {
200
+ var activeKeys = Object.keys(params.activeLoadings);
201
+ if (activeKeys.length > 0) {
202
+ var firstKey = activeKeys[0];
203
+ var raw = params.activeLoadings[firstKey];
204
+ if (raw && raw !== params.t('chat.processing')) {
205
+ var hitlResumeOptions = {
206
+ useResumingFallback: true
207
+ };
208
+ var hitlTool = resolveHitlToolFromNodeMessage(raw);
209
+ if (hitlTool) {
210
+ return mapHitlToolNameToStreamActivity(hitlTool, params.t, hitlResumeOptions);
211
+ }
212
+ return mapNodeMessageToStreamActivity(raw, params.t, hitlResumeOptions);
213
+ }
214
+ return {
215
+ phase: 'processing',
216
+ message: params.t('chat.processing')
217
+ };
218
+ }
219
+ if (params.streamActivity) {
220
+ return params.streamActivity;
221
+ }
222
+ if (params.loadingMessage) {
223
+ if (params.loadingMessage === params.t('chat.writing') || params.loadingMessage === params.t(WRITING_ACTIVITY_MESSAGE_KEY)) {
224
+ return getWritingStreamActivity(params.t);
225
+ }
226
+ if (params.loadingMessage === params.t('chat.generating')) {
227
+ return {
228
+ phase: 'generating',
229
+ message: params.loadingMessage
230
+ };
231
+ }
232
+ if (params.loadingMessage === params.t('chat.generatingWebSearch') || params.loadingMessage === params.t('chat.generatingDeepSearch') || params.loadingMessage === params.t('chat.generatingAttachment')) {
233
+ return getInitialStreamActivity(params.t, {
234
+ isWebSearchActive: params.loadingMessage === params.t('chat.generatingWebSearch'),
235
+ isDeepSearchActive: params.loadingMessage === params.t('chat.generatingDeepSearch'),
236
+ hasAttachments: params.loadingMessage === params.t('chat.generatingAttachment')
237
+ });
238
+ }
239
+ return {
240
+ phase: 'action',
241
+ message: params.loadingMessage
242
+ };
243
+ }
244
+ if (params.waitingResponse) {
245
+ return getInitialStreamActivity(params.t, {
246
+ isWebSearchActive: params.isWebSearchActive,
247
+ isDeepSearchActive: params.isDeepSearchActive,
248
+ hasAttachments: params.hasAttachments
249
+ });
250
+ }
251
+ return null;
252
+ };
253
+ export var isStreamingPlaceholderMessageId = function isStreamingPlaceholderMessageId(messageId) {
254
+ return typeof messageId === 'string' && messageId.includes('-streaming');
255
+ };
256
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJUSElOS0lOR19NRVNTQUdFX0tFWVMiLCJHRU5FUkFUSU5HX01FU1NBR0VfS0VZUyIsIlNFQVJDSF9NRVNTQUdFX0tFWVMiLCJERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVMiLCJBVFRBQ0hNRU5UX01FU1NBR0VfS0VZUyIsIldSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkiLCJISVRMX1RPT0xfQUNUSVZJVFlfS0VZUyIsImNyZWF0ZV90YXNrIiwiY2xvbmVfdGFzayIsImNyZWF0ZV90YXNrc19iYXRjaCIsImNyZWF0ZV9hZ2VudCIsImVkaXRfYWdlbnQiLCJlZGl0X3Rhc2siLCJlZGl0X3Rhc2tzX2JhdGNoIiwiZGVsZXRlX3Rhc2siLCJkZWxldGVfdGFza3NfYmF0Y2giLCJ0YXNrX2Fzc2lnbiIsInRhc2tfdW5hc3NpZ24iLCJhc3NpZ25fdGFza19sYWJlbCIsInVwZGF0ZV90YXNrX3R5cGUiLCJ1cGRhdGVfZXN0aW1hdGVkX2hvdXJzIiwidXBkYXRlX2RlbGl2ZXJhYmxlIiwiY3JlYXRlX2hvdXIiLCJjcmVhdGVfY2hlY2tsaXN0IiwiZ2V0X3Rhc2tfZGF0ZV9ob3VycyIsImNvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MiLCJzZW5kX3Rhc2tfbWVzc2FnZSIsImRlbGV0ZV9jaGVja2xpc3RfaXRlbSIsInJlbW92ZV90YXNrX3R5cGUiLCJyZW1vdmVfdGFza19sYWJlbCIsImNvdW50X2RlbGl2ZXJhYmxlIiwiY3JlYXRlX3Jld29yayIsInVwZGF0ZV9yZXdvcmsiLCJISVRMX1RPT0xfTkFNRVNfQllfU1BFQ0lGSUNJVFkiLCJPYmplY3QiLCJrZXlzIiwic29ydCIsImEiLCJiIiwibGVuZ3RoIiwibWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eSIsInRvb2xOYW1lIiwidCIsIm9wdGlvbnMiLCJub3JtYWxpemVkIiwia2V5IiwicGhhc2UiLCJtZXNzYWdlIiwidXNlUmVzdW1pbmdGYWxsYmFjayIsInJlc29sdmVIaXRsVG9vbEZyb21Ob2RlTWVzc2FnZSIsIm5vZGVNZXNzYWdlIiwidG9Mb3dlckNhc2UiLCJ0cmltIiwiYXNUb29sTmFtZSIsInJlcGxhY2UiLCJtYXRjaGVkVG9vbCIsImZpbmQiLCJpbmNsdWRlcyIsIkFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TIiwiUk9UQVRBQkxFX1BIQVNFUyIsImdldE1lc3NhZ2VLZXlzRm9yUGhhc2UiLCJnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4IiwiaW5kZXgiLCJjbGFtcGVkSW5kZXgiLCJNYXRoIiwibWluIiwibWF4IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldEdlbmVyYXRpbmdMb2FkaW5nTWVzc2FnZSIsImNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjdXJyZW50SW5kZXgiLCJhZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiYWN0aXZpdHkiLCJuZXh0SW5kZXgiLCJjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlIiwiZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJoYXNBdHRhY2htZW50cyIsIm1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eSIsImhpdGxUb29sIiwicmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IiwicGFyYW1zIiwiYWN0aXZlS2V5cyIsImFjdGl2ZUxvYWRpbmdzIiwiZmlyc3RLZXkiLCJyYXciLCJoaXRsUmVzdW1lT3B0aW9ucyIsInN0cmVhbUFjdGl2aXR5IiwibG9hZGluZ01lc3NhZ2UiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwibWVzc2FnZUlkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtQWN0aXZpdHlQaGFzZSB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHsgbm9ybWFsaXplSGl0bFRvb2xOYW1lIH0gZnJvbSAnLi9oaXRsQW5hbHl0aWNzJ1xuXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxuY29uc3QgVEhJTktJTkdfTUVTU0FHRV9LRVlTID0gW1xuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5hbmFseXppbmcnLFxuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5yZXZpZXdpbmcnLFxuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5wbGFubmluZycsXG5dIGFzIGNvbnN0XG5cbmNvbnN0IEdFTkVSQVRJTkdfTUVTU0FHRV9LRVlTID0gW1xuICAnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nLnByZXBhcmluZycsXG4gICdjaGF0LmFjdGl2aXR5LmdlbmVyYXRpbmcuY29uc2lkZXJpbmcnLFxuICAnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nLmFsbW9zdFJlYWR5Jyxcbl0gYXMgY29uc3RcblxuY29uc3QgU0VBUkNIX01FU1NBR0VfS0VZUyA9IFsnY2hhdC5hY3Rpdml0eS5zZWFyY2guc2Nhbm5pbmcnLCAnY2hhdC5hY3Rpdml0eS5zZWFyY2guc3VtbWFyaXppbmcnXSBhcyBjb25zdFxuXG5jb25zdCBERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVMgPSBbXG4gICdjaGF0LmFjdGl2aXR5LmRlZXBTZWFyY2guZXhwbG9yaW5nJyxcbiAgJ2NoYXQuYWN0aXZpdHkuZGVlcFNlYXJjaC5jcm9zc0NoZWNraW5nJyxcbl0gYXMgY29uc3RcblxuY29uc3QgQVRUQUNITUVOVF9NRVNTQUdFX0tFWVMgPSBbJ2NoYXQuYWN0aXZpdHkuYXR0YWNobWVudC5yZWFkaW5nJywgJ2NoYXQuYWN0aXZpdHkuYXR0YWNobWVudC5leHRyYWN0aW5nJ10gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IFdSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkgPSAnY2hhdC5hY3Rpdml0eS53cml0aW5nLmNvbXBvc2luZycgYXMgY29uc3RcblxuLyoqIFRvb2xzIEhJVEwgLyBub2RlIFNTRSDihpIga2V5IGkxOG4gZGVsIGluZGljYWRvciBkZSBhY3RpdmlkYWQgKHRpZW1wbyBwcmVzZW50ZSBjb250aW51bykuICovXG5jb25zdCBISVRMX1RPT0xfQUNUSVZJVFlfS0VZUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY3JlYXRlX3Rhc2s6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nVGFzaycsXG4gIGNsb25lX3Rhc2s6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nVGFzaycsXG4gIGNyZWF0ZV90YXNrc19iYXRjaDogJ2NoYXQuYWN0aXZpdHkuY3JlYXRpbmdUYXNrc0JhdGNoJyxcbiAgY3JlYXRlX2FnZW50OiAnY2hhdC5hY3Rpdml0eS5jcmVhdGluZ0FnZW50JyxcbiAgZWRpdF9hZ2VudDogJ2NoYXQuYWN0aXZpdHkuZWRpdGluZ0FnZW50JyxcbiAgZWRpdF90YXNrOiAnY2hhdC5hY3Rpdml0eS5lZGl0aW5nVGFzaycsXG4gIGVkaXRfdGFza3NfYmF0Y2g6ICdjaGF0LmFjdGl2aXR5LmVkaXRpbmdUYXNrc0JhdGNoJyxcbiAgZGVsZXRlX3Rhc2s6ICdjaGF0LmFjdGl2aXR5LmRlbGV0aW5nVGFzaycsXG4gIGRlbGV0ZV90YXNrc19iYXRjaDogJ2NoYXQuYWN0aXZpdHkuZGVsZXRpbmdUYXNrc0JhdGNoJyxcbiAgdGFza19hc3NpZ246ICdjaGF0LmFjdGl2aXR5LmFzc2lnbmluZ1VzZXInLFxuICB0YXNrX3VuYXNzaWduOiAnY2hhdC5hY3Rpdml0eS51bmFzc2lnbmluZ1VzZXInLFxuICBhc3NpZ25fdGFza19sYWJlbDogJ2NoYXQuYWN0aXZpdHkuYXNzaWduaW5nTGFiZWwnLFxuICB1cGRhdGVfdGFza190eXBlOiAnY2hhdC5hY3Rpdml0eS51cGRhdGluZ1Rhc2tUeXBlJyxcbiAgdXBkYXRlX2VzdGltYXRlZF9ob3VyczogJ2NoYXQuYWN0aXZpdHkudXBkYXRpbmdFc3RpbWF0ZWRIb3VycycsXG4gIHVwZGF0ZV9kZWxpdmVyYWJsZTogJ2NoYXQuYWN0aXZpdHkudXBkYXRpbmdEZWxpdmVyYWJsZScsXG4gIGNyZWF0ZV9ob3VyOiAnY2hhdC5hY3Rpdml0eS5sb2dnaW5nSG91cnMnLFxuICBjcmVhdGVfY2hlY2tsaXN0OiAnY2hhdC5hY3Rpdml0eS5jcmVhdGluZ0NoZWNrbGlzdCcsXG4gIGdldF90YXNrX2RhdGVfaG91cnM6ICdjaGF0LmFjdGl2aXR5LnF1ZXJ5aW5nSG91cnMnLFxuICBjb25maWd1cmVfYWdlbnRfYWNjZXNzOiAnY2hhdC5hY3Rpdml0eS5jb25maWd1cmluZ0FnZW50QWNjZXNzJyxcbiAgc2VuZF90YXNrX21lc3NhZ2U6ICdjaGF0LmFjdGl2aXR5LnNlbmRpbmdUYXNrTWVzc2FnZScsXG4gIGRlbGV0ZV9jaGVja2xpc3RfaXRlbTogJ2NoYXQuYWN0aXZpdHkuZGVsZXRpbmdDaGVja2xpc3RJdGVtJyxcbiAgcmVtb3ZlX3Rhc2tfdHlwZTogJ2NoYXQuYWN0aXZpdHkucmVtb3ZpbmdUYXNrVHlwZScsXG4gIHJlbW92ZV90YXNrX2xhYmVsOiAnY2hhdC5hY3Rpdml0eS5yZW1vdmluZ0xhYmVsJyxcbiAgY291bnRfZGVsaXZlcmFibGU6ICdjaGF0LmFjdGl2aXR5LnVwZGF0aW5nRGVsaXZlcmFibGVDb3VudCcsXG4gIGNyZWF0ZV9yZXdvcms6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nUmV3b3JrJyxcbiAgdXBkYXRlX3Jld29yazogJ2NoYXQuYWN0aXZpdHkudXBkYXRpbmdSZXdvcmsnLFxufVxuXG5jb25zdCBISVRMX1RPT0xfTkFNRVNfQllfU1BFQ0lGSUNJVFkgPSBPYmplY3Qua2V5cyhISVRMX1RPT0xfQUNUSVZJVFlfS0VZUykuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aClcblxuZXhwb3J0IGNvbnN0IG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkgPSAoXG4gIHRvb2xOYW1lOiBzdHJpbmcsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBvcHRpb25zPzogeyB1c2VSZXN1bWluZ0ZhbGxiYWNrPzogYm9vbGVhbiB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVIaXRsVG9vbE5hbWUodG9vbE5hbWUpXG4gIGNvbnN0IGtleSA9IEhJVExfVE9PTF9BQ1RJVklUWV9LRVlTW25vcm1hbGl6ZWRdXG4gIGlmIChrZXkpIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoa2V5KSB9XG4gIH1cbiAgaWYgKG9wdGlvbnM/LnVzZVJlc3VtaW5nRmFsbGJhY2spIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkucmVzdW1pbmdBY3Rpb24nKSB9XG4gIH1cbiAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmV4ZWN1dGluZ0FjdGlvbicpIH1cbn1cblxuY29uc3QgcmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlID0gKG5vZGVNZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vZGVNZXNzYWdlLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gIGlmICghbm9ybWFsaXplZCkgcmV0dXJuIG51bGxcblxuICBpZiAoSElUTF9UT09MX0FDVElWSVRZX0tFWVNbbm9ybWFsaXplZF0pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplZFxuICB9XG5cbiAgY29uc3QgYXNUb29sTmFtZSA9IG5vcm1hbGl6ZUhpdGxUb29sTmFtZShub3JtYWxpemVkLnJlcGxhY2UoL1xccysvZywgJ18nKSlcbiAgaWYgKEhJVExfVE9PTF9BQ1RJVklUWV9LRVlTW2FzVG9vbE5hbWVdKSB7XG4gICAgcmV0dXJuIGFzVG9vbE5hbWVcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZWRUb29sID0gSElUTF9UT09MX05BTUVTX0JZX1NQRUNJRklDSVRZLmZpbmQodG9vbE5hbWUgPT4gbm9ybWFsaXplZC5pbmNsdWRlcyh0b29sTmFtZSkpXG4gIHJldHVybiBtYXRjaGVkVG9vbCA/PyBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyA9IDMyMDBcblxuY29uc3QgUk9UQVRBQkxFX1BIQVNFUzogU3RyZWFtQWN0aXZpdHlQaGFzZVtdID0gWydnZW5lcmF0aW5nJywgJ3RoaW5raW5nJywgJ3NlYXJjaCcsICdkZWVwX3NlYXJjaCcsICdhdHRhY2htZW50J11cblxuY29uc3QgZ2V0TWVzc2FnZUtleXNGb3JQaGFzZSA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSk6IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAocGhhc2UpIHtcbiAgICBjYXNlICdnZW5lcmF0aW5nJzpcbiAgICAgIHJldHVybiBHRU5FUkFUSU5HX01FU1NBR0VfS0VZU1xuICAgIGNhc2UgJ3RoaW5raW5nJzpcbiAgICAgIHJldHVybiBUSElOS0lOR19NRVNTQUdFX0tFWVNcbiAgICBjYXNlICdzZWFyY2gnOlxuICAgICAgcmV0dXJuIFNFQVJDSF9NRVNTQUdFX0tFWVNcbiAgICBjYXNlICdkZWVwX3NlYXJjaCc6XG4gICAgICByZXR1cm4gREVFUF9TRUFSQ0hfTUVTU0FHRV9LRVlTXG4gICAgY2FzZSAnYXR0YWNobWVudCc6XG4gICAgICByZXR1cm4gQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSwgaW5kZXg6IG51bWJlciwgdDogVHJhbnNsYXRlRm4pOiBzdHJpbmcgPT4ge1xuICBpZiAocGhhc2UgPT09ICd3cml0aW5nJykge1xuICAgIHJldHVybiB0KFdSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkpXG4gIH1cblxuICBjb25zdCBrZXlzID0gZ2V0TWVzc2FnZUtleXNGb3JQaGFzZShwaGFzZSlcbiAgaWYgKCFrZXlzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGNvbnN0IGNsYW1wZWRJbmRleCA9IE1hdGgubWluKE1hdGgubWF4KDAsIGluZGV4KSwga2V5cy5sZW5ndGggLSAxKVxuICByZXR1cm4gdChrZXlzW2NsYW1wZWRJbmRleF0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlID0gKGluZGV4OiBudW1iZXIsIHQ6IFRyYW5zbGF0ZUZuKTogc3RyaW5nID0+XG4gIGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgoJ3RoaW5raW5nJywgaW5kZXgsIHQpXG5cbmV4cG9ydCBjb25zdCBnZXRHZW5lcmF0aW5nTG9hZGluZ01lc3NhZ2UgPSAoaW5kZXg6IG51bWJlciwgdDogVHJhbnNsYXRlRm4pOiBzdHJpbmcgPT5cbiAgZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCgnZ2VuZXJhdGluZycsIGluZGV4LCB0KVxuXG5leHBvcnQgY29uc3QgY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSwgY3VycmVudEluZGV4OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgY29uc3Qga2V5cyA9IGdldE1lc3NhZ2VLZXlzRm9yUGhhc2UocGhhc2UpXG4gIGlmICgha2V5cykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBjdXJyZW50SW5kZXggPCBrZXlzLmxlbmd0aCAtIDFcbn1cblxuZXhwb3J0IGNvbnN0IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UgPSAoXG4gIGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSxcbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIHQ6IFRyYW5zbGF0ZUZuXG4pOiB7IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eTsgbmV4dEluZGV4OiBudW1iZXIgfSB8IG51bGwgPT4ge1xuICBpZiAoIWNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UoYWN0aXZpdHkucGhhc2UsIGN1cnJlbnRJbmRleCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ICsgMVxuICByZXR1cm4ge1xuICAgIGFjdGl2aXR5OiB7XG4gICAgICBwaGFzZTogYWN0aXZpdHkucGhhc2UsXG4gICAgICBtZXNzYWdlOiBnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4KGFjdGl2aXR5LnBoYXNlLCBuZXh0SW5kZXgsIHQpLFxuICAgIH0sXG4gICAgbmV4dEluZGV4LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlID0gKHBoYXNlOiBTdHJlYW1BY3Rpdml0eVBoYXNlKTogYm9vbGVhbiA9PiBST1RBVEFCTEVfUEhBU0VTLmluY2x1ZGVzKHBoYXNlKVxuXG5leHBvcnQgY29uc3QgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5ID0gKHQ6IFRyYW5zbGF0ZUZuKTogU3RyZWFtQWN0aXZpdHkgPT4gKHtcbiAgcGhhc2U6ICd3cml0aW5nJyxcbiAgbWVzc2FnZTogdChXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkgPSAoXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBvcHRpb25zOiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGhhc0F0dGFjaG1lbnRzPzogYm9vbGVhblxuICB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGlmIChvcHRpb25zLmlzV2ViU2VhcmNoQWN0aXZlKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdzZWFyY2gnLCBtZXNzYWdlOiB0KFNFQVJDSF9NRVNTQUdFX0tFWVNbMF0pIH1cbiAgfVxuICBpZiAob3B0aW9ucy5pc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2RlZXBfc2VhcmNoJywgbWVzc2FnZTogdChERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVNbMF0pIH1cbiAgfVxuICBpZiAob3B0aW9ucy5oYXNBdHRhY2htZW50cykge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYXR0YWNobWVudCcsIG1lc3NhZ2U6IHQoQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNbMF0pIH1cbiAgfVxuICByZXR1cm4geyBwaGFzZTogJ2dlbmVyYXRpbmcnLCBtZXNzYWdlOiB0KEdFTkVSQVRJTkdfTUVTU0FHRV9LRVlTWzBdKSB9XG59XG5cbmV4cG9ydCBjb25zdCBtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkgPSAoXG4gIG5vZGVNZXNzYWdlOiBzdHJpbmcsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBvcHRpb25zPzogeyB1c2VSZXN1bWluZ0ZhbGxiYWNrPzogYm9vbGVhbiB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub2RlTWVzc2FnZS50b0xvd2VyQ2FzZSgpXG5cbiAgY29uc3QgaGl0bFRvb2wgPSByZXNvbHZlSGl0bFRvb2xGcm9tTm9kZU1lc3NhZ2Uobm9kZU1lc3NhZ2UpXG4gIGlmIChoaXRsVG9vbCkge1xuICAgIHJldHVybiBtYXBIaXRsVG9vbE5hbWVUb1N0cmVhbUFjdGl2aXR5KGhpdGxUb29sLCB0LCBvcHRpb25zKVxuICB9XG5cbiAgaWYgKFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3Jlc3BvbnNlX2ZpbGVfZ2VuZXJhdGlvbicpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnZ2VuZXJhbmRvIGFyY2hpdm8nKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2dlbmVyYXRpbmcgZmlsZScpXG4gICkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nRmlsZScpIH1cbiAgfVxuICBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncmVzdW1pbmcnKSB8fCBub3JtYWxpemVkLmluY2x1ZGVzKCdhcHJvYmFkYScpIHx8IG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2FwcHJvdmVkJykpIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkucmVzdW1pbmdBY3Rpb24nKSB9XG4gIH1cbiAgaWYgKFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3RhdmlseScpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnc2VhcmNoX3dlYicpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnYnVzY2FuZG8gZW4gbGEgd2ViJykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdzZWFyY2hpbmcgdGhlIHdlYicpXG4gICkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnc2VhcmNoJywgbWVzc2FnZTogdChTRUFSQ0hfTUVTU0FHRV9LRVlTWzBdKSB9XG4gIH1cblxuICBpZiAob3B0aW9ucz8udXNlUmVzdW1pbmdGYWxsYmFjaykge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5hY3Rpdml0eS5yZXN1bWluZ0FjdGlvbicpIH1cbiAgfVxuICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJykgfVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5ID0gKHBhcmFtczoge1xuICBzdHJlYW1BY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsXG4gIGxvYWRpbmdNZXNzYWdlOiBzdHJpbmcgfCBudWxsXG4gIGFjdGl2ZUxvYWRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICBpc0RlZXBTZWFyY2hBY3RpdmU6IGJvb2xlYW5cbiAgaGFzQXR0YWNobWVudHM6IGJvb2xlYW5cbiAgdDogVHJhbnNsYXRlRm5cbn0pOiBTdHJlYW1BY3Rpdml0eSB8IG51bGwgPT4ge1xuICBjb25zdCBhY3RpdmVLZXlzID0gT2JqZWN0LmtleXMocGFyYW1zLmFjdGl2ZUxvYWRpbmdzKVxuICBpZiAoYWN0aXZlS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZmlyc3RLZXkgPSBhY3RpdmVLZXlzWzBdXG4gICAgY29uc3QgcmF3ID0gcGFyYW1zLmFjdGl2ZUxvYWRpbmdzW2ZpcnN0S2V5XVxuICAgIGlmIChyYXcgJiYgcmF3ICE9PSBwYXJhbXMudCgnY2hhdC5wcm9jZXNzaW5nJykpIHtcbiAgICAgIGNvbnN0IGhpdGxSZXN1bWVPcHRpb25zID0geyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIGFzIGNvbnN0IH1cbiAgICAgIGNvbnN0IGhpdGxUb29sID0gcmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlKHJhdylcbiAgICAgIGlmIChoaXRsVG9vbCkge1xuICAgICAgICByZXR1cm4gbWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eShoaXRsVG9vbCwgcGFyYW1zLnQsIGhpdGxSZXN1bWVPcHRpb25zKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eShyYXcsIHBhcmFtcy50LCBoaXRsUmVzdW1lT3B0aW9ucylcbiAgICB9XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdwcm9jZXNzaW5nJywgbWVzc2FnZTogcGFyYW1zLnQoJ2NoYXQucHJvY2Vzc2luZycpIH1cbiAgfVxuXG4gIGlmIChwYXJhbXMuc3RyZWFtQWN0aXZpdHkpIHtcbiAgICByZXR1cm4gcGFyYW1zLnN0cmVhbUFjdGl2aXR5XG4gIH1cblxuICBpZiAocGFyYW1zLmxvYWRpbmdNZXNzYWdlKSB7XG4gICAgaWYgKFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC53cml0aW5nJykgfHxcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoV1JJVElOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSlcbiAgICApIHtcbiAgICAgIHJldHVybiBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkocGFyYW1zLnQpXG4gICAgfVxuICAgIGlmIChwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmcnKSkge1xuICAgICAgcmV0dXJuIHsgcGhhc2U6ICdnZW5lcmF0aW5nJywgbWVzc2FnZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nV2ViU2VhcmNoJykgfHxcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ0RlZXBTZWFyY2gnKSB8fFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHBhcmFtcy50LCB7XG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdXZWJTZWFyY2gnKSxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdEZWVwU2VhcmNoJyksXG4gICAgICAgIGhhc0F0dGFjaG1lbnRzOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdBdHRhY2htZW50JyksXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHBhcmFtcy5sb2FkaW5nTWVzc2FnZSB9XG4gIH1cblxuICBpZiAocGFyYW1zLndhaXRpbmdSZXNwb25zZSkge1xuICAgIHJldHVybiBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkocGFyYW1zLnQsIHtcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBwYXJhbXMuaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IHBhcmFtcy5pc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICBoYXNBdHRhY2htZW50czogcGFyYW1zLmhhc0F0dGFjaG1lbnRzLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCA9IChtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgdHlwZW9mIG1lc3NhZ2VJZCA9PT0gJ3N0cmluZycgJiYgbWVzc2FnZUlkLmluY2x1ZGVzKCctc3RyZWFtaW5nJylcbiJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EscUJBQXFCLFFBQVEsaUJBQWlCO0FBSXZELElBQU1DLHFCQUFxQixHQUFHLENBQzVCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsaUNBQWlDLENBQ3pCO0FBRVYsSUFBTUMsdUJBQXVCLEdBQUcsQ0FDOUIsb0NBQW9DLEVBQ3BDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsQ0FDOUI7QUFFVixJQUFNQyxtQkFBbUIsR0FBRyxDQUFDLCtCQUErQixFQUFFLGtDQUFrQyxDQUFVO0FBRTFHLElBQU1DLHdCQUF3QixHQUFHLENBQy9CLG9DQUFvQyxFQUNwQyx3Q0FBd0MsQ0FDaEM7QUFFVixJQUFNQyx1QkFBdUIsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLHFDQUFxQyxDQUFVO0FBRXBILE9BQU8s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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.51-0",
3
+ "version": "2.11.51-1",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {
@@ -1,22 +0,0 @@
1
- import { CORUserRole } from '../context/cor-user';
2
- var ALWAYS_BLOCKED_ROLES = [CORUserRole.FREELANCER, CORUserRole.CLIENT];
3
- var hasTaskPanelAccessFromWindow = function hasTaskPanelAccessFromWindow() {
4
- return typeof window !== 'undefined' && Boolean(window.MAIA_TASK_PANEL_ACCESS);
5
- };
6
-
7
- /**
8
- * Indica si debe omitirse el GET de agentes clone (MAIA PM).
9
- * Colaborador (rol 4): solo habilitado al abrir Maia desde el panel de tareas
10
- * cuando web expone MAIA_TASK_PANEL_ACCESS (FC_MAIA_AI_CHAT + company piloto).
11
- */
12
- export var isMaiaCloneAgentsRoleBlocked = function isMaiaCloneAgentsRoleBlocked(user, section) {
13
- var roleId = user.role_id;
14
- if (!roleId || ALWAYS_BLOCKED_ROLES.includes(roleId)) {
15
- return true;
16
- }
17
- if (roleId === CORUserRole.COLLABORATOR) {
18
- return section !== 'task' || !hasTaskPanelAccessFromWindow();
19
- }
20
- return false;
21
- };
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT1JVc2VyUm9sZSIsIkFMV0FZU19CTE9DS0VEX1JPTEVTIiwiRlJFRUxBTkNFUiIsIkNMSUVOVCIsImhhc1Rhc2tQYW5lbEFjY2Vzc0Zyb21XaW5kb3ciLCJ3aW5kb3ciLCJCb29sZWFuIiwiTUFJQV9UQVNLX1BBTkVMX0FDQ0VTUyIsImlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQiLCJ1c2VyIiwic2VjdGlvbiIsInJvbGVJZCIsInJvbGVfaWQiLCJpbmNsdWRlcyIsIkNPTExBQk9SQVRPUiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdGFudHMvbWFpYVRhc2tQYW5lbEFjY2Vzcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT1JVc2VyLCBDT1JVc2VyUm9sZSB9IGZyb20gJy4uL2NvbnRleHQvY29yLXVzZXInXG5cbmV4cG9ydCB0eXBlIE1haWFBY2Nlc3NTZWN0aW9uID0gJ3Byb2plY3QnIHwgJ2hlYWRlcicgfCAnY2xpZW50JyB8ICd0YXNrJ1xuXG5jb25zdCBBTFdBWVNfQkxPQ0tFRF9ST0xFUzogQ09SVXNlclJvbGVbXSA9IFtDT1JVc2VyUm9sZS5GUkVFTEFOQ0VSLCBDT1JVc2VyUm9sZS5DTElFTlRdXG5cbnR5cGUgTWFpYUFjY2Vzc1VzZXIgPSBQaWNrPENPUlVzZXIsICdyb2xlX2lkJz5cblxuY29uc3QgaGFzVGFza1BhbmVsQWNjZXNzRnJvbVdpbmRvdyA9ICgpOiBib29sZWFuID0+XG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIEJvb2xlYW4od2luZG93Lk1BSUFfVEFTS19QQU5FTF9BQ0NFU1MpXG5cbi8qKlxuICogSW5kaWNhIHNpIGRlYmUgb21pdGlyc2UgZWwgR0VUIGRlIGFnZW50ZXMgY2xvbmUgKE1BSUEgUE0pLlxuICogQ29sYWJvcmFkb3IgKHJvbCA0KTogc29sbyBoYWJpbGl0YWRvIGFsIGFicmlyIE1haWEgZGVzZGUgZWwgcGFuZWwgZGUgdGFyZWFzXG4gKiBjdWFuZG8gd2ViIGV4cG9uZSBNQUlBX1RBU0tfUEFORUxfQUNDRVNTIChGQ19NQUlBX0FJX0NIQVQgKyBjb21wYW55IHBpbG90bykuXG4gKi9cbmV4cG9ydCBjb25zdCBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkID0gKHVzZXI6IE1haWFBY2Nlc3NVc2VyLCBzZWN0aW9uPzogTWFpYUFjY2Vzc1NlY3Rpb24pOiBib29sZWFuID0+IHtcbiAgY29uc3QgeyByb2xlX2lkOiByb2xlSWQgfSA9IHVzZXJcblxuICBpZiAoIXJvbGVJZCB8fCBBTFdBWVNfQkxPQ0tFRF9ST0xFUy5pbmNsdWRlcyhyb2xlSWQpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChyb2xlSWQgPT09IENPUlVzZXJSb2xlLkNPTExBQk9SQVRPUikge1xuICAgIHJldHVybiBzZWN0aW9uICE9PSAndGFzaycgfHwgIWhhc1Rhc2tQYW5lbEFjY2Vzc0Zyb21XaW5kb3coKVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQWtCQSxXQUFXLFFBQVEscUJBQXFCO0FBSTFELElBQU1DLG9CQUFtQyxHQUFHLENBQUNELFdBQVcsQ0FBQ0UsVUFBVSxFQUFFRixXQUFXLENBQUNHLE1BQU0sQ0FBQztBQUl4RixJQUFNQyw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUFBO0VBQUEsT0FDaEMsT0FBT0MsTUFBTSxLQUFLLFdBQVcsSUFBSUMsT0FBTyxDQUFDRCxNQUFNLENBQUNFLHNCQUFzQixDQUFDO0FBQUE7O0FBRXpFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQUlDLElBQW9CLEVBQUVDLE9BQTJCLEVBQWM7RUFDMUcsSUFBaUJDLE1BQU0sR0FBS0YsSUFBSSxDQUF4QkcsT0FBTztFQUVmLElBQUksQ0FBQ0QsTUFBTSxJQUFJVixvQkFBb0IsQ0FBQ1ksUUFBUSxDQUFDRixNQUFNLENBQUMsRUFBRTtJQUNwRCxPQUFPLElBQUk7RUFDYjtFQUVBLElBQUlBLE1BQU0sS0FBS1gsV0FBVyxDQUFDYyxZQUFZLEVBQUU7SUFDdkMsT0FBT0osT0FBTyxLQUFLLE1BQU0sSUFBSSxDQUFDTiw0QkFBNEIsQ0FBQyxDQUFDO0VBQzlEO0VBRUEsT0FBTyxLQUFLO0FBQ2QsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==