@projectcor/maia-components 2.11.53-1 → 2.11.53-10
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.
- package/lib/App.js +1 -1
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +4 -9
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +4 -4
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +2 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.js +6 -2
- package/lib/components/atoms/MAIAInput/styles.js +3 -2
- package/lib/components/atoms/icons/FaqChevronIcon.js +39 -0
- package/lib/components/atoms/icons/index.js +2 -1
- package/lib/components/atoms/index.js +1 -2
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +2 -28
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +11 -19
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +30 -6
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +6 -4
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +22 -4
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +21 -17
- package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -3
- package/lib/components/molecules/Sidebar/Sidebar.js +6 -7
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +3 -2
- package/lib/hooks/useChatManager/useChatManager.js +35 -84
- package/lib/hooks/useChatMessages/useChatMessages.js +32 -10
- package/lib/hooks/useEvent.js +3 -2
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +80 -176
- package/lib/lang/br/index.js +5 -57
- package/lib/lang/en/index.js +5 -57
- package/lib/lang/es/index.js +5 -57
- package/lib/lang/fr/index.js +4 -56
- package/lib/services/maia/Chats/getChatMessages.js +28 -4
- package/lib/types/Chat.js +1 -1
- package/lib/utils/agentDisplayName.js +18 -0
- package/package.json +1 -1
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +0 -83
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +0 -21
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +0 -7
- package/lib/components/atoms/AgentActivityIndicator/index.js +0 -2
- package/lib/types/streamActivity.js +0 -2
- package/lib/utils/sseStreamContent.js +0 -17
- package/lib/utils/streamActivityMessages.js +0 -256
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export var formatActivityElapsed = function formatActivityElapsed(totalSeconds) {
|
|
2
|
-
var minutes = Math.floor(totalSeconds / 60);
|
|
3
|
-
var seconds = totalSeconds % 60;
|
|
4
|
-
var paddedSeconds = String(seconds).padStart(2, '0');
|
|
5
|
-
return "".concat(minutes, ":").concat(paddedSeconds);
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXRBY3Rpdml0eUVsYXBzZWQiLCJ0b3RhbFNlY29uZHMiLCJtaW51dGVzIiwiTWF0aCIsImZsb29yIiwic2Vjb25kcyIsInBhZGRlZFNlY29uZHMiLCJTdHJpbmciLCJwYWRTdGFydCIsImNvbmNhdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0FnZW50QWN0aXZpdHlJbmRpY2F0b3IvQWdlbnRBY3Rpdml0eUluZGljYXRvci51dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZm9ybWF0QWN0aXZpdHlFbGFwc2VkID0gKHRvdGFsU2Vjb25kczogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IodG90YWxTZWNvbmRzIC8gNjApXG4gIGNvbnN0IHNlY29uZHMgPSB0b3RhbFNlY29uZHMgJSA2MFxuICBjb25zdCBwYWRkZWRTZWNvbmRzID0gU3RyaW5nKHNlY29uZHMpLnBhZFN0YXJ0KDIsICcwJylcbiAgcmV0dXJuIGAke21pbnV0ZXN9OiR7cGFkZGVkU2Vjb25kc31gXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBTUEscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUMsWUFBb0IsRUFBYTtFQUNyRSxJQUFNQyxPQUFPLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxZQUFZLEdBQUcsRUFBRSxDQUFDO0VBQzdDLElBQU1JLE9BQU8sR0FBR0osWUFBWSxHQUFHLEVBQUU7RUFDakMsSUFBTUssYUFBYSxHQUFHQyxNQUFNLENBQUNGLE9BQU8sQ0FBQyxDQUFDRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztFQUN0RCxVQUFBQyxNQUFBLENBQVVQLE9BQU8sT0FBQU8sTUFBQSxDQUFJSCxhQUFhO0FBQ3BDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { AgentActivityIndicator, StreamPendingSkeleton } from './AgentActivityIndicator';
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIiwiU3RyZWFtUGVuZGluZ1NrZWxldG9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvQWdlbnRBY3Rpdml0eUluZGljYXRvci9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBZ2VudEFjdGl2aXR5SW5kaWNhdG9yLCBTdHJlYW1QZW5kaW5nU2tlbGV0b24gfSBmcm9tICcuL0FnZW50QWN0aXZpdHlJbmRpY2F0b3InXG5leHBvcnQgdHlwZSB7IEFnZW50QWN0aXZpdHlJbmRpY2F0b3JQcm9wcyB9IGZyb20gJy4vQWdlbnRBY3Rpdml0eUluZGljYXRvcidcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esc0JBQXNCLEVBQUVDLHFCQUFxQixRQUFRLDBCQUEwQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3N0cmVhbUFjdGl2aXR5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFN0cmVhbUFjdGl2aXR5UGhhc2UgPVxuICB8ICdnZW5lcmF0aW5nJ1xuICB8ICd0aGlua2luZydcbiAgfCAnYWN0aW9uJ1xuICB8ICd3cml0aW5nJ1xuICB8ICdzZWFyY2gnXG4gIHwgJ2RlZXBfc2VhcmNoJ1xuICB8ICdhdHRhY2htZW50J1xuICB8ICdwcm9jZXNzaW5nJ1xuXG5leHBvcnQgdHlwZSBTdHJlYW1BY3Rpdml0eSA9IHtcbiAgcGhhc2U6IFN0cmVhbUFjdGl2aXR5UGhhc2VcbiAgbWVzc2FnZTogc3RyaW5nXG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fusiona un chunk SSE con el texto acumulado.
|
|
3
|
-
* Si el backend reenvía el mensaje completo (evento `content` o token snapshot),
|
|
4
|
-
* reemplaza en lugar de concatenar para evitar duplicar texto.
|
|
5
|
-
*/
|
|
6
|
-
export var mergeStreamChunk = function mergeStreamChunk(accumulated, chunk) {
|
|
7
|
-
if (!chunk) return accumulated;
|
|
8
|
-
if (!accumulated) return chunk;
|
|
9
|
-
if (chunk === accumulated) return accumulated;
|
|
10
|
-
if (chunk.startsWith(accumulated)) return chunk;
|
|
11
|
-
if (accumulated.startsWith(chunk)) return accumulated;
|
|
12
|
-
return accumulated + chunk;
|
|
13
|
-
};
|
|
14
|
-
export var isCompleteLikeSsePayload = function isCompleteLikeSsePayload(data) {
|
|
15
|
-
return data.memory_session_id != null && String(data.memory_session_id).trim() !== '';
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZXJnZVN0cmVhbUNodW5rIiwiYWNjdW11bGF0ZWQiLCJjaHVuayIsInN0YXJ0c1dpdGgiLCJpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQiLCJkYXRhIiwibWVtb3J5X3Nlc3Npb25faWQiLCJTdHJpbmciLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGdXNpb25hIHVuIGNodW5rIFNTRSBjb24gZWwgdGV4dG8gYWN1bXVsYWRvLlxuICogU2kgZWwgYmFja2VuZCByZWVudsOtYSBlbCBtZW5zYWplIGNvbXBsZXRvIChldmVudG8gYGNvbnRlbnRgIG8gdG9rZW4gc25hcHNob3QpLFxuICogcmVlbXBsYXphIGVuIGx1Z2FyIGRlIGNvbmNhdGVuYXIgcGFyYSBldml0YXIgZHVwbGljYXIgdGV4dG8uXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZVN0cmVhbUNodW5rID0gKGFjY3VtdWxhdGVkOiBzdHJpbmcsIGNodW5rOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIWNodW5rKSByZXR1cm4gYWNjdW11bGF0ZWRcbiAgaWYgKCFhY2N1bXVsYXRlZCkgcmV0dXJuIGNodW5rXG4gIGlmIChjaHVuayA9PT0gYWNjdW11bGF0ZWQpIHJldHVybiBhY2N1bXVsYXRlZFxuICBpZiAoY2h1bmsuc3RhcnRzV2l0aChhY2N1bXVsYXRlZCkpIHJldHVybiBjaHVua1xuICBpZiAoYWNjdW11bGF0ZWQuc3RhcnRzV2l0aChjaHVuaykpIHJldHVybiBhY2N1bXVsYXRlZFxuICByZXR1cm4gYWNjdW11bGF0ZWQgKyBjaHVua1xufVxuXG5leHBvcnQgY29uc3QgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkID0gKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogYm9vbGVhbiA9PlxuICBkYXRhLm1lbW9yeV9zZXNzaW9uX2lkICE9IG51bGwgJiYgU3RyaW5nKGRhdGEubWVtb3J5X3Nlc3Npb25faWQpLnRyaW0oKSAhPT0gJydcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUEsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBSUMsV0FBbUIsRUFBRUMsS0FBYSxFQUFhO0VBQzlFLElBQUksQ0FBQ0EsS0FBSyxFQUFFLE9BQU9ELFdBQVc7RUFDOUIsSUFBSSxDQUFDQSxXQUFXLEVBQUUsT0FBT0MsS0FBSztFQUM5QixJQUFJQSxLQUFLLEtBQUtELFdBQVcsRUFBRSxPQUFPQSxXQUFXO0VBQzdDLElBQUlDLEtBQUssQ0FBQ0MsVUFBVSxDQUFDRixXQUFXLENBQUMsRUFBRSxPQUFPQyxLQUFLO0VBQy9DLElBQUlELFdBQVcsQ0FBQ0UsVUFBVSxDQUFDRCxLQUFLLENBQUMsRUFBRSxPQUFPRCxXQUFXO0VBQ3JELE9BQU9BLFdBQVcsR0FBR0MsS0FBSztBQUM1QixDQUFDO0FBRUQsT0FBTyxJQUFNRSx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJQyxJQUE2QjtFQUFBLE9BQ3BFQSxJQUFJLENBQUNDLGlCQUFpQixJQUFJLElBQUksSUFBSUMsTUFBTSxDQUFDRixJQUFJLENBQUNDLGlCQUFpQixDQUFDLENBQUNFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,256 +0,0 @@
|
|
|
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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
|