@datatechsolutions/ui 3.11.0 → 3.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astrlabe/index.js +109 -109
- package/dist/astrlabe/index.mjs +5 -5
- package/dist/astrlabe/workflow-canvas.js +5 -5
- package/dist/astrlabe/workflow-canvas.mjs +4 -4
- package/dist/{chunk-ZUU7G3PC.js → chunk-22XPYFHJ.js} +2 -2
- package/dist/chunk-22XPYFHJ.js.map +1 -0
- package/dist/{chunk-6TKCMQ75.js → chunk-3BFQ3SVG.js} +68 -68
- package/dist/{chunk-6TKCMQ75.js.map → chunk-3BFQ3SVG.js.map} +1 -1
- package/dist/{chunk-BO3RXG6M.js → chunk-3J4E2THD.js} +45 -45
- package/dist/{chunk-BO3RXG6M.js.map → chunk-3J4E2THD.js.map} +1 -1
- package/dist/{chunk-HUAWGBYL.mjs → chunk-4PUVECVF.mjs} +3 -3
- package/dist/{chunk-HUAWGBYL.mjs.map → chunk-4PUVECVF.mjs.map} +1 -1
- package/dist/{chunk-G52HXPSB.js → chunk-5JS3UFBF.js} +13 -13
- package/dist/{chunk-G52HXPSB.js.map → chunk-5JS3UFBF.js.map} +1 -1
- package/dist/{chunk-BCJATFZE.js → chunk-5NKGJV72.js} +25 -25
- package/dist/{chunk-BCJATFZE.js.map → chunk-5NKGJV72.js.map} +1 -1
- package/dist/{chunk-ZJMYLUZ2.mjs → chunk-5TJR3VJ6.mjs} +85 -73
- package/dist/chunk-5TJR3VJ6.mjs.map +1 -0
- package/dist/{chunk-PHBZ3TXE.js → chunk-5Y67PZWC.js} +4 -4
- package/dist/{chunk-PHBZ3TXE.js.map → chunk-5Y67PZWC.js.map} +1 -1
- package/dist/{chunk-ZGVN23J4.js → chunk-6R5Z2IQ5.js} +5 -5
- package/dist/{chunk-ZGVN23J4.js.map → chunk-6R5Z2IQ5.js.map} +1 -1
- package/dist/{chunk-7V7WEXHS.mjs → chunk-AVLOGVVA.mjs} +3 -3
- package/dist/{chunk-7V7WEXHS.mjs.map → chunk-AVLOGVVA.mjs.map} +1 -1
- package/dist/{chunk-JTD3BBVI.js → chunk-BGLYJ7GR.js} +35 -35
- package/dist/{chunk-JTD3BBVI.js.map → chunk-BGLYJ7GR.js.map} +1 -1
- package/dist/{chunk-35P352JX.mjs → chunk-D5FL3ZHC.mjs} +3 -3
- package/dist/{chunk-35P352JX.mjs.map → chunk-D5FL3ZHC.mjs.map} +1 -1
- package/dist/{chunk-Z6FZQOTW.js → chunk-GDVB7QDZ.js} +28 -28
- package/dist/{chunk-Z6FZQOTW.js.map → chunk-GDVB7QDZ.js.map} +1 -1
- package/dist/{chunk-35O2X7WY.js → chunk-HLIMHIRH.js} +9 -9
- package/dist/{chunk-35O2X7WY.js.map → chunk-HLIMHIRH.js.map} +1 -1
- package/dist/{chunk-3US2QXEF.mjs → chunk-JBXNEOFB.mjs} +3 -3
- package/dist/{chunk-3US2QXEF.mjs.map → chunk-JBXNEOFB.mjs.map} +1 -1
- package/dist/{chunk-K4AJL4BH.mjs → chunk-JXROBMRU.mjs} +3 -3
- package/dist/{chunk-K4AJL4BH.mjs.map → chunk-JXROBMRU.mjs.map} +1 -1
- package/dist/{chunk-37FWIPYO.mjs → chunk-KGC5CRS7.mjs} +3 -3
- package/dist/{chunk-37FWIPYO.mjs.map → chunk-KGC5CRS7.mjs.map} +1 -1
- package/dist/{chunk-7KPMLHPR.mjs → chunk-LBCUQ4FY.mjs} +3 -3
- package/dist/{chunk-7KPMLHPR.mjs.map → chunk-LBCUQ4FY.mjs.map} +1 -1
- package/dist/{chunk-7MPIYSRH.js → chunk-LW2LFJZ7.js} +66 -64
- package/dist/chunk-LW2LFJZ7.js.map +1 -0
- package/dist/{chunk-KTEEXEAX.mjs → chunk-M64U336M.mjs} +6 -6
- package/dist/{chunk-KTEEXEAX.mjs.map → chunk-M64U336M.mjs.map} +1 -1
- package/dist/{chunk-O2CUOJ74.js → chunk-MCHTZ63Q.js} +4 -4
- package/dist/{chunk-O2CUOJ74.js.map → chunk-MCHTZ63Q.js.map} +1 -1
- package/dist/{chunk-GTJGX7IZ.js → chunk-N5FWIT7N.js} +10 -10
- package/dist/{chunk-GTJGX7IZ.js.map → chunk-N5FWIT7N.js.map} +1 -1
- package/dist/{chunk-NM3YTQ26.mjs → chunk-N7T4X6A7.mjs} +3 -3
- package/dist/{chunk-NM3YTQ26.mjs.map → chunk-N7T4X6A7.mjs.map} +1 -1
- package/dist/{chunk-IGOMJHC6.mjs → chunk-NBW6WJQT.mjs} +2 -2
- package/dist/chunk-NBW6WJQT.mjs.map +1 -0
- package/dist/{chunk-7D52TFVL.mjs → chunk-NDGYIHJ3.mjs} +3 -3
- package/dist/{chunk-7D52TFVL.mjs.map → chunk-NDGYIHJ3.mjs.map} +1 -1
- package/dist/{chunk-NRVV4PHB.mjs → chunk-OZEOBZOW.mjs} +10 -8
- package/dist/chunk-OZEOBZOW.mjs.map +1 -0
- package/dist/{chunk-R3CGJK7D.mjs → chunk-RUWUH7DW.mjs} +3 -3
- package/dist/{chunk-R3CGJK7D.mjs.map → chunk-RUWUH7DW.mjs.map} +1 -1
- package/dist/{chunk-62BD4WLW.js → chunk-TXI3QDYE.js} +34 -34
- package/dist/{chunk-62BD4WLW.js.map → chunk-TXI3QDYE.js.map} +1 -1
- package/dist/{chunk-TCIK6WHT.mjs → chunk-TZA5T4MJ.mjs} +4 -4
- package/dist/{chunk-TCIK6WHT.mjs.map → chunk-TZA5T4MJ.mjs.map} +1 -1
- package/dist/{chunk-GKI74CPB.js → chunk-V32NUE5U.js} +55 -55
- package/dist/{chunk-GKI74CPB.js.map → chunk-V32NUE5U.js.map} +1 -1
- package/dist/{chunk-2AJ73ULK.mjs → chunk-WSXP645I.mjs} +3 -3
- package/dist/{chunk-2AJ73ULK.mjs.map → chunk-WSXP645I.mjs.map} +1 -1
- package/dist/{chunk-H475T2N7.js → chunk-Y4YIGEX6.js} +213 -201
- package/dist/chunk-Y4YIGEX6.js.map +1 -0
- package/dist/index.js +664 -664
- package/dist/index.mjs +3 -3
- package/dist/platform/admin/index.js +11 -11
- package/dist/platform/admin/index.mjs +5 -5
- package/dist/platform/agents-workspace.js +8 -8
- package/dist/platform/agents-workspace.mjs +7 -7
- package/dist/platform/app-shell.js +5 -5
- package/dist/platform/app-shell.mjs +4 -4
- package/dist/platform/auth/index.js +23 -23
- package/dist/platform/auth/index.mjs +5 -5
- package/dist/platform/billing/index.js +5 -5
- package/dist/platform/billing/index.mjs +4 -4
- package/dist/platform/impersonation/index.js +5 -5
- package/dist/platform/impersonation/index.mjs +4 -4
- package/dist/platform/index.d.mts +1 -1
- package/dist/platform/index.d.ts +1 -1
- package/dist/platform/index.js +86 -86
- package/dist/platform/index.mjs +19 -19
- package/dist/platform/pages/index.d.mts +2 -2
- package/dist/platform/pages/index.d.ts +2 -2
- package/dist/platform/pages/index.js +472 -474
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +174 -176
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +8 -8
- package/dist/platform/settings/index.mjs +7 -7
- package/dist/platform/workflow-api-client.d.mts +1 -1
- package/dist/platform/workflow-api-client.d.ts +1 -1
- package/dist/platform/workflow-api-client.js +62 -62
- package/dist/platform/workflow-api-client.mjs +1 -1
- package/dist/platform/workflow-canvas-shell.js +6 -6
- package/dist/platform/workflow-canvas-shell.mjs +5 -5
- package/dist/{workflow-api-client-E1QFRgeP.d.ts → workflow-api-client-CThkBj5j.d.ts} +4 -0
- package/dist/{workflow-api-client-D9_0Spdz.d.mts → workflow-api-client-crR8L7fy.d.mts} +4 -0
- package/package.json +1 -1
- package/dist/chunk-7MPIYSRH.js.map +0 -1
- package/dist/chunk-H475T2N7.js.map +0 -1
- package/dist/chunk-IGOMJHC6.mjs.map +0 -1
- package/dist/chunk-NRVV4PHB.mjs.map +0 -1
- package/dist/chunk-ZJMYLUZ2.mjs.map +0 -1
- package/dist/chunk-ZUU7G3PC.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunk3BFQ3SVG_js = require('./chunk-3BFQ3SVG.js');
|
|
5
|
+
var chunk6R5Z2IQ5_js = require('./chunk-6R5Z2IQ5.js');
|
|
6
6
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
7
7
|
var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
|
|
8
8
|
var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
|
|
@@ -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(chunk3BFQ3SVG_js.NodeRunningIndicator, { nodeId: id }),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
46
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
chunk3BFQ3SVG_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(chunk3BFQ3SVG_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_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(chunk3BFQ3SVG_js.NodeRunningIndicator, { nodeId: id }),
|
|
67
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
68
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_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(chunk3BFQ3SVG_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
|
|
76
76
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
-
|
|
77
|
+
chunk3BFQ3SVG_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,7 +82,7 @@ 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(
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
86
86
|
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "zinc", size: "xs", children: providerLabel }),
|
|
87
87
|
regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: "zinc", size: "xs", children: regionLabel }),
|
|
88
88
|
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: isConfigured ? "green" : "amber", size: "xs", children: isConfigured ? "Configured" : "Setup needed" }),
|
|
@@ -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(chunk3BFQ3SVG_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
98
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_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(chunk3BFQ3SVG_js.NodeRunningIndicator, { nodeId: id }),
|
|
108
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
|
|
109
109
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
110
|
-
|
|
110
|
+
chunk3BFQ3SVG_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
|
+
chunk3BFQ3SVG_js.NodeCardHeader,
|
|
120
120
|
{
|
|
121
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
121
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_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(chunk3BFQ3SVG_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(chunk3BFQ3SVG_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
|
|
131
|
+
config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_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(chunk3BFQ3SVG_js.NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
135
135
|
] })
|
|
136
136
|
]
|
|
137
137
|
}
|
|
138
138
|
),
|
|
139
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
139
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_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 }) {
|
|
@@ -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
|
+
chunk6R5Z2IQ5_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
|
+
chunk6R5Z2IQ5_js.FormSelect,
|
|
300
300
|
{
|
|
301
301
|
label: "Type",
|
|
302
302
|
value: field.type,
|
|
@@ -319,7 +319,7 @@ function FieldEditor({
|
|
|
319
319
|
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
|
|
320
320
|
] }),
|
|
321
321
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
322
|
-
|
|
322
|
+
chunk6R5Z2IQ5_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(chunk3BFQ3SVG_js.FRAMEWORK_META);
|
|
616
616
|
const hasProviderConstraints = connectedProviderTypes.length > 0;
|
|
617
|
-
const compatibleModels =
|
|
617
|
+
const compatibleModels = chunk3BFQ3SVG_js.getCompatibleModels(models, selectedFramework);
|
|
618
618
|
const handleFrameworkChange = react.useCallback((newFramework) => {
|
|
619
619
|
setSelectedFramework(newFramework);
|
|
620
|
-
if (!
|
|
621
|
-
const compatible =
|
|
620
|
+
if (!chunk3BFQ3SVG_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
|
|
621
|
+
const compatible = chunk3BFQ3SVG_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-gray-500 dark:text-gray-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 = chunk3BFQ3SVG_js.FRAMEWORK_META[key];
|
|
633
633
|
const isSelected = key === selectedFramework;
|
|
634
|
-
const compatCount =
|
|
635
|
-
const isCompatibleWithProviders = !hasProviderConstraints ||
|
|
634
|
+
const compatCount = chunk3BFQ3SVG_js.getCompatibleModels(models, key).length;
|
|
635
|
+
const isCompatibleWithProviders = !hasProviderConstraints || chunk3BFQ3SVG_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
|
|
636
636
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
637
637
|
"button",
|
|
638
638
|
{
|
|
@@ -664,7 +664,7 @@ 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 = chunk3BFQ3SVG_js.isModelCompatibleWithFramework(model.id, selectedFramework);
|
|
668
668
|
const { IconComponent, color, providerLabel } = getModelIcon(model.id);
|
|
669
669
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
670
670
|
"button",
|
|
@@ -822,7 +822,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
822
822
|
] }),
|
|
823
823
|
tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.description }),
|
|
824
824
|
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 =
|
|
825
|
+
const meta = chunk3BFQ3SVG_js.getFrameworkMeta(framework);
|
|
826
826
|
const isCurrentFw = framework === agentFramework;
|
|
827
827
|
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-gray-100 text-gray-500 dark:bg-white/5 dark:text-gray-400"}`, children: [
|
|
828
828
|
/* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
|
|
@@ -839,7 +839,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
839
839
|
event.stopPropagation();
|
|
840
840
|
},
|
|
841
841
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
842
|
-
|
|
842
|
+
chunk6R5Z2IQ5_js.ToggleSwitch,
|
|
843
843
|
{
|
|
844
844
|
checked: isEnabled,
|
|
845
845
|
onChange: () => onToggle(tool.agentToolId),
|
|
@@ -887,7 +887,7 @@ function EngineTab({
|
|
|
887
887
|
const compatibleProviders = findCompatibleProviders(selectedModelId, modelProviders);
|
|
888
888
|
const configuredCompatible = compatibleProviders.filter((p) => p.configured);
|
|
889
889
|
const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
|
|
890
|
-
const frameworkMeta =
|
|
890
|
+
const frameworkMeta = chunk3BFQ3SVG_js.getFrameworkMeta(selectedFramework);
|
|
891
891
|
const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-gray-800 outline-none transition-colors focus:ring-1 focus:ring-indigo-300/40 dark:text-gray-200 dark:focus:ring-indigo-500/20";
|
|
892
892
|
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
893
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1031,9 +1031,9 @@ function EngineTab({
|
|
|
1031
1031
|
}
|
|
1032
1032
|
function AgentModal({ onSaved, onPersist }) {
|
|
1033
1033
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
1034
|
-
const activeModal =
|
|
1035
|
-
const agentData =
|
|
1036
|
-
const closeModal =
|
|
1034
|
+
const activeModal = chunk3BFQ3SVG_js.useModalStore((s) => s.activeModal);
|
|
1035
|
+
const agentData = chunk3BFQ3SVG_js.useModalStore((s) => s.agentData);
|
|
1036
|
+
const closeModal = chunk3BFQ3SVG_js.useModalStore((s) => s.closeModal);
|
|
1037
1037
|
const open = activeModal === "agent";
|
|
1038
1038
|
const agent = agentData?.agent ?? null;
|
|
1039
1039
|
const models = agentData?.models ?? [];
|
|
@@ -1181,7 +1181,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1181
1181
|
const fieldLabel = "text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400";
|
|
1182
1182
|
const avatarInitial = (displayName || agent.name).charAt(0).toUpperCase();
|
|
1183
1183
|
const avatarNode = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1184
|
-
|
|
1184
|
+
chunk6R5Z2IQ5_js.Avatar,
|
|
1185
1185
|
{
|
|
1186
1186
|
src: effectiveAvatarUrl || void 0,
|
|
1187
1187
|
alt: displayName || agent.name,
|
|
@@ -1193,7 +1193,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1193
1193
|
const statusPill = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
1194
1194
|
/* @__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" }) }),
|
|
1195
1195
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1196
|
-
|
|
1196
|
+
chunk6R5Z2IQ5_js.ToggleSwitch,
|
|
1197
1197
|
{
|
|
1198
1198
|
size: "sm",
|
|
1199
1199
|
color: "green",
|
|
@@ -1207,7 +1207,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1207
1207
|
)
|
|
1208
1208
|
] });
|
|
1209
1209
|
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(
|
|
1210
|
-
|
|
1210
|
+
chunk6R5Z2IQ5_js.HeroBlock,
|
|
1211
1211
|
{
|
|
1212
1212
|
icon: avatarNode,
|
|
1213
1213
|
iconBackground: "none",
|
|
@@ -1270,7 +1270,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1270
1270
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `font-medium ${autosaveColor}`, children: autosaveLabel })
|
|
1271
1271
|
] });
|
|
1272
1272
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1273
|
-
|
|
1273
|
+
chunk6R5Z2IQ5_js.GlassModal,
|
|
1274
1274
|
{
|
|
1275
1275
|
open,
|
|
1276
1276
|
onClose: handleClose,
|
|
@@ -1287,7 +1287,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1287
1287
|
},
|
|
1288
1288
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
1289
1289
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1290
|
-
|
|
1290
|
+
chunk6R5Z2IQ5_js.SectionCard,
|
|
1291
1291
|
{
|
|
1292
1292
|
variant: "glass",
|
|
1293
1293
|
padded: false,
|
|
@@ -1327,7 +1327,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1327
1327
|
}
|
|
1328
1328
|
),
|
|
1329
1329
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1330
|
-
|
|
1330
|
+
chunk6R5Z2IQ5_js.SectionCard,
|
|
1331
1331
|
{
|
|
1332
1332
|
variant: "glass",
|
|
1333
1333
|
padded: false,
|
|
@@ -1355,7 +1355,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1355
1355
|
}
|
|
1356
1356
|
),
|
|
1357
1357
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1358
|
-
|
|
1358
|
+
chunk6R5Z2IQ5_js.SectionCard,
|
|
1359
1359
|
{
|
|
1360
1360
|
variant: "glass",
|
|
1361
1361
|
padded: false,
|
|
@@ -1478,7 +1478,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1478
1478
|
const markDirty = useSubworkflowStore((s) => s.markDirty);
|
|
1479
1479
|
const markSaved = useSubworkflowStore((s) => s.markSaved);
|
|
1480
1480
|
const closeModal = useSubworkflowStore((s) => s.closeModal);
|
|
1481
|
-
const agentBehind =
|
|
1481
|
+
const agentBehind = chunk3BFQ3SVG_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
|
|
1482
1482
|
const isCreateMode = !tool?.toolId;
|
|
1483
1483
|
const initialGraph = react.useMemo(() => {
|
|
1484
1484
|
const config = tool?.config;
|
|
@@ -1507,9 +1507,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1507
1507
|
}, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
|
|
1508
1508
|
if (!tool) return null;
|
|
1509
1509
|
const categoryKey = category ?? "external";
|
|
1510
|
-
const gradient = tool.color ??
|
|
1511
|
-
const categoryPill =
|
|
1512
|
-
const IconComponent =
|
|
1510
|
+
const gradient = tool.color ?? chunk3BFQ3SVG_js.CATEGORY_COLORS[categoryKey] ?? chunk3BFQ3SVG_js.CATEGORY_COLORS.external;
|
|
1511
|
+
const categoryPill = chunk3BFQ3SVG_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunk3BFQ3SVG_js.CATEGORY_PILL_COLORS.external;
|
|
1512
|
+
const IconComponent = chunk3BFQ3SVG_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
|
|
1513
1513
|
const graph = latestGraphRef.current;
|
|
1514
1514
|
const startNode = graph.nodes.find((n) => n.type === "start");
|
|
1515
1515
|
const endNode = graph.nodes.find((n) => n.type === "end");
|
|
@@ -1542,7 +1542,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1542
1542
|
] })
|
|
1543
1543
|
] });
|
|
1544
1544
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1545
|
-
|
|
1545
|
+
chunk6R5Z2IQ5_js.GlassModal,
|
|
1546
1546
|
{
|
|
1547
1547
|
open,
|
|
1548
1548
|
onClose: closeModal,
|
|
@@ -1574,7 +1574,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1574
1574
|
{
|
|
1575
1575
|
type: "button",
|
|
1576
1576
|
onClick: () => setCategory(cat),
|
|
1577
|
-
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${
|
|
1577
|
+
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunk3BFQ3SVG_js.CATEGORY_PILL_COLORS[cat] ?? chunk3BFQ3SVG_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-gray-500 hover:bg-white/50 dark:bg-white/5 dark:text-gray-400"}`,
|
|
1578
1578
|
children: cat
|
|
1579
1579
|
},
|
|
1580
1580
|
cat
|
|
@@ -1661,7 +1661,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1661
1661
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
|
|
1662
1662
|
] }),
|
|
1663
1663
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1664
|
-
|
|
1664
|
+
chunk3BFQ3SVG_js.WorkflowCanvas,
|
|
1665
1665
|
{
|
|
1666
1666
|
initialGraph,
|
|
1667
1667
|
agents: [],
|
|
@@ -1677,9 +1677,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1677
1677
|
}
|
|
1678
1678
|
function PipelineSettingsModal({ onSave }) {
|
|
1679
1679
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
1680
|
-
const activeModal =
|
|
1681
|
-
const data =
|
|
1682
|
-
const closeModal =
|
|
1680
|
+
const activeModal = chunk3BFQ3SVG_js.useModalStore((s) => s.activeModal);
|
|
1681
|
+
const data = chunk3BFQ3SVG_js.useModalStore((s) => s.pipelineSettingsData);
|
|
1682
|
+
const closeModal = chunk3BFQ3SVG_js.useModalStore((s) => s.closeModal);
|
|
1683
1683
|
const open = activeModal === "pipeline-settings";
|
|
1684
1684
|
const [nameValue, setNameValue] = react.useState("");
|
|
1685
1685
|
const [descriptionValue, setDescriptionValue] = react.useState("");
|
|
@@ -1700,8 +1700,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1700
1700
|
setIsActive(data.isActive ?? true);
|
|
1701
1701
|
}
|
|
1702
1702
|
}, [data]);
|
|
1703
|
-
const
|
|
1704
|
-
event.preventDefault();
|
|
1703
|
+
const submitChanges = async () => {
|
|
1705
1704
|
const trimmedName = nameValue.trim();
|
|
1706
1705
|
if (!trimmedName) return;
|
|
1707
1706
|
const trimmedDescription = descriptionValue.trim();
|
|
@@ -1743,8 +1742,10 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1743
1742
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1744
1743
|
chunkBHOT22QL_js.Button,
|
|
1745
1744
|
{
|
|
1746
|
-
type: "
|
|
1747
|
-
|
|
1745
|
+
type: "button",
|
|
1746
|
+
onClick: () => {
|
|
1747
|
+
void submitChanges();
|
|
1748
|
+
},
|
|
1748
1749
|
color: "ios-glass-blue",
|
|
1749
1750
|
loading: isSaving,
|
|
1750
1751
|
loadingText: t("saving"),
|
|
@@ -1756,7 +1757,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1756
1757
|
)
|
|
1757
1758
|
] });
|
|
1758
1759
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1759
|
-
|
|
1760
|
+
chunk6R5Z2IQ5_js.GlassModal,
|
|
1760
1761
|
{
|
|
1761
1762
|
open,
|
|
1762
1763
|
onClose: closeModal,
|
|
@@ -1767,76 +1768,87 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1767
1768
|
gradient: "from-indigo-500 to-purple-600",
|
|
1768
1769
|
maxWidth: "md",
|
|
1769
1770
|
footer,
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
{
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
placeholder: t("pipelineNamePlaceholder"),
|
|
1779
|
-
required: true
|
|
1780
|
-
}
|
|
1781
|
-
),
|
|
1782
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1783
|
-
chunkZGVN23J4_js.FormTextarea,
|
|
1784
|
-
{
|
|
1785
|
-
label: t("pipelineDescription"),
|
|
1786
|
-
value: descriptionValue,
|
|
1787
|
-
onValueChange: setDescriptionValue,
|
|
1788
|
-
placeholder: t("pipelineDescriptionPlaceholder"),
|
|
1789
|
-
rows: 4
|
|
1790
|
-
}
|
|
1791
|
-
),
|
|
1792
|
-
lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1793
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1794
|
-
chunkZGVN23J4_js.FormInput,
|
|
1795
|
-
{
|
|
1796
|
-
label: t("pipelineSlug", { _: "Slug" }),
|
|
1797
|
-
value: slugValue,
|
|
1798
|
-
onValueChange: setSlugValue,
|
|
1799
|
-
placeholder: "product-pricing",
|
|
1800
|
-
hint: t("pipelineSlugHint", {
|
|
1801
|
-
_: "URL-friendly identifier. Leave blank to use the auto-generated one."
|
|
1802
|
-
})
|
|
1771
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1772
|
+
"div",
|
|
1773
|
+
{
|
|
1774
|
+
className: "space-y-5",
|
|
1775
|
+
onKeyDown: (event) => {
|
|
1776
|
+
if (event.key === "Enter" && !(event.target instanceof HTMLTextAreaElement) && !event.shiftKey) {
|
|
1777
|
+
event.preventDefault();
|
|
1778
|
+
void submitChanges();
|
|
1803
1779
|
}
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
t("
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1780
|
+
},
|
|
1781
|
+
children: [
|
|
1782
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1783
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
1784
|
+
{
|
|
1785
|
+
label: t("pipelineName"),
|
|
1786
|
+
value: nameValue,
|
|
1787
|
+
onValueChange: setNameValue,
|
|
1788
|
+
placeholder: t("pipelineNamePlaceholder"),
|
|
1789
|
+
required: true
|
|
1790
|
+
}
|
|
1791
|
+
),
|
|
1792
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1793
|
+
chunk6R5Z2IQ5_js.FormTextarea,
|
|
1794
|
+
{
|
|
1795
|
+
label: t("pipelineDescription"),
|
|
1796
|
+
value: descriptionValue,
|
|
1797
|
+
onValueChange: setDescriptionValue,
|
|
1798
|
+
placeholder: t("pipelineDescriptionPlaceholder"),
|
|
1799
|
+
rows: 4
|
|
1800
|
+
}
|
|
1801
|
+
),
|
|
1802
|
+
lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1827
1803
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1828
|
-
|
|
1804
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
1829
1805
|
{
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1806
|
+
label: t("pipelineSlug", { _: "Slug" }),
|
|
1807
|
+
value: slugValue,
|
|
1808
|
+
onValueChange: setSlugValue,
|
|
1809
|
+
placeholder: "product-pricing",
|
|
1810
|
+
hint: t("pipelineSlugHint", {
|
|
1811
|
+
_: "URL-friendly identifier. Leave blank to use the auto-generated one."
|
|
1812
|
+
})
|
|
1834
1813
|
}
|
|
1835
|
-
)
|
|
1814
|
+
),
|
|
1815
|
+
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-2 rounded-xl border border-gray-200/60 bg-gray-50/60 p-3 dark:border-white/10 dark:bg-white/5", children: [
|
|
1816
|
+
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "px-1 text-xs font-medium text-gray-600 dark:text-gray-300", children: t("pipelineLifecycle", { _: "Lifecycle" }) }),
|
|
1817
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-gray-700 dark:text-gray-200", children: [
|
|
1818
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1819
|
+
t("pipelineIsDraft", { _: "Draft mode" }),
|
|
1820
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-[11px] text-gray-400", children: isDraft ? t("pipelineIsDraftOn", { _: "Editable \u2014 changes do not affect runs." }) : t("pipelineIsDraftOff", { _: "Published \u2014 edits require a new version." }) })
|
|
1821
|
+
] }),
|
|
1822
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1823
|
+
"input",
|
|
1824
|
+
{
|
|
1825
|
+
type: "checkbox",
|
|
1826
|
+
checked: isDraft,
|
|
1827
|
+
onChange: (event) => setIsDraft(event.target.checked),
|
|
1828
|
+
className: "h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500"
|
|
1829
|
+
}
|
|
1830
|
+
)
|
|
1831
|
+
] }),
|
|
1832
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-gray-700 dark:text-gray-200", children: [
|
|
1833
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1834
|
+
t("pipelineIsActive", { _: "Active" }),
|
|
1835
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-[11px] text-gray-400", children: isActive ? t("pipelineIsActiveOn", { _: "Visible in listings and runnable." }) : t("pipelineIsActiveOff", { _: "Archived \u2014 hidden from the default listing." }) })
|
|
1836
|
+
] }),
|
|
1837
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1838
|
+
"input",
|
|
1839
|
+
{
|
|
1840
|
+
type: "checkbox",
|
|
1841
|
+
checked: isActive,
|
|
1842
|
+
onChange: (event) => setIsActive(event.target.checked),
|
|
1843
|
+
className: "h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500"
|
|
1844
|
+
}
|
|
1845
|
+
)
|
|
1846
|
+
] })
|
|
1847
|
+
] })
|
|
1836
1848
|
] })
|
|
1837
|
-
]
|
|
1838
|
-
|
|
1839
|
-
|
|
1849
|
+
]
|
|
1850
|
+
}
|
|
1851
|
+
)
|
|
1840
1852
|
}
|
|
1841
1853
|
);
|
|
1842
1854
|
}
|
|
@@ -1933,7 +1945,7 @@ function RunReplayModal({
|
|
|
1933
1945
|
] })
|
|
1934
1946
|
] });
|
|
1935
1947
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1936
|
-
|
|
1948
|
+
chunk6R5Z2IQ5_js.GlassModal,
|
|
1937
1949
|
{
|
|
1938
1950
|
open,
|
|
1939
1951
|
onClose,
|
|
@@ -2007,7 +2019,7 @@ function RowEditor({
|
|
|
2007
2019
|
]
|
|
2008
2020
|
}
|
|
2009
2021
|
) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2010
|
-
|
|
2022
|
+
chunk6R5Z2IQ5_js.FormTextarea,
|
|
2011
2023
|
{
|
|
2012
2024
|
value: row.value,
|
|
2013
2025
|
onValueChange: (v) => onChange({ value: v }),
|
|
@@ -2015,7 +2027,7 @@ function RowEditor({
|
|
|
2015
2027
|
className: "font-mono"
|
|
2016
2028
|
}
|
|
2017
2029
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2018
|
-
|
|
2030
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2019
2031
|
{
|
|
2020
2032
|
type: row.kind === "number" ? "number" : "text",
|
|
2021
2033
|
value: row.value,
|
|
@@ -2319,7 +2331,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
|
|
|
2319
2331
|
};
|
|
2320
2332
|
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: [
|
|
2321
2333
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2322
|
-
|
|
2334
|
+
chunk6R5Z2IQ5_js.FormSelect,
|
|
2323
2335
|
{
|
|
2324
2336
|
label: "Operator",
|
|
2325
2337
|
value: value.operator,
|
|
@@ -2342,7 +2354,7 @@ function SimpleEditor({
|
|
|
2342
2354
|
const isTruthy = value.operator === "truthy";
|
|
2343
2355
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2344
2356
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2345
|
-
|
|
2357
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2346
2358
|
{
|
|
2347
2359
|
label: "Field",
|
|
2348
2360
|
hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.category`",
|
|
@@ -2352,7 +2364,7 @@ function SimpleEditor({
|
|
|
2352
2364
|
}
|
|
2353
2365
|
),
|
|
2354
2366
|
!isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2355
|
-
|
|
2367
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2356
2368
|
{
|
|
2357
2369
|
label: "Value",
|
|
2358
2370
|
hint: "Literal. Numeric operators coerce via `as f64`.",
|
|
@@ -2368,7 +2380,7 @@ function ThresholdEditor({
|
|
|
2368
2380
|
}) {
|
|
2369
2381
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
|
|
2370
2382
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2371
|
-
|
|
2383
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2372
2384
|
{
|
|
2373
2385
|
label: "Field",
|
|
2374
2386
|
value: value.field ?? "",
|
|
@@ -2377,7 +2389,7 @@ function ThresholdEditor({
|
|
|
2377
2389
|
}
|
|
2378
2390
|
),
|
|
2379
2391
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2380
|
-
|
|
2392
|
+
chunk6R5Z2IQ5_js.FormSelect,
|
|
2381
2393
|
{
|
|
2382
2394
|
label: "Direction",
|
|
2383
2395
|
value: value.comparison ?? "gte",
|
|
@@ -2391,7 +2403,7 @@ function ThresholdEditor({
|
|
|
2391
2403
|
}
|
|
2392
2404
|
),
|
|
2393
2405
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2394
|
-
|
|
2406
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2395
2407
|
{
|
|
2396
2408
|
label: "Threshold",
|
|
2397
2409
|
type: "number",
|
|
@@ -2408,7 +2420,7 @@ function RegexEditor({
|
|
|
2408
2420
|
}) {
|
|
2409
2421
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2410
2422
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2411
|
-
|
|
2423
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2412
2424
|
{
|
|
2413
2425
|
label: "Field",
|
|
2414
2426
|
value: value.field ?? "",
|
|
@@ -2417,7 +2429,7 @@ function RegexEditor({
|
|
|
2417
2429
|
}
|
|
2418
2430
|
),
|
|
2419
2431
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2420
|
-
|
|
2432
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2421
2433
|
{
|
|
2422
2434
|
label: "Pattern",
|
|
2423
2435
|
hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
|
|
@@ -2445,7 +2457,7 @@ function TimeWindowEditor({
|
|
|
2445
2457
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2446
2458
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2447
2459
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2448
|
-
|
|
2460
|
+
chunk6R5Z2IQ5_js.FormSelect,
|
|
2449
2461
|
{
|
|
2450
2462
|
label: "Timezone",
|
|
2451
2463
|
value: value.timezone ?? "UTC",
|
|
@@ -2454,7 +2466,7 @@ function TimeWindowEditor({
|
|
|
2454
2466
|
}
|
|
2455
2467
|
),
|
|
2456
2468
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2457
|
-
|
|
2469
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2458
2470
|
{
|
|
2459
2471
|
label: "Timestamp field (optional)",
|
|
2460
2472
|
hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
|
|
@@ -2467,7 +2479,7 @@ function TimeWindowEditor({
|
|
|
2467
2479
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2468
2480
|
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: [
|
|
2469
2481
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2470
|
-
|
|
2482
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2471
2483
|
{
|
|
2472
2484
|
label: `Start (hour)`,
|
|
2473
2485
|
type: "number",
|
|
@@ -2478,7 +2490,7 @@ function TimeWindowEditor({
|
|
|
2478
2490
|
}
|
|
2479
2491
|
),
|
|
2480
2492
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2481
|
-
|
|
2493
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2482
2494
|
{
|
|
2483
2495
|
label: `End (hour)`,
|
|
2484
2496
|
type: "number",
|
|
@@ -2513,7 +2525,7 @@ function BooleanGroupEditor({
|
|
|
2513
2525
|
});
|
|
2514
2526
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2515
2527
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2516
|
-
|
|
2528
|
+
chunk6R5Z2IQ5_js.FormSelect,
|
|
2517
2529
|
{
|
|
2518
2530
|
label: "Combinator",
|
|
2519
2531
|
value: value.combinator ?? "and",
|
|
@@ -2569,7 +2581,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2569
2581
|
};
|
|
2570
2582
|
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: [
|
|
2571
2583
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2572
|
-
|
|
2584
|
+
chunk6R5Z2IQ5_js.FormSelect,
|
|
2573
2585
|
{
|
|
2574
2586
|
label: "Action type",
|
|
2575
2587
|
value: type,
|
|
@@ -2579,7 +2591,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2579
2591
|
),
|
|
2580
2592
|
type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2581
2593
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2582
|
-
|
|
2594
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2583
2595
|
{
|
|
2584
2596
|
label: "Multiplier",
|
|
2585
2597
|
type: "number",
|
|
@@ -2589,7 +2601,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2589
2601
|
}
|
|
2590
2602
|
),
|
|
2591
2603
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2592
|
-
|
|
2604
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2593
2605
|
{
|
|
2594
2606
|
label: "Reason code",
|
|
2595
2607
|
value: stringParam(params.reason),
|
|
@@ -2599,7 +2611,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2599
2611
|
)
|
|
2600
2612
|
] }),
|
|
2601
2613
|
type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2602
|
-
|
|
2614
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2603
2615
|
{
|
|
2604
2616
|
label: "Floor (fraction, e.g. 0.08)",
|
|
2605
2617
|
type: "number",
|
|
@@ -2609,7 +2621,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2609
2621
|
}
|
|
2610
2622
|
),
|
|
2611
2623
|
type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2612
|
-
|
|
2624
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2613
2625
|
{
|
|
2614
2626
|
label: "Tolerance (fraction)",
|
|
2615
2627
|
type: "number",
|
|
@@ -2619,7 +2631,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2619
2631
|
}
|
|
2620
2632
|
),
|
|
2621
2633
|
type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2622
|
-
|
|
2634
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2623
2635
|
{
|
|
2624
2636
|
label: "Approval limit (fraction)",
|
|
2625
2637
|
type: "number",
|
|
@@ -2629,7 +2641,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2629
2641
|
}
|
|
2630
2642
|
),
|
|
2631
2643
|
type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2632
|
-
|
|
2644
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2633
2645
|
{
|
|
2634
2646
|
label: "Step (e.g. 0.009)",
|
|
2635
2647
|
type: "number",
|
|
@@ -2640,7 +2652,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2640
2652
|
),
|
|
2641
2653
|
type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2642
2654
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2643
|
-
|
|
2655
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2644
2656
|
{
|
|
2645
2657
|
label: "Channel",
|
|
2646
2658
|
value: stringParam(params.channel),
|
|
@@ -2649,7 +2661,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2649
2661
|
}
|
|
2650
2662
|
),
|
|
2651
2663
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2652
|
-
|
|
2664
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2653
2665
|
{
|
|
2654
2666
|
label: "Severity",
|
|
2655
2667
|
value: stringParam(params.severity),
|
|
@@ -2687,7 +2699,7 @@ function CustomParamsEditor({
|
|
|
2687
2699
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2688
2700
|
entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
|
|
2689
2701
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2690
|
-
|
|
2702
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2691
2703
|
{
|
|
2692
2704
|
label: "Key",
|
|
2693
2705
|
value: key,
|
|
@@ -2695,7 +2707,7 @@ function CustomParamsEditor({
|
|
|
2695
2707
|
}
|
|
2696
2708
|
),
|
|
2697
2709
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2698
|
-
|
|
2710
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2699
2711
|
{
|
|
2700
2712
|
label: "Value",
|
|
2701
2713
|
value: String(value ?? ""),
|
|
@@ -2734,9 +2746,9 @@ function RuleForm({ value, onChange }) {
|
|
|
2734
2746
|
);
|
|
2735
2747
|
const update = (key, v) => onChange({ ...value, [key]: v });
|
|
2736
2748
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
2737
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2749
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6R5Z2IQ5_js.FormGrid, { children: [
|
|
2738
2750
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2739
|
-
|
|
2751
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2740
2752
|
{
|
|
2741
2753
|
label: "Name",
|
|
2742
2754
|
required: true,
|
|
@@ -2745,7 +2757,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2745
2757
|
}
|
|
2746
2758
|
),
|
|
2747
2759
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2748
|
-
|
|
2760
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2749
2761
|
{
|
|
2750
2762
|
label: "Priority",
|
|
2751
2763
|
type: "number",
|
|
@@ -2755,7 +2767,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2755
2767
|
}
|
|
2756
2768
|
),
|
|
2757
2769
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2758
|
-
|
|
2770
|
+
chunk6R5Z2IQ5_js.FormSelect,
|
|
2759
2771
|
{
|
|
2760
2772
|
label: "Enabled",
|
|
2761
2773
|
value: value.enabled ? "true" : "false",
|
|
@@ -2767,7 +2779,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2767
2779
|
}
|
|
2768
2780
|
),
|
|
2769
2781
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2770
|
-
|
|
2782
|
+
chunk6R5Z2IQ5_js.FormTextarea,
|
|
2771
2783
|
{
|
|
2772
2784
|
label: "Description",
|
|
2773
2785
|
rows: 2,
|
|
@@ -2814,7 +2826,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2814
2826
|
),
|
|
2815
2827
|
showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2816
2828
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2817
|
-
|
|
2829
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2818
2830
|
{
|
|
2819
2831
|
label: "Valid from (ISO 8601)",
|
|
2820
2832
|
type: "datetime-local",
|
|
@@ -2823,7 +2835,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2823
2835
|
}
|
|
2824
2836
|
),
|
|
2825
2837
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2826
|
-
|
|
2838
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2827
2839
|
{
|
|
2828
2840
|
label: "Valid until (ISO 8601)",
|
|
2829
2841
|
type: "datetime-local",
|
|
@@ -2832,7 +2844,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2832
2844
|
}
|
|
2833
2845
|
),
|
|
2834
2846
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2835
|
-
|
|
2847
|
+
chunk6R5Z2IQ5_js.FormSelect,
|
|
2836
2848
|
{
|
|
2837
2849
|
label: "Status",
|
|
2838
2850
|
value: value.status ?? "active",
|
|
@@ -2841,7 +2853,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2841
2853
|
}
|
|
2842
2854
|
),
|
|
2843
2855
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2844
|
-
|
|
2856
|
+
chunk6R5Z2IQ5_js.FormInput,
|
|
2845
2857
|
{
|
|
2846
2858
|
label: "Tags (comma-separated)",
|
|
2847
2859
|
value: (value.tags ?? []).join(", "),
|
|
@@ -3028,8 +3040,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
|
|
|
3028
3040
|
] });
|
|
3029
3041
|
}
|
|
3030
3042
|
function LogicNodeItemCard({ item, translationFunction }) {
|
|
3031
|
-
const IconComponent =
|
|
3032
|
-
const gradient =
|
|
3043
|
+
const IconComponent = chunk3BFQ3SVG_js.LOGIC_ICON_MAP[item.nodeType];
|
|
3044
|
+
const gradient = chunk3BFQ3SVG_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
|
|
3033
3045
|
const defaultConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig(item.nodeType);
|
|
3034
3046
|
const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
|
|
3035
3047
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3100,7 +3112,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3100
3112
|
[entityTypes, normalizedQuery]
|
|
3101
3113
|
);
|
|
3102
3114
|
const filteredLogicItems = react.useMemo(() => {
|
|
3103
|
-
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !
|
|
3115
|
+
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunk3BFQ3SVG_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
|
|
3104
3116
|
if (!normalizedQuery) return visibleByDefault;
|
|
3105
3117
|
return visibleByDefault.filter(
|
|
3106
3118
|
(item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
|
|
@@ -3236,7 +3248,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3236
3248
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.category })
|
|
3237
3249
|
] }),
|
|
3238
3250
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3239
|
-
|
|
3251
|
+
chunk6R5Z2IQ5_js.ToggleSwitch,
|
|
3240
3252
|
{
|
|
3241
3253
|
checked: Boolean(tool.enabled),
|
|
3242
3254
|
onChange: () => {
|
|
@@ -3277,7 +3289,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3277
3289
|
] })
|
|
3278
3290
|
] }),
|
|
3279
3291
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3280
|
-
|
|
3292
|
+
chunk6R5Z2IQ5_js.ToggleSwitch,
|
|
3281
3293
|
{
|
|
3282
3294
|
checked: Boolean(rule.enabled),
|
|
3283
3295
|
onChange: () => {
|
|
@@ -3313,8 +3325,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3313
3325
|
limit: entity.defaultLimit
|
|
3314
3326
|
});
|
|
3315
3327
|
const dsLogo = getDatasourceLogo(entity.id);
|
|
3316
|
-
const EntityIcon =
|
|
3317
|
-
const entityGradient =
|
|
3328
|
+
const EntityIcon = chunk3BFQ3SVG_js.getEntityIcon(entity.id);
|
|
3329
|
+
const entityGradient = chunk3BFQ3SVG_js.getEntityGradient(entity.id);
|
|
3318
3330
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3319
3331
|
"div",
|
|
3320
3332
|
{
|
|
@@ -3334,7 +3346,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3334
3346
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3335
3347
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-slate-500/15 px-1.5 py-0.5 text-[9px] font-medium text-slate-700 dark:bg-slate-500/20 dark:text-slate-300", children: "Read only" }),
|
|
3336
3348
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3337
|
-
|
|
3349
|
+
chunk6R5Z2IQ5_js.ToggleSwitch,
|
|
3338
3350
|
{
|
|
3339
3351
|
checked: true,
|
|
3340
3352
|
onChange: () => {
|
|
@@ -3669,9 +3681,9 @@ function formatDuration2(durationMs) {
|
|
|
3669
3681
|
}
|
|
3670
3682
|
function RunPanel({ open, onClose, onRun, onStop }) {
|
|
3671
3683
|
const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.runPanel");
|
|
3672
|
-
const nodes =
|
|
3673
|
-
const isRunning =
|
|
3674
|
-
const nodeResults =
|
|
3684
|
+
const nodes = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.nodes);
|
|
3685
|
+
const isRunning = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.isRunning);
|
|
3686
|
+
const nodeResults = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.nodeResults);
|
|
3675
3687
|
const startNode = nodes.find((node) => node.type === "start");
|
|
3676
3688
|
const hasEndNode = nodes.some((node) => node.type === "end");
|
|
3677
3689
|
const hasValidStartConfig = Boolean(
|
|
@@ -4002,8 +4014,8 @@ function inferVariables(config, nodeType) {
|
|
|
4002
4014
|
}
|
|
4003
4015
|
function VariableInspector({ open, onClose }) {
|
|
4004
4016
|
const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.variableInspector");
|
|
4005
|
-
const nodes =
|
|
4006
|
-
const edges =
|
|
4017
|
+
const nodes = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.nodes);
|
|
4018
|
+
const edges = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.edges);
|
|
4007
4019
|
const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
|
|
4008
4020
|
const toggleNodeExpansion = react.useCallback((nodeId) => {
|
|
4009
4021
|
setExpandedNodes((current) => {
|
|
@@ -4065,8 +4077,8 @@ function VariableInspector({ open, onClose }) {
|
|
|
4065
4077
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: translations("noNodes") })
|
|
4066
4078
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-gray-100 dark:divide-gray-800", children: nodeVariableEntries.map((entry) => {
|
|
4067
4079
|
const isExpanded = expandedNodes.has(entry.nodeId);
|
|
4068
|
-
const IconComponent =
|
|
4069
|
-
const gradient =
|
|
4080
|
+
const IconComponent = chunk3BFQ3SVG_js.LOGIC_ICON_MAP[entry.nodeType];
|
|
4081
|
+
const gradient = chunk3BFQ3SVG_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
|
|
4070
4082
|
const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
|
|
4071
4083
|
const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
|
|
4072
4084
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
|
|
@@ -4132,7 +4144,7 @@ function RunInputDialog({
|
|
|
4132
4144
|
onRun
|
|
4133
4145
|
}) {
|
|
4134
4146
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.runInputDialog");
|
|
4135
|
-
const nodes =
|
|
4147
|
+
const nodes = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.nodes);
|
|
4136
4148
|
const [values, setValues] = react.useState({});
|
|
4137
4149
|
const inputVariableNames = react.useMemo(() => {
|
|
4138
4150
|
const storeStartNode = nodes.find((node) => node.type === "start");
|
|
@@ -4159,7 +4171,7 @@ function RunInputDialog({
|
|
|
4159
4171
|
}, [onClose]);
|
|
4160
4172
|
if (!open) return null;
|
|
4161
4173
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4162
|
-
|
|
4174
|
+
chunk6R5Z2IQ5_js.GlassModal,
|
|
4163
4175
|
{
|
|
4164
4176
|
open,
|
|
4165
4177
|
onClose: handleClose,
|
|
@@ -4170,7 +4182,7 @@ function RunInputDialog({
|
|
|
4170
4182
|
/* @__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: [
|
|
4171
4183
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
|
|
4172
4184
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4173
|
-
|
|
4185
|
+
chunk6R5Z2IQ5_js.Input,
|
|
4174
4186
|
{
|
|
4175
4187
|
value: values[variableName] ?? "",
|
|
4176
4188
|
onChange: (event) => handleValueChange(variableName, event.target.value),
|
|
@@ -4213,8 +4225,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4213
4225
|
const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
|
|
4214
4226
|
const [selectedRun, setSelectedRun] = react.useState(null);
|
|
4215
4227
|
const [selectedNode, setSelectedNode] = react.useState(null);
|
|
4216
|
-
const isRunning =
|
|
4217
|
-
const nodeResults =
|
|
4228
|
+
const isRunning = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.isRunning);
|
|
4229
|
+
const nodeResults = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.nodeResults);
|
|
4218
4230
|
const refreshRuns = react.useCallback(async () => {
|
|
4219
4231
|
setIsLoadingRuns(true);
|
|
4220
4232
|
try {
|
|
@@ -4392,7 +4404,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4392
4404
|
onAutoSaveGraph(graph);
|
|
4393
4405
|
}, [onAutoSaveGraph, onGraphSnapshot]);
|
|
4394
4406
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4395
|
-
|
|
4407
|
+
chunk3BFQ3SVG_js.Workspace,
|
|
4396
4408
|
{
|
|
4397
4409
|
...workspaceProps,
|
|
4398
4410
|
onGraphChange: handleGraphChange
|
|
@@ -4400,7 +4412,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4400
4412
|
);
|
|
4401
4413
|
});
|
|
4402
4414
|
function DynamicIslandConfirm2(props) {
|
|
4403
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4415
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6R5Z2IQ5_js.DynamicIslandConfirm, { ...props });
|
|
4404
4416
|
}
|
|
4405
4417
|
var JSON_PREVIEW_LINE_LIMIT = 50;
|
|
4406
4418
|
function DslExportModal({ open, onClose, workflow, graph }) {
|
|
@@ -4454,7 +4466,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4454
4466
|
}, [jsonString, workflow.name, workflow.version]);
|
|
4455
4467
|
if (!open) return null;
|
|
4456
4468
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4457
|
-
|
|
4469
|
+
chunk6R5Z2IQ5_js.GlassModal,
|
|
4458
4470
|
{
|
|
4459
4471
|
open,
|
|
4460
4472
|
onClose,
|
|
@@ -4672,7 +4684,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4672
4684
|
}, []);
|
|
4673
4685
|
if (!open) return null;
|
|
4674
4686
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4675
|
-
|
|
4687
|
+
chunk6R5Z2IQ5_js.GlassModal,
|
|
4676
4688
|
{
|
|
4677
4689
|
open,
|
|
4678
4690
|
onClose,
|
|
@@ -4763,14 +4775,14 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4763
4775
|
}
|
|
4764
4776
|
|
|
4765
4777
|
// src/astrlabe/store/selectors.ts
|
|
4766
|
-
var useCanUndo = () =>
|
|
4767
|
-
var useCanRedo = () =>
|
|
4768
|
-
var useHasCopied = () =>
|
|
4769
|
-
var useContextMenu = () =>
|
|
4770
|
-
var useEditingNodeId = () =>
|
|
4771
|
-
var useSelectedNodeCount = () =>
|
|
4772
|
-
var useIsRunning = () =>
|
|
4773
|
-
var useNodeResults = () =>
|
|
4778
|
+
var useCanUndo = () => chunk3BFQ3SVG_js.useWorkflowStore((state) => state.past.length > 0);
|
|
4779
|
+
var useCanRedo = () => chunk3BFQ3SVG_js.useWorkflowStore((state) => state.future.length > 0);
|
|
4780
|
+
var useHasCopied = () => chunk3BFQ3SVG_js.useWorkflowStore((state) => state.clipboard !== null);
|
|
4781
|
+
var useContextMenu = () => chunk3BFQ3SVG_js.useWorkflowStore((state) => state.contextMenu);
|
|
4782
|
+
var useEditingNodeId = () => chunk3BFQ3SVG_js.useWorkflowStore((state) => state.editingNodeId);
|
|
4783
|
+
var useSelectedNodeCount = () => chunk3BFQ3SVG_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
|
|
4784
|
+
var useIsRunning = () => chunk3BFQ3SVG_js.useWorkflowStore((state) => state.isRunning);
|
|
4785
|
+
var useNodeResults = () => chunk3BFQ3SVG_js.useWorkflowStore((state) => state.nodeResults);
|
|
4774
4786
|
var DEFAULT_MAX_HISTORY = 50;
|
|
4775
4787
|
function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
|
|
4776
4788
|
const pastRef = react.useRef([]);
|
|
@@ -5094,5 +5106,5 @@ exports.useNodeResults = useNodeResults;
|
|
|
5094
5106
|
exports.useSelectedNodeCount = useSelectedNodeCount;
|
|
5095
5107
|
exports.useSubworkflowStore = useSubworkflowStore;
|
|
5096
5108
|
exports.useUndoRedo = useUndoRedo;
|
|
5097
|
-
//# sourceMappingURL=chunk-
|
|
5098
|
-
//# sourceMappingURL=chunk-
|
|
5109
|
+
//# sourceMappingURL=chunk-Y4YIGEX6.js.map
|
|
5110
|
+
//# sourceMappingURL=chunk-Y4YIGEX6.js.map
|