@datatechsolutions/ui 3.13.1 → 3.14.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.
- package/dist/astrlabe/graph-node.js +6 -6
- package/dist/astrlabe/graph-node.mjs +2 -2
- package/dist/astrlabe/index.js +114 -114
- package/dist/astrlabe/index.mjs +6 -6
- package/dist/astrlabe/workflow-canvas.js +6 -6
- package/dist/astrlabe/workflow-canvas.mjs +5 -5
- package/dist/{chunk-VCL5LDS5.js → chunk-2II2NLAZ.js} +38 -38
- package/dist/{chunk-VCL5LDS5.js.map → chunk-2II2NLAZ.js.map} +1 -1
- package/dist/{chunk-O4RZCDP2.mjs → chunk-2SBVFLPZ.mjs} +19 -2
- package/dist/chunk-2SBVFLPZ.mjs.map +1 -0
- package/dist/{chunk-TRNDFSM6.mjs → chunk-33ZWFDVG.mjs} +14 -14
- package/dist/chunk-33ZWFDVG.mjs.map +1 -0
- package/dist/{chunk-VWZ53TE2.js → chunk-4HZ55YKZ.js} +9 -9
- package/dist/{chunk-VWZ53TE2.js.map → chunk-4HZ55YKZ.js.map} +1 -1
- package/dist/{chunk-ULSG4JLR.js → chunk-4P72IJOM.js} +6 -6
- package/dist/{chunk-ULSG4JLR.js.map → chunk-4P72IJOM.js.map} +1 -1
- package/dist/{chunk-4Z5NZINA.js → chunk-5SCZB5UI.js} +122 -122
- package/dist/chunk-5SCZB5UI.js.map +1 -0
- package/dist/{chunk-Y65X2NHF.mjs → chunk-5YCH7FHT.mjs} +3 -3
- package/dist/{chunk-Y65X2NHF.mjs.map → chunk-5YCH7FHT.mjs.map} +1 -1
- package/dist/{chunk-DTFU3ZTD.js → chunk-6NBQTIXX.js} +9 -9
- package/dist/{chunk-DTFU3ZTD.js.map → chunk-6NBQTIXX.js.map} +1 -1
- package/dist/{chunk-CVEI4RQP.js → chunk-6NEESZVO.js} +4 -4
- package/dist/{chunk-CVEI4RQP.js.map → chunk-6NEESZVO.js.map} +1 -1
- package/dist/{chunk-AC54BNSK.js → chunk-72XZ7DSF.js} +13 -13
- package/dist/{chunk-AC54BNSK.js.map → chunk-72XZ7DSF.js.map} +1 -1
- package/dist/{chunk-ZPV7X4ZE.mjs → chunk-7NHJSD4A.mjs} +6 -6
- package/dist/{chunk-ZPV7X4ZE.mjs.map → chunk-7NHJSD4A.mjs.map} +1 -1
- package/dist/{chunk-CKY2QIRR.js → chunk-7SDB2VC2.js} +4 -4
- package/dist/{chunk-CKY2QIRR.js.map → chunk-7SDB2VC2.js.map} +1 -1
- package/dist/{chunk-FV42SSLP.js → chunk-A5OMGPMR.js} +4 -4
- package/dist/{chunk-FV42SSLP.js.map → chunk-A5OMGPMR.js.map} +1 -1
- package/dist/{chunk-54T5F65C.js → chunk-AUCS2KF4.js} +17 -17
- package/dist/{chunk-54T5F65C.js.map → chunk-AUCS2KF4.js.map} +1 -1
- package/dist/{chunk-QEACOJXX.mjs → chunk-F4KHAKTP.mjs} +102 -46
- package/dist/chunk-F4KHAKTP.mjs.map +1 -0
- package/dist/{chunk-Q7QPHZOV.js → chunk-FHGWXWVZ.js} +67 -67
- package/dist/{chunk-Q7QPHZOV.js.map → chunk-FHGWXWVZ.js.map} +1 -1
- package/dist/{chunk-RWZ2PLMQ.js → chunk-FZUV7GNB.js} +175 -118
- package/dist/chunk-FZUV7GNB.js.map +1 -0
- package/dist/{chunk-RMPXGEFL.mjs → chunk-HQNIETHV.mjs} +8 -8
- package/dist/{chunk-RMPXGEFL.mjs.map → chunk-HQNIETHV.mjs.map} +1 -1
- package/dist/{chunk-VPRAESA7.mjs → chunk-KDDXDQR2.mjs} +3 -3
- package/dist/{chunk-VPRAESA7.mjs.map → chunk-KDDXDQR2.mjs.map} +1 -1
- package/dist/{chunk-PM7A5I3X.js → chunk-LJGPMMKB.js} +113 -113
- package/dist/{chunk-PM7A5I3X.js.map → chunk-LJGPMMKB.js.map} +1 -1
- package/dist/{chunk-EBARYRSA.js → chunk-MXQ2EYG2.js} +19 -2
- package/dist/chunk-MXQ2EYG2.js.map +1 -0
- package/dist/{chunk-SCGICCQM.mjs → chunk-N6SGVUTR.mjs} +7 -10
- package/dist/chunk-N6SGVUTR.mjs.map +1 -0
- package/dist/{chunk-7IAWXG43.js → chunk-NIZSQJRW.js} +33 -33
- package/dist/{chunk-7IAWXG43.js.map → chunk-NIZSQJRW.js.map} +1 -1
- package/dist/{chunk-UUTTS3VV.mjs → chunk-NXWIT4YQ.mjs} +8 -11
- package/dist/chunk-NXWIT4YQ.mjs.map +1 -0
- package/dist/{chunk-DJHNSBIR.mjs → chunk-OTQXU4WG.mjs} +26 -26
- package/dist/{chunk-DJHNSBIR.mjs.map → chunk-OTQXU4WG.mjs.map} +1 -1
- package/dist/{chunk-3VCSMSJB.mjs → chunk-PO66V2PN.mjs} +9 -9
- package/dist/{chunk-3VCSMSJB.mjs.map → chunk-PO66V2PN.mjs.map} +1 -1
- package/dist/{chunk-B3TA74C4.js → chunk-PXGESUKI.js} +57 -60
- package/dist/chunk-PXGESUKI.js.map +1 -0
- package/dist/{chunk-YHD6SJIN.mjs → chunk-Q2FUNDCP.mjs} +4 -4
- package/dist/{chunk-YHD6SJIN.mjs.map → chunk-Q2FUNDCP.mjs.map} +1 -1
- package/dist/{chunk-4MNKVDTJ.mjs → chunk-Q5TZTA6H.mjs} +4 -4
- package/dist/{chunk-4MNKVDTJ.mjs.map → chunk-Q5TZTA6H.mjs.map} +1 -1
- package/dist/{chunk-4QCO4CBC.mjs → chunk-T7DROKWJ.mjs} +4 -4
- package/dist/{chunk-4QCO4CBC.mjs.map → chunk-T7DROKWJ.mjs.map} +1 -1
- package/dist/{chunk-WX44DAQD.mjs → chunk-TQADF23S.mjs} +3 -3
- package/dist/{chunk-WX44DAQD.mjs.map → chunk-TQADF23S.mjs.map} +1 -1
- package/dist/{chunk-4VEQJAXJ.mjs → chunk-U7VMFQFN.mjs} +5 -5
- package/dist/{chunk-4VEQJAXJ.mjs.map → chunk-U7VMFQFN.mjs.map} +1 -1
- package/dist/{chunk-M4KRQXOT.mjs → chunk-WE35EV7J.mjs} +3 -3
- package/dist/{chunk-M4KRQXOT.mjs.map → chunk-WE35EV7J.mjs.map} +1 -1
- package/dist/{chunk-RSCRIDMW.mjs → chunk-WTSMTLSP.mjs} +39 -45
- package/dist/chunk-WTSMTLSP.mjs.map +1 -0
- package/dist/{chunk-RPNMDGRA.js → chunk-YFMMZHL5.js} +37 -40
- package/dist/chunk-YFMMZHL5.js.map +1 -0
- package/dist/{chunk-XYMHIZ3K.mjs → chunk-ZBX7UCAP.mjs} +7 -7
- package/dist/{chunk-XYMHIZ3K.mjs.map → chunk-ZBX7UCAP.mjs.map} +1 -1
- package/dist/{chunk-RUZPOHJW.js → chunk-ZE6U4N4Q.js} +42 -42
- package/dist/{chunk-RUZPOHJW.js.map → chunk-ZE6U4N4Q.js.map} +1 -1
- package/dist/{chunk-UPWJRCAD.js → chunk-ZIRD3X6G.js} +220 -226
- package/dist/chunk-ZIRD3X6G.js.map +1 -0
- package/dist/index.d.mts +77 -7
- package/dist/index.d.ts +77 -7
- package/dist/index.js +708 -704
- package/dist/index.mjs +3 -3
- package/dist/platform/admin/index.js +12 -12
- package/dist/platform/admin/index.mjs +6 -6
- package/dist/platform/agents-workspace.js +9 -9
- package/dist/platform/agents-workspace.mjs +8 -8
- package/dist/platform/app-shell.js +5 -5
- package/dist/platform/app-shell.mjs +4 -4
- package/dist/platform/auth/index.js +29 -29
- package/dist/platform/auth/index.mjs +6 -6
- package/dist/platform/billing/index.js +7 -7
- package/dist/platform/billing/index.mjs +5 -5
- package/dist/platform/impersonation/index.js +5 -5
- package/dist/platform/impersonation/index.mjs +4 -4
- package/dist/platform/index.js +97 -97
- package/dist/platform/index.mjs +22 -22
- package/dist/platform/pages/index.d.mts +103 -1
- package/dist/platform/pages/index.d.ts +103 -1
- package/dist/platform/pages/index.js +934 -488
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +530 -90
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +9 -9
- package/dist/platform/settings/index.mjs +8 -8
- package/dist/platform/workflow-canvas-shell.js +7 -7
- package/dist/platform/workflow-canvas-shell.mjs +6 -6
- package/package.json +1 -1
- package/dist/chunk-4Z5NZINA.js.map +0 -1
- package/dist/chunk-B3TA74C4.js.map +0 -1
- package/dist/chunk-EBARYRSA.js.map +0 -1
- package/dist/chunk-O4RZCDP2.mjs.map +0 -1
- package/dist/chunk-QEACOJXX.mjs.map +0 -1
- package/dist/chunk-RPNMDGRA.js.map +0 -1
- package/dist/chunk-RSCRIDMW.mjs.map +0 -1
- package/dist/chunk-RWZ2PLMQ.js.map +0 -1
- package/dist/chunk-SCGICCQM.mjs.map +0 -1
- package/dist/chunk-TRNDFSM6.mjs.map +0 -1
- package/dist/chunk-UPWJRCAD.js.map +0 -1
- package/dist/chunk-UUTTS3VV.mjs.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunk5SCZB5UI_js = require('./chunk-5SCZB5UI.js');
|
|
5
|
+
var chunkFZUV7GNB_js = require('./chunk-FZUV7GNB.js');
|
|
6
6
|
var chunkY5VN4SPH_js = require('./chunk-Y5VN4SPH.js');
|
|
7
|
-
var
|
|
7
|
+
var chunkMXQ2EYG2_js = require('./chunk-MXQ2EYG2.js');
|
|
8
8
|
var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
|
|
9
9
|
var react = require('react');
|
|
10
10
|
var react$1 = require('@xyflow/react');
|
|
@@ -41,11 +41,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
41
41
|
const isCompact = data.displayMode === "compact";
|
|
42
42
|
if (!config) {
|
|
43
43
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
44
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
47
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
-
|
|
44
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeRunningIndicator, { nodeId: id }),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
46
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
chunk5SCZB5UI_js.NodeCardHeader,
|
|
49
49
|
{
|
|
50
50
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-6 w-6 text-white" }),
|
|
51
51
|
title: data.label || "Model Provider",
|
|
@@ -53,8 +53,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
53
53
|
iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
|
|
54
54
|
}
|
|
55
55
|
) }),
|
|
56
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
57
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
58
58
|
] });
|
|
59
59
|
}
|
|
60
60
|
const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
|
|
@@ -63,18 +63,18 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
63
63
|
const isConfigured = !!(config.credentialRef || config.apiKeyRef);
|
|
64
64
|
const logo = PROVIDER_LOGOS[config.providerType];
|
|
65
65
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
66
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
68
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeRunningIndicator, { nodeId: id }),
|
|
67
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
68
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
69
69
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
70
70
|
"button",
|
|
71
71
|
{
|
|
72
72
|
type: "button",
|
|
73
73
|
onClick: () => data.onEdit?.(id),
|
|
74
74
|
className: "w-full text-left",
|
|
75
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
75
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunk5SCZB5UI_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
|
|
76
76
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
-
|
|
77
|
+
chunk5SCZB5UI_js.NodeCardHeader,
|
|
78
78
|
{
|
|
79
79
|
icon: logo ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo, alt: providerLabel, className: "h-6 w-6 object-contain", loading: "lazy" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-6 w-6 text-white" }),
|
|
80
80
|
title: displayName,
|
|
@@ -82,11 +82,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
82
82
|
iconClassName: `flex h-11 w-11 items-center justify-center rounded-xl shadow-lg ${logo ? "bg-white/10 dark:bg-white/5 p-2" : "bg-gradient-to-br from-slate-600 to-slate-700 p-1.5"}`
|
|
83
83
|
}
|
|
84
84
|
),
|
|
85
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
87
|
-
regionLabel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
89
|
-
config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
86
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: providerLabel }),
|
|
87
|
+
regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: regionLabel }),
|
|
88
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: isConfigured ? "green" : "amber", size: "xs", children: isConfigured ? "Configured" : "Setup needed" }),
|
|
89
|
+
config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: [
|
|
90
90
|
config.modelFilter.length,
|
|
91
91
|
" models"
|
|
92
92
|
] })
|
|
@@ -94,8 +94,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
94
94
|
] })
|
|
95
95
|
}
|
|
96
96
|
),
|
|
97
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
98
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
98
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
99
99
|
] });
|
|
100
100
|
});
|
|
101
101
|
var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected }) {
|
|
@@ -104,10 +104,10 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
|
|
|
104
104
|
const isCompact = data.displayMode === "compact";
|
|
105
105
|
const keyPreview = config.key ? config.key.slice(0, 30) : "";
|
|
106
106
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
107
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
108
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeRunningIndicator, { nodeId: id }),
|
|
108
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
|
|
109
109
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
110
|
-
|
|
110
|
+
chunk5SCZB5UI_js.NodeInteractiveCard,
|
|
111
111
|
{
|
|
112
112
|
nodeId: id,
|
|
113
113
|
onEdit,
|
|
@@ -116,27 +116,27 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
|
|
|
116
116
|
nodeType: "s3_write",
|
|
117
117
|
children: [
|
|
118
118
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
-
|
|
119
|
+
chunk5SCZB5UI_js.NodeCardHeader,
|
|
120
120
|
{
|
|
121
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
121
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
|
|
122
122
|
title: label,
|
|
123
123
|
description: t("s3WriteNodeDescription"),
|
|
124
124
|
compact: isCompact,
|
|
125
125
|
iconClassName: ""
|
|
126
126
|
}
|
|
127
127
|
),
|
|
128
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
128
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk5SCZB5UI_js.NodeCardMeta, { compact: isCompact, children: [
|
|
129
129
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
130
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
131
|
-
config.bucket && /* @__PURE__ */ jsxRuntime.jsx(
|
|
130
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
|
|
131
|
+
config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
|
|
132
132
|
keyPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: keyPreview })
|
|
133
133
|
] }),
|
|
134
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
134
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
135
135
|
] })
|
|
136
136
|
]
|
|
137
137
|
}
|
|
138
138
|
),
|
|
139
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
139
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
|
|
140
140
|
] });
|
|
141
141
|
});
|
|
142
142
|
function AnthropicModelIcon({ className }) {
|
|
@@ -200,7 +200,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
200
200
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-dashed border-slate-300 bg-slate-50/40 p-4 text-center dark:border-slate-700 dark:bg-slate-900/30", children: [
|
|
201
201
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-xs text-slate-500 dark:text-slate-400", children: "No schema yet \u2014 agent text is exposed as a raw string. Add a schema to enforce structured output." }),
|
|
202
202
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
203
|
-
|
|
203
|
+
chunkMXQ2EYG2_js.Button,
|
|
204
204
|
{
|
|
205
205
|
type: "button",
|
|
206
206
|
outline: true,
|
|
@@ -264,7 +264,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
264
264
|
},
|
|
265
265
|
index
|
|
266
266
|
)),
|
|
267
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
267
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
|
|
268
268
|
] })
|
|
269
269
|
] });
|
|
270
270
|
}
|
|
@@ -287,7 +287,7 @@ function FieldEditor({
|
|
|
287
287
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
288
288
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_140px_auto_auto] items-end gap-2", children: [
|
|
289
289
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
290
|
-
|
|
290
|
+
chunkFZUV7GNB_js.FormInput,
|
|
291
291
|
{
|
|
292
292
|
label: "Name",
|
|
293
293
|
value: field.name,
|
|
@@ -296,7 +296,7 @@ function FieldEditor({
|
|
|
296
296
|
}
|
|
297
297
|
),
|
|
298
298
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
299
|
-
|
|
299
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
300
300
|
{
|
|
301
301
|
label: "Type",
|
|
302
302
|
value: field.type,
|
|
@@ -316,10 +316,10 @@ function FieldEditor({
|
|
|
316
316
|
),
|
|
317
317
|
"Required"
|
|
318
318
|
] }),
|
|
319
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
319
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
|
|
320
320
|
] }),
|
|
321
321
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
322
|
-
|
|
322
|
+
chunkFZUV7GNB_js.FormInput,
|
|
323
323
|
{
|
|
324
324
|
label: "Description (optional)",
|
|
325
325
|
value: field.description,
|
|
@@ -612,13 +612,13 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
612
612
|
] });
|
|
613
613
|
}
|
|
614
614
|
function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFramework, setSelectedFramework, markDirty, connectedProviderTypes }) {
|
|
615
|
-
const frameworkKeys = Object.keys(
|
|
615
|
+
const frameworkKeys = Object.keys(chunk5SCZB5UI_js.FRAMEWORK_META);
|
|
616
616
|
const hasProviderConstraints = connectedProviderTypes.length > 0;
|
|
617
|
-
const compatibleModels =
|
|
617
|
+
const compatibleModels = chunk5SCZB5UI_js.getCompatibleModels(models, selectedFramework);
|
|
618
618
|
const handleFrameworkChange = react.useCallback((newFramework) => {
|
|
619
619
|
setSelectedFramework(newFramework);
|
|
620
|
-
if (!
|
|
621
|
-
const compatible =
|
|
620
|
+
if (!chunk5SCZB5UI_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
|
|
621
|
+
const compatible = chunk5SCZB5UI_js.getCompatibleModels(models, newFramework);
|
|
622
622
|
if (compatible.length > 0) {
|
|
623
623
|
setSelectedModelId(compatible[0].id);
|
|
624
624
|
}
|
|
@@ -629,10 +629,10 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
629
629
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
630
630
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.framework") }),
|
|
631
631
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
|
|
632
|
-
const meta =
|
|
632
|
+
const meta = chunk5SCZB5UI_js.FRAMEWORK_META[key];
|
|
633
633
|
const isSelected = key === selectedFramework;
|
|
634
|
-
const compatCount =
|
|
635
|
-
const isCompatibleWithProviders = !hasProviderConstraints ||
|
|
634
|
+
const compatCount = chunk5SCZB5UI_js.getCompatibleModels(models, key).length;
|
|
635
|
+
const isCompatibleWithProviders = !hasProviderConstraints || chunk5SCZB5UI_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
|
|
636
636
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
637
637
|
"button",
|
|
638
638
|
{
|
|
@@ -664,25 +664,21 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
664
664
|
] }),
|
|
665
665
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: models.map((model) => {
|
|
666
666
|
const isSelected = model.id === selectedModelId;
|
|
667
|
-
const isCompatible =
|
|
667
|
+
const isCompatible = chunk5SCZB5UI_js.isModelCompatibleWithFramework(model.id, selectedFramework);
|
|
668
668
|
const { IconComponent, color, providerLabel } = getModelIcon(model.id);
|
|
669
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
670
|
-
|
|
669
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
670
|
+
chunkFZUV7GNB_js.SelectionCard,
|
|
671
671
|
{
|
|
672
|
-
|
|
673
|
-
disabled: !isCompatible,
|
|
672
|
+
selected: isSelected,
|
|
674
673
|
onClick: () => {
|
|
675
674
|
setSelectedModelId(model.id);
|
|
676
675
|
markDirty();
|
|
677
676
|
},
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: providerLabel })
|
|
684
|
-
] })
|
|
685
|
-
]
|
|
677
|
+
layout: "card",
|
|
678
|
+
compatibility: isCompatible ? "compatible" : "incompatible",
|
|
679
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: `h-5 w-5 ${isSelected && isCompatible ? color : ""}` }),
|
|
680
|
+
label: model.name,
|
|
681
|
+
description: providerLabel
|
|
686
682
|
},
|
|
687
683
|
model.id
|
|
688
684
|
);
|
|
@@ -818,11 +814,11 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
818
814
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
819
815
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
820
816
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-sm font-medium ${isEnabled ? "text-slate-900 dark:text-white" : "text-slate-600 dark:text-slate-400"}`, children: tool.name }),
|
|
821
|
-
!isCompatible && /* @__PURE__ */ jsxRuntime.jsx(
|
|
817
|
+
!isCompatible && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: "incompatible" })
|
|
822
818
|
] }),
|
|
823
819
|
tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: tool.description }),
|
|
824
820
|
tool.compatibleFrameworks && tool.compatibleFrameworks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex flex-wrap gap-0.5", children: tool.compatibleFrameworks.map((framework) => {
|
|
825
|
-
const meta =
|
|
821
|
+
const meta = chunk5SCZB5UI_js.getFrameworkMeta(framework);
|
|
826
822
|
const isCurrentFw = framework === agentFramework;
|
|
827
823
|
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[8px] font-medium ${isCurrentFw ? meta.badgeColor : "bg-slate-100 text-slate-500 dark:bg-white/5 dark:text-slate-400"}`, children: [
|
|
828
824
|
/* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
|
|
@@ -839,7 +835,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
839
835
|
event.stopPropagation();
|
|
840
836
|
},
|
|
841
837
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
842
|
-
|
|
838
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
843
839
|
{
|
|
844
840
|
checked: isEnabled,
|
|
845
841
|
onChange: () => onToggle(tool.agentToolId),
|
|
@@ -887,7 +883,7 @@ function EngineTab({
|
|
|
887
883
|
const compatibleProviders = findCompatibleProviders(selectedModelId, modelProviders);
|
|
888
884
|
const configuredCompatible = compatibleProviders.filter((p) => p.configured);
|
|
889
885
|
const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
|
|
890
|
-
const frameworkMeta =
|
|
886
|
+
const frameworkMeta = chunk5SCZB5UI_js.getFrameworkMeta(selectedFramework);
|
|
891
887
|
const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-slate-800 outline-none transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-200";
|
|
892
888
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-hidden rounded-2xl border border-indigo-500/20 bg-gradient-to-b from-indigo-500/[0.04] via-violet-500/[0.03] to-purple-500/[0.04] dark:border-indigo-400/20 dark:from-indigo-500/[0.10] dark:via-violet-500/[0.06] dark:to-purple-500/[0.08]", children: [
|
|
893
889
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -932,12 +928,12 @@ function EngineTab({
|
|
|
932
928
|
children: configuredCompatible.map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.id, children: p.name }, p.id))
|
|
933
929
|
}
|
|
934
930
|
),
|
|
935
|
-
effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx(
|
|
931
|
+
effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) })
|
|
936
932
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[10px] text-slate-500 dark:text-slate-400", children: [
|
|
937
933
|
t("agentDrawer.servedVia", { _: "via" }),
|
|
938
934
|
" ",
|
|
939
935
|
effectiveProvider?.name ?? family,
|
|
940
|
-
effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 inline-flex", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
936
|
+
effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 inline-flex", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }) })
|
|
941
937
|
] })
|
|
942
938
|
] })
|
|
943
939
|
] }),
|
|
@@ -1012,7 +1008,7 @@ function EngineTab({
|
|
|
1012
1008
|
children: [
|
|
1013
1009
|
/* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-3 w-3 shrink-0 text-slate-500 dark:text-slate-400" }),
|
|
1014
1010
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] font-semibold text-slate-900 dark:text-white", children: provider.name }),
|
|
1015
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1011
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: provider.configured ? "emerald" : "amber", size: "xs", children: provider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }),
|
|
1016
1012
|
provider.apiKeyMasked && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto truncate font-mono text-[9px] text-slate-400 dark:text-slate-500", title: provider.credentialRef, children: provider.apiKeyMasked })
|
|
1017
1013
|
]
|
|
1018
1014
|
},
|
|
@@ -1026,9 +1022,9 @@ function EngineTab({
|
|
|
1026
1022
|
}
|
|
1027
1023
|
function AgentModal({ onSaved, onPersist }) {
|
|
1028
1024
|
const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
|
|
1029
|
-
const activeModal =
|
|
1030
|
-
const agentData =
|
|
1031
|
-
const closeModal =
|
|
1025
|
+
const activeModal = chunk5SCZB5UI_js.useModalStore((s) => s.activeModal);
|
|
1026
|
+
const agentData = chunk5SCZB5UI_js.useModalStore((s) => s.agentData);
|
|
1027
|
+
const closeModal = chunk5SCZB5UI_js.useModalStore((s) => s.closeModal);
|
|
1032
1028
|
const open = activeModal === "agent";
|
|
1033
1029
|
const agent = agentData?.agent ?? null;
|
|
1034
1030
|
const models = agentData?.models ?? [];
|
|
@@ -1176,7 +1172,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1176
1172
|
const fieldLabel = "text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400";
|
|
1177
1173
|
const avatarInitial = (displayName || agent.name).charAt(0).toUpperCase();
|
|
1178
1174
|
const avatarNode = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1179
|
-
|
|
1175
|
+
chunkFZUV7GNB_js.Avatar,
|
|
1180
1176
|
{
|
|
1181
1177
|
src: effectiveAvatarUrl || void 0,
|
|
1182
1178
|
alt: displayName || agent.name,
|
|
@@ -1188,7 +1184,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1188
1184
|
const statusPill = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
1189
1185
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[9px] font-semibold ${status === "active" ? "text-emerald-600 dark:text-emerald-400" : "text-slate-500"}`, children: status === "active" ? t("agentDrawer.statusActive", { _: "Active" }) : t("agentDrawer.statusInactive", { _: "Inactive" }) }),
|
|
1190
1186
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1191
|
-
|
|
1187
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
1192
1188
|
{
|
|
1193
1189
|
size: "sm",
|
|
1194
1190
|
color: "green",
|
|
@@ -1202,7 +1198,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1202
1198
|
)
|
|
1203
1199
|
] });
|
|
1204
1200
|
const identityCard = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-3 ring-1 ring-slate-200/50 dark:ring-white/10", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1205
|
-
|
|
1201
|
+
chunkFZUV7GNB_js.HeroBlock,
|
|
1206
1202
|
{
|
|
1207
1203
|
icon: avatarNode,
|
|
1208
1204
|
iconBackground: "none",
|
|
@@ -1265,7 +1261,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1265
1261
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `font-medium ${autosaveColor}`, children: autosaveLabel })
|
|
1266
1262
|
] });
|
|
1267
1263
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1268
|
-
|
|
1264
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
1269
1265
|
{
|
|
1270
1266
|
open,
|
|
1271
1267
|
onClose: handleClose,
|
|
@@ -1282,7 +1278,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1282
1278
|
},
|
|
1283
1279
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
1284
1280
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1285
|
-
|
|
1281
|
+
chunkFZUV7GNB_js.SectionCard,
|
|
1286
1282
|
{
|
|
1287
1283
|
variant: "glass",
|
|
1288
1284
|
padded: false,
|
|
@@ -1322,7 +1318,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1322
1318
|
}
|
|
1323
1319
|
),
|
|
1324
1320
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1325
|
-
|
|
1321
|
+
chunkFZUV7GNB_js.SectionCard,
|
|
1326
1322
|
{
|
|
1327
1323
|
variant: "glass",
|
|
1328
1324
|
padded: false,
|
|
@@ -1350,7 +1346,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1350
1346
|
}
|
|
1351
1347
|
),
|
|
1352
1348
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1353
|
-
|
|
1349
|
+
chunkFZUV7GNB_js.SectionCard,
|
|
1354
1350
|
{
|
|
1355
1351
|
variant: "glass",
|
|
1356
1352
|
padded: false,
|
|
@@ -1473,7 +1469,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1473
1469
|
const markDirty = useSubworkflowStore((s) => s.markDirty);
|
|
1474
1470
|
const markSaved = useSubworkflowStore((s) => s.markSaved);
|
|
1475
1471
|
const closeModal = useSubworkflowStore((s) => s.closeModal);
|
|
1476
|
-
const agentBehind =
|
|
1472
|
+
const agentBehind = chunk5SCZB5UI_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
|
|
1477
1473
|
const isCreateMode = !tool?.toolId;
|
|
1478
1474
|
const initialGraph = react.useMemo(() => {
|
|
1479
1475
|
const config = tool?.config;
|
|
@@ -1502,9 +1498,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1502
1498
|
}, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
|
|
1503
1499
|
if (!tool) return null;
|
|
1504
1500
|
const categoryKey = category ?? "external";
|
|
1505
|
-
const gradient = tool.color ??
|
|
1506
|
-
const categoryPill =
|
|
1507
|
-
const IconComponent =
|
|
1501
|
+
const gradient = tool.color ?? chunk5SCZB5UI_js.CATEGORY_COLORS[categoryKey] ?? chunk5SCZB5UI_js.CATEGORY_COLORS.external;
|
|
1502
|
+
const categoryPill = chunk5SCZB5UI_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunk5SCZB5UI_js.CATEGORY_PILL_COLORS.external;
|
|
1503
|
+
const IconComponent = chunk5SCZB5UI_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
|
|
1508
1504
|
const graph = latestGraphRef.current;
|
|
1509
1505
|
const startNode = graph.nodes.find((n) => n.type === "start");
|
|
1510
1506
|
const endNode = graph.nodes.find((n) => n.type === "end");
|
|
@@ -1515,9 +1511,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1515
1511
|
const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1516
1512
|
/* @__PURE__ */ jsxRuntime.jsx("div", { role: "status", "aria-live": "polite", className: "text-xs", children: dirty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-amber-500 dark:text-amber-400", children: t("subworkflowDrawer.unsavedChanges") }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-emerald-500 dark:text-emerald-400", children: t("subworkflowDrawer.saved") }) }),
|
|
1517
1513
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1518
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1514
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("subworkflowDrawer.cancel") }),
|
|
1519
1515
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1520
|
-
|
|
1516
|
+
chunkMXQ2EYG2_js.Button,
|
|
1521
1517
|
{
|
|
1522
1518
|
type: "button",
|
|
1523
1519
|
color: "ios-teal",
|
|
@@ -1530,7 +1526,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1530
1526
|
] })
|
|
1531
1527
|
] });
|
|
1532
1528
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1533
|
-
|
|
1529
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
1534
1530
|
{
|
|
1535
1531
|
open,
|
|
1536
1532
|
onClose: closeModal,
|
|
@@ -1562,7 +1558,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1562
1558
|
{
|
|
1563
1559
|
type: "button",
|
|
1564
1560
|
onClick: () => setCategory(cat),
|
|
1565
|
-
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${
|
|
1561
|
+
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunk5SCZB5UI_js.CATEGORY_PILL_COLORS[cat] ?? chunk5SCZB5UI_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-slate-500 hover:bg-white/50 dark:bg-white/5 dark:text-slate-400"}`,
|
|
1566
1562
|
children: cat
|
|
1567
1563
|
},
|
|
1568
1564
|
cat
|
|
@@ -1577,13 +1573,14 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1577
1573
|
] })
|
|
1578
1574
|
] }),
|
|
1579
1575
|
onMaximize && tool.toolId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1580
|
-
|
|
1576
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
1581
1577
|
{
|
|
1582
|
-
|
|
1578
|
+
label: t("subworkflowDrawer.openFullEditor"),
|
|
1579
|
+
variant: "ghost",
|
|
1580
|
+
size: "sm",
|
|
1581
|
+
color: "ios-teal",
|
|
1583
1582
|
onClick: () => onMaximize(tool.toolId),
|
|
1584
|
-
|
|
1585
|
-
className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-slate-400 transition-colors hover:bg-white/10 hover:text-teal-500 dark:hover:text-teal-400",
|
|
1586
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowsPointingOutIcon, { className: "h-4 w-4" })
|
|
1583
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowsPointingOutIcon, { className: "h-4 w-4" })
|
|
1587
1584
|
}
|
|
1588
1585
|
)
|
|
1589
1586
|
] }) }),
|
|
@@ -1649,7 +1646,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1649
1646
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
|
|
1650
1647
|
] }),
|
|
1651
1648
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1652
|
-
|
|
1649
|
+
chunk5SCZB5UI_js.WorkflowCanvas,
|
|
1653
1650
|
{
|
|
1654
1651
|
initialGraph,
|
|
1655
1652
|
agents: [],
|
|
@@ -1665,9 +1662,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1665
1662
|
}
|
|
1666
1663
|
function PipelineSettingsModal({ onSave }) {
|
|
1667
1664
|
const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
|
|
1668
|
-
const activeModal =
|
|
1669
|
-
const data =
|
|
1670
|
-
const closeModal =
|
|
1665
|
+
const activeModal = chunk5SCZB5UI_js.useModalStore((s) => s.activeModal);
|
|
1666
|
+
const data = chunk5SCZB5UI_js.useModalStore((s) => s.pipelineSettingsData);
|
|
1667
|
+
const closeModal = chunk5SCZB5UI_js.useModalStore((s) => s.closeModal);
|
|
1671
1668
|
const open = activeModal === "pipeline-settings";
|
|
1672
1669
|
const [nameValue, setNameValue] = react.useState("");
|
|
1673
1670
|
const [descriptionValue, setDescriptionValue] = react.useState("");
|
|
@@ -1718,9 +1715,9 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1718
1715
|
}
|
|
1719
1716
|
};
|
|
1720
1717
|
const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-2", children: [
|
|
1721
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1718
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("cancel") }),
|
|
1722
1719
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1723
|
-
|
|
1720
|
+
chunkMXQ2EYG2_js.Button,
|
|
1724
1721
|
{
|
|
1725
1722
|
type: "button",
|
|
1726
1723
|
onClick: () => {
|
|
@@ -1737,7 +1734,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1737
1734
|
)
|
|
1738
1735
|
] });
|
|
1739
1736
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1740
|
-
|
|
1737
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
1741
1738
|
{
|
|
1742
1739
|
open,
|
|
1743
1740
|
onClose: closeModal,
|
|
@@ -1760,7 +1757,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1760
1757
|
},
|
|
1761
1758
|
children: [
|
|
1762
1759
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1763
|
-
|
|
1760
|
+
chunkFZUV7GNB_js.FormInput,
|
|
1764
1761
|
{
|
|
1765
1762
|
label: t("pipelineName"),
|
|
1766
1763
|
value: nameValue,
|
|
@@ -1770,7 +1767,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1770
1767
|
}
|
|
1771
1768
|
),
|
|
1772
1769
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1773
|
-
|
|
1770
|
+
chunkFZUV7GNB_js.FormTextarea,
|
|
1774
1771
|
{
|
|
1775
1772
|
label: t("pipelineDescription"),
|
|
1776
1773
|
value: descriptionValue,
|
|
@@ -1781,7 +1778,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1781
1778
|
),
|
|
1782
1779
|
lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1783
1780
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1784
|
-
|
|
1781
|
+
chunkFZUV7GNB_js.FormInput,
|
|
1785
1782
|
{
|
|
1786
1783
|
label: t("pipelineSlug", { _: "Slug" }),
|
|
1787
1784
|
value: slugValue,
|
|
@@ -1893,16 +1890,16 @@ function RunReplayModal({
|
|
|
1893
1890
|
}
|
|
1894
1891
|
};
|
|
1895
1892
|
const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
1896
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[11px] text-
|
|
1893
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[11px] text-slate-400", children: [
|
|
1897
1894
|
"run ",
|
|
1898
1895
|
/* @__PURE__ */ jsxRuntime.jsx("code", { children: runId.slice(0, 8) }),
|
|
1899
1896
|
" \xB7 wf ",
|
|
1900
1897
|
/* @__PURE__ */ jsxRuntime.jsx("code", { children: workflowId.slice(0, 8) })
|
|
1901
1898
|
] }),
|
|
1902
1899
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1903
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1900
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: onClose, children: t("cancel") }),
|
|
1904
1901
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1905
|
-
|
|
1902
|
+
chunkMXQ2EYG2_js.Button,
|
|
1906
1903
|
{
|
|
1907
1904
|
type: "submit",
|
|
1908
1905
|
form: "run-replay-form",
|
|
@@ -1917,7 +1914,7 @@ function RunReplayModal({
|
|
|
1917
1914
|
] })
|
|
1918
1915
|
] });
|
|
1919
1916
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1920
|
-
|
|
1917
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
1921
1918
|
{
|
|
1922
1919
|
open,
|
|
1923
1920
|
onClose,
|
|
@@ -1941,7 +1938,7 @@ function RunReplayModal({
|
|
|
1941
1938
|
},
|
|
1942
1939
|
className: "space-y-3",
|
|
1943
1940
|
children: [
|
|
1944
|
-
rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-
|
|
1941
|
+
rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: t("replayNoInputs", { _: "This run had no input variables \u2014 replaying will execute the workflow as-is." }) }) : rows.map((row, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1945
1942
|
RowEditor,
|
|
1946
1943
|
{
|
|
1947
1944
|
row,
|
|
@@ -1963,12 +1960,12 @@ function RowEditor({
|
|
|
1963
1960
|
onReset
|
|
1964
1961
|
}) {
|
|
1965
1962
|
const isJson = row.kind === "json";
|
|
1966
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-
|
|
1963
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-slate-200/60 bg-slate-50/60 p-3 dark:border-white/10 dark:bg-white/5", children: [
|
|
1967
1964
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [
|
|
1968
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs text-
|
|
1965
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs text-slate-700 dark:text-slate-200", children: row.key }),
|
|
1969
1966
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1970
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1971
|
-
row.touched && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1967
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", className: "uppercase tracking-wider", children: row.kind }),
|
|
1968
|
+
row.touched && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: onReset, children: "reset" })
|
|
1972
1969
|
] })
|
|
1973
1970
|
] }),
|
|
1974
1971
|
row.kind === "boolean" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1976,14 +1973,14 @@ function RowEditor({
|
|
|
1976
1973
|
{
|
|
1977
1974
|
value: row.value,
|
|
1978
1975
|
onChange: (event) => onChange({ value: event.target.value }),
|
|
1979
|
-
className: "w-full rounded-lg border border-
|
|
1976
|
+
className: "w-full rounded-lg border border-slate-200/50 bg-white/70 px-3 py-2 text-sm text-slate-900 dark:border-white/10 dark:bg-slate-800/70 dark:text-slate-100",
|
|
1980
1977
|
children: [
|
|
1981
1978
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "true", children: "true" }),
|
|
1982
1979
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "false", children: "false" })
|
|
1983
1980
|
]
|
|
1984
1981
|
}
|
|
1985
1982
|
) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1986
|
-
|
|
1983
|
+
chunkFZUV7GNB_js.FormTextarea,
|
|
1987
1984
|
{
|
|
1988
1985
|
value: row.value,
|
|
1989
1986
|
onValueChange: (v) => onChange({ value: v }),
|
|
@@ -1991,7 +1988,7 @@ function RowEditor({
|
|
|
1991
1988
|
className: "font-mono"
|
|
1992
1989
|
}
|
|
1993
1990
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1994
|
-
|
|
1991
|
+
chunkFZUV7GNB_js.FormInput,
|
|
1995
1992
|
{
|
|
1996
1993
|
type: row.kind === "number" ? "number" : "text",
|
|
1997
1994
|
value: row.value,
|
|
@@ -2095,7 +2092,7 @@ function ExecutionTimelinePanel({
|
|
|
2095
2092
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate font-medium text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2096
2093
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2097
2094
|
] }),
|
|
2098
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2095
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: meta.color, children: [
|
|
2099
2096
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "mr-1 h-3 w-3" }),
|
|
2100
2097
|
labels[entry.status]
|
|
2101
2098
|
] })
|
|
@@ -2125,7 +2122,7 @@ function NodeInspector({
|
|
|
2125
2122
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2126
2123
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2127
2124
|
] }),
|
|
2128
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2125
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: meta.color, children: labels[entry.status] })
|
|
2129
2126
|
] }),
|
|
2130
2127
|
/* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-2 gap-3 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
2131
2128
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -2295,7 +2292,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
|
|
|
2295
2292
|
};
|
|
2296
2293
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
2297
2294
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2298
|
-
|
|
2295
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2299
2296
|
{
|
|
2300
2297
|
label: "Operator",
|
|
2301
2298
|
value: value.operator,
|
|
@@ -2318,7 +2315,7 @@ function SimpleEditor({
|
|
|
2318
2315
|
const isTruthy = value.operator === "truthy";
|
|
2319
2316
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2320
2317
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2321
|
-
|
|
2318
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2322
2319
|
{
|
|
2323
2320
|
label: "Field",
|
|
2324
2321
|
hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.category`",
|
|
@@ -2328,7 +2325,7 @@ function SimpleEditor({
|
|
|
2328
2325
|
}
|
|
2329
2326
|
),
|
|
2330
2327
|
!isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2331
|
-
|
|
2328
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2332
2329
|
{
|
|
2333
2330
|
label: "Value",
|
|
2334
2331
|
hint: "Literal. Numeric operators coerce via `as f64`.",
|
|
@@ -2344,7 +2341,7 @@ function ThresholdEditor({
|
|
|
2344
2341
|
}) {
|
|
2345
2342
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
|
|
2346
2343
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2347
|
-
|
|
2344
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2348
2345
|
{
|
|
2349
2346
|
label: "Field",
|
|
2350
2347
|
value: value.field ?? "",
|
|
@@ -2353,7 +2350,7 @@ function ThresholdEditor({
|
|
|
2353
2350
|
}
|
|
2354
2351
|
),
|
|
2355
2352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2356
|
-
|
|
2353
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2357
2354
|
{
|
|
2358
2355
|
label: "Direction",
|
|
2359
2356
|
value: value.comparison ?? "gte",
|
|
@@ -2367,7 +2364,7 @@ function ThresholdEditor({
|
|
|
2367
2364
|
}
|
|
2368
2365
|
),
|
|
2369
2366
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2370
|
-
|
|
2367
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2371
2368
|
{
|
|
2372
2369
|
label: "Threshold",
|
|
2373
2370
|
type: "number",
|
|
@@ -2384,7 +2381,7 @@ function RegexEditor({
|
|
|
2384
2381
|
}) {
|
|
2385
2382
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2386
2383
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2387
|
-
|
|
2384
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2388
2385
|
{
|
|
2389
2386
|
label: "Field",
|
|
2390
2387
|
value: value.field ?? "",
|
|
@@ -2393,7 +2390,7 @@ function RegexEditor({
|
|
|
2393
2390
|
}
|
|
2394
2391
|
),
|
|
2395
2392
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2396
|
-
|
|
2393
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2397
2394
|
{
|
|
2398
2395
|
label: "Pattern",
|
|
2399
2396
|
hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
|
|
@@ -2421,7 +2418,7 @@ function TimeWindowEditor({
|
|
|
2421
2418
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2422
2419
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2423
2420
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2424
|
-
|
|
2421
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2425
2422
|
{
|
|
2426
2423
|
label: "Timezone",
|
|
2427
2424
|
value: value.timezone ?? "UTC",
|
|
@@ -2430,7 +2427,7 @@ function TimeWindowEditor({
|
|
|
2430
2427
|
}
|
|
2431
2428
|
),
|
|
2432
2429
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2433
|
-
|
|
2430
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2434
2431
|
{
|
|
2435
2432
|
label: "Timestamp field (optional)",
|
|
2436
2433
|
hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
|
|
@@ -2443,7 +2440,7 @@ function TimeWindowEditor({
|
|
|
2443
2440
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2444
2441
|
windows.map((win, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2 rounded-lg border border-slate-200 p-2 dark:border-slate-700", children: [
|
|
2445
2442
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2446
|
-
|
|
2443
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2447
2444
|
{
|
|
2448
2445
|
label: `Start (hour)`,
|
|
2449
2446
|
type: "number",
|
|
@@ -2454,7 +2451,7 @@ function TimeWindowEditor({
|
|
|
2454
2451
|
}
|
|
2455
2452
|
),
|
|
2456
2453
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2457
|
-
|
|
2454
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2458
2455
|
{
|
|
2459
2456
|
label: `End (hour)`,
|
|
2460
2457
|
type: "number",
|
|
@@ -2464,9 +2461,9 @@ function TimeWindowEditor({
|
|
|
2464
2461
|
onValueChange: (raw) => update(index, { endHour: clampHour(raw, 24) })
|
|
2465
2462
|
}
|
|
2466
2463
|
),
|
|
2467
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2464
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2468
2465
|
] }, index)),
|
|
2469
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2466
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
|
|
2470
2467
|
] })
|
|
2471
2468
|
] });
|
|
2472
2469
|
}
|
|
@@ -2489,7 +2486,7 @@ function BooleanGroupEditor({
|
|
|
2489
2486
|
});
|
|
2490
2487
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2491
2488
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2492
|
-
|
|
2489
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2493
2490
|
{
|
|
2494
2491
|
label: "Combinator",
|
|
2495
2492
|
value: value.combinator ?? "and",
|
|
@@ -2507,9 +2504,9 @@ function BooleanGroupEditor({
|
|
|
2507
2504
|
depth
|
|
2508
2505
|
}
|
|
2509
2506
|
),
|
|
2510
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2507
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
|
|
2511
2508
|
] }, index)),
|
|
2512
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2509
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
|
|
2513
2510
|
] })
|
|
2514
2511
|
] });
|
|
2515
2512
|
}
|
|
@@ -2545,7 +2542,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2545
2542
|
};
|
|
2546
2543
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
2547
2544
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2548
|
-
|
|
2545
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2549
2546
|
{
|
|
2550
2547
|
label: "Action type",
|
|
2551
2548
|
value: type,
|
|
@@ -2555,7 +2552,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2555
2552
|
),
|
|
2556
2553
|
type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2557
2554
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2558
|
-
|
|
2555
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2559
2556
|
{
|
|
2560
2557
|
label: "Multiplier",
|
|
2561
2558
|
type: "number",
|
|
@@ -2565,7 +2562,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2565
2562
|
}
|
|
2566
2563
|
),
|
|
2567
2564
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2568
|
-
|
|
2565
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2569
2566
|
{
|
|
2570
2567
|
label: "Reason code",
|
|
2571
2568
|
value: stringParam(params.reason),
|
|
@@ -2575,7 +2572,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2575
2572
|
)
|
|
2576
2573
|
] }),
|
|
2577
2574
|
type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2578
|
-
|
|
2575
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2579
2576
|
{
|
|
2580
2577
|
label: "Floor (fraction, e.g. 0.08)",
|
|
2581
2578
|
type: "number",
|
|
@@ -2585,7 +2582,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2585
2582
|
}
|
|
2586
2583
|
),
|
|
2587
2584
|
type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2588
|
-
|
|
2585
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2589
2586
|
{
|
|
2590
2587
|
label: "Tolerance (fraction)",
|
|
2591
2588
|
type: "number",
|
|
@@ -2595,7 +2592,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2595
2592
|
}
|
|
2596
2593
|
),
|
|
2597
2594
|
type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2598
|
-
|
|
2595
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2599
2596
|
{
|
|
2600
2597
|
label: "Approval limit (fraction)",
|
|
2601
2598
|
type: "number",
|
|
@@ -2605,7 +2602,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2605
2602
|
}
|
|
2606
2603
|
),
|
|
2607
2604
|
type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2608
|
-
|
|
2605
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2609
2606
|
{
|
|
2610
2607
|
label: "Step (e.g. 0.009)",
|
|
2611
2608
|
type: "number",
|
|
@@ -2616,7 +2613,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2616
2613
|
),
|
|
2617
2614
|
type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2618
2615
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2619
|
-
|
|
2616
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2620
2617
|
{
|
|
2621
2618
|
label: "Channel",
|
|
2622
2619
|
value: stringParam(params.channel),
|
|
@@ -2625,7 +2622,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2625
2622
|
}
|
|
2626
2623
|
),
|
|
2627
2624
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2628
|
-
|
|
2625
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2629
2626
|
{
|
|
2630
2627
|
label: "Severity",
|
|
2631
2628
|
value: stringParam(params.severity),
|
|
@@ -2663,7 +2660,7 @@ function CustomParamsEditor({
|
|
|
2663
2660
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2664
2661
|
entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
|
|
2665
2662
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2666
|
-
|
|
2663
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2667
2664
|
{
|
|
2668
2665
|
label: "Key",
|
|
2669
2666
|
value: key,
|
|
@@ -2671,16 +2668,16 @@ function CustomParamsEditor({
|
|
|
2671
2668
|
}
|
|
2672
2669
|
),
|
|
2673
2670
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2674
|
-
|
|
2671
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2675
2672
|
{
|
|
2676
2673
|
label: "Value",
|
|
2677
2674
|
value: String(value ?? ""),
|
|
2678
2675
|
onValueChange: (raw) => update(index, key, raw)
|
|
2679
2676
|
}
|
|
2680
2677
|
),
|
|
2681
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2678
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2682
2679
|
] }, index)),
|
|
2683
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2680
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
|
|
2684
2681
|
] });
|
|
2685
2682
|
}
|
|
2686
2683
|
function numberParam(value, fallback) {
|
|
@@ -2710,9 +2707,9 @@ function RuleForm({ value, onChange }) {
|
|
|
2710
2707
|
);
|
|
2711
2708
|
const update = (key, v) => onChange({ ...value, [key]: v });
|
|
2712
2709
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
2713
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2710
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFZUV7GNB_js.FormGrid, { children: [
|
|
2714
2711
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2715
|
-
|
|
2712
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2716
2713
|
{
|
|
2717
2714
|
label: "Name",
|
|
2718
2715
|
required: true,
|
|
@@ -2721,7 +2718,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2721
2718
|
}
|
|
2722
2719
|
),
|
|
2723
2720
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2724
|
-
|
|
2721
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2725
2722
|
{
|
|
2726
2723
|
label: "Priority",
|
|
2727
2724
|
type: "number",
|
|
@@ -2731,7 +2728,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2731
2728
|
}
|
|
2732
2729
|
),
|
|
2733
2730
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2734
|
-
|
|
2731
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2735
2732
|
{
|
|
2736
2733
|
label: "Enabled",
|
|
2737
2734
|
value: value.enabled ? "true" : "false",
|
|
@@ -2743,7 +2740,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2743
2740
|
}
|
|
2744
2741
|
),
|
|
2745
2742
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2746
|
-
|
|
2743
|
+
chunkFZUV7GNB_js.FormTextarea,
|
|
2747
2744
|
{
|
|
2748
2745
|
label: "Description",
|
|
2749
2746
|
rows: 2,
|
|
@@ -2755,7 +2752,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2755
2752
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2756
2753
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2757
2754
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Condition" }),
|
|
2758
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2755
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "indigo", children: value.condition.operator })
|
|
2759
2756
|
] }),
|
|
2760
2757
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2761
2758
|
RuleConditionBuilder,
|
|
@@ -2768,7 +2765,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2768
2765
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2769
2766
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2770
2767
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Action on match" }),
|
|
2771
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2768
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "fuchsia", children: value.action.type })
|
|
2772
2769
|
] }),
|
|
2773
2770
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2774
2771
|
RuleActionBuilder,
|
|
@@ -2790,7 +2787,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2790
2787
|
),
|
|
2791
2788
|
showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2792
2789
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2793
|
-
|
|
2790
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2794
2791
|
{
|
|
2795
2792
|
label: "Valid from (ISO 8601)",
|
|
2796
2793
|
type: "datetime-local",
|
|
@@ -2799,7 +2796,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2799
2796
|
}
|
|
2800
2797
|
),
|
|
2801
2798
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2802
|
-
|
|
2799
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2803
2800
|
{
|
|
2804
2801
|
label: "Valid until (ISO 8601)",
|
|
2805
2802
|
type: "datetime-local",
|
|
@@ -2808,7 +2805,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2808
2805
|
}
|
|
2809
2806
|
),
|
|
2810
2807
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2811
|
-
|
|
2808
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2812
2809
|
{
|
|
2813
2810
|
label: "Status",
|
|
2814
2811
|
value: value.status ?? "active",
|
|
@@ -2817,7 +2814,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2817
2814
|
}
|
|
2818
2815
|
),
|
|
2819
2816
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2820
|
-
|
|
2817
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2821
2818
|
{
|
|
2822
2819
|
label: "Tags (comma-separated)",
|
|
2823
2820
|
value: (value.tags ?? []).join(", "),
|
|
@@ -3004,8 +3001,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
|
|
|
3004
3001
|
] });
|
|
3005
3002
|
}
|
|
3006
3003
|
function LogicNodeItemCard({ item, translationFunction }) {
|
|
3007
|
-
const IconComponent =
|
|
3008
|
-
const gradient =
|
|
3004
|
+
const IconComponent = chunk5SCZB5UI_js.LOGIC_ICON_MAP[item.nodeType];
|
|
3005
|
+
const gradient = chunk5SCZB5UI_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-slate-400 to-slate-500";
|
|
3009
3006
|
const defaultConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig(item.nodeType);
|
|
3010
3007
|
const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
|
|
3011
3008
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3076,7 +3073,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3076
3073
|
[entityTypes, normalizedQuery]
|
|
3077
3074
|
);
|
|
3078
3075
|
const filteredLogicItems = react.useMemo(() => {
|
|
3079
|
-
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !
|
|
3076
|
+
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunk5SCZB5UI_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
|
|
3080
3077
|
if (!normalizedQuery) return visibleByDefault;
|
|
3081
3078
|
return visibleByDefault.filter(
|
|
3082
3079
|
(item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
|
|
@@ -3181,7 +3178,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3181
3178
|
" models"
|
|
3182
3179
|
] })
|
|
3183
3180
|
] }),
|
|
3184
|
-
provider.configured ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3181
|
+
provider.configured ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "emerald", size: "xs", children: t("configured") }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "amber", size: "xs", children: t("setup") })
|
|
3185
3182
|
]
|
|
3186
3183
|
},
|
|
3187
3184
|
provider.id
|
|
@@ -3212,7 +3209,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3212
3209
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: tool.category })
|
|
3213
3210
|
] }),
|
|
3214
3211
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3215
|
-
|
|
3212
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
3216
3213
|
{
|
|
3217
3214
|
checked: Boolean(tool.enabled),
|
|
3218
3215
|
onChange: () => {
|
|
@@ -3253,7 +3250,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3253
3250
|
] })
|
|
3254
3251
|
] }),
|
|
3255
3252
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3256
|
-
|
|
3253
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
3257
3254
|
{
|
|
3258
3255
|
checked: Boolean(rule.enabled),
|
|
3259
3256
|
onChange: () => {
|
|
@@ -3289,8 +3286,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3289
3286
|
limit: entity.defaultLimit
|
|
3290
3287
|
});
|
|
3291
3288
|
const dsLogo = getDatasourceLogo(entity.id);
|
|
3292
|
-
const EntityIcon =
|
|
3293
|
-
const entityGradient =
|
|
3289
|
+
const EntityIcon = chunk5SCZB5UI_js.getEntityIcon(entity.id);
|
|
3290
|
+
const entityGradient = chunk5SCZB5UI_js.getEntityGradient(entity.id);
|
|
3294
3291
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3295
3292
|
"div",
|
|
3296
3293
|
{
|
|
@@ -3308,9 +3305,9 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3308
3305
|
] })
|
|
3309
3306
|
] }),
|
|
3310
3307
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3311
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3308
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: "Read only" }),
|
|
3312
3309
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3313
|
-
|
|
3310
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
3314
3311
|
{
|
|
3315
3312
|
checked: true,
|
|
3316
3313
|
onChange: () => {
|
|
@@ -3406,22 +3403,19 @@ function WorkflowListBar({
|
|
|
3406
3403
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-[10px] text-gray-400 dark:text-gray-500", children: workflow.updatedAt ? formatRelativeTime(typeof workflow.updatedAt === "string" ? workflow.updatedAt : workflow.updatedAt.toISOString()) : "" })
|
|
3407
3404
|
] }),
|
|
3408
3405
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100", children: [
|
|
3409
|
-
onConvertToSubworkflow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3410
|
-
|
|
3406
|
+
onConvertToSubworkflow && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3407
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
3411
3408
|
{
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
|
|
3417
|
-
|
|
3418
|
-
"aria-label": `${tWorkflow("convertToSubworkflow")} ${workflow.name}`,
|
|
3419
|
-
title: tWorkflow("convertToSubworkflow"),
|
|
3420
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5" })
|
|
3409
|
+
label: `${tWorkflow("convertToSubworkflow")} ${workflow.name}`,
|
|
3410
|
+
variant: "ghost",
|
|
3411
|
+
size: "sm",
|
|
3412
|
+
color: "ios-teal",
|
|
3413
|
+
onClick: () => onConvertToSubworkflow(workflow),
|
|
3414
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5" })
|
|
3421
3415
|
}
|
|
3422
|
-
),
|
|
3416
|
+
) }),
|
|
3423
3417
|
workflows.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3424
|
-
|
|
3418
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
3425
3419
|
{
|
|
3426
3420
|
label: `${tWorkflow("deleteWorkflow")} ${workflow.name}`,
|
|
3427
3421
|
variant: "ghost",
|
|
@@ -3510,7 +3504,7 @@ function VersionHistoryPanel({
|
|
|
3510
3504
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") })
|
|
3511
3505
|
] }),
|
|
3512
3506
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3513
|
-
|
|
3507
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
3514
3508
|
{
|
|
3515
3509
|
label: translations("close"),
|
|
3516
3510
|
variant: "ghost",
|
|
@@ -3525,7 +3519,7 @@ function VersionHistoryPanel({
|
|
|
3525
3519
|
isLoading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", "data-testid": "version-history-loading", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-6 w-6 animate-spin motion-reduce:animate-none rounded-full border-2 border-blue-500 border-t-transparent" }) }),
|
|
3526
3520
|
loadError && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-8 text-center", "data-testid": "version-history-error", children: [
|
|
3527
3521
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-500 dark:text-red-400", children: loadError }),
|
|
3528
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3522
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: loadVersions, children: translations("retry") })
|
|
3529
3523
|
] }),
|
|
3530
3524
|
!isLoading && !loadError && versions.length === 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-12 text-center", "data-testid": "version-history-empty", children: [
|
|
3531
3525
|
/* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "mx-auto h-8 w-8 text-slate-300 dark:text-slate-600" }),
|
|
@@ -3544,7 +3538,7 @@ function VersionHistoryPanel({
|
|
|
3544
3538
|
"v",
|
|
3545
3539
|
version.version
|
|
3546
3540
|
] }),
|
|
3547
|
-
isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3541
|
+
isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "blue", size: "xs", children: translations("current") })
|
|
3548
3542
|
] }) }),
|
|
3549
3543
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
3550
3544
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: formatTimestamp3(version.publishedAt) }),
|
|
@@ -3565,7 +3559,7 @@ function VersionHistoryPanel({
|
|
|
3565
3559
|
] }),
|
|
3566
3560
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex gap-2", children: [
|
|
3567
3561
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3568
|
-
|
|
3562
|
+
chunkMXQ2EYG2_js.Button,
|
|
3569
3563
|
{
|
|
3570
3564
|
type: "button",
|
|
3571
3565
|
outline: true,
|
|
@@ -3579,7 +3573,7 @@ function VersionHistoryPanel({
|
|
|
3579
3573
|
}
|
|
3580
3574
|
),
|
|
3581
3575
|
!isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3582
|
-
|
|
3576
|
+
chunkMXQ2EYG2_js.Button,
|
|
3583
3577
|
{
|
|
3584
3578
|
type: "button",
|
|
3585
3579
|
outline: true,
|
|
@@ -3638,9 +3632,9 @@ function formatDuration2(durationMs) {
|
|
|
3638
3632
|
}
|
|
3639
3633
|
function RunPanel({ open, onClose, onRun, onStop }) {
|
|
3640
3634
|
const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.runPanel");
|
|
3641
|
-
const nodes =
|
|
3642
|
-
const isRunning =
|
|
3643
|
-
const nodeResults =
|
|
3635
|
+
const nodes = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodes);
|
|
3636
|
+
const isRunning = chunk5SCZB5UI_js.useWorkflowStore((state) => state.isRunning);
|
|
3637
|
+
const nodeResults = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodeResults);
|
|
3644
3638
|
const startNode = nodes.find((node) => node.type === "start");
|
|
3645
3639
|
const hasEndNode = nodes.some((node) => node.type === "end");
|
|
3646
3640
|
const hasValidStartConfig = Boolean(
|
|
@@ -3680,7 +3674,7 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3680
3674
|
] }),
|
|
3681
3675
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3682
3676
|
isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3683
|
-
|
|
3677
|
+
chunkMXQ2EYG2_js.Button,
|
|
3684
3678
|
{
|
|
3685
3679
|
type: "button",
|
|
3686
3680
|
destructive: true,
|
|
@@ -3693,7 +3687,7 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3693
3687
|
]
|
|
3694
3688
|
}
|
|
3695
3689
|
) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3696
|
-
|
|
3690
|
+
chunkMXQ2EYG2_js.Button,
|
|
3697
3691
|
{
|
|
3698
3692
|
type: "button",
|
|
3699
3693
|
color: "ios-green",
|
|
@@ -3708,7 +3702,7 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3708
3702
|
}
|
|
3709
3703
|
),
|
|
3710
3704
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3711
|
-
|
|
3705
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
3712
3706
|
{
|
|
3713
3707
|
label: translations("close"),
|
|
3714
3708
|
variant: "ghost",
|
|
@@ -3974,8 +3968,8 @@ function inferVariables(config, nodeType) {
|
|
|
3974
3968
|
}
|
|
3975
3969
|
function VariableInspector({ open, onClose }) {
|
|
3976
3970
|
const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.variableInspector");
|
|
3977
|
-
const nodes =
|
|
3978
|
-
const edges =
|
|
3971
|
+
const nodes = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodes);
|
|
3972
|
+
const edges = chunk5SCZB5UI_js.useWorkflowStore((state) => state.edges);
|
|
3979
3973
|
const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
|
|
3980
3974
|
const toggleNodeExpansion = react.useCallback((nodeId) => {
|
|
3981
3975
|
setExpandedNodes((current) => {
|
|
@@ -4022,7 +4016,7 @@ function VariableInspector({ open, onClose }) {
|
|
|
4022
4016
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") })
|
|
4023
4017
|
] }),
|
|
4024
4018
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4025
|
-
|
|
4019
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
4026
4020
|
{
|
|
4027
4021
|
label: translations("close"),
|
|
4028
4022
|
variant: "ghost",
|
|
@@ -4038,8 +4032,8 @@ function VariableInspector({ open, onClose }) {
|
|
|
4038
4032
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400", children: translations("noNodes") })
|
|
4039
4033
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-slate-100 dark:divide-slate-800", children: nodeVariableEntries.map((entry) => {
|
|
4040
4034
|
const isExpanded = expandedNodes.has(entry.nodeId);
|
|
4041
|
-
const IconComponent =
|
|
4042
|
-
const gradient =
|
|
4035
|
+
const IconComponent = chunk5SCZB5UI_js.LOGIC_ICON_MAP[entry.nodeType];
|
|
4036
|
+
const gradient = chunk5SCZB5UI_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-slate-400 to-slate-500";
|
|
4043
4037
|
const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
|
|
4044
4038
|
const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
|
|
4045
4039
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
|
|
@@ -4105,7 +4099,7 @@ function RunInputDialog({
|
|
|
4105
4099
|
onRun
|
|
4106
4100
|
}) {
|
|
4107
4101
|
const t = chunkY5VN4SPH_js.useTranslations("agents.workflow.runInputDialog");
|
|
4108
|
-
const nodes =
|
|
4102
|
+
const nodes = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodes);
|
|
4109
4103
|
const [values, setValues] = react.useState({});
|
|
4110
4104
|
const inputVariableNames = react.useMemo(() => {
|
|
4111
4105
|
const storeStartNode = nodes.find((node) => node.type === "start");
|
|
@@ -4132,7 +4126,7 @@ function RunInputDialog({
|
|
|
4132
4126
|
}, [onClose]);
|
|
4133
4127
|
if (!open) return null;
|
|
4134
4128
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4135
|
-
|
|
4129
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
4136
4130
|
{
|
|
4137
4131
|
open,
|
|
4138
4132
|
onClose: handleClose,
|
|
@@ -4143,7 +4137,7 @@ function RunInputDialog({
|
|
|
4143
4137
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: inputVariableNames.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-sm text-gray-500 dark:text-gray-400", children: t("noInputs") }) : inputVariableNames.map((variableName) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4144
4138
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
|
|
4145
4139
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4146
|
-
|
|
4140
|
+
chunkFZUV7GNB_js.Input,
|
|
4147
4141
|
{
|
|
4148
4142
|
value: values[variableName] ?? "",
|
|
4149
4143
|
onChange: (event) => handleValueChange(variableName, event.target.value),
|
|
@@ -4152,8 +4146,8 @@ function RunInputDialog({
|
|
|
4152
4146
|
)
|
|
4153
4147
|
] }, variableName)) }),
|
|
4154
4148
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [
|
|
4155
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4156
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4149
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
|
|
4150
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
|
|
4157
4151
|
/* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
|
|
4158
4152
|
t("run")
|
|
4159
4153
|
] })
|
|
@@ -4186,8 +4180,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4186
4180
|
const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
|
|
4187
4181
|
const [selectedRun, setSelectedRun] = react.useState(null);
|
|
4188
4182
|
const [selectedNode, setSelectedNode] = react.useState(null);
|
|
4189
|
-
const isRunning =
|
|
4190
|
-
const nodeResults =
|
|
4183
|
+
const isRunning = chunk5SCZB5UI_js.useWorkflowStore((state) => state.isRunning);
|
|
4184
|
+
const nodeResults = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodeResults);
|
|
4191
4185
|
const refreshRuns = react.useCallback(async () => {
|
|
4192
4186
|
setIsLoadingRuns(true);
|
|
4193
4187
|
try {
|
|
@@ -4210,7 +4204,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4210
4204
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between border-b px-4 py-3", children: [
|
|
4211
4205
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: t("title") }),
|
|
4212
4206
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4213
|
-
|
|
4207
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
4214
4208
|
{
|
|
4215
4209
|
label: t("close"),
|
|
4216
4210
|
variant: "ghost",
|
|
@@ -4241,7 +4235,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4241
4235
|
selectedNode && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider border-b px-4 py-3", children: [
|
|
4242
4236
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
4243
4237
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: t("nodeDetail") }),
|
|
4244
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4238
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: () => setSelectedNode(null), children: t("close") })
|
|
4245
4239
|
] }),
|
|
4246
4240
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-xs", children: [
|
|
4247
4241
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
|
|
@@ -4366,7 +4360,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4366
4360
|
onAutoSaveGraph(graph);
|
|
4367
4361
|
}, [onAutoSaveGraph, onGraphSnapshot]);
|
|
4368
4362
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4369
|
-
|
|
4363
|
+
chunk5SCZB5UI_js.Workspace,
|
|
4370
4364
|
{
|
|
4371
4365
|
...workspaceProps,
|
|
4372
4366
|
onGraphChange: handleGraphChange
|
|
@@ -4374,7 +4368,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4374
4368
|
);
|
|
4375
4369
|
});
|
|
4376
4370
|
function DynamicIslandConfirm2(props) {
|
|
4377
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4371
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFZUV7GNB_js.DynamicIslandConfirm, { ...props });
|
|
4378
4372
|
}
|
|
4379
4373
|
var JSON_PREVIEW_LINE_LIMIT = 50;
|
|
4380
4374
|
function DslExportModal({ open, onClose, workflow, graph }) {
|
|
@@ -4428,7 +4422,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4428
4422
|
}, [jsonString, workflow.name, workflow.version]);
|
|
4429
4423
|
if (!open) return null;
|
|
4430
4424
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4431
|
-
|
|
4425
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
4432
4426
|
{
|
|
4433
4427
|
open,
|
|
4434
4428
|
onClose,
|
|
@@ -4470,7 +4464,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4470
4464
|
] }),
|
|
4471
4465
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-slate-200 px-1 py-4 dark:border-slate-700", children: [
|
|
4472
4466
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4473
|
-
|
|
4467
|
+
chunkMXQ2EYG2_js.Button,
|
|
4474
4468
|
{
|
|
4475
4469
|
type: "button",
|
|
4476
4470
|
onClick: handleCopyToClipboard,
|
|
@@ -4487,7 +4481,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4487
4481
|
}
|
|
4488
4482
|
),
|
|
4489
4483
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4490
|
-
|
|
4484
|
+
chunkMXQ2EYG2_js.Button,
|
|
4491
4485
|
{
|
|
4492
4486
|
type: "button",
|
|
4493
4487
|
onClick: handleDownloadJson,
|
|
@@ -4646,7 +4640,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4646
4640
|
}, []);
|
|
4647
4641
|
if (!open) return null;
|
|
4648
4642
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4649
|
-
|
|
4643
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
4650
4644
|
{
|
|
4651
4645
|
open,
|
|
4652
4646
|
onClose,
|
|
@@ -4661,15 +4655,15 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4661
4655
|
onDragLeave: handleDragLeave,
|
|
4662
4656
|
onDrop: handleDrop,
|
|
4663
4657
|
onClick: handleClickUpload,
|
|
4664
|
-
className: `cursor-pointer rounded-xl border-2 border-dashed p-8 text-center transition-colors duration-200 ${isDragActive ? "border-blue-400 bg-blue-50 dark:border-blue-500 dark:bg-blue-500/10" : "border-
|
|
4658
|
+
className: `cursor-pointer rounded-xl border-2 border-dashed p-8 text-center transition-colors duration-200 ${isDragActive ? "border-blue-400 bg-blue-50 dark:border-blue-500 dark:bg-blue-500/10" : "border-slate-300 hover:border-slate-400 dark:border-slate-600 dark:hover:border-slate-500"}`,
|
|
4665
4659
|
"data-testid": "import-dropzone",
|
|
4666
4660
|
role: "button",
|
|
4667
4661
|
tabIndex: 0,
|
|
4668
4662
|
"aria-label": translations("dropzone"),
|
|
4669
4663
|
children: [
|
|
4670
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.ArrowUpTrayIcon, { className: "mx-auto h-10 w-10 text-
|
|
4671
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm font-medium text-
|
|
4672
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-
|
|
4664
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.ArrowUpTrayIcon, { className: "mx-auto h-10 w-10 text-slate-400 dark:text-slate-500" }),
|
|
4665
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm font-medium text-slate-700 dark:text-slate-300", children: translations("dropzone") }),
|
|
4666
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: translations("dropzoneHint") }),
|
|
4673
4667
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4674
4668
|
"input",
|
|
4675
4669
|
{
|
|
@@ -4685,8 +4679,8 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4685
4679
|
}
|
|
4686
4680
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "import-validation-result", children: [
|
|
4687
4681
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center justify-between", children: [
|
|
4688
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-
|
|
4689
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4682
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-slate-700 dark:text-slate-300", children: fileName }),
|
|
4683
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
|
|
4690
4684
|
] }),
|
|
4691
4685
|
validationResult.isValid ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-green-200 bg-green-50 p-4 dark:border-green-800 dark:bg-green-900/20", children: [
|
|
4692
4686
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -4713,10 +4707,10 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4713
4707
|
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-2 space-y-1", children: validationResult.errors.map((validationError, index) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "text-xs text-red-600 dark:text-red-400", children: validationError }, index)) })
|
|
4714
4708
|
] })
|
|
4715
4709
|
] }) }),
|
|
4716
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-
|
|
4717
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4710
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-slate-200 px-1 py-4 dark:border-slate-700", children: [
|
|
4711
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
|
|
4718
4712
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4719
|
-
|
|
4713
|
+
chunkMXQ2EYG2_js.Button,
|
|
4720
4714
|
{
|
|
4721
4715
|
type: "button",
|
|
4722
4716
|
onClick: handleImport,
|
|
@@ -4737,14 +4731,14 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4737
4731
|
}
|
|
4738
4732
|
|
|
4739
4733
|
// src/astrlabe/store/selectors.ts
|
|
4740
|
-
var useCanUndo = () =>
|
|
4741
|
-
var useCanRedo = () =>
|
|
4742
|
-
var useHasCopied = () =>
|
|
4743
|
-
var useContextMenu = () =>
|
|
4744
|
-
var useEditingNodeId = () =>
|
|
4745
|
-
var useSelectedNodeCount = () =>
|
|
4746
|
-
var useIsRunning = () =>
|
|
4747
|
-
var useNodeResults = () =>
|
|
4734
|
+
var useCanUndo = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.past.length > 0);
|
|
4735
|
+
var useCanRedo = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.future.length > 0);
|
|
4736
|
+
var useHasCopied = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.clipboard !== null);
|
|
4737
|
+
var useContextMenu = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.contextMenu);
|
|
4738
|
+
var useEditingNodeId = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.editingNodeId);
|
|
4739
|
+
var useSelectedNodeCount = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
|
|
4740
|
+
var useIsRunning = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.isRunning);
|
|
4741
|
+
var useNodeResults = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodeResults);
|
|
4748
4742
|
var DEFAULT_MAX_HISTORY = 50;
|
|
4749
4743
|
function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
|
|
4750
4744
|
const pastRef = react.useRef([]);
|
|
@@ -5068,5 +5062,5 @@ exports.useNodeResults = useNodeResults;
|
|
|
5068
5062
|
exports.useSelectedNodeCount = useSelectedNodeCount;
|
|
5069
5063
|
exports.useSubworkflowStore = useSubworkflowStore;
|
|
5070
5064
|
exports.useUndoRedo = useUndoRedo;
|
|
5071
|
-
//# sourceMappingURL=chunk-
|
|
5072
|
-
//# sourceMappingURL=chunk-
|
|
5065
|
+
//# sourceMappingURL=chunk-ZIRD3X6G.js.map
|
|
5066
|
+
//# sourceMappingURL=chunk-ZIRD3X6G.js.map
|