@datatechsolutions/ui 3.13.0 → 3.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astrlabe/graph-node.js +6 -6
- package/dist/astrlabe/graph-node.mjs +2 -2
- package/dist/astrlabe/index.js +114 -114
- package/dist/astrlabe/index.mjs +6 -6
- package/dist/astrlabe/workflow-canvas.js +6 -6
- package/dist/astrlabe/workflow-canvas.mjs +5 -5
- package/dist/{chunk-AMCFAGK3.js → chunk-2II2NLAZ.js} +42 -41
- package/dist/chunk-2II2NLAZ.js.map +1 -0
- package/dist/{chunk-WR55H7DH.mjs → chunk-2SBVFLPZ.mjs} +19 -2
- package/dist/chunk-2SBVFLPZ.mjs.map +1 -0
- package/dist/{chunk-UXHJS2SH.mjs → chunk-33ZWFDVG.mjs} +282 -331
- package/dist/chunk-33ZWFDVG.mjs.map +1 -0
- package/dist/{chunk-2ECLDHAT.js → chunk-4HZ55YKZ.js} +9 -9
- package/dist/{chunk-2ECLDHAT.js.map → chunk-4HZ55YKZ.js.map} +1 -1
- package/dist/{chunk-VI4IUTMX.js → chunk-4P72IJOM.js} +6 -6
- package/dist/{chunk-VI4IUTMX.js.map → chunk-4P72IJOM.js.map} +1 -1
- package/dist/{chunk-D5OTZGA2.js → chunk-5SCZB5UI.js} +382 -431
- package/dist/chunk-5SCZB5UI.js.map +1 -0
- package/dist/{chunk-4VHFGW7I.mjs → chunk-5YCH7FHT.mjs} +3 -3
- package/dist/{chunk-4VHFGW7I.mjs.map → chunk-5YCH7FHT.mjs.map} +1 -1
- package/dist/{chunk-P4RVGMZL.js → chunk-6NBQTIXX.js} +9 -37
- package/dist/chunk-6NBQTIXX.js.map +1 -0
- package/dist/{chunk-EZQ2D47U.js → chunk-6NEESZVO.js} +4 -4
- package/dist/{chunk-EZQ2D47U.js.map → chunk-6NEESZVO.js.map} +1 -1
- package/dist/{chunk-N4YT3QA5.js → chunk-72XZ7DSF.js} +13 -13
- package/dist/{chunk-N4YT3QA5.js.map → chunk-72XZ7DSF.js.map} +1 -1
- package/dist/{chunk-QGRTV35L.mjs → chunk-7NHJSD4A.mjs} +6 -6
- package/dist/{chunk-QGRTV35L.mjs.map → chunk-7NHJSD4A.mjs.map} +1 -1
- package/dist/{chunk-PPIUMCUZ.js → chunk-7SDB2VC2.js} +4 -4
- package/dist/{chunk-PPIUMCUZ.js.map → chunk-7SDB2VC2.js.map} +1 -1
- package/dist/{chunk-QGLGQXJE.js → chunk-A5OMGPMR.js} +10 -10
- package/dist/chunk-A5OMGPMR.js.map +1 -0
- package/dist/{chunk-K5567JM5.js → chunk-AUCS2KF4.js} +26 -26
- package/dist/{chunk-K5567JM5.js.map → chunk-AUCS2KF4.js.map} +1 -1
- package/dist/{chunk-MSKKNPRE.mjs → chunk-F4KHAKTP.mjs} +172 -116
- package/dist/chunk-F4KHAKTP.mjs.map +1 -0
- package/dist/{chunk-SDYKXLCU.js → chunk-FHGWXWVZ.js} +67 -67
- package/dist/{chunk-SDYKXLCU.js.map → chunk-FHGWXWVZ.js.map} +1 -1
- package/dist/{chunk-5ETT54QS.js → chunk-FZUV7GNB.js} +241 -184
- package/dist/chunk-FZUV7GNB.js.map +1 -0
- package/dist/{chunk-6KDTVSZT.mjs → chunk-HQNIETHV.mjs} +11 -10
- package/dist/chunk-HQNIETHV.mjs.map +1 -0
- package/dist/{chunk-PLTLRL2V.mjs → chunk-KDDXDQR2.mjs} +3 -3
- package/dist/{chunk-PLTLRL2V.mjs.map → chunk-KDDXDQR2.mjs.map} +1 -1
- package/dist/{chunk-6YTYD4P5.js → chunk-LJGPMMKB.js} +156 -193
- package/dist/chunk-LJGPMMKB.js.map +1 -0
- package/dist/{chunk-BHOT22QL.js → chunk-MXQ2EYG2.js} +19 -2
- package/dist/chunk-MXQ2EYG2.js.map +1 -0
- package/dist/{chunk-ANFSQJNI.mjs → chunk-N6SGVUTR.mjs} +17 -20
- package/dist/chunk-N6SGVUTR.mjs.map +1 -0
- package/dist/{chunk-IIRS5XZY.js → chunk-NIZSQJRW.js} +33 -33
- package/dist/{chunk-IIRS5XZY.js.map → chunk-NIZSQJRW.js.map} +1 -1
- package/dist/{chunk-AKWCT53S.mjs → chunk-NXWIT4YQ.mjs} +47 -50
- package/dist/chunk-NXWIT4YQ.mjs.map +1 -0
- package/dist/{chunk-OC4AOYU5.mjs → chunk-OTQXU4WG.mjs} +83 -120
- package/dist/chunk-OTQXU4WG.mjs.map +1 -0
- package/dist/{chunk-CSOMZ5UM.mjs → chunk-PO66V2PN.mjs} +9 -9
- package/dist/{chunk-CSOMZ5UM.mjs.map → chunk-PO66V2PN.mjs.map} +1 -1
- package/dist/{chunk-OY5HUZSD.js → chunk-PXGESUKI.js} +94 -97
- package/dist/chunk-PXGESUKI.js.map +1 -0
- package/dist/{chunk-7TYNV6SY.mjs → chunk-Q2FUNDCP.mjs} +14 -14
- package/dist/{chunk-7TYNV6SY.mjs.map → chunk-Q2FUNDCP.mjs.map} +1 -1
- package/dist/{chunk-KWH7JIRP.mjs → chunk-Q5TZTA6H.mjs} +9 -8
- package/dist/chunk-Q5TZTA6H.mjs.map +1 -0
- package/dist/{chunk-ZRCXDKBE.mjs → chunk-T7DROKWJ.mjs} +4 -4
- package/dist/{chunk-ZRCXDKBE.mjs.map → chunk-T7DROKWJ.mjs.map} +1 -1
- package/dist/{chunk-3VYD7QL2.mjs → chunk-TQADF23S.mjs} +9 -9
- package/dist/chunk-TQADF23S.mjs.map +1 -0
- package/dist/{chunk-VIB42VMZ.mjs → chunk-U7VMFQFN.mjs} +5 -5
- package/dist/{chunk-VIB42VMZ.mjs.map → chunk-U7VMFQFN.mjs.map} +1 -1
- package/dist/{chunk-AHNH2PMI.mjs → chunk-WE35EV7J.mjs} +3 -3
- package/dist/{chunk-AHNH2PMI.mjs.map → chunk-WE35EV7J.mjs.map} +1 -1
- package/dist/{chunk-UPYACFZJ.mjs → chunk-WTSMTLSP.mjs} +303 -347
- package/dist/chunk-WTSMTLSP.mjs.map +1 -0
- package/dist/{chunk-WOTKBKS6.js → chunk-YFMMZHL5.js} +47 -50
- package/dist/chunk-YFMMZHL5.js.map +1 -0
- package/dist/{chunk-DJ33CSGJ.mjs → chunk-ZBX7UCAP.mjs} +9 -37
- package/dist/chunk-ZBX7UCAP.mjs.map +1 -0
- package/dist/{chunk-NF5DDM5V.js → chunk-ZE6U4N4Q.js} +44 -43
- package/dist/chunk-ZE6U4N4Q.js.map +1 -0
- package/dist/{chunk-MQDCUBVW.js → chunk-ZIRD3X6G.js} +459 -503
- package/dist/chunk-ZIRD3X6G.js.map +1 -0
- package/dist/index.d.mts +77 -7
- package/dist/index.d.ts +77 -7
- package/dist/index.js +708 -704
- package/dist/index.mjs +3 -3
- package/dist/platform/admin/index.js +12 -12
- package/dist/platform/admin/index.mjs +6 -6
- package/dist/platform/agents-workspace.js +9 -9
- package/dist/platform/agents-workspace.mjs +8 -8
- package/dist/platform/app-shell.js +5 -5
- package/dist/platform/app-shell.mjs +4 -4
- package/dist/platform/auth/index.js +29 -29
- package/dist/platform/auth/index.mjs +6 -6
- package/dist/platform/billing/index.js +7 -7
- package/dist/platform/billing/index.mjs +5 -5
- package/dist/platform/impersonation/index.js +5 -5
- package/dist/platform/impersonation/index.mjs +4 -4
- package/dist/platform/index.js +99 -99
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +30 -30
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/pages/index.d.mts +115 -3
- package/dist/platform/pages/index.d.ts +115 -3
- package/dist/platform/pages/index.js +966 -519
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +562 -121
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +9 -9
- package/dist/platform/settings/index.mjs +8 -8
- package/dist/platform/workflow-canvas-shell.js +7 -7
- package/dist/platform/workflow-canvas-shell.mjs +6 -6
- package/package.json +1 -1
- package/dist/chunk-3VYD7QL2.mjs.map +0 -1
- package/dist/chunk-5ETT54QS.js.map +0 -1
- package/dist/chunk-6KDTVSZT.mjs.map +0 -1
- package/dist/chunk-6YTYD4P5.js.map +0 -1
- package/dist/chunk-AKWCT53S.mjs.map +0 -1
- package/dist/chunk-AMCFAGK3.js.map +0 -1
- package/dist/chunk-ANFSQJNI.mjs.map +0 -1
- package/dist/chunk-BHOT22QL.js.map +0 -1
- package/dist/chunk-D5OTZGA2.js.map +0 -1
- package/dist/chunk-DJ33CSGJ.mjs.map +0 -1
- package/dist/chunk-KWH7JIRP.mjs.map +0 -1
- package/dist/chunk-MQDCUBVW.js.map +0 -1
- package/dist/chunk-MSKKNPRE.mjs.map +0 -1
- package/dist/chunk-NF5DDM5V.js.map +0 -1
- package/dist/chunk-OC4AOYU5.mjs.map +0 -1
- package/dist/chunk-OY5HUZSD.js.map +0 -1
- package/dist/chunk-P4RVGMZL.js.map +0 -1
- package/dist/chunk-QGLGQXJE.js.map +0 -1
- package/dist/chunk-UPYACFZJ.mjs.map +0 -1
- package/dist/chunk-UXHJS2SH.mjs.map +0 -1
- package/dist/chunk-WOTKBKS6.js.map +0 -1
- package/dist/chunk-WR55H7DH.mjs.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunk5SCZB5UI_js = require('./chunk-5SCZB5UI.js');
|
|
5
|
+
var chunkFZUV7GNB_js = require('./chunk-FZUV7GNB.js');
|
|
6
6
|
var chunkY5VN4SPH_js = require('./chunk-Y5VN4SPH.js');
|
|
7
|
-
var
|
|
7
|
+
var chunkMXQ2EYG2_js = require('./chunk-MXQ2EYG2.js');
|
|
8
8
|
var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
|
|
9
9
|
var react = require('react');
|
|
10
10
|
var react$1 = require('@xyflow/react');
|
|
@@ -41,11 +41,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
41
41
|
const isCompact = data.displayMode === "compact";
|
|
42
42
|
if (!config) {
|
|
43
43
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
44
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
46
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
47
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
-
|
|
44
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeRunningIndicator, { nodeId: id }),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
46
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
chunk5SCZB5UI_js.NodeCardHeader,
|
|
49
49
|
{
|
|
50
50
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-6 w-6 text-white" }),
|
|
51
51
|
title: data.label || "Model Provider",
|
|
@@ -53,8 +53,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
53
53
|
iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
|
|
54
54
|
}
|
|
55
55
|
) }),
|
|
56
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
57
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
58
58
|
] });
|
|
59
59
|
}
|
|
60
60
|
const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
|
|
@@ -63,18 +63,18 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
63
63
|
const isConfigured = !!(config.credentialRef || config.apiKeyRef);
|
|
64
64
|
const logo = PROVIDER_LOGOS[config.providerType];
|
|
65
65
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
66
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
68
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeRunningIndicator, { nodeId: id }),
|
|
67
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
68
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
69
69
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
70
70
|
"button",
|
|
71
71
|
{
|
|
72
72
|
type: "button",
|
|
73
73
|
onClick: () => data.onEdit?.(id),
|
|
74
74
|
className: "w-full text-left",
|
|
75
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
75
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunk5SCZB5UI_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
|
|
76
76
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
-
|
|
77
|
+
chunk5SCZB5UI_js.NodeCardHeader,
|
|
78
78
|
{
|
|
79
79
|
icon: logo ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo, alt: providerLabel, className: "h-6 w-6 object-contain", loading: "lazy" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-6 w-6 text-white" }),
|
|
80
80
|
title: displayName,
|
|
@@ -82,11 +82,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
82
82
|
iconClassName: `flex h-11 w-11 items-center justify-center rounded-xl shadow-lg ${logo ? "bg-white/10 dark:bg-white/5 p-2" : "bg-gradient-to-br from-slate-600 to-slate-700 p-1.5"}`
|
|
83
83
|
}
|
|
84
84
|
),
|
|
85
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
87
|
-
regionLabel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
89
|
-
config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
86
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: providerLabel }),
|
|
87
|
+
regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: regionLabel }),
|
|
88
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: isConfigured ? "green" : "amber", size: "xs", children: isConfigured ? "Configured" : "Setup needed" }),
|
|
89
|
+
config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: [
|
|
90
90
|
config.modelFilter.length,
|
|
91
91
|
" models"
|
|
92
92
|
] })
|
|
@@ -94,8 +94,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
|
|
|
94
94
|
] })
|
|
95
95
|
}
|
|
96
96
|
),
|
|
97
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
98
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
98
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
99
99
|
] });
|
|
100
100
|
});
|
|
101
101
|
var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected }) {
|
|
@@ -104,10 +104,10 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
|
|
|
104
104
|
const isCompact = data.displayMode === "compact";
|
|
105
105
|
const keyPreview = config.key ? config.key.slice(0, 30) : "";
|
|
106
106
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
107
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
108
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeRunningIndicator, { nodeId: id }),
|
|
108
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
|
|
109
109
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
110
|
-
|
|
110
|
+
chunk5SCZB5UI_js.NodeInteractiveCard,
|
|
111
111
|
{
|
|
112
112
|
nodeId: id,
|
|
113
113
|
onEdit,
|
|
@@ -116,27 +116,27 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
|
|
|
116
116
|
nodeType: "s3_write",
|
|
117
117
|
children: [
|
|
118
118
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
-
|
|
119
|
+
chunk5SCZB5UI_js.NodeCardHeader,
|
|
120
120
|
{
|
|
121
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
121
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
|
|
122
122
|
title: label,
|
|
123
123
|
description: t("s3WriteNodeDescription"),
|
|
124
124
|
compact: isCompact,
|
|
125
125
|
iconClassName: ""
|
|
126
126
|
}
|
|
127
127
|
),
|
|
128
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
128
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk5SCZB5UI_js.NodeCardMeta, { compact: isCompact, children: [
|
|
129
129
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
130
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
131
|
-
config.bucket && /* @__PURE__ */ jsxRuntime.jsx(
|
|
130
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
|
|
131
|
+
config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
|
|
132
132
|
keyPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: keyPreview })
|
|
133
133
|
] }),
|
|
134
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
134
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
135
135
|
] })
|
|
136
136
|
]
|
|
137
137
|
}
|
|
138
138
|
),
|
|
139
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
139
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5SCZB5UI_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
|
|
140
140
|
] });
|
|
141
141
|
});
|
|
142
142
|
function AnthropicModelIcon({ className }) {
|
|
@@ -200,7 +200,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
200
200
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-dashed border-slate-300 bg-slate-50/40 p-4 text-center dark:border-slate-700 dark:bg-slate-900/30", children: [
|
|
201
201
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-xs text-slate-500 dark:text-slate-400", children: "No schema yet \u2014 agent text is exposed as a raw string. Add a schema to enforce structured output." }),
|
|
202
202
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
203
|
-
|
|
203
|
+
chunkMXQ2EYG2_js.Button,
|
|
204
204
|
{
|
|
205
205
|
type: "button",
|
|
206
206
|
outline: true,
|
|
@@ -264,7 +264,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
264
264
|
},
|
|
265
265
|
index
|
|
266
266
|
)),
|
|
267
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
267
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
|
|
268
268
|
] })
|
|
269
269
|
] });
|
|
270
270
|
}
|
|
@@ -287,7 +287,7 @@ function FieldEditor({
|
|
|
287
287
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
288
288
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_140px_auto_auto] items-end gap-2", children: [
|
|
289
289
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
290
|
-
|
|
290
|
+
chunkFZUV7GNB_js.FormInput,
|
|
291
291
|
{
|
|
292
292
|
label: "Name",
|
|
293
293
|
value: field.name,
|
|
@@ -296,7 +296,7 @@ function FieldEditor({
|
|
|
296
296
|
}
|
|
297
297
|
),
|
|
298
298
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
299
|
-
|
|
299
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
300
300
|
{
|
|
301
301
|
label: "Type",
|
|
302
302
|
value: field.type,
|
|
@@ -316,10 +316,10 @@ function FieldEditor({
|
|
|
316
316
|
),
|
|
317
317
|
"Required"
|
|
318
318
|
] }),
|
|
319
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
319
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
|
|
320
320
|
] }),
|
|
321
321
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
322
|
-
|
|
322
|
+
chunkFZUV7GNB_js.FormInput,
|
|
323
323
|
{
|
|
324
324
|
label: "Description (optional)",
|
|
325
325
|
value: field.description,
|
|
@@ -501,17 +501,17 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
501
501
|
}, [family, models, setSelectedModelId, setTemperature, onChanged]);
|
|
502
502
|
const currentFamilyEntry = family.find((entry) => selectedModelId.startsWith(entry.prefix)) ?? family[0];
|
|
503
503
|
const currentModelName = models.find((model) => model.id === selectedModelId)?.name ?? selectedModelId;
|
|
504
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-4 mt-4 overflow-hidden rounded-xl border border-
|
|
504
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-4 mt-4 overflow-hidden rounded-xl border border-slate-200/30 bg-white/40 dark:border-white/10 dark:bg-white/5", children: [
|
|
505
505
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 pt-3 pb-2", children: [
|
|
506
506
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
507
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-
|
|
507
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("agentDrawer.capabilityRating") }),
|
|
508
508
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-baseline gap-1", children: [
|
|
509
509
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-lg font-bold tabular-nums ${tierInfo.color}`, children: elo }),
|
|
510
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-
|
|
510
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: "ELO" })
|
|
511
511
|
] })
|
|
512
512
|
] }),
|
|
513
513
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
514
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-
|
|
514
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-slate-200 dark:bg-slate-700", children: [
|
|
515
515
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
516
516
|
"div",
|
|
517
517
|
{
|
|
@@ -522,7 +522,7 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
522
522
|
[1200, 1600, 2e3].map((boundary) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
523
523
|
"div",
|
|
524
524
|
{
|
|
525
|
-
className: "absolute top-0 h-full w-px bg-
|
|
525
|
+
className: "absolute top-0 h-full w-px bg-slate-400/40 dark:bg-slate-500/40",
|
|
526
526
|
style: { left: `${(boundary - 800) / (2400 - 800) * 100}%` }
|
|
527
527
|
},
|
|
528
528
|
boundary
|
|
@@ -542,12 +542,12 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
542
542
|
"aria-valuemax": 2400,
|
|
543
543
|
"aria-valuenow": elo,
|
|
544
544
|
"aria-valuetext": `${elo} ELO \u2014 ${t(`agentDrawer.tier${tierInfo.tierKey.charAt(0).toUpperCase()}${tierInfo.tierKey.slice(1)}`)}`,
|
|
545
|
-
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
545
|
+
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-lg dark:[&::-webkit-slider-thumb]:border-slate-900"
|
|
546
546
|
}
|
|
547
547
|
),
|
|
548
548
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `input[type="range"]::-webkit-slider-thumb { background: ${elo < 1200 ? "#06b6d4" : elo < 1600 ? "#ec4899" : elo < 2e3 ? "#f59e0b" : "#10b981"}; box-shadow: 0 0 6px ${elo < 1200 ? "rgba(6,182,212,0.5)" : elo < 1600 ? "rgba(236,72,153,0.5)" : elo < 2e3 ? "rgba(245,158,11,0.5)" : "rgba(16,185,129,0.5)"}; }` })
|
|
549
549
|
] }),
|
|
550
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5 flex justify-between text-[8px] text-
|
|
550
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5 flex justify-between text-[8px] text-slate-400 dark:text-slate-500", children: [
|
|
551
551
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "800" }),
|
|
552
552
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "1200" }),
|
|
553
553
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "1600" }),
|
|
@@ -555,35 +555,35 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
555
555
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "2400" })
|
|
556
556
|
] })
|
|
557
557
|
] }),
|
|
558
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-3 gap-px border-t border-
|
|
559
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
560
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-
|
|
561
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-semibold text-
|
|
558
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-3 gap-px border-t border-slate-200/30 bg-slate-200/30 dark:border-white/10 dark:bg-white/10", children: [
|
|
559
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
560
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.model") }),
|
|
561
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-semibold text-slate-900 dark:text-white", children: currentModelName })
|
|
562
562
|
] }),
|
|
563
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
564
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-
|
|
565
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-
|
|
563
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
564
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.maxTokens") }),
|
|
565
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: currentFamilyEntry.maxTokens.toLocaleString() })
|
|
566
566
|
] }),
|
|
567
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
568
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-
|
|
569
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-
|
|
567
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
568
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.context") }),
|
|
569
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: currentFamilyEntry.contextWindow })
|
|
570
570
|
] }),
|
|
571
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
572
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-
|
|
573
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-
|
|
571
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
572
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.temperature") }),
|
|
573
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: temperature.toFixed(2) })
|
|
574
574
|
] }),
|
|
575
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
576
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-
|
|
575
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
576
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.autonomy") }),
|
|
577
577
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-xs font-semibold ${tierInfo.color}`, children: t(`agentDrawer.${tierInfo.autonomyKey}`) })
|
|
578
578
|
] }),
|
|
579
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
580
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-
|
|
581
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-
|
|
579
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
580
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.costPerTask") }),
|
|
581
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: tierInfo.costPerTask })
|
|
582
582
|
] })
|
|
583
583
|
] }),
|
|
584
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-
|
|
584
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-slate-200/30 bg-white/60 px-4 py-2.5 dark:border-white/10 dark:bg-slate-900/60", children: [
|
|
585
585
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
586
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-
|
|
586
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.autonomyLevel") }),
|
|
587
587
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] font-semibold ${tierInfo.color}`, children: t(`agentDrawer.${tierInfo.autonomyKey}`) })
|
|
588
588
|
] }),
|
|
589
589
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: [
|
|
@@ -598,11 +598,11 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
598
598
|
onClick: () => handleAutonomyClick(level),
|
|
599
599
|
"aria-label": t(`agentDrawer.${labelKey}`),
|
|
600
600
|
"aria-pressed": level <= tierInfo.autonomyPercent,
|
|
601
|
-
className: `h-2 flex-1 rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
601
|
+
className: `h-2 flex-1 rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${level <= tierInfo.autonomyPercent ? `bg-gradient-to-r ${tierInfo.barColor} hover:opacity-80` : "bg-slate-200 hover:bg-slate-300 dark:bg-slate-700 dark:hover:bg-slate-600"}`
|
|
602
602
|
},
|
|
603
603
|
level
|
|
604
604
|
)) }),
|
|
605
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 flex justify-between text-[7px] text-
|
|
605
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 flex justify-between text-[7px] text-slate-400 dark:text-slate-500", children: [
|
|
606
606
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("agentDrawer.autonomyLow") }),
|
|
607
607
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("agentDrawer.autonomyMedium") }),
|
|
608
608
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("agentDrawer.autonomyHigh") }),
|
|
@@ -612,13 +612,13 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
612
612
|
] });
|
|
613
613
|
}
|
|
614
614
|
function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFramework, setSelectedFramework, markDirty, connectedProviderTypes }) {
|
|
615
|
-
const frameworkKeys = Object.keys(
|
|
615
|
+
const frameworkKeys = Object.keys(chunk5SCZB5UI_js.FRAMEWORK_META);
|
|
616
616
|
const hasProviderConstraints = connectedProviderTypes.length > 0;
|
|
617
|
-
const compatibleModels =
|
|
617
|
+
const compatibleModels = chunk5SCZB5UI_js.getCompatibleModels(models, selectedFramework);
|
|
618
618
|
const handleFrameworkChange = react.useCallback((newFramework) => {
|
|
619
619
|
setSelectedFramework(newFramework);
|
|
620
|
-
if (!
|
|
621
|
-
const compatible =
|
|
620
|
+
if (!chunk5SCZB5UI_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
|
|
621
|
+
const compatible = chunk5SCZB5UI_js.getCompatibleModels(models, newFramework);
|
|
622
622
|
if (compatible.length > 0) {
|
|
623
623
|
setSelectedModelId(compatible[0].id);
|
|
624
624
|
}
|
|
@@ -627,19 +627,19 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
627
627
|
}, [selectedModelId, models, setSelectedFramework, setSelectedModelId, markDirty]);
|
|
628
628
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5 p-4", children: [
|
|
629
629
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
630
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-
|
|
630
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.framework") }),
|
|
631
631
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
|
|
632
|
-
const meta =
|
|
632
|
+
const meta = chunk5SCZB5UI_js.FRAMEWORK_META[key];
|
|
633
633
|
const isSelected = key === selectedFramework;
|
|
634
|
-
const compatCount =
|
|
635
|
-
const isCompatibleWithProviders = !hasProviderConstraints ||
|
|
634
|
+
const compatCount = chunk5SCZB5UI_js.getCompatibleModels(models, key).length;
|
|
635
|
+
const isCompatibleWithProviders = !hasProviderConstraints || chunk5SCZB5UI_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
|
|
636
636
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
637
637
|
"button",
|
|
638
638
|
{
|
|
639
639
|
type: "button",
|
|
640
640
|
onClick: () => handleFrameworkChange(key),
|
|
641
641
|
disabled: !isCompatibleWithProviders,
|
|
642
|
-
className: `inline-flex items-center gap-1.5 rounded-full px-3 py-1.5 text-[10px] font-semibold transition-all ${!isCompatibleWithProviders ? "cursor-not-allowed bg-
|
|
642
|
+
className: `inline-flex items-center gap-1.5 rounded-full px-3 py-1.5 text-[10px] font-semibold transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${!isCompatibleWithProviders ? "cursor-not-allowed bg-slate-100 text-slate-400 opacity-40 dark:bg-white/5 dark:text-slate-500" : isSelected ? `${meta.badgeColor} ring-1 ring-current/20` : "bg-slate-100 text-slate-500 hover:bg-slate-200 dark:bg-white/5 dark:text-slate-400 dark:hover:bg-white/10"}`,
|
|
643
643
|
title: !isCompatibleWithProviders ? t("agentDrawer.frameworkIncompatible") : void 0,
|
|
644
644
|
children: [
|
|
645
645
|
/* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-3.5 w-3.5" }),
|
|
@@ -652,9 +652,9 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
652
652
|
}) })
|
|
653
653
|
] }),
|
|
654
654
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
655
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "mb-2 block text-xs font-medium text-
|
|
655
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "mb-2 block text-xs font-medium text-slate-500 dark:text-slate-400", children: [
|
|
656
656
|
t("agentDrawer.model"),
|
|
657
|
-
compatibleModels.length < models.length && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1.5 text-[10px] font-normal text-
|
|
657
|
+
compatibleModels.length < models.length && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1.5 text-[10px] font-normal text-slate-400 dark:text-slate-500", children: [
|
|
658
658
|
"(",
|
|
659
659
|
compatibleModels.length,
|
|
660
660
|
"/",
|
|
@@ -664,25 +664,21 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
664
664
|
] }),
|
|
665
665
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: models.map((model) => {
|
|
666
666
|
const isSelected = model.id === selectedModelId;
|
|
667
|
-
const isCompatible =
|
|
667
|
+
const isCompatible = chunk5SCZB5UI_js.isModelCompatibleWithFramework(model.id, selectedFramework);
|
|
668
668
|
const { IconComponent, color, providerLabel } = getModelIcon(model.id);
|
|
669
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
670
|
-
|
|
669
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
670
|
+
chunkFZUV7GNB_js.SelectionCard,
|
|
671
671
|
{
|
|
672
|
-
|
|
673
|
-
disabled: !isCompatible,
|
|
672
|
+
selected: isSelected,
|
|
674
673
|
onClick: () => {
|
|
675
674
|
setSelectedModelId(model.id);
|
|
676
675
|
markDirty();
|
|
677
676
|
},
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: providerLabel })
|
|
684
|
-
] })
|
|
685
|
-
]
|
|
677
|
+
layout: "card",
|
|
678
|
+
compatibility: isCompatible ? "compatible" : "incompatible",
|
|
679
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: `h-5 w-5 ${isSelected && isCompatible ? color : ""}` }),
|
|
680
|
+
label: model.name,
|
|
681
|
+
description: providerLabel
|
|
686
682
|
},
|
|
687
683
|
model.id
|
|
688
684
|
);
|
|
@@ -716,11 +712,11 @@ function PromptTab({
|
|
|
716
712
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5 p-4", children: [
|
|
717
713
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
718
714
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
719
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-medium text-
|
|
720
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold tabular-nums text-
|
|
715
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.temperature") }),
|
|
716
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold tabular-nums text-slate-900 dark:text-white", children: temperature.toFixed(2) })
|
|
721
717
|
] }),
|
|
722
718
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
723
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-
|
|
719
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-slate-200 dark:bg-slate-700", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
724
720
|
"div",
|
|
725
721
|
{
|
|
726
722
|
className: "h-full rounded-full transition-all duration-300 ease-out",
|
|
@@ -739,21 +735,21 @@ function PromptTab({
|
|
|
739
735
|
"aria-label": t("agentDrawer.temperature"),
|
|
740
736
|
"aria-valuenow": temperature,
|
|
741
737
|
"aria-valuetext": `${temperature.toFixed(2)} \u2014 ${isPrecise ? t("agentDrawer.precise") : isBalanced ? t("agentDrawer.balanced") : t("agentDrawer.creative")}`,
|
|
742
|
-
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
738
|
+
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 [&::-webkit-slider-thumb]:h-5 [&::-webkit-slider-thumb]:w-5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-lg dark:[&::-webkit-slider-thumb]:border-slate-900"
|
|
743
739
|
}
|
|
744
740
|
),
|
|
745
741
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `input[type="range"]::-webkit-slider-thumb { background: ${isPrecise ? "#3b82f6" : isBalanced ? "#8b5cf6" : "#ec4899"}; box-shadow: 0 0 8px ${isPrecise ? "rgba(59,130,246,0.5)" : isBalanced ? "rgba(139,92,246,0.5)" : "rgba(236,72,153,0.5)"}; }` })
|
|
746
742
|
] }),
|
|
747
743
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 flex items-center justify-between", children: [
|
|
748
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] font-medium transition-colors ${isPrecise ? "text-blue-500" : "text-
|
|
749
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] font-medium transition-colors ${isBalanced ? "text-purple-500" : "text-
|
|
750
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] font-medium transition-colors ${isCreative ? "text-pink-500" : "text-
|
|
744
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] font-medium transition-colors ${isPrecise ? "text-blue-500" : "text-slate-400 dark:text-slate-500"}`, children: t("agentDrawer.precise") }),
|
|
745
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] font-medium transition-colors ${isBalanced ? "text-purple-500" : "text-slate-400 dark:text-slate-500"}`, children: t("agentDrawer.balanced") }),
|
|
746
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] font-medium transition-colors ${isCreative ? "text-pink-500" : "text-slate-400 dark:text-slate-500"}`, children: t("agentDrawer.creative") })
|
|
751
747
|
] })
|
|
752
748
|
] }),
|
|
753
749
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
754
750
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
755
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-medium text-
|
|
756
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-
|
|
751
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.systemPrompt") }),
|
|
752
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
757
753
|
promptText.length,
|
|
758
754
|
" chars"
|
|
759
755
|
] })
|
|
@@ -764,14 +760,14 @@ function PromptTab({
|
|
|
764
760
|
value: promptText,
|
|
765
761
|
onChange: handlePromptChange,
|
|
766
762
|
rows: 12,
|
|
767
|
-
className: "w-full resize-y rounded-lg
|
|
763
|
+
className: "liquid-surface w-full resize-y rounded-lg px-3 py-2.5 font-mono text-xs leading-relaxed text-slate-700 outline-none transition-colors placeholder:text-slate-400 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-300 dark:placeholder:text-slate-500",
|
|
768
764
|
placeholder: t("agentDrawer.systemPromptPlaceholder")
|
|
769
765
|
}
|
|
770
766
|
)
|
|
771
767
|
] }),
|
|
772
768
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
773
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-
|
|
774
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[11px] text-
|
|
769
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.outputSchema", { _: "Output schema (optional)" }) }),
|
|
770
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[11px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.outputSchemaHint", {
|
|
775
771
|
_: "Define the structured JSON the model must return. The engine parses + validates and exposes it under `output.parsed`. Invalid output fails the node."
|
|
776
772
|
}) }),
|
|
777
773
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -790,8 +786,8 @@ function PromptTab({
|
|
|
790
786
|
function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
791
787
|
if (agentTools.length === 0) {
|
|
792
788
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center px-4 py-12 text-center", children: [
|
|
793
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.CommandLineIcon, { className: "mb-2 h-8 w-8 text-
|
|
794
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-
|
|
789
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.CommandLineIcon, { className: "mb-2 h-8 w-8 text-slate-400 dark:text-slate-500" }),
|
|
790
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: t("agentDrawer.noToolsAvailable") })
|
|
795
791
|
] });
|
|
796
792
|
}
|
|
797
793
|
const sortedTools = [...agentTools].sort((a, b) => {
|
|
@@ -802,7 +798,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
802
798
|
return 0;
|
|
803
799
|
});
|
|
804
800
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 p-4", children: [
|
|
805
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-xs text-
|
|
801
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-3 text-xs text-slate-500 dark:text-slate-400", children: t("agentDrawer.toolsDescription") }),
|
|
806
802
|
sortedTools.map((tool) => {
|
|
807
803
|
const isEnabled = enabledToolIds.has(tool.agentToolId);
|
|
808
804
|
const isCompatible = !tool.compatibleFrameworks || tool.compatibleFrameworks.length === 0 || tool.compatibleFrameworks.includes(agentFramework);
|
|
@@ -811,26 +807,26 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
811
807
|
{
|
|
812
808
|
type: "button",
|
|
813
809
|
onClick: () => onToggle(tool.agentToolId),
|
|
814
|
-
className: `flex w-full items-center gap-3 rounded-xl border px-4 py-3 text-left transition-all ${!isCompatible ? "border-
|
|
810
|
+
className: `flex w-full items-center gap-3 rounded-xl border px-4 py-3 text-left transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${!isCompatible ? "border-slate-200/30 opacity-40 dark:border-white/5" : isEnabled ? "border-amber-500/30 bg-amber-50/50 dark:border-amber-400/20 dark:bg-amber-500/5" : "border-slate-200/50 bg-white/40 backdrop-blur-sm hover:border-slate-300 dark:border-white/10 dark:bg-white/[0.04] dark:hover:border-white/20"}`,
|
|
815
811
|
disabled: !isCompatible,
|
|
816
812
|
children: [
|
|
817
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg ${isEnabled ? "bg-gradient-to-br from-amber-400 to-orange-500" : "bg-
|
|
813
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg ${isEnabled ? "bg-gradient-to-br from-amber-400 to-orange-500" : "bg-slate-200 dark:bg-slate-700"}`, children: /* @__PURE__ */ jsxRuntime.jsx(outline.CommandLineIcon, { className: `h-4 w-4 ${isEnabled ? "text-white" : "text-slate-500 dark:text-slate-400"}` }) }),
|
|
818
814
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
819
815
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
820
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-sm font-medium ${isEnabled ? "text-
|
|
821
|
-
!isCompatible && /* @__PURE__ */ jsxRuntime.jsx(
|
|
816
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-sm font-medium ${isEnabled ? "text-slate-900 dark:text-white" : "text-slate-600 dark:text-slate-400"}`, children: tool.name }),
|
|
817
|
+
!isCompatible && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: "incompatible" })
|
|
822
818
|
] }),
|
|
823
|
-
tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-
|
|
819
|
+
tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: tool.description }),
|
|
824
820
|
tool.compatibleFrameworks && tool.compatibleFrameworks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex flex-wrap gap-0.5", children: tool.compatibleFrameworks.map((framework) => {
|
|
825
|
-
const meta =
|
|
821
|
+
const meta = chunk5SCZB5UI_js.getFrameworkMeta(framework);
|
|
826
822
|
const isCurrentFw = framework === agentFramework;
|
|
827
|
-
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-
|
|
823
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[8px] font-medium ${isCurrentFw ? meta.badgeColor : "bg-slate-100 text-slate-500 dark:bg-white/5 dark:text-slate-400"}`, children: [
|
|
828
824
|
/* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
|
|
829
825
|
meta.label
|
|
830
826
|
] }, framework);
|
|
831
827
|
}) })
|
|
832
828
|
] }),
|
|
833
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-5 w-5 shrink-0 items-center justify-center rounded-full transition-all ${isEnabled ? "bg-amber-500 text-white" : "border border-
|
|
829
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-5 w-5 shrink-0 items-center justify-center rounded-full transition-all ${isEnabled ? "bg-amber-500 text-white" : "border border-slate-300 dark:border-slate-600"}`, children: isEnabled && /* @__PURE__ */ jsxRuntime.jsx(outline.CheckIcon, { className: "h-3 w-3" }) }),
|
|
834
830
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
835
831
|
"div",
|
|
836
832
|
{
|
|
@@ -839,7 +835,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
839
835
|
event.stopPropagation();
|
|
840
836
|
},
|
|
841
837
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
842
|
-
|
|
838
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
843
839
|
{
|
|
844
840
|
checked: isEnabled,
|
|
845
841
|
onChange: () => onToggle(tool.agentToolId),
|
|
@@ -887,8 +883,8 @@ function EngineTab({
|
|
|
887
883
|
const compatibleProviders = findCompatibleProviders(selectedModelId, modelProviders);
|
|
888
884
|
const configuredCompatible = compatibleProviders.filter((p) => p.configured);
|
|
889
885
|
const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
|
|
890
|
-
const frameworkMeta =
|
|
891
|
-
const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-
|
|
886
|
+
const frameworkMeta = chunk5SCZB5UI_js.getFrameworkMeta(selectedFramework);
|
|
887
|
+
const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-slate-800 outline-none transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-200";
|
|
892
888
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-hidden rounded-2xl border border-indigo-500/20 bg-gradient-to-b from-indigo-500/[0.04] via-violet-500/[0.03] to-purple-500/[0.04] dark:border-indigo-400/20 dark:from-indigo-500/[0.10] dark:via-violet-500/[0.06] dark:to-purple-500/[0.08]", children: [
|
|
893
889
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
894
890
|
AgentCapabilityCard,
|
|
@@ -916,9 +912,9 @@ function EngineTab({
|
|
|
916
912
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
917
913
|
/* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "mt-0.5 h-5 w-5 text-indigo-500 dark:text-indigo-400" }),
|
|
918
914
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
919
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold text-
|
|
915
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: modelName }),
|
|
920
916
|
compatibleProviders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-amber-600 dark:text-amber-400", children: t("agentDrawer.noProviderForFamily", { _: "Nenhum provedor configurado serve a fam\xEDlia " + family }) }) : configuredCompatible.length > 1 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 flex items-center gap-1.5", children: [
|
|
921
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-
|
|
917
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-slate-500 dark:text-slate-400", children: t("agentDrawer.servedVia", { _: "via" }) }),
|
|
922
918
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
923
919
|
"select",
|
|
924
920
|
{
|
|
@@ -927,22 +923,17 @@ function EngineTab({
|
|
|
927
923
|
onSelectProvider(event.target.value);
|
|
928
924
|
markDirty();
|
|
929
925
|
},
|
|
930
|
-
|
|
926
|
+
"aria-label": t("agentDrawer.servedVia", { _: "via" }),
|
|
927
|
+
className: "liquid-surface rounded-md px-2 py-0.5 text-[10px] font-semibold text-slate-900 outline-none focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-white",
|
|
931
928
|
children: configuredCompatible.map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.id, children: p.name }, p.id))
|
|
932
929
|
}
|
|
933
930
|
),
|
|
934
|
-
effectiveProvider && /* @__PURE__ */ jsxRuntime.
|
|
935
|
-
|
|
936
|
-
effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" })
|
|
937
|
-
] })
|
|
938
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[10px] text-gray-500 dark:text-gray-400", children: [
|
|
931
|
+
effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) })
|
|
932
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[10px] text-slate-500 dark:text-slate-400", children: [
|
|
939
933
|
t("agentDrawer.servedVia", { _: "via" }),
|
|
940
934
|
" ",
|
|
941
935
|
effectiveProvider?.name ?? family,
|
|
942
|
-
effectiveProvider && /* @__PURE__ */ jsxRuntime.
|
|
943
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `h-1 w-1 rounded-full ${effectiveProvider.configured ? "bg-emerald-500" : "bg-amber-500"}` }),
|
|
944
|
-
effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" })
|
|
945
|
-
] })
|
|
936
|
+
effectiveProvider && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 inline-flex", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }) })
|
|
946
937
|
] })
|
|
947
938
|
] })
|
|
948
939
|
] }),
|
|
@@ -952,13 +943,13 @@ function EngineTab({
|
|
|
952
943
|
] })
|
|
953
944
|
] }) }),
|
|
954
945
|
/* @__PURE__ */ jsxRuntime.jsxs("details", { className: "group border-t border-indigo-500/15 bg-white/30 px-4 py-2.5 dark:border-indigo-400/15 dark:bg-white/[0.02]", children: [
|
|
955
|
-
/* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "flex cursor-pointer items-center gap-2 text-[10px] font-semibold uppercase tracking-wider text-
|
|
946
|
+
/* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "flex cursor-pointer items-center gap-2 text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: [
|
|
956
947
|
/* @__PURE__ */ jsxRuntime.jsx(outline.Cog6ToothIcon, { className: "h-3 w-3" }),
|
|
957
948
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("agentDrawer.overrideDerivation", { _: "Override \xB7 ajustes avan\xE7ados" }) }),
|
|
958
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto font-normal text-
|
|
959
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto hidden font-normal text-
|
|
949
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto font-normal text-slate-400 group-open:hidden", children: "\u25BE" }),
|
|
950
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto hidden font-normal text-slate-400 group-open:inline", children: "\u25B4" })
|
|
960
951
|
] }),
|
|
961
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[10px] italic text-
|
|
952
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[10px] italic text-slate-400 dark:text-slate-500", children: t("agentDrawer.overrideHint", { _: "Mude framework, modelo manual ou tokens s\xF3 se a deriva\xE7\xE3o por ELO n\xE3o atender." }) }),
|
|
962
953
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 space-y-4", children: [
|
|
963
954
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
964
955
|
ConfigTab,
|
|
@@ -974,13 +965,13 @@ function EngineTab({
|
|
|
974
965
|
}
|
|
975
966
|
),
|
|
976
967
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
977
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[10px] font-semibold uppercase tracking-wider text-
|
|
968
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("agentDrawer.generationParams", { _: "Par\xE2metros de gera\xE7\xE3o" }) }),
|
|
978
969
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-2", children: [
|
|
979
970
|
{ key: "max", labelKey: "agentDrawer.maxOutputTokens", label: "Max output", value: maxOutputTokens, setter: setMaxOutputTokens, step: 1, min: 1, max: 32768 },
|
|
980
971
|
{ key: "topP", labelKey: "agentDrawer.topP", label: "Top-p", value: topP, setter: setTopP, step: 0.05, min: 0, max: 1 },
|
|
981
972
|
{ key: "topK", labelKey: "agentDrawer.topK", label: "Top-k", value: topK, setter: setTopK, step: 1, min: 0, max: 500 }
|
|
982
973
|
].map((field) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${inputCard} flex flex-col items-center !py-2`, children: [
|
|
983
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[8px] font-semibold uppercase tracking-wider text-
|
|
974
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[8px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t(field.labelKey, { _: field.label }) }),
|
|
984
975
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
985
976
|
"input",
|
|
986
977
|
{
|
|
@@ -993,14 +984,14 @@ function EngineTab({
|
|
|
993
984
|
field.setter(Number(event.target.value) || 0);
|
|
994
985
|
markDirty();
|
|
995
986
|
},
|
|
996
|
-
className: "w-full bg-transparent text-center text-sm font-semibold tabular-nums text-
|
|
987
|
+
className: "w-full bg-transparent text-center text-sm font-semibold tabular-nums text-slate-900 outline-none dark:text-white"
|
|
997
988
|
}
|
|
998
989
|
)
|
|
999
990
|
] }, field.key)) })
|
|
1000
991
|
] }),
|
|
1001
992
|
modelProviders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1002
993
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
1003
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-semibold uppercase tracking-wider text-
|
|
994
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("agentDrawer.providerCredentials", { _: "Credenciais do provedor" }) }),
|
|
1004
995
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1005
996
|
"a",
|
|
1006
997
|
{
|
|
@@ -1013,17 +1004,17 @@ function EngineTab({
|
|
|
1013
1004
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1", children: modelProviders.map((provider) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1014
1005
|
"div",
|
|
1015
1006
|
{
|
|
1016
|
-
className: "flex items-center gap-2 rounded-lg border border-
|
|
1007
|
+
className: "flex items-center gap-2 rounded-lg border border-slate-200/50 bg-white/40 px-3 py-1.5 dark:border-white/10 dark:bg-white/[0.04]",
|
|
1017
1008
|
children: [
|
|
1018
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-3 w-3 shrink-0 text-
|
|
1019
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] font-semibold text-
|
|
1020
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1021
|
-
provider.apiKeyMasked && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto truncate font-mono text-[9px] text-
|
|
1009
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-3 w-3 shrink-0 text-slate-500 dark:text-slate-400" }),
|
|
1010
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] font-semibold text-slate-900 dark:text-white", children: provider.name }),
|
|
1011
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: provider.configured ? "emerald" : "amber", size: "xs", children: provider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }),
|
|
1012
|
+
provider.apiKeyMasked && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto truncate font-mono text-[9px] text-slate-400 dark:text-slate-500", title: provider.credentialRef, children: provider.apiKeyMasked })
|
|
1022
1013
|
]
|
|
1023
1014
|
},
|
|
1024
1015
|
provider.id
|
|
1025
1016
|
)) }),
|
|
1026
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-[10px] text-
|
|
1017
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-[10px] text-slate-400 dark:text-slate-500", children: selectedProviderId ? "" : t("agentDrawer.providerHint", { _: "Credenciais s\xE3o configuradas no n\xEDvel da conta. Aqui voc\xEA s\xF3 confere o que est\xE1 conectado." }) })
|
|
1027
1018
|
] })
|
|
1028
1019
|
] })
|
|
1029
1020
|
] })
|
|
@@ -1031,9 +1022,9 @@ function EngineTab({
|
|
|
1031
1022
|
}
|
|
1032
1023
|
function AgentModal({ onSaved, onPersist }) {
|
|
1033
1024
|
const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
|
|
1034
|
-
const activeModal =
|
|
1035
|
-
const agentData =
|
|
1036
|
-
const closeModal =
|
|
1025
|
+
const activeModal = chunk5SCZB5UI_js.useModalStore((s) => s.activeModal);
|
|
1026
|
+
const agentData = chunk5SCZB5UI_js.useModalStore((s) => s.agentData);
|
|
1027
|
+
const closeModal = chunk5SCZB5UI_js.useModalStore((s) => s.closeModal);
|
|
1037
1028
|
const open = activeModal === "agent";
|
|
1038
1029
|
const agent = agentData?.agent ?? null;
|
|
1039
1030
|
const models = agentData?.models ?? [];
|
|
@@ -1177,11 +1168,11 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1177
1168
|
if (!agent) return null;
|
|
1178
1169
|
const sections = [];
|
|
1179
1170
|
const effectiveAvatarUrl = avatarUrl || agent.avatar;
|
|
1180
|
-
const fieldCard = "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-xs text-
|
|
1171
|
+
const fieldCard = "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-xs text-slate-800 outline-none transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-200";
|
|
1181
1172
|
const fieldLabel = "text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400";
|
|
1182
1173
|
const avatarInitial = (displayName || agent.name).charAt(0).toUpperCase();
|
|
1183
1174
|
const avatarNode = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1184
|
-
|
|
1175
|
+
chunkFZUV7GNB_js.Avatar,
|
|
1185
1176
|
{
|
|
1186
1177
|
src: effectiveAvatarUrl || void 0,
|
|
1187
1178
|
alt: displayName || agent.name,
|
|
@@ -1193,7 +1184,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1193
1184
|
const statusPill = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
1194
1185
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[9px] font-semibold ${status === "active" ? "text-emerald-600 dark:text-emerald-400" : "text-slate-500"}`, children: status === "active" ? t("agentDrawer.statusActive", { _: "Active" }) : t("agentDrawer.statusInactive", { _: "Inactive" }) }),
|
|
1195
1186
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1196
|
-
|
|
1187
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
1197
1188
|
{
|
|
1198
1189
|
size: "sm",
|
|
1199
1190
|
color: "green",
|
|
@@ -1207,7 +1198,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1207
1198
|
)
|
|
1208
1199
|
] });
|
|
1209
1200
|
const identityCard = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface rounded-2xl p-3 ring-1 ring-slate-200/50 dark:ring-white/10", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1210
|
-
|
|
1201
|
+
chunkFZUV7GNB_js.HeroBlock,
|
|
1211
1202
|
{
|
|
1212
1203
|
icon: avatarNode,
|
|
1213
1204
|
iconBackground: "none",
|
|
@@ -1270,7 +1261,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1270
1261
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `font-medium ${autosaveColor}`, children: autosaveLabel })
|
|
1271
1262
|
] });
|
|
1272
1263
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1273
|
-
|
|
1264
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
1274
1265
|
{
|
|
1275
1266
|
open,
|
|
1276
1267
|
onClose: handleClose,
|
|
@@ -1287,7 +1278,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1287
1278
|
},
|
|
1288
1279
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
1289
1280
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1290
|
-
|
|
1281
|
+
chunkFZUV7GNB_js.SectionCard,
|
|
1291
1282
|
{
|
|
1292
1283
|
variant: "glass",
|
|
1293
1284
|
padded: false,
|
|
@@ -1327,7 +1318,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1327
1318
|
}
|
|
1328
1319
|
),
|
|
1329
1320
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1330
|
-
|
|
1321
|
+
chunkFZUV7GNB_js.SectionCard,
|
|
1331
1322
|
{
|
|
1332
1323
|
variant: "glass",
|
|
1333
1324
|
padded: false,
|
|
@@ -1355,7 +1346,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1355
1346
|
}
|
|
1356
1347
|
),
|
|
1357
1348
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1358
|
-
|
|
1349
|
+
chunkFZUV7GNB_js.SectionCard,
|
|
1359
1350
|
{
|
|
1360
1351
|
variant: "glass",
|
|
1361
1352
|
padded: false,
|
|
@@ -1451,9 +1442,9 @@ function ConfigSection({ title, icon: Icon, defaultOpen = true, children }) {
|
|
|
1451
1442
|
"aria-expanded": open,
|
|
1452
1443
|
className: "flex w-full items-center gap-2 px-4 py-2.5 text-left hover:bg-white/5",
|
|
1453
1444
|
children: [
|
|
1454
|
-
open ? /* @__PURE__ */ jsxRuntime.jsx(outline.ChevronDownIcon, { className: "h-3 w-3 text-
|
|
1455
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-3 w-3 text-
|
|
1456
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-
|
|
1445
|
+
open ? /* @__PURE__ */ jsxRuntime.jsx(outline.ChevronDownIcon, { className: "h-3 w-3 text-slate-400" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.ChevronRightIcon, { className: "h-3 w-3 text-slate-400" }),
|
|
1446
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-3 w-3 text-slate-400" }),
|
|
1447
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: title })
|
|
1457
1448
|
]
|
|
1458
1449
|
}
|
|
1459
1450
|
),
|
|
@@ -1478,7 +1469,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1478
1469
|
const markDirty = useSubworkflowStore((s) => s.markDirty);
|
|
1479
1470
|
const markSaved = useSubworkflowStore((s) => s.markSaved);
|
|
1480
1471
|
const closeModal = useSubworkflowStore((s) => s.closeModal);
|
|
1481
|
-
const agentBehind =
|
|
1472
|
+
const agentBehind = chunk5SCZB5UI_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
|
|
1482
1473
|
const isCreateMode = !tool?.toolId;
|
|
1483
1474
|
const initialGraph = react.useMemo(() => {
|
|
1484
1475
|
const config = tool?.config;
|
|
@@ -1507,9 +1498,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1507
1498
|
}, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
|
|
1508
1499
|
if (!tool) return null;
|
|
1509
1500
|
const categoryKey = category ?? "external";
|
|
1510
|
-
const gradient = tool.color ??
|
|
1511
|
-
const categoryPill =
|
|
1512
|
-
const IconComponent =
|
|
1501
|
+
const gradient = tool.color ?? chunk5SCZB5UI_js.CATEGORY_COLORS[categoryKey] ?? chunk5SCZB5UI_js.CATEGORY_COLORS.external;
|
|
1502
|
+
const categoryPill = chunk5SCZB5UI_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunk5SCZB5UI_js.CATEGORY_PILL_COLORS.external;
|
|
1503
|
+
const IconComponent = chunk5SCZB5UI_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
|
|
1513
1504
|
const graph = latestGraphRef.current;
|
|
1514
1505
|
const startNode = graph.nodes.find((n) => n.type === "start");
|
|
1515
1506
|
const endNode = graph.nodes.find((n) => n.type === "end");
|
|
@@ -1520,29 +1511,22 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1520
1511
|
const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1521
1512
|
/* @__PURE__ */ jsxRuntime.jsx("div", { role: "status", "aria-live": "polite", className: "text-xs", children: dirty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-amber-500 dark:text-amber-400", children: t("subworkflowDrawer.unsavedChanges") }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-emerald-500 dark:text-emerald-400", children: t("subworkflowDrawer.saved") }) }),
|
|
1522
1513
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1514
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("subworkflowDrawer.cancel") }),
|
|
1523
1515
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1524
|
-
|
|
1525
|
-
{
|
|
1526
|
-
type: "button",
|
|
1527
|
-
onClick: closeModal,
|
|
1528
|
-
className: "rounded-lg border border-gray-200/50 px-4 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100/50 dark:border-white/10 dark:text-gray-300 dark:hover:bg-white/5",
|
|
1529
|
-
children: t("subworkflowDrawer.cancel")
|
|
1530
|
-
}
|
|
1531
|
-
),
|
|
1532
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1533
|
-
"button",
|
|
1516
|
+
chunkMXQ2EYG2_js.Button,
|
|
1534
1517
|
{
|
|
1535
1518
|
type: "button",
|
|
1519
|
+
color: "ios-teal",
|
|
1520
|
+
size: "sm",
|
|
1536
1521
|
onClick: handleSave,
|
|
1537
|
-
disabled: isCreateMode && !name.trim(),
|
|
1538
|
-
className: `rounded-lg px-4 py-2 text-xs font-semibold text-white shadow-sm transition-all ${dirty ? "bg-gradient-to-r from-teal-500 to-cyan-500 hover:from-teal-600 hover:to-cyan-600" : "cursor-not-allowed bg-gray-300 dark:bg-gray-700"}`,
|
|
1522
|
+
disabled: isCreateMode && !name.trim() || !dirty,
|
|
1539
1523
|
children: isCreateMode ? t("subworkflowDrawer.create") : t("subworkflowDrawer.save")
|
|
1540
1524
|
}
|
|
1541
1525
|
)
|
|
1542
1526
|
] })
|
|
1543
1527
|
] });
|
|
1544
1528
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1545
|
-
|
|
1529
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
1546
1530
|
{
|
|
1547
1531
|
open,
|
|
1548
1532
|
onClose: closeModal,
|
|
@@ -1557,7 +1541,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1557
1541
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[80vh] min-h-[600px]", children: [
|
|
1558
1542
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-72 flex-shrink-0 flex-col overflow-y-auto border-r border-white/10", children: [
|
|
1559
1543
|
isCreateMode ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-white/10 bg-gradient-to-br from-teal-500/15 via-cyan-500/8 to-transparent px-4 py-4 dark:from-teal-500/8 dark:via-cyan-500/4", children: [
|
|
1560
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-[10px] font-semibold uppercase tracking-wider text-
|
|
1544
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("subworkflowDrawer.name") }),
|
|
1561
1545
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1562
1546
|
"input",
|
|
1563
1547
|
{
|
|
@@ -1566,7 +1550,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1566
1550
|
onChange: (event) => setName(event.target.value),
|
|
1567
1551
|
placeholder: t("subworkflowDrawer.namePlaceholder"),
|
|
1568
1552
|
autoFocus: true,
|
|
1569
|
-
className: "w-full rounded-lg border border-
|
|
1553
|
+
className: "w-full rounded-lg bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm border border-slate-200/50 dark:border-white/10 px-3 py-2 text-sm font-medium text-slate-900 outline-none placeholder:text-slate-400 focus:border-teal-300/50 focus:ring-1 focus:ring-teal-300/30 dark:text-white dark:placeholder:text-slate-500"
|
|
1570
1554
|
}
|
|
1571
1555
|
),
|
|
1572
1556
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex flex-wrap gap-1", children: ["external", "market", "data", "communication", "analytics"].map((cat) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1574,7 +1558,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1574
1558
|
{
|
|
1575
1559
|
type: "button",
|
|
1576
1560
|
onClick: () => setCategory(cat),
|
|
1577
|
-
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${
|
|
1561
|
+
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunk5SCZB5UI_js.CATEGORY_PILL_COLORS[cat] ?? chunk5SCZB5UI_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-slate-500 hover:bg-white/50 dark:bg-white/5 dark:text-slate-400"}`,
|
|
1578
1562
|
children: cat
|
|
1579
1563
|
},
|
|
1580
1564
|
cat
|
|
@@ -1582,20 +1566,21 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1582
1566
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-white/10 bg-gradient-to-br from-teal-500/15 via-cyan-500/8 to-transparent px-4 py-4 dark:from-teal-500/8 dark:via-cyan-500/4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1583
1567
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-gradient-to-br ${gradient} shadow-lg`, children: /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "h-5 w-5 text-white" }) }),
|
|
1584
1568
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
1585
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-sm font-bold text-
|
|
1569
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-sm font-bold text-slate-900 dark:text-white", children: name }),
|
|
1586
1570
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 flex flex-wrap gap-1", children: [
|
|
1587
1571
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center rounded-full bg-teal-100 px-1.5 py-0.5 text-[8px] font-semibold text-teal-700 dark:bg-teal-400/15 dark:text-teal-400", children: t("subworkflowDrawer.subworkflow") }),
|
|
1588
1572
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `inline-flex items-center rounded-full px-1.5 py-0.5 text-[8px] font-medium ${categoryPill}`, children: category })
|
|
1589
1573
|
] })
|
|
1590
1574
|
] }),
|
|
1591
1575
|
onMaximize && tool.toolId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1592
|
-
|
|
1576
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
1593
1577
|
{
|
|
1594
|
-
|
|
1578
|
+
label: t("subworkflowDrawer.openFullEditor"),
|
|
1579
|
+
variant: "ghost",
|
|
1580
|
+
size: "sm",
|
|
1581
|
+
color: "ios-teal",
|
|
1595
1582
|
onClick: () => onMaximize(tool.toolId),
|
|
1596
|
-
|
|
1597
|
-
className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-gray-400 transition-colors hover:bg-white/10 hover:text-teal-500 dark:hover:text-teal-400",
|
|
1598
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowsPointingOutIcon, { className: "h-4 w-4" })
|
|
1583
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowsPointingOutIcon, { className: "h-4 w-4" })
|
|
1599
1584
|
}
|
|
1600
1585
|
)
|
|
1601
1586
|
] }) }),
|
|
@@ -1606,19 +1591,19 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1606
1591
|
onChange: (event) => setDescription(event.target.value),
|
|
1607
1592
|
rows: 2,
|
|
1608
1593
|
placeholder: t("subworkflowDrawer.descriptionPlaceholder"),
|
|
1609
|
-
className: "w-full resize-none rounded-lg border border-
|
|
1594
|
+
className: "w-full resize-none rounded-lg bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm border border-slate-200/50 dark:border-white/10 px-2.5 py-2 text-[11px] leading-relaxed text-slate-700 outline-none placeholder:text-slate-400 focus:border-teal-300/50 dark:text-slate-300 dark:placeholder:text-slate-500"
|
|
1610
1595
|
}
|
|
1611
1596
|
) }),
|
|
1612
|
-
/* @__PURE__ */ jsxRuntime.jsx(ConfigSection, { title: t("subworkflowDrawer.inputVariables"), icon: outline.ArrowsPointingInIcon, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: inputVariables.length > 0 ? inputVariables.map((variable) => /* @__PURE__ */ jsxRuntime.jsx(VariableChip, { name: variable.name, type: variable.type }, variable.name)) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-
|
|
1613
|
-
/* @__PURE__ */ jsxRuntime.jsx(ConfigSection, { title: t("subworkflowDrawer.outputVariables"), icon: outline.ArrowsPointingOutIcon, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: outputVariables.length > 0 ? outputVariables.map((variable) => /* @__PURE__ */ jsxRuntime.jsx(OutputChip, { name: variable.name, type: variable.type }, variable.name)) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-
|
|
1597
|
+
/* @__PURE__ */ jsxRuntime.jsx(ConfigSection, { title: t("subworkflowDrawer.inputVariables"), icon: outline.ArrowsPointingInIcon, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: inputVariables.length > 0 ? inputVariables.map((variable) => /* @__PURE__ */ jsxRuntime.jsx(VariableChip, { name: variable.name, type: variable.type }, variable.name)) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("subworkflowDrawer.noVariables") }) }) }),
|
|
1598
|
+
/* @__PURE__ */ jsxRuntime.jsx(ConfigSection, { title: t("subworkflowDrawer.outputVariables"), icon: outline.ArrowsPointingOutIcon, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: outputVariables.length > 0 ? outputVariables.map((variable) => /* @__PURE__ */ jsxRuntime.jsx(OutputChip, { name: variable.name, type: variable.type }, variable.name)) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("subworkflowDrawer.noVariables") }) }) }),
|
|
1614
1599
|
/* @__PURE__ */ jsxRuntime.jsxs(ConfigSection, { title: t("subworkflowDrawer.executionSettings"), icon: outline.BoltIcon, defaultOpen: false, children: [
|
|
1615
1600
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
1616
1601
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
1617
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-[10px] text-
|
|
1602
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-[10px] text-slate-600 dark:text-slate-400", children: [
|
|
1618
1603
|
/* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-3 w-3" }),
|
|
1619
1604
|
t("subworkflowDrawer.timeout")
|
|
1620
1605
|
] }),
|
|
1621
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] font-bold tabular-nums text-
|
|
1606
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] font-bold tabular-nums text-slate-900 dark:text-white", children: [
|
|
1622
1607
|
(timeoutMs / 1e3).toFixed(0),
|
|
1623
1608
|
"s"
|
|
1624
1609
|
] })
|
|
@@ -1637,21 +1622,21 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1637
1622
|
"aria-valuemax": 30,
|
|
1638
1623
|
"aria-valuenow": timeoutMs / 1e3,
|
|
1639
1624
|
"aria-valuetext": `${(timeoutMs / 1e3).toFixed(0)} seconds`,
|
|
1640
|
-
className: "h-3 w-full cursor-pointer appearance-none rounded-full bg-
|
|
1625
|
+
className: "h-3 w-full cursor-pointer appearance-none rounded-full bg-slate-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-teal-500 dark:bg-slate-700 [&::-webkit-slider-thumb]:h-3 [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-teal-500"
|
|
1641
1626
|
}
|
|
1642
1627
|
)
|
|
1643
1628
|
] }),
|
|
1644
1629
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1645
1630
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
1646
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[10px] text-
|
|
1647
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-bold tabular-nums text-
|
|
1631
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[10px] text-slate-600 dark:text-slate-400", children: t("subworkflowDrawer.retries") }),
|
|
1632
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-bold tabular-nums text-slate-900 dark:text-white", children: retryCount })
|
|
1648
1633
|
] }),
|
|
1649
1634
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: [0, 1, 2, 3].map((count) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1650
1635
|
"button",
|
|
1651
1636
|
{
|
|
1652
1637
|
type: "button",
|
|
1653
1638
|
onClick: () => setRetryCount(count),
|
|
1654
|
-
className: `flex-1 rounded py-1 text-[10px] font-medium transition-all ${count === retryCount ? "bg-teal-500 text-white" : "bg-
|
|
1639
|
+
className: `flex-1 rounded py-1 text-[10px] font-medium transition-all ${count === retryCount ? "bg-teal-500 text-white" : "bg-white/40 text-slate-500 dark:bg-white/5 dark:text-slate-400"}`,
|
|
1655
1640
|
children: count
|
|
1656
1641
|
},
|
|
1657
1642
|
count
|
|
@@ -1661,7 +1646,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1661
1646
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
|
|
1662
1647
|
] }),
|
|
1663
1648
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1664
|
-
|
|
1649
|
+
chunk5SCZB5UI_js.WorkflowCanvas,
|
|
1665
1650
|
{
|
|
1666
1651
|
initialGraph,
|
|
1667
1652
|
agents: [],
|
|
@@ -1677,9 +1662,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1677
1662
|
}
|
|
1678
1663
|
function PipelineSettingsModal({ onSave }) {
|
|
1679
1664
|
const t = chunkY5VN4SPH_js.useTranslations("agents.workflow");
|
|
1680
|
-
const activeModal =
|
|
1681
|
-
const data =
|
|
1682
|
-
const closeModal =
|
|
1665
|
+
const activeModal = chunk5SCZB5UI_js.useModalStore((s) => s.activeModal);
|
|
1666
|
+
const data = chunk5SCZB5UI_js.useModalStore((s) => s.pipelineSettingsData);
|
|
1667
|
+
const closeModal = chunk5SCZB5UI_js.useModalStore((s) => s.closeModal);
|
|
1683
1668
|
const open = activeModal === "pipeline-settings";
|
|
1684
1669
|
const [nameValue, setNameValue] = react.useState("");
|
|
1685
1670
|
const [descriptionValue, setDescriptionValue] = react.useState("");
|
|
@@ -1730,17 +1715,9 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1730
1715
|
}
|
|
1731
1716
|
};
|
|
1732
1717
|
const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-2", children: [
|
|
1733
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1734
|
-
"button",
|
|
1735
|
-
{
|
|
1736
|
-
type: "button",
|
|
1737
|
-
onClick: closeModal,
|
|
1738
|
-
className: "rounded-lg border border-gray-200/50 px-4 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100/50 dark:border-white/10 dark:text-gray-300 dark:hover:bg-white/5",
|
|
1739
|
-
children: t("cancel")
|
|
1740
|
-
}
|
|
1741
|
-
),
|
|
1718
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("cancel") }),
|
|
1742
1719
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1743
|
-
|
|
1720
|
+
chunkMXQ2EYG2_js.Button,
|
|
1744
1721
|
{
|
|
1745
1722
|
type: "button",
|
|
1746
1723
|
onClick: () => {
|
|
@@ -1757,7 +1734,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1757
1734
|
)
|
|
1758
1735
|
] });
|
|
1759
1736
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1760
|
-
|
|
1737
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
1761
1738
|
{
|
|
1762
1739
|
open,
|
|
1763
1740
|
onClose: closeModal,
|
|
@@ -1780,7 +1757,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1780
1757
|
},
|
|
1781
1758
|
children: [
|
|
1782
1759
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1783
|
-
|
|
1760
|
+
chunkFZUV7GNB_js.FormInput,
|
|
1784
1761
|
{
|
|
1785
1762
|
label: t("pipelineName"),
|
|
1786
1763
|
value: nameValue,
|
|
@@ -1790,7 +1767,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1790
1767
|
}
|
|
1791
1768
|
),
|
|
1792
1769
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1793
|
-
|
|
1770
|
+
chunkFZUV7GNB_js.FormTextarea,
|
|
1794
1771
|
{
|
|
1795
1772
|
label: t("pipelineDescription"),
|
|
1796
1773
|
value: descriptionValue,
|
|
@@ -1801,7 +1778,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1801
1778
|
),
|
|
1802
1779
|
lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1803
1780
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1804
|
-
|
|
1781
|
+
chunkFZUV7GNB_js.FormInput,
|
|
1805
1782
|
{
|
|
1806
1783
|
label: t("pipelineSlug", { _: "Slug" }),
|
|
1807
1784
|
value: slugValue,
|
|
@@ -1812,12 +1789,12 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1812
1789
|
})
|
|
1813
1790
|
}
|
|
1814
1791
|
),
|
|
1815
|
-
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-2 rounded-xl
|
|
1816
|
-
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "px-1 text-xs font-medium text-
|
|
1817
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-
|
|
1792
|
+
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-2 rounded-xl liquid-surface p-3", children: [
|
|
1793
|
+
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "px-1 text-xs font-medium text-slate-600 dark:text-slate-300", children: t("pipelineLifecycle", { _: "Lifecycle" }) }),
|
|
1794
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-slate-700 dark:text-slate-200", children: [
|
|
1818
1795
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1819
1796
|
t("pipelineIsDraft", { _: "Draft mode" }),
|
|
1820
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-[11px] text-
|
|
1797
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-[11px] text-slate-400", children: isDraft ? t("pipelineIsDraftOn", { _: "Editable \u2014 changes do not affect runs." }) : t("pipelineIsDraftOff", { _: "Published \u2014 edits require a new version." }) })
|
|
1821
1798
|
] }),
|
|
1822
1799
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1823
1800
|
"input",
|
|
@@ -1825,14 +1802,14 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1825
1802
|
type: "checkbox",
|
|
1826
1803
|
checked: isDraft,
|
|
1827
1804
|
onChange: (event) => setIsDraft(event.target.checked),
|
|
1828
|
-
className: "h-4 w-4 rounded border-
|
|
1805
|
+
className: "h-4 w-4 rounded border-slate-300 text-indigo-600 focus:ring-indigo-500/70 focus:ring-offset-1"
|
|
1829
1806
|
}
|
|
1830
1807
|
)
|
|
1831
1808
|
] }),
|
|
1832
|
-
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-
|
|
1809
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-slate-700 dark:text-slate-200", children: [
|
|
1833
1810
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1834
1811
|
t("pipelineIsActive", { _: "Active" }),
|
|
1835
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-[11px] text-
|
|
1812
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-[11px] text-slate-400", children: isActive ? t("pipelineIsActiveOn", { _: "Visible in listings and runnable." }) : t("pipelineIsActiveOff", { _: "Archived \u2014 hidden from the default listing." }) })
|
|
1836
1813
|
] }),
|
|
1837
1814
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1838
1815
|
"input",
|
|
@@ -1840,7 +1817,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1840
1817
|
type: "checkbox",
|
|
1841
1818
|
checked: isActive,
|
|
1842
1819
|
onChange: (event) => setIsActive(event.target.checked),
|
|
1843
|
-
className: "h-4 w-4 rounded border-
|
|
1820
|
+
className: "h-4 w-4 rounded border-slate-300 text-indigo-600 focus:ring-indigo-500/70 focus:ring-offset-1"
|
|
1844
1821
|
}
|
|
1845
1822
|
)
|
|
1846
1823
|
] })
|
|
@@ -1913,24 +1890,16 @@ function RunReplayModal({
|
|
|
1913
1890
|
}
|
|
1914
1891
|
};
|
|
1915
1892
|
const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
1916
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[11px] text-
|
|
1893
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[11px] text-slate-400", children: [
|
|
1917
1894
|
"run ",
|
|
1918
1895
|
/* @__PURE__ */ jsxRuntime.jsx("code", { children: runId.slice(0, 8) }),
|
|
1919
1896
|
" \xB7 wf ",
|
|
1920
1897
|
/* @__PURE__ */ jsxRuntime.jsx("code", { children: workflowId.slice(0, 8) })
|
|
1921
1898
|
] }),
|
|
1922
1899
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1923
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1924
|
-
"button",
|
|
1925
|
-
{
|
|
1926
|
-
type: "button",
|
|
1927
|
-
onClick: onClose,
|
|
1928
|
-
className: "rounded-lg border border-gray-200/50 px-4 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100/50 dark:border-white/10 dark:text-gray-300 dark:hover:bg-white/5",
|
|
1929
|
-
children: t("cancel")
|
|
1930
|
-
}
|
|
1931
|
-
),
|
|
1900
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, size: "sm", onClick: onClose, children: t("cancel") }),
|
|
1932
1901
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1933
|
-
|
|
1902
|
+
chunkMXQ2EYG2_js.Button,
|
|
1934
1903
|
{
|
|
1935
1904
|
type: "submit",
|
|
1936
1905
|
form: "run-replay-form",
|
|
@@ -1945,7 +1914,7 @@ function RunReplayModal({
|
|
|
1945
1914
|
] })
|
|
1946
1915
|
] });
|
|
1947
1916
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1948
|
-
|
|
1917
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
1949
1918
|
{
|
|
1950
1919
|
open,
|
|
1951
1920
|
onClose,
|
|
@@ -1969,7 +1938,7 @@ function RunReplayModal({
|
|
|
1969
1938
|
},
|
|
1970
1939
|
className: "space-y-3",
|
|
1971
1940
|
children: [
|
|
1972
|
-
rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-
|
|
1941
|
+
rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: t("replayNoInputs", { _: "This run had no input variables \u2014 replaying will execute the workflow as-is." }) }) : rows.map((row, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1973
1942
|
RowEditor,
|
|
1974
1943
|
{
|
|
1975
1944
|
row,
|
|
@@ -1991,20 +1960,12 @@ function RowEditor({
|
|
|
1991
1960
|
onReset
|
|
1992
1961
|
}) {
|
|
1993
1962
|
const isJson = row.kind === "json";
|
|
1994
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-
|
|
1963
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-slate-200/60 bg-slate-50/60 p-3 dark:border-white/10 dark:bg-white/5", children: [
|
|
1995
1964
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [
|
|
1996
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs text-
|
|
1965
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs text-slate-700 dark:text-slate-200", children: row.key }),
|
|
1997
1966
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1998
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1999
|
-
row.touched && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2000
|
-
"button",
|
|
2001
|
-
{
|
|
2002
|
-
type: "button",
|
|
2003
|
-
onClick: onReset,
|
|
2004
|
-
className: "text-[11px] text-indigo-600 hover:text-indigo-500 dark:text-indigo-400",
|
|
2005
|
-
children: "reset"
|
|
2006
|
-
}
|
|
2007
|
-
)
|
|
1967
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", className: "uppercase tracking-wider", children: row.kind }),
|
|
1968
|
+
row.touched && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: onReset, children: "reset" })
|
|
2008
1969
|
] })
|
|
2009
1970
|
] }),
|
|
2010
1971
|
row.kind === "boolean" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2012,14 +1973,14 @@ function RowEditor({
|
|
|
2012
1973
|
{
|
|
2013
1974
|
value: row.value,
|
|
2014
1975
|
onChange: (event) => onChange({ value: event.target.value }),
|
|
2015
|
-
className: "w-full rounded-lg border border-
|
|
1976
|
+
className: "w-full rounded-lg border border-slate-200/50 bg-white/70 px-3 py-2 text-sm text-slate-900 dark:border-white/10 dark:bg-slate-800/70 dark:text-slate-100",
|
|
2016
1977
|
children: [
|
|
2017
1978
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "true", children: "true" }),
|
|
2018
1979
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "false", children: "false" })
|
|
2019
1980
|
]
|
|
2020
1981
|
}
|
|
2021
1982
|
) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2022
|
-
|
|
1983
|
+
chunkFZUV7GNB_js.FormTextarea,
|
|
2023
1984
|
{
|
|
2024
1985
|
value: row.value,
|
|
2025
1986
|
onValueChange: (v) => onChange({ value: v }),
|
|
@@ -2027,7 +1988,7 @@ function RowEditor({
|
|
|
2027
1988
|
className: "font-mono"
|
|
2028
1989
|
}
|
|
2029
1990
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2030
|
-
|
|
1991
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2031
1992
|
{
|
|
2032
1993
|
type: row.kind === "number" ? "number" : "text",
|
|
2033
1994
|
value: row.value,
|
|
@@ -2131,7 +2092,7 @@ function ExecutionTimelinePanel({
|
|
|
2131
2092
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate font-medium text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2132
2093
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2133
2094
|
] }),
|
|
2134
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2095
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Badge, { color: meta.color, children: [
|
|
2135
2096
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "mr-1 h-3 w-3" }),
|
|
2136
2097
|
labels[entry.status]
|
|
2137
2098
|
] })
|
|
@@ -2161,7 +2122,7 @@ function NodeInspector({
|
|
|
2161
2122
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2162
2123
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2163
2124
|
] }),
|
|
2164
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2125
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: meta.color, children: labels[entry.status] })
|
|
2165
2126
|
] }),
|
|
2166
2127
|
/* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-2 gap-3 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
2167
2128
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -2331,7 +2292,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
|
|
|
2331
2292
|
};
|
|
2332
2293
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
2333
2294
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2334
|
-
|
|
2295
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2335
2296
|
{
|
|
2336
2297
|
label: "Operator",
|
|
2337
2298
|
value: value.operator,
|
|
@@ -2354,7 +2315,7 @@ function SimpleEditor({
|
|
|
2354
2315
|
const isTruthy = value.operator === "truthy";
|
|
2355
2316
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2356
2317
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2357
|
-
|
|
2318
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2358
2319
|
{
|
|
2359
2320
|
label: "Field",
|
|
2360
2321
|
hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.category`",
|
|
@@ -2364,7 +2325,7 @@ function SimpleEditor({
|
|
|
2364
2325
|
}
|
|
2365
2326
|
),
|
|
2366
2327
|
!isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2367
|
-
|
|
2328
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2368
2329
|
{
|
|
2369
2330
|
label: "Value",
|
|
2370
2331
|
hint: "Literal. Numeric operators coerce via `as f64`.",
|
|
@@ -2380,7 +2341,7 @@ function ThresholdEditor({
|
|
|
2380
2341
|
}) {
|
|
2381
2342
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
|
|
2382
2343
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2383
|
-
|
|
2344
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2384
2345
|
{
|
|
2385
2346
|
label: "Field",
|
|
2386
2347
|
value: value.field ?? "",
|
|
@@ -2389,7 +2350,7 @@ function ThresholdEditor({
|
|
|
2389
2350
|
}
|
|
2390
2351
|
),
|
|
2391
2352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2392
|
-
|
|
2353
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2393
2354
|
{
|
|
2394
2355
|
label: "Direction",
|
|
2395
2356
|
value: value.comparison ?? "gte",
|
|
@@ -2403,7 +2364,7 @@ function ThresholdEditor({
|
|
|
2403
2364
|
}
|
|
2404
2365
|
),
|
|
2405
2366
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2406
|
-
|
|
2367
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2407
2368
|
{
|
|
2408
2369
|
label: "Threshold",
|
|
2409
2370
|
type: "number",
|
|
@@ -2420,7 +2381,7 @@ function RegexEditor({
|
|
|
2420
2381
|
}) {
|
|
2421
2382
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2422
2383
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2423
|
-
|
|
2384
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2424
2385
|
{
|
|
2425
2386
|
label: "Field",
|
|
2426
2387
|
value: value.field ?? "",
|
|
@@ -2429,7 +2390,7 @@ function RegexEditor({
|
|
|
2429
2390
|
}
|
|
2430
2391
|
),
|
|
2431
2392
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2432
|
-
|
|
2393
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2433
2394
|
{
|
|
2434
2395
|
label: "Pattern",
|
|
2435
2396
|
hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
|
|
@@ -2457,7 +2418,7 @@ function TimeWindowEditor({
|
|
|
2457
2418
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2458
2419
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2459
2420
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2460
|
-
|
|
2421
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2461
2422
|
{
|
|
2462
2423
|
label: "Timezone",
|
|
2463
2424
|
value: value.timezone ?? "UTC",
|
|
@@ -2466,7 +2427,7 @@ function TimeWindowEditor({
|
|
|
2466
2427
|
}
|
|
2467
2428
|
),
|
|
2468
2429
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2469
|
-
|
|
2430
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2470
2431
|
{
|
|
2471
2432
|
label: "Timestamp field (optional)",
|
|
2472
2433
|
hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
|
|
@@ -2479,7 +2440,7 @@ function TimeWindowEditor({
|
|
|
2479
2440
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2480
2441
|
windows.map((win, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2 rounded-lg border border-slate-200 p-2 dark:border-slate-700", children: [
|
|
2481
2442
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2482
|
-
|
|
2443
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2483
2444
|
{
|
|
2484
2445
|
label: `Start (hour)`,
|
|
2485
2446
|
type: "number",
|
|
@@ -2490,7 +2451,7 @@ function TimeWindowEditor({
|
|
|
2490
2451
|
}
|
|
2491
2452
|
),
|
|
2492
2453
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2493
|
-
|
|
2454
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2494
2455
|
{
|
|
2495
2456
|
label: `End (hour)`,
|
|
2496
2457
|
type: "number",
|
|
@@ -2500,9 +2461,9 @@ function TimeWindowEditor({
|
|
|
2500
2461
|
onValueChange: (raw) => update(index, { endHour: clampHour(raw, 24) })
|
|
2501
2462
|
}
|
|
2502
2463
|
),
|
|
2503
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2464
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2504
2465
|
] }, index)),
|
|
2505
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2466
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
|
|
2506
2467
|
] })
|
|
2507
2468
|
] });
|
|
2508
2469
|
}
|
|
@@ -2525,7 +2486,7 @@ function BooleanGroupEditor({
|
|
|
2525
2486
|
});
|
|
2526
2487
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2527
2488
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2528
|
-
|
|
2489
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2529
2490
|
{
|
|
2530
2491
|
label: "Combinator",
|
|
2531
2492
|
value: value.combinator ?? "and",
|
|
@@ -2543,9 +2504,9 @@ function BooleanGroupEditor({
|
|
|
2543
2504
|
depth
|
|
2544
2505
|
}
|
|
2545
2506
|
),
|
|
2546
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2507
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
|
|
2547
2508
|
] }, index)),
|
|
2548
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2509
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
|
|
2549
2510
|
] })
|
|
2550
2511
|
] });
|
|
2551
2512
|
}
|
|
@@ -2581,7 +2542,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2581
2542
|
};
|
|
2582
2543
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
2583
2544
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2584
|
-
|
|
2545
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2585
2546
|
{
|
|
2586
2547
|
label: "Action type",
|
|
2587
2548
|
value: type,
|
|
@@ -2591,7 +2552,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2591
2552
|
),
|
|
2592
2553
|
type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2593
2554
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2594
|
-
|
|
2555
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2595
2556
|
{
|
|
2596
2557
|
label: "Multiplier",
|
|
2597
2558
|
type: "number",
|
|
@@ -2601,7 +2562,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2601
2562
|
}
|
|
2602
2563
|
),
|
|
2603
2564
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2604
|
-
|
|
2565
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2605
2566
|
{
|
|
2606
2567
|
label: "Reason code",
|
|
2607
2568
|
value: stringParam(params.reason),
|
|
@@ -2611,7 +2572,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2611
2572
|
)
|
|
2612
2573
|
] }),
|
|
2613
2574
|
type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2614
|
-
|
|
2575
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2615
2576
|
{
|
|
2616
2577
|
label: "Floor (fraction, e.g. 0.08)",
|
|
2617
2578
|
type: "number",
|
|
@@ -2621,7 +2582,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2621
2582
|
}
|
|
2622
2583
|
),
|
|
2623
2584
|
type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2624
|
-
|
|
2585
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2625
2586
|
{
|
|
2626
2587
|
label: "Tolerance (fraction)",
|
|
2627
2588
|
type: "number",
|
|
@@ -2631,7 +2592,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2631
2592
|
}
|
|
2632
2593
|
),
|
|
2633
2594
|
type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2634
|
-
|
|
2595
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2635
2596
|
{
|
|
2636
2597
|
label: "Approval limit (fraction)",
|
|
2637
2598
|
type: "number",
|
|
@@ -2641,7 +2602,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2641
2602
|
}
|
|
2642
2603
|
),
|
|
2643
2604
|
type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2644
|
-
|
|
2605
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2645
2606
|
{
|
|
2646
2607
|
label: "Step (e.g. 0.009)",
|
|
2647
2608
|
type: "number",
|
|
@@ -2652,7 +2613,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2652
2613
|
),
|
|
2653
2614
|
type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2654
2615
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2655
|
-
|
|
2616
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2656
2617
|
{
|
|
2657
2618
|
label: "Channel",
|
|
2658
2619
|
value: stringParam(params.channel),
|
|
@@ -2661,7 +2622,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2661
2622
|
}
|
|
2662
2623
|
),
|
|
2663
2624
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2664
|
-
|
|
2625
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2665
2626
|
{
|
|
2666
2627
|
label: "Severity",
|
|
2667
2628
|
value: stringParam(params.severity),
|
|
@@ -2699,7 +2660,7 @@ function CustomParamsEditor({
|
|
|
2699
2660
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2700
2661
|
entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
|
|
2701
2662
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2702
|
-
|
|
2663
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2703
2664
|
{
|
|
2704
2665
|
label: "Key",
|
|
2705
2666
|
value: key,
|
|
@@ -2707,16 +2668,16 @@ function CustomParamsEditor({
|
|
|
2707
2668
|
}
|
|
2708
2669
|
),
|
|
2709
2670
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2710
|
-
|
|
2671
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2711
2672
|
{
|
|
2712
2673
|
label: "Value",
|
|
2713
2674
|
value: String(value ?? ""),
|
|
2714
2675
|
onValueChange: (raw) => update(index, key, raw)
|
|
2715
2676
|
}
|
|
2716
2677
|
),
|
|
2717
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2678
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2718
2679
|
] }, index)),
|
|
2719
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2680
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
|
|
2720
2681
|
] });
|
|
2721
2682
|
}
|
|
2722
2683
|
function numberParam(value, fallback) {
|
|
@@ -2746,9 +2707,9 @@ function RuleForm({ value, onChange }) {
|
|
|
2746
2707
|
);
|
|
2747
2708
|
const update = (key, v) => onChange({ ...value, [key]: v });
|
|
2748
2709
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
2749
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2710
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFZUV7GNB_js.FormGrid, { children: [
|
|
2750
2711
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2751
|
-
|
|
2712
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2752
2713
|
{
|
|
2753
2714
|
label: "Name",
|
|
2754
2715
|
required: true,
|
|
@@ -2757,7 +2718,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2757
2718
|
}
|
|
2758
2719
|
),
|
|
2759
2720
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2760
|
-
|
|
2721
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2761
2722
|
{
|
|
2762
2723
|
label: "Priority",
|
|
2763
2724
|
type: "number",
|
|
@@ -2767,7 +2728,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2767
2728
|
}
|
|
2768
2729
|
),
|
|
2769
2730
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2770
|
-
|
|
2731
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2771
2732
|
{
|
|
2772
2733
|
label: "Enabled",
|
|
2773
2734
|
value: value.enabled ? "true" : "false",
|
|
@@ -2779,7 +2740,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2779
2740
|
}
|
|
2780
2741
|
),
|
|
2781
2742
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2782
|
-
|
|
2743
|
+
chunkFZUV7GNB_js.FormTextarea,
|
|
2783
2744
|
{
|
|
2784
2745
|
label: "Description",
|
|
2785
2746
|
rows: 2,
|
|
@@ -2791,7 +2752,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2791
2752
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2792
2753
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2793
2754
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Condition" }),
|
|
2794
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2755
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "indigo", children: value.condition.operator })
|
|
2795
2756
|
] }),
|
|
2796
2757
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2797
2758
|
RuleConditionBuilder,
|
|
@@ -2804,7 +2765,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2804
2765
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2805
2766
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2806
2767
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Action on match" }),
|
|
2807
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2768
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "fuchsia", children: value.action.type })
|
|
2808
2769
|
] }),
|
|
2809
2770
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2810
2771
|
RuleActionBuilder,
|
|
@@ -2826,7 +2787,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2826
2787
|
),
|
|
2827
2788
|
showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2828
2789
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2829
|
-
|
|
2790
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2830
2791
|
{
|
|
2831
2792
|
label: "Valid from (ISO 8601)",
|
|
2832
2793
|
type: "datetime-local",
|
|
@@ -2835,7 +2796,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2835
2796
|
}
|
|
2836
2797
|
),
|
|
2837
2798
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2838
|
-
|
|
2799
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2839
2800
|
{
|
|
2840
2801
|
label: "Valid until (ISO 8601)",
|
|
2841
2802
|
type: "datetime-local",
|
|
@@ -2844,7 +2805,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2844
2805
|
}
|
|
2845
2806
|
),
|
|
2846
2807
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2847
|
-
|
|
2808
|
+
chunkFZUV7GNB_js.FormSelect,
|
|
2848
2809
|
{
|
|
2849
2810
|
label: "Status",
|
|
2850
2811
|
value: value.status ?? "active",
|
|
@@ -2853,7 +2814,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2853
2814
|
}
|
|
2854
2815
|
),
|
|
2855
2816
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2856
|
-
|
|
2817
|
+
chunkFZUV7GNB_js.FormInput,
|
|
2857
2818
|
{
|
|
2858
2819
|
label: "Tags (comma-separated)",
|
|
2859
2820
|
value: (value.tags ?? []).join(", "),
|
|
@@ -3001,7 +2962,7 @@ function SectionHeader({ icon, title, colorClass, count, onAdd, addLabel, isOpen
|
|
|
3001
2962
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3002
2963
|
outline.ChevronDownIcon,
|
|
3003
2964
|
{
|
|
3004
|
-
className: `h-3 w-3 text-
|
|
2965
|
+
className: `h-3 w-3 text-slate-400 transition-transform duration-200 ${isOpen ? "" : "-rotate-90"}`
|
|
3005
2966
|
}
|
|
3006
2967
|
)
|
|
3007
2968
|
]
|
|
@@ -3022,7 +2983,7 @@ function SectionHeader({ icon, title, colorClass, count, onAdd, addLabel, isOpen
|
|
|
3022
2983
|
function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count, onAdd, addLabel, children }) {
|
|
3023
2984
|
const [isOpen, setIsOpen] = react.useState(defaultOpen);
|
|
3024
2985
|
const safeChildren = react.Children.toArray(children);
|
|
3025
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-
|
|
2986
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-slate-200/40 dark:border-white/5", children: [
|
|
3026
2987
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3027
2988
|
SectionHeader,
|
|
3028
2989
|
{
|
|
@@ -3040,8 +3001,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
|
|
|
3040
3001
|
] });
|
|
3041
3002
|
}
|
|
3042
3003
|
function LogicNodeItemCard({ item, translationFunction }) {
|
|
3043
|
-
const IconComponent =
|
|
3044
|
-
const gradient =
|
|
3004
|
+
const IconComponent = chunk5SCZB5UI_js.LOGIC_ICON_MAP[item.nodeType];
|
|
3005
|
+
const gradient = chunk5SCZB5UI_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-slate-400 to-slate-500";
|
|
3045
3006
|
const defaultConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig(item.nodeType);
|
|
3046
3007
|
const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
|
|
3047
3008
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3053,8 +3014,8 @@ function LogicNodeItemCard({ item, translationFunction }) {
|
|
|
3053
3014
|
children: [
|
|
3054
3015
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br ${gradient} shadow-sm`, children: IconComponent && /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3055
3016
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3056
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-
|
|
3057
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-
|
|
3017
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: translationFunction(item.nameKey) }),
|
|
3018
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: translationFunction(item.descriptionKey) })
|
|
3058
3019
|
] })
|
|
3059
3020
|
]
|
|
3060
3021
|
}
|
|
@@ -3112,7 +3073,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3112
3073
|
[entityTypes, normalizedQuery]
|
|
3113
3074
|
);
|
|
3114
3075
|
const filteredLogicItems = react.useMemo(() => {
|
|
3115
|
-
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !
|
|
3076
|
+
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunk5SCZB5UI_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
|
|
3116
3077
|
if (!normalizedQuery) return visibleByDefault;
|
|
3117
3078
|
return visibleByDefault.filter(
|
|
3118
3079
|
(item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
|
|
@@ -3134,13 +3095,13 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3134
3095
|
function renderLogicSubcategory(subcategory, items, isFirst) {
|
|
3135
3096
|
if (items.length === 0) return null;
|
|
3136
3097
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
3137
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `${isFirst ? "mt-1" : "mt-2"} text-[9px] font-semibold uppercase tracking-wider text-
|
|
3098
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `${isFirst ? "mt-1" : "mt-2"} text-[9px] font-semibold uppercase tracking-wider text-slate-400 dark:text-slate-500`, children: t(SUBCATEGORY_LABELS[subcategory]) }),
|
|
3138
3099
|
items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(LogicNodeItemCard, { item, translationFunction: t }, item.nodeType))
|
|
3139
3100
|
] }, subcategory);
|
|
3140
3101
|
}
|
|
3141
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface w-[260px] flex-shrink-0 overflow-y-auto rounded-none border-0 border-r border-
|
|
3102
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface w-[260px] flex-shrink-0 overflow-y-auto rounded-none border-0 border-r border-slate-200/30 dark:border-white/5", children: [
|
|
3142
3103
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 pb-2", children: [
|
|
3143
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-semibold uppercase tracking-wider text-
|
|
3104
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("palette") }),
|
|
3144
3105
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3145
3106
|
"input",
|
|
3146
3107
|
{
|
|
@@ -3148,7 +3109,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3148
3109
|
value: searchQuery,
|
|
3149
3110
|
onChange: (event) => setSearchQuery(event.target.value),
|
|
3150
3111
|
placeholder: t("searchPalette"),
|
|
3151
|
-
className: "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-[11px] text-
|
|
3112
|
+
className: "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-[11px] text-slate-900 placeholder-slate-400 outline-none transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-white dark:placeholder-slate-500"
|
|
3152
3113
|
}
|
|
3153
3114
|
) })
|
|
3154
3115
|
] }),
|
|
@@ -3161,7 +3122,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3161
3122
|
onAdd: onCreateAgent,
|
|
3162
3123
|
addLabel: t("newAgent"),
|
|
3163
3124
|
count: filteredAgents.length,
|
|
3164
|
-
children: filteredAgents.length === 0 && filteredAgentTools.length === 0 && filteredProviders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-
|
|
3125
|
+
children: filteredAgents.length === 0 && filteredAgentTools.length === 0 && filteredProviders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("noAgents") }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3165
3126
|
filteredAgents.map((agent) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3166
3127
|
"div",
|
|
3167
3128
|
{
|
|
@@ -3170,24 +3131,24 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3170
3131
|
className: "liquid-surface group flex items-center gap-2 rounded-lg px-3 py-2 transition-all cursor-grab hover:shadow-md active:cursor-grabbing",
|
|
3171
3132
|
children: [
|
|
3172
3133
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-shrink-0", children: [
|
|
3173
|
-
agent.avatar ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: agent.avatar, alt: agent.name, className: "h-7 w-7 rounded-full bg-white shadow-sm ring-1 ring-
|
|
3174
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -bottom-0.5 -right-0.5 flex h-3.5 w-3.5 items-center justify-center rounded-full bg-indigo-500 ring-1.5 ring-white dark:ring-
|
|
3134
|
+
agent.avatar ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: agent.avatar, alt: agent.name, className: "h-7 w-7 rounded-full bg-white shadow-sm ring-1 ring-slate-200/50 dark:bg-slate-800 dark:ring-white/10" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-7 w-7 items-center justify-center rounded-full bg-gradient-to-br from-indigo-400 to-purple-500 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3135
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -bottom-0.5 -right-0.5 flex h-3.5 w-3.5 items-center justify-center rounded-full bg-indigo-500 ring-1.5 ring-white dark:ring-slate-900", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-2 w-2 text-white" }) })
|
|
3175
3136
|
] }),
|
|
3176
3137
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3177
3138
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
3178
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-
|
|
3139
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: agent.name }),
|
|
3179
3140
|
(() => {
|
|
3180
3141
|
const tier = chunk72SWXOD5_js.getAgentTier(Number(agent.elo ?? 0));
|
|
3181
3142
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: `shrink-0 rounded-full px-1.5 py-px text-[8px] font-bold ${tier.pillColor}`, children: t(`agentDrawer.tier${tier.key.charAt(0).toUpperCase()}${tier.key.slice(1)}`) });
|
|
3182
3143
|
})()
|
|
3183
3144
|
] }),
|
|
3184
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-
|
|
3145
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: agent.role ?? agent.agentId })
|
|
3185
3146
|
] })
|
|
3186
3147
|
]
|
|
3187
3148
|
},
|
|
3188
3149
|
agent.agentId
|
|
3189
3150
|
)),
|
|
3190
|
-
filteredProviders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 border-t border-
|
|
3151
|
+
filteredProviders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 border-t border-slate-200/40 pt-2 dark:border-white/5", children: [
|
|
3191
3152
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1.5 px-1 text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("connectionsSection") }),
|
|
3192
3153
|
filteredProviders.map((provider) => {
|
|
3193
3154
|
const providerLogo = PROVIDER_LOGOS3[provider.provider];
|
|
@@ -3211,13 +3172,13 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3211
3172
|
children: [
|
|
3212
3173
|
providerLogo ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-white/10 p-1", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: providerLogo, alt: "", className: "h-4 w-4 object-contain", loading: "lazy" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br from-rose-400 to-pink-500 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3213
3174
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3214
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-
|
|
3215
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "truncate text-[10px] text-
|
|
3175
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: provider.name }),
|
|
3176
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
3216
3177
|
provider.modelCount,
|
|
3217
3178
|
" models"
|
|
3218
3179
|
] })
|
|
3219
3180
|
] }),
|
|
3220
|
-
provider.configured ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3181
|
+
provider.configured ? /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "emerald", size: "xs", children: t("configured") }) : /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "amber", size: "xs", children: t("setup") })
|
|
3221
3182
|
]
|
|
3222
3183
|
},
|
|
3223
3184
|
provider.id
|
|
@@ -3235,7 +3196,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3235
3196
|
colorClass: "text-teal-600 dark:text-teal-400",
|
|
3236
3197
|
onAdd: onCreateTool,
|
|
3237
3198
|
addLabel: t("newSubworkflow"),
|
|
3238
|
-
children: filteredTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-
|
|
3199
|
+
children: filteredTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("noSubworkflows") }) : filteredTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3239
3200
|
"div",
|
|
3240
3201
|
{
|
|
3241
3202
|
draggable: true,
|
|
@@ -3244,11 +3205,11 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3244
3205
|
children: [
|
|
3245
3206
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br from-teal-400 to-emerald-500 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3246
3207
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3247
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-
|
|
3248
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-
|
|
3208
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: tool.name }),
|
|
3209
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: tool.category })
|
|
3249
3210
|
] }),
|
|
3250
3211
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3251
|
-
|
|
3212
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
3252
3213
|
{
|
|
3253
3214
|
checked: Boolean(tool.enabled),
|
|
3254
3215
|
onChange: () => {
|
|
@@ -3273,7 +3234,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3273
3234
|
colorClass: "text-violet-600 dark:text-violet-400",
|
|
3274
3235
|
onAdd: onCreateRule,
|
|
3275
3236
|
addLabel: t("newRule"),
|
|
3276
|
-
children: filteredRules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-
|
|
3237
|
+
children: filteredRules.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("noRules") }) : filteredRules.map((rule) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3277
3238
|
"div",
|
|
3278
3239
|
{
|
|
3279
3240
|
draggable: true,
|
|
@@ -3282,14 +3243,14 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3282
3243
|
children: [
|
|
3283
3244
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br from-violet-400 to-purple-500 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3284
3245
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3285
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-
|
|
3286
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "truncate text-[10px] text-
|
|
3246
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: rule.name }),
|
|
3247
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
3287
3248
|
"P",
|
|
3288
3249
|
String(rule.priority ?? "")
|
|
3289
3250
|
] })
|
|
3290
3251
|
] }),
|
|
3291
3252
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3292
|
-
|
|
3253
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
3293
3254
|
{
|
|
3294
3255
|
checked: Boolean(rule.enabled),
|
|
3295
3256
|
onChange: () => {
|
|
@@ -3315,7 +3276,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3315
3276
|
count: filteredEntityTypes.length,
|
|
3316
3277
|
onAdd: onCreateDatasource,
|
|
3317
3278
|
addLabel: t("newDataSource"),
|
|
3318
|
-
children: filteredEntityTypes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-
|
|
3279
|
+
children: filteredEntityTypes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("noDataSources") }) : filteredEntityTypes.map((entity) => {
|
|
3319
3280
|
const defaultConfig = JSON.stringify({
|
|
3320
3281
|
type: "entity",
|
|
3321
3282
|
entityMasterId: entity.id,
|
|
@@ -3325,8 +3286,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3325
3286
|
limit: entity.defaultLimit
|
|
3326
3287
|
});
|
|
3327
3288
|
const dsLogo = getDatasourceLogo(entity.id);
|
|
3328
|
-
const EntityIcon =
|
|
3329
|
-
const entityGradient =
|
|
3289
|
+
const EntityIcon = chunk5SCZB5UI_js.getEntityIcon(entity.id);
|
|
3290
|
+
const entityGradient = chunk5SCZB5UI_js.getEntityGradient(entity.id);
|
|
3330
3291
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3331
3292
|
"div",
|
|
3332
3293
|
{
|
|
@@ -3336,17 +3297,17 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3336
3297
|
children: [
|
|
3337
3298
|
dsLogo ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-white/10 p-1", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: dsLogo, alt: "", className: "h-4 w-4 object-contain", loading: "lazy" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br ${entityGradient} shadow-sm`, children: /* @__PURE__ */ jsxRuntime.jsx(EntityIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3338
3299
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3339
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-
|
|
3340
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "truncate text-[10px] text-
|
|
3300
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: entity.label }),
|
|
3301
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
3341
3302
|
entity.fieldCount,
|
|
3342
3303
|
" ",
|
|
3343
3304
|
t("entityFieldsLabel")
|
|
3344
3305
|
] })
|
|
3345
3306
|
] }),
|
|
3346
3307
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3347
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3308
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "zinc", size: "xs", children: "Read only" }),
|
|
3348
3309
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3349
|
-
|
|
3310
|
+
chunkFZUV7GNB_js.ToggleSwitch,
|
|
3350
3311
|
{
|
|
3351
3312
|
checked: true,
|
|
3352
3313
|
onChange: () => {
|
|
@@ -3370,7 +3331,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3370
3331
|
{
|
|
3371
3332
|
title: t("logicSection"),
|
|
3372
3333
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.BoltIcon, { className: "h-3 w-3" }),
|
|
3373
|
-
colorClass: "text-
|
|
3334
|
+
colorClass: "text-slate-600 dark:text-slate-400",
|
|
3374
3335
|
count: filteredLogicItems.length,
|
|
3375
3336
|
children: [
|
|
3376
3337
|
renderLogicSubcategory("control_flow", groupedLogicItems.control_flow, true),
|
|
@@ -3442,33 +3403,28 @@ function WorkflowListBar({
|
|
|
3442
3403
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-[10px] text-gray-400 dark:text-gray-500", children: workflow.updatedAt ? formatRelativeTime(typeof workflow.updatedAt === "string" ? workflow.updatedAt : workflow.updatedAt.toISOString()) : "" })
|
|
3443
3404
|
] }),
|
|
3444
3405
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100", children: [
|
|
3445
|
-
onConvertToSubworkflow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3446
|
-
|
|
3406
|
+
onConvertToSubworkflow && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3407
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
3447
3408
|
{
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3454
|
-
"aria-label": `${tWorkflow("convertToSubworkflow")} ${workflow.name}`,
|
|
3455
|
-
title: tWorkflow("convertToSubworkflow"),
|
|
3456
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5" })
|
|
3409
|
+
label: `${tWorkflow("convertToSubworkflow")} ${workflow.name}`,
|
|
3410
|
+
variant: "ghost",
|
|
3411
|
+
size: "sm",
|
|
3412
|
+
color: "ios-teal",
|
|
3413
|
+
onClick: () => onConvertToSubworkflow(workflow),
|
|
3414
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5" })
|
|
3457
3415
|
}
|
|
3458
|
-
),
|
|
3459
|
-
workflows.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3460
|
-
|
|
3416
|
+
) }),
|
|
3417
|
+
workflows.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3418
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
3461
3419
|
{
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
"aria-label": `${tWorkflow("deleteWorkflow")} ${workflow.name}`,
|
|
3469
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-3.5 w-3.5" })
|
|
3420
|
+
label: `${tWorkflow("deleteWorkflow")} ${workflow.name}`,
|
|
3421
|
+
variant: "ghost",
|
|
3422
|
+
size: "sm",
|
|
3423
|
+
destructive: true,
|
|
3424
|
+
onClick: () => onDelete(workflow.id, workflow.name),
|
|
3425
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-3.5 w-3.5" })
|
|
3470
3426
|
}
|
|
3471
|
-
)
|
|
3427
|
+
) })
|
|
3472
3428
|
] })
|
|
3473
3429
|
]
|
|
3474
3430
|
},
|
|
@@ -3539,22 +3495,23 @@ function VersionHistoryPanel({
|
|
|
3539
3495
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3540
3496
|
"div",
|
|
3541
3497
|
{
|
|
3542
|
-
className: "absolute right-0 top-0 z-40 flex h-full w-80 flex-col border-l border-
|
|
3498
|
+
className: "liquid-surface absolute right-0 top-0 z-40 flex h-full w-80 flex-col border-l border-slate-200/60 shadow-xl dark:border-white/10",
|
|
3543
3499
|
"data-testid": "version-history-panel",
|
|
3544
3500
|
children: [
|
|
3545
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between
|
|
3501
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between px-4 py-3", children: [
|
|
3546
3502
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3547
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5 text-
|
|
3548
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-
|
|
3503
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5 text-slate-500 dark:text-slate-400" }),
|
|
3504
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") })
|
|
3549
3505
|
] }),
|
|
3550
3506
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3551
|
-
|
|
3507
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
3552
3508
|
{
|
|
3553
|
-
|
|
3509
|
+
label: translations("close"),
|
|
3510
|
+
variant: "ghost",
|
|
3511
|
+
size: "sm",
|
|
3554
3512
|
onClick: onClose,
|
|
3555
|
-
|
|
3556
|
-
"data-testid": "version-history-close"
|
|
3557
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-4 w-4" })
|
|
3513
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-4 w-4" }),
|
|
3514
|
+
"data-testid": "version-history-close"
|
|
3558
3515
|
}
|
|
3559
3516
|
)
|
|
3560
3517
|
] }),
|
|
@@ -3562,36 +3519,28 @@ function VersionHistoryPanel({
|
|
|
3562
3519
|
isLoading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", "data-testid": "version-history-loading", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-6 w-6 animate-spin motion-reduce:animate-none rounded-full border-2 border-blue-500 border-t-transparent" }) }),
|
|
3563
3520
|
loadError && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-8 text-center", "data-testid": "version-history-error", children: [
|
|
3564
3521
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-500 dark:text-red-400", children: loadError }),
|
|
3565
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3566
|
-
"button",
|
|
3567
|
-
{
|
|
3568
|
-
type: "button",
|
|
3569
|
-
onClick: loadVersions,
|
|
3570
|
-
className: "mt-2 text-xs text-blue-600 hover:underline dark:text-blue-400",
|
|
3571
|
-
children: translations("retry")
|
|
3572
|
-
}
|
|
3573
|
-
)
|
|
3522
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: loadVersions, children: translations("retry") })
|
|
3574
3523
|
] }),
|
|
3575
3524
|
!isLoading && !loadError && versions.length === 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-12 text-center", "data-testid": "version-history-empty", children: [
|
|
3576
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "mx-auto h-8 w-8 text-
|
|
3577
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-
|
|
3525
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "mx-auto h-8 w-8 text-slate-300 dark:text-slate-600" }),
|
|
3526
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400", children: translations("noVersions") })
|
|
3578
3527
|
] }),
|
|
3579
|
-
!isLoading && !loadError && versions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-
|
|
3528
|
+
!isLoading && !loadError && versions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-slate-200/60 dark:divide-white/10", children: versions.map((version) => {
|
|
3580
3529
|
const isCurrentVersion = version.version === currentVersion;
|
|
3581
3530
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3582
3531
|
"div",
|
|
3583
3532
|
{
|
|
3584
|
-
className: `px-4 py-3 transition-colors ${isCurrentVersion ? "bg-blue-50 dark:bg-blue-500/10" : "hover:bg-
|
|
3533
|
+
className: `px-4 py-3 transition-colors ${isCurrentVersion ? "bg-blue-50 dark:bg-blue-500/10" : "hover:bg-white/40 dark:hover:bg-white/[0.04]"}`,
|
|
3585
3534
|
"data-testid": `version-entry-${version.version}`,
|
|
3586
3535
|
children: [
|
|
3587
3536
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3588
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm font-semibold text-
|
|
3537
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: [
|
|
3589
3538
|
"v",
|
|
3590
3539
|
version.version
|
|
3591
3540
|
] }),
|
|
3592
|
-
isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3541
|
+
isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Badge, { color: "blue", size: "xs", children: translations("current") })
|
|
3593
3542
|
] }) }),
|
|
3594
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 text-xs text-
|
|
3543
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
3595
3544
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: formatTimestamp3(version.publishedAt) }),
|
|
3596
3545
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5", children: [
|
|
3597
3546
|
translations("publishedBy"),
|
|
@@ -3610,11 +3559,12 @@ function VersionHistoryPanel({
|
|
|
3610
3559
|
] }),
|
|
3611
3560
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex gap-2", children: [
|
|
3612
3561
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3613
|
-
|
|
3562
|
+
chunkMXQ2EYG2_js.Button,
|
|
3614
3563
|
{
|
|
3615
3564
|
type: "button",
|
|
3565
|
+
outline: true,
|
|
3566
|
+
size: "xs",
|
|
3616
3567
|
onClick: () => onPreview(version),
|
|
3617
|
-
className: "inline-flex items-center gap-1 rounded-md border border-gray-300 px-2 py-1 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100 dark:border-gray-600 dark:text-gray-400 dark:hover:bg-gray-700",
|
|
3618
3568
|
"data-testid": `version-preview-${version.version}`,
|
|
3619
3569
|
children: [
|
|
3620
3570
|
/* @__PURE__ */ jsxRuntime.jsx(outline.EyeIcon, { className: "h-3 w-3" }),
|
|
@@ -3623,11 +3573,12 @@ function VersionHistoryPanel({
|
|
|
3623
3573
|
}
|
|
3624
3574
|
),
|
|
3625
3575
|
!isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3626
|
-
|
|
3576
|
+
chunkMXQ2EYG2_js.Button,
|
|
3627
3577
|
{
|
|
3628
3578
|
type: "button",
|
|
3579
|
+
outline: true,
|
|
3580
|
+
size: "xs",
|
|
3629
3581
|
onClick: () => onRestore(version),
|
|
3630
|
-
className: "inline-flex items-center gap-1 rounded-md border border-blue-300 px-2 py-1 text-xs font-medium text-blue-600 transition-colors hover:bg-blue-50 dark:border-blue-600 dark:text-blue-400 dark:hover:bg-blue-500/10",
|
|
3631
3582
|
"data-testid": `version-restore-${version.version}`,
|
|
3632
3583
|
children: [
|
|
3633
3584
|
/* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "h-3 w-3" }),
|
|
@@ -3649,8 +3600,8 @@ function VersionHistoryPanel({
|
|
|
3649
3600
|
var STATUS_CONFIG = {
|
|
3650
3601
|
pending: {
|
|
3651
3602
|
icon: outline.ClockIcon,
|
|
3652
|
-
color: "text-
|
|
3653
|
-
background: "bg-
|
|
3603
|
+
color: "text-slate-400 dark:text-slate-500",
|
|
3604
|
+
background: "bg-slate-100 dark:bg-slate-800",
|
|
3654
3605
|
label: "pending"
|
|
3655
3606
|
},
|
|
3656
3607
|
running: {
|
|
@@ -3681,9 +3632,9 @@ function formatDuration2(durationMs) {
|
|
|
3681
3632
|
}
|
|
3682
3633
|
function RunPanel({ open, onClose, onRun, onStop }) {
|
|
3683
3634
|
const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.runPanel");
|
|
3684
|
-
const nodes =
|
|
3685
|
-
const isRunning =
|
|
3686
|
-
const nodeResults =
|
|
3635
|
+
const nodes = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodes);
|
|
3636
|
+
const isRunning = chunk5SCZB5UI_js.useWorkflowStore((state) => state.isRunning);
|
|
3637
|
+
const nodeResults = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodeResults);
|
|
3687
3638
|
const startNode = nodes.find((node) => node.type === "start");
|
|
3688
3639
|
const hasEndNode = nodes.some((node) => node.type === "end");
|
|
3689
3640
|
const hasValidStartConfig = Boolean(
|
|
@@ -3695,13 +3646,13 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3695
3646
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3696
3647
|
"div",
|
|
3697
3648
|
{
|
|
3698
|
-
className: "absolute bottom-0 left-0 right-0 z-40 border-t border-
|
|
3649
|
+
className: "liquid-surface absolute bottom-0 left-0 right-0 z-40 border-t border-slate-200/60 shadow-xl dark:border-white/10",
|
|
3699
3650
|
"data-testid": "run-panel",
|
|
3700
3651
|
children: [
|
|
3701
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between
|
|
3652
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between px-4 py-2", children: [
|
|
3702
3653
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3703
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-4 w-4 text-
|
|
3704
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-
|
|
3654
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-4 w-4 text-slate-500 dark:text-slate-400" }),
|
|
3655
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") }),
|
|
3705
3656
|
isRunning && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3706
3657
|
"span",
|
|
3707
3658
|
{
|
|
@@ -3723,11 +3674,12 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3723
3674
|
] }),
|
|
3724
3675
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3725
3676
|
isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3726
|
-
|
|
3677
|
+
chunkMXQ2EYG2_js.Button,
|
|
3727
3678
|
{
|
|
3728
3679
|
type: "button",
|
|
3680
|
+
destructive: true,
|
|
3681
|
+
size: "sm",
|
|
3729
3682
|
onClick: onStop,
|
|
3730
|
-
className: "inline-flex items-center gap-1.5 rounded-lg bg-red-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-red-600",
|
|
3731
3683
|
"data-testid": "run-panel-stop",
|
|
3732
3684
|
children: [
|
|
3733
3685
|
/* @__PURE__ */ jsxRuntime.jsx(outline.StopIcon, { className: "h-3.5 w-3.5" }),
|
|
@@ -3735,12 +3687,13 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3735
3687
|
]
|
|
3736
3688
|
}
|
|
3737
3689
|
) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3738
|
-
|
|
3690
|
+
chunkMXQ2EYG2_js.Button,
|
|
3739
3691
|
{
|
|
3740
3692
|
type: "button",
|
|
3693
|
+
color: "ios-green",
|
|
3694
|
+
size: "sm",
|
|
3741
3695
|
onClick: onRun,
|
|
3742
3696
|
disabled: !canRun,
|
|
3743
|
-
className: "inline-flex items-center gap-1.5 rounded-lg bg-green-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-green-600 disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-green-500",
|
|
3744
3697
|
"data-testid": "run-panel-run",
|
|
3745
3698
|
children: [
|
|
3746
3699
|
/* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-3.5 w-3.5" }),
|
|
@@ -3749,18 +3702,19 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3749
3702
|
}
|
|
3750
3703
|
),
|
|
3751
3704
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3752
|
-
|
|
3705
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
3753
3706
|
{
|
|
3754
|
-
|
|
3707
|
+
label: translations("close"),
|
|
3708
|
+
variant: "ghost",
|
|
3709
|
+
size: "sm",
|
|
3755
3710
|
onClick: onClose,
|
|
3756
|
-
|
|
3757
|
-
"data-testid": "run-panel-close"
|
|
3758
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-4 w-4" })
|
|
3711
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-4 w-4" }),
|
|
3712
|
+
"data-testid": "run-panel-close"
|
|
3759
3713
|
}
|
|
3760
3714
|
)
|
|
3761
3715
|
] })
|
|
3762
3716
|
] }),
|
|
3763
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-48 overflow-y-auto px-4 py-2", children: executionNodes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-4 text-center text-sm text-
|
|
3717
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-48 overflow-y-auto px-4 py-2", children: executionNodes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-4 text-center text-sm text-slate-500 dark:text-slate-400", children: translations("noNodes") }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1", children: executionNodes.map((node) => {
|
|
3764
3718
|
const result = nodeResults[node.id];
|
|
3765
3719
|
const status = result?.status ?? "pending";
|
|
3766
3720
|
const statusConfig = STATUS_CONFIG[status];
|
|
@@ -3775,12 +3729,12 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3775
3729
|
/* @__PURE__ */ jsxRuntime.jsx(StatusIconComponent, { className: `h-4 w-4 flex-shrink-0 ${statusConfig.color}` }),
|
|
3776
3730
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3777
3731
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3778
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-sm font-medium text-
|
|
3779
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-
|
|
3732
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-sm font-medium text-slate-900 dark:text-white", children: nodeLabel }),
|
|
3733
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-slate-200 px-1.5 py-0.5 text-[10px] text-slate-500 dark:bg-slate-700 dark:text-slate-400", children: node.type })
|
|
3780
3734
|
] }),
|
|
3781
3735
|
result?.error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 truncate text-xs text-red-500 dark:text-red-400", children: result.error })
|
|
3782
3736
|
] }),
|
|
3783
|
-
result?.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0 text-xs text-
|
|
3737
|
+
result?.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0 text-xs text-slate-500 dark:text-slate-400", children: formatDuration2(result.durationMs) })
|
|
3784
3738
|
]
|
|
3785
3739
|
},
|
|
3786
3740
|
node.id
|
|
@@ -4014,8 +3968,8 @@ function inferVariables(config, nodeType) {
|
|
|
4014
3968
|
}
|
|
4015
3969
|
function VariableInspector({ open, onClose }) {
|
|
4016
3970
|
const translations = chunkY5VN4SPH_js.useTranslations("agents.workflow.variableInspector");
|
|
4017
|
-
const nodes =
|
|
4018
|
-
const edges =
|
|
3971
|
+
const nodes = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodes);
|
|
3972
|
+
const edges = chunk5SCZB5UI_js.useWorkflowStore((state) => state.edges);
|
|
4019
3973
|
const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
|
|
4020
3974
|
const toggleNodeExpansion = react.useCallback((nodeId) => {
|
|
4021
3975
|
setExpandedNodes((current) => {
|
|
@@ -4053,32 +4007,33 @@ function VariableInspector({ open, onClose }) {
|
|
|
4053
4007
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4054
4008
|
"div",
|
|
4055
4009
|
{
|
|
4056
|
-
className: "absolute right-0 top-0 z-40 flex h-full w-80 flex-col
|
|
4010
|
+
className: "liquid-surface absolute right-0 top-0 z-40 flex h-full w-80 flex-col shadow-xl",
|
|
4057
4011
|
"data-testid": "variable-inspector",
|
|
4058
4012
|
children: [
|
|
4059
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-b
|
|
4013
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between border-b px-4 py-3", children: [
|
|
4060
4014
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4061
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.VariableIcon, { className: "h-5 w-5 text-
|
|
4062
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-
|
|
4015
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.VariableIcon, { className: "h-5 w-5 text-slate-500 dark:text-slate-400" }),
|
|
4016
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") })
|
|
4063
4017
|
] }),
|
|
4064
4018
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4065
|
-
|
|
4019
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
4066
4020
|
{
|
|
4067
|
-
|
|
4021
|
+
label: translations("close"),
|
|
4022
|
+
variant: "ghost",
|
|
4023
|
+
size: "sm",
|
|
4068
4024
|
onClick: onClose,
|
|
4069
|
-
|
|
4070
|
-
"data-testid": "variable-inspector-close"
|
|
4071
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-4 w-4" })
|
|
4025
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-4 w-4" }),
|
|
4026
|
+
"data-testid": "variable-inspector-close"
|
|
4072
4027
|
}
|
|
4073
4028
|
)
|
|
4074
4029
|
] }),
|
|
4075
4030
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto", children: nodeVariableEntries.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-12 text-center", "data-testid": "variable-inspector-empty", children: [
|
|
4076
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.VariableIcon, { className: "mx-auto h-8 w-8 text-
|
|
4077
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-
|
|
4078
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-
|
|
4031
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.VariableIcon, { className: "mx-auto h-8 w-8 text-slate-300 dark:text-slate-600" }),
|
|
4032
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400", children: translations("noNodes") })
|
|
4033
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-slate-100 dark:divide-slate-800", children: nodeVariableEntries.map((entry) => {
|
|
4079
4034
|
const isExpanded = expandedNodes.has(entry.nodeId);
|
|
4080
|
-
const IconComponent =
|
|
4081
|
-
const gradient =
|
|
4035
|
+
const IconComponent = chunk5SCZB5UI_js.LOGIC_ICON_MAP[entry.nodeType];
|
|
4036
|
+
const gradient = chunk5SCZB5UI_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-slate-400 to-slate-500";
|
|
4082
4037
|
const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
|
|
4083
4038
|
const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
|
|
4084
4039
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
|
|
@@ -4087,12 +4042,12 @@ function VariableInspector({ open, onClose }) {
|
|
|
4087
4042
|
{
|
|
4088
4043
|
type: "button",
|
|
4089
4044
|
onClick: () => toggleNodeExpansion(entry.nodeId),
|
|
4090
|
-
className: "flex w-full items-center gap-2 px-4 py-2.5 text-left transition-colors hover:bg-
|
|
4045
|
+
className: "flex w-full items-center gap-2 px-4 py-2.5 text-left transition-colors hover:bg-white/40 dark:hover:bg-white/[0.04]",
|
|
4091
4046
|
children: [
|
|
4092
|
-
isExpanded ? /* @__PURE__ */ jsxRuntime.jsx(outline.ChevronDownIcon, { className: "h-3.5 w-3.5 flex-shrink-0 text-
|
|
4047
|
+
isExpanded ? /* @__PURE__ */ jsxRuntime.jsx(outline.ChevronDownIcon, { className: "h-3.5 w-3.5 flex-shrink-0 text-slate-400" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.ChevronRightIcon, { className: "h-3.5 w-3.5 flex-shrink-0 text-slate-400" }),
|
|
4093
4048
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-5 w-5 flex-shrink-0 items-center justify-center rounded bg-gradient-to-br ${gradient}`, children: IconComponent && /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "h-3 w-3 text-white" }) }),
|
|
4094
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-sm font-medium text-
|
|
4095
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-auto flex-shrink-0 text-[10px] text-
|
|
4049
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-sm font-medium text-slate-900 dark:text-white", children: entry.nodeLabel }),
|
|
4050
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-auto flex-shrink-0 text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
4096
4051
|
entry.variables.length,
|
|
4097
4052
|
" ",
|
|
4098
4053
|
translations("variables")
|
|
@@ -4100,32 +4055,32 @@ function VariableInspector({ open, onClose }) {
|
|
|
4100
4055
|
]
|
|
4101
4056
|
}
|
|
4102
4057
|
),
|
|
4103
|
-
isExpanded && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-
|
|
4058
|
+
isExpanded && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm px-4 pb-2", children: entry.variables.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "py-2 pl-9 text-xs italic text-slate-400 dark:text-slate-500", children: translations("noVariables") }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4104
4059
|
inputVariables.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pl-9 pt-1", children: [
|
|
4105
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-
|
|
4060
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-slate-400 dark:text-slate-500", children: translations("inputs") }),
|
|
4106
4061
|
inputVariables.map((variable, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4107
4062
|
"div",
|
|
4108
4063
|
{
|
|
4109
4064
|
className: "flex items-center gap-2 py-0.5",
|
|
4110
4065
|
children: [
|
|
4111
4066
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-blue-400" }),
|
|
4112
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-
|
|
4113
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-
|
|
4067
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-slate-700 dark:text-slate-300", children: variable.name }),
|
|
4068
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-slate-200 px-1 py-0.5 text-[9px] text-slate-500 dark:bg-slate-700 dark:text-slate-400", children: variable.variableType })
|
|
4114
4069
|
]
|
|
4115
4070
|
},
|
|
4116
4071
|
`${variable.name}-${index}`
|
|
4117
4072
|
))
|
|
4118
4073
|
] }),
|
|
4119
4074
|
outputVariables.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pl-9 pt-1", children: [
|
|
4120
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-
|
|
4075
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-slate-400 dark:text-slate-500", children: translations("outputs") }),
|
|
4121
4076
|
outputVariables.map((variable, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4122
4077
|
"div",
|
|
4123
4078
|
{
|
|
4124
4079
|
className: "flex items-center gap-2 py-0.5",
|
|
4125
4080
|
children: [
|
|
4126
4081
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-green-400" }),
|
|
4127
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-
|
|
4128
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-
|
|
4082
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-slate-700 dark:text-slate-300", children: variable.name }),
|
|
4083
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-slate-200 px-1 py-0.5 text-[9px] text-slate-500 dark:bg-slate-700 dark:text-slate-400", children: variable.variableType })
|
|
4129
4084
|
]
|
|
4130
4085
|
},
|
|
4131
4086
|
`${variable.name}-${index}`
|
|
@@ -4144,7 +4099,7 @@ function RunInputDialog({
|
|
|
4144
4099
|
onRun
|
|
4145
4100
|
}) {
|
|
4146
4101
|
const t = chunkY5VN4SPH_js.useTranslations("agents.workflow.runInputDialog");
|
|
4147
|
-
const nodes =
|
|
4102
|
+
const nodes = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodes);
|
|
4148
4103
|
const [values, setValues] = react.useState({});
|
|
4149
4104
|
const inputVariableNames = react.useMemo(() => {
|
|
4150
4105
|
const storeStartNode = nodes.find((node) => node.type === "start");
|
|
@@ -4171,7 +4126,7 @@ function RunInputDialog({
|
|
|
4171
4126
|
}, [onClose]);
|
|
4172
4127
|
if (!open) return null;
|
|
4173
4128
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4174
|
-
|
|
4129
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
4175
4130
|
{
|
|
4176
4131
|
open,
|
|
4177
4132
|
onClose: handleClose,
|
|
@@ -4182,7 +4137,7 @@ function RunInputDialog({
|
|
|
4182
4137
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: inputVariableNames.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-sm text-gray-500 dark:text-gray-400", children: t("noInputs") }) : inputVariableNames.map((variableName) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4183
4138
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
|
|
4184
4139
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4185
|
-
|
|
4140
|
+
chunkFZUV7GNB_js.Input,
|
|
4186
4141
|
{
|
|
4187
4142
|
value: values[variableName] ?? "",
|
|
4188
4143
|
onChange: (event) => handleValueChange(variableName, event.target.value),
|
|
@@ -4191,8 +4146,8 @@ function RunInputDialog({
|
|
|
4191
4146
|
)
|
|
4192
4147
|
] }, variableName)) }),
|
|
4193
4148
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [
|
|
4194
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4195
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4149
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
|
|
4150
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkMXQ2EYG2_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
|
|
4196
4151
|
/* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
|
|
4197
4152
|
t("run")
|
|
4198
4153
|
] })
|
|
@@ -4205,10 +4160,10 @@ var STATUS_STYLES = {
|
|
|
4205
4160
|
completed: { icon: outline.CheckCircleIcon, colorClass: "text-green-500" },
|
|
4206
4161
|
failed: { icon: outline.ExclamationCircleIcon, colorClass: "text-red-500" },
|
|
4207
4162
|
running: { icon: outline.ArrowPathIcon, colorClass: "text-blue-500 animate-spin motion-reduce:animate-none" },
|
|
4208
|
-
pending: { icon: outline.ClockIcon, colorClass: "text-
|
|
4163
|
+
pending: { icon: outline.ClockIcon, colorClass: "text-slate-400" },
|
|
4209
4164
|
success: { icon: outline.CheckCircleIcon, colorClass: "text-green-500" },
|
|
4210
4165
|
error: { icon: outline.ExclamationCircleIcon, colorClass: "text-red-500" },
|
|
4211
|
-
skipped: { icon: outline.ClockIcon, colorClass: "text-
|
|
4166
|
+
skipped: { icon: outline.ClockIcon, colorClass: "text-slate-400" }
|
|
4212
4167
|
};
|
|
4213
4168
|
function formatDuration3(durationMs) {
|
|
4214
4169
|
if (durationMs === null) return "\u2014";
|
|
@@ -4225,8 +4180,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4225
4180
|
const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
|
|
4226
4181
|
const [selectedRun, setSelectedRun] = react.useState(null);
|
|
4227
4182
|
const [selectedNode, setSelectedNode] = react.useState(null);
|
|
4228
|
-
const isRunning =
|
|
4229
|
-
const nodeResults =
|
|
4183
|
+
const isRunning = chunk5SCZB5UI_js.useWorkflowStore((state) => state.isRunning);
|
|
4184
|
+
const nodeResults = chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodeResults);
|
|
4230
4185
|
const refreshRuns = react.useCallback(async () => {
|
|
4231
4186
|
setIsLoadingRuns(true);
|
|
4232
4187
|
try {
|
|
@@ -4245,21 +4200,22 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4245
4200
|
if (!open) return null;
|
|
4246
4201
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4247
4202
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-x-0 top-[120px] bottom-0 z-40 bg-black/10 backdrop-blur-[1px]", onClick: onClose }),
|
|
4248
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed right-0 top-[120px] bottom-0 z-50 w-96 overflow-hidden border-l border-white/20 bg-white/95 shadow-2xl backdrop-blur-xl dark:border-
|
|
4249
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-b
|
|
4250
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-
|
|
4203
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed right-0 top-[120px] bottom-0 z-50 w-96 overflow-hidden border-l border-white/20 bg-white/95 shadow-2xl backdrop-blur-xl dark:border-slate-700/50 dark:bg-slate-800/95", children: [
|
|
4204
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider flex items-center justify-between border-b px-4 py-3", children: [
|
|
4205
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: t("title") }),
|
|
4251
4206
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4252
|
-
|
|
4207
|
+
chunkMXQ2EYG2_js.IconButton,
|
|
4253
4208
|
{
|
|
4254
|
-
|
|
4209
|
+
label: t("close"),
|
|
4210
|
+
variant: "ghost",
|
|
4211
|
+
size: "sm",
|
|
4255
4212
|
onClick: onClose,
|
|
4256
|
-
|
|
4257
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-4 w-4" })
|
|
4213
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-4 w-4" })
|
|
4258
4214
|
}
|
|
4259
4215
|
)
|
|
4260
4216
|
] }),
|
|
4261
4217
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col overflow-hidden", children: [
|
|
4262
|
-
isRunning && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "
|
|
4218
|
+
isRunning && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider border-b px-4 py-3", children: [
|
|
4263
4219
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center gap-2", children: [
|
|
4264
4220
|
/* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "h-4 w-4 animate-spin motion-reduce:animate-none text-blue-500" }),
|
|
4265
4221
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-blue-600 dark:text-blue-400", children: t("activeRun") })
|
|
@@ -4267,46 +4223,46 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4267
4223
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-60 space-y-1 overflow-y-auto", children: Object.entries(nodeResults).map(([nodeId, result]) => {
|
|
4268
4224
|
const statusStyle = STATUS_STYLES[result.status] ?? STATUS_STYLES.pending;
|
|
4269
4225
|
const StatusIcon = statusStyle.icon;
|
|
4270
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between rounded-lg px-2 py-1.5 text-xs hover:bg-
|
|
4226
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between rounded-lg px-2 py-1.5 text-xs hover:bg-white/40 dark:hover:bg-white/[0.04]", children: [
|
|
4271
4227
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4272
4228
|
/* @__PURE__ */ jsxRuntime.jsx(StatusIcon, { className: `h-3.5 w-3.5 ${statusStyle.colorClass}` }),
|
|
4273
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-
|
|
4229
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-slate-700 dark:text-slate-300", children: nodeId.slice(0, 8) })
|
|
4274
4230
|
] }),
|
|
4275
|
-
result.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4231
|
+
result.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-400", children: formatDuration3(result.durationMs) })
|
|
4276
4232
|
] }, nodeId);
|
|
4277
4233
|
}) })
|
|
4278
4234
|
] }),
|
|
4279
|
-
selectedNode && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "
|
|
4235
|
+
selectedNode && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-divider border-b px-4 py-3", children: [
|
|
4280
4236
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
4281
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-
|
|
4282
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4237
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: t("nodeDetail") }),
|
|
4238
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "xs", onClick: () => setSelectedNode(null), children: t("close") })
|
|
4283
4239
|
] }),
|
|
4284
4240
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-xs", children: [
|
|
4285
4241
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
|
|
4286
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4287
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: STATUS_STYLES[selectedNode.status]?.colorClass ?? "text-
|
|
4242
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-500", children: t("status") }),
|
|
4243
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: STATUS_STYLES[selectedNode.status]?.colorClass ?? "text-slate-400", children: t(selectedNode.status) })
|
|
4288
4244
|
] }),
|
|
4289
4245
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
|
|
4290
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4291
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4246
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-500", children: t("duration") }),
|
|
4247
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-700 dark:text-slate-300", children: formatDuration3(selectedNode.durationMs) })
|
|
4292
4248
|
] }),
|
|
4293
4249
|
selectedNode.error && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4294
4250
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500", children: t("error") }),
|
|
4295
4251
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 max-h-20 overflow-auto whitespace-pre-wrap rounded bg-red-50 p-2 text-[10px] text-red-700 dark:bg-red-900/20 dark:text-red-300", children: selectedNode.error })
|
|
4296
4252
|
] }),
|
|
4297
4253
|
Object.keys(selectedNode.outputs).length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4298
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4299
|
-
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 max-h-32 overflow-auto whitespace-pre-wrap rounded bg-
|
|
4254
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-500", children: t("outputs") }),
|
|
4255
|
+
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 max-h-32 overflow-auto whitespace-pre-wrap rounded bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm p-2 text-[10px] text-slate-700 dark:text-slate-300", children: JSON.stringify(selectedNode.outputs, null, 2) })
|
|
4300
4256
|
] })
|
|
4301
4257
|
] })
|
|
4302
4258
|
] }),
|
|
4303
4259
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 overflow-y-auto px-4 py-3", children: [
|
|
4304
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-2 text-xs font-semibold text-
|
|
4260
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-2 text-xs font-semibold text-slate-500 dark:text-slate-400", children: t("runHistory") }),
|
|
4305
4261
|
isLoadingRuns && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: [1, 2, 3].map((index) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-14 rounded-lg" }, index)) }),
|
|
4306
4262
|
!isLoadingRuns && runs.length === 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-8 text-center", children: [
|
|
4307
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "mx-auto mb-2 h-8 w-8 text-
|
|
4308
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-
|
|
4309
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[10px] text-
|
|
4263
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "mx-auto mb-2 h-8 w-8 text-slate-300 dark:text-slate-600" }),
|
|
4264
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: t("noRuns") }),
|
|
4265
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[10px] text-slate-400 dark:text-slate-500", children: t("noRunsDescription") })
|
|
4310
4266
|
] }),
|
|
4311
4267
|
!isLoadingRuns && runs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: runs.map((run) => {
|
|
4312
4268
|
const statusStyle = STATUS_STYLES[run.status] ?? STATUS_STYLES.pending;
|
|
@@ -4320,14 +4276,14 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4320
4276
|
setSelectedRun(isSelected ? null : run);
|
|
4321
4277
|
setSelectedNode(null);
|
|
4322
4278
|
},
|
|
4323
|
-
className: `w-full rounded-lg border px-3 py-2.5 text-left transition-colors ${isSelected ? "border-blue-200 bg-blue-50/50 dark:border-blue-800 dark:bg-blue-900/20" : "border-
|
|
4279
|
+
className: `w-full rounded-lg border px-3 py-2.5 text-left transition-colors ${isSelected ? "border-blue-200 bg-blue-50/50 dark:border-blue-800 dark:bg-blue-900/20" : "border-slate-100 hover:border-slate-200 hover:bg-white/40 dark:border-slate-700/50 dark:hover:border-slate-600 dark:hover:bg-white/[0.04]"}`,
|
|
4324
4280
|
children: [
|
|
4325
4281
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
4326
4282
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4327
4283
|
/* @__PURE__ */ jsxRuntime.jsx(StatusIcon, { className: `h-3.5 w-3.5 ${statusStyle.colorClass}` }),
|
|
4328
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-
|
|
4284
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-slate-900 dark:text-white", children: formatTimestamp2(run.createdAt) })
|
|
4329
4285
|
] }),
|
|
4330
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-
|
|
4286
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-slate-400", children: formatDuration3(run.totalDurationMs) })
|
|
4331
4287
|
] }),
|
|
4332
4288
|
run.error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 truncate text-[10px] text-red-500", children: run.error })
|
|
4333
4289
|
]
|
|
@@ -4336,7 +4292,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4336
4292
|
);
|
|
4337
4293
|
}) }),
|
|
4338
4294
|
selectedRun && selectedRun.nodeResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 space-y-1", children: [
|
|
4339
|
-
/* @__PURE__ */ jsxRuntime.jsx("h5", { className: "mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-
|
|
4295
|
+
/* @__PURE__ */ jsxRuntime.jsx("h5", { className: "mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-slate-400", children: "Nodes" }),
|
|
4340
4296
|
selectedRun.nodeResults.map((nodeResult) => {
|
|
4341
4297
|
const nodeStatusStyle = STATUS_STYLES[nodeResult.status] ?? STATUS_STYLES.pending;
|
|
4342
4298
|
const NodeStatusIcon = nodeStatusStyle.icon;
|
|
@@ -4345,13 +4301,13 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4345
4301
|
{
|
|
4346
4302
|
type: "button",
|
|
4347
4303
|
onClick: () => setSelectedNode(nodeResult),
|
|
4348
|
-
className: "flex w-full items-center justify-between rounded px-2 py-1.5 text-xs hover:bg-
|
|
4304
|
+
className: "flex w-full items-center justify-between rounded px-2 py-1.5 text-xs hover:bg-white/40 dark:hover:bg-white/[0.04]",
|
|
4349
4305
|
children: [
|
|
4350
4306
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4351
4307
|
/* @__PURE__ */ jsxRuntime.jsx(NodeStatusIcon, { className: `h-3 w-3 ${nodeStatusStyle.colorClass}` }),
|
|
4352
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4308
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-700 dark:text-slate-300", children: nodeResult.nodeType })
|
|
4353
4309
|
] }),
|
|
4354
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-
|
|
4310
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-slate-400", children: formatDuration3(nodeResult.durationMs) })
|
|
4355
4311
|
]
|
|
4356
4312
|
},
|
|
4357
4313
|
nodeResult.nodeId
|
|
@@ -4404,7 +4360,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4404
4360
|
onAutoSaveGraph(graph);
|
|
4405
4361
|
}, [onAutoSaveGraph, onGraphSnapshot]);
|
|
4406
4362
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4407
|
-
|
|
4363
|
+
chunk5SCZB5UI_js.Workspace,
|
|
4408
4364
|
{
|
|
4409
4365
|
...workspaceProps,
|
|
4410
4366
|
onGraphChange: handleGraphChange
|
|
@@ -4412,7 +4368,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4412
4368
|
);
|
|
4413
4369
|
});
|
|
4414
4370
|
function DynamicIslandConfirm2(props) {
|
|
4415
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4371
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFZUV7GNB_js.DynamicIslandConfirm, { ...props });
|
|
4416
4372
|
}
|
|
4417
4373
|
var JSON_PREVIEW_LINE_LIMIT = 50;
|
|
4418
4374
|
function DslExportModal({ open, onClose, workflow, graph }) {
|
|
@@ -4466,7 +4422,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4466
4422
|
}, [jsonString, workflow.name, workflow.version]);
|
|
4467
4423
|
if (!open) return null;
|
|
4468
4424
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4469
|
-
|
|
4425
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
4470
4426
|
{
|
|
4471
4427
|
open,
|
|
4472
4428
|
onClose,
|
|
@@ -4474,41 +4430,41 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4474
4430
|
subtitle: translations("description"),
|
|
4475
4431
|
maxWidth: "2xl",
|
|
4476
4432
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "dsl-export-modal", children: [
|
|
4477
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
4433
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-divider px-1 py-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4 text-sm", children: [
|
|
4478
4434
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4479
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4480
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-
|
|
4435
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-500 dark:text-slate-400", children: translations("workflowName") }),
|
|
4436
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-slate-900 dark:text-white", children: workflow.name })
|
|
4481
4437
|
] }),
|
|
4482
4438
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4483
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4484
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-medium text-
|
|
4439
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-500 dark:text-slate-400", children: translations("version") }),
|
|
4440
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-medium text-slate-900 dark:text-white", children: [
|
|
4485
4441
|
"v",
|
|
4486
4442
|
workflow.version
|
|
4487
4443
|
] })
|
|
4488
4444
|
] }),
|
|
4489
4445
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4490
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4491
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-
|
|
4446
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-500 dark:text-slate-400", children: translations("nodes") }),
|
|
4447
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-slate-900 dark:text-white", children: graph.nodes.length })
|
|
4492
4448
|
] }),
|
|
4493
4449
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4494
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-
|
|
4495
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-
|
|
4450
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-500 dark:text-slate-400", children: translations("edges") }),
|
|
4451
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-slate-900 dark:text-white", children: graph.edges.length })
|
|
4496
4452
|
] })
|
|
4497
4453
|
] }) }),
|
|
4498
4454
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-1 py-4", children: [
|
|
4499
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 text-xs font-medium uppercase tracking-wider text-
|
|
4455
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 text-xs font-medium uppercase tracking-wider text-slate-400 dark:text-slate-500", children: translations("preview") }),
|
|
4500
4456
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4501
4457
|
"pre",
|
|
4502
4458
|
{
|
|
4503
|
-
className: "max-h-64 overflow-auto rounded-lg
|
|
4459
|
+
className: "liquid-surface max-h-64 overflow-auto rounded-lg p-3 text-xs text-slate-700 dark:text-slate-300",
|
|
4504
4460
|
"data-testid": "export-json-preview",
|
|
4505
4461
|
children: previewLines
|
|
4506
4462
|
}
|
|
4507
4463
|
)
|
|
4508
4464
|
] }),
|
|
4509
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-
|
|
4465
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-slate-200 px-1 py-4 dark:border-slate-700", children: [
|
|
4510
4466
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4511
|
-
|
|
4467
|
+
chunkMXQ2EYG2_js.Button,
|
|
4512
4468
|
{
|
|
4513
4469
|
type: "button",
|
|
4514
4470
|
onClick: handleCopyToClipboard,
|
|
@@ -4525,7 +4481,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4525
4481
|
}
|
|
4526
4482
|
),
|
|
4527
4483
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4528
|
-
|
|
4484
|
+
chunkMXQ2EYG2_js.Button,
|
|
4529
4485
|
{
|
|
4530
4486
|
type: "button",
|
|
4531
4487
|
onClick: handleDownloadJson,
|
|
@@ -4684,7 +4640,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4684
4640
|
}, []);
|
|
4685
4641
|
if (!open) return null;
|
|
4686
4642
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4687
|
-
|
|
4643
|
+
chunkFZUV7GNB_js.GlassModal,
|
|
4688
4644
|
{
|
|
4689
4645
|
open,
|
|
4690
4646
|
onClose,
|
|
@@ -4699,15 +4655,15 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4699
4655
|
onDragLeave: handleDragLeave,
|
|
4700
4656
|
onDrop: handleDrop,
|
|
4701
4657
|
onClick: handleClickUpload,
|
|
4702
|
-
className: `cursor-pointer rounded-xl border-2 border-dashed p-8 text-center transition-colors duration-200 ${isDragActive ? "border-blue-400 bg-blue-50 dark:border-blue-500 dark:bg-blue-500/10" : "border-
|
|
4658
|
+
className: `cursor-pointer rounded-xl border-2 border-dashed p-8 text-center transition-colors duration-200 ${isDragActive ? "border-blue-400 bg-blue-50 dark:border-blue-500 dark:bg-blue-500/10" : "border-slate-300 hover:border-slate-400 dark:border-slate-600 dark:hover:border-slate-500"}`,
|
|
4703
4659
|
"data-testid": "import-dropzone",
|
|
4704
4660
|
role: "button",
|
|
4705
4661
|
tabIndex: 0,
|
|
4706
4662
|
"aria-label": translations("dropzone"),
|
|
4707
4663
|
children: [
|
|
4708
|
-
/* @__PURE__ */ jsxRuntime.jsx(outline.ArrowUpTrayIcon, { className: "mx-auto h-10 w-10 text-
|
|
4709
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm font-medium text-
|
|
4710
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-
|
|
4664
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.ArrowUpTrayIcon, { className: "mx-auto h-10 w-10 text-slate-400 dark:text-slate-500" }),
|
|
4665
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm font-medium text-slate-700 dark:text-slate-300", children: translations("dropzone") }),
|
|
4666
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: translations("dropzoneHint") }),
|
|
4711
4667
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4712
4668
|
"input",
|
|
4713
4669
|
{
|
|
@@ -4723,8 +4679,8 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4723
4679
|
}
|
|
4724
4680
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "import-validation-result", children: [
|
|
4725
4681
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center justify-between", children: [
|
|
4726
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-
|
|
4727
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4682
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-slate-700 dark:text-slate-300", children: fileName }),
|
|
4683
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
|
|
4728
4684
|
] }),
|
|
4729
4685
|
validationResult.isValid ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-green-200 bg-green-50 p-4 dark:border-green-800 dark:bg-green-900/20", children: [
|
|
4730
4686
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -4751,10 +4707,10 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4751
4707
|
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-2 space-y-1", children: validationResult.errors.map((validationError, index) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "text-xs text-red-600 dark:text-red-400", children: validationError }, index)) })
|
|
4752
4708
|
] })
|
|
4753
4709
|
] }) }),
|
|
4754
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-
|
|
4755
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4710
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-slate-200 px-1 py-4 dark:border-slate-700", children: [
|
|
4711
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMXQ2EYG2_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
|
|
4756
4712
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4757
|
-
|
|
4713
|
+
chunkMXQ2EYG2_js.Button,
|
|
4758
4714
|
{
|
|
4759
4715
|
type: "button",
|
|
4760
4716
|
onClick: handleImport,
|
|
@@ -4775,14 +4731,14 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4775
4731
|
}
|
|
4776
4732
|
|
|
4777
4733
|
// src/astrlabe/store/selectors.ts
|
|
4778
|
-
var useCanUndo = () =>
|
|
4779
|
-
var useCanRedo = () =>
|
|
4780
|
-
var useHasCopied = () =>
|
|
4781
|
-
var useContextMenu = () =>
|
|
4782
|
-
var useEditingNodeId = () =>
|
|
4783
|
-
var useSelectedNodeCount = () =>
|
|
4784
|
-
var useIsRunning = () =>
|
|
4785
|
-
var useNodeResults = () =>
|
|
4734
|
+
var useCanUndo = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.past.length > 0);
|
|
4735
|
+
var useCanRedo = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.future.length > 0);
|
|
4736
|
+
var useHasCopied = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.clipboard !== null);
|
|
4737
|
+
var useContextMenu = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.contextMenu);
|
|
4738
|
+
var useEditingNodeId = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.editingNodeId);
|
|
4739
|
+
var useSelectedNodeCount = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
|
|
4740
|
+
var useIsRunning = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.isRunning);
|
|
4741
|
+
var useNodeResults = () => chunk5SCZB5UI_js.useWorkflowStore((state) => state.nodeResults);
|
|
4786
4742
|
var DEFAULT_MAX_HISTORY = 50;
|
|
4787
4743
|
function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
|
|
4788
4744
|
const pastRef = react.useRef([]);
|
|
@@ -5106,5 +5062,5 @@ exports.useNodeResults = useNodeResults;
|
|
|
5106
5062
|
exports.useSelectedNodeCount = useSelectedNodeCount;
|
|
5107
5063
|
exports.useSubworkflowStore = useSubworkflowStore;
|
|
5108
5064
|
exports.useUndoRedo = useUndoRedo;
|
|
5109
|
-
//# sourceMappingURL=chunk-
|
|
5110
|
-
//# sourceMappingURL=chunk-
|
|
5065
|
+
//# sourceMappingURL=chunk-ZIRD3X6G.js.map
|
|
5066
|
+
//# sourceMappingURL=chunk-ZIRD3X6G.js.map
|