@projectcor/maia-components 2.11.100-2 → 2.11.100-3
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 +2 -4
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +14 -212
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +9 -99
- package/lib/components/atoms/Chip/Chip.js +12 -5
- package/lib/components/atoms/Chip/styles.js +6 -6
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +121 -28
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +6 -2
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +12 -5
- package/lib/components/atoms/MAIAInput/MAIAInput.js +390 -270
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +5 -8
- package/lib/components/atoms/MAIAInput/maiaInputLayout.js +25 -0
- package/lib/components/atoms/MAIAInput/styles.js +102 -86
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +54 -41
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +25 -12
- package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
- package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
- package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
- package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
- package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
- package/lib/components/atoms/icons/index.js +10 -1
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +4 -91
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +18 -7
- package/lib/components/molecules/ChatAIHome/styles.js +54 -38
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +44 -191
- package/lib/components/molecules/ChatAIMessages/newStyles.js +10 -26
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +1 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +1 -4
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +1 -8
- package/lib/components/molecules/ChatFooter/ChatFooter.js +23 -62
- package/lib/components/molecules/Sidebar/Sidebar.js +14 -3
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +5 -34
- package/lib/hooks/useAgentModel/useCreateAgent.js +14 -40
- package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -37
- package/lib/hooks/useChatManager/useChatManager.js +46 -145
- package/lib/hooks/useEvent.js +1 -2
- package/lib/hooks/useMentionPopover.js +4 -2
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +23 -180
- package/lib/lang/br/index.js +7 -16
- package/lib/lang/en/index.js +7 -16
- package/lib/lang/es/index.js +7 -16
- package/lib/lang/fr/index.js +9 -15
- package/lib/styles/config.js +2 -2
- package/lib/types/agentModal.js +1 -1
- package/lib/types/streamActivity.js +1 -1
- package/lib/utils/normalizeAgentConnectors.js +3 -28
- package/package.json +1 -1
- package/lib/components/molecules/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.js +0 -90
- package/lib/components/molecules/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.styles.js +0 -19
- package/lib/components/molecules/StreamAssistantTurnTimeline/index.js +0 -2
- package/lib/dev/DevStreamTimelineDemo.js +0 -614
- package/lib/dev/mockStreamTimelineDemo.js +0 -417
- package/lib/dev/mockStreamTimelineRunner.js +0 -298
- package/lib/hooks/useStreamTimeline/index.js +0 -7
- package/lib/hooks/useStreamTimeline/streamTimelineStore.js +0 -37
- package/lib/services/maia/Agents/connectors.js +0 -124
- package/lib/types/streamTimeline.js +0 -2
- package/lib/utils/streamDebugLog.js +0 -169
- package/lib/utils/streamExecutionSteps.js +0 -96
- package/lib/utils/streamTimeline.js +0 -161
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
3
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
|
-
import { streamTimelineStore } from '../hooks/useStreamTimeline';
|
|
7
|
-
import { appendContentToStreamTimeline, appendNodeToStreamTimeline, finalizeStreamTimeline, startStreamTimelineTurn } from '../utils/streamTimeline';
|
|
8
|
-
import { getInitialStreamActivity, resolveInitialHitlStreamActivity } from '../utils/streamActivityMessages';
|
|
9
|
-
import { resetExecutionStepCounter } from '../utils/streamExecutionSteps';
|
|
10
|
-
import { mergeStreamChunk } from '../utils/sseStreamContent';
|
|
11
|
-
import { DEMO_TURN_ID, sleep } from './mockStreamTimelineDemo';
|
|
12
|
-
var buildHitlContext = function buildHitlContext(approval, messageText) {
|
|
13
|
-
var _approval$pending_act;
|
|
14
|
-
return {
|
|
15
|
-
messageId: "approval-".concat(approval.original_thread_id),
|
|
16
|
-
messageText: messageText,
|
|
17
|
-
approval: approval,
|
|
18
|
-
pendingActions: approval.pending_actions,
|
|
19
|
-
threadIds: (_approval$pending_act = approval.pending_actions) === null || _approval$pending_act === void 0 ? void 0 : _approval$pending_act.map(function (action) {
|
|
20
|
-
return action.thread_id;
|
|
21
|
-
})
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
export var resetMockRunnerState = function resetMockRunnerState(callbacks) {
|
|
25
|
-
streamTimelineStore.clear();
|
|
26
|
-
resetExecutionStepCounter();
|
|
27
|
-
callbacks.onHitlContext(null);
|
|
28
|
-
callbacks.onApprovalUi(null);
|
|
29
|
-
callbacks.onUiPatch({
|
|
30
|
-
waitingResponse: false,
|
|
31
|
-
isWriting: false,
|
|
32
|
-
initialActivity: null,
|
|
33
|
-
phase: 'idle'
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
export var beginMockTurn = function beginMockTurn(callbacks) {
|
|
37
|
-
var turnId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEMO_TURN_ID;
|
|
38
|
-
resetExecutionStepCounter();
|
|
39
|
-
streamTimelineStore.replace(startStreamTimelineTurn(turnId));
|
|
40
|
-
callbacks.onUiPatch({
|
|
41
|
-
phase: 'running',
|
|
42
|
-
waitingResponse: true,
|
|
43
|
-
isWriting: false
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
export var beginMockHitlContinue = function beginMockHitlContinue(t, hitlContext, callbacks) {
|
|
47
|
-
var turnId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEMO_TURN_ID;
|
|
48
|
-
resetExecutionStepCounter();
|
|
49
|
-
streamTimelineStore.replace(startStreamTimelineTurn(turnId));
|
|
50
|
-
callbacks.onHitlContext(hitlContext);
|
|
51
|
-
callbacks.onUiPatch({
|
|
52
|
-
phase: 'running_continue',
|
|
53
|
-
waitingResponse: true,
|
|
54
|
-
isWriting: false,
|
|
55
|
-
initialActivity: resolveInitialHitlStreamActivity(t, hitlContext)
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
|
-
export var applyMockStreamEvent = /*#__PURE__*/function () {
|
|
59
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event, runId, t, accumulatedRef, hitlContextRef, callbacks) {
|
|
60
|
-
var _event$charDelayMs, delay, buffer, i, _callbacks$onAccumula, _callbacks$onAccumula2, isManual, hitlContext;
|
|
61
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
62
|
-
while (1) switch (_context.prev = _context.next) {
|
|
63
|
-
case 0:
|
|
64
|
-
if (callbacks.isRunActive(runId)) {
|
|
65
|
-
_context.next = 1;
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
return _context.abrupt("return", 'stopped');
|
|
69
|
-
case 1:
|
|
70
|
-
if (!(event.kind === 'wait')) {
|
|
71
|
-
_context.next = 3;
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
callbacks.onLog(event.label);
|
|
75
|
-
_context.next = 2;
|
|
76
|
-
return sleep(event.ms);
|
|
77
|
-
case 2:
|
|
78
|
-
return _context.abrupt("return", callbacks.isRunActive(runId) ? 'continue' : 'stopped');
|
|
79
|
-
case 3:
|
|
80
|
-
if (!(event.kind === 'thinking')) {
|
|
81
|
-
_context.next = 4;
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
callbacks.onLog('event: thinking');
|
|
85
|
-
callbacks.onUiPatch({
|
|
86
|
-
waitingResponse: true,
|
|
87
|
-
isWriting: false,
|
|
88
|
-
initialActivity: getInitialStreamActivity(t, {})
|
|
89
|
-
});
|
|
90
|
-
return _context.abrupt("return", 'continue');
|
|
91
|
-
case 4:
|
|
92
|
-
if (!(event.kind === 'writing')) {
|
|
93
|
-
_context.next = 5;
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
callbacks.onLog('event: writing_started');
|
|
97
|
-
callbacks.onUiPatch({
|
|
98
|
-
isWriting: true
|
|
99
|
-
});
|
|
100
|
-
streamTimelineStore.replace(appendContentToStreamTimeline(streamTimelineStore.getSnapshot(), accumulatedRef.current));
|
|
101
|
-
return _context.abrupt("return", 'continue');
|
|
102
|
-
case 5:
|
|
103
|
-
if (!(event.kind === 'node')) {
|
|
104
|
-
_context.next = 6;
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
callbacks.onLog("event: ".concat(event.label));
|
|
108
|
-
streamTimelineStore.replace(appendNodeToStreamTimeline(streamTimelineStore.getSnapshot(), event.payload, accumulatedRef.current, t, hitlContextRef.current, event.payload.thread_id));
|
|
109
|
-
return _context.abrupt("return", 'continue');
|
|
110
|
-
case 6:
|
|
111
|
-
if (!(event.kind === 'tokens')) {
|
|
112
|
-
_context.next = 11;
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
callbacks.onLog("event: ".concat(event.label));
|
|
116
|
-
delay = (_event$charDelayMs = event.charDelayMs) !== null && _event$charDelayMs !== void 0 ? _event$charDelayMs : 18;
|
|
117
|
-
buffer = accumulatedRef.current;
|
|
118
|
-
i = 0;
|
|
119
|
-
case 7:
|
|
120
|
-
if (!(i < event.text.length)) {
|
|
121
|
-
_context.next = 10;
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
if (callbacks.isRunActive(runId)) {
|
|
125
|
-
_context.next = 8;
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
return _context.abrupt("return", 'stopped');
|
|
129
|
-
case 8:
|
|
130
|
-
buffer += event.text[i];
|
|
131
|
-
accumulatedRef.current = buffer;
|
|
132
|
-
streamTimelineStore.replace(appendContentToStreamTimeline(streamTimelineStore.getSnapshot(), buffer));
|
|
133
|
-
(_callbacks$onAccumula = callbacks.onAccumulatedChange) === null || _callbacks$onAccumula === void 0 || _callbacks$onAccumula.call(callbacks, buffer);
|
|
134
|
-
// eslint-disable-next-line no-await-in-loop
|
|
135
|
-
_context.next = 9;
|
|
136
|
-
return sleep(delay);
|
|
137
|
-
case 9:
|
|
138
|
-
i += 1;
|
|
139
|
-
_context.next = 7;
|
|
140
|
-
break;
|
|
141
|
-
case 10:
|
|
142
|
-
return _context.abrupt("return", 'continue');
|
|
143
|
-
case 11:
|
|
144
|
-
if (!(event.kind === 'content')) {
|
|
145
|
-
_context.next = 12;
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
callbacks.onLog("event: ".concat(event.label));
|
|
149
|
-
callbacks.onUiPatch({
|
|
150
|
-
isWriting: true
|
|
151
|
-
});
|
|
152
|
-
accumulatedRef.current = mergeStreamChunk(accumulatedRef.current, event.text);
|
|
153
|
-
streamTimelineStore.replace(appendContentToStreamTimeline(streamTimelineStore.getSnapshot(), accumulatedRef.current));
|
|
154
|
-
(_callbacks$onAccumula2 = callbacks.onAccumulatedChange) === null || _callbacks$onAccumula2 === void 0 || _callbacks$onAccumula2.call(callbacks, accumulatedRef.current);
|
|
155
|
-
return _context.abrupt("return", 'continue');
|
|
156
|
-
case 12:
|
|
157
|
-
if (!(event.kind === 'approval_required')) {
|
|
158
|
-
_context.next = 14;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
callbacks.onLog("event: ".concat(event.label));
|
|
162
|
-
isManual = event.approval.manual_approval_detected === true;
|
|
163
|
-
hitlContext = buildHitlContext(event.approval, accumulatedRef.current);
|
|
164
|
-
hitlContextRef.current = hitlContext;
|
|
165
|
-
callbacks.onHitlContext(hitlContext);
|
|
166
|
-
if (!isManual) {
|
|
167
|
-
_context.next = 13;
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
callbacks.onLog('→ manual_approval_detected: stream sigue');
|
|
171
|
-
callbacks.onUiPatch({
|
|
172
|
-
waitingResponse: true,
|
|
173
|
-
isWriting: false,
|
|
174
|
-
initialActivity: resolveInitialHitlStreamActivity(t, hitlContext)
|
|
175
|
-
});
|
|
176
|
-
return _context.abrupt("return", 'continue');
|
|
177
|
-
case 13:
|
|
178
|
-
callbacks.onLog('→ stream settled: timeline limpiado, ApprovalBox');
|
|
179
|
-
streamTimelineStore.clear();
|
|
180
|
-
callbacks.onUiPatch({
|
|
181
|
-
waitingResponse: false,
|
|
182
|
-
isWriting: false,
|
|
183
|
-
initialActivity: null,
|
|
184
|
-
phase: 'awaiting_approval'
|
|
185
|
-
});
|
|
186
|
-
callbacks.onApprovalUi({
|
|
187
|
-
message: accumulatedRef.current,
|
|
188
|
-
approval: event.approval,
|
|
189
|
-
status: 'pending'
|
|
190
|
-
});
|
|
191
|
-
return _context.abrupt("return", 'pause');
|
|
192
|
-
case 14:
|
|
193
|
-
if (!(event.kind === 'complete')) {
|
|
194
|
-
_context.next = 18;
|
|
195
|
-
break;
|
|
196
|
-
}
|
|
197
|
-
callbacks.onLog("event: ".concat(event.label));
|
|
198
|
-
streamTimelineStore.replace(finalizeStreamTimeline(appendContentToStreamTimeline(streamTimelineStore.getSnapshot(), accumulatedRef.current)));
|
|
199
|
-
callbacks.onUiPatch({
|
|
200
|
-
waitingResponse: false,
|
|
201
|
-
isWriting: false,
|
|
202
|
-
initialActivity: null,
|
|
203
|
-
phase: 'done'
|
|
204
|
-
});
|
|
205
|
-
hitlContextRef.current = null;
|
|
206
|
-
callbacks.onHitlContext(null);
|
|
207
|
-
if (!(callbacks.showProdCompleteBehavior && !callbacks.keepTimelineOnComplete)) {
|
|
208
|
-
_context.next = 17;
|
|
209
|
-
break;
|
|
210
|
-
}
|
|
211
|
-
_context.next = 15;
|
|
212
|
-
return sleep(400);
|
|
213
|
-
case 15:
|
|
214
|
-
if (callbacks.isRunActive(runId)) {
|
|
215
|
-
_context.next = 16;
|
|
216
|
-
break;
|
|
217
|
-
}
|
|
218
|
-
return _context.abrupt("return", 'stopped');
|
|
219
|
-
case 16:
|
|
220
|
-
streamTimelineStore.clear();
|
|
221
|
-
callbacks.onLog('→ timeline limpiado (comportamiento prod)');
|
|
222
|
-
case 17:
|
|
223
|
-
return _context.abrupt("return", 'continue');
|
|
224
|
-
case 18:
|
|
225
|
-
return _context.abrupt("return", 'continue');
|
|
226
|
-
case 19:
|
|
227
|
-
case "end":
|
|
228
|
-
return _context.stop();
|
|
229
|
-
}
|
|
230
|
-
}, _callee);
|
|
231
|
-
}));
|
|
232
|
-
return function applyMockStreamEvent(_x, _x2, _x3, _x4, _x5, _x6) {
|
|
233
|
-
return _ref.apply(this, arguments);
|
|
234
|
-
};
|
|
235
|
-
}();
|
|
236
|
-
export var runMockEventList = /*#__PURE__*/function () {
|
|
237
|
-
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(events, runId, t, accumulatedRef, hitlContextRef, callbacks) {
|
|
238
|
-
var _iterator, _step, event, result, _t;
|
|
239
|
-
return _regeneratorRuntime.wrap(function (_context2) {
|
|
240
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
241
|
-
case 0:
|
|
242
|
-
_iterator = _createForOfIteratorHelper(events);
|
|
243
|
-
_context2.prev = 1;
|
|
244
|
-
_iterator.s();
|
|
245
|
-
case 2:
|
|
246
|
-
if ((_step = _iterator.n()).done) {
|
|
247
|
-
_context2.next = 7;
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
event = _step.value;
|
|
251
|
-
if (callbacks.isRunActive(runId)) {
|
|
252
|
-
_context2.next = 3;
|
|
253
|
-
break;
|
|
254
|
-
}
|
|
255
|
-
return _context2.abrupt("return", 'stopped');
|
|
256
|
-
case 3:
|
|
257
|
-
_context2.next = 4;
|
|
258
|
-
return applyMockStreamEvent(event, runId, t, accumulatedRef, hitlContextRef, callbacks);
|
|
259
|
-
case 4:
|
|
260
|
-
result = _context2.sent;
|
|
261
|
-
if (!(result === 'pause')) {
|
|
262
|
-
_context2.next = 5;
|
|
263
|
-
break;
|
|
264
|
-
}
|
|
265
|
-
return _context2.abrupt("return", 'paused');
|
|
266
|
-
case 5:
|
|
267
|
-
if (!(result === 'stopped')) {
|
|
268
|
-
_context2.next = 6;
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
return _context2.abrupt("return", 'stopped');
|
|
272
|
-
case 6:
|
|
273
|
-
_context2.next = 2;
|
|
274
|
-
break;
|
|
275
|
-
case 7:
|
|
276
|
-
_context2.next = 9;
|
|
277
|
-
break;
|
|
278
|
-
case 8:
|
|
279
|
-
_context2.prev = 8;
|
|
280
|
-
_t = _context2["catch"](1);
|
|
281
|
-
_iterator.e(_t);
|
|
282
|
-
case 9:
|
|
283
|
-
_context2.prev = 9;
|
|
284
|
-
_iterator.f();
|
|
285
|
-
return _context2.finish(9);
|
|
286
|
-
case 10:
|
|
287
|
-
return _context2.abrupt("return", 'completed');
|
|
288
|
-
case 11:
|
|
289
|
-
case "end":
|
|
290
|
-
return _context2.stop();
|
|
291
|
-
}
|
|
292
|
-
}, _callee2, null, [[1, 8, 9, 10]]);
|
|
293
|
-
}));
|
|
294
|
-
return function runMockEventList(_x7, _x8, _x9, _x0, _x1, _x10) {
|
|
295
|
-
return _ref2.apply(this, arguments);
|
|
296
|
-
};
|
|
297
|
-
}();
|
|
298
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHJlYW1UaW1lbGluZVN0b3JlIiwiYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUiLCJhcHBlbmROb2RlVG9TdHJlYW1UaW1lbGluZSIsImZpbmFsaXplU3RyZWFtVGltZWxpbmUiLCJzdGFydFN0cmVhbVRpbWVsaW5lVHVybiIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJERU1PX1RVUk5fSUQiLCJzbGVlcCIsImJ1aWxkSGl0bENvbnRleHQiLCJhcHByb3ZhbCIsIm1lc3NhZ2VUZXh0IiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0IiwibWVzc2FnZUlkIiwiY29uY2F0Iiwib3JpZ2luYWxfdGhyZWFkX2lkIiwicGVuZGluZ0FjdGlvbnMiLCJwZW5kaW5nX2FjdGlvbnMiLCJ0aHJlYWRJZHMiLCJtYXAiLCJhY3Rpb24iLCJ0aHJlYWRfaWQiLCJyZXNldE1vY2tSdW5uZXJTdGF0ZSIsImNhbGxiYWNrcyIsImNsZWFyIiwib25IaXRsQ29udGV4dCIsIm9uQXBwcm92YWxVaSIsIm9uVWlQYXRjaCIsIndhaXRpbmdSZXNwb25zZSIsImlzV3JpdGluZyIsImluaXRpYWxBY3Rpdml0eSIsInBoYXNlIiwiYmVnaW5Nb2NrVHVybiIsInR1cm5JZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJiZWdpbk1vY2tIaXRsQ29udGludWUiLCJ0IiwiaGl0bENvbnRleHQiLCJhcHBseU1vY2tTdHJlYW1FdmVudCIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImV2ZW50IiwicnVuSWQiLCJhY2N1bXVsYXRlZFJlZiIsImhpdGxDb250ZXh0UmVmIiwiX2V2ZW50JGNoYXJEZWxheU1zIiwiZGVsYXkiLCJidWZmZXIiLCJpIiwiX2NhbGxiYWNrcyRvbkFjY3VtdWxhIiwiX2NhbGxiYWNrcyRvbkFjY3VtdWxhMiIsImlzTWFudWFsIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJpc1J1bkFjdGl2ZSIsImFicnVwdCIsImtpbmQiLCJvbkxvZyIsImxhYmVsIiwibXMiLCJnZXRTbmFwc2hvdCIsImN1cnJlbnQiLCJwYXlsb2FkIiwiY2hhckRlbGF5TXMiLCJ0ZXh0Iiwib25BY2N1bXVsYXRlZENoYW5nZSIsImNhbGwiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJtZXNzYWdlIiwic3RhdHVzIiwic2hvd1Byb2RDb21wbGV0ZUJlaGF2aW9yIiwia2VlcFRpbWVsaW5lT25Db21wbGV0ZSIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl94NiIsImFwcGx5IiwicnVuTW9ja0V2ZW50TGlzdCIsIl9yZWYyIiwiX2NhbGxlZTIiLCJldmVudHMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInJlc3VsdCIsIl90IiwiX2NvbnRleHQyIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsInNlbnQiLCJlIiwiZiIsImZpbmlzaCIsIl94NyIsIl94OCIsIl94OSIsIl94MCIsIl94MSIsIl94MTAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGV2L21vY2tTdHJlYW1UaW1lbGluZVJ1bm5lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgeyBzdHJlYW1UaW1lbGluZVN0b3JlIH0gZnJvbSAnLi4vaG9va3MvdXNlU3RyZWFtVGltZWxpbmUnXG5pbXBvcnQge1xuICBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSxcbiAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUsXG4gIGZpbmFsaXplU3RyZWFtVGltZWxpbmUsXG4gIHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuLFxufSBmcm9tICcuLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7XG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG4gIHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQsXG59IGZyb20gJy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQgeyBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB0eXBlIHsgTW9ja1N0cmVhbVRpbWVsaW5lRXZlbnQgfSBmcm9tICcuL21vY2tTdHJlYW1UaW1lbGluZURlbW8nXG5pbXBvcnQgeyBERU1PX1RVUk5fSUQsIHNsZWVwIH0gZnJvbSAnLi9tb2NrU3RyZWFtVGltZWxpbmVEZW1vJ1xuXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxuZXhwb3J0IHR5cGUgTW9ja1J1bm5lclVpU3RhdGUgPSB7XG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgaW5pdGlhbEFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSB8IG51bGxcbiAgcGhhc2U6ICdpZGxlJyB8ICdydW5uaW5nJyB8ICdhd2FpdGluZ19hcHByb3ZhbCcgfCAncnVubmluZ19jb250aW51ZScgfCAnZG9uZSdcbn1cblxuZXhwb3J0IHR5cGUgTW9ja0FwcHJvdmFsVWlTdGF0ZSA9IHtcbiAgbWVzc2FnZTogc3RyaW5nXG4gIGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3RcbiAgc3RhdHVzOiAncGVuZGluZycgfCAnYXBwcm92ZWQnIHwgJ3JlamVjdGVkJ1xufSB8IG51bGxcblxuZXhwb3J0IHR5cGUgQXBwbHlFdmVudFJlc3VsdCA9ICdjb250aW51ZScgfCAncGF1c2UnIHwgJ3N0b3BwZWQnXG5cbmV4cG9ydCB0eXBlIE1vY2tSdW5uZXJDYWxsYmFja3MgPSB7XG4gIG9uVWlQYXRjaDogKHBhdGNoOiBQYXJ0aWFsPE1vY2tSdW5uZXJVaVN0YXRlPikgPT4gdm9pZFxuICBvbkFwcHJvdmFsVWk6IChzdGF0ZTogTW9ja0FwcHJvdmFsVWlTdGF0ZSkgPT4gdm9pZFxuICBvbkhpdGxDb250ZXh0OiAoY3R4OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwpID0+IHZvaWRcbiAgb25Mb2c6IChsaW5lOiBzdHJpbmcpID0+IHZvaWRcbiAgb25BY2N1bXVsYXRlZENoYW5nZT86ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWRcbiAgZ2V0UnVuSWQ6ICgpID0+IG51bWJlclxuICBpc1J1bkFjdGl2ZTogKHJ1bklkOiBudW1iZXIpID0+IGJvb2xlYW5cbiAgc2hvd1Byb2RDb21wbGV0ZUJlaGF2aW9yOiBib29sZWFuXG4gIGtlZXBUaW1lbGluZU9uQ29tcGxldGU6IGJvb2xlYW5cbn1cblxuY29uc3QgYnVpbGRIaXRsQ29udGV4dCA9IChhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBtZXNzYWdlVGV4dDogc3RyaW5nKTogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPT4gKHtcbiAgbWVzc2FnZUlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgbWVzc2FnZVRleHQsXG4gIGFwcHJvdmFsLFxuICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICB0aHJlYWRJZHM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkKSxcbn0pXG5cbmV4cG9ydCBjb25zdCByZXNldE1vY2tSdW5uZXJTdGF0ZSA9IChjYWxsYmFja3M6IE1vY2tSdW5uZXJDYWxsYmFja3MpOiB2b2lkID0+IHtcbiAgc3RyZWFtVGltZWxpbmVTdG9yZS5jbGVhcigpXG4gIHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIoKVxuICBjYWxsYmFja3Mub25IaXRsQ29udGV4dChudWxsKVxuICBjYWxsYmFja3Mub25BcHByb3ZhbFVpKG51bGwpXG4gIGNhbGxiYWNrcy5vblVpUGF0Y2goe1xuICAgIHdhaXRpbmdSZXNwb25zZTogZmFsc2UsXG4gICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICBpbml0aWFsQWN0aXZpdHk6IG51bGwsXG4gICAgcGhhc2U6ICdpZGxlJyxcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGJlZ2luTW9ja1R1cm4gPSAoY2FsbGJhY2tzOiBNb2NrUnVubmVyQ2FsbGJhY2tzLCB0dXJuSWQgPSBERU1PX1RVUk5fSUQpOiB2b2lkID0+IHtcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcigpXG4gIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShzdGFydFN0cmVhbVRpbWVsaW5lVHVybih0dXJuSWQpKVxuICBjYWxsYmFja3Mub25VaVBhdGNoKHsgcGhhc2U6ICdydW5uaW5nJywgd2FpdGluZ1Jlc3BvbnNlOiB0cnVlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG59XG5cbmV4cG9ydCBjb25zdCBiZWdpbk1vY2tIaXRsQ29udGludWUgPSAoXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQsXG4gIGNhbGxiYWNrczogTW9ja1J1bm5lckNhbGxiYWNrcyxcbiAgdHVybklkID0gREVNT19UVVJOX0lEXG4pOiB2b2lkID0+IHtcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcigpXG4gIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShzdGFydFN0cmVhbVRpbWVsaW5lVHVybih0dXJuSWQpKVxuICBjYWxsYmFja3Mub25IaXRsQ29udGV4dChoaXRsQ29udGV4dClcbiAgY2FsbGJhY2tzLm9uVWlQYXRjaCh7XG4gICAgcGhhc2U6ICdydW5uaW5nX2NvbnRpbnVlJyxcbiAgICB3YWl0aW5nUmVzcG9uc2U6IHRydWUsXG4gICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICBpbml0aWFsQWN0aXZpdHk6IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KSxcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGFwcGx5TW9ja1N0cmVhbUV2ZW50ID0gYXN5bmMgKFxuICBldmVudDogTW9ja1N0cmVhbVRpbWVsaW5lRXZlbnQsXG4gIHJ1bklkOiBudW1iZXIsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBhY2N1bXVsYXRlZFJlZjogeyBjdXJyZW50OiBzdHJpbmcgfSxcbiAgaGl0bENvbnRleHRSZWY6IHsgY3VycmVudDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIH0sXG4gIGNhbGxiYWNrczogTW9ja1J1bm5lckNhbGxiYWNrc1xuKTogUHJvbWlzZTxBcHBseUV2ZW50UmVzdWx0PiA9PiB7XG4gIGlmICghY2FsbGJhY2tzLmlzUnVuQWN0aXZlKHJ1bklkKSkgcmV0dXJuICdzdG9wcGVkJ1xuXG4gIGlmIChldmVudC5raW5kID09PSAnd2FpdCcpIHtcbiAgICBjYWxsYmFja3Mub25Mb2coZXZlbnQubGFiZWwpXG4gICAgYXdhaXQgc2xlZXAoZXZlbnQubXMpXG4gICAgcmV0dXJuIGNhbGxiYWNrcy5pc1J1bkFjdGl2ZShydW5JZCkgPyAnY29udGludWUnIDogJ3N0b3BwZWQnXG4gIH1cblxuICBpZiAoZXZlbnQua2luZCA9PT0gJ3RoaW5raW5nJykge1xuICAgIGNhbGxiYWNrcy5vbkxvZygnZXZlbnQ6IHRoaW5raW5nJylcbiAgICBjYWxsYmFja3Mub25VaVBhdGNoKHtcbiAgICAgIHdhaXRpbmdSZXNwb25zZTogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICBpbml0aWFsQWN0aXZpdHk6IGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCB7fSksXG4gICAgfSlcbiAgICByZXR1cm4gJ2NvbnRpbnVlJ1xuICB9XG5cbiAgaWYgKGV2ZW50LmtpbmQgPT09ICd3cml0aW5nJykge1xuICAgIGNhbGxiYWNrcy5vbkxvZygnZXZlbnQ6IHdyaXRpbmdfc3RhcnRlZCcpXG4gICAgY2FsbGJhY2tzLm9uVWlQYXRjaCh7IGlzV3JpdGluZzogdHJ1ZSB9KVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShcbiAgICAgIGFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lKHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSwgYWNjdW11bGF0ZWRSZWYuY3VycmVudClcbiAgICApXG4gICAgcmV0dXJuICdjb250aW51ZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAnbm9kZScpIHtcbiAgICBjYWxsYmFja3Mub25Mb2coYGV2ZW50OiAke2V2ZW50LmxhYmVsfWApXG4gICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKFxuICAgICAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUoXG4gICAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSxcbiAgICAgICAgZXZlbnQucGF5bG9hZCxcbiAgICAgICAgYWNjdW11bGF0ZWRSZWYuY3VycmVudCxcbiAgICAgICAgdCxcbiAgICAgICAgaGl0bENvbnRleHRSZWYuY3VycmVudCxcbiAgICAgICAgZXZlbnQucGF5bG9hZC50aHJlYWRfaWRcbiAgICAgIClcbiAgICApXG4gICAgcmV0dXJuICdjb250aW51ZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAndG9rZW5zJykge1xuICAgIGNhbGxiYWNrcy5vbkxvZyhgZXZlbnQ6ICR7ZXZlbnQubGFiZWx9YClcbiAgICBjb25zdCBkZWxheSA9IGV2ZW50LmNoYXJEZWxheU1zID8/IDE4XG4gICAgbGV0IGJ1ZmZlciA9IGFjY3VtdWxhdGVkUmVmLmN1cnJlbnRcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV2ZW50LnRleHQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmICghY2FsbGJhY2tzLmlzUnVuQWN0aXZlKHJ1bklkKSkgcmV0dXJuICdzdG9wcGVkJ1xuICAgICAgYnVmZmVyICs9IGV2ZW50LnRleHRbaV1cbiAgICAgIGFjY3VtdWxhdGVkUmVmLmN1cnJlbnQgPSBidWZmZXJcbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZShzdHJlYW1UaW1lbGluZVN0b3JlLmdldFNuYXBzaG90KCksIGJ1ZmZlcikpXG4gICAgICBjYWxsYmFja3Mub25BY2N1bXVsYXRlZENoYW5nZT8uKGJ1ZmZlcilcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICBhd2FpdCBzbGVlcChkZWxheSlcbiAgICB9XG4gICAgcmV0dXJuICdjb250aW51ZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAnY29udGVudCcpIHtcbiAgICBjYWxsYmFja3Mub25Mb2coYGV2ZW50OiAke2V2ZW50LmxhYmVsfWApXG4gICAgY2FsbGJhY2tzLm9uVWlQYXRjaCh7IGlzV3JpdGluZzogdHJ1ZSB9KVxuICAgIGFjY3VtdWxhdGVkUmVmLmN1cnJlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkUmVmLmN1cnJlbnQsIGV2ZW50LnRleHQpXG4gICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKFxuICAgICAgYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLCBhY2N1bXVsYXRlZFJlZi5jdXJyZW50KVxuICAgIClcbiAgICBjYWxsYmFja3Mub25BY2N1bXVsYXRlZENoYW5nZT8uKGFjY3VtdWxhdGVkUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICdjb250aW51ZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAnYXBwcm92YWxfcmVxdWlyZWQnKSB7XG4gICAgY2FsbGJhY2tzLm9uTG9nKGBldmVudDogJHtldmVudC5sYWJlbH1gKVxuICAgIGNvbnN0IGlzTWFudWFsID0gZXZlbnQuYXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlXG4gICAgY29uc3QgaGl0bENvbnRleHQgPSBidWlsZEhpdGxDb250ZXh0KGV2ZW50LmFwcHJvdmFsLCBhY2N1bXVsYXRlZFJlZi5jdXJyZW50KVxuICAgIGhpdGxDb250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgIGNhbGxiYWNrcy5vbkhpdGxDb250ZXh0KGhpdGxDb250ZXh0KVxuXG4gICAgaWYgKGlzTWFudWFsKSB7XG4gICAgICBjYWxsYmFja3Mub25Mb2coJ+KGkiBtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQ6IHN0cmVhbSBzaWd1ZScpXG4gICAgICBjYWxsYmFja3Mub25VaVBhdGNoKHtcbiAgICAgICAgd2FpdGluZ1Jlc3BvbnNlOiB0cnVlLFxuICAgICAgICBpc1dyaXRpbmc6IGZhbHNlLFxuICAgICAgICBpbml0aWFsQWN0aXZpdHk6IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4gJ2NvbnRpbnVlJ1xuICAgIH1cblxuICAgIGNhbGxiYWNrcy5vbkxvZygn4oaSIHN0cmVhbSBzZXR0bGVkOiB0aW1lbGluZSBsaW1waWFkbywgQXBwcm92YWxCb3gnKVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuY2xlYXIoKVxuICAgIGNhbGxiYWNrcy5vblVpUGF0Y2goe1xuICAgICAgd2FpdGluZ1Jlc3BvbnNlOiBmYWxzZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICBpbml0aWFsQWN0aXZpdHk6IG51bGwsXG4gICAgICBwaGFzZTogJ2F3YWl0aW5nX2FwcHJvdmFsJyxcbiAgICB9KVxuICAgIGNhbGxiYWNrcy5vbkFwcHJvdmFsVWkoe1xuICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRSZWYuY3VycmVudCxcbiAgICAgIGFwcHJvdmFsOiBldmVudC5hcHByb3ZhbCxcbiAgICAgIHN0YXR1czogJ3BlbmRpbmcnLFxuICAgIH0pXG4gICAgcmV0dXJuICdwYXVzZSdcbiAgfVxuXG4gIGlmIChldmVudC5raW5kID09PSAnY29tcGxldGUnKSB7XG4gICAgY2FsbGJhY2tzLm9uTG9nKGBldmVudDogJHtldmVudC5sYWJlbH1gKVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShcbiAgICAgIGZpbmFsaXplU3RyZWFtVGltZWxpbmUoYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLCBhY2N1bXVsYXRlZFJlZi5jdXJyZW50KSlcbiAgICApXG4gICAgY2FsbGJhY2tzLm9uVWlQYXRjaCh7XG4gICAgICB3YWl0aW5nUmVzcG9uc2U6IGZhbHNlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIGluaXRpYWxBY3Rpdml0eTogbnVsbCxcbiAgICAgIHBoYXNlOiAnZG9uZScsXG4gICAgfSlcbiAgICBoaXRsQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGNhbGxiYWNrcy5vbkhpdGxDb250ZXh0KG51bGwpXG5cbiAgICBpZiAoY2FsbGJhY2tzLnNob3dQcm9kQ29tcGxldGVCZWhhdmlvciAmJiAhY2FsbGJhY2tzLmtlZXBUaW1lbGluZU9uQ29tcGxldGUpIHtcbiAgICAgIGF3YWl0IHNsZWVwKDQwMClcbiAgICAgIGlmICghY2FsbGJhY2tzLmlzUnVuQWN0aXZlKHJ1bklkKSkgcmV0dXJuICdzdG9wcGVkJ1xuICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5jbGVhcigpXG4gICAgICBjYWxsYmFja3Mub25Mb2coJ+KGkiB0aW1lbGluZSBsaW1waWFkbyAoY29tcG9ydGFtaWVudG8gcHJvZCknKVxuICAgIH1cbiAgICByZXR1cm4gJ2NvbnRpbnVlJ1xuICB9XG5cbiAgcmV0dXJuICdjb250aW51ZSdcbn1cblxuZXhwb3J0IGNvbnN0IHJ1bk1vY2tFdmVudExpc3QgPSBhc3luYyAoXG4gIGV2ZW50czogTW9ja1N0cmVhbVRpbWVsaW5lRXZlbnRbXSxcbiAgcnVuSWQ6IG51bWJlcixcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGFjY3VtdWxhdGVkUmVmOiB7IGN1cnJlbnQ6IHN0cmluZyB9LFxuICBoaXRsQ29udGV4dFJlZjogeyBjdXJyZW50OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwgfSxcbiAgY2FsbGJhY2tzOiBNb2NrUnVubmVyQ2FsbGJhY2tzXG4pOiBQcm9taXNlPCdjb21wbGV0ZWQnIHwgJ3BhdXNlZCcgfCAnc3RvcHBlZCc+ID0+IHtcbiAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICBpZiAoIWNhbGxiYWNrcy5pc1J1bkFjdGl2ZShydW5JZCkpIHJldHVybiAnc3RvcHBlZCdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcGx5TW9ja1N0cmVhbUV2ZW50KGV2ZW50LCBydW5JZCwgdCwgYWNjdW11bGF0ZWRSZWYsIGhpdGxDb250ZXh0UmVmLCBjYWxsYmFja3MpXG4gICAgaWYgKHJlc3VsdCA9PT0gJ3BhdXNlJykgcmV0dXJuICdwYXVzZWQnXG4gICAgaWYgKHJlc3VsdCA9PT0gJ3N0b3BwZWQnKSByZXR1cm4gJ3N0b3BwZWQnXG4gIH1cbiAgcmV0dXJuICdjb21wbGV0ZWQnXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsU0FBU0EsbUJBQW1CLFFBQVEsNEJBQTRCO0FBQ2hFLFNBQ0VDLDZCQUE2QixFQUM3QkMsMEJBQTBCLEVBQzFCQyxzQkFBc0IsRUFDdEJDLHVCQUF1QixRQUNsQix5QkFBeUI7QUFDaEMsU0FDRUMsd0JBQXdCLEVBQ3hCQyxnQ0FBZ0MsUUFFM0IsaUNBQWlDO0FBQ3hDLFNBQVNDLHlCQUF5QixRQUFRLCtCQUErQjtBQUN6RSxTQUFTQyxn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
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { useSyncExternalStore } from 'react';
|
|
2
|
-
import { streamTimelineStore } from './streamTimelineStore';
|
|
3
|
-
export var useStreamTimeline = function useStreamTimeline() {
|
|
4
|
-
return useSyncExternalStore(streamTimelineStore.subscribe, streamTimelineStore.getSnapshot, streamTimelineStore.getServerSnapshot);
|
|
5
|
-
};
|
|
6
|
-
export { streamTimelineStore };
|
|
7
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTeW5jRXh0ZXJuYWxTdG9yZSIsInN0cmVhbVRpbWVsaW5lU3RvcmUiLCJ1c2VTdHJlYW1UaW1lbGluZSIsInN1YnNjcmliZSIsImdldFNuYXBzaG90IiwiZ2V0U2VydmVyU25hcHNob3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlU3RyZWFtVGltZWxpbmUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3luY0V4dGVybmFsU3RvcmUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuL3N0cmVhbVRpbWVsaW5lU3RvcmUnXG5cbmV4cG9ydCBjb25zdCB1c2VTdHJlYW1UaW1lbGluZSA9ICgpID0+XG4gIHVzZVN5bmNFeHRlcm5hbFN0b3JlKFxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuc3Vic2NyaWJlLFxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QsXG4gICAgc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTZXJ2ZXJTbmFwc2hvdFxuICApXG5cbmV4cG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxvQkFBb0IsUUFBUSxPQUFPO0FBQzVDLFNBQVNDLG1CQUFtQixRQUFRLHVCQUF1QjtBQUUzRCxPQUFPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUE7RUFBQSxPQUM1QkYsb0JBQW9CLENBQ2xCQyxtQkFBbUIsQ0FBQ0UsU0FBUyxFQUM3QkYsbUJBQW1CLENBQUNHLFdBQVcsRUFDL0JILG1CQUFtQixDQUFDSSxpQkFDdEIsQ0FBQztBQUFBO0FBRUgsU0FBU0osbUJBQW1CIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { createEmptyTimelineSnapshot } from '../../utils/streamTimeline';
|
|
2
|
-
import { streamDebugLog, streamDebugTimeline } from '../../utils/streamDebugLog';
|
|
3
|
-
var listeners = new Set();
|
|
4
|
-
var snapshot = createEmptyTimelineSnapshot();
|
|
5
|
-
var emitChange = function emitChange() {
|
|
6
|
-
listeners.forEach(function (listener) {
|
|
7
|
-
listener();
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
export var streamTimelineStore = {
|
|
11
|
-
getSnapshot: function getSnapshot() {
|
|
12
|
-
return snapshot;
|
|
13
|
-
},
|
|
14
|
-
getServerSnapshot: function getServerSnapshot() {
|
|
15
|
-
return createEmptyTimelineSnapshot();
|
|
16
|
-
},
|
|
17
|
-
subscribe: function subscribe(listener) {
|
|
18
|
-
listeners.add(listener);
|
|
19
|
-
return function () {
|
|
20
|
-
listeners["delete"](listener);
|
|
21
|
-
};
|
|
22
|
-
},
|
|
23
|
-
replace: function replace(next) {
|
|
24
|
-
snapshot = next;
|
|
25
|
-
streamDebugTimeline('timelineStore', 'replace', snapshot);
|
|
26
|
-
emitChange();
|
|
27
|
-
},
|
|
28
|
-
clear: function clear() {
|
|
29
|
-
if (snapshot.turnId == null && snapshot.segments.length === 0) return;
|
|
30
|
-
streamDebugLog('timelineStore', 'clear', {
|
|
31
|
-
previousTurnId: snapshot.turnId
|
|
32
|
-
});
|
|
33
|
-
snapshot = createEmptyTimelineSnapshot();
|
|
34
|
-
emitChange();
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVFbXB0eVRpbWVsaW5lU25hcHNob3QiLCJzdHJlYW1EZWJ1Z0xvZyIsInN0cmVhbURlYnVnVGltZWxpbmUiLCJsaXN0ZW5lcnMiLCJTZXQiLCJzbmFwc2hvdCIsImVtaXRDaGFuZ2UiLCJmb3JFYWNoIiwibGlzdGVuZXIiLCJzdHJlYW1UaW1lbGluZVN0b3JlIiwiZ2V0U25hcHNob3QiLCJnZXRTZXJ2ZXJTbmFwc2hvdCIsInN1YnNjcmliZSIsImFkZCIsInJlcGxhY2UiLCJuZXh0IiwiY2xlYXIiLCJ0dXJuSWQiLCJzZWdtZW50cyIsImxlbmd0aCIsInByZXZpb3VzVHVybklkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZVN0cmVhbVRpbWVsaW5lL3N0cmVhbVRpbWVsaW5lU3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJlYW1UaW1lbGluZVNuYXBzaG90IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgeyBjcmVhdGVFbXB0eVRpbWVsaW5lU25hcHNob3QgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IHN0cmVhbURlYnVnTG9nLCBzdHJlYW1EZWJ1Z1RpbWVsaW5lIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRGVidWdMb2cnXG5cbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQ8KCkgPT4gdm9pZD4oKVxuXG5sZXQgc25hcHNob3Q6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPSBjcmVhdGVFbXB0eVRpbWVsaW5lU25hcHNob3QoKVxuXG5jb25zdCBlbWl0Q2hhbmdlID0gKCkgPT4ge1xuICBsaXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgbGlzdGVuZXIoKVxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtVGltZWxpbmVTdG9yZSA9IHtcbiAgZ2V0U25hcHNob3QoKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCB7XG4gICAgcmV0dXJuIHNuYXBzaG90XG4gIH0sXG5cbiAgZ2V0U2VydmVyU25hcHNob3QoKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCB7XG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5VGltZWxpbmVTbmFwc2hvdCgpXG4gIH0sXG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcilcbiAgICB9XG4gIH0sXG5cbiAgcmVwbGFjZShuZXh0OiBTdHJlYW1UaW1lbGluZVNuYXBzaG90KSB7XG4gICAgc25hcHNob3QgPSBuZXh0XG4gICAgc3RyZWFtRGVidWdUaW1lbGluZSgndGltZWxpbmVTdG9yZScsICdyZXBsYWNlJywgc25hcHNob3QpXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgY2xlYXIoKSB7XG4gICAgaWYgKHNuYXBzaG90LnR1cm5JZCA9PSBudWxsICYmIHNuYXBzaG90LnNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgc3RyZWFtRGVidWdMb2coJ3RpbWVsaW5lU3RvcmUnLCAnY2xlYXInLCB7IHByZXZpb3VzVHVybklkOiBzbmFwc2hvdC50dXJuSWQgfSlcbiAgICBzbmFwc2hvdCA9IGNyZWF0ZUVtcHR5VGltZWxpbmVTbmFwc2hvdCgpXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLDJCQUEyQixRQUFRLDRCQUE0QjtBQUN4RSxTQUFTQyxjQUFjLEVBQUVDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUVoRixJQUFNQyxTQUFTLEdBQUcsSUFBSUMsR0FBRyxDQUFhLENBQUM7QUFFdkMsSUFBSUMsUUFBZ0MsR0FBR0wsMkJBQTJCLENBQUMsQ0FBQztBQUVwRSxJQUFNTSxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBQSxFQUFTO0VBQ3ZCSCxTQUFTLENBQUNJLE9BQU8sQ0FBQyxVQUFBQyxRQUFRLEVBQUk7SUFDNUJBLFFBQVEsQ0FBQyxDQUFDO0VBQ1osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sSUFBTUMsbUJBQW1CLEdBQUc7RUFDakNDLFdBQVcsV0FBWEEsV0FBV0EsQ0FBQSxFQUEyQjtJQUNwQyxPQUFPTCxRQUFRO0VBQ2pCLENBQUM7RUFFRE0saUJBQWlCLFdBQWpCQSxpQkFBaUJBLENBQUEsRUFBMkI7SUFDMUMsT0FBT1gsMkJBQTJCLENBQUMsQ0FBQztFQUN0QyxDQUFDO0VBRURZLFNBQVMsV0FBVEEsU0FBU0EsQ0FBQ0osUUFBb0IsRUFBRTtJQUM5QkwsU0FBUyxDQUFDVSxHQUFHLENBQUNMLFFBQVEsQ0FBQztJQUN2QixPQUFPLFlBQU07TUFDWEwsU0FBUyxVQUFPLENBQUNLLFFBQVEsQ0FBQztJQUM1QixDQUFDO0VBQ0gsQ0FBQztFQUVETSxPQUFPLFdBQVBBLE9BQU9BLENBQUNDLElBQTRCLEVBQUU7SUFDcENWLFFBQVEsR0FBR1UsSUFBSTtJQUNmYixtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFRyxRQUFRLENBQUM7SUFDekRDLFVBQVUsQ0FBQyxDQUFDO0VBQ2QsQ0FBQztFQUVEVSxLQUFLLFdBQUxBLEtBQUtBLENBQUEsRUFBRztJQUNOLElBQUlYLFFBQVEsQ0FBQ1ksTUFBTSxJQUFJLElBQUksSUFBSVosUUFBUSxDQUFDYSxRQUFRLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDL0RsQixjQUFjLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRTtNQUFFbUIsY0FBYyxFQUFFZixRQUFRLENBQUNZO0lBQU8sQ0FBQyxDQUFDO0lBQzdFWixRQUFRLEdBQUdMLDJCQUEyQixDQUFDLENBQUM7SUFDeENNLFVBQVUsQ0FBQyxDQUFDO0VBQ2Q7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import _toArray from "@babel/runtime/helpers/toArray";
|
|
2
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
4
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
|
-
import { fetchMaia } from '../client';
|
|
6
|
-
export var getAvailableConnectors = /*#__PURE__*/function () {
|
|
7
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
8
|
-
var response;
|
|
9
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
10
|
-
while (1) switch (_context.prev = _context.next) {
|
|
11
|
-
case 0:
|
|
12
|
-
_context.next = 1;
|
|
13
|
-
return fetchMaia({
|
|
14
|
-
path: 'connectors',
|
|
15
|
-
method: 'GET'
|
|
16
|
-
});
|
|
17
|
-
case 1:
|
|
18
|
-
response = _context.sent;
|
|
19
|
-
if (response.ok) {
|
|
20
|
-
_context.next = 2;
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
throw new Error('Failed to fetch connectors');
|
|
24
|
-
case 2:
|
|
25
|
-
return _context.abrupt("return", response.json());
|
|
26
|
-
case 3:
|
|
27
|
-
case "end":
|
|
28
|
-
return _context.stop();
|
|
29
|
-
}
|
|
30
|
-
}, _callee);
|
|
31
|
-
}));
|
|
32
|
-
return function getAvailableConnectors() {
|
|
33
|
-
return _ref.apply(this, arguments);
|
|
34
|
-
};
|
|
35
|
-
}();
|
|
36
|
-
export var getAgentConnectors = /*#__PURE__*/function () {
|
|
37
|
-
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(agentId) {
|
|
38
|
-
var response;
|
|
39
|
-
return _regeneratorRuntime.wrap(function (_context2) {
|
|
40
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
41
|
-
case 0:
|
|
42
|
-
_context2.next = 1;
|
|
43
|
-
return fetchMaia({
|
|
44
|
-
path: "agents/".concat(agentId, "/connectors"),
|
|
45
|
-
method: 'GET'
|
|
46
|
-
});
|
|
47
|
-
case 1:
|
|
48
|
-
response = _context2.sent;
|
|
49
|
-
if (response.ok) {
|
|
50
|
-
_context2.next = 2;
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
throw new Error('Failed to fetch agent connectors');
|
|
54
|
-
case 2:
|
|
55
|
-
return _context2.abrupt("return", response.json());
|
|
56
|
-
case 3:
|
|
57
|
-
case "end":
|
|
58
|
-
return _context2.stop();
|
|
59
|
-
}
|
|
60
|
-
}, _callee2);
|
|
61
|
-
}));
|
|
62
|
-
return function getAgentConnectors(_x) {
|
|
63
|
-
return _ref2.apply(this, arguments);
|
|
64
|
-
};
|
|
65
|
-
}();
|
|
66
|
-
export var saveAgentConnectors = /*#__PURE__*/function () {
|
|
67
|
-
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(agentId, connectorSlugs) {
|
|
68
|
-
var response;
|
|
69
|
-
return _regeneratorRuntime.wrap(function (_context3) {
|
|
70
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
71
|
-
case 0:
|
|
72
|
-
_context3.next = 1;
|
|
73
|
-
return fetchMaia({
|
|
74
|
-
path: "agents/".concat(agentId, "/connectors"),
|
|
75
|
-
method: 'POST',
|
|
76
|
-
body: {
|
|
77
|
-
connector_slugs: connectorSlugs
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
case 1:
|
|
81
|
-
response = _context3.sent;
|
|
82
|
-
if (response.ok) {
|
|
83
|
-
_context3.next = 2;
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
throw new Error('Failed to save agent connectors');
|
|
87
|
-
case 2:
|
|
88
|
-
return _context3.abrupt("return", response.json());
|
|
89
|
-
case 3:
|
|
90
|
-
case "end":
|
|
91
|
-
return _context3.stop();
|
|
92
|
-
}
|
|
93
|
-
}, _callee3);
|
|
94
|
-
}));
|
|
95
|
-
return function saveAgentConnectors(_x2, _x3) {
|
|
96
|
-
return _ref3.apply(this, arguments);
|
|
97
|
-
};
|
|
98
|
-
}();
|
|
99
|
-
export var openConnectorAuthorizationWindows = function openConnectorAuthorizationWindows(authorizations, popupWindow) {
|
|
100
|
-
if (!authorizations.length) {
|
|
101
|
-
if (popupWindow && !popupWindow.closed) {
|
|
102
|
-
popupWindow.close();
|
|
103
|
-
}
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
var _authorizations = _toArray(authorizations),
|
|
107
|
-
firstAuthorization = _authorizations[0],
|
|
108
|
-
remainingAuthorizations = _arrayLikeToArray(_authorizations).slice(1);
|
|
109
|
-
if (popupWindow && !popupWindow.closed) {
|
|
110
|
-
popupWindow.location.href = firstAuthorization.auth_url;
|
|
111
|
-
} else {
|
|
112
|
-
window.open(firstAuthorization.auth_url, '_blank', 'popup=yes,width=560,height=760');
|
|
113
|
-
}
|
|
114
|
-
remainingAuthorizations.forEach(function (authorization) {
|
|
115
|
-
window.open(authorization.auth_url, '_blank', 'popup=yes,width=560,height=760');
|
|
116
|
-
});
|
|
117
|
-
};
|
|
118
|
-
export var connectorAuthErrorMessage = function connectorAuthErrorMessage(error) {
|
|
119
|
-
if (error.slug === 'netsuite') {
|
|
120
|
-
return error.message;
|
|
121
|
-
}
|
|
122
|
-
return "".concat(error.name, ": ").concat(error.message);
|
|
123
|
-
};
|
|
124
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJnZXRBdmFpbGFibGVDb25uZWN0b3JzIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInBhdGgiLCJtZXRob2QiLCJzZW50Iiwib2siLCJFcnJvciIsImFicnVwdCIsImpzb24iLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJnZXRBZ2VudENvbm5lY3RvcnMiLCJfcmVmMiIsIl9jYWxsZWUyIiwiYWdlbnRJZCIsIl9jb250ZXh0MiIsImNvbmNhdCIsIl94Iiwic2F2ZUFnZW50Q29ubmVjdG9ycyIsIl9yZWYzIiwiX2NhbGxlZTMiLCJjb25uZWN0b3JTbHVncyIsIl9jb250ZXh0MyIsImJvZHkiLCJjb25uZWN0b3Jfc2x1Z3MiLCJfeDIiLCJfeDMiLCJvcGVuQ29ubmVjdG9yQXV0aG9yaXphdGlvbldpbmRvd3MiLCJhdXRob3JpemF0aW9ucyIsInBvcHVwV2luZG93IiwibGVuZ3RoIiwiY2xvc2VkIiwiY2xvc2UiLCJfYXV0aG9yaXphdGlvbnMiLCJfdG9BcnJheSIsImZpcnN0QXV0aG9yaXphdGlvbiIsInJlbWFpbmluZ0F1dGhvcml6YXRpb25zIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJzbGljZSIsImxvY2F0aW9uIiwiaHJlZiIsImF1dGhfdXJsIiwid2luZG93Iiwib3BlbiIsImZvckVhY2giLCJhdXRob3JpemF0aW9uIiwiY29ubmVjdG9yQXV0aEVycm9yTWVzc2FnZSIsImVycm9yIiwic2x1ZyIsIm1lc3NhZ2UiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvQWdlbnRzL2Nvbm5lY3RvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vY2xpZW50J1xuXG5leHBvcnQgdHlwZSBDYXRhbG9nQ29ubmVjdG9yID0ge1xuICBpZDogbnVtYmVyXG4gIHNsdWc6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgaWNvbl91cmw/OiBzdHJpbmdcbiAgcmVxdWlyZXNfYXV0aDogYm9vbGVhblxuICBpc19hY3RpdmU6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgQWdlbnRDb25uZWN0b3IgPSBDYXRhbG9nQ29ubmVjdG9yICYge1xuICBlbmFibGVkX2Zvcl9hZ2VudDogYm9vbGVhblxuICB1c2VyX2F1dGhvcml6ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgUGVuZGluZ0Nvbm5lY3RvckF1dGhvcml6YXRpb24gPSB7XG4gIHNsdWc6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgYXV0aF91cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDb25uZWN0b3JBdXRoRXJyb3IgPSB7XG4gIHNsdWc6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgbWVzc2FnZTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFNhdmVBZ2VudENvbm5lY3RvcnNSZXNwb25zZSA9IHtcbiAgYWdlbnRfaWQ6IHN0cmluZ1xuICBjb25uZWN0b3Jfc2x1Z3M6IHN0cmluZ1tdXG4gIHJlcXVpcmVzX2F1dGg/OiBQZW5kaW5nQ29ubmVjdG9yQXV0aG9yaXphdGlvbltdXG4gIGF1dGhfZXJyb3JzPzogQ29ubmVjdG9yQXV0aEVycm9yW11cbn1cblxuZXhwb3J0IGNvbnN0IGdldEF2YWlsYWJsZUNvbm5lY3RvcnMgPSBhc3luYyAoKTogUHJvbWlzZTxDYXRhbG9nQ29ubmVjdG9yW10+ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6ICdjb25uZWN0b3JzJyxcbiAgICBtZXRob2Q6ICdHRVQnLFxuICB9KVxuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBjb25uZWN0b3JzJylcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5qc29uKClcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFnZW50Q29ubmVjdG9ycyA9IGFzeW5jIChhZ2VudElkOiBzdHJpbmcpOiBQcm9taXNlPEFnZW50Q29ubmVjdG9yW10+ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6IGBhZ2VudHMvJHthZ2VudElkfS9jb25uZWN0b3JzYCxcbiAgICBtZXRob2Q6ICdHRVQnLFxuICB9KVxuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBhZ2VudCBjb25uZWN0b3JzJylcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5qc29uKClcbn1cblxuZXhwb3J0IGNvbnN0IHNhdmVBZ2VudENvbm5lY3RvcnMgPSBhc3luYyAoXG4gIGFnZW50SWQ6IHN0cmluZyxcbiAgY29ubmVjdG9yU2x1Z3M6IHN0cmluZ1tdXG4pOiBQcm9taXNlPFNhdmVBZ2VudENvbm5lY3RvcnNSZXNwb25zZT4gPT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgcGF0aDogYGFnZW50cy8ke2FnZW50SWR9L2Nvbm5lY3RvcnNgLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGJvZHk6IHtcbiAgICAgIGNvbm5lY3Rvcl9zbHVnczogY29ubmVjdG9yU2x1Z3MsXG4gICAgfSxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gc2F2ZSBhZ2VudCBjb25uZWN0b3JzJylcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZS5qc29uKClcbn1cblxuZXhwb3J0IGNvbnN0IG9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cyA9IChcbiAgYXV0aG9yaXphdGlvbnM6IFBlbmRpbmdDb25uZWN0b3JBdXRob3JpemF0aW9uW10sXG4gIHBvcHVwV2luZG93PzogV2luZG93IHwgbnVsbFxuKSA9PiB7XG4gIGlmICghYXV0aG9yaXphdGlvbnMubGVuZ3RoKSB7XG4gICAgaWYgKHBvcHVwV2luZG93ICYmICFwb3B1cFdpbmRvdy5jbG9zZWQpIHtcbiAgICAgIHBvcHVwV2luZG93LmNsb3NlKClcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBbZmlyc3RBdXRob3JpemF0aW9uLCAuLi5yZW1haW5pbmdBdXRob3JpemF0aW9uc10gPSBhdXRob3JpemF0aW9uc1xuXG4gIGlmIChwb3B1cFdpbmRvdyAmJiAhcG9wdXBXaW5kb3cuY2xvc2VkKSB7XG4gICAgcG9wdXBXaW5kb3cubG9jYXRpb24uaHJlZiA9IGZpcnN0QXV0aG9yaXphdGlvbi5hdXRoX3VybFxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5vcGVuKGZpcnN0QXV0aG9yaXphdGlvbi5hdXRoX3VybCwgJ19ibGFuaycsICdwb3B1cD15ZXMsd2lkdGg9NTYwLGhlaWdodD03NjAnKVxuICB9XG5cbiAgcmVtYWluaW5nQXV0aG9yaXphdGlvbnMuZm9yRWFjaChhdXRob3JpemF0aW9uID0+IHtcbiAgICB3aW5kb3cub3BlbihhdXRob3JpemF0aW9uLmF1dGhfdXJsLCAnX2JsYW5rJywgJ3BvcHVwPXllcyx3aWR0aD01NjAsaGVpZ2h0PTc2MCcpXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0b3JBdXRoRXJyb3JNZXNzYWdlID0gKGVycm9yOiBDb25uZWN0b3JBdXRoRXJyb3IpOiBzdHJpbmcgPT4ge1xuICBpZiAoZXJyb3Iuc2x1ZyA9PT0gJ25ldHN1aXRlJykge1xuICAgIHJldHVybiBlcnJvci5tZXNzYWdlXG4gIH1cbiAgcmV0dXJuIGAke2Vycm9yLm5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YFxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EsU0FBUyxRQUFRLFdBQVc7QUFvQ3JDLE9BQU8sSUFBTUMsc0JBQXNCO0VBQUEsSUFBQUMsSUFBQSxHQUFBQyxpQkFB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aUMsQ0FBQztRQUFBO1VBQUEsT0FBQWlCLFNBQUEsQ0FBQWhCLE1BQUEsV0FHN0NWLFFBQVEsQ0FBQ1csSUFBSSxDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQWUsU0FBQSxDQUFBZCxJQUFBO01BQUE7SUFBQSxHQUFBWSxRQUFBO0VBQUEsQ0FDdkI7RUFBQSxnQkFqQllGLG1CQUFtQkEsQ0FBQU8sR0FBQSxFQUFBQyxHQUFBO0lBQUEsT0FBQVAsS0FBQSxDQUFBVixLQUFBLE9BQUFDLFNBQUE7RUFBQTtBQUFBLEdBaUIvQjtBQUVELE9BQU8sSUFBTWlCLGlDQUFpQyxHQUFHLFNBQXBDQSxpQ0FBaUNBLENBQzVDQyxjQUErQyxFQUMvQ0MsV0FBMkIsRUFDeEI7RUFDSCxJQUFJLENBQUNELGNBQWMsQ0FBQ0UsTUFBTSxFQUFFO0lBQzFCLElBQUlELFdBQVcsSUFBSSxDQUFDQSxXQUFXLENBQUNFLE1BQU0sRUFBRTtNQUN0Q0YsV0FBVyxDQUFDRyxLQUFLLENBQUMsQ0FBQztJQUNyQjtJQUNBO0VBQ0Y7RUFFQSxJQUFBQyxlQUFBLEdBQUFDLFFBQUEsQ0FBeUROLGNBQWM7SUFBaEVPLGtCQUFrQixHQUFBRixlQUFBO0lBQUtHLHVCQUF1QixHQUFBQyxpQkFBQSxDQUFBSixlQUFBLEVBQUFLLEtBQUE7RUFFckQsSUFBSVQsV0FBVyxJQUFJLENBQUNBLFdBQVcsQ0FBQ0UsTUFBTSxFQUFFO0lBQ3RDRixXQUFXLENBQUNVLFFBQVEsQ0FBQ0MsSUFBSSxHQUFHTCxrQkFBa0IsQ0FBQ00sUUFBUTtFQUN6RCxDQUFDLE1BQU07SUFDTEMsTUFBTSxDQUFDQyxJQUFJLENBQUNSLGtCQUFrQixDQUFDTSxRQUFRLEVBQUUsUUFBUSxFQUFFLGdDQUFnQyxDQUFDO0VBQ3RGO0VBRUFMLHVCQUF1QixDQUFDUSxPQUFPLENBQUMsVUFBQUMsYUFBYSxFQUFJO0lBQy9DSCxNQUFNLENBQUNDLElBQUksQ0FBQ0UsYUFBYSxDQUFDSixRQUFRLEVBQUUsUUFBUSxFQUFFLGdDQUFnQyxDQUFDO0VBQ2pGLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLElBQU1LLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUlDLEtBQXlCLEVBQWE7RUFDOUUsSUFBSUEsS0FBSyxDQUFDQyxJQUFJLEtBQUssVUFBVSxFQUFFO0lBQzdCLE9BQU9ELEtBQUssQ0FBQ0UsT0FBTztFQUN0QjtFQUNBLFVBQUFqQyxNQUFBLENBQVUrQixLQUFLLENBQUNHLElBQUksUUFBQWxDLE1BQUEsQ0FBSytCLEtBQUssQ0FBQ0UsT0FBTztBQUN4QyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3N0cmVhbVRpbWVsaW5lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RyZWFtRXhlY3V0aW9uU3RlcCwgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuL3N0cmVhbUFjdGl2aXR5J1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UaW1lbGluZUV4ZWN1dGlvblNlZ21lbnQgPSB7XG4gIHR5cGU6ICdleGVjdXRpb24nXG4gIGlkOiBzdHJpbmdcbiAgc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXVxufVxuXG5leHBvcnQgdHlwZSBTdHJlYW1UaW1lbGluZUNvbnRlbnRTZWdtZW50ID0ge1xuICB0eXBlOiAnY29udGVudCdcbiAgaWQ6IHN0cmluZ1xuICB0ZXh0OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgU3RyZWFtVGltZWxpbmVTZWdtZW50ID0gU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50IHwgU3RyZWFtVGltZWxpbmVDb250ZW50U2VnbWVudFxuXG5leHBvcnQgdHlwZSBTdHJlYW1UaW1lbGluZVNuYXBzaG90ID0ge1xuICB0dXJuSWQ6IHN0cmluZyB8IG51bGxcbiAgc2VnbWVudHM6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdXG4gIC8qKiBMb25naXR1ZCBkZWwgdGV4dG8geWEgYXNpZ25hZG8gYSBzZWdtZW50b3MgZGUgY29udGVuaWRvIGNlcnJhZG9zLiAqL1xuICBjb250ZW50RnJvemVuTGVuZ3RoOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgU3RyZWFtVGltZWxpbmVJbml0aWFsQWN0aXZpdHkgPSBQaWNrPFN0cmVhbUFjdGl2aXR5LCAncGhhc2UnIHwgJ21lc3NhZ2UnIHwgJ2F0dGFjaG1lbnRzQ291bnQnPiB8IG51bGxcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
|