@datatechsolutions/ui 3.4.0 → 3.5.1
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 +107 -107
- package/dist/astrlabe/index.mjs +3 -3
- package/dist/astrlabe/workflow-canvas.js +3 -3
- package/dist/astrlabe/workflow-canvas.mjs +2 -2
- package/dist/{chunk-IDEM3DYF.mjs → chunk-2TBNOQ7M.mjs} +3 -3
- package/dist/{chunk-IDEM3DYF.mjs.map → chunk-2TBNOQ7M.mjs.map} +1 -1
- package/dist/{chunk-45QAUEYT.js → chunk-2UMDWOUY.js} +4 -4
- package/dist/{chunk-45QAUEYT.js.map → chunk-2UMDWOUY.js.map} +1 -1
- package/dist/{chunk-NAFWHJCM.mjs → chunk-37ZLBCJF.mjs} +6 -6
- package/dist/{chunk-NAFWHJCM.mjs.map → chunk-37ZLBCJF.mjs.map} +1 -1
- package/dist/{chunk-MO5FBVV3.js → chunk-5AVO5DJO.js} +62 -62
- package/dist/{chunk-MO5FBVV3.js.map → chunk-5AVO5DJO.js.map} +1 -1
- package/dist/{chunk-X3GW7UPN.mjs → chunk-7OZ4MVEF.mjs} +4 -4
- package/dist/{chunk-X3GW7UPN.mjs.map → chunk-7OZ4MVEF.mjs.map} +1 -1
- package/dist/{chunk-SQ4KGLBZ.mjs → chunk-CDYNTHUE.mjs} +41 -7
- package/dist/chunk-CDYNTHUE.mjs.map +1 -0
- package/dist/{chunk-ZKSDDFHG.mjs → chunk-CJGNEALB.mjs} +4 -4
- package/dist/{chunk-ZKSDDFHG.mjs.map → chunk-CJGNEALB.mjs.map} +1 -1
- package/dist/{chunk-4GDWGWHY.mjs → chunk-CP5QXRXA.mjs} +4 -4
- package/dist/{chunk-4GDWGWHY.mjs.map → chunk-CP5QXRXA.mjs.map} +1 -1
- package/dist/{chunk-SEYUYGER.mjs → chunk-EGXB3WXT.mjs} +12 -11
- package/dist/chunk-EGXB3WXT.mjs.map +1 -0
- package/dist/{chunk-UJVDI66K.js → chunk-EI6FIA45.js} +16 -16
- package/dist/{chunk-UJVDI66K.js.map → chunk-EI6FIA45.js.map} +1 -1
- package/dist/{chunk-AGGOHPMZ.mjs → chunk-EUXHJMGC.mjs} +138 -108
- package/dist/chunk-EUXHJMGC.mjs.map +1 -0
- package/dist/{chunk-M7KSEUZR.js → chunk-F5UDX6JA.js} +74 -74
- package/dist/{chunk-M7KSEUZR.js.map → chunk-F5UDX6JA.js.map} +1 -1
- package/dist/{chunk-6MBWKOPF.js → chunk-HVDDCBQ2.js} +33 -33
- package/dist/{chunk-6MBWKOPF.js.map → chunk-HVDDCBQ2.js.map} +1 -1
- package/dist/{chunk-FSBR4RCK.js → chunk-K4M4B6ME.js} +138 -108
- package/dist/chunk-K4M4B6ME.js.map +1 -0
- package/dist/{chunk-4ICEQJH4.js → chunk-KIBOX3UQ.js} +53 -53
- package/dist/{chunk-4ICEQJH4.js.map → chunk-KIBOX3UQ.js.map} +1 -1
- package/dist/{chunk-NCLZKVJK.js → chunk-KRPSTXN5.js} +9 -9
- package/dist/{chunk-NCLZKVJK.js.map → chunk-KRPSTXN5.js.map} +1 -1
- package/dist/{chunk-NVQWHJQH.mjs → chunk-L5O4NWQO.mjs} +3 -3
- package/dist/{chunk-NVQWHJQH.mjs.map → chunk-L5O4NWQO.mjs.map} +1 -1
- package/dist/{chunk-Y2AYFG4E.js → chunk-MT4FJRMD.js} +4 -4
- package/dist/{chunk-Y2AYFG4E.js.map → chunk-MT4FJRMD.js.map} +1 -1
- package/dist/{chunk-CF7GOUBQ.js → chunk-OWJIKCR2.js} +13 -13
- package/dist/{chunk-CF7GOUBQ.js.map → chunk-OWJIKCR2.js.map} +1 -1
- package/dist/{chunk-RFRXS4PC.mjs → chunk-PFHXKWFT.mjs} +3 -3
- package/dist/{chunk-RFRXS4PC.mjs.map → chunk-PFHXKWFT.mjs.map} +1 -1
- package/dist/{chunk-BW67WFHT.mjs → chunk-PI2C3S6A.mjs} +3 -3
- package/dist/{chunk-BW67WFHT.mjs.map → chunk-PI2C3S6A.mjs.map} +1 -1
- package/dist/{chunk-ERCDMBRT.js → chunk-PYQLY2RH.js} +168 -167
- package/dist/chunk-PYQLY2RH.js.map +1 -0
- package/dist/{chunk-UE2RDQIK.js → chunk-QIUVK4BI.js} +77 -77
- package/dist/{chunk-UE2RDQIK.js.map → chunk-QIUVK4BI.js.map} +1 -1
- package/dist/{chunk-RLVOG5OQ.mjs → chunk-R3Q5RXXO.mjs} +3 -3
- package/dist/{chunk-RLVOG5OQ.mjs.map → chunk-R3Q5RXXO.mjs.map} +1 -1
- package/dist/{chunk-QBFE7ABE.mjs → chunk-R6O57NTJ.mjs} +6 -6
- package/dist/{chunk-QBFE7ABE.mjs.map → chunk-R6O57NTJ.mjs.map} +1 -1
- package/dist/{chunk-TUQLZ4QD.js → chunk-RQBTLFYH.js} +5 -5
- package/dist/{chunk-TUQLZ4QD.js.map → chunk-RQBTLFYH.js.map} +1 -1
- package/dist/{chunk-YV7F7IXG.js → chunk-SFFSXC5E.js} +36 -36
- package/dist/{chunk-YV7F7IXG.js.map → chunk-SFFSXC5E.js.map} +1 -1
- package/dist/{chunk-RLLP7VQJ.js → chunk-U6XA2OYE.js} +63 -29
- package/dist/chunk-U6XA2OYE.js.map +1 -0
- package/dist/{chunk-CUWPLPVY.mjs → chunk-ULEPJXTN.mjs} +3 -3
- package/dist/{chunk-CUWPLPVY.mjs.map → chunk-ULEPJXTN.mjs.map} +1 -1
- package/dist/{chunk-PGVZKMOA.js → chunk-VMIAMBCP.js} +39 -39
- package/dist/{chunk-PGVZKMOA.js.map → chunk-VMIAMBCP.js.map} +1 -1
- package/dist/{chunk-VV6SYMPM.mjs → chunk-WKCR4KVQ.mjs} +3 -3
- package/dist/{chunk-VV6SYMPM.mjs.map → chunk-WKCR4KVQ.mjs.map} +1 -1
- package/dist/{chunk-AL73YAV4.mjs → chunk-YV2SE5LS.mjs} +3 -3
- package/dist/{chunk-AL73YAV4.mjs.map → chunk-YV2SE5LS.mjs.map} +1 -1
- package/dist/index.d.mts +63 -16
- package/dist/index.d.ts +63 -16
- package/dist/index.js +704 -704
- package/dist/index.mjs +1 -1
- package/dist/platform/admin/index.js +10 -10
- package/dist/platform/admin/index.mjs +4 -4
- package/dist/platform/agents-workspace.js +6 -6
- package/dist/platform/agents-workspace.mjs +5 -5
- package/dist/platform/app-shell.js +3 -3
- package/dist/platform/app-shell.mjs +2 -2
- package/dist/platform/auth/index.js +27 -27
- package/dist/platform/auth/index.mjs +4 -4
- package/dist/platform/billing/index.js +3 -3
- package/dist/platform/billing/index.mjs +2 -2
- package/dist/platform/impersonation/index.js +3 -3
- package/dist/platform/impersonation/index.mjs +2 -2
- package/dist/platform/index.d.mts +1 -1
- package/dist/platform/index.d.ts +1 -1
- package/dist/platform/index.js +82 -82
- package/dist/platform/index.mjs +18 -18
- package/dist/platform/pages/index.d.mts +8 -0
- package/dist/platform/pages/index.d.ts +8 -0
- package/dist/platform/pages/index.js +317 -201
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +143 -27
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +7 -7
- package/dist/platform/settings/index.mjs +6 -6
- package/dist/platform/workflow-canvas-shell.js +4 -4
- package/dist/platform/workflow-canvas-shell.mjs +3 -3
- package/package.json +1 -1
- package/dist/chunk-AGGOHPMZ.mjs.map +0 -1
- package/dist/chunk-ERCDMBRT.js.map +0 -1
- package/dist/chunk-FSBR4RCK.js.map +0 -1
- package/dist/chunk-RLLP7VQJ.js.map +0 -1
- package/dist/chunk-SEYUYGER.mjs.map +0 -1
- package/dist/chunk-SQ4KGLBZ.mjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkF5UDX6JA_js = require('./chunk-F5UDX6JA.js');
|
|
5
|
+
var chunkK4M4B6ME_js = require('./chunk-K4M4B6ME.js');
|
|
6
6
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
7
7
|
var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
|
|
8
8
|
var react = require('react');
|
|
@@ -40,11 +40,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
40
40
|
const isCompact = data.displayMode === "compact";
|
|
41
41
|
if (!config) {
|
|
42
42
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
43
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
47
|
-
|
|
43
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeRunningIndicator, { nodeId: id }),
|
|
44
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
46
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
47
|
+
chunkF5UDX6JA_js.NodeCardHeader,
|
|
48
48
|
{
|
|
49
49
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-6 w-6 text-white" }),
|
|
50
50
|
title: data.label || "Model Provider",
|
|
@@ -52,8 +52,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
52
52
|
iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
|
|
53
53
|
}
|
|
54
54
|
) }),
|
|
55
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
55
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
57
57
|
] });
|
|
58
58
|
}
|
|
59
59
|
const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
|
|
@@ -62,18 +62,18 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
62
62
|
const isConfigured = !!(config.credentialRef || config.apiKeyRef);
|
|
63
63
|
const logo = PROVIDER_LOGOS[config.providerType];
|
|
64
64
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
65
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
66
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
65
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeRunningIndicator, { nodeId: id }),
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
67
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
68
68
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
69
69
|
"button",
|
|
70
70
|
{
|
|
71
71
|
type: "button",
|
|
72
72
|
onClick: () => data.onEdit?.(id),
|
|
73
73
|
className: "w-full text-left",
|
|
74
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
74
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkF5UDX6JA_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
|
|
75
75
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
76
|
-
|
|
76
|
+
chunkF5UDX6JA_js.NodeCardHeader,
|
|
77
77
|
{
|
|
78
78
|
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" }),
|
|
79
79
|
title: displayName,
|
|
@@ -81,11 +81,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
81
81
|
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"}`
|
|
82
82
|
}
|
|
83
83
|
),
|
|
84
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
85
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
-
regionLabel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
87
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
-
config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
84
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { className: "rounded-full bg-slate-100 px-2 py-0.5 text-[10px] font-semibold text-slate-700 dark:bg-slate-500/20 dark:text-slate-300", children: providerLabel }),
|
|
86
|
+
regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: regionLabel }),
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-medium ${isConfigured ? "bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-300" : "bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300"}`, children: isConfigured ? "Configured" : "Setup needed" }),
|
|
88
|
+
config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkF5UDX6JA_js.NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: [
|
|
89
89
|
config.modelFilter.length,
|
|
90
90
|
" models"
|
|
91
91
|
] })
|
|
@@ -93,8 +93,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
93
93
|
] })
|
|
94
94
|
}
|
|
95
95
|
),
|
|
96
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
97
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
96
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
98
98
|
] });
|
|
99
99
|
});
|
|
100
100
|
var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected }) {
|
|
@@ -103,10 +103,10 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
|
|
|
103
103
|
const isCompact = data.displayMode === "compact";
|
|
104
104
|
const keyPreview = config.key ? config.key.slice(0, 30) : "";
|
|
105
105
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
106
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
106
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeRunningIndicator, { nodeId: id }),
|
|
107
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
|
|
108
108
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
109
|
-
|
|
109
|
+
chunkF5UDX6JA_js.NodeInteractiveCard,
|
|
110
110
|
{
|
|
111
111
|
nodeId: id,
|
|
112
112
|
onEdit,
|
|
@@ -115,27 +115,27 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
|
|
|
115
115
|
nodeType: "s3_write",
|
|
116
116
|
children: [
|
|
117
117
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
118
|
-
|
|
118
|
+
chunkF5UDX6JA_js.NodeCardHeader,
|
|
119
119
|
{
|
|
120
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
120
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
|
|
121
121
|
title: label,
|
|
122
122
|
description: t("s3WriteNodeDescription"),
|
|
123
123
|
compact: isCompact,
|
|
124
124
|
iconClassName: ""
|
|
125
125
|
}
|
|
126
126
|
),
|
|
127
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
127
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkF5UDX6JA_js.NodeCardMeta, { compact: isCompact, children: [
|
|
128
128
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
129
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
130
|
-
config.bucket && /* @__PURE__ */ jsxRuntime.jsx(
|
|
129
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
|
|
130
|
+
config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
|
|
131
131
|
keyPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: keyPreview })
|
|
132
132
|
] }),
|
|
133
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
133
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
134
134
|
] })
|
|
135
135
|
]
|
|
136
136
|
}
|
|
137
137
|
),
|
|
138
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkF5UDX6JA_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
|
|
139
139
|
] });
|
|
140
140
|
});
|
|
141
141
|
function AnthropicModelIcon({ className }) {
|
|
@@ -199,7 +199,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
199
199
|
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: [
|
|
200
200
|
/* @__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." }),
|
|
201
201
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
202
|
-
|
|
202
|
+
chunkK4M4B6ME_js.Button,
|
|
203
203
|
{
|
|
204
204
|
type: "button",
|
|
205
205
|
outline: true,
|
|
@@ -263,7 +263,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
263
263
|
},
|
|
264
264
|
index
|
|
265
265
|
)),
|
|
266
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
266
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
|
|
267
267
|
] })
|
|
268
268
|
] });
|
|
269
269
|
}
|
|
@@ -286,7 +286,7 @@ function FieldEditor({
|
|
|
286
286
|
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: [
|
|
287
287
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_140px_auto_auto] items-end gap-2", children: [
|
|
288
288
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
289
|
-
|
|
289
|
+
chunkK4M4B6ME_js.FormInput,
|
|
290
290
|
{
|
|
291
291
|
label: "Name",
|
|
292
292
|
value: field.name,
|
|
@@ -295,7 +295,7 @@ function FieldEditor({
|
|
|
295
295
|
}
|
|
296
296
|
),
|
|
297
297
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
298
|
-
|
|
298
|
+
chunkK4M4B6ME_js.FormSelect,
|
|
299
299
|
{
|
|
300
300
|
label: "Type",
|
|
301
301
|
value: field.type,
|
|
@@ -315,10 +315,10 @@ function FieldEditor({
|
|
|
315
315
|
),
|
|
316
316
|
"Required"
|
|
317
317
|
] }),
|
|
318
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
318
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
|
|
319
319
|
] }),
|
|
320
320
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
321
|
-
|
|
321
|
+
chunkK4M4B6ME_js.FormInput,
|
|
322
322
|
{
|
|
323
323
|
label: "Description (optional)",
|
|
324
324
|
value: field.description,
|
|
@@ -611,13 +611,13 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
611
611
|
] });
|
|
612
612
|
}
|
|
613
613
|
function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFramework, setSelectedFramework, markDirty, connectedProviderTypes }) {
|
|
614
|
-
const frameworkKeys = Object.keys(
|
|
614
|
+
const frameworkKeys = Object.keys(chunkF5UDX6JA_js.FRAMEWORK_META);
|
|
615
615
|
const hasProviderConstraints = connectedProviderTypes.length > 0;
|
|
616
|
-
const compatibleModels =
|
|
616
|
+
const compatibleModels = chunkF5UDX6JA_js.getCompatibleModels(models, selectedFramework);
|
|
617
617
|
const handleFrameworkChange = react.useCallback((newFramework) => {
|
|
618
618
|
setSelectedFramework(newFramework);
|
|
619
|
-
if (!
|
|
620
|
-
const compatible =
|
|
619
|
+
if (!chunkF5UDX6JA_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
|
|
620
|
+
const compatible = chunkF5UDX6JA_js.getCompatibleModels(models, newFramework);
|
|
621
621
|
if (compatible.length > 0) {
|
|
622
622
|
setSelectedModelId(compatible[0].id);
|
|
623
623
|
}
|
|
@@ -628,10 +628,10 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
628
628
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
629
629
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-gray-500 dark:text-gray-400", children: t("agentDrawer.framework") }),
|
|
630
630
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
|
|
631
|
-
const meta =
|
|
631
|
+
const meta = chunkF5UDX6JA_js.FRAMEWORK_META[key];
|
|
632
632
|
const isSelected = key === selectedFramework;
|
|
633
|
-
const compatCount =
|
|
634
|
-
const isCompatibleWithProviders = !hasProviderConstraints ||
|
|
633
|
+
const compatCount = chunkF5UDX6JA_js.getCompatibleModels(models, key).length;
|
|
634
|
+
const isCompatibleWithProviders = !hasProviderConstraints || chunkF5UDX6JA_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
|
|
635
635
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
636
636
|
"button",
|
|
637
637
|
{
|
|
@@ -663,7 +663,7 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
663
663
|
] }),
|
|
664
664
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: models.map((model) => {
|
|
665
665
|
const isSelected = model.id === selectedModelId;
|
|
666
|
-
const isCompatible =
|
|
666
|
+
const isCompatible = chunkF5UDX6JA_js.isModelCompatibleWithFramework(model.id, selectedFramework);
|
|
667
667
|
const { IconComponent, color, providerLabel } = getModelIcon(model.id);
|
|
668
668
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
669
669
|
"button",
|
|
@@ -821,7 +821,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
821
821
|
] }),
|
|
822
822
|
tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.description }),
|
|
823
823
|
tool.compatibleFrameworks && tool.compatibleFrameworks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex flex-wrap gap-0.5", children: tool.compatibleFrameworks.map((framework) => {
|
|
824
|
-
const meta =
|
|
824
|
+
const meta = chunkF5UDX6JA_js.getFrameworkMeta(framework);
|
|
825
825
|
const isCurrentFw = framework === agentFramework;
|
|
826
826
|
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: [
|
|
827
827
|
/* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
|
|
@@ -838,7 +838,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
838
838
|
event.stopPropagation();
|
|
839
839
|
},
|
|
840
840
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
841
|
-
|
|
841
|
+
chunkK4M4B6ME_js.ToggleSwitch,
|
|
842
842
|
{
|
|
843
843
|
checked: isEnabled,
|
|
844
844
|
onChange: () => onToggle(tool.agentToolId),
|
|
@@ -886,7 +886,7 @@ function EngineTab({
|
|
|
886
886
|
const compatibleProviders = findCompatibleProviders(selectedModelId, modelProviders);
|
|
887
887
|
const configuredCompatible = compatibleProviders.filter((p) => p.configured);
|
|
888
888
|
const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
|
|
889
|
-
const frameworkMeta =
|
|
889
|
+
const frameworkMeta = chunkF5UDX6JA_js.getFrameworkMeta(selectedFramework);
|
|
890
890
|
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";
|
|
891
891
|
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: [
|
|
892
892
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1030,9 +1030,9 @@ function EngineTab({
|
|
|
1030
1030
|
}
|
|
1031
1031
|
function AgentModal({ onSaved, onPersist }) {
|
|
1032
1032
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
1033
|
-
const activeModal =
|
|
1034
|
-
const agentData =
|
|
1035
|
-
const closeModal =
|
|
1033
|
+
const activeModal = chunkF5UDX6JA_js.useModalStore((s) => s.activeModal);
|
|
1034
|
+
const agentData = chunkF5UDX6JA_js.useModalStore((s) => s.agentData);
|
|
1035
|
+
const closeModal = chunkF5UDX6JA_js.useModalStore((s) => s.closeModal);
|
|
1036
1036
|
const open = activeModal === "agent";
|
|
1037
1037
|
const agent = agentData?.agent ?? null;
|
|
1038
1038
|
const models = agentData?.models ?? [];
|
|
@@ -1178,19 +1178,21 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1178
1178
|
const effectiveAvatarUrl = avatarUrl || agent.avatar;
|
|
1179
1179
|
const fieldCard = "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-xs 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";
|
|
1180
1180
|
const fieldLabel = "text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400";
|
|
1181
|
-
const
|
|
1182
|
-
|
|
1181
|
+
const avatarInitial = (displayName || agent.name).charAt(0).toUpperCase();
|
|
1182
|
+
const avatarNode = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1183
|
+
chunkK4M4B6ME_js.Avatar,
|
|
1183
1184
|
{
|
|
1184
|
-
src: effectiveAvatarUrl,
|
|
1185
|
+
src: effectiveAvatarUrl || void 0,
|
|
1185
1186
|
alt: displayName || agent.name,
|
|
1186
|
-
|
|
1187
|
-
|
|
1187
|
+
initials: effectiveAvatarUrl ? void 0 : avatarInitial,
|
|
1188
|
+
tone: effectiveAvatarUrl ? void 0 : "indigo",
|
|
1189
|
+
className: "size-12"
|
|
1188
1190
|
}
|
|
1189
|
-
)
|
|
1191
|
+
);
|
|
1190
1192
|
const statusPill = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
1191
1193
|
/* @__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" }) }),
|
|
1192
1194
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1193
|
-
|
|
1195
|
+
chunkK4M4B6ME_js.ToggleSwitch,
|
|
1194
1196
|
{
|
|
1195
1197
|
size: "sm",
|
|
1196
1198
|
color: "green",
|
|
@@ -1204,10 +1206,9 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1204
1206
|
)
|
|
1205
1207
|
] });
|
|
1206
1208
|
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(
|
|
1207
|
-
|
|
1209
|
+
chunkK4M4B6ME_js.HeroBlock,
|
|
1208
1210
|
{
|
|
1209
1211
|
icon: avatarNode,
|
|
1210
|
-
iconShape: "round",
|
|
1211
1212
|
iconBackground: "none",
|
|
1212
1213
|
iconSize: "lg",
|
|
1213
1214
|
headingLevel: "h2",
|
|
@@ -1268,7 +1269,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1268
1269
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `font-medium ${autosaveColor}`, children: autosaveLabel })
|
|
1269
1270
|
] });
|
|
1270
1271
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1271
|
-
|
|
1272
|
+
chunkK4M4B6ME_js.GlassModal,
|
|
1272
1273
|
{
|
|
1273
1274
|
open,
|
|
1274
1275
|
onClose: handleClose,
|
|
@@ -1285,7 +1286,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1285
1286
|
},
|
|
1286
1287
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
1287
1288
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1288
|
-
|
|
1289
|
+
chunkK4M4B6ME_js.SectionCard,
|
|
1289
1290
|
{
|
|
1290
1291
|
variant: "glass",
|
|
1291
1292
|
padded: false,
|
|
@@ -1325,7 +1326,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1325
1326
|
}
|
|
1326
1327
|
),
|
|
1327
1328
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1328
|
-
|
|
1329
|
+
chunkK4M4B6ME_js.SectionCard,
|
|
1329
1330
|
{
|
|
1330
1331
|
variant: "glass",
|
|
1331
1332
|
padded: false,
|
|
@@ -1353,7 +1354,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1353
1354
|
}
|
|
1354
1355
|
),
|
|
1355
1356
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1356
|
-
|
|
1357
|
+
chunkK4M4B6ME_js.SectionCard,
|
|
1357
1358
|
{
|
|
1358
1359
|
variant: "glass",
|
|
1359
1360
|
padded: false,
|
|
@@ -1476,7 +1477,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1476
1477
|
const markDirty = useSubworkflowStore((s) => s.markDirty);
|
|
1477
1478
|
const markSaved = useSubworkflowStore((s) => s.markSaved);
|
|
1478
1479
|
const closeModal = useSubworkflowStore((s) => s.closeModal);
|
|
1479
|
-
const agentBehind =
|
|
1480
|
+
const agentBehind = chunkF5UDX6JA_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
|
|
1480
1481
|
const isCreateMode = !tool?.toolId;
|
|
1481
1482
|
const initialGraph = react.useMemo(() => {
|
|
1482
1483
|
const config = tool?.config;
|
|
@@ -1505,9 +1506,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1505
1506
|
}, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
|
|
1506
1507
|
if (!tool) return null;
|
|
1507
1508
|
const categoryKey = category ?? "external";
|
|
1508
|
-
const gradient = tool.color ??
|
|
1509
|
-
const categoryPill =
|
|
1510
|
-
const IconComponent =
|
|
1509
|
+
const gradient = tool.color ?? chunkF5UDX6JA_js.CATEGORY_COLORS[categoryKey] ?? chunkF5UDX6JA_js.CATEGORY_COLORS.external;
|
|
1510
|
+
const categoryPill = chunkF5UDX6JA_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkF5UDX6JA_js.CATEGORY_PILL_COLORS.external;
|
|
1511
|
+
const IconComponent = chunkF5UDX6JA_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
|
|
1511
1512
|
const graph = latestGraphRef.current;
|
|
1512
1513
|
const startNode = graph.nodes.find((n) => n.type === "start");
|
|
1513
1514
|
const endNode = graph.nodes.find((n) => n.type === "end");
|
|
@@ -1540,7 +1541,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1540
1541
|
] })
|
|
1541
1542
|
] });
|
|
1542
1543
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1543
|
-
|
|
1544
|
+
chunkK4M4B6ME_js.GlassModal,
|
|
1544
1545
|
{
|
|
1545
1546
|
open,
|
|
1546
1547
|
onClose: closeModal,
|
|
@@ -1572,7 +1573,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1572
1573
|
{
|
|
1573
1574
|
type: "button",
|
|
1574
1575
|
onClick: () => setCategory(cat),
|
|
1575
|
-
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${
|
|
1576
|
+
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkF5UDX6JA_js.CATEGORY_PILL_COLORS[cat] ?? chunkF5UDX6JA_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"}`,
|
|
1576
1577
|
children: cat
|
|
1577
1578
|
},
|
|
1578
1579
|
cat
|
|
@@ -1659,7 +1660,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1659
1660
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
|
|
1660
1661
|
] }),
|
|
1661
1662
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1662
|
-
|
|
1663
|
+
chunkF5UDX6JA_js.WorkflowCanvas,
|
|
1663
1664
|
{
|
|
1664
1665
|
initialGraph,
|
|
1665
1666
|
agents: [],
|
|
@@ -1675,9 +1676,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1675
1676
|
}
|
|
1676
1677
|
function PipelineSettingsModal({ onSave }) {
|
|
1677
1678
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
1678
|
-
const activeModal =
|
|
1679
|
-
const data =
|
|
1680
|
-
const closeModal =
|
|
1679
|
+
const activeModal = chunkF5UDX6JA_js.useModalStore((s) => s.activeModal);
|
|
1680
|
+
const data = chunkF5UDX6JA_js.useModalStore((s) => s.pipelineSettingsData);
|
|
1681
|
+
const closeModal = chunkF5UDX6JA_js.useModalStore((s) => s.closeModal);
|
|
1681
1682
|
const open = activeModal === "pipeline-settings";
|
|
1682
1683
|
const [nameValue, setNameValue] = react.useState("");
|
|
1683
1684
|
const [descriptionValue, setDescriptionValue] = react.useState("");
|
|
@@ -1739,7 +1740,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1739
1740
|
}
|
|
1740
1741
|
),
|
|
1741
1742
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1742
|
-
|
|
1743
|
+
chunkK4M4B6ME_js.Button,
|
|
1743
1744
|
{
|
|
1744
1745
|
type: "submit",
|
|
1745
1746
|
form: "pipeline-settings-form",
|
|
@@ -1754,7 +1755,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1754
1755
|
)
|
|
1755
1756
|
] });
|
|
1756
1757
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1757
|
-
|
|
1758
|
+
chunkK4M4B6ME_js.GlassModal,
|
|
1758
1759
|
{
|
|
1759
1760
|
open,
|
|
1760
1761
|
onClose: closeModal,
|
|
@@ -1768,7 +1769,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1768
1769
|
onSubmit: handleSubmit,
|
|
1769
1770
|
children: /* @__PURE__ */ jsxRuntime.jsxs("form", { id: "pipeline-settings-form", onSubmit: handleSubmit, className: "space-y-5", children: [
|
|
1770
1771
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1771
|
-
|
|
1772
|
+
chunkK4M4B6ME_js.FormInput,
|
|
1772
1773
|
{
|
|
1773
1774
|
label: t("pipelineName"),
|
|
1774
1775
|
value: nameValue,
|
|
@@ -1778,7 +1779,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1778
1779
|
}
|
|
1779
1780
|
),
|
|
1780
1781
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1781
|
-
|
|
1782
|
+
chunkK4M4B6ME_js.FormTextarea,
|
|
1782
1783
|
{
|
|
1783
1784
|
label: t("pipelineDescription"),
|
|
1784
1785
|
value: descriptionValue,
|
|
@@ -1789,7 +1790,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1789
1790
|
),
|
|
1790
1791
|
lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1791
1792
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1792
|
-
|
|
1793
|
+
chunkK4M4B6ME_js.FormInput,
|
|
1793
1794
|
{
|
|
1794
1795
|
label: t("pipelineSlug", { _: "Slug" }),
|
|
1795
1796
|
value: slugValue,
|
|
@@ -1916,7 +1917,7 @@ function RunReplayModal({
|
|
|
1916
1917
|
}
|
|
1917
1918
|
),
|
|
1918
1919
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1919
|
-
|
|
1920
|
+
chunkK4M4B6ME_js.Button,
|
|
1920
1921
|
{
|
|
1921
1922
|
type: "submit",
|
|
1922
1923
|
form: "run-replay-form",
|
|
@@ -1931,7 +1932,7 @@ function RunReplayModal({
|
|
|
1931
1932
|
] })
|
|
1932
1933
|
] });
|
|
1933
1934
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1934
|
-
|
|
1935
|
+
chunkK4M4B6ME_js.GlassModal,
|
|
1935
1936
|
{
|
|
1936
1937
|
open,
|
|
1937
1938
|
onClose,
|
|
@@ -2005,7 +2006,7 @@ function RowEditor({
|
|
|
2005
2006
|
]
|
|
2006
2007
|
}
|
|
2007
2008
|
) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2008
|
-
|
|
2009
|
+
chunkK4M4B6ME_js.FormTextarea,
|
|
2009
2010
|
{
|
|
2010
2011
|
value: row.value,
|
|
2011
2012
|
onValueChange: (v) => onChange({ value: v }),
|
|
@@ -2013,7 +2014,7 @@ function RowEditor({
|
|
|
2013
2014
|
className: "font-mono"
|
|
2014
2015
|
}
|
|
2015
2016
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2016
|
-
|
|
2017
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2017
2018
|
{
|
|
2018
2019
|
type: row.kind === "number" ? "number" : "text",
|
|
2019
2020
|
value: row.value,
|
|
@@ -2117,7 +2118,7 @@ function ExecutionTimelinePanel({
|
|
|
2117
2118
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate font-medium text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2118
2119
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2119
2120
|
] }),
|
|
2120
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2121
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkK4M4B6ME_js.Badge, { color: meta.color, children: [
|
|
2121
2122
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "mr-1 h-3 w-3" }),
|
|
2122
2123
|
labels[entry.status]
|
|
2123
2124
|
] })
|
|
@@ -2147,7 +2148,7 @@ function NodeInspector({
|
|
|
2147
2148
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2148
2149
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2149
2150
|
] }),
|
|
2150
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2151
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Badge, { color: meta.color, children: labels[entry.status] })
|
|
2151
2152
|
] }),
|
|
2152
2153
|
/* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-2 gap-3 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
2153
2154
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -2317,7 +2318,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
|
|
|
2317
2318
|
};
|
|
2318
2319
|
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: [
|
|
2319
2320
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2320
|
-
|
|
2321
|
+
chunkK4M4B6ME_js.FormSelect,
|
|
2321
2322
|
{
|
|
2322
2323
|
label: "Operator",
|
|
2323
2324
|
value: value.operator,
|
|
@@ -2340,7 +2341,7 @@ function SimpleEditor({
|
|
|
2340
2341
|
const isTruthy = value.operator === "truthy";
|
|
2341
2342
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2342
2343
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2343
|
-
|
|
2344
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2344
2345
|
{
|
|
2345
2346
|
label: "Field",
|
|
2346
2347
|
hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.category`",
|
|
@@ -2350,7 +2351,7 @@ function SimpleEditor({
|
|
|
2350
2351
|
}
|
|
2351
2352
|
),
|
|
2352
2353
|
!isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2353
|
-
|
|
2354
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2354
2355
|
{
|
|
2355
2356
|
label: "Value",
|
|
2356
2357
|
hint: "Literal. Numeric operators coerce via `as f64`.",
|
|
@@ -2366,7 +2367,7 @@ function ThresholdEditor({
|
|
|
2366
2367
|
}) {
|
|
2367
2368
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
|
|
2368
2369
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2369
|
-
|
|
2370
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2370
2371
|
{
|
|
2371
2372
|
label: "Field",
|
|
2372
2373
|
value: value.field ?? "",
|
|
@@ -2375,7 +2376,7 @@ function ThresholdEditor({
|
|
|
2375
2376
|
}
|
|
2376
2377
|
),
|
|
2377
2378
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2378
|
-
|
|
2379
|
+
chunkK4M4B6ME_js.FormSelect,
|
|
2379
2380
|
{
|
|
2380
2381
|
label: "Direction",
|
|
2381
2382
|
value: value.comparison ?? "gte",
|
|
@@ -2389,7 +2390,7 @@ function ThresholdEditor({
|
|
|
2389
2390
|
}
|
|
2390
2391
|
),
|
|
2391
2392
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2392
|
-
|
|
2393
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2393
2394
|
{
|
|
2394
2395
|
label: "Threshold",
|
|
2395
2396
|
type: "number",
|
|
@@ -2406,7 +2407,7 @@ function RegexEditor({
|
|
|
2406
2407
|
}) {
|
|
2407
2408
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2408
2409
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2409
|
-
|
|
2410
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2410
2411
|
{
|
|
2411
2412
|
label: "Field",
|
|
2412
2413
|
value: value.field ?? "",
|
|
@@ -2415,7 +2416,7 @@ function RegexEditor({
|
|
|
2415
2416
|
}
|
|
2416
2417
|
),
|
|
2417
2418
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2418
|
-
|
|
2419
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2419
2420
|
{
|
|
2420
2421
|
label: "Pattern",
|
|
2421
2422
|
hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
|
|
@@ -2443,7 +2444,7 @@ function TimeWindowEditor({
|
|
|
2443
2444
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2444
2445
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2445
2446
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2446
|
-
|
|
2447
|
+
chunkK4M4B6ME_js.FormSelect,
|
|
2447
2448
|
{
|
|
2448
2449
|
label: "Timezone",
|
|
2449
2450
|
value: value.timezone ?? "UTC",
|
|
@@ -2452,7 +2453,7 @@ function TimeWindowEditor({
|
|
|
2452
2453
|
}
|
|
2453
2454
|
),
|
|
2454
2455
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2455
|
-
|
|
2456
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2456
2457
|
{
|
|
2457
2458
|
label: "Timestamp field (optional)",
|
|
2458
2459
|
hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
|
|
@@ -2465,7 +2466,7 @@ function TimeWindowEditor({
|
|
|
2465
2466
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2466
2467
|
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: [
|
|
2467
2468
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2468
|
-
|
|
2469
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2469
2470
|
{
|
|
2470
2471
|
label: `Start (hour)`,
|
|
2471
2472
|
type: "number",
|
|
@@ -2476,7 +2477,7 @@ function TimeWindowEditor({
|
|
|
2476
2477
|
}
|
|
2477
2478
|
),
|
|
2478
2479
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2479
|
-
|
|
2480
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2480
2481
|
{
|
|
2481
2482
|
label: `End (hour)`,
|
|
2482
2483
|
type: "number",
|
|
@@ -2486,9 +2487,9 @@ function TimeWindowEditor({
|
|
|
2486
2487
|
onValueChange: (raw) => update(index, { endHour: clampHour(raw, 24) })
|
|
2487
2488
|
}
|
|
2488
2489
|
),
|
|
2489
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2490
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2490
2491
|
] }, index)),
|
|
2491
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2492
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
|
|
2492
2493
|
] })
|
|
2493
2494
|
] });
|
|
2494
2495
|
}
|
|
@@ -2511,7 +2512,7 @@ function BooleanGroupEditor({
|
|
|
2511
2512
|
});
|
|
2512
2513
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2513
2514
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2514
|
-
|
|
2515
|
+
chunkK4M4B6ME_js.FormSelect,
|
|
2515
2516
|
{
|
|
2516
2517
|
label: "Combinator",
|
|
2517
2518
|
value: value.combinator ?? "and",
|
|
@@ -2529,9 +2530,9 @@ function BooleanGroupEditor({
|
|
|
2529
2530
|
depth
|
|
2530
2531
|
}
|
|
2531
2532
|
),
|
|
2532
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2533
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
|
|
2533
2534
|
] }, index)),
|
|
2534
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2535
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
|
|
2535
2536
|
] })
|
|
2536
2537
|
] });
|
|
2537
2538
|
}
|
|
@@ -2567,7 +2568,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2567
2568
|
};
|
|
2568
2569
|
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: [
|
|
2569
2570
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2570
|
-
|
|
2571
|
+
chunkK4M4B6ME_js.FormSelect,
|
|
2571
2572
|
{
|
|
2572
2573
|
label: "Action type",
|
|
2573
2574
|
value: type,
|
|
@@ -2577,7 +2578,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2577
2578
|
),
|
|
2578
2579
|
type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2579
2580
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2580
|
-
|
|
2581
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2581
2582
|
{
|
|
2582
2583
|
label: "Multiplier",
|
|
2583
2584
|
type: "number",
|
|
@@ -2587,7 +2588,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2587
2588
|
}
|
|
2588
2589
|
),
|
|
2589
2590
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2590
|
-
|
|
2591
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2591
2592
|
{
|
|
2592
2593
|
label: "Reason code",
|
|
2593
2594
|
value: stringParam(params.reason),
|
|
@@ -2597,7 +2598,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2597
2598
|
)
|
|
2598
2599
|
] }),
|
|
2599
2600
|
type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2600
|
-
|
|
2601
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2601
2602
|
{
|
|
2602
2603
|
label: "Floor (fraction, e.g. 0.08)",
|
|
2603
2604
|
type: "number",
|
|
@@ -2607,7 +2608,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2607
2608
|
}
|
|
2608
2609
|
),
|
|
2609
2610
|
type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2610
|
-
|
|
2611
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2611
2612
|
{
|
|
2612
2613
|
label: "Tolerance (fraction)",
|
|
2613
2614
|
type: "number",
|
|
@@ -2617,7 +2618,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2617
2618
|
}
|
|
2618
2619
|
),
|
|
2619
2620
|
type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2620
|
-
|
|
2621
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2621
2622
|
{
|
|
2622
2623
|
label: "Approval limit (fraction)",
|
|
2623
2624
|
type: "number",
|
|
@@ -2627,7 +2628,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2627
2628
|
}
|
|
2628
2629
|
),
|
|
2629
2630
|
type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2630
|
-
|
|
2631
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2631
2632
|
{
|
|
2632
2633
|
label: "Step (e.g. 0.009)",
|
|
2633
2634
|
type: "number",
|
|
@@ -2638,7 +2639,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2638
2639
|
),
|
|
2639
2640
|
type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2640
2641
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2641
|
-
|
|
2642
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2642
2643
|
{
|
|
2643
2644
|
label: "Channel",
|
|
2644
2645
|
value: stringParam(params.channel),
|
|
@@ -2647,7 +2648,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2647
2648
|
}
|
|
2648
2649
|
),
|
|
2649
2650
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2650
|
-
|
|
2651
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2651
2652
|
{
|
|
2652
2653
|
label: "Severity",
|
|
2653
2654
|
value: stringParam(params.severity),
|
|
@@ -2685,7 +2686,7 @@ function CustomParamsEditor({
|
|
|
2685
2686
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2686
2687
|
entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
|
|
2687
2688
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2688
|
-
|
|
2689
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2689
2690
|
{
|
|
2690
2691
|
label: "Key",
|
|
2691
2692
|
value: key,
|
|
@@ -2693,16 +2694,16 @@ function CustomParamsEditor({
|
|
|
2693
2694
|
}
|
|
2694
2695
|
),
|
|
2695
2696
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2696
|
-
|
|
2697
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2697
2698
|
{
|
|
2698
2699
|
label: "Value",
|
|
2699
2700
|
value: String(value ?? ""),
|
|
2700
2701
|
onValueChange: (raw) => update(index, key, raw)
|
|
2701
2702
|
}
|
|
2702
2703
|
),
|
|
2703
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2704
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2704
2705
|
] }, index)),
|
|
2705
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2706
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
|
|
2706
2707
|
] });
|
|
2707
2708
|
}
|
|
2708
2709
|
function numberParam(value, fallback) {
|
|
@@ -2732,9 +2733,9 @@ function RuleForm({ value, onChange }) {
|
|
|
2732
2733
|
);
|
|
2733
2734
|
const update = (key, v) => onChange({ ...value, [key]: v });
|
|
2734
2735
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
2735
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2736
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkK4M4B6ME_js.FormGrid, { children: [
|
|
2736
2737
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2737
|
-
|
|
2738
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2738
2739
|
{
|
|
2739
2740
|
label: "Name",
|
|
2740
2741
|
required: true,
|
|
@@ -2743,7 +2744,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2743
2744
|
}
|
|
2744
2745
|
),
|
|
2745
2746
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2746
|
-
|
|
2747
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2747
2748
|
{
|
|
2748
2749
|
label: "Priority",
|
|
2749
2750
|
type: "number",
|
|
@@ -2753,7 +2754,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2753
2754
|
}
|
|
2754
2755
|
),
|
|
2755
2756
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2756
|
-
|
|
2757
|
+
chunkK4M4B6ME_js.FormSelect,
|
|
2757
2758
|
{
|
|
2758
2759
|
label: "Enabled",
|
|
2759
2760
|
value: value.enabled ? "true" : "false",
|
|
@@ -2765,7 +2766,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2765
2766
|
}
|
|
2766
2767
|
),
|
|
2767
2768
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2768
|
-
|
|
2769
|
+
chunkK4M4B6ME_js.FormTextarea,
|
|
2769
2770
|
{
|
|
2770
2771
|
label: "Description",
|
|
2771
2772
|
rows: 2,
|
|
@@ -2777,7 +2778,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2777
2778
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2778
2779
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2779
2780
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Condition" }),
|
|
2780
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2781
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Badge, { color: "indigo", children: value.condition.operator })
|
|
2781
2782
|
] }),
|
|
2782
2783
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2783
2784
|
RuleConditionBuilder,
|
|
@@ -2790,7 +2791,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2790
2791
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2791
2792
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2792
2793
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Action on match" }),
|
|
2793
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2794
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Badge, { color: "fuchsia", children: value.action.type })
|
|
2794
2795
|
] }),
|
|
2795
2796
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2796
2797
|
RuleActionBuilder,
|
|
@@ -2812,7 +2813,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2812
2813
|
),
|
|
2813
2814
|
showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2814
2815
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2815
|
-
|
|
2816
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2816
2817
|
{
|
|
2817
2818
|
label: "Valid from (ISO 8601)",
|
|
2818
2819
|
type: "datetime-local",
|
|
@@ -2821,7 +2822,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2821
2822
|
}
|
|
2822
2823
|
),
|
|
2823
2824
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2824
|
-
|
|
2825
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2825
2826
|
{
|
|
2826
2827
|
label: "Valid until (ISO 8601)",
|
|
2827
2828
|
type: "datetime-local",
|
|
@@ -2830,7 +2831,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2830
2831
|
}
|
|
2831
2832
|
),
|
|
2832
2833
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2833
|
-
|
|
2834
|
+
chunkK4M4B6ME_js.FormSelect,
|
|
2834
2835
|
{
|
|
2835
2836
|
label: "Status",
|
|
2836
2837
|
value: value.status ?? "active",
|
|
@@ -2839,7 +2840,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2839
2840
|
}
|
|
2840
2841
|
),
|
|
2841
2842
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2842
|
-
|
|
2843
|
+
chunkK4M4B6ME_js.FormInput,
|
|
2843
2844
|
{
|
|
2844
2845
|
label: "Tags (comma-separated)",
|
|
2845
2846
|
value: (value.tags ?? []).join(", "),
|
|
@@ -3026,8 +3027,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
|
|
|
3026
3027
|
] });
|
|
3027
3028
|
}
|
|
3028
3029
|
function LogicNodeItemCard({ item, translationFunction }) {
|
|
3029
|
-
const IconComponent =
|
|
3030
|
-
const gradient =
|
|
3030
|
+
const IconComponent = chunkF5UDX6JA_js.LOGIC_ICON_MAP[item.nodeType];
|
|
3031
|
+
const gradient = chunkF5UDX6JA_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
|
|
3031
3032
|
const defaultConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig(item.nodeType);
|
|
3032
3033
|
const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
|
|
3033
3034
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3098,7 +3099,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3098
3099
|
[entityTypes, normalizedQuery]
|
|
3099
3100
|
);
|
|
3100
3101
|
const filteredLogicItems = react.useMemo(() => {
|
|
3101
|
-
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !
|
|
3102
|
+
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkF5UDX6JA_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
|
|
3102
3103
|
if (!normalizedQuery) return visibleByDefault;
|
|
3103
3104
|
return visibleByDefault.filter(
|
|
3104
3105
|
(item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
|
|
@@ -3234,7 +3235,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3234
3235
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.category })
|
|
3235
3236
|
] }),
|
|
3236
3237
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3237
|
-
|
|
3238
|
+
chunkK4M4B6ME_js.ToggleSwitch,
|
|
3238
3239
|
{
|
|
3239
3240
|
checked: Boolean(tool.enabled),
|
|
3240
3241
|
onChange: () => {
|
|
@@ -3275,7 +3276,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3275
3276
|
] })
|
|
3276
3277
|
] }),
|
|
3277
3278
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3278
|
-
|
|
3279
|
+
chunkK4M4B6ME_js.ToggleSwitch,
|
|
3279
3280
|
{
|
|
3280
3281
|
checked: Boolean(rule.enabled),
|
|
3281
3282
|
onChange: () => {
|
|
@@ -3311,8 +3312,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3311
3312
|
limit: entity.defaultLimit
|
|
3312
3313
|
});
|
|
3313
3314
|
const dsLogo = getDatasourceLogo(entity.id);
|
|
3314
|
-
const EntityIcon =
|
|
3315
|
-
const entityGradient =
|
|
3315
|
+
const EntityIcon = chunkF5UDX6JA_js.getEntityIcon(entity.id);
|
|
3316
|
+
const entityGradient = chunkF5UDX6JA_js.getEntityGradient(entity.id);
|
|
3316
3317
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3317
3318
|
"div",
|
|
3318
3319
|
{
|
|
@@ -3332,7 +3333,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3332
3333
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3333
3334
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-slate-100 px-1.5 py-0.5 text-[9px] font-medium text-slate-600 dark:bg-white/10 dark:text-slate-300", children: "Read only" }),
|
|
3334
3335
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3335
|
-
|
|
3336
|
+
chunkK4M4B6ME_js.ToggleSwitch,
|
|
3336
3337
|
{
|
|
3337
3338
|
checked: true,
|
|
3338
3339
|
onChange: () => {
|
|
@@ -3667,9 +3668,9 @@ function formatDuration2(durationMs) {
|
|
|
3667
3668
|
}
|
|
3668
3669
|
function RunPanel({ open, onClose, onRun, onStop }) {
|
|
3669
3670
|
const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.runPanel");
|
|
3670
|
-
const nodes =
|
|
3671
|
-
const isRunning =
|
|
3672
|
-
const nodeResults =
|
|
3671
|
+
const nodes = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodes);
|
|
3672
|
+
const isRunning = chunkF5UDX6JA_js.useWorkflowStore((state) => state.isRunning);
|
|
3673
|
+
const nodeResults = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodeResults);
|
|
3673
3674
|
const startNode = nodes.find((node) => node.type === "start");
|
|
3674
3675
|
const hasEndNode = nodes.some((node) => node.type === "end");
|
|
3675
3676
|
const hasValidStartConfig = Boolean(
|
|
@@ -4000,8 +4001,8 @@ function inferVariables(config, nodeType) {
|
|
|
4000
4001
|
}
|
|
4001
4002
|
function VariableInspector({ open, onClose }) {
|
|
4002
4003
|
const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.variableInspector");
|
|
4003
|
-
const nodes =
|
|
4004
|
-
const edges =
|
|
4004
|
+
const nodes = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodes);
|
|
4005
|
+
const edges = chunkF5UDX6JA_js.useWorkflowStore((state) => state.edges);
|
|
4005
4006
|
const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
|
|
4006
4007
|
const toggleNodeExpansion = react.useCallback((nodeId) => {
|
|
4007
4008
|
setExpandedNodes((current) => {
|
|
@@ -4063,8 +4064,8 @@ function VariableInspector({ open, onClose }) {
|
|
|
4063
4064
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: translations("noNodes") })
|
|
4064
4065
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-gray-100 dark:divide-gray-800", children: nodeVariableEntries.map((entry) => {
|
|
4065
4066
|
const isExpanded = expandedNodes.has(entry.nodeId);
|
|
4066
|
-
const IconComponent =
|
|
4067
|
-
const gradient =
|
|
4067
|
+
const IconComponent = chunkF5UDX6JA_js.LOGIC_ICON_MAP[entry.nodeType];
|
|
4068
|
+
const gradient = chunkF5UDX6JA_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
|
|
4068
4069
|
const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
|
|
4069
4070
|
const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
|
|
4070
4071
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
|
|
@@ -4130,7 +4131,7 @@ function RunInputDialog({
|
|
|
4130
4131
|
onRun
|
|
4131
4132
|
}) {
|
|
4132
4133
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.runInputDialog");
|
|
4133
|
-
const nodes =
|
|
4134
|
+
const nodes = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodes);
|
|
4134
4135
|
const [values, setValues] = react.useState({});
|
|
4135
4136
|
const inputVariableNames = react.useMemo(() => {
|
|
4136
4137
|
const storeStartNode = nodes.find((node) => node.type === "start");
|
|
@@ -4157,7 +4158,7 @@ function RunInputDialog({
|
|
|
4157
4158
|
}, [onClose]);
|
|
4158
4159
|
if (!open) return null;
|
|
4159
4160
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4160
|
-
|
|
4161
|
+
chunkK4M4B6ME_js.GlassModal,
|
|
4161
4162
|
{
|
|
4162
4163
|
open,
|
|
4163
4164
|
onClose: handleClose,
|
|
@@ -4168,7 +4169,7 @@ function RunInputDialog({
|
|
|
4168
4169
|
/* @__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: [
|
|
4169
4170
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
|
|
4170
4171
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4171
|
-
|
|
4172
|
+
chunkK4M4B6ME_js.Input,
|
|
4172
4173
|
{
|
|
4173
4174
|
value: values[variableName] ?? "",
|
|
4174
4175
|
onChange: (event) => handleValueChange(variableName, event.target.value),
|
|
@@ -4177,8 +4178,8 @@ function RunInputDialog({
|
|
|
4177
4178
|
)
|
|
4178
4179
|
] }, variableName)) }),
|
|
4179
4180
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [
|
|
4180
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4181
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4181
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
|
|
4182
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkK4M4B6ME_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
|
|
4182
4183
|
/* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
|
|
4183
4184
|
t("run")
|
|
4184
4185
|
] })
|
|
@@ -4211,8 +4212,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4211
4212
|
const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
|
|
4212
4213
|
const [selectedRun, setSelectedRun] = react.useState(null);
|
|
4213
4214
|
const [selectedNode, setSelectedNode] = react.useState(null);
|
|
4214
|
-
const isRunning =
|
|
4215
|
-
const nodeResults =
|
|
4215
|
+
const isRunning = chunkF5UDX6JA_js.useWorkflowStore((state) => state.isRunning);
|
|
4216
|
+
const nodeResults = chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodeResults);
|
|
4216
4217
|
const refreshRuns = react.useCallback(async () => {
|
|
4217
4218
|
setIsLoadingRuns(true);
|
|
4218
4219
|
try {
|
|
@@ -4390,7 +4391,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4390
4391
|
onAutoSaveGraph(graph);
|
|
4391
4392
|
}, [onAutoSaveGraph, onGraphSnapshot]);
|
|
4392
4393
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4393
|
-
|
|
4394
|
+
chunkF5UDX6JA_js.Workspace,
|
|
4394
4395
|
{
|
|
4395
4396
|
...workspaceProps,
|
|
4396
4397
|
onGraphChange: handleGraphChange
|
|
@@ -4398,7 +4399,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4398
4399
|
);
|
|
4399
4400
|
});
|
|
4400
4401
|
function DynamicIslandConfirm2(props) {
|
|
4401
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4402
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.DynamicIslandConfirm, { ...props });
|
|
4402
4403
|
}
|
|
4403
4404
|
var JSON_PREVIEW_LINE_LIMIT = 50;
|
|
4404
4405
|
function DslExportModal({ open, onClose, workflow, graph }) {
|
|
@@ -4452,7 +4453,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4452
4453
|
}, [jsonString, workflow.name, workflow.version]);
|
|
4453
4454
|
if (!open) return null;
|
|
4454
4455
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4455
|
-
|
|
4456
|
+
chunkK4M4B6ME_js.GlassModal,
|
|
4456
4457
|
{
|
|
4457
4458
|
open,
|
|
4458
4459
|
onClose,
|
|
@@ -4494,7 +4495,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4494
4495
|
] }),
|
|
4495
4496
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-gray-200 px-1 py-4 dark:border-gray-700", children: [
|
|
4496
4497
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4497
|
-
|
|
4498
|
+
chunkK4M4B6ME_js.Button,
|
|
4498
4499
|
{
|
|
4499
4500
|
type: "button",
|
|
4500
4501
|
onClick: handleCopyToClipboard,
|
|
@@ -4511,7 +4512,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4511
4512
|
}
|
|
4512
4513
|
),
|
|
4513
4514
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4514
|
-
|
|
4515
|
+
chunkK4M4B6ME_js.Button,
|
|
4515
4516
|
{
|
|
4516
4517
|
type: "button",
|
|
4517
4518
|
onClick: handleDownloadJson,
|
|
@@ -4670,7 +4671,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4670
4671
|
}, []);
|
|
4671
4672
|
if (!open) return null;
|
|
4672
4673
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4673
|
-
|
|
4674
|
+
chunkK4M4B6ME_js.GlassModal,
|
|
4674
4675
|
{
|
|
4675
4676
|
open,
|
|
4676
4677
|
onClose,
|
|
@@ -4710,7 +4711,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4710
4711
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "import-validation-result", children: [
|
|
4711
4712
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center justify-between", children: [
|
|
4712
4713
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: fileName }),
|
|
4713
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4714
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
|
|
4714
4715
|
] }),
|
|
4715
4716
|
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: [
|
|
4716
4717
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -4738,9 +4739,9 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4738
4739
|
] })
|
|
4739
4740
|
] }) }),
|
|
4740
4741
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-gray-200 px-1 py-4 dark:border-gray-700", children: [
|
|
4741
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4742
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
|
|
4742
4743
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4743
|
-
|
|
4744
|
+
chunkK4M4B6ME_js.Button,
|
|
4744
4745
|
{
|
|
4745
4746
|
type: "button",
|
|
4746
4747
|
onClick: handleImport,
|
|
@@ -4761,14 +4762,14 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4761
4762
|
}
|
|
4762
4763
|
|
|
4763
4764
|
// src/astrlabe/store/selectors.ts
|
|
4764
|
-
var useCanUndo = () =>
|
|
4765
|
-
var useCanRedo = () =>
|
|
4766
|
-
var useHasCopied = () =>
|
|
4767
|
-
var useContextMenu = () =>
|
|
4768
|
-
var useEditingNodeId = () =>
|
|
4769
|
-
var useSelectedNodeCount = () =>
|
|
4770
|
-
var useIsRunning = () =>
|
|
4771
|
-
var useNodeResults = () =>
|
|
4765
|
+
var useCanUndo = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.past.length > 0);
|
|
4766
|
+
var useCanRedo = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.future.length > 0);
|
|
4767
|
+
var useHasCopied = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.clipboard !== null);
|
|
4768
|
+
var useContextMenu = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.contextMenu);
|
|
4769
|
+
var useEditingNodeId = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.editingNodeId);
|
|
4770
|
+
var useSelectedNodeCount = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
|
|
4771
|
+
var useIsRunning = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.isRunning);
|
|
4772
|
+
var useNodeResults = () => chunkF5UDX6JA_js.useWorkflowStore((state) => state.nodeResults);
|
|
4772
4773
|
var DEFAULT_MAX_HISTORY = 50;
|
|
4773
4774
|
function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
|
|
4774
4775
|
const pastRef = react.useRef([]);
|
|
@@ -5092,5 +5093,5 @@ exports.useNodeResults = useNodeResults;
|
|
|
5092
5093
|
exports.useSelectedNodeCount = useSelectedNodeCount;
|
|
5093
5094
|
exports.useSubworkflowStore = useSubworkflowStore;
|
|
5094
5095
|
exports.useUndoRedo = useUndoRedo;
|
|
5095
|
-
//# sourceMappingURL=chunk-
|
|
5096
|
-
//# sourceMappingURL=chunk-
|
|
5096
|
+
//# sourceMappingURL=chunk-PYQLY2RH.js.map
|
|
5097
|
+
//# sourceMappingURL=chunk-PYQLY2RH.js.map
|