@projectcor/maia-components 2.11.100-10 → 2.11.100-2
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 +4 -2
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +212 -14
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +99 -9
- package/lib/components/atoms/Chip/Chip.js +5 -12
- package/lib/components/atoms/Chip/styles.js +6 -6
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +28 -121
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +2 -6
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +5 -12
- package/lib/components/atoms/MAIAInput/MAIAInput.js +270 -398
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +8 -5
- package/lib/components/atoms/MAIAInput/styles.js +86 -102
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +41 -56
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +12 -28
- package/lib/components/atoms/icons/index.js +1 -10
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +91 -4
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +7 -18
- package/lib/components/molecules/ChatAIHome/styles.js +38 -54
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +191 -44
- package/lib/components/molecules/ChatAIMessages/newStyles.js +26 -10
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +2 -1
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +4 -1
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +8 -1
- package/lib/components/molecules/ChatFooter/ChatFooter.js +62 -23
- package/lib/components/molecules/Sidebar/Sidebar.js +3 -14
- package/lib/components/molecules/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.js +90 -0
- package/lib/components/molecules/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.styles.js +19 -0
- package/lib/components/molecules/StreamAssistantTurnTimeline/index.js +2 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +34 -5
- package/lib/dev/DevStreamTimelineDemo.js +614 -0
- package/lib/dev/mockStreamTimelineDemo.js +417 -0
- package/lib/dev/mockStreamTimelineRunner.js +298 -0
- package/lib/hooks/useAgentModel/useCreateAgent.js +40 -14
- package/lib/hooks/useAgentModel/useUpdateAgent.js +37 -11
- package/lib/hooks/useChatManager/useChatManager.js +145 -46
- package/lib/hooks/useEvent.js +2 -1
- package/lib/hooks/useMentionPopover.js +2 -4
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +180 -23
- package/lib/hooks/useStreamTimeline/index.js +7 -0
- package/lib/hooks/useStreamTimeline/streamTimelineStore.js +37 -0
- package/lib/lang/br/index.js +16 -7
- package/lib/lang/en/index.js +16 -7
- package/lib/lang/es/index.js +16 -7
- package/lib/lang/fr/index.js +15 -9
- package/lib/services/maia/Agents/connectors.js +124 -0
- package/lib/styles/config.js +2 -2
- package/lib/types/agentModal.js +1 -1
- package/lib/types/streamActivity.js +1 -1
- package/lib/types/streamTimeline.js +2 -0
- package/lib/utils/normalizeAgentConnectors.js +28 -3
- package/lib/utils/streamDebugLog.js +169 -0
- package/lib/utils/streamExecutionSteps.js +96 -0
- package/lib/utils/streamTimeline.js +161 -0
- package/package.json +1 -1
- package/lib/components/atoms/MAIAInput/maiaInputLayout.js +0 -25
- package/lib/components/atoms/icons/MaiaInputAddIcon.js +0 -42
- package/lib/components/atoms/icons/MaiaInputAttachIcon.js +0 -29
- package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +0 -33
- package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +0 -35
- package/lib/components/atoms/icons/MaiaInputMentionIcon.js +0 -44
- package/lib/components/atoms/icons/MaiaInputRobotIcon.js +0 -29
- package/lib/components/atoms/icons/MaiaInputSendIcon.js +0 -29
- package/lib/components/atoms/icons/MaiaInputSlashIcon.js +0 -29
- package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +0 -35
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import _typeof from "@babel/runtime/helpers/typeof";
|
|
3
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
4
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
5
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
6
|
/** Grupo de conectores COR dentro de `connectors`. */
|
|
6
7
|
export var COR_CONNECTOR_GROUP = 'COR';
|
|
7
8
|
|
|
9
|
+
/** Grupo de conectores externos (MCP) dentro de `connectors`. */
|
|
10
|
+
export var MCP_CONNECTOR_GROUP = 'MCP';
|
|
11
|
+
|
|
12
|
+
/** Slug del conector NetSuite (catalogo MCP). */
|
|
13
|
+
export var NETSUITE_CONNECTOR_SLUG = 'netsuite';
|
|
14
|
+
|
|
8
15
|
/** Slugs de tool groups COR que habilita el switch de "acceso a tareas" del ABM. */
|
|
9
16
|
export var COR_TOOL_GROUP_SLUGS = ['tareas', 'proyectos'];
|
|
10
17
|
|
|
@@ -21,12 +28,13 @@ export var buildAgentToolGroupsRequest = function buildAgentToolGroupsRequest(ta
|
|
|
21
28
|
* a partir del switch, para hidratar de forma optimista el agente recién creado/editado sin refetch.
|
|
22
29
|
*/
|
|
23
30
|
export var buildAgentConnectorsFromTaskAccess = function buildAgentConnectorsFromTaskAccess(taskAccess) {
|
|
31
|
+
var mcpSlugs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
24
32
|
return [{
|
|
25
33
|
group: COR_CONNECTOR_GROUP,
|
|
26
34
|
slugs: taskAccess ? [].concat(COR_TOOL_GROUP_SLUGS) : []
|
|
27
35
|
}, {
|
|
28
|
-
group:
|
|
29
|
-
slugs:
|
|
36
|
+
group: MCP_CONNECTOR_GROUP,
|
|
37
|
+
slugs: _toConsumableArray(mcpSlugs)
|
|
30
38
|
}];
|
|
31
39
|
};
|
|
32
40
|
|
|
@@ -60,6 +68,23 @@ export var deriveTaskAccessFromToolGroupSlugs = function deriveTaskAccessFromToo
|
|
|
60
68
|
});
|
|
61
69
|
};
|
|
62
70
|
|
|
71
|
+
/** Slugs MCP habilitados en `connectors[].group === 'MCP'`. */
|
|
72
|
+
export var deriveMcpConnectorSlugs = function deriveMcpConnectorSlugs(connectors) {
|
|
73
|
+
var _normalizeAgentConnec, _normalizeAgentConnec2;
|
|
74
|
+
return (_normalizeAgentConnec = (_normalizeAgentConnec2 = normalizeAgentConnectors(connectors)) === null || _normalizeAgentConnec2 === void 0 || (_normalizeAgentConnec2 = _normalizeAgentConnec2.find(function (connector) {
|
|
75
|
+
return connector.group === MCP_CONNECTOR_GROUP;
|
|
76
|
+
})) === null || _normalizeAgentConnec2 === void 0 ? void 0 : _normalizeAgentConnec2.slugs) !== null && _normalizeAgentConnec !== void 0 ? _normalizeAgentConnec : [];
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/** Slugs MCP que la compañía ya autorizó (token OAuth), no solo los asignados al agente. */
|
|
80
|
+
export var deriveConnectedConnectorSlugs = function deriveConnectedConnectorSlugs(agentConnectors) {
|
|
81
|
+
return agentConnectors.filter(function (connector) {
|
|
82
|
+
return connector.enabled_for_agent && (!connector.requires_auth || connector.user_authorized);
|
|
83
|
+
}).map(function (connector) {
|
|
84
|
+
return connector.slug;
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
|
|
63
88
|
/** Asegura `connectors` normalizados en un agente proveniente del listado de customs. */
|
|
64
89
|
export var withNormalizedConnectors = function withNormalizedConnectors(agent) {
|
|
65
90
|
var connectors = normalizeAgentConnectors(agent.connectors);
|
|
@@ -67,4 +92,4 @@ export var withNormalizedConnectors = function withNormalizedConnectors(agent) {
|
|
|
67
92
|
connectors: connectors
|
|
68
93
|
}) : agent;
|
|
69
94
|
};
|
|
70
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT1JfQ09OTkVDVE9SX0dST1VQIiwiTUNQX0NPTk5FQ1RPUl9HUk9VUCIsIk5FVFNVSVRFX0NPTk5FQ1RPUl9TTFVHIiwiQ09SX1RPT0xfR1JPVVBfU0xVR1MiLCJidWlsZEFnZW50VG9vbEdyb3Vwc1JlcXVlc3QiLCJ0YXNrQWNjZXNzIiwiY29uY2F0IiwiYnVpbGRBZ2VudENvbm5lY3RvcnNGcm9tVGFza0FjY2VzcyIsIm1jcFNsdWdzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZ3JvdXAiLCJzbHVncyIsIl90b0NvbnN1bWFibGVBcnJheSIsIm5vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycyIsInJhdyIsIkFycmF5IiwiaXNBcnJheSIsInBhcnNlZCIsImZpbHRlciIsImNvbm5lY3RvciIsIl90eXBlb2YiLCJtYXAiLCJzbHVnIiwiZGVyaXZlVGFza0FjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyIsInNvbWUiLCJkZXJpdmVNY3BDb25uZWN0b3JTbHVncyIsImNvbm5lY3RvcnMiLCJfbm9ybWFsaXplQWdlbnRDb25uZWMiLCJfbm9ybWFsaXplQWdlbnRDb25uZWMyIiwiZmluZCIsImRlcml2ZUNvbm5lY3RlZENvbm5lY3RvclNsdWdzIiwiYWdlbnRDb25uZWN0b3JzIiwiZW5hYmxlZF9mb3JfYWdlbnQiLCJyZXF1aXJlc19hdXRoIiwidXNlcl9hdXRob3JpemVkIiwid2l0aE5vcm1hbGl6ZWRDb25uZWN0b3JzIiwiYWdlbnQiLCJfb2JqZWN0U3ByZWFkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFnZW50Q29ubmVjdG9yIH0gZnJvbSAnLi4vdHlwZXMvYWdlbnQnXG5cbi8qKiBHcnVwbyBkZSBjb25lY3RvcmVzIENPUiBkZW50cm8gZGUgYGNvbm5lY3RvcnNgLiAqL1xuZXhwb3J0IGNvbnN0IENPUl9DT05ORUNUT1JfR1JPVVAgPSAnQ09SJ1xuXG4vKiogR3J1cG8gZGUgY29uZWN0b3JlcyBleHRlcm5vcyAoTUNQKSBkZW50cm8gZGUgYGNvbm5lY3RvcnNgLiAqL1xuZXhwb3J0IGNvbnN0IE1DUF9DT05ORUNUT1JfR1JPVVAgPSAnTUNQJ1xuXG4vKiogU2x1ZyBkZWwgY29uZWN0b3IgTmV0U3VpdGUgKGNhdGFsb2dvIE1DUCkuICovXG5leHBvcnQgY29uc3QgTkVUU1VJVEVfQ09OTkVDVE9SX1NMVUcgPSAnbmV0c3VpdGUnXG5cbi8qKiBTbHVncyBkZSB0b29sIGdyb3VwcyBDT1IgcXVlIGhhYmlsaXRhIGVsIHN3aXRjaCBkZSBcImFjY2VzbyBhIHRhcmVhc1wiIGRlbCBBQk0uICovXG5leHBvcnQgY29uc3QgQ09SX1RPT0xfR1JPVVBfU0xVR1M6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyd0YXJlYXMnLCAncHJveWVjdG9zJ11cblxuLyoqXG4gKiBDb25zdHJ1eWUgZWwgYXJyYXkgYHRvb2xfZ3JvdXBfc2x1Z3NgIHBhcmEgbGEgcnV0YSBgUE9TVCBhZ2VudHMve2lkfS90b29sLWdyb3Vwc2AgYSBwYXJ0aXIgZGVsIHN3aXRjaC5cbiAqIEFjdGl2byDihpIgYFsndGFyZWFzJywgJ3Byb3llY3RvcyddYDsgYXBhZ2FkbyDihpIgYFtdYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCA9ICh0YXNrQWNjZXNzOiBib29sZWFuKTogc3RyaW5nW10gPT5cbiAgdGFza0FjY2VzcyA/IFsuLi5DT1JfVE9PTF9HUk9VUF9TTFVHU10gOiBbXVxuXG4vKipcbiAqIENvbnN0cnV5ZSBsb3MgYGNvbm5lY3RvcnNgIGFncnVwYWRvcyAobWlzbW8gZm9ybWF0byBxdWUgZGV2dWVsdmUgZWwgYmFjayBlbiBsaXN0YWRvL3Nlc2nDs24pXG4gKiBhIHBhcnRpciBkZWwgc3dpdGNoLCBwYXJhIGhpZHJhdGFyIGRlIGZvcm1hIG9wdGltaXN0YSBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8vZWRpdGFkbyBzaW4gcmVmZXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkQWdlbnRDb25uZWN0b3JzRnJvbVRhc2tBY2Nlc3MgPSAoXG4gIHRhc2tBY2Nlc3M6IGJvb2xlYW4sXG4gIG1jcFNsdWdzOiBzdHJpbmdbXSA9IFtdXG4pOiBBZ2VudENvbm5lY3RvcltdID0+IFtcbiAgeyBncm91cDogQ09SX0NPTk5FQ1RPUl9HUk9VUCwgc2x1Z3M6IHRhc2tBY2Nlc3MgPyBbLi4uQ09SX1RPT0xfR1JPVVBfU0xVR1NdIDogW10gfSxcbiAgeyBncm91cDogTUNQX0NPTk5FQ1RPUl9HUk9VUCwgc2x1Z3M6IFsuLi5tY3BTbHVnc10gfSxcbl1cblxuLyoqIE5vcm1hbGl6YSBlbCBhcnJheSBgY29ubmVjdG9yc2AgcXVlIGRldnVlbHZlIGxhIEFQSSBkZSBhZ2VudGVzIG8gc2VzaW9uZXMuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzID0gKHJhdzogdW5rbm93bik6IEFnZW50Q29ubmVjdG9yW10gfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3KSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBwYXJzZWQgPSByYXdcbiAgICAuZmlsdGVyKChjb25uZWN0b3IpOiBjb25uZWN0b3IgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4gISFjb25uZWN0b3IgJiYgdHlwZW9mIGNvbm5lY3RvciA9PT0gJ29iamVjdCcpXG4gICAgLm1hcChjb25uZWN0b3IgPT4ge1xuICAgICAgY29uc3QgZ3JvdXAgPSB0eXBlb2YgY29ubmVjdG9yLmdyb3VwID09PSAnc3RyaW5nJyA/IGNvbm5lY3Rvci5ncm91cCA6ICcnXG4gICAgICBjb25zdCBzbHVncyA9IEFycmF5LmlzQXJyYXkoY29ubmVjdG9yLnNsdWdzKVxuICAgICAgICA/IGNvbm5lY3Rvci5zbHVncy5maWx0ZXIoKHNsdWcpOiBzbHVnIGlzIHN0cmluZyA9PiB0eXBlb2Ygc2x1ZyA9PT0gJ3N0cmluZycpXG4gICAgICAgIDogW11cbiAgICAgIHJldHVybiB7IGdyb3VwLCBzbHVncyB9XG4gICAgfSlcbiAgICAuZmlsdGVyKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuZ3JvdXAubGVuZ3RoID4gMClcblxuICByZXR1cm4gcGFyc2VkLmxlbmd0aCA+IDAgPyBwYXJzZWQgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBEZXJpdmEgZWwgZXN0YWRvIGRlbCBzd2l0Y2ggZGUgXCJhY2Nlc28gYSB0YXJlYXNcIiBkZXNkZSBgdG9vbF9ncm91cF9zbHVnc2AgZGVsIGRldGFsbGUgZGVsIGFnZW50ZVxuICogKGBHRVQgYWdlbnRzL3tpZH1gKS4gQWN0aXZvIHNpIGVsIGFycmF5IHRyYWUgYWwgbWVub3MgdW4gc2x1Zy5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlcml2ZVRhc2tBY2Nlc3NGcm9tVG9vbEdyb3VwU2x1Z3MgPSAocmF3OiB1bmtub3duKTogYm9vbGVhbiA9PlxuICBBcnJheS5pc0FycmF5KHJhdykgJiYgcmF3LnNvbWUoc2x1ZyA9PiB0eXBlb2Ygc2x1ZyA9PT0gJ3N0cmluZycgJiYgc2x1Zy5sZW5ndGggPiAwKVxuXG4vKiogU2x1Z3MgTUNQIGhhYmlsaXRhZG9zIGVuIGBjb25uZWN0b3JzW10uZ3JvdXAgPT09ICdNQ1AnYC4gKi9cbmV4cG9ydCBjb25zdCBkZXJpdmVNY3BDb25uZWN0b3JTbHVncyA9IChjb25uZWN0b3JzOiB1bmtub3duKTogc3RyaW5nW10gPT5cbiAgbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzKGNvbm5lY3RvcnMpPy5maW5kKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuZ3JvdXAgPT09IE1DUF9DT05ORUNUT1JfR1JPVVApPy5zbHVncyA/PyBbXVxuXG4vKiogU2x1Z3MgTUNQIHF1ZSBsYSBjb21wYcOxw61hIHlhIGF1dG9yaXrDsyAodG9rZW4gT0F1dGgpLCBubyBzb2xvIGxvcyBhc2lnbmFkb3MgYWwgYWdlbnRlLiAqL1xuZXhwb3J0IGNvbnN0IGRlcml2ZUNvbm5lY3RlZENvbm5lY3RvclNsdWdzID0gKFxuICBhZ2VudENvbm5lY3RvcnM6IHsgc2x1Zzogc3RyaW5nOyByZXF1aXJlc19hdXRoOiBib29sZWFuOyBlbmFibGVkX2Zvcl9hZ2VudDogYm9vbGVhbjsgdXNlcl9hdXRob3JpemVkOiBib29sZWFuIH1bXVxuKTogc3RyaW5nW10gPT5cbiAgYWdlbnRDb25uZWN0b3JzXG4gICAgLmZpbHRlcihjb25uZWN0b3IgPT4gY29ubmVjdG9yLmVuYWJsZWRfZm9yX2FnZW50ICYmICghY29ubmVjdG9yLnJlcXVpcmVzX2F1dGggfHwgY29ubmVjdG9yLnVzZXJfYXV0aG9yaXplZCkpXG4gICAgLm1hcChjb25uZWN0b3IgPT4gY29ubmVjdG9yLnNsdWcpXG5cbi8qKiBBc2VndXJhIGBjb25uZWN0b3JzYCBub3JtYWxpemFkb3MgZW4gdW4gYWdlbnRlIHByb3ZlbmllbnRlIGRlbCBsaXN0YWRvIGRlIGN1c3RvbXMuICovXG5leHBvcnQgY29uc3Qgd2l0aE5vcm1hbGl6ZWRDb25uZWN0b3JzID0gPFQgZXh0ZW5kcyB7IGNvbm5lY3RvcnM/OiB1bmtub3duIH0+KGFnZW50OiBUKTogVCA9PiB7XG4gIGNvbnN0IGNvbm5lY3RvcnMgPSBub3JtYWxpemVBZ2VudENvbm5lY3RvcnMoYWdlbnQuY29ubmVjdG9ycylcbiAgcmV0dXJuIGNvbm5lY3RvcnMgPyB7IC4uLmFnZW50LCBjb25uZWN0b3JzIH0gOiBhZ2VudFxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUVBO0FBQ0EsT0FBTyxJQUFNQSxtQkFBbUIsR0FBRyxLQUFLOztBQUV4QztBQUNBLE9BQU8sSUFBTUMsbUJBQW1CLEdBQUcsS0FBSzs7QUFFeEM7QUFDQSxPQUFPLElBQU1DLHVCQUF1QixHQUFHLFVBQVU7O0FBRWpEO0FBQ0EsT0FBTyxJQUFNQyxvQkFBdUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUM7O0FBRTlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQywyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFJQyxVQUFtQjtFQUFB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
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
/* eslint-disable no-console */
|
|
5
|
+
|
|
6
|
+
var LOG_PREFIX = '[maia-stream]';
|
|
7
|
+
var isStreamDebugEnabled = function isStreamDebugEnabled() {
|
|
8
|
+
if (typeof window === 'undefined') return true;
|
|
9
|
+
return window.__MAIA_STREAM_DEBUG__ !== false;
|
|
10
|
+
};
|
|
11
|
+
var safeString = function safeString(value) {
|
|
12
|
+
var maxLen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 160;
|
|
13
|
+
if (value == null) return '';
|
|
14
|
+
var text = typeof value === 'string' ? value : JSON.stringify(value);
|
|
15
|
+
if (text.length <= maxLen) return text;
|
|
16
|
+
return "".concat(text.slice(0, maxLen), "\u2026");
|
|
17
|
+
};
|
|
18
|
+
export var summarizeTimelineSnapshot = function summarizeTimelineSnapshot(snapshot) {
|
|
19
|
+
return {
|
|
20
|
+
turnId: snapshot.turnId,
|
|
21
|
+
contentFrozenLength: snapshot.contentFrozenLength,
|
|
22
|
+
segmentCount: snapshot.segments.length,
|
|
23
|
+
segments: snapshot.segments.map(function (segment) {
|
|
24
|
+
if (segment.type === 'execution') {
|
|
25
|
+
return {
|
|
26
|
+
type: segment.type,
|
|
27
|
+
id: segment.id,
|
|
28
|
+
steps: segment.steps.map(function (step) {
|
|
29
|
+
return {
|
|
30
|
+
id: step.id,
|
|
31
|
+
node: step.node,
|
|
32
|
+
toolName: step.toolName,
|
|
33
|
+
status: step.status,
|
|
34
|
+
message: safeString(step.message, 80)
|
|
35
|
+
};
|
|
36
|
+
})
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
type: segment.type,
|
|
41
|
+
id: segment.id,
|
|
42
|
+
textLength: segment.text.length,
|
|
43
|
+
textPreview: safeString(segment.text, 80)
|
|
44
|
+
};
|
|
45
|
+
})
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export var summarizeHitlContext = function summarizeHitlContext(context) {
|
|
49
|
+
var _context$pendingActio, _context$approval, _context$approval2;
|
|
50
|
+
if (!context) return null;
|
|
51
|
+
return {
|
|
52
|
+
messageId: context.messageId,
|
|
53
|
+
threadIds: context.threadIds,
|
|
54
|
+
pendingTools: (_context$pendingActio = context.pendingActions) === null || _context$pendingActio === void 0 ? void 0 : _context$pendingActio.map(function (action) {
|
|
55
|
+
return action.tool_name;
|
|
56
|
+
}),
|
|
57
|
+
approvalStatus: (_context$approval = context.approval) !== null && _context$approval !== void 0 && _context$approval.manual_approval_detected ? 'manual_detected' : 'button',
|
|
58
|
+
originalThreadId: (_context$approval2 = context.approval) === null || _context$approval2 === void 0 ? void 0 : _context$approval2.original_thread_id
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
export var summarizeApprovalPayload = function summarizeApprovalPayload(approval) {
|
|
62
|
+
var _payload$pending_acti;
|
|
63
|
+
var payload = approval;
|
|
64
|
+
return {
|
|
65
|
+
originalThreadId: payload.original_thread_id,
|
|
66
|
+
sessionId: payload.session_id,
|
|
67
|
+
manualApprovalDetected: payload.manual_approval_detected === true,
|
|
68
|
+
warningMessage: payload.warning_message ? safeString(payload.warning_message, 80) : undefined,
|
|
69
|
+
totalActions: payload.total_actions,
|
|
70
|
+
pendingActions: (_payload$pending_acti = payload.pending_actions) === null || _payload$pending_acti === void 0 ? void 0 : _payload$pending_acti.map(function (action) {
|
|
71
|
+
return {
|
|
72
|
+
tool_name: action.tool_name,
|
|
73
|
+
thread_id: action.thread_id,
|
|
74
|
+
tool_call_id: action.tool_call_id
|
|
75
|
+
};
|
|
76
|
+
})
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
export var summarizeStreamActivity = function summarizeStreamActivity(activity) {
|
|
80
|
+
var _activity$executionSt, _activity$executionSt2, _activity$executionSt3;
|
|
81
|
+
if (!activity) return null;
|
|
82
|
+
return {
|
|
83
|
+
phase: activity.phase,
|
|
84
|
+
message: safeString(activity.message, 80),
|
|
85
|
+
executionStepCount: (_activity$executionSt = (_activity$executionSt2 = activity.executionSteps) === null || _activity$executionSt2 === void 0 ? void 0 : _activity$executionSt2.length) !== null && _activity$executionSt !== void 0 ? _activity$executionSt : 0,
|
|
86
|
+
executionSteps: (_activity$executionSt3 = activity.executionSteps) === null || _activity$executionSt3 === void 0 ? void 0 : _activity$executionSt3.map(function (step) {
|
|
87
|
+
return {
|
|
88
|
+
node: step.node,
|
|
89
|
+
toolName: step.toolName,
|
|
90
|
+
status: step.status,
|
|
91
|
+
message: safeString(step.message, 80)
|
|
92
|
+
};
|
|
93
|
+
})
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
export var streamDebugLog = function streamDebugLog(scope, event, payload) {
|
|
97
|
+
if (!isStreamDebugEnabled()) return;
|
|
98
|
+
if (payload) {
|
|
99
|
+
console.info(LOG_PREFIX, scope, event, payload);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
console.info(LOG_PREFIX, scope, event);
|
|
103
|
+
};
|
|
104
|
+
export var streamDebugWarn = function streamDebugWarn(scope, event, payload) {
|
|
105
|
+
if (!isStreamDebugEnabled()) return;
|
|
106
|
+
if (payload) {
|
|
107
|
+
console.warn(LOG_PREFIX, scope, event, payload);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
console.warn(LOG_PREFIX, scope, event);
|
|
111
|
+
};
|
|
112
|
+
export var streamDebugTimeline = function streamDebugTimeline(scope, event, snapshot) {
|
|
113
|
+
streamDebugLog(scope, event, summarizeTimelineSnapshot(snapshot));
|
|
114
|
+
};
|
|
115
|
+
export var streamDebugSse = function streamDebugSse(channel, eventType, payload) {
|
|
116
|
+
streamDebugLog("sse:".concat(channel), eventType, payload);
|
|
117
|
+
};
|
|
118
|
+
export var streamDebugHitlContext = function streamDebugHitlContext(scope, event, context) {
|
|
119
|
+
streamDebugLog(scope, event, {
|
|
120
|
+
hitlContext: summarizeHitlContext(context)
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
export var streamDebugApproval = function streamDebugApproval(scope, event, approval, extra) {
|
|
124
|
+
streamDebugLog(scope, event, _objectSpread({
|
|
125
|
+
approval: summarizeApprovalPayload(approval)
|
|
126
|
+
}, extra));
|
|
127
|
+
};
|
|
128
|
+
export var streamDebugActivity = function streamDebugActivity(scope, event, activity, extra) {
|
|
129
|
+
streamDebugLog(scope, event, _objectSpread({
|
|
130
|
+
activity: summarizeStreamActivity(activity)
|
|
131
|
+
}, extra));
|
|
132
|
+
};
|
|
133
|
+
export var streamDebugNode = function streamDebugNode(scope, payload, extra) {
|
|
134
|
+
streamDebugLog(scope, 'node', _objectSpread({
|
|
135
|
+
node: payload.node,
|
|
136
|
+
tool_name: payload.tool_name,
|
|
137
|
+
thread_id: payload.thread_id,
|
|
138
|
+
backendMessage: safeString(payload.message, 120),
|
|
139
|
+
resolvedMessage: extra !== null && extra !== void 0 && extra.resolvedMessage ? safeString(extra.resolvedMessage, 120) : undefined,
|
|
140
|
+
resolvedPhase: extra === null || extra === void 0 ? void 0 : extra.resolvedPhase
|
|
141
|
+
}, extra));
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
/** Alerta cuando el node HITL coincide con tools del approval pendiente (posible UI duplicada). */
|
|
145
|
+
export var streamDebugLogHitlUiOverlap = function streamDebugLogHitlUiOverlap(params) {
|
|
146
|
+
var _params$hitlContext$p, _params$hitlContext, _params$nodePayload$t, _params$nodePayload, _params$nodePayload2, _params$activityMessa, _params$activityMessa2, _params$nodePayload$m, _params$nodePayload3, _params$uiSurfaces$le, _params$uiSurfaces, _params$nodePayload4;
|
|
147
|
+
var pendingTools = (_params$hitlContext$p = (_params$hitlContext = params.hitlContext) === null || _params$hitlContext === void 0 || (_params$hitlContext = _params$hitlContext.pendingActions) === null || _params$hitlContext === void 0 ? void 0 : _params$hitlContext.map(function (action) {
|
|
148
|
+
return action.tool_name;
|
|
149
|
+
})) !== null && _params$hitlContext$p !== void 0 ? _params$hitlContext$p : [];
|
|
150
|
+
var nodeTool = (_params$nodePayload$t = (_params$nodePayload = params.nodePayload) === null || _params$nodePayload === void 0 ? void 0 : _params$nodePayload.tool_name) !== null && _params$nodePayload$t !== void 0 ? _params$nodePayload$t : (_params$nodePayload2 = params.nodePayload) === null || _params$nodePayload2 === void 0 ? void 0 : _params$nodePayload2.node;
|
|
151
|
+
var activityMsg = (_params$activityMessa = (_params$activityMessa2 = params.activityMessage) === null || _params$activityMessa2 === void 0 ? void 0 : _params$activityMessa2.trim().toLowerCase()) !== null && _params$activityMessa !== void 0 ? _params$activityMessa : '';
|
|
152
|
+
var backendMsg = (_params$nodePayload$m = (_params$nodePayload3 = params.nodePayload) === null || _params$nodePayload3 === void 0 || (_params$nodePayload3 = _params$nodePayload3.message) === null || _params$nodePayload3 === void 0 ? void 0 : _params$nodePayload3.trim().toLowerCase()) !== null && _params$nodePayload$m !== void 0 ? _params$nodePayload$m : '';
|
|
153
|
+
var toolOverlap = nodeTool && pendingTools.some(function (tool) {
|
|
154
|
+
return tool === nodeTool || nodeTool === 'resuming';
|
|
155
|
+
});
|
|
156
|
+
var hasMultipleSurfaces = ((_params$uiSurfaces$le = (_params$uiSurfaces = params.uiSurfaces) === null || _params$uiSurfaces === void 0 ? void 0 : _params$uiSurfaces.length) !== null && _params$uiSurfaces$le !== void 0 ? _params$uiSurfaces$le : 0) >= 2;
|
|
157
|
+
if (!toolOverlap && !hasMultipleSurfaces) return;
|
|
158
|
+
streamDebugWarn(params.scope, 'hitl-ui-overlap-suspect', {
|
|
159
|
+
source: params.source,
|
|
160
|
+
uiSurfaces: params.uiSurfaces,
|
|
161
|
+
pendingTools: pendingTools,
|
|
162
|
+
nodeTool: nodeTool,
|
|
163
|
+
backendMessage: safeString((_params$nodePayload4 = params.nodePayload) === null || _params$nodePayload4 === void 0 ? void 0 : _params$nodePayload4.message, 120),
|
|
164
|
+
activityMessage: safeString(params.activityMessage, 120),
|
|
165
|
+
messagesMatch: activityMsg.length > 0 && backendMsg.length > 0 && activityMsg === backendMsg,
|
|
166
|
+
hitlContext: summarizeHitlContext(params.hitlContext)
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMT0dfUFJFRklYIiwiaXNTdHJlYW1EZWJ1Z0VuYWJsZWQiLCJ3aW5kb3ciLCJfX01BSUFfU1RSRUFNX0RFQlVHX18iLCJzYWZlU3RyaW5nIiwidmFsdWUiLCJtYXhMZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0ZXh0IiwiSlNPTiIsInN0cmluZ2lmeSIsImNvbmNhdCIsInNsaWNlIiwic3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCIsInNuYXBzaG90IiwidHVybklkIiwiY29udGVudEZyb3plbkxlbmd0aCIsInNlZ21lbnRDb3VudCIsInNlZ21lbnRzIiwibWFwIiwic2VnbWVudCIsInR5cGUiLCJpZCIsInN0ZXBzIiwic3RlcCIsIm5vZGUiLCJ0b29sTmFtZSIsInN0YXR1cyIsIm1lc3NhZ2UiLCJ0ZXh0TGVuZ3RoIiwidGV4dFByZXZpZXciLCJzdW1tYXJpemVIaXRsQ29udGV4dCIsImNvbnRleHQiLCJfY29udGV4dCRwZW5kaW5nQWN0aW8iLCJfY29udGV4dCRhcHByb3ZhbCIsIl9jb250ZXh0JGFwcHJvdmFsMiIsIm1lc3NhZ2VJZCIsInRocmVhZElkcyIsInBlbmRpbmdUb29scyIsInBlbmRpbmdBY3Rpb25zIiwiYWN0aW9uIiwidG9vbF9uYW1lIiwiYXBwcm92YWxTdGF0dXMiLCJhcHByb3ZhbCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsIm9yaWdpbmFsVGhyZWFkSWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJzdW1tYXJpemVBcHByb3ZhbFBheWxvYWQiLCJfcGF5bG9hZCRwZW5kaW5nX2FjdGkiLCJwYXlsb2FkIiwic2Vzc2lvbklkIiwic2Vzc2lvbl9pZCIsIm1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQiLCJ3YXJuaW5nTWVzc2FnZSIsIndhcm5pbmdfbWVzc2FnZSIsInRvdGFsQWN0aW9ucyIsInRvdGFsX2FjdGlvbnMiLCJwZW5kaW5nX2FjdGlvbnMiLCJ0aHJlYWRfaWQiLCJ0b29sX2NhbGxfaWQiLCJzdW1tYXJpemVTdHJlYW1BY3Rpdml0eSIsImFjdGl2aXR5IiwiX2FjdGl2aXR5JGV4ZWN1dGlvblN0IiwiX2FjdGl2aXR5JGV4ZWN1dGlvblN0MiIsIl9hY3Rpdml0eSRleGVjdXRpb25TdDMiLCJwaGFzZSIsImV4ZWN1dGlvblN0ZXBDb3VudCIsImV4ZWN1dGlvblN0ZXBzIiwic3RyZWFtRGVidWdMb2ciLCJzY29wZSIsImV2ZW50IiwiY29uc29sZSIsImluZm8iLCJzdHJlYW1EZWJ1Z1dhcm4iLCJ3YXJuIiwic3RyZWFtRGVidWdUaW1lbGluZSIsInN0cmVhbURlYnVnU3NlIiwiY2hhbm5lbCIsImV2ZW50VHlwZSIsInN0cmVhbURlYnVnSGl0bENvbnRleHQiLCJoaXRsQ29udGV4dCIsInN0cmVhbURlYnVnQXBwcm92YWwiLCJleHRyYSIsIl9vYmplY3RTcHJlYWQiLCJzdHJlYW1EZWJ1Z0FjdGl2aXR5Iiwic3RyZWFtRGVidWdOb2RlIiwiYmFja2VuZE1lc3NhZ2UiLCJyZXNvbHZlZE1lc3NhZ2UiLCJyZXNvbHZlZFBoYXNlIiwic3RyZWFtRGVidWdMb2dIaXRsVWlPdmVybGFwIiwicGFyYW1zIiwiX3BhcmFtcyRoaXRsQ29udGV4dCRwIiwiX3BhcmFtcyRoaXRsQ29udGV4dCIsIl9wYXJhbXMkbm9kZVBheWxvYWQkdCIsIl9wYXJhbXMkbm9kZVBheWxvYWQiLCJfcGFyYW1zJG5vZGVQYXlsb2FkMiIsIl9wYXJhbXMkYWN0aXZpdHlNZXNzYSIsIl9wYXJhbXMkYWN0aXZpdHlNZXNzYTIiLCJfcGFyYW1zJG5vZGVQYXlsb2FkJG0iLCJfcGFyYW1zJG5vZGVQYXlsb2FkMyIsIl9wYXJhbXMkdWlTdXJmYWNlcyRsZSIsIl9wYXJhbXMkdWlTdXJmYWNlcyIsIl9wYXJhbXMkbm9kZVBheWxvYWQ0Iiwibm9kZVRvb2wiLCJub2RlUGF5bG9hZCIsImFjdGl2aXR5TXNnIiwiYWN0aXZpdHlNZXNzYWdlIiwidHJpbSIsInRvTG93ZXJDYXNlIiwiYmFja2VuZE1zZyIsInRvb2xPdmVybGFwIiwic29tZSIsInRvb2wiLCJoYXNNdWx0aXBsZVN1cmZhY2VzIiwidWlTdXJmYWNlcyIsInNvdXJjZSIsIm1lc3NhZ2VzTWF0Y2giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3RyZWFtRGVidWdMb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcy9DaGF0J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1UaW1lbGluZVNuYXBzaG90IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuXG5jb25zdCBMT0dfUFJFRklYID0gJ1ttYWlhLXN0cmVhbV0nXG5cbnR5cGUgU3RyZWFtRGVidWdQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAvKiogRGVzYWN0aXZhciBsb2dzOiBgd2luZG93Ll9fTUFJQV9TVFJFQU1fREVCVUdfXyA9IGZhbHNlYCAqL1xuICAgIF9fTUFJQV9TVFJFQU1fREVCVUdfXz86IGJvb2xlYW5cbiAgfVxufVxuXG5jb25zdCBpc1N0cmVhbURlYnVnRW5hYmxlZCA9ICgpOiBib29sZWFuID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gd2luZG93Ll9fTUFJQV9TVFJFQU1fREVCVUdfXyAhPT0gZmFsc2Vcbn1cblxuY29uc3Qgc2FmZVN0cmluZyA9ICh2YWx1ZTogdW5rbm93biwgbWF4TGVuID0gMTYwKTogc3RyaW5nID0+IHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiAnJ1xuICBjb25zdCB0ZXh0ID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gIGlmICh0ZXh0Lmxlbmd0aCA8PSBtYXhMZW4pIHJldHVybiB0ZXh0XG4gIHJldHVybiBgJHt0ZXh0LnNsaWNlKDAsIG1heExlbil94oCmYFxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCA9IChzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCkgPT4gKHtcbiAgdHVybklkOiBzbmFwc2hvdC50dXJuSWQsXG4gIGNvbnRlbnRGcm96ZW5MZW5ndGg6IHNuYXBzaG90LmNvbnRlbnRGcm96ZW5MZW5ndGgsXG4gIHNlZ21lbnRDb3VudDogc25hcHNob3Quc2VnbWVudHMubGVuZ3RoLFxuICBzZWdtZW50czogc25hcHNob3Quc2VnbWVudHMubWFwKHNlZ21lbnQgPT4ge1xuICAgIGlmIChzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBzZWdtZW50LnR5cGUsXG4gICAgICAgIGlkOiBzZWdtZW50LmlkLFxuICAgICAgICBzdGVwczogc2VnbWVudC5zdGVwcy5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgIGlkOiBzdGVwLmlkLFxuICAgICAgICAgIG5vZGU6IHN0ZXAubm9kZSxcbiAgICAgICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgICAgICBzdGF0dXM6IHN0ZXAuc3RhdHVzLFxuICAgICAgICAgIG1lc3NhZ2U6IHNhZmVTdHJpbmcoc3RlcC5tZXNzYWdlLCA4MCksXG4gICAgICAgIH0pKSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHNlZ21lbnQudHlwZSxcbiAgICAgIGlkOiBzZWdtZW50LmlkLFxuICAgICAgdGV4dExlbmd0aDogc2VnbWVudC50ZXh0Lmxlbmd0aCxcbiAgICAgIHRleHRQcmV2aWV3OiBzYWZlU3RyaW5nKHNlZ21lbnQudGV4dCwgODApLFxuICAgIH1cbiAgfSksXG59KVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplSGl0bENvbnRleHQgPSAoY29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICghY29udGV4dCkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlSWQ6IGNvbnRleHQubWVzc2FnZUlkLFxuICAgIHRocmVhZElkczogY29udGV4dC50aHJlYWRJZHMsXG4gICAgcGVuZGluZ1Rvb2xzOiBjb250ZXh0LnBlbmRpbmdBY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50b29sX25hbWUpLFxuICAgIGFwcHJvdmFsU3RhdHVzOiBjb250ZXh0LmFwcHJvdmFsPy5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPyAnbWFudWFsX2RldGVjdGVkJyA6ICdidXR0b24nLFxuICAgIG9yaWdpbmFsVGhyZWFkSWQ6IGNvbnRleHQuYXBwcm92YWw/Lm9yaWdpbmFsX3RocmVhZF9pZCxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplQXBwcm92YWxQYXlsb2FkID0gKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICBjb25zdCBwYXlsb2FkID0gYXBwcm92YWwgYXMgQXBwcm92YWxSZXF1ZXN0XG4gIHJldHVybiB7XG4gICAgb3JpZ2luYWxUaHJlYWRJZDogcGF5bG9hZC5vcmlnaW5hbF90aHJlYWRfaWQsXG4gICAgc2Vzc2lvbklkOiBwYXlsb2FkLnNlc3Npb25faWQsXG4gICAgbWFudWFsQXBwcm92YWxEZXRlY3RlZDogcGF5bG9hZC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWUsXG4gICAgd2FybmluZ01lc3NhZ2U6IHBheWxvYWQud2FybmluZ19tZXNzYWdlID8gc2FmZVN0cmluZyhwYXlsb2FkLndhcm5pbmdfbWVzc2FnZSwgODApIDogdW5kZWZpbmVkLFxuICAgIHRvdGFsQWN0aW9uczogcGF5bG9hZC50b3RhbF9hY3Rpb25zLFxuICAgIHBlbmRpbmdBY3Rpb25zOiBwYXlsb2FkLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiAoe1xuICAgICAgdG9vbF9uYW1lOiBhY3Rpb24udG9vbF9uYW1lLFxuICAgICAgdGhyZWFkX2lkOiBhY3Rpb24udGhyZWFkX2lkLFxuICAgICAgdG9vbF9jYWxsX2lkOiBhY3Rpb24udG9vbF9jYWxsX2lkLFxuICAgIH0pKSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplU3RyZWFtQWN0aXZpdHkgPSAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICBpZiAoIWFjdGl2aXR5KSByZXR1cm4gbnVsbFxuICByZXR1cm4ge1xuICAgIHBoYXNlOiBhY3Rpdml0eS5waGFzZSxcbiAgICBtZXNzYWdlOiBzYWZlU3RyaW5nKGFjdGl2aXR5Lm1lc3NhZ2UsIDgwKSxcbiAgICBleGVjdXRpb25TdGVwQ291bnQ6IGFjdGl2aXR5LmV4ZWN1dGlvblN0ZXBzPy5sZW5ndGggPz8gMCxcbiAgICBleGVjdXRpb25TdGVwczogYWN0aXZpdHkuZXhlY3V0aW9uU3RlcHM/Lm1hcChzdGVwID0+ICh7XG4gICAgICBub2RlOiBzdGVwLm5vZGUsXG4gICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgIHN0YXR1czogc3RlcC5zdGF0dXMsXG4gICAgICBtZXNzYWdlOiBzYWZlU3RyaW5nKHN0ZXAubWVzc2FnZSwgODApLFxuICAgIH0pKSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdMb2cgPSAoc2NvcGU6IHN0cmluZywgZXZlbnQ6IHN0cmluZywgcGF5bG9hZD86IFN0cmVhbURlYnVnUGF5bG9hZCk6IHZvaWQgPT4ge1xuICBpZiAoIWlzU3RyZWFtRGVidWdFbmFibGVkKCkpIHJldHVyblxuICBpZiAocGF5bG9hZCkge1xuICAgIGNvbnNvbGUuaW5mbyhMT0dfUFJFRklYLCBzY29wZSwgZXZlbnQsIHBheWxvYWQpXG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc29sZS5pbmZvKExPR19QUkVGSVgsIHNjb3BlLCBldmVudClcbn1cblxuZXhwb3J0IGNvbnN0IHN0cmVhbURlYnVnV2FybiA9IChzY29wZTogc3RyaW5nLCBldmVudDogc3RyaW5nLCBwYXlsb2FkPzogU3RyZWFtRGVidWdQYXlsb2FkKTogdm9pZCA9PiB7XG4gIGlmICghaXNTdHJlYW1EZWJ1Z0VuYWJsZWQoKSkgcmV0dXJuXG4gIGlmIChwYXlsb2FkKSB7XG4gICAgY29uc29sZS53YXJuKExPR19QUkVGSVgsIHNjb3BlLCBldmVudCwgcGF5bG9hZClcbiAgICByZXR1cm5cbiAgfVxuICBjb25zb2xlLndhcm4oTE9HX1BSRUZJWCwgc2NvcGUsIGV2ZW50KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdUaW1lbGluZSA9IChzY29wZTogc3RyaW5nLCBldmVudDogc3RyaW5nLCBzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCk6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgZXZlbnQsIHN1bW1hcml6ZVRpbWVsaW5lU25hcHNob3Qoc25hcHNob3QpKVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdTc2UgPSAoXG4gIGNoYW5uZWw6ICdhc2tNYWlhJyB8ICdjb250aW51ZVRocmVhZCcgfCAncHJvY2Vzc1NTRVN0cmVhbScsXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBwYXlsb2FkPzogU3RyZWFtRGVidWdQYXlsb2FkXG4pOiB2b2lkID0+IHtcbiAgc3RyZWFtRGVidWdMb2coYHNzZToke2NoYW5uZWx9YCwgZXZlbnRUeXBlLCBwYXlsb2FkKVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdIaXRsQ29udGV4dCA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgY29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiB2b2lkID0+IHtcbiAgc3RyZWFtRGVidWdMb2coc2NvcGUsIGV2ZW50LCB7IGhpdGxDb250ZXh0OiBzdW1tYXJpemVIaXRsQ29udGV4dChjb250ZXh0KSB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdBcHByb3ZhbCA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBleHRyYT86IFN0cmVhbURlYnVnUGF5bG9hZFxuKTogdm9pZCA9PiB7XG4gIHN0cmVhbURlYnVnTG9nKHNjb3BlLCBldmVudCwge1xuICAgIGFwcHJvdmFsOiBzdW1tYXJpemVBcHByb3ZhbFBheWxvYWQoYXBwcm92YWwpLFxuICAgIC4uLmV4dHJhLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdBY3Rpdml0eSA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZXh0cmE/OiBTdHJlYW1EZWJ1Z1BheWxvYWRcbik6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgZXZlbnQsIHtcbiAgICBhY3Rpdml0eTogc3VtbWFyaXplU3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpLFxuICAgIC4uLmV4dHJhLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdOb2RlID0gKFxuICBzY29wZTogc3RyaW5nLFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICBleHRyYT86IFN0cmVhbURlYnVnUGF5bG9hZCAmIHsgcmVzb2x2ZWRNZXNzYWdlPzogc3RyaW5nOyByZXNvbHZlZFBoYXNlPzogc3RyaW5nIH1cbik6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgJ25vZGUnLCB7XG4gICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgIHRvb2xfbmFtZTogcGF5bG9hZC50b29sX25hbWUsXG4gICAgdGhyZWFkX2lkOiBwYXlsb2FkLnRocmVhZF9pZCxcbiAgICBiYWNrZW5kTWVzc2FnZTogc2FmZVN0cmluZyhwYXlsb2FkLm1lc3NhZ2UsIDEyMCksXG4gICAgcmVzb2x2ZWRNZXNzYWdlOiBleHRyYT8ucmVzb2x2ZWRNZXNzYWdlID8gc2FmZVN0cmluZyhleHRyYS5yZXNvbHZlZE1lc3NhZ2UsIDEyMCkgOiB1bmRlZmluZWQsXG4gICAgcmVzb2x2ZWRQaGFzZTogZXh0cmE/LnJlc29sdmVkUGhhc2UsXG4gICAgLi4uZXh0cmEsXG4gIH0pXG59XG5cbi8qKiBBbGVydGEgY3VhbmRvIGVsIG5vZGUgSElUTCBjb2luY2lkZSBjb24gdG9vbHMgZGVsIGFwcHJvdmFsIHBlbmRpZW50ZSAocG9zaWJsZSBVSSBkdXBsaWNhZGEpLiAqL1xuZXhwb3J0IGNvbnN0IHN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCA9IChwYXJhbXM6IHtcbiAgc2NvcGU6IHN0cmluZ1xuICBzb3VyY2U6ICdub2RlJyB8ICdpbml0aWFsQWN0aXZpdHknIHwgJ2FwcHJvdmFsQm94JyB8ICd0aW1lbGluZVNlZ21lbnQnXG4gIG5vZGVQYXlsb2FkPzogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZFxuICBhY3Rpdml0eU1lc3NhZ2U/OiBzdHJpbmdcbiAgaGl0bENvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgdWlTdXJmYWNlcz86IHN0cmluZ1tdXG59KTogdm9pZCA9PiB7XG4gIGNvbnN0IHBlbmRpbmdUb29scyA9IHBhcmFtcy5oaXRsQ29udGV4dD8ucGVuZGluZ0FjdGlvbnM/Lm1hcChhY3Rpb24gPT4gYWN0aW9uLnRvb2xfbmFtZSkgPz8gW11cbiAgY29uc3Qgbm9kZVRvb2wgPSBwYXJhbXMubm9kZVBheWxvYWQ/LnRvb2xfbmFtZSA/PyBwYXJhbXMubm9kZVBheWxvYWQ/Lm5vZGVcbiAgY29uc3QgYWN0aXZpdHlNc2cgPSBwYXJhbXMuYWN0aXZpdHlNZXNzYWdlPy50cmltKCkudG9Mb3dlckNhc2UoKSA/PyAnJ1xuICBjb25zdCBiYWNrZW5kTXNnID0gcGFyYW1zLm5vZGVQYXlsb2FkPy5tZXNzYWdlPy50cmltKCkudG9Mb3dlckNhc2UoKSA/PyAnJ1xuXG4gIGNvbnN0IHRvb2xPdmVybGFwID0gbm9kZVRvb2wgJiYgcGVuZGluZ1Rvb2xzLnNvbWUodG9vbCA9PiB0b29sID09PSBub2RlVG9vbCB8fCBub2RlVG9vbCA9PT0gJ3Jlc3VtaW5nJylcbiAgY29uc3QgaGFzTXVsdGlwbGVTdXJmYWNlcyA9IChwYXJhbXMudWlTdXJmYWNlcz8ubGVuZ3RoID8/IDApID49IDJcblxuICBpZiAoIXRvb2xPdmVybGFwICYmICFoYXNNdWx0aXBsZVN1cmZhY2VzKSByZXR1cm5cblxuICBzdHJlYW1EZWJ1Z1dhcm4ocGFyYW1zLnNjb3BlLCAnaGl0bC11aS1vdmVybGFwLXN1c3BlY3QnLCB7XG4gICAgc291cmNlOiBwYXJhbXMuc291cmNlLFxuICAgIHVpU3VyZmFjZXM6IHBhcmFtcy51aVN1cmZhY2VzLFxuICAgIHBlbmRpbmdUb29scyxcbiAgICBub2RlVG9vbCxcbiAgICBiYWNrZW5kTWVzc2FnZTogc2FmZVN0cmluZyhwYXJhbXMubm9kZVBheWxvYWQ/Lm1lc3NhZ2UsIDEyMCksXG4gICAgYWN0aXZpdHlNZXNzYWdlOiBzYWZlU3RyaW5nKHBhcmFtcy5hY3Rpdml0eU1lc3NhZ2UsIDEyMCksXG4gICAgbWVzc2FnZXNNYXRjaDogYWN0aXZpdHlNc2cubGVuZ3RoID4gMCAmJiBiYWNrZW5kTXNnLmxlbmd0aCA+IDAgJiYgYWN0aXZpdHlNc2cgPT09IGJhY2tlbmRNc2csXG4gICAgaGl0bENvbnRleHQ6IHN1bW1hcml6ZUhpdGxDb250ZXh0KHBhcmFtcy5oaXRsQ29udGV4dCksXG4gIH0pXG59XG4iXSwibWFwcGluZ3MiOiI7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
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
import { resolveHitlNodeStreamActivity } from './streamActivityMessages';
|
|
6
|
+
import { streamDebugLog } from './streamDebugLog';
|
|
7
|
+
var executionStepCounter = 0;
|
|
8
|
+
var nextStepId = function nextStepId() {
|
|
9
|
+
executionStepCounter += 1;
|
|
10
|
+
return "exec-step-".concat(executionStepCounter);
|
|
11
|
+
};
|
|
12
|
+
export var resetExecutionStepCounter = function resetExecutionStepCounter() {
|
|
13
|
+
executionStepCounter = 0;
|
|
14
|
+
};
|
|
15
|
+
var completeRunningSteps = function completeRunningSteps(steps) {
|
|
16
|
+
return steps.map(function (step) {
|
|
17
|
+
return step.status === 'running' ? _objectSpread(_objectSpread({}, step), {}, {
|
|
18
|
+
status: 'completed'
|
|
19
|
+
}) : step;
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
export var completeRunningStepsInSteps = completeRunningSteps;
|
|
23
|
+
export var completeAllExecutionSteps = function completeAllExecutionSteps(steps) {
|
|
24
|
+
return steps.map(function (step) {
|
|
25
|
+
return _objectSpread(_objectSpread({}, step), {}, {
|
|
26
|
+
status: 'completed'
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
export var shouldShowExecutionTrace = function shouldShowExecutionTrace(steps) {
|
|
31
|
+
if (!(steps !== null && steps !== void 0 && steps.length)) return false;
|
|
32
|
+
if (steps.length >= 2) return true;
|
|
33
|
+
return steps.some(function (step) {
|
|
34
|
+
return step.status === 'completed';
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
export var resolveStepMessageFromNode = function resolveStepMessageFromNode(payload, t, context, threadId) {
|
|
38
|
+
var activity = resolveHitlNodeStreamActivity(payload.message, t, context, threadId !== null && threadId !== void 0 ? threadId : payload.thread_id);
|
|
39
|
+
return activity.message;
|
|
40
|
+
};
|
|
41
|
+
export var pushExecutionStepFromNode = function pushExecutionStepFromNode(currentSteps, payload, t, context, threadId) {
|
|
42
|
+
var _payload$tool_name;
|
|
43
|
+
var message = resolveStepMessageFromNode(payload, t, context, threadId);
|
|
44
|
+
var completedPrevious = completeRunningSteps(currentSteps);
|
|
45
|
+
var newStep = {
|
|
46
|
+
id: nextStepId(),
|
|
47
|
+
message: message,
|
|
48
|
+
node: payload.node,
|
|
49
|
+
toolName: (_payload$tool_name = payload.tool_name) !== null && _payload$tool_name !== void 0 ? _payload$tool_name : payload.node !== 'resuming' ? payload.node : undefined,
|
|
50
|
+
status: 'running'
|
|
51
|
+
};
|
|
52
|
+
var nextSteps = [].concat(_toConsumableArray(completedPrevious), [newStep]);
|
|
53
|
+
streamDebugLog('executionSteps', 'push', {
|
|
54
|
+
node: payload.node,
|
|
55
|
+
toolName: newStep.toolName,
|
|
56
|
+
message: newStep.message,
|
|
57
|
+
stepCount: nextSteps.length,
|
|
58
|
+
hasHitlContext: Boolean(context)
|
|
59
|
+
});
|
|
60
|
+
return nextSteps;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/** Al iniciar token/content: marca tools como completadas y agrega/actualiza el paso de escritura. */
|
|
64
|
+
export var finalizeExecutionStepsForWriting = function finalizeExecutionStepsForWriting(currentSteps, writingMessage) {
|
|
65
|
+
var completed = completeRunningSteps(currentSteps);
|
|
66
|
+
var writingIndex = completed.findIndex(function (step) {
|
|
67
|
+
return step.node === '__writing__';
|
|
68
|
+
});
|
|
69
|
+
if (writingIndex >= 0) {
|
|
70
|
+
return completed.map(function (step, index) {
|
|
71
|
+
return index === writingIndex ? _objectSpread(_objectSpread({}, step), {}, {
|
|
72
|
+
message: writingMessage,
|
|
73
|
+
status: 'running'
|
|
74
|
+
}) : step;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return [].concat(_toConsumableArray(completed), [{
|
|
78
|
+
id: nextStepId(),
|
|
79
|
+
message: writingMessage,
|
|
80
|
+
node: '__writing__',
|
|
81
|
+
status: 'running'
|
|
82
|
+
}]);
|
|
83
|
+
};
|
|
84
|
+
export var mergeActivityWithExecutionSteps = function mergeActivityWithExecutionSteps(activity, steps) {
|
|
85
|
+
return _objectSpread(_objectSpread({}, activity), {}, {
|
|
86
|
+
executionSteps: steps.length > 0 ? steps : undefined
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
export var getActiveExecutionStep = function getActiveExecutionStep(steps) {
|
|
90
|
+
if (!steps.length) return null;
|
|
91
|
+
var running = _toConsumableArray(steps).reverse().find(function (step) {
|
|
92
|
+
return step.status === 'running';
|
|
93
|
+
});
|
|
94
|
+
return running !== null && running !== void 0 ? running : steps[steps.length - 1];
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInN0cmVhbURlYnVnTG9nIiwiZXhlY3V0aW9uU3RlcENvdW50ZXIiLCJuZXh0U3RlcElkIiwiY29uY2F0IiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImNvbXBsZXRlUnVubmluZ1N0ZXBzIiwic3RlcHMiLCJtYXAiLCJzdGVwIiwic3RhdHVzIiwiX29iamVjdFNwcmVhZCIsImNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyIsImNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMiLCJzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UiLCJsZW5ndGgiLCJzb21lIiwicmVzb2x2ZVN0ZXBNZXNzYWdlRnJvbU5vZGUiLCJwYXlsb2FkIiwidCIsImNvbnRleHQiLCJ0aHJlYWRJZCIsImFjdGl2aXR5IiwibWVzc2FnZSIsInRocmVhZF9pZCIsInB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUiLCJjdXJyZW50U3RlcHMiLCJfcGF5bG9hZCR0b29sX25hbWUiLCJjb21wbGV0ZWRQcmV2aW91cyIsIm5ld1N0ZXAiLCJpZCIsIm5vZGUiLCJ0b29sTmFtZSIsInRvb2xfbmFtZSIsInVuZGVmaW5lZCIsIm5leHRTdGVwcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInN0ZXBDb3VudCIsImhhc0hpdGxDb250ZXh0IiwiQm9vbGVhbiIsImZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nIiwid3JpdGluZ01lc3NhZ2UiLCJjb21wbGV0ZWQiLCJ3cml0aW5nSW5kZXgiLCJmaW5kSW5kZXgiLCJpbmRleCIsIm1lcmdlQWN0aXZpdHlXaXRoRXhlY3V0aW9uU3RlcHMiLCJleGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJydW5uaW5nIiwicmV2ZXJzZSIsImZpbmQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJlYW1FeGVjdXRpb25TdGVwLCBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLCBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBIaXRsRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJy4vc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2cgfSBmcm9tICcuL3N0cmVhbURlYnVnTG9nJ1xuXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxubGV0IGV4ZWN1dGlvblN0ZXBDb3VudGVyID0gMFxuXG5jb25zdCBuZXh0U3RlcElkID0gKCk6IHN0cmluZyA9PiB7XG4gIGV4ZWN1dGlvblN0ZXBDb3VudGVyICs9IDFcbiAgcmV0dXJuIGBleGVjLXN0ZXAtJHtleGVjdXRpb25TdGVwQ291bnRlcn1gXG59XG5cbmV4cG9ydCBjb25zdCByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyID0gKCk6IHZvaWQgPT4ge1xuICBleGVjdXRpb25TdGVwQ291bnRlciA9IDBcbn1cblxuY29uc3QgY29tcGxldGVSdW5uaW5nU3RlcHMgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSA9PlxuICBzdGVwcy5tYXAoc3RlcCA9PiAoc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJyA/IHsgLi4uc3RlcCwgc3RhdHVzOiAnY29tcGxldGVkJyBhcyBjb25zdCB9IDogc3RlcCkpXG5cbmV4cG9ydCBjb25zdCBjb21wbGV0ZVJ1bm5pbmdTdGVwc0luU3RlcHMgPSBjb21wbGV0ZVJ1bm5pbmdTdGVwc1xuXG5leHBvcnQgY29uc3QgY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+XG4gIHN0ZXBzLm1hcChzdGVwID0+ICh7IC4uLnN0ZXAsIHN0YXR1czogJ2NvbXBsZXRlZCcgYXMgY29uc3QgfSkpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIXN0ZXBzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICBpZiAoc3RlcHMubGVuZ3RoID49IDIpIHJldHVybiB0cnVlXG4gIHJldHVybiBzdGVwcy5zb21lKHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVN0ZXBNZXNzYWdlRnJvbU5vZGUgPSAoXG4gIHBheWxvYWQ6IFN0cmVhbU5vZGVFdmVudFBheWxvYWQsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsLFxuICB0aHJlYWRJZD86IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgYWN0aXZpdHkgPSByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShwYXlsb2FkLm1lc3NhZ2UsIHQsIGNvbnRleHQsIHRocmVhZElkID8/IHBheWxvYWQudGhyZWFkX2lkKVxuICByZXR1cm4gYWN0aXZpdHkubWVzc2FnZVxufVxuXG5leHBvcnQgY29uc3QgcHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSA9IChcbiAgY3VycmVudFN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW10sXG4gIHBheWxvYWQ6IFN0cmVhbU5vZGVFdmVudFBheWxvYWQsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsLFxuICB0aHJlYWRJZD86IHN0cmluZ1xuKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+IHtcbiAgY29uc3QgbWVzc2FnZSA9IHJlc29sdmVTdGVwTWVzc2FnZUZyb21Ob2RlKHBheWxvYWQsIHQsIGNvbnRleHQsIHRocmVhZElkKVxuICBjb25zdCBjb21wbGV0ZWRQcmV2aW91cyA9IGNvbXBsZXRlUnVubmluZ1N0ZXBzKGN1cnJlbnRTdGVwcylcbiAgY29uc3QgbmV3U3RlcDogU3RyZWFtRXhlY3V0aW9uU3RlcCA9IHtcbiAgICBpZDogbmV4dFN0ZXBJZCgpLFxuICAgIG1lc3NhZ2UsXG4gICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgIHRvb2xOYW1lOiBwYXlsb2FkLnRvb2xfbmFtZSA/PyAocGF5bG9hZC5ub2RlICE9PSAncmVzdW1pbmcnID8gcGF5bG9hZC5ub2RlIDogdW5kZWZpbmVkKSxcbiAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgfVxuICBjb25zdCBuZXh0U3RlcHMgPSBbLi4uY29tcGxldGVkUHJldmlvdXMsIG5ld1N0ZXBdXG4gIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdwdXNoJywge1xuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sTmFtZTogbmV3U3RlcC50b29sTmFtZSxcbiAgICBtZXNzYWdlOiBuZXdTdGVwLm1lc3NhZ2UsXG4gICAgc3RlcENvdW50OiBuZXh0U3RlcHMubGVuZ3RoLFxuICAgIGhhc0hpdGxDb250ZXh0OiBCb29sZWFuKGNvbnRleHQpLFxuICB9KVxuICByZXR1cm4gbmV4dFN0ZXBzXG59XG5cbi8qKiBBbCBpbmljaWFyIHRva2VuL2NvbnRlbnQ6IG1hcmNhIHRvb2xzIGNvbW8gY29tcGxldGFkYXMgeSBhZ3JlZ2EvYWN0dWFsaXphIGVsIHBhc28gZGUgZXNjcml0dXJhLiAqL1xuZXhwb3J0IGNvbnN0IGZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nID0gKFxuICBjdXJyZW50U3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSxcbiAgd3JpdGluZ01lc3NhZ2U6IHN0cmluZ1xuKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+IHtcbiAgY29uc3QgY29tcGxldGVkID0gY29tcGxldGVSdW5uaW5nU3RlcHMoY3VycmVudFN0ZXBzKVxuICBjb25zdCB3cml0aW5nSW5kZXggPSBjb21wbGV0ZWQuZmluZEluZGV4KHN0ZXAgPT4gc3RlcC5ub2RlID09PSAnX193cml0aW5nX18nKVxuXG4gIGlmICh3cml0aW5nSW5kZXggPj0gMCkge1xuICAgIHJldHVybiBjb21wbGV0ZWQubWFwKChzdGVwLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSB3cml0aW5nSW5kZXggPyB7IC4uLnN0ZXAsIG1lc3NhZ2U6IHdyaXRpbmdNZXNzYWdlLCBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCB9IDogc3RlcFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uY29tcGxldGVkLFxuICAgIHtcbiAgICAgIGlkOiBuZXh0U3RlcElkKCksXG4gICAgICBtZXNzYWdlOiB3cml0aW5nTWVzc2FnZSxcbiAgICAgIG5vZGU6ICdfX3dyaXRpbmdfXycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBjb25zdCBtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzID0gKFxuICBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHksXG4gIHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW11cbik6IFN0cmVhbUFjdGl2aXR5ID0+ICh7XG4gIC4uLmFjdGl2aXR5LFxuICBleGVjdXRpb25TdGVwczogc3RlcHMubGVuZ3RoID4gMCA/IHN0ZXBzIDogdW5kZWZpbmVkLFxufSlcblxuZXhwb3J0IGNvbnN0IGdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXAgfCBudWxsID0+IHtcbiAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBudWxsXG4gIGNvbnN0IHJ1bm5pbmcgPSBbLi4uc3RlcHNdLnJldmVyc2UoKS5maW5kKHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJylcbiAgcmV0dXJuIHJ1bm5pbmcgPz8gc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQVNBLDZCQUE2QixRQUFRLDBCQUEwQjtBQUN4RSxTQUFTQyxjQUFjLFFBQVEsa0JBQWtCO0FBSWpELElBQUlDLG9CQUFvQixHQUFHLENBQUM7QUFFNUIsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBaUI7RUFDL0JELG9CQUFvQixJQUFJLENBQUM7RUFDekIsb0JBQUFFLE1BQUEsQ0FBb0JGLG9CQUFvQjtBQUMxQyxDQUFDO0FBRUQsT0FBTyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFBLEVBQWU7RUFDbkRILG9CQUFvQixHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELElBQU1JLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEtBQTRCO0VBQUEsT0FDeERBLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFLQSxJQUFJLENBQUNDLE1BQU0sS0FBSyxTQUFTLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUFRRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQixLQUFLRCxJQUFJO0VBQUEsQ0FBQyxDQUFDO0FBQUE7QUFFbkcsT0FBTyxJQUFNRywyQkFBMkIsR0FBR04sb0JBQW9CO0FBRS9ELE9BQU8sSUFBTU8seUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSU4sS0FBNEI7RUFBQSxPQUNwRUEsS0FBSyxDQUFDQyxHQUFHLENBQUMsVUFBQUMsSUFBSTtJQUFBLE9BQUFFLGFBQUEsQ0FBQUEsYUFBQSxLQUFVRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQjtFQUFBLENBQUcsQ0FBQztBQUFBO0FBRWhFLE9BQU8sSUFBTUksd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSVAsS0FBd0MsRUFBYztF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
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
import { completeAllExecutionSteps, completeRunningStepsInSteps, pushExecutionStepFromNode } from './streamExecutionSteps';
|
|
6
|
+
import { streamDebugLog, streamDebugTimeline } from './streamDebugLog';
|
|
7
|
+
var timelineSegmentCounter = 0;
|
|
8
|
+
var nextSegmentId = function nextSegmentId(prefix) {
|
|
9
|
+
timelineSegmentCounter += 1;
|
|
10
|
+
return "".concat(prefix, "-").concat(timelineSegmentCounter);
|
|
11
|
+
};
|
|
12
|
+
export var resetTimelineSegmentCounter = function resetTimelineSegmentCounter() {
|
|
13
|
+
timelineSegmentCounter = 0;
|
|
14
|
+
};
|
|
15
|
+
export var createEmptyTimelineSnapshot = function createEmptyTimelineSnapshot() {
|
|
16
|
+
return {
|
|
17
|
+
turnId: null,
|
|
18
|
+
segments: [],
|
|
19
|
+
contentFrozenLength: 0
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
var getLastSegment = function getLastSegment(segments) {
|
|
23
|
+
return segments[segments.length - 1];
|
|
24
|
+
};
|
|
25
|
+
var sealExecutionSegment = function sealExecutionSegment(segment) {
|
|
26
|
+
return _objectSpread(_objectSpread({}, segment), {}, {
|
|
27
|
+
steps: completeAllExecutionSteps(segment.steps)
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var sealAllExecutionSegments = function sealAllExecutionSegments(segments) {
|
|
31
|
+
return segments.map(function (segment) {
|
|
32
|
+
return segment.type === 'execution' ? sealExecutionSegment(segment) : segment;
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export var startStreamTimelineTurn = function startStreamTimelineTurn(turnId) {
|
|
36
|
+
resetTimelineSegmentCounter();
|
|
37
|
+
var snapshot = {
|
|
38
|
+
turnId: turnId,
|
|
39
|
+
segments: [],
|
|
40
|
+
contentFrozenLength: 0
|
|
41
|
+
};
|
|
42
|
+
streamDebugLog('timeline', 'turn:start', {
|
|
43
|
+
turnId: turnId
|
|
44
|
+
});
|
|
45
|
+
return snapshot;
|
|
46
|
+
};
|
|
47
|
+
export var appendNodeToStreamTimeline = function appendNodeToStreamTimeline(snapshot, payload, accumulatedText, t, context, threadId) {
|
|
48
|
+
var base = snapshot;
|
|
49
|
+
var lastBefore = getLastSegment(base.segments);
|
|
50
|
+
if ((lastBefore === null || lastBefore === void 0 ? void 0 : lastBefore.type) === 'content') {
|
|
51
|
+
base = freezeTimelineContentBoundary(base, accumulatedText);
|
|
52
|
+
}
|
|
53
|
+
var last = getLastSegment(base.segments);
|
|
54
|
+
var segments = base.segments;
|
|
55
|
+
if ((last === null || last === void 0 ? void 0 : last.type) === 'content') {
|
|
56
|
+
segments = _toConsumableArray(segments);
|
|
57
|
+
segments.push({
|
|
58
|
+
type: 'execution',
|
|
59
|
+
id: nextSegmentId('exec'),
|
|
60
|
+
steps: []
|
|
61
|
+
});
|
|
62
|
+
} else if (!last || last.type !== 'execution') {
|
|
63
|
+
segments = [].concat(_toConsumableArray(segments), [{
|
|
64
|
+
type: 'execution',
|
|
65
|
+
id: nextSegmentId('exec'),
|
|
66
|
+
steps: []
|
|
67
|
+
}]);
|
|
68
|
+
} else {
|
|
69
|
+
segments = _toConsumableArray(segments);
|
|
70
|
+
}
|
|
71
|
+
var executionIndex = segments.length - 1;
|
|
72
|
+
var executionSegment = segments[executionIndex];
|
|
73
|
+
var steps = pushExecutionStepFromNode(executionSegment.steps, payload, t, context, threadId);
|
|
74
|
+
segments[executionIndex] = _objectSpread(_objectSpread({}, executionSegment), {}, {
|
|
75
|
+
steps: steps
|
|
76
|
+
});
|
|
77
|
+
var next = _objectSpread(_objectSpread({}, base), {}, {
|
|
78
|
+
segments: segments
|
|
79
|
+
});
|
|
80
|
+
streamDebugTimeline('timeline', 'node:append', next);
|
|
81
|
+
streamDebugLog('timeline', 'node:payload', {
|
|
82
|
+
node: payload.node,
|
|
83
|
+
tool_name: payload.tool_name,
|
|
84
|
+
thread_id: threadId !== null && threadId !== void 0 ? threadId : payload.thread_id,
|
|
85
|
+
backendMessage: payload.message,
|
|
86
|
+
stepCount: steps.length,
|
|
87
|
+
hasHitlContext: Boolean(context)
|
|
88
|
+
});
|
|
89
|
+
return next;
|
|
90
|
+
};
|
|
91
|
+
export var appendContentToStreamTimeline = function appendContentToStreamTimeline(snapshot, accumulatedText) {
|
|
92
|
+
var sliceText = accumulatedText.slice(snapshot.contentFrozenLength);
|
|
93
|
+
if (!sliceText && !getLastSegment(snapshot.segments)) {
|
|
94
|
+
return snapshot;
|
|
95
|
+
}
|
|
96
|
+
var segments = snapshot.segments;
|
|
97
|
+
var last = getLastSegment(segments);
|
|
98
|
+
if ((last === null || last === void 0 ? void 0 : last.type) === 'execution') {
|
|
99
|
+
var sealed = sealExecutionSegment(last);
|
|
100
|
+
segments = [].concat(_toConsumableArray(segments.slice(0, -1)), [sealed]);
|
|
101
|
+
segments.push({
|
|
102
|
+
type: 'content',
|
|
103
|
+
id: nextSegmentId('content'),
|
|
104
|
+
text: sliceText
|
|
105
|
+
});
|
|
106
|
+
} else if ((last === null || last === void 0 ? void 0 : last.type) === 'content') {
|
|
107
|
+
segments = [].concat(_toConsumableArray(segments.slice(0, -1)), [_objectSpread(_objectSpread({}, last), {}, {
|
|
108
|
+
text: sliceText
|
|
109
|
+
})]);
|
|
110
|
+
} else {
|
|
111
|
+
segments = [].concat(_toConsumableArray(segments), [{
|
|
112
|
+
type: 'content',
|
|
113
|
+
id: nextSegmentId('content'),
|
|
114
|
+
text: sliceText
|
|
115
|
+
}]);
|
|
116
|
+
}
|
|
117
|
+
var next = _objectSpread(_objectSpread({}, snapshot), {}, {
|
|
118
|
+
segments: segments
|
|
119
|
+
});
|
|
120
|
+
streamDebugTimeline('timeline', 'content:append', next);
|
|
121
|
+
return next;
|
|
122
|
+
};
|
|
123
|
+
export var freezeTimelineContentBoundary = function freezeTimelineContentBoundary(snapshot, accumulatedText) {
|
|
124
|
+
return _objectSpread(_objectSpread({}, snapshot), {}, {
|
|
125
|
+
contentFrozenLength: accumulatedText.length
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
export var finalizeStreamTimeline = function finalizeStreamTimeline(snapshot) {
|
|
129
|
+
var next = _objectSpread(_objectSpread({}, snapshot), {}, {
|
|
130
|
+
segments: sealAllExecutionSegments(snapshot.segments)
|
|
131
|
+
});
|
|
132
|
+
streamDebugTimeline('timeline', 'finalize', next);
|
|
133
|
+
return next;
|
|
134
|
+
};
|
|
135
|
+
export var buildActivityFromExecutionSegment = function buildActivityFromExecutionSegment(segment, t) {
|
|
136
|
+
var _ref, _running$message;
|
|
137
|
+
var running = _toConsumableArray(segment.steps).reverse().find(function (step) {
|
|
138
|
+
return step.status === 'running';
|
|
139
|
+
});
|
|
140
|
+
var lastStep = segment.steps[segment.steps.length - 1];
|
|
141
|
+
var message = (_ref = (_running$message = running === null || running === void 0 ? void 0 : running.message) !== null && _running$message !== void 0 ? _running$message : lastStep === null || lastStep === void 0 ? void 0 : lastStep.message) !== null && _ref !== void 0 ? _ref : t('chat.executingAction');
|
|
142
|
+
return {
|
|
143
|
+
phase: 'action',
|
|
144
|
+
message: message,
|
|
145
|
+
executionSteps: segment.steps
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
/** Cierra steps en ejecución sin crear segmento de contenido (p. ej. al recibir otro node). */
|
|
150
|
+
export var completeRunningStepsInTimeline = function completeRunningStepsInTimeline(snapshot) {
|
|
151
|
+
var segments = snapshot.segments.map(function (segment) {
|
|
152
|
+
if (segment.type !== 'execution') return segment;
|
|
153
|
+
return _objectSpread(_objectSpread({}, segment), {}, {
|
|
154
|
+
steps: completeRunningStepsInSteps(segment.steps)
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
return _objectSpread(_objectSpread({}, snapshot), {}, {
|
|
158
|
+
segments: segments
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzIiwiY29tcGxldGVSdW5uaW5nU3RlcHNJblN0ZXBzIiwicHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSIsInN0cmVhbURlYnVnTG9nIiwic3RyZWFtRGVidWdUaW1lbGluZSIsInRpbWVsaW5lU2VnbWVudENvdW50ZXIiLCJuZXh0U2VnbWVudElkIiwicHJlZml4IiwiY29uY2F0IiwicmVzZXRUaW1lbGluZVNlZ21lbnRDb3VudGVyIiwiY3JlYXRlRW1wdHlUaW1lbGluZVNuYXBzaG90IiwidHVybklkIiwic2VnbWVudHMiLCJjb250ZW50RnJvemVuTGVuZ3RoIiwiZ2V0TGFzdFNlZ21lbnQiLCJsZW5ndGgiLCJzZWFsRXhlY3V0aW9uU2VnbWVudCIsInNlZ21lbnQiLCJfb2JqZWN0U3ByZWFkIiwic3RlcHMiLCJzZWFsQWxsRXhlY3V0aW9uU2VnbWVudHMiLCJtYXAiLCJ0eXBlIiwic3RhcnRTdHJlYW1UaW1lbGluZVR1cm4iLCJzbmFwc2hvdCIsImFwcGVuZE5vZGVUb1N0cmVhbVRpbWVsaW5lIiwicGF5bG9hZCIsImFjY3VtdWxhdGVkVGV4dCIsInQiLCJjb250ZXh0IiwidGhyZWFkSWQiLCJiYXNlIiwibGFzdEJlZm9yZSIsImZyZWV6ZVRpbWVsaW5lQ29udGVudEJvdW5kYXJ5IiwibGFzdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInB1c2giLCJpZCIsImV4ZWN1dGlvbkluZGV4IiwiZXhlY3V0aW9uU2VnbWVudCIsIm5leHQiLCJub2RlIiwidG9vbF9uYW1lIiwidGhyZWFkX2lkIiwiYmFja2VuZE1lc3NhZ2UiLCJtZXNzYWdlIiwic3RlcENvdW50IiwiaGFzSGl0bENvbnRleHQiLCJCb29sZWFuIiwiYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUiLCJzbGljZVRleHQiLCJzbGljZSIsInNlYWxlZCIsInRleHQiLCJmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lIiwiYnVpbGRBY3Rpdml0eUZyb21FeGVjdXRpb25TZWdtZW50IiwiX3JlZiIsIl9ydW5uaW5nJG1lc3NhZ2UiLCJydW5uaW5nIiwicmV2ZXJzZSIsImZpbmQiLCJzdGVwIiwic3RhdHVzIiwibGFzdFN0ZXAiLCJwaGFzZSIsImV4ZWN1dGlvblN0ZXBzIiwiY29tcGxldGVSdW5uaW5nU3RlcHNJblRpbWVsaW5lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3N0cmVhbVRpbWVsaW5lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RyZWFtRXhlY3V0aW9uU3RlcCB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUge1xuICBTdHJlYW1UaW1lbGluZUV4ZWN1dGlvblNlZ21lbnQsXG4gIFN0cmVhbVRpbWVsaW5lU2VnbWVudCxcbiAgU3RyZWFtVGltZWxpbmVTbmFwc2hvdCxcbn0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQge1xuICBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzLFxuICBjb21wbGV0ZVJ1bm5pbmdTdGVwc0luU3RlcHMsXG4gIHB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUsXG59IGZyb20gJy4vc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbU5vZGVFdmVudFBheWxvYWQgfSBmcm9tICcuLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1EZWJ1Z0xvZywgc3RyZWFtRGVidWdUaW1lbGluZSB9IGZyb20gJy4vc3RyZWFtRGVidWdMb2cnXG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG5sZXQgdGltZWxpbmVTZWdtZW50Q291bnRlciA9IDBcblxuY29uc3QgbmV4dFNlZ21lbnRJZCA9IChwcmVmaXg6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHRpbWVsaW5lU2VnbWVudENvdW50ZXIgKz0gMVxuICByZXR1cm4gYCR7cHJlZml4fS0ke3RpbWVsaW5lU2VnbWVudENvdW50ZXJ9YFxufVxuXG5leHBvcnQgY29uc3QgcmVzZXRUaW1lbGluZVNlZ21lbnRDb3VudGVyID0gKCk6IHZvaWQgPT4ge1xuICB0aW1lbGluZVNlZ21lbnRDb3VudGVyID0gMFxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlRW1wdHlUaW1lbGluZVNuYXBzaG90ID0gKCk6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4gKHtcbiAgdHVybklkOiBudWxsLFxuICBzZWdtZW50czogW10sXG4gIGNvbnRlbnRGcm96ZW5MZW5ndGg6IDAsXG59KVxuXG5jb25zdCBnZXRMYXN0U2VnbWVudCA9IChzZWdtZW50czogU3RyZWFtVGltZWxpbmVTZWdtZW50W10pOiBTdHJlYW1UaW1lbGluZVNlZ21lbnQgfCB1bmRlZmluZWQgPT5cbiAgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV1cblxuY29uc3Qgc2VhbEV4ZWN1dGlvblNlZ21lbnQgPSAoc2VnbWVudDogU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50KTogU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50ID0+ICh7XG4gIC4uLnNlZ21lbnQsXG4gIHN0ZXBzOiBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzKHNlZ21lbnQuc3RlcHMpLFxufSlcblxuY29uc3Qgc2VhbEFsbEV4ZWN1dGlvblNlZ21lbnRzID0gKHNlZ21lbnRzOiBTdHJlYW1UaW1lbGluZVNlZ21lbnRbXSk6IFN0cmVhbVRpbWVsaW5lU2VnbWVudFtdID0+XG4gIHNlZ21lbnRzLm1hcChzZWdtZW50ID0+IChzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nID8gc2VhbEV4ZWN1dGlvblNlZ21lbnQoc2VnbWVudCkgOiBzZWdtZW50KSlcblxuZXhwb3J0IGNvbnN0IHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuID0gKHR1cm5JZDogc3RyaW5nKTogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCA9PiB7XG4gIHJlc2V0VGltZWxpbmVTZWdtZW50Q291bnRlcigpXG4gIGNvbnN0IHNuYXBzaG90ID0ge1xuICAgIHR1cm5JZCxcbiAgICBzZWdtZW50czogW10sXG4gICAgY29udGVudEZyb3plbkxlbmd0aDogMCxcbiAgfVxuICBzdHJlYW1EZWJ1Z0xvZygndGltZWxpbmUnLCAndHVybjpzdGFydCcsIHsgdHVybklkIH0pXG4gIHJldHVybiBzbmFwc2hvdFxufVxuXG5leHBvcnQgY29uc3QgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUgPSAoXG4gIHNuYXBzaG90OiBTdHJlYW1UaW1lbGluZVNuYXBzaG90LFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICBhY2N1bXVsYXRlZFRleHQ6IHN0cmluZyxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIHRocmVhZElkPzogc3RyaW5nXG4pOiBTdHJlYW1UaW1lbGluZVNuYXBzaG90ID0+IHtcbiAgbGV0IGJhc2UgPSBzbmFwc2hvdFxuICBjb25zdCBsYXN0QmVmb3JlID0gZ2V0TGFzdFNlZ21lbnQoYmFzZS5zZWdtZW50cylcblxuICBpZiAobGFzdEJlZm9yZT8udHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgYmFzZSA9IGZyZWV6ZVRpbWVsaW5lQ29udGVudEJvdW5kYXJ5KGJhc2UsIGFjY3VtdWxhdGVkVGV4dClcbiAgfVxuXG4gIGNvbnN0IGxhc3QgPSBnZXRMYXN0U2VnbWVudChiYXNlLnNlZ21lbnRzKVxuICBsZXQgc2VnbWVudHMgPSBiYXNlLnNlZ21lbnRzXG5cbiAgaWYgKGxhc3Q/LnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgIHNlZ21lbnRzID0gWy4uLnNlZ21lbnRzXVxuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgdHlwZTogJ2V4ZWN1dGlvbicsXG4gICAgICBpZDogbmV4dFNlZ21lbnRJZCgnZXhlYycpLFxuICAgICAgc3RlcHM6IFtdLFxuICAgIH0pXG4gIH0gZWxzZSBpZiAoIWxhc3QgfHwgbGFzdC50eXBlICE9PSAnZXhlY3V0aW9uJykge1xuICAgIHNlZ21lbnRzID0gW1xuICAgICAgLi4uc2VnbWVudHMsXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdleGVjdXRpb24nLFxuICAgICAgICBpZDogbmV4dFNlZ21lbnRJZCgnZXhlYycpLFxuICAgICAgICBzdGVwczogW10sXG4gICAgICB9LFxuICAgIF1cbiAgfSBlbHNlIHtcbiAgICBzZWdtZW50cyA9IFsuLi5zZWdtZW50c11cbiAgfVxuXG4gIGNvbnN0IGV4ZWN1dGlvbkluZGV4ID0gc2VnbWVudHMubGVuZ3RoIC0gMVxuICBjb25zdCBleGVjdXRpb25TZWdtZW50ID0gc2VnbWVudHNbZXhlY3V0aW9uSW5kZXhdIGFzIFN0cmVhbVRpbWVsaW5lRXhlY3V0aW9uU2VnbWVudFxuICBjb25zdCBzdGVwcyA9IHB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUoZXhlY3V0aW9uU2VnbWVudC5zdGVwcywgcGF5bG9hZCwgdCwgY29udGV4dCwgdGhyZWFkSWQpXG5cbiAgc2VnbWVudHNbZXhlY3V0aW9uSW5kZXhdID0ge1xuICAgIC4uLmV4ZWN1dGlvblNlZ21lbnQsXG4gICAgc3RlcHMsXG4gIH1cblxuICBjb25zdCBuZXh0ID0ge1xuICAgIC4uLmJhc2UsXG4gICAgc2VnbWVudHMsXG4gIH1cbiAgc3RyZWFtRGVidWdUaW1lbGluZSgndGltZWxpbmUnLCAnbm9kZTphcHBlbmQnLCBuZXh0KVxuICBzdHJlYW1EZWJ1Z0xvZygndGltZWxpbmUnLCAnbm9kZTpwYXlsb2FkJywge1xuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sX25hbWU6IHBheWxvYWQudG9vbF9uYW1lLFxuICAgIHRocmVhZF9pZDogdGhyZWFkSWQgPz8gcGF5bG9hZC50aHJlYWRfaWQsXG4gICAgYmFja2VuZE1lc3NhZ2U6IHBheWxvYWQubWVzc2FnZSxcbiAgICBzdGVwQ291bnQ6IHN0ZXBzLmxlbmd0aCxcbiAgICBoYXNIaXRsQ29udGV4dDogQm9vbGVhbihjb250ZXh0KSxcbiAgfSlcbiAgcmV0dXJuIG5leHRcbn1cblxuZXhwb3J0IGNvbnN0IGFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lID0gKFxuICBzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCxcbiAgYWNjdW11bGF0ZWRUZXh0OiBzdHJpbmdcbik6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4ge1xuICBjb25zdCBzbGljZVRleHQgPSBhY2N1bXVsYXRlZFRleHQuc2xpY2Uoc25hcHNob3QuY29udGVudEZyb3plbkxlbmd0aClcbiAgaWYgKCFzbGljZVRleHQgJiYgIWdldExhc3RTZWdtZW50KHNuYXBzaG90LnNlZ21lbnRzKSkge1xuICAgIHJldHVybiBzbmFwc2hvdFxuICB9XG5cbiAgbGV0IHNlZ21lbnRzID0gc25hcHNob3Quc2VnbWVudHNcbiAgY29uc3QgbGFzdCA9IGdldExhc3RTZWdtZW50KHNlZ21lbnRzKVxuXG4gIGlmIChsYXN0Py50eXBlID09PSAnZXhlY3V0aW9uJykge1xuICAgIGNvbnN0IHNlYWxlZCA9IHNlYWxFeGVjdXRpb25TZWdtZW50KGxhc3QpXG4gICAgc2VnbWVudHMgPSBbLi4uc2VnbWVudHMuc2xpY2UoMCwgLTEpLCBzZWFsZWRdXG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICB0eXBlOiAnY29udGVudCcsXG4gICAgICBpZDogbmV4dFNlZ21lbnRJZCgnY29udGVudCcpLFxuICAgICAgdGV4dDogc2xpY2VUZXh0LFxuICAgIH0pXG4gIH0gZWxzZSBpZiAobGFzdD8udHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgc2VnbWVudHMgPSBbLi4uc2VnbWVudHMuc2xpY2UoMCwgLTEpLCB7IC4uLmxhc3QsIHRleHQ6IHNsaWNlVGV4dCB9XVxuICB9IGVsc2Uge1xuICAgIHNlZ21lbnRzID0gW1xuICAgICAgLi4uc2VnbWVudHMsXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdjb250ZW50JyxcbiAgICAgICAgaWQ6IG5leHRTZWdtZW50SWQoJ2NvbnRlbnQnKSxcbiAgICAgICAgdGV4dDogc2xpY2VUZXh0LFxuICAgICAgfSxcbiAgICBdXG4gIH1cblxuICBjb25zdCBuZXh0ID0ge1xuICAgIC4uLnNuYXBzaG90LFxuICAgIHNlZ21lbnRzLFxuICB9XG4gIHN0cmVhbURlYnVnVGltZWxpbmUoJ3RpbWVsaW5lJywgJ2NvbnRlbnQ6YXBwZW5kJywgbmV4dClcbiAgcmV0dXJuIG5leHRcbn1cblxuZXhwb3J0IGNvbnN0IGZyZWV6ZVRpbWVsaW5lQ29udGVudEJvdW5kYXJ5ID0gKFxuICBzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCxcbiAgYWNjdW11bGF0ZWRUZXh0OiBzdHJpbmdcbik6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4gKHtcbiAgLi4uc25hcHNob3QsXG4gIGNvbnRlbnRGcm96ZW5MZW5ndGg6IGFjY3VtdWxhdGVkVGV4dC5sZW5ndGgsXG59KVxuXG5leHBvcnQgY29uc3QgZmluYWxpemVTdHJlYW1UaW1lbGluZSA9IChzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCk6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4ge1xuICBjb25zdCBuZXh0ID0ge1xuICAgIC4uLnNuYXBzaG90LFxuICAgIHNlZ21lbnRzOiBzZWFsQWxsRXhlY3V0aW9uU2VnbWVudHMoc25hcHNob3Quc2VnbWVudHMpLFxuICB9XG4gIHN0cmVhbURlYnVnVGltZWxpbmUoJ3RpbWVsaW5lJywgJ2ZpbmFsaXplJywgbmV4dClcbiAgcmV0dXJuIG5leHRcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkQWN0aXZpdHlGcm9tRXhlY3V0aW9uU2VnbWVudCA9IChcbiAgc2VnbWVudDogU3RyZWFtVGltZWxpbmVFeGVjdXRpb25TZWdtZW50LFxuICB0OiBUcmFuc2xhdGVGblxuKTogeyBwaGFzZTogJ2FjdGlvbic7IG1lc3NhZ2U6IHN0cmluZzsgZXhlY3V0aW9uU3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSB9ID0+IHtcbiAgY29uc3QgcnVubmluZyA9IFsuLi5zZWdtZW50LnN0ZXBzXS5yZXZlcnNlKCkuZmluZChzdGVwID0+IHN0ZXAuc3RhdHVzID09PSAncnVubmluZycpXG4gIGNvbnN0IGxhc3RTdGVwID0gc2VnbWVudC5zdGVwc1tzZWdtZW50LnN0ZXBzLmxlbmd0aCAtIDFdXG4gIGNvbnN0IG1lc3NhZ2UgPSBydW5uaW5nPy5tZXNzYWdlID8/IGxhc3RTdGVwPy5tZXNzYWdlID8/IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJylcblxuICByZXR1cm4ge1xuICAgIHBoYXNlOiAnYWN0aW9uJyxcbiAgICBtZXNzYWdlLFxuICAgIGV4ZWN1dGlvblN0ZXBzOiBzZWdtZW50LnN0ZXBzLFxuICB9XG59XG5cbi8qKiBDaWVycmEgc3RlcHMgZW4gZWplY3VjacOzbiBzaW4gY3JlYXIgc2VnbWVudG8gZGUgY29udGVuaWRvIChwLiBlai4gYWwgcmVjaWJpciBvdHJvIG5vZGUpLiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsZXRlUnVubmluZ1N0ZXBzSW5UaW1lbGluZSA9IChzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCk6IFN0cmVhbVRpbWVsaW5lU25hcHNob3QgPT4ge1xuICBjb25zdCBzZWdtZW50cyA9IHNuYXBzaG90LnNlZ21lbnRzLm1hcChzZWdtZW50ID0+IHtcbiAgICBpZiAoc2VnbWVudC50eXBlICE9PSAnZXhlY3V0aW9uJykgcmV0dXJuIHNlZ21lbnRcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2VnbWVudCxcbiAgICAgIHN0ZXBzOiBjb21wbGV0ZVJ1bm5pbmdTdGVwc0luU3RlcHMoc2VnbWVudC5zdGVwcyksXG4gICAgfVxuICB9KVxuICByZXR1cm4geyAuLi5zbmFwc2hvdCwgc2VnbWVudHMgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBTUEsU0FDRUEseUJBQXlCLEVBQ3pCQywyQkFBMkIsRUFDM0JDLHlCQUF5QixRQUNwQix3QkFB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
|