@iblai/web-containers 1.52.0 → 1.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/cjs/components/chat/loading-message.js +13 -0
  2. package/dist/cjs/components/chat/loading-message.js.map +1 -0
  3. package/dist/cjs/components/mentors/mentor-selection-grid.js +4 -2
  4. package/dist/cjs/components/mentors/mentor-selection-grid.js.map +1 -1
  5. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-management-content.js +9 -5
  6. package/dist/cjs/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-management-content.js.map +1 -1
  7. package/dist/cjs/components/profile/admin/tabs/UsersTab.js +3 -4
  8. package/dist/cjs/components/profile/admin/tabs/UsersTab.js.map +1 -1
  9. package/dist/cjs/components/workflows/action-tooltip.js +11 -0
  10. package/dist/cjs/components/workflows/action-tooltip.js.map +1 -0
  11. package/dist/cjs/components/workflows/node-config-panel.js +576 -0
  12. package/dist/cjs/components/workflows/node-config-panel.js.map +1 -0
  13. package/dist/cjs/components/workflows/tool-dialogs.js +95 -60
  14. package/dist/cjs/components/workflows/tool-dialogs.js.map +1 -1
  15. package/dist/cjs/components/workflows/workflow-canvas.js +1028 -0
  16. package/dist/cjs/components/workflows/workflow-canvas.js.map +1 -0
  17. package/dist/cjs/components/workflows/workflow-definition.js +369 -0
  18. package/dist/cjs/components/workflows/workflow-definition.js.map +1 -0
  19. package/dist/cjs/components/workflows/workflow-editor.js +523 -0
  20. package/dist/cjs/components/workflows/workflow-editor.js.map +1 -0
  21. package/dist/cjs/components/workflows/workflow-preview-chat.js +57 -0
  22. package/dist/cjs/components/workflows/workflow-preview-chat.js.map +1 -0
  23. package/dist/cjs/components/workflows/workflow-sidebar.js +2 -2
  24. package/dist/cjs/components/workflows/workflow-sidebar.js.map +1 -1
  25. package/dist/cjs/components/workflows/workflows-list.js +115 -0
  26. package/dist/cjs/components/workflows/workflows-list.js.map +1 -0
  27. package/dist/cjs/i18n/messages/en.json.js +207 -18
  28. package/dist/cjs/i18n/messages/en.json.js.map +1 -1
  29. package/dist/cjs/i18n/messages/es.json.js +201 -12
  30. package/dist/cjs/i18n/messages/es.json.js.map +1 -1
  31. package/dist/cjs/i18n/messages/fr.json.js +201 -12
  32. package/dist/cjs/i18n/messages/fr.json.js.map +1 -1
  33. package/dist/cjs/i18n/messages/zh.json.js +201 -12
  34. package/dist/cjs/i18n/messages/zh.json.js.map +1 -1
  35. package/dist/cjs/index.js +17 -0
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/next/index.js +10 -0
  38. package/dist/cjs/next/index.js.map +1 -1
  39. package/dist/cjs/web-containers/tsconfig.tsbuildinfo +1 -1
  40. package/dist/esm/components/chat/loading-message.js +11 -0
  41. package/dist/esm/components/chat/loading-message.js.map +1 -0
  42. package/dist/esm/components/mentors/mentor-selection-grid.js +4 -2
  43. package/dist/esm/components/mentors/mentor-selection-grid.js.map +1 -1
  44. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-management-content.js +9 -5
  45. package/dist/esm/components/modals/edit-mentor-modal/tabs/mcp-tab/connector-management-content.js.map +1 -1
  46. package/dist/esm/components/profile/admin/tabs/UsersTab.js +3 -4
  47. package/dist/esm/components/profile/admin/tabs/UsersTab.js.map +1 -1
  48. package/dist/esm/components/workflows/action-tooltip.js +9 -0
  49. package/dist/esm/components/workflows/action-tooltip.js.map +1 -0
  50. package/dist/esm/components/workflows/node-config-panel.js +574 -0
  51. package/dist/esm/components/workflows/node-config-panel.js.map +1 -0
  52. package/dist/esm/components/workflows/tool-dialogs.js +96 -61
  53. package/dist/esm/components/workflows/tool-dialogs.js.map +1 -1
  54. package/dist/esm/components/workflows/workflow-canvas.js +1026 -0
  55. package/dist/esm/components/workflows/workflow-canvas.js.map +1 -0
  56. package/dist/esm/components/workflows/workflow-definition.js +352 -0
  57. package/dist/esm/components/workflows/workflow-definition.js.map +1 -0
  58. package/dist/esm/components/workflows/workflow-editor.js +521 -0
  59. package/dist/esm/components/workflows/workflow-editor.js.map +1 -0
  60. package/dist/esm/components/workflows/workflow-preview-chat.js +55 -0
  61. package/dist/esm/components/workflows/workflow-preview-chat.js.map +1 -0
  62. package/dist/esm/components/workflows/workflow-sidebar.js +2 -2
  63. package/dist/esm/components/workflows/workflow-sidebar.js.map +1 -1
  64. package/dist/esm/components/workflows/workflows-list.js +113 -0
  65. package/dist/esm/components/workflows/workflows-list.js.map +1 -0
  66. package/dist/esm/i18n/messages/en.json.js +203 -19
  67. package/dist/esm/i18n/messages/en.json.js.map +1 -1
  68. package/dist/esm/i18n/messages/es.json.js +197 -13
  69. package/dist/esm/i18n/messages/es.json.js.map +1 -1
  70. package/dist/esm/i18n/messages/fr.json.js +197 -13
  71. package/dist/esm/i18n/messages/fr.json.js.map +1 -1
  72. package/dist/esm/i18n/messages/zh.json.js +197 -13
  73. package/dist/esm/i18n/messages/zh.json.js.map +1 -1
  74. package/dist/esm/index.js +1 -0
  75. package/dist/esm/index.js.map +1 -1
  76. package/dist/esm/next/index.js +5 -0
  77. package/dist/esm/next/index.js.map +1 -1
  78. package/dist/esm/web-containers/tsconfig.tsbuildinfo +1 -1
  79. package/dist/index.d.ts +164 -19
  80. package/dist/next/index.d.ts +215 -3
  81. package/dist/package.json +1 -1
  82. package/package.json +4 -4
@@ -0,0 +1,523 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var context = require('../../i18n/context.js');
6
+ require('../../packages/i18n/dist/index.esm.js');
7
+ var button = require('../ui/button.js');
8
+ var input = require('../ui/input.js');
9
+ var workflowPreviewChat = require('./workflow-preview-chat.js');
10
+ var workflowCanvas = require('./workflow-canvas.js');
11
+ var workflowDefinition = require('./workflow-definition.js');
12
+ var workflowSidebar = require('./workflow-sidebar.js');
13
+ var deleteWorkflowModal = require('./delete-workflow-modal.js');
14
+ var dataLayer = require('@iblai/data-layer');
15
+ var dropdownMenu = require('../ui/dropdown-menu.js');
16
+ var collapsible = require('../ui/collapsible.js');
17
+ var sonner = require('sonner');
18
+ var index_module = require('../../node_modules/.pnpm/use-debounce@10.0.4_react@19.1.0/node_modules/use-debounce/dist/index.module.js');
19
+ var loaderCircle = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/loader-circle.js');
20
+ var circleAlert = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/circle-alert.js');
21
+ var chevronLeft = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/chevron-left.js');
22
+ var pencil = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/pencil.js');
23
+ var x = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/x.js');
24
+ var rotateCcw = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js');
25
+ var ellipsis = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/ellipsis.js');
26
+ var power = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/power.js');
27
+ var trash2 = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/trash-2.js');
28
+ var eye = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/eye.js');
29
+ var triangleAlert = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/triangle-alert.js');
30
+ var chevronUp = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/chevron-up.js');
31
+ var chevronDown = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/chevron-down.js');
32
+
33
+ function getCategoryConfig(t) {
34
+ return {
35
+ core: { title: t('workflowsWorkflowEditor.categoryCore'), order: 1 },
36
+ tools: { title: t('workflowsWorkflowEditor.categoryTools'), order: 2 },
37
+ logic: { title: t('workflowsWorkflowEditor.categoryLogic'), order: 3 },
38
+ data: { title: t('workflowsWorkflowEditor.categoryData'), order: 4 },
39
+ };
40
+ }
41
+ const nodeCategoryOverride = {
42
+ note: 'core', // API has it in 'visual' but UI shows it in 'Core'
43
+ };
44
+ // The backend words these in terms of mentors, and repeats the runtime check
45
+ // once per Agent step.
46
+ const MENTOR_MESSAGES = [
47
+ [
48
+ /^Mentor existence will be validated at runtime/,
49
+ 'workflowsWorkflowEditor.agentCheckedAtRuntime',
50
+ ],
51
+ [
52
+ /^Node 'mentor' missing required field 'mentor_id'/,
53
+ 'workflowsWorkflowEditor.agentStepMissingAgent',
54
+ ],
55
+ ];
56
+ function inAgentWording(messages, t) {
57
+ const reworded = messages.map((message) => {
58
+ const match = MENTOR_MESSAGES.find(([pattern]) => pattern.test(message));
59
+ return match ? t(match[1]) : message;
60
+ });
61
+ return Array.from(new Set(reworded));
62
+ }
63
+ function transformNodeTypesToSections(nodeTypes, t) {
64
+ if (!(nodeTypes === null || nodeTypes === void 0 ? void 0 : nodeTypes.node_types))
65
+ return undefined;
66
+ const categoryConfig = getCategoryConfig(t);
67
+ const categoryMap = new Map();
68
+ Object.entries(categoryConfig).forEach(([catId, config]) => {
69
+ categoryMap.set(catId, { title: config.title, items: [] });
70
+ });
71
+ Object.entries(nodeTypes.node_types).forEach(([nodeId, nodeInfo]) => {
72
+ // The canvas adds the Start step to every workflow itself.
73
+ if (nodeId === 'start')
74
+ return;
75
+ const targetCategory = nodeCategoryOverride[nodeId] || nodeInfo.category;
76
+ const section = categoryMap.get(targetCategory);
77
+ if (section) {
78
+ section.items.push({
79
+ id: nodeId,
80
+ // The backend still labels the Agent step 'Mentor'.
81
+ label: nodeId === 'mentor' ? t('workflowsWorkflowEditor.agentNodeLabel') : nodeInfo.label,
82
+ category: targetCategory,
83
+ });
84
+ }
85
+ });
86
+ return Array.from(categoryMap.entries())
87
+ .sort(([a], [b]) => { var _a, _b, _c, _d; return ((_b = (_a = categoryConfig[a]) === null || _a === void 0 ? void 0 : _a.order) !== null && _b !== void 0 ? _b : 99) - ((_d = (_c = categoryConfig[b]) === null || _c === void 0 ? void 0 : _c.order) !== null && _d !== void 0 ? _d : 99); })
88
+ .map(([, section]) => section)
89
+ .filter((section) => section.items.length > 0);
90
+ }
91
+ function WorkflowEditor({ tenantKey, workflowId, username, axdToken, baseWsUrl, redirectToAuthSpa, onBack, onDeleted, onOpenAgentSettings, agentSettings, }) {
92
+ var _a, _b, _c, _d, _e, _f;
93
+ const t = context.useT();
94
+ const { data: workflow, isLoading, error, } = dataLayer.useGetWorkflowQuery({ org: tenantKey, uniqueId: workflowId }, { skip: !tenantKey || !workflowId });
95
+ const entryMentorId = (_a = workflow === null || workflow === void 0 ? void 0 : workflow.entrymentorid) !== null && _a !== void 0 ? _a : workflow === null || workflow === void 0 ? void 0 : workflow.entry_mentor_id;
96
+ const { data: nodeTypesData } = dataLayer.useGetNodeTypesQuery({ org: tenantKey }, { skip: !tenantKey });
97
+ const [mentorSettingsById, setMentorSettingsById] = React.useState({});
98
+ const [isMentorSettingsLoading, setIsMentorSettingsLoading] = React.useState(false);
99
+ const [fetchMentorSettings] = dataLayer.useLazyGetMentorSettingsQuery();
100
+ const mentorIdsFromDefinition = React.useMemo(() => {
101
+ var _a, _b;
102
+ const ids = new Set();
103
+ const nodes = ((_b = (_a = workflow === null || workflow === void 0 ? void 0 : workflow.definition) === null || _a === void 0 ? void 0 : _a.nodes) !== null && _b !== void 0 ? _b : []);
104
+ nodes.forEach((node) => {
105
+ if (node.type !== 'mentor')
106
+ return;
107
+ const nodeData = node.data;
108
+ const mentorId = (nodeData === null || nodeData === void 0 ? void 0 : nodeData.mentor_id) ||
109
+ (nodeData === null || nodeData === void 0 ? void 0 : nodeData.entry_mentor_id) ||
110
+ entryMentorId;
111
+ if (mentorId) {
112
+ ids.add(mentorId);
113
+ }
114
+ });
115
+ return Array.from(ids);
116
+ }, [(_b = workflow === null || workflow === void 0 ? void 0 : workflow.definition) === null || _b === void 0 ? void 0 : _b.nodes, entryMentorId]);
117
+ const missingMentorIds = React.useMemo(() => mentorIdsFromDefinition.filter((mentorId) => !Object.prototype.hasOwnProperty.call(mentorSettingsById, mentorId)), [mentorIdsFromDefinition, mentorSettingsById]);
118
+ React.useEffect(() => {
119
+ if (!tenantKey || !username || missingMentorIds.length === 0)
120
+ return;
121
+ let isActive = true;
122
+ setIsMentorSettingsLoading(true);
123
+ Promise.all(missingMentorIds.map(async (mentorId) => {
124
+ try {
125
+ const data = (await fetchMentorSettings({
126
+ mentor: mentorId,
127
+ org: tenantKey,
128
+ }).unwrap());
129
+ return { mentorId, data };
130
+ }
131
+ catch (_a) {
132
+ return { mentorId, data: null };
133
+ }
134
+ }))
135
+ .then((results) => {
136
+ if (!isActive)
137
+ return;
138
+ setMentorSettingsById((prev) => {
139
+ const next = { ...prev };
140
+ results.forEach(({ mentorId, data }) => {
141
+ next[mentorId] = data;
142
+ });
143
+ return next;
144
+ });
145
+ })
146
+ .finally(() => {
147
+ if (isActive) {
148
+ setIsMentorSettingsLoading(false);
149
+ }
150
+ });
151
+ return () => {
152
+ isActive = false;
153
+ };
154
+ }, [missingMentorIds, fetchMentorSettings, tenantKey, username]);
155
+ const isWaitingForMentorSettings = mentorIdsFromDefinition.length > 0 &&
156
+ (!username || missingMentorIds.length > 0 || isMentorSettingsLoading);
157
+ const [patchWorkflow, { isLoading: isSaving }] = dataLayer.usePatchWorkflowMutation();
158
+ const [publishWorkflow, { isLoading: isPublishing }] = dataLayer.usePublishWorkflowMutation();
159
+ const [deactivateWorkflow] = dataLayer.useDeactivateWorkflowMutation();
160
+ const [validateWorkflow] = dataLayer.useValidateWorkflowMutation();
161
+ const [activateWorkflow, { isLoading: isActivating }] = dataLayer.useActivateWorkflowMutation();
162
+ const [deleteWorkflow, { isLoading: isDeleting }] = dataLayer.useDeleteWorkflowMutation();
163
+ const [workflowName, setWorkflowName] = React.useState('');
164
+ const [isEditingName, setIsEditingName] = React.useState(false);
165
+ const [isDeleteModalOpen, setIsDeleteModalOpen] = React.useState(false);
166
+ const [draggedItem, setDraggedItem] = React.useState(null);
167
+ const [clickedItem, setClickedItem] = React.useState(null);
168
+ const [isPreviewMode, setIsPreviewMode] = React.useState(false);
169
+ const [previewKey, setPreviewKey] = React.useState(0);
170
+ const [newChatSignal, setNewChatSignal] = React.useState(0);
171
+ const [workflowData, setWorkflowData] = React.useState(null);
172
+ const [hasUnsavedChanges, setHasUnsavedChanges] = React.useState(false);
173
+ const [validationResult, setValidationResult] = React.useState(null);
174
+ const [isValidationBannerOpen, setIsValidationBannerOpen] = React.useState(true);
175
+ const isInitialLoad = React.useRef(true);
176
+ const [debouncedWorkflowData] = index_module.useDebounce(workflowData, 1000);
177
+ const nodeTypeSections = React.useMemo(() => transformNodeTypesToSections(nodeTypesData, t), [nodeTypesData, t]);
178
+ // Never overwrite an in-progress rename with a cache refetch
179
+ const syncedNameRef = React.useRef(null);
180
+ React.useEffect(() => {
181
+ if (!workflow || isEditingName)
182
+ return;
183
+ if (syncedNameRef.current === workflow.name)
184
+ return;
185
+ syncedNameRef.current = workflow.name;
186
+ setWorkflowName(workflow.name);
187
+ }, [workflow, isEditingName]);
188
+ // Auto-save compares against the graph the canvas first reports, so merely
189
+ // opening a workflow never saves it - including one whose old field names
190
+ // were converted for display: a published workflow keeps running unchanged
191
+ // until someone edits it.
192
+ const initialWorkflowDataRef = React.useRef(null);
193
+ // True while the server still holds a definition the canvas converted.
194
+ const definitionNeedsSaveRef = React.useRef(false);
195
+ const savedDefinitionRef = React.useRef(workflow === null || workflow === void 0 ? void 0 : workflow.definition);
196
+ savedDefinitionRef.current = workflow === null || workflow === void 0 ? void 0 : workflow.definition;
197
+ const showValidation = (result, nodes) => {
198
+ const errors = inAgentWording(result.errors, t);
199
+ const warnings = inAgentWording(workflowDefinition.withoutNoteConnectivityWarnings(result.warnings, nodes), t);
200
+ if (errors.length === 0 && warnings.length === 0) {
201
+ setValidationResult(null);
202
+ return;
203
+ }
204
+ setValidationResult({ errors, warnings });
205
+ setIsValidationBannerOpen(true);
206
+ };
207
+ const showValidationRef = React.useRef(showValidation);
208
+ showValidationRef.current = showValidation;
209
+ React.useEffect(() => {
210
+ if (!debouncedWorkflowData || !workflow) {
211
+ return;
212
+ }
213
+ const currentDataStr = JSON.stringify({
214
+ nodes: debouncedWorkflowData.nodes,
215
+ edges: debouncedWorkflowData.edges,
216
+ });
217
+ if (isInitialLoad.current) {
218
+ if (currentDataStr === initialWorkflowDataRef.current) {
219
+ isInitialLoad.current = false;
220
+ return;
221
+ }
222
+ isInitialLoad.current = false;
223
+ }
224
+ if (currentDataStr === initialWorkflowDataRef.current) {
225
+ return;
226
+ }
227
+ const autoSave = async () => {
228
+ try {
229
+ const patchData = {
230
+ definition: {
231
+ nodes: debouncedWorkflowData.nodes,
232
+ edges: debouncedWorkflowData.edges,
233
+ },
234
+ };
235
+ await patchWorkflow({
236
+ org: tenantKey,
237
+ uniqueId: workflowId,
238
+ data: patchData,
239
+ }).unwrap();
240
+ setHasUnsavedChanges(false);
241
+ definitionNeedsSaveRef.current = false;
242
+ initialWorkflowDataRef.current = currentDataStr;
243
+ try {
244
+ const result = await validateWorkflow({
245
+ org: tenantKey,
246
+ uniqueId: workflowId,
247
+ }).unwrap();
248
+ showValidationRef.current(result, debouncedWorkflowData.nodes);
249
+ }
250
+ catch (_a) {
251
+ // Silent fail for validation
252
+ }
253
+ }
254
+ catch (_b) {
255
+ // Silent fail for auto-save, user can manually save
256
+ }
257
+ };
258
+ autoSave();
259
+ }, [debouncedWorkflowData, workflow, tenantKey, workflowId, patchWorkflow, validateWorkflow]);
260
+ const clickedItemTimerRef = React.useRef(null);
261
+ React.useEffect(() => () => {
262
+ if (clickedItemTimerRef.current)
263
+ clearTimeout(clickedItemTimerRef.current);
264
+ }, []);
265
+ const handleItemClick = (item) => {
266
+ setClickedItem(item);
267
+ if (clickedItemTimerRef.current)
268
+ clearTimeout(clickedItemTimerRef.current);
269
+ clickedItemTimerRef.current = setTimeout(() => setClickedItem(null), 100);
270
+ };
271
+ const currentNodes = () => {
272
+ var _a, _b, _c;
273
+ return (_a = workflowData === null || workflowData === void 0 ? void 0 : workflowData.nodes) !== null && _a !== void 0 ? _a : ((_c = (_b = workflow === null || workflow === void 0 ? void 0 : workflow.definition) === null || _b === void 0 ? void 0 : _b.nodes) !== null && _c !== void 0 ? _c : []);
274
+ };
275
+ const markDefinitionSaved = (data) => {
276
+ setHasUnsavedChanges(false);
277
+ definitionNeedsSaveRef.current = false;
278
+ initialWorkflowDataRef.current = JSON.stringify({
279
+ nodes: data.nodes,
280
+ edges: data.edges,
281
+ });
282
+ };
283
+ // Activate and Preview run what the server holds, which must match what
284
+ // the canvas shows (e.g. old field names converted on open).
285
+ const saveDefinitionIfNeeded = async () => {
286
+ if (!workflowData)
287
+ return;
288
+ if (!definitionNeedsSaveRef.current && !hasUnsavedChanges)
289
+ return;
290
+ await patchWorkflow({
291
+ org: tenantKey,
292
+ uniqueId: workflowId,
293
+ data: {
294
+ definition: { nodes: workflowData.nodes, edges: workflowData.edges },
295
+ },
296
+ }).unwrap();
297
+ markDefinitionSaved(workflowData);
298
+ };
299
+ const handlePreviewClick = async () => {
300
+ try {
301
+ await saveDefinitionIfNeeded();
302
+ }
303
+ catch (_a) {
304
+ sonner.toast.error(t('workflowsWorkflowEditor.failedToSaveWorkflow'));
305
+ }
306
+ setPreviewKey((k) => k + 1);
307
+ setIsPreviewMode(true);
308
+ };
309
+ const handleClosePreview = () => setIsPreviewMode(false);
310
+ const handleNewChat = () => setNewChatSignal((signal) => signal + 1);
311
+ const handleWorkflowStateChange = React.useCallback((state) => {
312
+ var _a, _b;
313
+ setWorkflowData(state);
314
+ if (initialWorkflowDataRef.current === null) {
315
+ initialWorkflowDataRef.current = JSON.stringify({
316
+ nodes: state.nodes,
317
+ edges: state.edges,
318
+ });
319
+ const saved = savedDefinitionRef.current;
320
+ const savedNodes = ((_a = saved === null || saved === void 0 ? void 0 : saved.nodes) !== null && _a !== void 0 ? _a : []);
321
+ const savedEdges = ((_b = saved === null || saved === void 0 ? void 0 : saved.edges) !== null && _b !== void 0 ? _b : []);
322
+ definitionNeedsSaveRef.current =
323
+ JSON.stringify(workflowDefinition.migrateWorkflowDefinition(savedNodes, savedEdges)) !==
324
+ JSON.stringify({ nodes: savedNodes, edges: savedEdges });
325
+ setHasUnsavedChanges(definitionNeedsSaveRef.current);
326
+ return;
327
+ }
328
+ setHasUnsavedChanges(true);
329
+ }, []);
330
+ const handleNameSave = async () => {
331
+ setIsEditingName(false);
332
+ if (workflow && workflowName !== workflow.name) {
333
+ try {
334
+ await patchWorkflow({
335
+ org: tenantKey,
336
+ uniqueId: workflowId,
337
+ data: { name: workflowName },
338
+ }).unwrap();
339
+ sonner.toast.success(t('workflowsWorkflowEditor.workflowNameUpdated'));
340
+ }
341
+ catch (_a) {
342
+ sonner.toast.error(t('workflowsWorkflowEditor.failedToUpdateName'));
343
+ setWorkflowName(workflow.name);
344
+ }
345
+ }
346
+ };
347
+ const handleSave = async () => {
348
+ if (!workflowData)
349
+ return;
350
+ try {
351
+ const patchData = {
352
+ definition: { nodes: workflowData.nodes, edges: workflowData.edges },
353
+ };
354
+ await patchWorkflow({
355
+ org: tenantKey,
356
+ uniqueId: workflowId,
357
+ data: patchData,
358
+ }).unwrap();
359
+ markDefinitionSaved(workflowData);
360
+ sonner.toast.success(t('workflowsWorkflowEditor.workflowSaved'));
361
+ }
362
+ catch (_a) {
363
+ sonner.toast.error(t('workflowsWorkflowEditor.failedToSaveWorkflow'));
364
+ }
365
+ };
366
+ const handlePublish = async () => {
367
+ const data = workflowData
368
+ ? { definition: { nodes: workflowData.nodes, edges: workflowData.edges } }
369
+ : undefined;
370
+ try {
371
+ await publishWorkflow({
372
+ org: tenantKey,
373
+ uniqueId: workflowId,
374
+ data,
375
+ }).unwrap();
376
+ if (workflowData)
377
+ markDefinitionSaved(workflowData);
378
+ setValidationResult(null);
379
+ sonner.toast.success(t('workflowsWorkflowEditor.workflowPublished'));
380
+ }
381
+ catch (err) {
382
+ const errorData = err === null || err === void 0 ? void 0 : err.data;
383
+ if (errorData && typeof errorData === 'object' && 'is_valid' in errorData) {
384
+ const validation = errorData;
385
+ showValidation(validation, currentNodes());
386
+ sonner.toast.error(t('workflowsWorkflowEditor.workflowHasValidationIssues'));
387
+ }
388
+ else {
389
+ sonner.toast.error(t('workflowsWorkflowEditor.failedToPublishWorkflow'));
390
+ }
391
+ }
392
+ };
393
+ const handleDeactivate = async () => {
394
+ try {
395
+ await deactivateWorkflow({
396
+ org: tenantKey,
397
+ uniqueId: workflowId,
398
+ }).unwrap();
399
+ sonner.toast.success(t('workflowsWorkflowEditor.workflowDeactivated'));
400
+ }
401
+ catch (_a) {
402
+ sonner.toast.error(t('workflowsWorkflowEditor.failedToDeactivateWorkflow'));
403
+ }
404
+ };
405
+ const handleActivate = async () => {
406
+ try {
407
+ await saveDefinitionIfNeeded();
408
+ }
409
+ catch (_a) {
410
+ sonner.toast.error(t('workflowsWorkflowEditor.failedToSaveWorkflow'));
411
+ return;
412
+ }
413
+ try {
414
+ const result = await activateWorkflow({
415
+ org: tenantKey,
416
+ uniqueId: workflowId,
417
+ }).unwrap();
418
+ if (result.is_valid) {
419
+ setValidationResult(null);
420
+ sonner.toast.success(t('workflowsWorkflowEditor.workflowActivated'));
421
+ }
422
+ else {
423
+ showValidation(result, currentNodes());
424
+ sonner.toast.error(t('workflowsWorkflowEditor.workflowHasValidationIssues'));
425
+ }
426
+ }
427
+ catch (err) {
428
+ const errorData = err === null || err === void 0 ? void 0 : err.data;
429
+ if (errorData && typeof errorData === 'object' && 'is_valid' in errorData) {
430
+ const validation = errorData;
431
+ showValidation(validation, currentNodes());
432
+ sonner.toast.error(t('workflowsWorkflowEditor.workflowHasValidationIssues'));
433
+ }
434
+ else {
435
+ sonner.toast.error(t('workflowsWorkflowEditor.failedToActivateWorkflow'));
436
+ }
437
+ }
438
+ };
439
+ const handleDeleteConfirm = async () => {
440
+ try {
441
+ await deleteWorkflow({
442
+ org: tenantKey,
443
+ uniqueId: workflowId,
444
+ }).unwrap();
445
+ sonner.toast.success(t('workflowsWorkflowEditor.workflowDeleted'));
446
+ setIsDeleteModalOpen(false);
447
+ onDeleted();
448
+ }
449
+ catch (_a) {
450
+ sonner.toast.error(t('workflowsWorkflowEditor.failedToDeleteWorkflow'));
451
+ }
452
+ };
453
+ if (isLoading || isWaitingForMentorSettings) {
454
+ return (jsxRuntime.jsx("div", { className: "flex h-screen items-center justify-center", children: jsxRuntime.jsx(loaderCircle.default, { className: "h-8 w-8 animate-spin text-gray-400" }) }));
455
+ }
456
+ if (error || !workflow) {
457
+ return (jsxRuntime.jsx("div", { className: "flex h-screen items-center justify-center", children: jsxRuntime.jsxs("div", { className: "text-center", children: [jsxRuntime.jsx(circleAlert.default, { className: "mx-auto mb-4 h-12 w-12 text-red-500" }), jsxRuntime.jsx("p", { className: "mb-4 text-gray-600", children: t('workflowsWorkflowEditor.failedToLoadWorkflow') }), jsxRuntime.jsxs(button.Button, { variant: "outline", className: "h-9 has-[>svg]:px-3", onClick: () => onBack(), children: [jsxRuntime.jsx(chevronLeft.default, { className: "mr-2 h-4 w-4" }), t('workflowsWorkflowEditor.goBack')] })] }) }));
458
+ }
459
+ // Workflows saved with the builder's old field names open with the names
460
+ // the backend reads; the next save stores them.
461
+ const definition = workflowDefinition.migrateWorkflowDefinition(((_d = (_c = workflow.definition) === null || _c === void 0 ? void 0 : _c.nodes) !== null && _d !== void 0 ? _d : []), ((_f = (_e = workflow.definition) === null || _e === void 0 ? void 0 : _e.edges) !== null && _f !== void 0 ? _f : []));
462
+ const initialNodes = definition.nodes.map((n) => {
463
+ const nodeData = n.data;
464
+ if (n.type === 'mentor') {
465
+ const mentorId = (nodeData === null || nodeData === void 0 ? void 0 : nodeData.mentor_id) ||
466
+ (nodeData === null || nodeData === void 0 ? void 0 : nodeData.entry_mentor_id) ||
467
+ entryMentorId;
468
+ const mentorData = mentorId ? mentorSettingsById[mentorId] : null;
469
+ return {
470
+ ...n,
471
+ draggable: true,
472
+ selectable: true,
473
+ connectable: true,
474
+ data: {
475
+ ...nodeData,
476
+ ...(mentorId ? { entry_mentor_id: mentorId } : {}),
477
+ // The agent's current settings win over what the step saved.
478
+ ...(mentorData && {
479
+ label: mentorData.display_name ||
480
+ mentorData.mentor_name ||
481
+ (nodeData === null || nodeData === void 0 ? void 0 : nodeData.label),
482
+ instructions: mentorData.system_prompt || (nodeData === null || nodeData === void 0 ? void 0 : nodeData.instructions),
483
+ model: mentorData.llm_name || (nodeData === null || nodeData === void 0 ? void 0 : nodeData.model),
484
+ }),
485
+ },
486
+ };
487
+ }
488
+ return {
489
+ ...n,
490
+ draggable: true,
491
+ selectable: true,
492
+ connectable: true,
493
+ };
494
+ });
495
+ const initialEdges = definition.edges;
496
+ return (jsxRuntime.jsxs("div", { className: "flex h-screen flex-col bg-white", children: [jsxRuntime.jsxs("div", { className: `flex items-center justify-between px-4 py-3 ${isPreviewMode ? 'border-b border-gray-200 bg-white' : 'bg-background border-border border-b'}`, children: [jsxRuntime.jsx("div", { className: "flex items-center gap-3", children: isPreviewMode ? (jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx("h1", { className: "text-foreground font-medium", children: workflowName }), jsxRuntime.jsx("span", { className: `rounded-md px-2 py-0.5 text-xs ${workflow.is_active ? 'bg-green-100 text-green-700' : 'bg-muted text-muted-foreground'}`, children: workflow.is_active
497
+ ? t('workflowsWorkflowEditor.statusActive')
498
+ : t('workflowsWorkflowEditor.statusDraft') })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(button.Button, { variant: "ghost", size: "icon", className: "h-9 w-9 text-muted-foreground hover:text-foreground", onClick: () => onBack(), children: jsxRuntime.jsx(chevronLeft.default, { className: "h-5 w-5" }) }), jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [isEditingName ? (jsxRuntime.jsx(input.Input, { value: workflowName, onChange: (e) => setWorkflowName(e.target.value), onBlur: handleNameSave, onKeyDown: (e) => e.key === 'Enter' && handleNameSave(), className: "text-foreground h-8 w-[200px] font-medium", autoFocus: true, "aria-label": t('workflowsWorkflowEditor.enterWorkflowNameLabel') })) : (jsxRuntime.jsxs("button", { onClick: () => setIsEditingName(true), className: "text-foreground hover:text-foreground/80 flex items-center gap-1 font-medium", "aria-label": t('workflowsWorkflowEditor.editWorkflowNameLabel'), children: [workflowName, jsxRuntime.jsx(pencil.default, { className: "h-3 w-3 opacity-50" })] })), jsxRuntime.jsx("span", { className: `rounded-md px-2 py-0.5 text-xs ${workflow.is_active ? 'bg-green-100 text-green-700' : 'bg-muted text-muted-foreground'}`, children: workflow.is_active
499
+ ? t('workflowsWorkflowEditor.statusActive')
500
+ : t('workflowsWorkflowEditor.statusDraft') }), hasUnsavedChanges && (jsxRuntime.jsx("span", { className: "text-muted-foreground text-xs", children: t('workflowsWorkflowEditor.unsaved') }))] })] })) }), jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: isPreviewMode ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(button.Button, { variant: "ghost", size: "sm", className: "h-8 gap-1.5 has-[>svg]:px-2.5 text-foreground hover:text-foreground hover:bg-gray-100", onClick: handleClosePreview, children: [jsxRuntime.jsx(x.default, { className: "mr-2 h-4 w-4" }), t('workflowsWorkflowEditor.closePreview')] }), jsxRuntime.jsxs(button.Button, { variant: "ghost", size: "sm", className: "h-8 gap-1.5 has-[>svg]:px-2.5 text-foreground hover:text-foreground hover:bg-gray-100", onClick: handleNewChat, "aria-label": t('workflowsWorkflowEditor.newChatLabel'), children: [jsxRuntime.jsx(rotateCcw.default, { className: "mr-2 h-4 w-4" }), t('workflowsWorkflowEditor.newChat')] }), jsxRuntime.jsx(button.Button, { size: "sm", className: "h-8 gap-1.5 has-[>svg]:px-2.5 bg-[#38A1E5] text-white hover:bg-[#38A1E5]/90", onClick: handlePublish, disabled: isPublishing, children: isPublishing ? (jsxRuntime.jsx(loaderCircle.default, { className: "h-4 w-4 animate-spin" })) : (t('workflowsWorkflowEditor.publish')) })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(dropdownMenu.DropdownMenu, { children: [jsxRuntime.jsx(dropdownMenu.DropdownMenuTrigger, { asChild: true, children: jsxRuntime.jsx(button.Button, { variant: "ghost", size: "icon", className: "h-9 w-9 text-muted-foreground hover:text-foreground", "aria-label": t('workflowsWorkflowEditor.moreOptionsLabel'), children: jsxRuntime.jsx(ellipsis.default, { className: "h-5 w-5" }) }) }), jsxRuntime.jsxs(dropdownMenu.DropdownMenuContent, { align: "end", children: [workflow.is_active ? (jsxRuntime.jsxs(dropdownMenu.DropdownMenuItem, { onClick: handleDeactivate, children: [jsxRuntime.jsx(power.default, { className: "mr-2 h-4 w-4" }), t('workflowsWorkflowEditor.deactivate')] })) : (jsxRuntime.jsxs(dropdownMenu.DropdownMenuItem, { onClick: handleActivate, disabled: isActivating, children: [jsxRuntime.jsx(power.default, { className: "mr-2 h-4 w-4" }), isActivating
501
+ ? t('workflowsWorkflowEditor.activating')
502
+ : t('workflowsWorkflowEditor.activate')] })), jsxRuntime.jsxs(dropdownMenu.DropdownMenuItem, { onClick: () => setIsDeleteModalOpen(true), className: "text-red-600", children: [jsxRuntime.jsx(trash2.default, { className: "mr-2 h-4 w-4" }), t('workflowsWorkflowEditor.delete')] })] })] }), jsxRuntime.jsxs(button.Button, { variant: "outline", size: "sm", className: "h-8 gap-1.5 has-[>svg]:px-2.5 text-foreground border-border hover:bg-accent bg-transparent", onClick: handlePreviewClick, children: [jsxRuntime.jsx(eye.default, { className: "mr-2 h-4 w-4" }), t('workflowsWorkflowEditor.preview')] }), jsxRuntime.jsx(button.Button, { size: "sm", className: "h-8 gap-1.5 has-[>svg]:px-2.5 bg-[#38A1E5] text-white hover:bg-[#38A1E5]/90", onClick: handleSave, disabled: isSaving, children: isSaving ? (jsxRuntime.jsx(loaderCircle.default, { className: "h-4 w-4 animate-spin" })) : (t('workflowsWorkflowEditor.save')) }), jsxRuntime.jsx(button.Button, { size: "sm", className: "h-8 gap-1.5 has-[>svg]:px-2.5 bg-[#38A1E5] text-white hover:bg-[#38A1E5]/90", onClick: handlePublish, disabled: isPublishing, children: isPublishing ? (jsxRuntime.jsx(loaderCircle.default, { className: "h-4 w-4 animate-spin" })) : (t('workflowsWorkflowEditor.publish')) })] })) })] }), validationResult &&
503
+ (validationResult.errors.length > 0 || validationResult.warnings.length > 0) && (jsxRuntime.jsx(collapsible.Collapsible, { open: isValidationBannerOpen, onOpenChange: setIsValidationBannerOpen, children: jsxRuntime.jsxs("div", { className: "border-border bg-background border-b px-4 py-2", children: [jsxRuntime.jsx(collapsible.CollapsibleTrigger, { asChild: true, children: jsxRuntime.jsxs("button", { className: "flex w-full items-center justify-between text-sm", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [validationResult.errors.length > 0 ? (jsxRuntime.jsx(circleAlert.default, { className: "h-4 w-4 text-red-500" })) : (jsxRuntime.jsx(triangleAlert.default, { className: "h-4 w-4 text-amber-500" })), jsxRuntime.jsxs("span", { className: validationResult.errors.length > 0 ? 'text-red-700' : 'text-amber-700', children: [validationResult.errors.length > 0 &&
504
+ t('workflowsWorkflowEditor.validationErrors', {
505
+ count: validationResult.errors.length,
506
+ }), validationResult.errors.length > 0 &&
507
+ validationResult.warnings.length > 0 &&
508
+ ', ', validationResult.warnings.length > 0 &&
509
+ t('workflowsWorkflowEditor.validationWarnings', {
510
+ count: validationResult.warnings.length,
511
+ })] })] }), jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [isValidationBannerOpen ? (jsxRuntime.jsx(chevronUp.default, { className: "text-muted-foreground h-4 w-4" })) : (jsxRuntime.jsx(chevronDown.default, { className: "text-muted-foreground h-4 w-4" })), jsxRuntime.jsx("span", { role: "button", tabIndex: 0, className: "text-muted-foreground hover:text-foreground", onClick: (e) => {
512
+ e.stopPropagation();
513
+ setValidationResult(null);
514
+ }, onKeyDown: (e) => {
515
+ if (e.key === 'Enter' || e.key === ' ') {
516
+ e.stopPropagation();
517
+ setValidationResult(null);
518
+ }
519
+ }, children: jsxRuntime.jsx(x.default, { className: "h-4 w-4" }) })] })] }) }), jsxRuntime.jsx(collapsible.CollapsibleContent, { children: jsxRuntime.jsxs("div", { className: "mt-2 space-y-1 pb-1", children: [validationResult.errors.map((error, i) => (jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-sm text-red-600", children: [jsxRuntime.jsx(circleAlert.default, { className: "mt-0.5 h-3.5 w-3.5 shrink-0" }), jsxRuntime.jsx("span", { children: error })] }, `error-${i}`))), validationResult.warnings.map((warning, i) => (jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-sm text-amber-600", children: [jsxRuntime.jsx(triangleAlert.default, { className: "mt-0.5 h-3.5 w-3.5 shrink-0" }), jsxRuntime.jsx("span", { children: warning })] }, `warning-${i}`)))] }) })] }) })), jsxRuntime.jsxs("div", { className: "flex flex-1 overflow-hidden", children: [!isPreviewMode && (jsxRuntime.jsx(workflowSidebar.WorkflowSidebar, { onDragStart: setDraggedItem, onItemClick: handleItemClick, nodeTypes: nodeTypeSections })), jsxRuntime.jsx("div", { className: isPreviewMode ? 'h-full w-[60%] border-r border-gray-200' : 'h-full flex-1', children: jsxRuntime.jsx(workflowCanvas.WorkflowCanvas, { onDraggedItem: isPreviewMode ? null : draggedItem, onClickedItem: isPreviewMode ? null : clickedItem, previewMode: isPreviewMode, initialNodes: initialNodes, initialEdges: initialEdges, onStateChange: handleWorkflowStateChange, org: tenantKey, defaultMentorId: entryMentorId, username: username, onOpenAgentSettings: onOpenAgentSettings, agentSettings: agentSettings }) }), isPreviewMode && (jsxRuntime.jsx("div", { className: "flex h-full w-[40%] flex-col bg-white", children: jsxRuntime.jsx(workflowPreviewChat.WorkflowPreviewChat, { tenantKey: tenantKey, mentorId: entryMentorId, username: username, axdToken: axdToken, baseWsUrl: baseWsUrl, redirectToAuthSpa: redirectToAuthSpa, newChatSignal: newChatSignal }, previewKey) }))] }), jsxRuntime.jsx(deleteWorkflowModal.DeleteWorkflowModal, { isOpen: isDeleteModalOpen, onClose: () => setIsDeleteModalOpen(false), onConfirm: handleDeleteConfirm, isDeleting: isDeleting, workflowName: workflow.name })] }));
520
+ }
521
+
522
+ exports.WorkflowEditor = WorkflowEditor;
523
+ //# sourceMappingURL=workflow-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-editor.js","sources":["../../../../../../../src/components/workflows/workflow-editor.tsx"],"sourcesContent":[null],"names":["useT","useGetWorkflowQuery","useGetNodeTypesQuery","useState","useLazyGetMentorSettingsQuery","useMemo","useEffect","usePatchWorkflowMutation","usePublishWorkflowMutation","useDeactivateWorkflowMutation","useValidateWorkflowMutation","useActivateWorkflowMutation","useDeleteWorkflowMutation","useRef","useDebounce","withoutNoteConnectivityWarnings","toast","useCallback","migrateWorkflowDefinition","_jsx","Loader2","_jsxs","AlertCircle","Button","ChevronLeft","_Fragment","Input","Pencil","X","RotateCcw","DropdownMenu","DropdownMenuTrigger","MoreHorizontal","DropdownMenuContent","DropdownMenuItem","Power","Trash2","Eye","Collapsible","CollapsibleTrigger","AlertTriangle","ChevronUp","ChevronDown","CollapsibleContent","WorkflowSidebar","WorkflowCanvas","WorkflowPreviewChat","DeleteWorkflowModal"],"mappings":"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"}