@burdenoff/fluidgrids-fe-sdk 2026.1101.1 → 2026.1101.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.
Files changed (51) hide show
  1. package/dist/{ExecutionDetailPage-4LPCNWM3.js → ExecutionDetailPage-Q77U6YJO.js} +11 -8
  2. package/dist/{ExecutionsListPage-HNPUKYD7.js → ExecutionsListPage-X4H4FVLN.js} +6 -5
  3. package/dist/{WorkflowBuilder-QFSCYCUC.js → WorkflowBuilder-RJPRUMQR.js} +11 -8
  4. package/dist/{WorkflowsList-RV4BRJO7.js → WorkflowsList-R2JJK7BL.js} +7 -6
  5. package/dist/agentTools-MISTH7JI.js +349 -0
  6. package/dist/{chunk-77HIU3CX.js → chunk-26HGYPBC.js} +1 -1
  7. package/dist/{chunk-76UUEMTN.js → chunk-37VUN74D.js} +4 -4
  8. package/dist/{chunk-QPZCJKII.js → chunk-3ERT6FQK.js} +3 -3
  9. package/dist/chunk-472HJ3S3.js +3929 -0
  10. package/dist/{chunk-WNZV4SLU.js → chunk-4QHCXTHW.js} +4 -4
  11. package/dist/chunk-AASHQI77.js +126 -0
  12. package/dist/chunk-CGXQVZGY.js +260 -0
  13. package/dist/chunk-CRDG2SQQ.js +185 -0
  14. package/dist/chunk-DQ2ZCXYX.js +21875 -0
  15. package/dist/chunk-F7DD7BOB.js +1164 -0
  16. package/dist/chunk-GTEBQQ7J.js +24 -0
  17. package/dist/{chunk-ALFMJSD6.js → chunk-H7XPXONT.js} +1 -1
  18. package/dist/{chunk-UO5DUKYN.js → chunk-HKKSXOFO.js} +8 -7
  19. package/dist/chunk-IA2ZCHNQ.js +1336 -0
  20. package/dist/{chunk-3M36XWAH.js → chunk-IGRIN7NL.js} +8 -7
  21. package/dist/chunk-JDLQ6QIB.js +283 -0
  22. package/dist/{chunk-AD7BICOT.js → chunk-JKBCLBHY.js} +1 -1
  23. package/dist/{chunk-6JX5UPDW.js → chunk-JNZCXFLD.js} +1 -1
  24. package/dist/{chunk-SEFOT2LD.js → chunk-LWLHPVIA.js} +1 -1
  25. package/dist/{chunk-JWROEOG5.js → chunk-LYTR6IQO.js} +1 -38
  26. package/dist/chunk-MR2B67NW.js +338 -0
  27. package/dist/{chunk-RIHYPPMQ.js → chunk-NLYQ3XDE.js} +1 -1
  28. package/dist/{chunk-6ILIBJFH.js → chunk-NZJWKVER.js} +7904 -7943
  29. package/dist/chunk-OCJTTHTS.js +46 -0
  30. package/dist/chunk-OSQ3OCR3.js +1193 -0
  31. package/dist/{chunk-VJL3DFJT.js → chunk-REO4S5MY.js} +2 -2
  32. package/dist/{chunk-XKQMCPSB.js → chunk-T2UUYYVJ.js} +4 -4
  33. package/dist/{chunk-BXR6BWXM.js → chunk-W7MTSATB.js} +5 -5
  34. package/dist/{chunk-A47PSD7A.js → chunk-WF6GMBR4.js} +7 -4
  35. package/dist/chunk-WYCB6OQL.js +19709 -0
  36. package/dist/{chunk-YOLPHVOE.js → chunk-YKFR7BZJ.js} +1 -1
  37. package/dist/{chunk-26NENGXA.js → chunk-YSXNJGCY.js} +4 -4
  38. package/dist/code-editor-field-JKCUR6BI.js +3 -0
  39. package/dist/executions.js +12 -9
  40. package/dist/history.js +4 -3
  41. package/dist/index.js +41 -32
  42. package/dist/node-detail-view-PCYFQX62.js +2034 -0
  43. package/dist/observability.js +5 -4
  44. package/dist/quick-config-panel-BRZZHOSI.js +402 -0
  45. package/dist/settings.js +6 -5
  46. package/dist/templates.js +10 -7
  47. package/dist/workflow-builder.js +12 -9
  48. package/dist/workflows-list.js +7 -6
  49. package/package.json +4 -1
  50. package/dist/chunk-NMEI7TQW.js +0 -2628
  51. package/dist/chunk-S7XV65DB.js +0 -50350
@@ -0,0 +1,338 @@
1
+ import { useFlowStore } from './chunk-NZJWKVER.js';
2
+ import { useTr } from './chunk-UULVIT25.js';
3
+ import { useState, useRef, useCallback, useEffect } from 'react';
4
+ import { cn } from '@burdenoff/fe-libs/utils';
5
+ import { Button } from '@burdenoff/fe-libs/ui';
6
+ import { Icon } from '@iconify/react';
7
+ import { useShallow } from 'zustand/shallow';
8
+ import { jsx, jsxs } from 'react/jsx-runtime';
9
+
10
+ var JsonView = ({
11
+ data
12
+ }) => {
13
+ const tr = useTr();
14
+ if (!data)
15
+ return /* @__PURE__ */ jsx("div", { className: "text-tertiary p-4", children: tr("fluidgrids.builder.logsPanel.jsonViewNoData", "No data") });
16
+ return /* @__PURE__ */ jsx("pre", { className: "text-xs overflow-auto p-4 bg-card/50 rounded h-full", children: JSON.stringify(data, null, 2) });
17
+ };
18
+ var TableView = ({
19
+ data
20
+ }) => {
21
+ const tr = useTr();
22
+ if (!data)
23
+ return /* @__PURE__ */ jsx("div", { className: "text-tertiary p-4", children: tr("fluidgrids.builder.logsPanel.tableViewNoData", "No data") });
24
+ const entries = Object.entries(data);
25
+ if (entries.length === 0)
26
+ return /* @__PURE__ */ jsx("div", { className: "text-tertiary p-4", children: tr(
27
+ "fluidgrids.builder.logsPanel.tableViewEmptyObject",
28
+ "Empty object"
29
+ ) });
30
+ return /* @__PURE__ */ jsx("div", { className: "overflow-auto h-full", children: /* @__PURE__ */ jsxs("table", { className: "w-full text-xs", children: [
31
+ /* @__PURE__ */ jsx("thead", { className: "bg-card-foreground/10 sticky top-0", children: /* @__PURE__ */ jsxs("tr", { children: [
32
+ /* @__PURE__ */ jsx("th", { className: "text-left p-2", children: tr("fluidgrids.builder.logsPanel.tableColumnField", "Field") }),
33
+ /* @__PURE__ */ jsx("th", { className: "text-left p-2", children: tr("fluidgrids.builder.logsPanel.tableColumnType", "Type") }),
34
+ /* @__PURE__ */ jsx("th", { className: "text-left p-2", children: tr("fluidgrids.builder.logsPanel.tableColumnValue", "Value") })
35
+ ] }) }),
36
+ /* @__PURE__ */ jsx("tbody", { children: entries.map(([key, value]) => /* @__PURE__ */ jsxs("tr", { className: "border-b border-card-foreground/10", children: [
37
+ /* @__PURE__ */ jsx("td", { className: "p-2 font-medium text-accent", children: key }),
38
+ /* @__PURE__ */ jsx("td", { className: "p-2 text-secondary", children: typeof value }),
39
+ /* @__PURE__ */ jsx("td", { className: "p-2 truncate max-w-[200px]", children: typeof value === "object" ? JSON.stringify(value) : String(value) })
40
+ ] }, key)) })
41
+ ] }) });
42
+ };
43
+ var LogListItem = ({
44
+ log,
45
+ isSelected,
46
+ onClick
47
+ }) => {
48
+ const statusIcon = {
49
+ pending: "mdi:clock-outline",
50
+ running: "svg-spinners:ring-resize",
51
+ completed: "mdi:check-circle",
52
+ failed: "mdi:close-circle"
53
+ }[log.status];
54
+ const statusColor = {
55
+ pending: "text-tertiary",
56
+ running: "text-accent",
57
+ completed: "text-[var(--color-status-success-text)]",
58
+ failed: "text-[var(--color-status-error-text)]"
59
+ }[log.status];
60
+ return /* @__PURE__ */ jsxs(
61
+ "button",
62
+ {
63
+ onClick,
64
+ className: cn(
65
+ "w-full text-left p-2 flex items-center gap-2 text-xs transition-colors",
66
+ isSelected ? "bg-primary/20 border-l-2 border-primary" : "hover:bg-card-foreground/10"
67
+ ),
68
+ children: [
69
+ /* @__PURE__ */ jsx(Icon, { icon: statusIcon, className: cn("size-4", statusColor) }),
70
+ /* @__PURE__ */ jsx("span", { className: "truncate flex-1", children: log.nodeName }),
71
+ log.duration && /* @__PURE__ */ jsxs("span", { className: "text-tertiary text-[10px]", children: [
72
+ log.duration.toFixed(2),
73
+ "s"
74
+ ] })
75
+ ]
76
+ }
77
+ );
78
+ };
79
+ var LogDetailView = ({ log }) => {
80
+ const tr = useTr();
81
+ const [activeTab, setActiveTab] = useState("output");
82
+ const [viewMode, setViewMode] = useState("json");
83
+ if (!log) {
84
+ return /* @__PURE__ */ jsx("div", { className: "flex-1 flex items-center justify-center text-tertiary text-sm", children: tr(
85
+ "fluidgrids.builder.logsPanel.detailEmptyState",
86
+ "Select a step to view details"
87
+ ) });
88
+ }
89
+ const statusColor = {
90
+ pending: "text-tertiary",
91
+ running: "text-accent",
92
+ completed: "text-[var(--color-status-success-text)]",
93
+ failed: "text-[var(--color-status-error-text)]"
94
+ }[log.status];
95
+ const data = activeTab === "input" ? log.inputArgs : log.output;
96
+ const itemCount = data ? Object.keys(data).length : 0;
97
+ const resumeUrl = typeof log.output?._resumeUrl === "string" ? log.output._resumeUrl : null;
98
+ return /* @__PURE__ */ jsxs("div", { className: "flex-1 flex flex-col", children: [
99
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-2 border-b border-card-foreground/10", children: [
100
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
101
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: log.nodeName }),
102
+ /* @__PURE__ */ jsx("span", { className: cn("text-xs capitalize", statusColor), children: log.status === "completed" ? tr("fluidgrids.builder.logsPanel.statusSuccess", "Success") : log.status }),
103
+ log.duration && /* @__PURE__ */ jsxs("span", { className: "text-xs text-text-muted", children: [
104
+ "in ",
105
+ (log.duration * 1e3).toFixed(0),
106
+ "ms"
107
+ ] })
108
+ ] }),
109
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
110
+ /* @__PURE__ */ jsx(
111
+ Button,
112
+ {
113
+ variant: viewMode === "json" ? "secondary" : "ghost",
114
+ size: "icon",
115
+ className: "size-6",
116
+ onClick: () => setViewMode("json"),
117
+ title: tr(
118
+ "fluidgrids.builder.logsPanel.jsonViewTooltip",
119
+ "JSON View"
120
+ ),
121
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:code-json", className: "size-3" })
122
+ }
123
+ ),
124
+ /* @__PURE__ */ jsx(
125
+ Button,
126
+ {
127
+ variant: viewMode === "table" ? "secondary" : "ghost",
128
+ size: "icon",
129
+ className: "size-6",
130
+ onClick: () => setViewMode("table"),
131
+ title: tr(
132
+ "fluidgrids.builder.logsPanel.tableViewTooltip",
133
+ "Table View"
134
+ ),
135
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:table", className: "size-3" })
136
+ }
137
+ )
138
+ ] })
139
+ ] }),
140
+ resumeUrl && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-card-foreground/10 px-2 py-2", children: [
141
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground", children: tr("fluidgrids.builder.logsPanel.resumeUrl", "Resume URL") }),
142
+ /* @__PURE__ */ jsx(
143
+ "input",
144
+ {
145
+ readOnly: true,
146
+ value: resumeUrl,
147
+ onFocus: (e) => e.currentTarget.select(),
148
+ className: "min-w-0 flex-1 rounded-md border border-border bg-muted/40 px-2 py-1 font-mono text-[11px] outline-none focus:border-primary"
149
+ }
150
+ ),
151
+ /* @__PURE__ */ jsx(
152
+ "button",
153
+ {
154
+ type: "button",
155
+ onClick: () => void navigator.clipboard?.writeText(resumeUrl),
156
+ className: "shrink-0 rounded-md border border-border px-2 py-1 text-[11px] font-medium hover:bg-muted",
157
+ children: tr("fluidgrids.builder.logsPanel.copy", "Copy")
158
+ }
159
+ )
160
+ ] }),
161
+ /* @__PURE__ */ jsxs("div", { className: "flex border-b border-card-foreground/10", children: [
162
+ /* @__PURE__ */ jsx(
163
+ "button",
164
+ {
165
+ className: cn(
166
+ "px-4 py-2 text-xs font-medium transition-colors duration-200",
167
+ activeTab === "input" ? "border-b-2 border-primary text-primary" : "text-secondary hover:text-primary"
168
+ ),
169
+ onClick: () => setActiveTab("input"),
170
+ children: tr("fluidgrids.builder.logsPanel.tabInput", "Input")
171
+ }
172
+ ),
173
+ /* @__PURE__ */ jsx(
174
+ "button",
175
+ {
176
+ className: cn(
177
+ "px-4 py-2 text-xs font-medium transition-colors duration-200",
178
+ activeTab === "output" ? "border-b-2 border-primary text-primary" : "text-secondary hover:text-primary"
179
+ ),
180
+ onClick: () => setActiveTab("output"),
181
+ children: tr("fluidgrids.builder.logsPanel.tabOutput", "Output")
182
+ }
183
+ ),
184
+ /* @__PURE__ */ jsx("div", { className: "flex-1" }),
185
+ /* @__PURE__ */ jsxs("span", { className: "px-4 py-2 text-xs text-tertiary", children: [
186
+ itemCount,
187
+ " ",
188
+ itemCount !== 1 ? tr("fluidgrids.builder.logsPanel.itemCountOther", "items") : tr("fluidgrids.builder.logsPanel.itemCountOne", "item")
189
+ ] })
190
+ ] }),
191
+ /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-auto", children: log.error && activeTab === "output" ? /* @__PURE__ */ jsxs("div", { className: "p-4 bg-[var(--color-status-error-bg-subtle)] text-[var(--color-status-error-text)] text-xs", children: [
192
+ /* @__PURE__ */ jsx("div", { className: "font-medium mb-1", children: tr("fluidgrids.builder.logsPanel.errorHeading", "Error:") }),
193
+ log.error
194
+ ] }) : viewMode === "json" ? /* @__PURE__ */ jsx(JsonView, { data }) : /* @__PURE__ */ jsx(TableView, { data }) })
195
+ ] });
196
+ };
197
+ var LogsPanel = () => {
198
+ const tr = useTr();
199
+ const [
200
+ logs,
201
+ selectedLogId,
202
+ panelExpanded,
203
+ selectLog,
204
+ togglePanel,
205
+ clearLogs
206
+ ] = useFlowStore(
207
+ useShallow((s) => [
208
+ s.execution.logs,
209
+ s.execution.selectedLogId,
210
+ s.execution.panelExpanded,
211
+ s.actions.execution.selectLog,
212
+ s.actions.execution.togglePanel,
213
+ s.actions.execution.clearLogs
214
+ ])
215
+ );
216
+ const selectedLog = logs.find((l) => l.id === selectedLogId) || null;
217
+ const [panelHeight, setPanelHeight] = useState(350);
218
+ const isResizing = useRef(false);
219
+ const startY = useRef(0);
220
+ const startHeight = useRef(0);
221
+ const handleMouseDown = useCallback(
222
+ (e) => {
223
+ e.preventDefault();
224
+ isResizing.current = true;
225
+ startY.current = e.clientY;
226
+ startHeight.current = panelHeight;
227
+ document.body.style.cursor = "ns-resize";
228
+ document.body.style.userSelect = "none";
229
+ },
230
+ [panelHeight]
231
+ );
232
+ useEffect(() => {
233
+ const handleMouseMove = (e) => {
234
+ if (!isResizing.current) return;
235
+ const deltaY = startY.current - e.clientY;
236
+ const newHeight = Math.max(
237
+ 150,
238
+ Math.min(600, startHeight.current + deltaY)
239
+ );
240
+ setPanelHeight(newHeight);
241
+ };
242
+ const handleMouseUp = () => {
243
+ isResizing.current = false;
244
+ document.body.style.cursor = "";
245
+ document.body.style.userSelect = "";
246
+ };
247
+ document.addEventListener("mousemove", handleMouseMove);
248
+ document.addEventListener("mouseup", handleMouseUp);
249
+ return () => {
250
+ document.removeEventListener("mousemove", handleMouseMove);
251
+ document.removeEventListener("mouseup", handleMouseUp);
252
+ };
253
+ }, []);
254
+ if (!panelExpanded && logs.length === 0) {
255
+ return null;
256
+ }
257
+ return /* @__PURE__ */ jsxs(
258
+ "div",
259
+ {
260
+ className: cn(
261
+ "relative border-t border-card-foreground/10 bg-card/95 backdrop-blur-sm transition-[height] duration-150",
262
+ !panelExpanded && "h-10"
263
+ ),
264
+ style: { height: panelExpanded ? panelHeight : 40 },
265
+ children: [
266
+ panelExpanded && /* @__PURE__ */ jsx(
267
+ "div",
268
+ {
269
+ className: "absolute top-0 left-0 right-0 h-1.5 cursor-ns-resize bg-transparent hover:bg-primary/30 transition-colors z-10 group",
270
+ onMouseDown: handleMouseDown,
271
+ children: /* @__PURE__ */ jsx("div", { className: "absolute top-0.5 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full bg-card-foreground/20 group-hover:bg-primary/50 transition-colors" })
272
+ }
273
+ ),
274
+ /* @__PURE__ */ jsxs("div", { className: "h-10 flex items-center justify-between px-3 border-b border-card-foreground/10", children: [
275
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
276
+ /* @__PURE__ */ jsx(
277
+ Button,
278
+ {
279
+ variant: "ghost",
280
+ size: "icon",
281
+ className: "size-6",
282
+ onClick: togglePanel,
283
+ children: /* @__PURE__ */ jsx(
284
+ Icon,
285
+ {
286
+ icon: panelExpanded ? "mdi:chevron-down" : "mdi:chevron-up",
287
+ className: "size-4"
288
+ }
289
+ )
290
+ }
291
+ ),
292
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: tr("fluidgrids.builder.logsPanel.title", "Logs") }),
293
+ logs.length > 0 && /* @__PURE__ */ jsxs("span", { className: "text-xs text-tertiary", children: [
294
+ "(",
295
+ logs.length,
296
+ " ",
297
+ tr("fluidgrids.builder.logsPanel.stepsSuffix", "steps"),
298
+ ")"
299
+ ] })
300
+ ] }),
301
+ logs.length > 0 && /* @__PURE__ */ jsxs(
302
+ Button,
303
+ {
304
+ variant: "ghost",
305
+ size: "sm",
306
+ className: "h-6 text-xs",
307
+ onClick: clearLogs,
308
+ children: [
309
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:trash-can-outline", className: "size-3 mr-1" }),
310
+ tr(
311
+ "fluidgrids.builder.logsPanel.clearExecution",
312
+ "Clear execution"
313
+ )
314
+ ]
315
+ }
316
+ )
317
+ ] }),
318
+ panelExpanded && /* @__PURE__ */ jsxs("div", { className: "flex h-[calc(100%-40px)]", children: [
319
+ /* @__PURE__ */ jsx("div", { className: "w-[200px] border-r border-card-foreground/10 overflow-y-auto", children: logs.length === 0 ? /* @__PURE__ */ jsx("div", { className: "p-4 text-xs text-tertiary text-center", children: tr(
320
+ "fluidgrids.builder.logsPanel.emptyState",
321
+ "No execution logs yet"
322
+ ) }) : logs.map((log) => /* @__PURE__ */ jsx(
323
+ LogListItem,
324
+ {
325
+ log,
326
+ isSelected: log.id === selectedLogId,
327
+ onClick: () => selectLog(log.id)
328
+ },
329
+ log.id
330
+ )) }),
331
+ /* @__PURE__ */ jsx(LogDetailView, { log: selectedLog })
332
+ ] })
333
+ ]
334
+ }
335
+ );
336
+ };
337
+
338
+ export { JsonView, LogsPanel, TableView };
@@ -1,5 +1,5 @@
1
1
  import { LOG_STREAM_DESTINATIONS, CREATE_LOG_STREAM_DESTINATION, UPDATE_LOG_STREAM_DESTINATION, DELETE_LOG_STREAM_DESTINATION, TEST_LOG_STREAM_DESTINATION, REPLAY_WORKFLOW_RUN, RETRY_WORKFLOW_RUNS, OBSERVABILITY_DASHBOARD_SUMMARY, OBSERVABILITY_FAILED_RUNS, OBSERVABILITY_DATA_SINKS, OBSERVABILITY_DATA_SINK_DATA } from './chunk-5ERAJC2I.js';
2
- import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt, useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-6ILIBJFH.js';
2
+ import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt, useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-NZJWKVER.js';
3
3
  import { useTr } from './chunk-UULVIT25.js';
4
4
  import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
5
5
  import { useCallback, useState, useMemo, useEffect } from 'react';