@datatechsolutions/ui 2.11.82 → 2.11.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astrlabe/index.d.mts +2 -2
- package/dist/astrlabe/index.d.ts +2 -2
- package/dist/astrlabe/index.js +110 -106
- package/dist/astrlabe/index.mjs +4 -4
- package/dist/astrlabe/workflow-canvas.js +4 -4
- package/dist/astrlabe/workflow-canvas.mjs +3 -3
- package/dist/chunk-3T2WGL47.js +44 -0
- package/dist/chunk-3T2WGL47.js.map +1 -0
- package/dist/{chunk-HAZP5J67.mjs → chunk-63AL2RN5.mjs} +187 -17
- package/dist/chunk-63AL2RN5.mjs.map +1 -0
- package/dist/chunk-64G2HBRQ.mjs +481 -0
- package/dist/chunk-64G2HBRQ.mjs.map +1 -0
- package/dist/{chunk-J3OYJ44D.mjs → chunk-BH2AU3LG.mjs} +3 -3
- package/dist/{chunk-J3OYJ44D.mjs.map → chunk-BH2AU3LG.mjs.map} +1 -1
- package/dist/chunk-CCRBT7TA.mjs +941 -0
- package/dist/chunk-CCRBT7TA.mjs.map +1 -0
- package/dist/chunk-CHLJUSXX.mjs +128 -0
- package/dist/chunk-CHLJUSXX.mjs.map +1 -0
- package/dist/chunk-CXIQWPBH.js +214 -0
- package/dist/chunk-CXIQWPBH.js.map +1 -0
- package/dist/chunk-EDE36MKE.mjs +412 -0
- package/dist/chunk-EDE36MKE.mjs.map +1 -0
- package/dist/{chunk-M7P2TQ6X.js → chunk-EFREXNZB.js} +64 -64
- package/dist/{chunk-M7P2TQ6X.js.map → chunk-EFREXNZB.js.map} +1 -1
- package/dist/chunk-FAGDZEKM.js +23 -0
- package/dist/chunk-FAGDZEKM.js.map +1 -0
- package/dist/{chunk-TUEYBNWL.js → chunk-GV6WJCEB.js} +3 -3
- package/dist/{chunk-TUEYBNWL.js.map → chunk-GV6WJCEB.js.map} +1 -1
- package/dist/chunk-HU3EAHFO.mjs +20 -0
- package/dist/chunk-HU3EAHFO.mjs.map +1 -0
- package/dist/{chunk-LLFU42KC.mjs → chunk-I6WYV2AN.mjs} +3 -3
- package/dist/{chunk-LLFU42KC.mjs.map → chunk-I6WYV2AN.mjs.map} +1 -1
- package/dist/chunk-JJWFMKZY.js +132 -0
- package/dist/chunk-JJWFMKZY.js.map +1 -0
- package/dist/{chunk-K4QJV3GC.js → chunk-L6FVIWAJ.js} +308 -137
- package/dist/chunk-L6FVIWAJ.js.map +1 -0
- package/dist/chunk-MNQEZL7B.mjs +210 -0
- package/dist/chunk-MNQEZL7B.mjs.map +1 -0
- package/dist/chunk-SGJ24J2Q.js +943 -0
- package/dist/chunk-SGJ24J2Q.js.map +1 -0
- package/dist/chunk-SW6TVAIJ.js +418 -0
- package/dist/chunk-SW6TVAIJ.js.map +1 -0
- package/dist/chunk-SYNVNTLJ.mjs +20 -0
- package/dist/chunk-SYNVNTLJ.mjs.map +1 -0
- package/dist/chunk-UQXVCVAN.mjs +41 -0
- package/dist/chunk-UQXVCVAN.mjs.map +1 -0
- package/dist/chunk-WGELLCOZ.js +22 -0
- package/dist/chunk-WGELLCOZ.js.map +1 -0
- package/dist/chunk-YXPHJ2BQ.js +541 -0
- package/dist/chunk-YXPHJ2BQ.js.map +1 -0
- package/dist/index.d.mts +3 -47
- package/dist/index.d.ts +3 -47
- package/dist/index.js +765 -765
- package/dist/index.mjs +2 -2
- package/dist/navigation-BiWVffAN.d.mts +49 -0
- package/dist/navigation-BiWVffAN.d.ts +49 -0
- package/dist/platform/agents-workspace.d.mts +19 -0
- package/dist/platform/agents-workspace.d.ts +19 -0
- package/dist/platform/agents-workspace.js +26 -0
- package/dist/platform/agents-workspace.js.map +1 -0
- package/dist/platform/agents-workspace.mjs +17 -0
- package/dist/platform/agents-workspace.mjs.map +1 -0
- package/dist/platform/app-shell.d.mts +58 -0
- package/dist/platform/app-shell.d.ts +58 -0
- package/dist/platform/app-shell.js +17 -0
- package/dist/platform/app-shell.js.map +1 -0
- package/dist/platform/app-shell.mjs +8 -0
- package/dist/platform/app-shell.mjs.map +1 -0
- package/dist/platform/index.d.mts +100 -3
- package/dist/platform/index.d.ts +100 -3
- package/dist/platform/index.js +499 -28
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +472 -27
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/pages/index.d.mts +243 -82
- package/dist/platform/pages/index.d.ts +243 -82
- package/dist/platform/pages/index.js +886 -614
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +756 -511
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/utils/index.js +18 -56
- package/dist/platform/utils/index.js.map +1 -1
- package/dist/platform/utils/index.mjs +3 -53
- package/dist/platform/utils/index.mjs.map +1 -1
- package/dist/platform/workflow-api-client.d.mts +6 -0
- package/dist/platform/workflow-api-client.d.ts +6 -0
- package/dist/platform/workflow-api-client.js +246 -0
- package/dist/platform/workflow-api-client.js.map +1 -0
- package/dist/platform/workflow-api-client.mjs +5 -0
- package/dist/platform/workflow-api-client.mjs.map +1 -0
- package/dist/platform/workflow-canvas-shell.d.mts +18 -0
- package/dist/platform/workflow-canvas-shell.d.ts +18 -0
- package/dist/platform/workflow-canvas-shell.js +20 -0
- package/dist/platform/workflow-canvas-shell.js.map +1 -0
- package/dist/platform/workflow-canvas-shell.mjs +11 -0
- package/dist/platform/workflow-canvas-shell.mjs.map +1 -0
- package/dist/{rule-form-F5jBOeqk.d.mts → rule-form-BYJzyork.d.mts} +50 -1
- package/dist/{rule-form-F5jBOeqk.d.ts → rule-form-BYJzyork.d.ts} +50 -1
- package/dist/workflow-api-client-C8gPn_D1.d.mts +386 -0
- package/dist/workflow-api-client-Dy1Ph8W-.d.ts +386 -0
- package/package.json +21 -1
- package/dist/chunk-HAZP5J67.mjs.map +0 -1
- package/dist/chunk-K4QJV3GC.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkEFREXNZB_js = require('./chunk-EFREXNZB.js');
|
|
5
|
+
var chunkGV6WJCEB_js = require('./chunk-GV6WJCEB.js');
|
|
6
6
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
7
7
|
var chunkC7BI5LQ6_js = require('./chunk-C7BI5LQ6.js');
|
|
8
8
|
var react = require('react');
|
|
@@ -71,7 +71,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
71
71
|
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: [
|
|
72
72
|
/* @__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." }),
|
|
73
73
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
-
|
|
74
|
+
chunkGV6WJCEB_js.Button,
|
|
75
75
|
{
|
|
76
76
|
type: "button",
|
|
77
77
|
outline: true,
|
|
@@ -135,7 +135,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
135
135
|
},
|
|
136
136
|
index
|
|
137
137
|
)),
|
|
138
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
|
|
139
139
|
] })
|
|
140
140
|
] });
|
|
141
141
|
}
|
|
@@ -158,7 +158,7 @@ function FieldEditor({
|
|
|
158
158
|
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: [
|
|
159
159
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_140px_auto_auto] items-end gap-2", children: [
|
|
160
160
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
161
|
-
|
|
161
|
+
chunkGV6WJCEB_js.FormInput,
|
|
162
162
|
{
|
|
163
163
|
label: "Name",
|
|
164
164
|
value: field.name,
|
|
@@ -167,7 +167,7 @@ function FieldEditor({
|
|
|
167
167
|
}
|
|
168
168
|
),
|
|
169
169
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
170
|
-
|
|
170
|
+
chunkGV6WJCEB_js.FormSelect,
|
|
171
171
|
{
|
|
172
172
|
label: "Type",
|
|
173
173
|
value: field.type,
|
|
@@ -187,10 +187,10 @@ function FieldEditor({
|
|
|
187
187
|
),
|
|
188
188
|
"Required"
|
|
189
189
|
] }),
|
|
190
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
190
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
|
|
191
191
|
] }),
|
|
192
192
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
193
|
-
|
|
193
|
+
chunkGV6WJCEB_js.FormInput,
|
|
194
194
|
{
|
|
195
195
|
label: "Description (optional)",
|
|
196
196
|
value: field.description,
|
|
@@ -283,7 +283,7 @@ function OutputCard({ label, value }) {
|
|
|
283
283
|
function AgentProfileHeader({ agent, models, t, selectedModelId, setSelectedModelId, selectedFramework, temperature, setTemperature, elo, setElo, onChanged }) {
|
|
284
284
|
const modelName = models.find((model) => model.id === selectedModelId)?.name ?? selectedModelId ?? "\u2014";
|
|
285
285
|
const avatarUrl = agent.avatar;
|
|
286
|
-
const frameworkMeta =
|
|
286
|
+
const frameworkMeta = chunkEFREXNZB_js.getFrameworkMeta(selectedFramework);
|
|
287
287
|
const tierInfo = getEloTier(elo);
|
|
288
288
|
const difficultyConfig = {
|
|
289
289
|
beginner: { color: "bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-400", labelKey: "agentDrawer.tierBeginner" },
|
|
@@ -559,13 +559,13 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
559
559
|
] });
|
|
560
560
|
}
|
|
561
561
|
function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFramework, setSelectedFramework, markDirty, connectedProviderTypes }) {
|
|
562
|
-
const frameworkKeys = Object.keys(
|
|
562
|
+
const frameworkKeys = Object.keys(chunkEFREXNZB_js.FRAMEWORK_META);
|
|
563
563
|
const hasProviderConstraints = connectedProviderTypes.length > 0;
|
|
564
|
-
const compatibleModels =
|
|
564
|
+
const compatibleModels = chunkEFREXNZB_js.getCompatibleModels(models, selectedFramework);
|
|
565
565
|
const handleFrameworkChange = react.useCallback((newFramework) => {
|
|
566
566
|
setSelectedFramework(newFramework);
|
|
567
|
-
if (!
|
|
568
|
-
const compatible =
|
|
567
|
+
if (!chunkEFREXNZB_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
|
|
568
|
+
const compatible = chunkEFREXNZB_js.getCompatibleModels(models, newFramework);
|
|
569
569
|
if (compatible.length > 0) {
|
|
570
570
|
setSelectedModelId(compatible[0].id);
|
|
571
571
|
}
|
|
@@ -576,10 +576,10 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
576
576
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
577
577
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-gray-500 dark:text-gray-400", children: t("agentDrawer.framework") }),
|
|
578
578
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
|
|
579
|
-
const meta =
|
|
579
|
+
const meta = chunkEFREXNZB_js.FRAMEWORK_META[key];
|
|
580
580
|
const isSelected = key === selectedFramework;
|
|
581
|
-
const compatCount =
|
|
582
|
-
const isCompatibleWithProviders = !hasProviderConstraints ||
|
|
581
|
+
const compatCount = chunkEFREXNZB_js.getCompatibleModels(models, key).length;
|
|
582
|
+
const isCompatibleWithProviders = !hasProviderConstraints || chunkEFREXNZB_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
|
|
583
583
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
584
584
|
"button",
|
|
585
585
|
{
|
|
@@ -611,7 +611,7 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
611
611
|
] }),
|
|
612
612
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: models.map((model) => {
|
|
613
613
|
const isSelected = model.id === selectedModelId;
|
|
614
|
-
const isCompatible =
|
|
614
|
+
const isCompatible = chunkEFREXNZB_js.isModelCompatibleWithFramework(model.id, selectedFramework);
|
|
615
615
|
const { IconComponent, color, providerLabel } = getModelIcon(model.id);
|
|
616
616
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
617
617
|
"button",
|
|
@@ -735,7 +735,7 @@ function PromptTab({
|
|
|
735
735
|
] });
|
|
736
736
|
}
|
|
737
737
|
function ResultsTab({ agentId, t }) {
|
|
738
|
-
const nodeResults =
|
|
738
|
+
const nodeResults = chunkEFREXNZB_js.useWorkflowStore((state) => state.nodeResults);
|
|
739
739
|
const agentResult = react.useMemo(() => {
|
|
740
740
|
return nodeResults[agentId] ?? null;
|
|
741
741
|
}, [nodeResults, agentId]);
|
|
@@ -825,10 +825,10 @@ function ModelsTab({ modelProviders, selectedProviderId, onSelectProvider, model
|
|
|
825
825
|
const providerModels = modelsByProvider.find((p) => p.provider.id === selectedProviderId);
|
|
826
826
|
if (!providerModels || providerModels.models.length === 0) return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-400 dark:text-gray-500", children: t("agentDrawer.noModelsForProvider") });
|
|
827
827
|
const compatibleModels = providerModels.models.filter(
|
|
828
|
-
(m) =>
|
|
828
|
+
(m) => chunkEFREXNZB_js.isModelCompatibleWithFramework(m.id, agentFramework)
|
|
829
829
|
);
|
|
830
830
|
const incompatibleModels = providerModels.models.filter(
|
|
831
|
-
(m) => !
|
|
831
|
+
(m) => !chunkEFREXNZB_js.isModelCompatibleWithFramework(m.id, agentFramework)
|
|
832
832
|
);
|
|
833
833
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
834
834
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-gray-500 dark:text-gray-400", children: t("agentDrawer.selectModel") }),
|
|
@@ -901,7 +901,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
901
901
|
] }),
|
|
902
902
|
tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.description }),
|
|
903
903
|
tool.compatibleFrameworks && tool.compatibleFrameworks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex flex-wrap gap-0.5", children: tool.compatibleFrameworks.map((framework) => {
|
|
904
|
-
const meta =
|
|
904
|
+
const meta = chunkEFREXNZB_js.getFrameworkMeta(framework);
|
|
905
905
|
const isCurrentFw = framework === agentFramework;
|
|
906
906
|
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[8px] font-medium ${isCurrentFw ? meta.badgeColor : "bg-gray-100 text-gray-500 dark:bg-white/5 dark:text-gray-400"}`, children: [
|
|
907
907
|
/* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
|
|
@@ -918,7 +918,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
918
918
|
event.stopPropagation();
|
|
919
919
|
},
|
|
920
920
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
921
|
-
|
|
921
|
+
chunkGV6WJCEB_js.ToggleSwitch,
|
|
922
922
|
{
|
|
923
923
|
checked: isEnabled,
|
|
924
924
|
onChange: () => onToggle(tool.agentToolId),
|
|
@@ -1077,9 +1077,9 @@ function AdvancedTab({
|
|
|
1077
1077
|
}
|
|
1078
1078
|
function AgentModal({ onSaved, onPersist }) {
|
|
1079
1079
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
1080
|
-
const activeModal =
|
|
1081
|
-
const agentData =
|
|
1082
|
-
const closeModal =
|
|
1080
|
+
const activeModal = chunkEFREXNZB_js.useModalStore((s) => s.activeModal);
|
|
1081
|
+
const agentData = chunkEFREXNZB_js.useModalStore((s) => s.agentData);
|
|
1082
|
+
const closeModal = chunkEFREXNZB_js.useModalStore((s) => s.closeModal);
|
|
1083
1083
|
const open = activeModal === "agent";
|
|
1084
1084
|
const agent = agentData?.agent ?? null;
|
|
1085
1085
|
const models = agentData?.models ?? [];
|
|
@@ -1241,7 +1241,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1241
1241
|
)
|
|
1242
1242
|
] });
|
|
1243
1243
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1244
|
-
|
|
1244
|
+
chunkGV6WJCEB_js.GlassModal,
|
|
1245
1245
|
{
|
|
1246
1246
|
open,
|
|
1247
1247
|
onClose: handleClose,
|
|
@@ -1429,7 +1429,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1429
1429
|
const markDirty = useSubworkflowStore((s) => s.markDirty);
|
|
1430
1430
|
const markSaved = useSubworkflowStore((s) => s.markSaved);
|
|
1431
1431
|
const closeModal = useSubworkflowStore((s) => s.closeModal);
|
|
1432
|
-
const agentBehind =
|
|
1432
|
+
const agentBehind = chunkEFREXNZB_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
|
|
1433
1433
|
const isCreateMode = !tool?.toolId;
|
|
1434
1434
|
const initialGraph = react.useMemo(() => {
|
|
1435
1435
|
const config = tool?.config;
|
|
@@ -1458,9 +1458,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1458
1458
|
}, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
|
|
1459
1459
|
if (!tool) return null;
|
|
1460
1460
|
const categoryKey = category ?? "external";
|
|
1461
|
-
const gradient = tool.color ??
|
|
1462
|
-
const categoryPill =
|
|
1463
|
-
const IconComponent =
|
|
1461
|
+
const gradient = tool.color ?? chunkEFREXNZB_js.CATEGORY_COLORS[categoryKey] ?? chunkEFREXNZB_js.CATEGORY_COLORS.external;
|
|
1462
|
+
const categoryPill = chunkEFREXNZB_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkEFREXNZB_js.CATEGORY_PILL_COLORS.external;
|
|
1463
|
+
const IconComponent = chunkEFREXNZB_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
|
|
1464
1464
|
const graph = latestGraphRef.current;
|
|
1465
1465
|
const startNode = graph.nodes.find((n) => n.type === "start");
|
|
1466
1466
|
const endNode = graph.nodes.find((n) => n.type === "end");
|
|
@@ -1493,7 +1493,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1493
1493
|
] })
|
|
1494
1494
|
] });
|
|
1495
1495
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1496
|
-
|
|
1496
|
+
chunkGV6WJCEB_js.GlassModal,
|
|
1497
1497
|
{
|
|
1498
1498
|
open,
|
|
1499
1499
|
onClose: closeModal,
|
|
@@ -1525,7 +1525,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1525
1525
|
{
|
|
1526
1526
|
type: "button",
|
|
1527
1527
|
onClick: () => setCategory(cat),
|
|
1528
|
-
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${
|
|
1528
|
+
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkEFREXNZB_js.CATEGORY_PILL_COLORS[cat] ?? chunkEFREXNZB_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-gray-500 hover:bg-white/50 dark:bg-white/5 dark:text-gray-400"}`,
|
|
1529
1529
|
children: cat
|
|
1530
1530
|
},
|
|
1531
1531
|
cat
|
|
@@ -1612,7 +1612,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1612
1612
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
|
|
1613
1613
|
] }),
|
|
1614
1614
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1615
|
-
|
|
1615
|
+
chunkEFREXNZB_js.WorkflowCanvas,
|
|
1616
1616
|
{
|
|
1617
1617
|
initialGraph,
|
|
1618
1618
|
agents: [],
|
|
@@ -1628,9 +1628,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1628
1628
|
}
|
|
1629
1629
|
function PipelineSettingsModal({ onSave }) {
|
|
1630
1630
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
1631
|
-
const activeModal =
|
|
1632
|
-
const data =
|
|
1633
|
-
const closeModal =
|
|
1631
|
+
const activeModal = chunkEFREXNZB_js.useModalStore((s) => s.activeModal);
|
|
1632
|
+
const data = chunkEFREXNZB_js.useModalStore((s) => s.pipelineSettingsData);
|
|
1633
|
+
const closeModal = chunkEFREXNZB_js.useModalStore((s) => s.closeModal);
|
|
1634
1634
|
const open = activeModal === "pipeline-settings";
|
|
1635
1635
|
const [nameValue, setNameValue] = react.useState("");
|
|
1636
1636
|
const [descriptionValue, setDescriptionValue] = react.useState("");
|
|
@@ -1692,7 +1692,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1692
1692
|
}
|
|
1693
1693
|
),
|
|
1694
1694
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1695
|
-
|
|
1695
|
+
chunkGV6WJCEB_js.Button,
|
|
1696
1696
|
{
|
|
1697
1697
|
type: "submit",
|
|
1698
1698
|
form: "pipeline-settings-form",
|
|
@@ -1707,7 +1707,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1707
1707
|
)
|
|
1708
1708
|
] });
|
|
1709
1709
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1710
|
-
|
|
1710
|
+
chunkGV6WJCEB_js.GlassModal,
|
|
1711
1711
|
{
|
|
1712
1712
|
open,
|
|
1713
1713
|
onClose: closeModal,
|
|
@@ -1721,7 +1721,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1721
1721
|
onSubmit: handleSubmit,
|
|
1722
1722
|
children: /* @__PURE__ */ jsxRuntime.jsxs("form", { id: "pipeline-settings-form", onSubmit: handleSubmit, className: "space-y-5", children: [
|
|
1723
1723
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1724
|
-
|
|
1724
|
+
chunkGV6WJCEB_js.FormInput,
|
|
1725
1725
|
{
|
|
1726
1726
|
label: t("pipelineName"),
|
|
1727
1727
|
value: nameValue,
|
|
@@ -1731,7 +1731,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1731
1731
|
}
|
|
1732
1732
|
),
|
|
1733
1733
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1734
|
-
|
|
1734
|
+
chunkGV6WJCEB_js.FormTextarea,
|
|
1735
1735
|
{
|
|
1736
1736
|
label: t("pipelineDescription"),
|
|
1737
1737
|
value: descriptionValue,
|
|
@@ -1742,7 +1742,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1742
1742
|
),
|
|
1743
1743
|
lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1744
1744
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1745
|
-
|
|
1745
|
+
chunkGV6WJCEB_js.FormInput,
|
|
1746
1746
|
{
|
|
1747
1747
|
label: t("pipelineSlug", { _: "Slug" }),
|
|
1748
1748
|
value: slugValue,
|
|
@@ -1869,7 +1869,7 @@ function RunReplayModal({
|
|
|
1869
1869
|
}
|
|
1870
1870
|
),
|
|
1871
1871
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1872
|
-
|
|
1872
|
+
chunkGV6WJCEB_js.Button,
|
|
1873
1873
|
{
|
|
1874
1874
|
type: "submit",
|
|
1875
1875
|
form: "run-replay-form",
|
|
@@ -1884,7 +1884,7 @@ function RunReplayModal({
|
|
|
1884
1884
|
] })
|
|
1885
1885
|
] });
|
|
1886
1886
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1887
|
-
|
|
1887
|
+
chunkGV6WJCEB_js.GlassModal,
|
|
1888
1888
|
{
|
|
1889
1889
|
open,
|
|
1890
1890
|
onClose,
|
|
@@ -1958,7 +1958,7 @@ function RowEditor({
|
|
|
1958
1958
|
]
|
|
1959
1959
|
}
|
|
1960
1960
|
) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1961
|
-
|
|
1961
|
+
chunkGV6WJCEB_js.FormTextarea,
|
|
1962
1962
|
{
|
|
1963
1963
|
value: row.value,
|
|
1964
1964
|
onValueChange: (v) => onChange({ value: v }),
|
|
@@ -1966,7 +1966,7 @@ function RowEditor({
|
|
|
1966
1966
|
className: "font-mono"
|
|
1967
1967
|
}
|
|
1968
1968
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1969
|
-
|
|
1969
|
+
chunkGV6WJCEB_js.FormInput,
|
|
1970
1970
|
{
|
|
1971
1971
|
type: row.kind === "number" ? "number" : "text",
|
|
1972
1972
|
value: row.value,
|
|
@@ -2019,6 +2019,176 @@ function parseRow(row) {
|
|
|
2019
2019
|
}
|
|
2020
2020
|
}
|
|
2021
2021
|
}
|
|
2022
|
+
var STATUS_META = {
|
|
2023
|
+
completed: { color: "emerald", icon: outline.CheckCircleIcon },
|
|
2024
|
+
running: { color: "sky", icon: outline.ArrowPathIcon },
|
|
2025
|
+
failed: { color: "rose", icon: outline.XCircleIcon },
|
|
2026
|
+
pending: { color: "amber", icon: outline.ClockIcon },
|
|
2027
|
+
skipped: { color: "zinc", icon: outline.MinusCircleIcon }
|
|
2028
|
+
};
|
|
2029
|
+
function ExecutionTimelinePanel({
|
|
2030
|
+
entries,
|
|
2031
|
+
labels,
|
|
2032
|
+
selectedNodeId,
|
|
2033
|
+
onSelect
|
|
2034
|
+
}) {
|
|
2035
|
+
const [internalSelected, setInternalSelected] = react.useState(null);
|
|
2036
|
+
const effectiveSelected = selectedNodeId ?? internalSelected;
|
|
2037
|
+
const selected = react.useMemo(
|
|
2038
|
+
() => entries.find((entry) => entry.nodeId === effectiveSelected) ?? entries[0] ?? null,
|
|
2039
|
+
[entries, effectiveSelected]
|
|
2040
|
+
);
|
|
2041
|
+
const handleSelect = (nodeId) => {
|
|
2042
|
+
if (onSelect) onSelect(nodeId);
|
|
2043
|
+
setInternalSelected(nodeId);
|
|
2044
|
+
};
|
|
2045
|
+
if (entries.length === 0) {
|
|
2046
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-6 text-center text-sm text-slate-500 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-400", children: labels.empty ?? "\u2014" });
|
|
2047
|
+
}
|
|
2048
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-12", children: [
|
|
2049
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3 lg:col-span-5 xl:col-span-4", children: entries.map((entry, index) => {
|
|
2050
|
+
const meta = STATUS_META[entry.status];
|
|
2051
|
+
const Icon = meta.icon;
|
|
2052
|
+
const isActive = (selected?.nodeId ?? "") === entry.nodeId;
|
|
2053
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2054
|
+
"button",
|
|
2055
|
+
{
|
|
2056
|
+
type: "button",
|
|
2057
|
+
onClick: () => handleSelect(entry.nodeId),
|
|
2058
|
+
className: [
|
|
2059
|
+
"w-full text-left rounded-xl border p-4 transition",
|
|
2060
|
+
isActive ? "border-indigo-400/60 bg-indigo-50/70 shadow-md dark:border-indigo-400/40 dark:bg-indigo-500/10" : "border-slate-200/60 bg-white/70 hover:border-indigo-300 hover:shadow-sm dark:border-white/10 dark:bg-white/5 dark:hover:border-indigo-400/30"
|
|
2061
|
+
].join(" "),
|
|
2062
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
2063
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
|
|
2064
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-6 w-6 items-center justify-center rounded-full bg-indigo-100 text-xs font-semibold text-indigo-700 dark:bg-indigo-500/20 dark:text-indigo-200", children: index + 1 }),
|
|
2065
|
+
index < entries.length - 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1 h-8 w-px bg-slate-200 dark:bg-white/10" })
|
|
2066
|
+
] }),
|
|
2067
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
2068
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
2069
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
2070
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate font-medium text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2071
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2072
|
+
] }),
|
|
2073
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkGV6WJCEB_js.Badge, { color: meta.color, children: [
|
|
2074
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "mr-1 h-3 w-3" }),
|
|
2075
|
+
labels[entry.status]
|
|
2076
|
+
] })
|
|
2077
|
+
] }),
|
|
2078
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center gap-3 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
2079
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: formatDuration2(entry.durationMs) }),
|
|
2080
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "\xB7" }),
|
|
2081
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: formatTimestamp(entry.startedAt) })
|
|
2082
|
+
] })
|
|
2083
|
+
] })
|
|
2084
|
+
] })
|
|
2085
|
+
},
|
|
2086
|
+
entry.nodeId
|
|
2087
|
+
);
|
|
2088
|
+
}) }),
|
|
2089
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:col-span-7 xl:col-span-8", children: selected ? /* @__PURE__ */ jsxRuntime.jsx(NodeInspector, { entry: selected, labels }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-6 text-center text-sm text-slate-500 dark:border-slate-700 dark:bg-slate-900/40", children: labels.selectNode }) })
|
|
2090
|
+
] });
|
|
2091
|
+
}
|
|
2092
|
+
function NodeInspector({
|
|
2093
|
+
entry,
|
|
2094
|
+
labels
|
|
2095
|
+
}) {
|
|
2096
|
+
const meta = STATUS_META[entry.status];
|
|
2097
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-slate-200 bg-white p-5 shadow-sm dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
2098
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-start justify-between gap-2", children: [
|
|
2099
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
2100
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2101
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2102
|
+
] }),
|
|
2103
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Badge, { color: meta.color, children: labels[entry.status] })
|
|
2104
|
+
] }),
|
|
2105
|
+
/* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-2 gap-3 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
2106
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2107
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "font-semibold", children: labels.started }),
|
|
2108
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 text-slate-700 dark:text-slate-200", children: formatTimestamp(entry.startedAt) })
|
|
2109
|
+
] }),
|
|
2110
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2111
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "font-semibold", children: labels.completed }),
|
|
2112
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 text-slate-700 dark:text-slate-200", children: formatTimestamp(entry.completedAt) })
|
|
2113
|
+
] }),
|
|
2114
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2115
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "font-semibold", children: labels.duration }),
|
|
2116
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 text-slate-700 dark:text-slate-200", children: formatDuration2(entry.durationMs) })
|
|
2117
|
+
] }),
|
|
2118
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2119
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "font-semibold", children: labels.status }),
|
|
2120
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 text-slate-700 dark:text-slate-200", children: labels[entry.status] })
|
|
2121
|
+
] })
|
|
2122
|
+
] }),
|
|
2123
|
+
entry.metrics && hasMetrics(entry.metrics) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 rounded-lg border border-indigo-300/50 bg-indigo-50/60 p-3 text-xs dark:border-indigo-400/30 dark:bg-indigo-500/10", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3", children: [
|
|
2124
|
+
entry.metrics.model && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2125
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "font-semibold text-indigo-700 dark:text-indigo-200", children: labels.model }),
|
|
2126
|
+
/* @__PURE__ */ jsxRuntime.jsxs("dd", { className: "mt-0.5 truncate text-indigo-900 dark:text-indigo-100", children: [
|
|
2127
|
+
entry.metrics.provider ? `${entry.metrics.provider} \xB7 ` : "",
|
|
2128
|
+
entry.metrics.model
|
|
2129
|
+
] })
|
|
2130
|
+
] }),
|
|
2131
|
+
(entry.metrics.tokensIn !== void 0 || entry.metrics.tokensOut !== void 0) && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2132
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "font-semibold text-indigo-700 dark:text-indigo-200", children: labels.tokens }),
|
|
2133
|
+
/* @__PURE__ */ jsxRuntime.jsxs("dd", { className: "mt-0.5 text-indigo-900 dark:text-indigo-100", children: [
|
|
2134
|
+
entry.metrics.tokensIn ?? 0,
|
|
2135
|
+
" in \xB7 ",
|
|
2136
|
+
entry.metrics.tokensOut ?? 0,
|
|
2137
|
+
" out"
|
|
2138
|
+
] })
|
|
2139
|
+
] }),
|
|
2140
|
+
entry.metrics.costUsd !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2141
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "font-semibold text-indigo-700 dark:text-indigo-200", children: labels.cost }),
|
|
2142
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 text-indigo-900 dark:text-indigo-100", children: formatCost(entry.metrics.costUsd) })
|
|
2143
|
+
] })
|
|
2144
|
+
] }) }),
|
|
2145
|
+
entry.error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 rounded-lg border border-rose-300/60 bg-rose-50/60 p-3 text-xs dark:border-rose-400/30 dark:bg-rose-500/10", children: [
|
|
2146
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 font-semibold text-rose-700 dark:text-rose-300", children: [
|
|
2147
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-4 w-4" }),
|
|
2148
|
+
labels.error
|
|
2149
|
+
] }),
|
|
2150
|
+
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-2 whitespace-pre-wrap break-words text-rose-800 dark:text-rose-200", children: entry.error })
|
|
2151
|
+
] }),
|
|
2152
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 space-y-3", children: [
|
|
2153
|
+
/* @__PURE__ */ jsxRuntime.jsx(JsonBlock, { title: labels.inputs, value: entry.inputs }),
|
|
2154
|
+
/* @__PURE__ */ jsxRuntime.jsx(JsonBlock, { title: labels.outputs, value: entry.outputs })
|
|
2155
|
+
] })
|
|
2156
|
+
] });
|
|
2157
|
+
}
|
|
2158
|
+
function JsonBlock({ title, value }) {
|
|
2159
|
+
const hasValue = value && Object.keys(value).length > 0;
|
|
2160
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-slate-50/60 p-3 dark:border-white/10 dark:bg-white/5", children: [
|
|
2161
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400", children: title }),
|
|
2162
|
+
hasValue ? /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "max-h-72 overflow-auto whitespace-pre text-xs text-slate-800 dark:text-slate-200", children: JSON.stringify(value, null, 2) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs italic text-slate-400 dark:text-slate-500", children: "\u2014" })
|
|
2163
|
+
] });
|
|
2164
|
+
}
|
|
2165
|
+
function hasMetrics(metrics) {
|
|
2166
|
+
return Boolean(
|
|
2167
|
+
metrics.model || metrics.tokensIn !== void 0 || metrics.tokensOut !== void 0 || metrics.costUsd !== void 0
|
|
2168
|
+
);
|
|
2169
|
+
}
|
|
2170
|
+
function formatDuration2(ms) {
|
|
2171
|
+
if (ms === null) return "\u2014";
|
|
2172
|
+
if (ms < 1e3) return `${ms}ms`;
|
|
2173
|
+
if (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;
|
|
2174
|
+
const mins = Math.floor(ms / 6e4);
|
|
2175
|
+
const secs = Math.floor(ms % 6e4 / 1e3);
|
|
2176
|
+
return `${mins}m${secs}s`;
|
|
2177
|
+
}
|
|
2178
|
+
function formatCost(usd) {
|
|
2179
|
+
if (usd === 0) return "$0";
|
|
2180
|
+
if (usd < 0.01) return `$${usd.toFixed(4)}`;
|
|
2181
|
+
if (usd < 1) return `$${usd.toFixed(3)}`;
|
|
2182
|
+
return `$${usd.toFixed(2)}`;
|
|
2183
|
+
}
|
|
2184
|
+
function formatTimestamp(iso) {
|
|
2185
|
+
if (!iso) return "\u2014";
|
|
2186
|
+
return new Date(iso).toLocaleString(void 0, {
|
|
2187
|
+
hour: "2-digit",
|
|
2188
|
+
minute: "2-digit",
|
|
2189
|
+
second: "2-digit"
|
|
2190
|
+
});
|
|
2191
|
+
}
|
|
2022
2192
|
|
|
2023
2193
|
// src/astrlabe/components/rules/types.ts
|
|
2024
2194
|
var RULE_STATUS_OPTIONS = ["draft", "active", "archived"];
|
|
@@ -2100,7 +2270,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
|
|
|
2100
2270
|
};
|
|
2101
2271
|
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: [
|
|
2102
2272
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2103
|
-
|
|
2273
|
+
chunkGV6WJCEB_js.FormSelect,
|
|
2104
2274
|
{
|
|
2105
2275
|
label: "Operator",
|
|
2106
2276
|
value: value.operator,
|
|
@@ -2123,7 +2293,7 @@ function SimpleEditor({
|
|
|
2123
2293
|
const isTruthy = value.operator === "truthy";
|
|
2124
2294
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2125
2295
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2126
|
-
|
|
2296
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2127
2297
|
{
|
|
2128
2298
|
label: "Field",
|
|
2129
2299
|
hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.fuelType`",
|
|
@@ -2133,7 +2303,7 @@ function SimpleEditor({
|
|
|
2133
2303
|
}
|
|
2134
2304
|
),
|
|
2135
2305
|
!isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2136
|
-
|
|
2306
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2137
2307
|
{
|
|
2138
2308
|
label: "Value",
|
|
2139
2309
|
hint: "Literal. Numeric operators coerce via `as f64`.",
|
|
@@ -2149,7 +2319,7 @@ function ThresholdEditor({
|
|
|
2149
2319
|
}) {
|
|
2150
2320
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
|
|
2151
2321
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2152
|
-
|
|
2322
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2153
2323
|
{
|
|
2154
2324
|
label: "Field",
|
|
2155
2325
|
value: value.field ?? "",
|
|
@@ -2158,7 +2328,7 @@ function ThresholdEditor({
|
|
|
2158
2328
|
}
|
|
2159
2329
|
),
|
|
2160
2330
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2161
|
-
|
|
2331
|
+
chunkGV6WJCEB_js.FormSelect,
|
|
2162
2332
|
{
|
|
2163
2333
|
label: "Direction",
|
|
2164
2334
|
value: value.comparison ?? "gte",
|
|
@@ -2172,7 +2342,7 @@ function ThresholdEditor({
|
|
|
2172
2342
|
}
|
|
2173
2343
|
),
|
|
2174
2344
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2175
|
-
|
|
2345
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2176
2346
|
{
|
|
2177
2347
|
label: "Threshold",
|
|
2178
2348
|
type: "number",
|
|
@@ -2189,7 +2359,7 @@ function RegexEditor({
|
|
|
2189
2359
|
}) {
|
|
2190
2360
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2191
2361
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2192
|
-
|
|
2362
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2193
2363
|
{
|
|
2194
2364
|
label: "Field",
|
|
2195
2365
|
value: value.field ?? "",
|
|
@@ -2198,7 +2368,7 @@ function RegexEditor({
|
|
|
2198
2368
|
}
|
|
2199
2369
|
),
|
|
2200
2370
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2201
|
-
|
|
2371
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2202
2372
|
{
|
|
2203
2373
|
label: "Pattern",
|
|
2204
2374
|
hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
|
|
@@ -2226,7 +2396,7 @@ function TimeWindowEditor({
|
|
|
2226
2396
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2227
2397
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2228
2398
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2229
|
-
|
|
2399
|
+
chunkGV6WJCEB_js.FormSelect,
|
|
2230
2400
|
{
|
|
2231
2401
|
label: "Timezone",
|
|
2232
2402
|
value: value.timezone ?? "UTC",
|
|
@@ -2235,7 +2405,7 @@ function TimeWindowEditor({
|
|
|
2235
2405
|
}
|
|
2236
2406
|
),
|
|
2237
2407
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2238
|
-
|
|
2408
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2239
2409
|
{
|
|
2240
2410
|
label: "Timestamp field (optional)",
|
|
2241
2411
|
hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
|
|
@@ -2248,7 +2418,7 @@ function TimeWindowEditor({
|
|
|
2248
2418
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2249
2419
|
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: [
|
|
2250
2420
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2251
|
-
|
|
2421
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2252
2422
|
{
|
|
2253
2423
|
label: `Start (hour)`,
|
|
2254
2424
|
type: "number",
|
|
@@ -2259,7 +2429,7 @@ function TimeWindowEditor({
|
|
|
2259
2429
|
}
|
|
2260
2430
|
),
|
|
2261
2431
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2262
|
-
|
|
2432
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2263
2433
|
{
|
|
2264
2434
|
label: `End (hour)`,
|
|
2265
2435
|
type: "number",
|
|
@@ -2269,9 +2439,9 @@ function TimeWindowEditor({
|
|
|
2269
2439
|
onValueChange: (raw) => update(index, { endHour: clampHour(raw, 24) })
|
|
2270
2440
|
}
|
|
2271
2441
|
),
|
|
2272
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2442
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2273
2443
|
] }, index)),
|
|
2274
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2444
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
|
|
2275
2445
|
] })
|
|
2276
2446
|
] });
|
|
2277
2447
|
}
|
|
@@ -2294,7 +2464,7 @@ function BooleanGroupEditor({
|
|
|
2294
2464
|
});
|
|
2295
2465
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2296
2466
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2297
|
-
|
|
2467
|
+
chunkGV6WJCEB_js.FormSelect,
|
|
2298
2468
|
{
|
|
2299
2469
|
label: "Combinator",
|
|
2300
2470
|
value: value.combinator ?? "and",
|
|
@@ -2312,9 +2482,9 @@ function BooleanGroupEditor({
|
|
|
2312
2482
|
depth
|
|
2313
2483
|
}
|
|
2314
2484
|
),
|
|
2315
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2485
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
|
|
2316
2486
|
] }, index)),
|
|
2317
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2487
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
|
|
2318
2488
|
] })
|
|
2319
2489
|
] });
|
|
2320
2490
|
}
|
|
@@ -2350,7 +2520,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2350
2520
|
};
|
|
2351
2521
|
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: [
|
|
2352
2522
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2353
|
-
|
|
2523
|
+
chunkGV6WJCEB_js.FormSelect,
|
|
2354
2524
|
{
|
|
2355
2525
|
label: "Action type",
|
|
2356
2526
|
value: type,
|
|
@@ -2360,7 +2530,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2360
2530
|
),
|
|
2361
2531
|
type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2362
2532
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2363
|
-
|
|
2533
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2364
2534
|
{
|
|
2365
2535
|
label: "Multiplier",
|
|
2366
2536
|
type: "number",
|
|
@@ -2370,7 +2540,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2370
2540
|
}
|
|
2371
2541
|
),
|
|
2372
2542
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2373
|
-
|
|
2543
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2374
2544
|
{
|
|
2375
2545
|
label: "Reason code",
|
|
2376
2546
|
value: stringParam(params.reason),
|
|
@@ -2380,7 +2550,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2380
2550
|
)
|
|
2381
2551
|
] }),
|
|
2382
2552
|
type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2383
|
-
|
|
2553
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2384
2554
|
{
|
|
2385
2555
|
label: "Floor (fraction, e.g. 0.08)",
|
|
2386
2556
|
type: "number",
|
|
@@ -2390,7 +2560,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2390
2560
|
}
|
|
2391
2561
|
),
|
|
2392
2562
|
type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2393
|
-
|
|
2563
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2394
2564
|
{
|
|
2395
2565
|
label: "Tolerance (fraction)",
|
|
2396
2566
|
type: "number",
|
|
@@ -2400,7 +2570,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2400
2570
|
}
|
|
2401
2571
|
),
|
|
2402
2572
|
type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2403
|
-
|
|
2573
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2404
2574
|
{
|
|
2405
2575
|
label: "Approval limit (fraction)",
|
|
2406
2576
|
type: "number",
|
|
@@ -2410,7 +2580,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2410
2580
|
}
|
|
2411
2581
|
),
|
|
2412
2582
|
type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2413
|
-
|
|
2583
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2414
2584
|
{
|
|
2415
2585
|
label: "Step (e.g. 0.009)",
|
|
2416
2586
|
type: "number",
|
|
@@ -2421,7 +2591,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2421
2591
|
),
|
|
2422
2592
|
type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2423
2593
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2424
|
-
|
|
2594
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2425
2595
|
{
|
|
2426
2596
|
label: "Channel",
|
|
2427
2597
|
value: stringParam(params.channel),
|
|
@@ -2430,7 +2600,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2430
2600
|
}
|
|
2431
2601
|
),
|
|
2432
2602
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2433
|
-
|
|
2603
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2434
2604
|
{
|
|
2435
2605
|
label: "Severity",
|
|
2436
2606
|
value: stringParam(params.severity),
|
|
@@ -2468,7 +2638,7 @@ function CustomParamsEditor({
|
|
|
2468
2638
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2469
2639
|
entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
|
|
2470
2640
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2471
|
-
|
|
2641
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2472
2642
|
{
|
|
2473
2643
|
label: "Key",
|
|
2474
2644
|
value: key,
|
|
@@ -2476,16 +2646,16 @@ function CustomParamsEditor({
|
|
|
2476
2646
|
}
|
|
2477
2647
|
),
|
|
2478
2648
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2479
|
-
|
|
2649
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2480
2650
|
{
|
|
2481
2651
|
label: "Value",
|
|
2482
2652
|
value: String(value ?? ""),
|
|
2483
2653
|
onValueChange: (raw) => update(index, key, raw)
|
|
2484
2654
|
}
|
|
2485
2655
|
),
|
|
2486
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2656
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2487
2657
|
] }, index)),
|
|
2488
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2658
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
|
|
2489
2659
|
] });
|
|
2490
2660
|
}
|
|
2491
2661
|
function numberParam(value, fallback) {
|
|
@@ -2515,9 +2685,9 @@ function RuleForm({ value, onChange }) {
|
|
|
2515
2685
|
);
|
|
2516
2686
|
const update = (key, v) => onChange({ ...value, [key]: v });
|
|
2517
2687
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
2518
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2688
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkGV6WJCEB_js.FormGrid, { children: [
|
|
2519
2689
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2520
|
-
|
|
2690
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2521
2691
|
{
|
|
2522
2692
|
label: "Name",
|
|
2523
2693
|
required: true,
|
|
@@ -2526,7 +2696,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2526
2696
|
}
|
|
2527
2697
|
),
|
|
2528
2698
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2529
|
-
|
|
2699
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2530
2700
|
{
|
|
2531
2701
|
label: "Priority",
|
|
2532
2702
|
type: "number",
|
|
@@ -2536,7 +2706,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2536
2706
|
}
|
|
2537
2707
|
),
|
|
2538
2708
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2539
|
-
|
|
2709
|
+
chunkGV6WJCEB_js.FormSelect,
|
|
2540
2710
|
{
|
|
2541
2711
|
label: "Enabled",
|
|
2542
2712
|
value: value.enabled ? "true" : "false",
|
|
@@ -2548,7 +2718,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2548
2718
|
}
|
|
2549
2719
|
),
|
|
2550
2720
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2551
|
-
|
|
2721
|
+
chunkGV6WJCEB_js.FormTextarea,
|
|
2552
2722
|
{
|
|
2553
2723
|
label: "Description",
|
|
2554
2724
|
rows: 2,
|
|
@@ -2560,7 +2730,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2560
2730
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2561
2731
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2562
2732
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Condition" }),
|
|
2563
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2733
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Badge, { color: "indigo", children: value.condition.operator })
|
|
2564
2734
|
] }),
|
|
2565
2735
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2566
2736
|
RuleConditionBuilder,
|
|
@@ -2573,7 +2743,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2573
2743
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2574
2744
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2575
2745
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Action on match" }),
|
|
2576
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2746
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Badge, { color: "fuchsia", children: value.action.type })
|
|
2577
2747
|
] }),
|
|
2578
2748
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2579
2749
|
RuleActionBuilder,
|
|
@@ -2595,7 +2765,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2595
2765
|
),
|
|
2596
2766
|
showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2597
2767
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2598
|
-
|
|
2768
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2599
2769
|
{
|
|
2600
2770
|
label: "Valid from (ISO 8601)",
|
|
2601
2771
|
type: "datetime-local",
|
|
@@ -2604,7 +2774,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2604
2774
|
}
|
|
2605
2775
|
),
|
|
2606
2776
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2607
|
-
|
|
2777
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2608
2778
|
{
|
|
2609
2779
|
label: "Valid until (ISO 8601)",
|
|
2610
2780
|
type: "datetime-local",
|
|
@@ -2613,7 +2783,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2613
2783
|
}
|
|
2614
2784
|
),
|
|
2615
2785
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2616
|
-
|
|
2786
|
+
chunkGV6WJCEB_js.FormSelect,
|
|
2617
2787
|
{
|
|
2618
2788
|
label: "Status",
|
|
2619
2789
|
value: value.status ?? "active",
|
|
@@ -2622,7 +2792,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2622
2792
|
}
|
|
2623
2793
|
),
|
|
2624
2794
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2625
|
-
|
|
2795
|
+
chunkGV6WJCEB_js.FormInput,
|
|
2626
2796
|
{
|
|
2627
2797
|
label: "Tags (comma-separated)",
|
|
2628
2798
|
value: (value.tags ?? []).join(", "),
|
|
@@ -2806,8 +2976,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
|
|
|
2806
2976
|
] });
|
|
2807
2977
|
}
|
|
2808
2978
|
function LogicNodeItemCard({ item, translationFunction }) {
|
|
2809
|
-
const IconComponent =
|
|
2810
|
-
const gradient =
|
|
2979
|
+
const IconComponent = chunkEFREXNZB_js.LOGIC_ICON_MAP[item.nodeType];
|
|
2980
|
+
const gradient = chunkEFREXNZB_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
|
|
2811
2981
|
const defaultConfig = chunkC7BI5LQ6_js.createDefaultLogicNodeConfig(item.nodeType);
|
|
2812
2982
|
const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
|
|
2813
2983
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2988,7 +3158,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
2988
3158
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.category })
|
|
2989
3159
|
] }),
|
|
2990
3160
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2991
|
-
|
|
3161
|
+
chunkGV6WJCEB_js.ToggleSwitch,
|
|
2992
3162
|
{
|
|
2993
3163
|
checked: Boolean(tool.enabled),
|
|
2994
3164
|
onChange: () => {
|
|
@@ -3029,7 +3199,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3029
3199
|
] })
|
|
3030
3200
|
] }),
|
|
3031
3201
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3032
|
-
|
|
3202
|
+
chunkGV6WJCEB_js.ToggleSwitch,
|
|
3033
3203
|
{
|
|
3034
3204
|
checked: Boolean(rule.enabled),
|
|
3035
3205
|
onChange: () => {
|
|
@@ -3065,8 +3235,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3065
3235
|
limit: entity.defaultLimit
|
|
3066
3236
|
});
|
|
3067
3237
|
const dsLogo = getDatasourceLogo(entity.id);
|
|
3068
|
-
const EntityIcon =
|
|
3069
|
-
const entityGradient =
|
|
3238
|
+
const EntityIcon = chunkEFREXNZB_js.getEntityIcon(entity.id);
|
|
3239
|
+
const entityGradient = chunkEFREXNZB_js.getEntityGradient(entity.id);
|
|
3070
3240
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3071
3241
|
"div",
|
|
3072
3242
|
{
|
|
@@ -3086,7 +3256,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3086
3256
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3087
3257
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-slate-100 px-1.5 py-0.5 text-[9px] font-medium text-slate-600 dark:bg-white/10 dark:text-slate-300", children: "Read only" }),
|
|
3088
3258
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3089
|
-
|
|
3259
|
+
chunkGV6WJCEB_js.ToggleSwitch,
|
|
3090
3260
|
{
|
|
3091
3261
|
checked: true,
|
|
3092
3262
|
onChange: () => {
|
|
@@ -3304,7 +3474,7 @@ function VersionHistoryPanel({
|
|
|
3304
3474
|
loadVersions();
|
|
3305
3475
|
}
|
|
3306
3476
|
}, [open, loadVersions]);
|
|
3307
|
-
const
|
|
3477
|
+
const formatTimestamp3 = react.useCallback((timestamp) => {
|
|
3308
3478
|
try {
|
|
3309
3479
|
const date = new Date(timestamp);
|
|
3310
3480
|
return new Intl.DateTimeFormat(void 0, {
|
|
@@ -3375,7 +3545,7 @@ function VersionHistoryPanel({
|
|
|
3375
3545
|
isCurrentVersion && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-blue-100 px-2 py-0.5 text-[10px] font-medium text-blue-700 dark:bg-blue-500/20 dark:text-blue-300", children: translations("current") })
|
|
3376
3546
|
] }) }),
|
|
3377
3547
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 text-xs text-gray-500 dark:text-gray-400", children: [
|
|
3378
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { children:
|
|
3548
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { children: formatTimestamp3(version.publishedAt) }),
|
|
3379
3549
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5", children: [
|
|
3380
3550
|
translations("publishedBy"),
|
|
3381
3551
|
": ",
|
|
@@ -3455,7 +3625,7 @@ var STATUS_CONFIG = {
|
|
|
3455
3625
|
label: "error"
|
|
3456
3626
|
}
|
|
3457
3627
|
};
|
|
3458
|
-
function
|
|
3628
|
+
function formatDuration3(durationMs) {
|
|
3459
3629
|
if (durationMs < 1e3) {
|
|
3460
3630
|
return `${durationMs}ms`;
|
|
3461
3631
|
}
|
|
@@ -3464,9 +3634,9 @@ function formatDuration2(durationMs) {
|
|
|
3464
3634
|
}
|
|
3465
3635
|
function RunPanel({ open, onClose, onRun, onStop }) {
|
|
3466
3636
|
const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.runPanel");
|
|
3467
|
-
const nodes =
|
|
3468
|
-
const isRunning =
|
|
3469
|
-
const nodeResults =
|
|
3637
|
+
const nodes = chunkEFREXNZB_js.useWorkflowStore((state) => state.nodes);
|
|
3638
|
+
const isRunning = chunkEFREXNZB_js.useWorkflowStore((state) => state.isRunning);
|
|
3639
|
+
const nodeResults = chunkEFREXNZB_js.useWorkflowStore((state) => state.nodeResults);
|
|
3470
3640
|
const startNode = nodes.find((node) => node.type === "start");
|
|
3471
3641
|
const hasEndNode = nodes.some((node) => node.type === "end");
|
|
3472
3642
|
const hasValidStartConfig = Boolean(
|
|
@@ -3549,7 +3719,7 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3549
3719
|
] }),
|
|
3550
3720
|
result?.error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 truncate text-xs text-red-500 dark:text-red-400", children: result.error })
|
|
3551
3721
|
] }),
|
|
3552
|
-
result?.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0 text-xs text-gray-500 dark:text-gray-400", children:
|
|
3722
|
+
result?.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0 text-xs text-gray-500 dark:text-gray-400", children: formatDuration3(result.durationMs) })
|
|
3553
3723
|
]
|
|
3554
3724
|
},
|
|
3555
3725
|
node.id
|
|
@@ -3754,8 +3924,8 @@ function inferVariables(config, nodeType) {
|
|
|
3754
3924
|
}
|
|
3755
3925
|
function VariableInspector({ open, onClose }) {
|
|
3756
3926
|
const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.variableInspector");
|
|
3757
|
-
const nodes =
|
|
3758
|
-
const edges =
|
|
3927
|
+
const nodes = chunkEFREXNZB_js.useWorkflowStore((state) => state.nodes);
|
|
3928
|
+
const edges = chunkEFREXNZB_js.useWorkflowStore((state) => state.edges);
|
|
3759
3929
|
const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
|
|
3760
3930
|
const toggleNodeExpansion = react.useCallback((nodeId) => {
|
|
3761
3931
|
setExpandedNodes((current) => {
|
|
@@ -3817,8 +3987,8 @@ function VariableInspector({ open, onClose }) {
|
|
|
3817
3987
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: translations("noNodes") })
|
|
3818
3988
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-gray-100 dark:divide-gray-800", children: nodeVariableEntries.map((entry) => {
|
|
3819
3989
|
const isExpanded = expandedNodes.has(entry.nodeId);
|
|
3820
|
-
const IconComponent =
|
|
3821
|
-
const gradient =
|
|
3990
|
+
const IconComponent = chunkEFREXNZB_js.LOGIC_ICON_MAP[entry.nodeType];
|
|
3991
|
+
const gradient = chunkEFREXNZB_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
|
|
3822
3992
|
const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
|
|
3823
3993
|
const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
|
|
3824
3994
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
|
|
@@ -3884,7 +4054,7 @@ function RunInputDialog({
|
|
|
3884
4054
|
onRun
|
|
3885
4055
|
}) {
|
|
3886
4056
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.runInputDialog");
|
|
3887
|
-
const nodes =
|
|
4057
|
+
const nodes = chunkEFREXNZB_js.useWorkflowStore((state) => state.nodes);
|
|
3888
4058
|
const [values, setValues] = react.useState({});
|
|
3889
4059
|
const inputVariableNames = react.useMemo(() => {
|
|
3890
4060
|
const storeStartNode = nodes.find((node) => node.type === "start");
|
|
@@ -3911,7 +4081,7 @@ function RunInputDialog({
|
|
|
3911
4081
|
}, [onClose]);
|
|
3912
4082
|
if (!open) return null;
|
|
3913
4083
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3914
|
-
|
|
4084
|
+
chunkGV6WJCEB_js.GlassModal,
|
|
3915
4085
|
{
|
|
3916
4086
|
open,
|
|
3917
4087
|
onClose: handleClose,
|
|
@@ -3922,7 +4092,7 @@ function RunInputDialog({
|
|
|
3922
4092
|
/* @__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: [
|
|
3923
4093
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
|
|
3924
4094
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3925
|
-
|
|
4095
|
+
chunkGV6WJCEB_js.Input,
|
|
3926
4096
|
{
|
|
3927
4097
|
value: values[variableName] ?? "",
|
|
3928
4098
|
onChange: (event) => handleValueChange(variableName, event.target.value),
|
|
@@ -3931,8 +4101,8 @@ function RunInputDialog({
|
|
|
3931
4101
|
)
|
|
3932
4102
|
] }, variableName)) }),
|
|
3933
4103
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [
|
|
3934
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3935
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4104
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
|
|
4105
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkGV6WJCEB_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
|
|
3936
4106
|
/* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
|
|
3937
4107
|
t("run")
|
|
3938
4108
|
] })
|
|
@@ -3950,12 +4120,12 @@ var STATUS_STYLES = {
|
|
|
3950
4120
|
error: { icon: outline.ExclamationCircleIcon, colorClass: "text-red-500" },
|
|
3951
4121
|
skipped: { icon: outline.ClockIcon, colorClass: "text-gray-400" }
|
|
3952
4122
|
};
|
|
3953
|
-
function
|
|
4123
|
+
function formatDuration4(durationMs) {
|
|
3954
4124
|
if (durationMs === null) return "\u2014";
|
|
3955
4125
|
if (durationMs < 1e3) return `${durationMs}ms`;
|
|
3956
4126
|
return `${(durationMs / 1e3).toFixed(1)}s`;
|
|
3957
4127
|
}
|
|
3958
|
-
function
|
|
4128
|
+
function formatTimestamp2(timestamp) {
|
|
3959
4129
|
const date = new Date(timestamp);
|
|
3960
4130
|
return date.toLocaleTimeString(void 0, { hour: "2-digit", minute: "2-digit", second: "2-digit" });
|
|
3961
4131
|
}
|
|
@@ -3965,8 +4135,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
3965
4135
|
const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
|
|
3966
4136
|
const [selectedRun, setSelectedRun] = react.useState(null);
|
|
3967
4137
|
const [selectedNode, setSelectedNode] = react.useState(null);
|
|
3968
|
-
const isRunning =
|
|
3969
|
-
const nodeResults =
|
|
4138
|
+
const isRunning = chunkEFREXNZB_js.useWorkflowStore((state) => state.isRunning);
|
|
4139
|
+
const nodeResults = chunkEFREXNZB_js.useWorkflowStore((state) => state.nodeResults);
|
|
3970
4140
|
const refreshRuns = react.useCallback(async () => {
|
|
3971
4141
|
setIsLoadingRuns(true);
|
|
3972
4142
|
try {
|
|
@@ -4012,7 +4182,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4012
4182
|
/* @__PURE__ */ jsxRuntime.jsx(StatusIcon, { className: `h-3.5 w-3.5 ${statusStyle.colorClass}` }),
|
|
4013
4183
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-gray-700 dark:text-gray-300", children: nodeId.slice(0, 8) })
|
|
4014
4184
|
] }),
|
|
4015
|
-
result.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400", children:
|
|
4185
|
+
result.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400", children: formatDuration4(result.durationMs) })
|
|
4016
4186
|
] }, nodeId);
|
|
4017
4187
|
}) })
|
|
4018
4188
|
] }),
|
|
@@ -4028,7 +4198,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4028
4198
|
] }),
|
|
4029
4199
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
|
|
4030
4200
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: t("duration") }),
|
|
4031
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-700 dark:text-gray-300", children:
|
|
4201
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-700 dark:text-gray-300", children: formatDuration4(selectedNode.durationMs) })
|
|
4032
4202
|
] }),
|
|
4033
4203
|
selectedNode.error && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4034
4204
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500", children: t("error") }),
|
|
@@ -4065,9 +4235,9 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4065
4235
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
4066
4236
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4067
4237
|
/* @__PURE__ */ jsxRuntime.jsx(StatusIcon, { className: `h-3.5 w-3.5 ${statusStyle.colorClass}` }),
|
|
4068
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-white", children:
|
|
4238
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-white", children: formatTimestamp2(run.createdAt) })
|
|
4069
4239
|
] }),
|
|
4070
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-gray-400", children:
|
|
4240
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-gray-400", children: formatDuration4(run.totalDurationMs) })
|
|
4071
4241
|
] }),
|
|
4072
4242
|
run.error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 truncate text-[10px] text-red-500", children: run.error })
|
|
4073
4243
|
]
|
|
@@ -4091,7 +4261,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4091
4261
|
/* @__PURE__ */ jsxRuntime.jsx(NodeStatusIcon, { className: `h-3 w-3 ${nodeStatusStyle.colorClass}` }),
|
|
4092
4262
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-700 dark:text-gray-300", children: nodeResult.nodeType })
|
|
4093
4263
|
] }),
|
|
4094
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-gray-400", children:
|
|
4264
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-gray-400", children: formatDuration4(nodeResult.durationMs) })
|
|
4095
4265
|
]
|
|
4096
4266
|
},
|
|
4097
4267
|
nodeResult.nodeId
|
|
@@ -4122,7 +4292,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4122
4292
|
onAutoSaveGraph(graph);
|
|
4123
4293
|
}, [onAutoSaveGraph, onGraphSnapshot]);
|
|
4124
4294
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4125
|
-
|
|
4295
|
+
chunkEFREXNZB_js.Workspace,
|
|
4126
4296
|
{
|
|
4127
4297
|
...workspaceProps,
|
|
4128
4298
|
onGraphChange: handleGraphChange
|
|
@@ -4130,7 +4300,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4130
4300
|
);
|
|
4131
4301
|
});
|
|
4132
4302
|
function DynamicIslandConfirm2(props) {
|
|
4133
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4303
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.DynamicIslandConfirm, { ...props });
|
|
4134
4304
|
}
|
|
4135
4305
|
var JSON_PREVIEW_LINE_LIMIT = 50;
|
|
4136
4306
|
function DslExportModal({ open, onClose, workflow, graph }) {
|
|
@@ -4184,7 +4354,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4184
4354
|
}, [jsonString, workflow.name, workflow.version]);
|
|
4185
4355
|
if (!open) return null;
|
|
4186
4356
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4187
|
-
|
|
4357
|
+
chunkGV6WJCEB_js.GlassModal,
|
|
4188
4358
|
{
|
|
4189
4359
|
open,
|
|
4190
4360
|
onClose,
|
|
@@ -4226,7 +4396,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4226
4396
|
] }),
|
|
4227
4397
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-gray-200 px-1 py-4 dark:border-gray-700", children: [
|
|
4228
4398
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4229
|
-
|
|
4399
|
+
chunkGV6WJCEB_js.Button,
|
|
4230
4400
|
{
|
|
4231
4401
|
type: "button",
|
|
4232
4402
|
onClick: handleCopyToClipboard,
|
|
@@ -4243,7 +4413,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4243
4413
|
}
|
|
4244
4414
|
),
|
|
4245
4415
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4246
|
-
|
|
4416
|
+
chunkGV6WJCEB_js.Button,
|
|
4247
4417
|
{
|
|
4248
4418
|
type: "button",
|
|
4249
4419
|
onClick: handleDownloadJson,
|
|
@@ -4402,7 +4572,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4402
4572
|
}, []);
|
|
4403
4573
|
if (!open) return null;
|
|
4404
4574
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4405
|
-
|
|
4575
|
+
chunkGV6WJCEB_js.GlassModal,
|
|
4406
4576
|
{
|
|
4407
4577
|
open,
|
|
4408
4578
|
onClose,
|
|
@@ -4442,7 +4612,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4442
4612
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "import-validation-result", children: [
|
|
4443
4613
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center justify-between", children: [
|
|
4444
4614
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: fileName }),
|
|
4445
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4615
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
|
|
4446
4616
|
] }),
|
|
4447
4617
|
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: [
|
|
4448
4618
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -4470,9 +4640,9 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4470
4640
|
] })
|
|
4471
4641
|
] }) }),
|
|
4472
4642
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-gray-200 px-1 py-4 dark:border-gray-700", children: [
|
|
4473
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4643
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
|
|
4474
4644
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4475
|
-
|
|
4645
|
+
chunkGV6WJCEB_js.Button,
|
|
4476
4646
|
{
|
|
4477
4647
|
type: "button",
|
|
4478
4648
|
onClick: handleImport,
|
|
@@ -4493,14 +4663,14 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4493
4663
|
}
|
|
4494
4664
|
|
|
4495
4665
|
// src/astrlabe/store/selectors.ts
|
|
4496
|
-
var useCanUndo = () =>
|
|
4497
|
-
var useCanRedo = () =>
|
|
4498
|
-
var useHasCopied = () =>
|
|
4499
|
-
var useContextMenu = () =>
|
|
4500
|
-
var useEditingNodeId = () =>
|
|
4501
|
-
var useSelectedNodeCount = () =>
|
|
4502
|
-
var useIsRunning = () =>
|
|
4503
|
-
var useNodeResults = () =>
|
|
4666
|
+
var useCanUndo = () => chunkEFREXNZB_js.useWorkflowStore((state) => state.past.length > 0);
|
|
4667
|
+
var useCanRedo = () => chunkEFREXNZB_js.useWorkflowStore((state) => state.future.length > 0);
|
|
4668
|
+
var useHasCopied = () => chunkEFREXNZB_js.useWorkflowStore((state) => state.clipboard !== null);
|
|
4669
|
+
var useContextMenu = () => chunkEFREXNZB_js.useWorkflowStore((state) => state.contextMenu);
|
|
4670
|
+
var useEditingNodeId = () => chunkEFREXNZB_js.useWorkflowStore((state) => state.editingNodeId);
|
|
4671
|
+
var useSelectedNodeCount = () => chunkEFREXNZB_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
|
|
4672
|
+
var useIsRunning = () => chunkEFREXNZB_js.useWorkflowStore((state) => state.isRunning);
|
|
4673
|
+
var useNodeResults = () => chunkEFREXNZB_js.useWorkflowStore((state) => state.nodeResults);
|
|
4504
4674
|
var DEFAULT_MAX_HISTORY = 50;
|
|
4505
4675
|
function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
|
|
4506
4676
|
const pastRef = react.useRef([]);
|
|
@@ -4785,6 +4955,7 @@ exports.AutoSaveWorkspace = AutoSaveWorkspace;
|
|
|
4785
4955
|
exports.DslExportModal = DslExportModal;
|
|
4786
4956
|
exports.DslImportModal = DslImportModal;
|
|
4787
4957
|
exports.DynamicIslandConfirm = DynamicIslandConfirm2;
|
|
4958
|
+
exports.ExecutionTimelinePanel = ExecutionTimelinePanel;
|
|
4788
4959
|
exports.MetaLlamaIcon = MetaLlamaIcon;
|
|
4789
4960
|
exports.NodePalette = NodePalette;
|
|
4790
4961
|
exports.OutputSchemaBuilder = OutputSchemaBuilder;
|
|
@@ -4821,5 +4992,5 @@ exports.useNodeResults = useNodeResults;
|
|
|
4821
4992
|
exports.useSelectedNodeCount = useSelectedNodeCount;
|
|
4822
4993
|
exports.useSubworkflowStore = useSubworkflowStore;
|
|
4823
4994
|
exports.useUndoRedo = useUndoRedo;
|
|
4824
|
-
//# sourceMappingURL=chunk-
|
|
4825
|
-
//# sourceMappingURL=chunk-
|
|
4995
|
+
//# sourceMappingURL=chunk-L6FVIWAJ.js.map
|
|
4996
|
+
//# sourceMappingURL=chunk-L6FVIWAJ.js.map
|