@datatechsolutions/ui 2.11.92 → 3.1.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/README.md +39 -58
- package/dist/astrlabe/contracts.d.mts +17 -6
- package/dist/astrlabe/contracts.d.ts +17 -6
- package/dist/astrlabe/index.d.mts +9 -3
- package/dist/astrlabe/index.d.ts +9 -3
- package/dist/astrlabe/index.js +120 -116
- package/dist/astrlabe/index.mjs +6 -6
- package/dist/astrlabe/utils.d.mts +1 -1
- package/dist/astrlabe/utils.d.ts +1 -1
- package/dist/astrlabe/utils.js +9 -9
- package/dist/astrlabe/utils.mjs +2 -2
- package/dist/astrlabe/workflow-canvas.d.mts +1 -1
- package/dist/astrlabe/workflow-canvas.d.ts +1 -1
- package/dist/astrlabe/workflow-canvas.js +5 -5
- package/dist/astrlabe/workflow-canvas.mjs +4 -4
- package/dist/brand/index.d.mts +1 -15
- package/dist/brand/index.d.ts +1 -15
- package/dist/brand/index.js +0 -14
- package/dist/brand/index.js.map +1 -1
- package/dist/brand/index.mjs +0 -14
- package/dist/brand/index.mjs.map +1 -1
- package/dist/{chunk-24QKSC74.js → chunk-3JJWPOK6.js} +6 -6
- package/dist/{chunk-24QKSC74.js.map → chunk-3JJWPOK6.js.map} +1 -1
- package/dist/{chunk-HGN5W56D.mjs → chunk-3ZUMJTDT.mjs} +3 -3
- package/dist/{chunk-HGN5W56D.mjs.map → chunk-3ZUMJTDT.mjs.map} +1 -1
- package/dist/{chunk-LKJZGFM4.mjs → chunk-5GDKCFM5.mjs} +3 -3
- package/dist/{chunk-LKJZGFM4.mjs.map → chunk-5GDKCFM5.mjs.map} +1 -1
- package/dist/{chunk-ZHUPYX4Q.mjs → chunk-5RM6NGZ6.mjs} +3 -3
- package/dist/{chunk-ZHUPYX4Q.mjs.map → chunk-5RM6NGZ6.mjs.map} +1 -1
- package/dist/{chunk-WNCPAWLC.mjs → chunk-5W7L7BT7.mjs} +13 -2
- package/dist/chunk-5W7L7BT7.mjs.map +1 -0
- package/dist/{chunk-DB64YDV2.js → chunk-AOUUZ52N.js} +55 -55
- package/dist/{chunk-DB64YDV2.js.map → chunk-AOUUZ52N.js.map} +1 -1
- package/dist/{chunk-VGSWSQQU.mjs → chunk-B67DP7MI.mjs} +4 -4
- package/dist/{chunk-VGSWSQQU.mjs.map → chunk-B67DP7MI.mjs.map} +1 -1
- package/dist/{chunk-C7BI5LQ6.js → chunk-C3H4FM4A.js} +13 -2
- package/dist/chunk-C3H4FM4A.js.map +1 -0
- package/dist/{chunk-XXYDLYIT.js → chunk-EFOXN3LC.js} +288 -171
- package/dist/chunk-EFOXN3LC.js.map +1 -0
- package/dist/{chunk-ARVLVWUC.js → chunk-F54Q2YJY.js} +97 -15
- package/dist/chunk-F54Q2YJY.js.map +1 -0
- package/dist/{chunk-WI663467.mjs → chunk-H2D2CRTD.mjs} +8 -8
- package/dist/{chunk-WI663467.mjs.map → chunk-H2D2CRTD.mjs.map} +1 -1
- package/dist/{chunk-PTGPQJZJ.js → chunk-HDCUWUNH.js} +15 -15
- package/dist/{chunk-PTGPQJZJ.js.map → chunk-HDCUWUNH.js.map} +1 -1
- package/dist/{chunk-ZKUYNCAG.js → chunk-I2NZGVBG.js} +1595 -2140
- package/dist/chunk-I2NZGVBG.js.map +1 -0
- package/dist/{chunk-MLAXYDEU.mjs → chunk-IRPS5UCS.mjs} +3 -3
- package/dist/{chunk-MLAXYDEU.mjs.map → chunk-IRPS5UCS.mjs.map} +1 -1
- package/dist/{chunk-3SUFSAP6.mjs → chunk-IRT4T3CU.mjs} +214 -105
- package/dist/chunk-IRT4T3CU.mjs.map +1 -0
- package/dist/{chunk-A3BFURJB.mjs → chunk-JN6IL6OH.mjs} +1595 -2138
- package/dist/chunk-JN6IL6OH.mjs.map +1 -0
- package/dist/{chunk-NA57KK4O.js → chunk-JSNRCYSO.js} +4 -4
- package/dist/{chunk-NA57KK4O.js.map → chunk-JSNRCYSO.js.map} +1 -1
- package/dist/{chunk-XSBZNPUO.js → chunk-KR2X2WHJ.js} +53 -53
- package/dist/{chunk-XSBZNPUO.js.map → chunk-KR2X2WHJ.js.map} +1 -1
- package/dist/{chunk-YEWXDCCI.mjs → chunk-LEKZUS6N.mjs} +4 -4
- package/dist/{chunk-YEWXDCCI.mjs.map → chunk-LEKZUS6N.mjs.map} +1 -1
- package/dist/{chunk-6NAZVG2O.mjs → chunk-MVBIAXVN.mjs} +4 -4
- package/dist/{chunk-6NAZVG2O.mjs.map → chunk-MVBIAXVN.mjs.map} +1 -1
- package/dist/{chunk-5UU3RQRB.js → chunk-NJS2YC3J.js} +15 -2
- package/dist/chunk-NJS2YC3J.js.map +1 -0
- package/dist/{chunk-4TY55HGO.mjs → chunk-OL73LBX5.mjs} +3 -3
- package/dist/{chunk-4TY55HGO.mjs.map → chunk-OL73LBX5.mjs.map} +1 -1
- package/dist/{chunk-3PKG4KFY.mjs → chunk-QYA53LUF.mjs} +67 -10
- package/dist/chunk-QYA53LUF.mjs.map +1 -0
- package/dist/{chunk-DWFLIXES.mjs → chunk-R4TQWXNG.mjs} +3 -3
- package/dist/{chunk-DWFLIXES.mjs.map → chunk-R4TQWXNG.mjs.map} +1 -1
- package/dist/{chunk-DADFESAQ.js → chunk-RGI74SQH.js} +4 -4
- package/dist/{chunk-DADFESAQ.js.map → chunk-RGI74SQH.js.map} +1 -1
- package/dist/{chunk-SFVSDGNF.js → chunk-RL35XATZ.js} +192 -134
- package/dist/chunk-RL35XATZ.js.map +1 -0
- package/dist/{chunk-BUI7BCUN.js → chunk-RXZNACMI.js} +33 -33
- package/dist/{chunk-BUI7BCUN.js.map → chunk-RXZNACMI.js.map} +1 -1
- package/dist/{chunk-TBPWMPZU.js → chunk-SU3YPWFW.js} +26 -26
- package/dist/{chunk-TBPWMPZU.js.map → chunk-SU3YPWFW.js.map} +1 -1
- package/dist/{chunk-DIMLLLZR.js → chunk-TIJJHW2Z.js} +36 -36
- package/dist/{chunk-DIMLLLZR.js.map → chunk-TIJJHW2Z.js.map} +1 -1
- package/dist/{chunk-2RDGJXYZ.js → chunk-TVMLV675.js} +67 -67
- package/dist/{chunk-2RDGJXYZ.js.map → chunk-TVMLV675.js.map} +1 -1
- package/dist/{chunk-53SRKVKQ.mjs → chunk-U7XM3N7F.mjs} +15 -2
- package/dist/chunk-U7XM3N7F.mjs.map +1 -0
- package/dist/{chunk-Y3WJAYOY.mjs → chunk-UDDZTTLO.mjs} +6 -6
- package/dist/chunk-UDDZTTLO.mjs.map +1 -0
- package/dist/{chunk-43GCSCQA.js → chunk-W5OEBO6E.js} +12 -12
- package/dist/chunk-W5OEBO6E.js.map +1 -0
- package/dist/{chunk-FUVJHNNI.js → chunk-Y6AEE56Q.js} +69 -69
- package/dist/{chunk-FUVJHNNI.js.map → chunk-Y6AEE56Q.js.map} +1 -1
- package/dist/{chunk-MZAS6TG4.mjs → chunk-YIB2YAM5.mjs} +3 -3
- package/dist/{chunk-MZAS6TG4.mjs.map → chunk-YIB2YAM5.mjs.map} +1 -1
- package/dist/{chunk-RELMVNNR.mjs → chunk-YV72JM4B.mjs} +4 -4
- package/dist/{chunk-RELMVNNR.mjs.map → chunk-YV72JM4B.mjs.map} +1 -1
- package/dist/{chunk-MEEFOZC4.js → chunk-ZM5MVWIT.js} +4 -4
- package/dist/{chunk-MEEFOZC4.js.map → chunk-ZM5MVWIT.js.map} +1 -1
- package/dist/{chunk-PU2KTO4O.mjs → chunk-ZV5EZXXO.mjs} +97 -15
- package/dist/chunk-ZV5EZXXO.mjs.map +1 -0
- package/dist/{index-AioB90qq.d.mts → index-CoB18TbG.d.ts} +9 -2
- package/dist/{index-D5ai0cGZ.d.ts → index-VI9gyJXl.d.mts} +9 -2
- package/dist/index.d.mts +8 -41
- package/dist/index.d.ts +8 -41
- package/dist/index.js +745 -753
- package/dist/index.mjs +2 -2
- package/dist/platform/admin/index.js +11 -11
- package/dist/platform/admin/index.mjs +5 -5
- package/dist/platform/agents-workspace.js +9 -9
- package/dist/platform/agents-workspace.mjs +8 -8
- package/dist/platform/app-shell.js +4 -4
- package/dist/platform/app-shell.mjs +3 -3
- package/dist/platform/auth/index.js +28 -28
- package/dist/platform/auth/index.mjs +5 -5
- package/dist/platform/billing/index.js +4 -4
- package/dist/platform/billing/index.mjs +3 -3
- package/dist/platform/impersonation/index.js +4 -4
- package/dist/platform/impersonation/index.mjs +3 -3
- package/dist/platform/index.js +101 -101
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +21 -21
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/pages/index.d.mts +5 -6
- package/dist/platform/pages/index.d.ts +5 -6
- package/dist/platform/pages/index.js +199 -199
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +11 -11
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +8 -8
- package/dist/platform/settings/index.mjs +7 -7
- package/dist/platform/telemetry/index.d.mts +42 -0
- package/dist/platform/telemetry/index.d.ts +42 -0
- package/dist/platform/telemetry/index.js +75 -0
- package/dist/platform/telemetry/index.js.map +1 -0
- package/dist/platform/telemetry/index.mjs +68 -0
- package/dist/platform/telemetry/index.mjs.map +1 -0
- package/dist/platform/workflow-api-client.d.mts +2 -2
- package/dist/platform/workflow-api-client.d.ts +2 -2
- package/dist/platform/workflow-api-client.js +61 -61
- package/dist/platform/workflow-api-client.mjs +1 -1
- package/dist/platform/workflow-canvas-shell.js +6 -6
- package/dist/platform/workflow-canvas-shell.mjs +5 -5
- package/dist/{workflow-api-client-zVtc8FIl.d.ts → workflow-api-client-BKD8OfP_.d.ts} +62 -31
- package/dist/{workflow-api-client-wLoap-tt.d.mts → workflow-api-client-DoYj7nHz.d.mts} +62 -31
- package/package.json +7 -1
- package/dist/chunk-3PKG4KFY.mjs.map +0 -1
- package/dist/chunk-3SUFSAP6.mjs.map +0 -1
- package/dist/chunk-43GCSCQA.js.map +0 -1
- package/dist/chunk-53SRKVKQ.mjs.map +0 -1
- package/dist/chunk-5UU3RQRB.js.map +0 -1
- package/dist/chunk-A3BFURJB.mjs.map +0 -1
- package/dist/chunk-ARVLVWUC.js.map +0 -1
- package/dist/chunk-C7BI5LQ6.js.map +0 -1
- package/dist/chunk-PU2KTO4O.mjs.map +0 -1
- package/dist/chunk-SFVSDGNF.js.map +0 -1
- package/dist/chunk-WNCPAWLC.mjs.map +0 -1
- package/dist/chunk-XXYDLYIT.js.map +0 -1
- package/dist/chunk-Y3WJAYOY.mjs.map +0 -1
- package/dist/chunk-ZKUYNCAG.js.map +0 -1
- package/src/brand/logos/fuel-icon.svg +0 -32
- package/src/brand/logos/fuel-logo-dark.svg +0 -43
- package/src/brand/logos/fuel-logo.svg +0 -43
|
@@ -1,15 +1,57 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkEFOXN3LC_js = require('./chunk-EFOXN3LC.js');
|
|
5
|
+
var chunkI2NZGVBG_js = require('./chunk-I2NZGVBG.js');
|
|
6
6
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
7
|
-
var
|
|
7
|
+
var chunkC3H4FM4A_js = require('./chunk-C3H4FM4A.js');
|
|
8
8
|
var react = require('react');
|
|
9
|
+
var react$1 = require('@xyflow/react');
|
|
9
10
|
var outline = require('@heroicons/react/24/outline');
|
|
10
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
12
|
var zustand = require('zustand');
|
|
12
13
|
|
|
14
|
+
var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected }) {
|
|
15
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
16
|
+
const { config, label, onDelete, onEdit } = data;
|
|
17
|
+
const isCompact = data.displayMode === "compact";
|
|
18
|
+
const keyPreview = config.key ? config.key.slice(0, 30) : "";
|
|
19
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEFOXN3LC_js.NodeRunningIndicator, { nodeId: id }),
|
|
21
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEFOXN3LC_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
|
|
22
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
23
|
+
chunkEFOXN3LC_js.NodeInteractiveCard,
|
|
24
|
+
{
|
|
25
|
+
nodeId: id,
|
|
26
|
+
onEdit,
|
|
27
|
+
compact: isCompact,
|
|
28
|
+
selected,
|
|
29
|
+
nodeType: "s3_write",
|
|
30
|
+
children: [
|
|
31
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32
|
+
chunkEFOXN3LC_js.NodeCardHeader,
|
|
33
|
+
{
|
|
34
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(chunkEFOXN3LC_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
|
|
35
|
+
title: label,
|
|
36
|
+
description: t("s3WriteNodeDescription"),
|
|
37
|
+
compact: isCompact,
|
|
38
|
+
iconClassName: ""
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkEFOXN3LC_js.NodeCardMeta, { compact: isCompact, children: [
|
|
42
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
43
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEFOXN3LC_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
|
|
44
|
+
config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkEFOXN3LC_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
|
|
45
|
+
keyPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: keyPreview })
|
|
46
|
+
] }),
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEFOXN3LC_js.NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
48
|
+
] })
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
),
|
|
52
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkEFOXN3LC_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
|
|
53
|
+
] });
|
|
54
|
+
});
|
|
13
55
|
function AnthropicModelIcon({ className }) {
|
|
14
56
|
return /* @__PURE__ */ jsxRuntime.jsx("svg", { role: "img", viewBox: "0 0 24 24", fill: "currentColor", className, "aria-label": "Anthropic", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z" }) });
|
|
15
57
|
}
|
|
@@ -71,7 +113,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
71
113
|
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
114
|
/* @__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
115
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
-
|
|
116
|
+
chunkI2NZGVBG_js.Button,
|
|
75
117
|
{
|
|
76
118
|
type: "button",
|
|
77
119
|
outline: true,
|
|
@@ -135,7 +177,7 @@ function OutputSchemaBuilder({ value, onChange, depth = 0 }) {
|
|
|
135
177
|
},
|
|
136
178
|
index
|
|
137
179
|
)),
|
|
138
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
180
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", outline: true, onClick: addField, children: "+ Add field" })
|
|
139
181
|
] })
|
|
140
182
|
] });
|
|
141
183
|
}
|
|
@@ -158,7 +200,7 @@ function FieldEditor({
|
|
|
158
200
|
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
201
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_140px_auto_auto] items-end gap-2", children: [
|
|
160
202
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
161
|
-
|
|
203
|
+
chunkI2NZGVBG_js.FormInput,
|
|
162
204
|
{
|
|
163
205
|
label: "Name",
|
|
164
206
|
value: field.name,
|
|
@@ -167,7 +209,7 @@ function FieldEditor({
|
|
|
167
209
|
}
|
|
168
210
|
),
|
|
169
211
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
170
|
-
|
|
212
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
171
213
|
{
|
|
172
214
|
label: "Type",
|
|
173
215
|
value: field.type,
|
|
@@ -187,10 +229,10 @@ function FieldEditor({
|
|
|
187
229
|
),
|
|
188
230
|
"Required"
|
|
189
231
|
] }),
|
|
190
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
232
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", plain: true, onClick: onRemove, children: "Remove" })
|
|
191
233
|
] }),
|
|
192
234
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
193
|
-
|
|
235
|
+
chunkI2NZGVBG_js.FormInput,
|
|
194
236
|
{
|
|
195
237
|
label: "Description (optional)",
|
|
196
238
|
value: field.description,
|
|
@@ -283,7 +325,7 @@ function OutputCard({ label, value }) {
|
|
|
283
325
|
function AgentProfileHeader({ agent, models, t, selectedModelId, setSelectedModelId, selectedFramework, temperature, setTemperature, elo, setElo, onChanged }) {
|
|
284
326
|
const modelName = models.find((model) => model.id === selectedModelId)?.name ?? selectedModelId ?? "\u2014";
|
|
285
327
|
const avatarUrl = agent.avatar;
|
|
286
|
-
const frameworkMeta =
|
|
328
|
+
const frameworkMeta = chunkEFOXN3LC_js.getFrameworkMeta(selectedFramework);
|
|
287
329
|
const tierInfo = getEloTier(elo);
|
|
288
330
|
const difficultyConfig = {
|
|
289
331
|
beginner: { color: "bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-400", labelKey: "agentDrawer.tierBeginner" },
|
|
@@ -559,13 +601,13 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
559
601
|
] });
|
|
560
602
|
}
|
|
561
603
|
function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFramework, setSelectedFramework, markDirty, connectedProviderTypes }) {
|
|
562
|
-
const frameworkKeys = Object.keys(
|
|
604
|
+
const frameworkKeys = Object.keys(chunkEFOXN3LC_js.FRAMEWORK_META);
|
|
563
605
|
const hasProviderConstraints = connectedProviderTypes.length > 0;
|
|
564
|
-
const compatibleModels =
|
|
606
|
+
const compatibleModels = chunkEFOXN3LC_js.getCompatibleModels(models, selectedFramework);
|
|
565
607
|
const handleFrameworkChange = react.useCallback((newFramework) => {
|
|
566
608
|
setSelectedFramework(newFramework);
|
|
567
|
-
if (!
|
|
568
|
-
const compatible =
|
|
609
|
+
if (!chunkEFOXN3LC_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
|
|
610
|
+
const compatible = chunkEFOXN3LC_js.getCompatibleModels(models, newFramework);
|
|
569
611
|
if (compatible.length > 0) {
|
|
570
612
|
setSelectedModelId(compatible[0].id);
|
|
571
613
|
}
|
|
@@ -576,10 +618,10 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
576
618
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
577
619
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-gray-500 dark:text-gray-400", children: t("agentDrawer.framework") }),
|
|
578
620
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
|
|
579
|
-
const meta =
|
|
621
|
+
const meta = chunkEFOXN3LC_js.FRAMEWORK_META[key];
|
|
580
622
|
const isSelected = key === selectedFramework;
|
|
581
|
-
const compatCount =
|
|
582
|
-
const isCompatibleWithProviders = !hasProviderConstraints ||
|
|
623
|
+
const compatCount = chunkEFOXN3LC_js.getCompatibleModels(models, key).length;
|
|
624
|
+
const isCompatibleWithProviders = !hasProviderConstraints || chunkEFOXN3LC_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
|
|
583
625
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
584
626
|
"button",
|
|
585
627
|
{
|
|
@@ -611,7 +653,7 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
611
653
|
] }),
|
|
612
654
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: models.map((model) => {
|
|
613
655
|
const isSelected = model.id === selectedModelId;
|
|
614
|
-
const isCompatible =
|
|
656
|
+
const isCompatible = chunkEFOXN3LC_js.isModelCompatibleWithFramework(model.id, selectedFramework);
|
|
615
657
|
const { IconComponent, color, providerLabel } = getModelIcon(model.id);
|
|
616
658
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
617
659
|
"button",
|
|
@@ -735,7 +777,7 @@ function PromptTab({
|
|
|
735
777
|
] });
|
|
736
778
|
}
|
|
737
779
|
function ResultsTab({ agentId, t }) {
|
|
738
|
-
const nodeResults =
|
|
780
|
+
const nodeResults = chunkEFOXN3LC_js.useWorkflowStore((state) => state.nodeResults);
|
|
739
781
|
const agentResult = react.useMemo(() => {
|
|
740
782
|
return nodeResults[agentId] ?? null;
|
|
741
783
|
}, [nodeResults, agentId]);
|
|
@@ -825,10 +867,10 @@ function ModelsTab({ modelProviders, selectedProviderId, onSelectProvider, model
|
|
|
825
867
|
const providerModels = modelsByProvider.find((p) => p.provider.id === selectedProviderId);
|
|
826
868
|
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
869
|
const compatibleModels = providerModels.models.filter(
|
|
828
|
-
(m) =>
|
|
870
|
+
(m) => chunkEFOXN3LC_js.isModelCompatibleWithFramework(m.id, agentFramework)
|
|
829
871
|
);
|
|
830
872
|
const incompatibleModels = providerModels.models.filter(
|
|
831
|
-
(m) => !
|
|
873
|
+
(m) => !chunkEFOXN3LC_js.isModelCompatibleWithFramework(m.id, agentFramework)
|
|
832
874
|
);
|
|
833
875
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
834
876
|
/* @__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 +943,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
901
943
|
] }),
|
|
902
944
|
tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.description }),
|
|
903
945
|
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 =
|
|
946
|
+
const meta = chunkEFOXN3LC_js.getFrameworkMeta(framework);
|
|
905
947
|
const isCurrentFw = framework === agentFramework;
|
|
906
948
|
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
949
|
/* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
|
|
@@ -918,7 +960,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
918
960
|
event.stopPropagation();
|
|
919
961
|
},
|
|
920
962
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
921
|
-
|
|
963
|
+
chunkI2NZGVBG_js.ToggleSwitch,
|
|
922
964
|
{
|
|
923
965
|
checked: isEnabled,
|
|
924
966
|
onChange: () => onToggle(tool.agentToolId),
|
|
@@ -1077,9 +1119,9 @@ function AdvancedTab({
|
|
|
1077
1119
|
}
|
|
1078
1120
|
function AgentModal({ onSaved, onPersist }) {
|
|
1079
1121
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
1080
|
-
const activeModal =
|
|
1081
|
-
const agentData =
|
|
1082
|
-
const closeModal =
|
|
1122
|
+
const activeModal = chunkEFOXN3LC_js.useModalStore((s) => s.activeModal);
|
|
1123
|
+
const agentData = chunkEFOXN3LC_js.useModalStore((s) => s.agentData);
|
|
1124
|
+
const closeModal = chunkEFOXN3LC_js.useModalStore((s) => s.closeModal);
|
|
1083
1125
|
const open = activeModal === "agent";
|
|
1084
1126
|
const agent = agentData?.agent ?? null;
|
|
1085
1127
|
const models = agentData?.models ?? [];
|
|
@@ -1241,7 +1283,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1241
1283
|
)
|
|
1242
1284
|
] });
|
|
1243
1285
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1244
|
-
|
|
1286
|
+
chunkI2NZGVBG_js.GlassModal,
|
|
1245
1287
|
{
|
|
1246
1288
|
open,
|
|
1247
1289
|
onClose: handleClose,
|
|
@@ -1429,7 +1471,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1429
1471
|
const markDirty = useSubworkflowStore((s) => s.markDirty);
|
|
1430
1472
|
const markSaved = useSubworkflowStore((s) => s.markSaved);
|
|
1431
1473
|
const closeModal = useSubworkflowStore((s) => s.closeModal);
|
|
1432
|
-
const agentBehind =
|
|
1474
|
+
const agentBehind = chunkEFOXN3LC_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
|
|
1433
1475
|
const isCreateMode = !tool?.toolId;
|
|
1434
1476
|
const initialGraph = react.useMemo(() => {
|
|
1435
1477
|
const config = tool?.config;
|
|
@@ -1458,9 +1500,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1458
1500
|
}, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
|
|
1459
1501
|
if (!tool) return null;
|
|
1460
1502
|
const categoryKey = category ?? "external";
|
|
1461
|
-
const gradient = tool.color ??
|
|
1462
|
-
const categoryPill =
|
|
1463
|
-
const IconComponent =
|
|
1503
|
+
const gradient = tool.color ?? chunkEFOXN3LC_js.CATEGORY_COLORS[categoryKey] ?? chunkEFOXN3LC_js.CATEGORY_COLORS.external;
|
|
1504
|
+
const categoryPill = chunkEFOXN3LC_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkEFOXN3LC_js.CATEGORY_PILL_COLORS.external;
|
|
1505
|
+
const IconComponent = chunkEFOXN3LC_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
|
|
1464
1506
|
const graph = latestGraphRef.current;
|
|
1465
1507
|
const startNode = graph.nodes.find((n) => n.type === "start");
|
|
1466
1508
|
const endNode = graph.nodes.find((n) => n.type === "end");
|
|
@@ -1493,7 +1535,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1493
1535
|
] })
|
|
1494
1536
|
] });
|
|
1495
1537
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1496
|
-
|
|
1538
|
+
chunkI2NZGVBG_js.GlassModal,
|
|
1497
1539
|
{
|
|
1498
1540
|
open,
|
|
1499
1541
|
onClose: closeModal,
|
|
@@ -1525,7 +1567,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1525
1567
|
{
|
|
1526
1568
|
type: "button",
|
|
1527
1569
|
onClick: () => setCategory(cat),
|
|
1528
|
-
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${
|
|
1570
|
+
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkEFOXN3LC_js.CATEGORY_PILL_COLORS[cat] ?? chunkEFOXN3LC_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
1571
|
children: cat
|
|
1530
1572
|
},
|
|
1531
1573
|
cat
|
|
@@ -1612,7 +1654,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1612
1654
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
|
|
1613
1655
|
] }),
|
|
1614
1656
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1615
|
-
|
|
1657
|
+
chunkEFOXN3LC_js.WorkflowCanvas,
|
|
1616
1658
|
{
|
|
1617
1659
|
initialGraph,
|
|
1618
1660
|
agents: [],
|
|
@@ -1628,9 +1670,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1628
1670
|
}
|
|
1629
1671
|
function PipelineSettingsModal({ onSave }) {
|
|
1630
1672
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
1631
|
-
const activeModal =
|
|
1632
|
-
const data =
|
|
1633
|
-
const closeModal =
|
|
1673
|
+
const activeModal = chunkEFOXN3LC_js.useModalStore((s) => s.activeModal);
|
|
1674
|
+
const data = chunkEFOXN3LC_js.useModalStore((s) => s.pipelineSettingsData);
|
|
1675
|
+
const closeModal = chunkEFOXN3LC_js.useModalStore((s) => s.closeModal);
|
|
1634
1676
|
const open = activeModal === "pipeline-settings";
|
|
1635
1677
|
const [nameValue, setNameValue] = react.useState("");
|
|
1636
1678
|
const [descriptionValue, setDescriptionValue] = react.useState("");
|
|
@@ -1692,7 +1734,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1692
1734
|
}
|
|
1693
1735
|
),
|
|
1694
1736
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1695
|
-
|
|
1737
|
+
chunkI2NZGVBG_js.Button,
|
|
1696
1738
|
{
|
|
1697
1739
|
type: "submit",
|
|
1698
1740
|
form: "pipeline-settings-form",
|
|
@@ -1707,7 +1749,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1707
1749
|
)
|
|
1708
1750
|
] });
|
|
1709
1751
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1710
|
-
|
|
1752
|
+
chunkI2NZGVBG_js.GlassModal,
|
|
1711
1753
|
{
|
|
1712
1754
|
open,
|
|
1713
1755
|
onClose: closeModal,
|
|
@@ -1721,7 +1763,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1721
1763
|
onSubmit: handleSubmit,
|
|
1722
1764
|
children: /* @__PURE__ */ jsxRuntime.jsxs("form", { id: "pipeline-settings-form", onSubmit: handleSubmit, className: "space-y-5", children: [
|
|
1723
1765
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1724
|
-
|
|
1766
|
+
chunkI2NZGVBG_js.FormInput,
|
|
1725
1767
|
{
|
|
1726
1768
|
label: t("pipelineName"),
|
|
1727
1769
|
value: nameValue,
|
|
@@ -1731,7 +1773,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1731
1773
|
}
|
|
1732
1774
|
),
|
|
1733
1775
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1734
|
-
|
|
1776
|
+
chunkI2NZGVBG_js.FormTextarea,
|
|
1735
1777
|
{
|
|
1736
1778
|
label: t("pipelineDescription"),
|
|
1737
1779
|
value: descriptionValue,
|
|
@@ -1742,12 +1784,12 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1742
1784
|
),
|
|
1743
1785
|
lifecycleAvailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1744
1786
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1745
|
-
|
|
1787
|
+
chunkI2NZGVBG_js.FormInput,
|
|
1746
1788
|
{
|
|
1747
1789
|
label: t("pipelineSlug", { _: "Slug" }),
|
|
1748
1790
|
value: slugValue,
|
|
1749
1791
|
onValueChange: setSlugValue,
|
|
1750
|
-
placeholder: "
|
|
1792
|
+
placeholder: "product-pricing",
|
|
1751
1793
|
hint: t("pipelineSlugHint", {
|
|
1752
1794
|
_: "URL-friendly identifier. Leave blank to use the auto-generated one."
|
|
1753
1795
|
})
|
|
@@ -1869,7 +1911,7 @@ function RunReplayModal({
|
|
|
1869
1911
|
}
|
|
1870
1912
|
),
|
|
1871
1913
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1872
|
-
|
|
1914
|
+
chunkI2NZGVBG_js.Button,
|
|
1873
1915
|
{
|
|
1874
1916
|
type: "submit",
|
|
1875
1917
|
form: "run-replay-form",
|
|
@@ -1884,7 +1926,7 @@ function RunReplayModal({
|
|
|
1884
1926
|
] })
|
|
1885
1927
|
] });
|
|
1886
1928
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1887
|
-
|
|
1929
|
+
chunkI2NZGVBG_js.GlassModal,
|
|
1888
1930
|
{
|
|
1889
1931
|
open,
|
|
1890
1932
|
onClose,
|
|
@@ -1958,7 +2000,7 @@ function RowEditor({
|
|
|
1958
2000
|
]
|
|
1959
2001
|
}
|
|
1960
2002
|
) : isJson ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1961
|
-
|
|
2003
|
+
chunkI2NZGVBG_js.FormTextarea,
|
|
1962
2004
|
{
|
|
1963
2005
|
value: row.value,
|
|
1964
2006
|
onValueChange: (v) => onChange({ value: v }),
|
|
@@ -1966,7 +2008,7 @@ function RowEditor({
|
|
|
1966
2008
|
className: "font-mono"
|
|
1967
2009
|
}
|
|
1968
2010
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1969
|
-
|
|
2011
|
+
chunkI2NZGVBG_js.FormInput,
|
|
1970
2012
|
{
|
|
1971
2013
|
type: row.kind === "number" ? "number" : "text",
|
|
1972
2014
|
value: row.value,
|
|
@@ -2070,7 +2112,7 @@ function ExecutionTimelinePanel({
|
|
|
2070
2112
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate font-medium text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2071
2113
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2072
2114
|
] }),
|
|
2073
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2115
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkI2NZGVBG_js.Badge, { color: meta.color, children: [
|
|
2074
2116
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "mr-1 h-3 w-3" }),
|
|
2075
2117
|
labels[entry.status]
|
|
2076
2118
|
] })
|
|
@@ -2100,7 +2142,7 @@ function NodeInspector({
|
|
|
2100
2142
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-slate-900 dark:text-white", children: entry.nodeId }),
|
|
2101
2143
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: entry.nodeType })
|
|
2102
2144
|
] }),
|
|
2103
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2145
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Badge, { color: meta.color, children: labels[entry.status] })
|
|
2104
2146
|
] }),
|
|
2105
2147
|
/* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-2 gap-3 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
2106
2148
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -2270,7 +2312,7 @@ function RuleConditionBuilder({ value, onChange, depth = 0 }) {
|
|
|
2270
2312
|
};
|
|
2271
2313
|
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: [
|
|
2272
2314
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2273
|
-
|
|
2315
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
2274
2316
|
{
|
|
2275
2317
|
label: "Operator",
|
|
2276
2318
|
value: value.operator,
|
|
@@ -2293,17 +2335,17 @@ function SimpleEditor({
|
|
|
2293
2335
|
const isTruthy = value.operator === "truthy";
|
|
2294
2336
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2295
2337
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2296
|
-
|
|
2338
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2297
2339
|
{
|
|
2298
2340
|
label: "Field",
|
|
2299
|
-
hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.
|
|
2341
|
+
hint: "Dotted reference into the variable pool \u2014 e.g. `parse-pricing.margin`, `inputs.category`",
|
|
2300
2342
|
value: value.field ?? "",
|
|
2301
2343
|
onValueChange: (field) => onChange({ ...value, field }),
|
|
2302
2344
|
placeholder: "node.path"
|
|
2303
2345
|
}
|
|
2304
2346
|
),
|
|
2305
2347
|
!isTruthy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2306
|
-
|
|
2348
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2307
2349
|
{
|
|
2308
2350
|
label: "Value",
|
|
2309
2351
|
hint: "Literal. Numeric operators coerce via `as f64`.",
|
|
@@ -2319,7 +2361,7 @@ function ThresholdEditor({
|
|
|
2319
2361
|
}) {
|
|
2320
2362
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", children: [
|
|
2321
2363
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2322
|
-
|
|
2364
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2323
2365
|
{
|
|
2324
2366
|
label: "Field",
|
|
2325
2367
|
value: value.field ?? "",
|
|
@@ -2328,7 +2370,7 @@ function ThresholdEditor({
|
|
|
2328
2370
|
}
|
|
2329
2371
|
),
|
|
2330
2372
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2331
|
-
|
|
2373
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
2332
2374
|
{
|
|
2333
2375
|
label: "Direction",
|
|
2334
2376
|
value: value.comparison ?? "gte",
|
|
@@ -2342,7 +2384,7 @@ function ThresholdEditor({
|
|
|
2342
2384
|
}
|
|
2343
2385
|
),
|
|
2344
2386
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2345
|
-
|
|
2387
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2346
2388
|
{
|
|
2347
2389
|
label: "Threshold",
|
|
2348
2390
|
type: "number",
|
|
@@ -2359,7 +2401,7 @@ function RegexEditor({
|
|
|
2359
2401
|
}) {
|
|
2360
2402
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2361
2403
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2362
|
-
|
|
2404
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2363
2405
|
{
|
|
2364
2406
|
label: "Field",
|
|
2365
2407
|
value: value.field ?? "",
|
|
@@ -2368,7 +2410,7 @@ function RegexEditor({
|
|
|
2368
2410
|
}
|
|
2369
2411
|
),
|
|
2370
2412
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2371
|
-
|
|
2413
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2372
2414
|
{
|
|
2373
2415
|
label: "Pattern",
|
|
2374
2416
|
hint: "Rust regex syntax \u2014 `(?i)` etc. supported.",
|
|
@@ -2396,7 +2438,7 @@ function TimeWindowEditor({
|
|
|
2396
2438
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2397
2439
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2398
2440
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2399
|
-
|
|
2441
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
2400
2442
|
{
|
|
2401
2443
|
label: "Timezone",
|
|
2402
2444
|
value: value.timezone ?? "UTC",
|
|
@@ -2405,7 +2447,7 @@ function TimeWindowEditor({
|
|
|
2405
2447
|
}
|
|
2406
2448
|
),
|
|
2407
2449
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2408
|
-
|
|
2450
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2409
2451
|
{
|
|
2410
2452
|
label: "Timestamp field (optional)",
|
|
2411
2453
|
hint: "Pulls a timestamp from the pool. Leave blank to use the run's wall-clock.",
|
|
@@ -2418,7 +2460,7 @@ function TimeWindowEditor({
|
|
|
2418
2460
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2419
2461
|
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: [
|
|
2420
2462
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2421
|
-
|
|
2463
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2422
2464
|
{
|
|
2423
2465
|
label: `Start (hour)`,
|
|
2424
2466
|
type: "number",
|
|
@@ -2429,7 +2471,7 @@ function TimeWindowEditor({
|
|
|
2429
2471
|
}
|
|
2430
2472
|
),
|
|
2431
2473
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2432
|
-
|
|
2474
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2433
2475
|
{
|
|
2434
2476
|
label: `End (hour)`,
|
|
2435
2477
|
type: "number",
|
|
@@ -2439,9 +2481,9 @@ function TimeWindowEditor({
|
|
|
2439
2481
|
onValueChange: (raw) => update(index, { endHour: clampHour(raw, 24) })
|
|
2440
2482
|
}
|
|
2441
2483
|
),
|
|
2442
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2484
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2443
2485
|
] }, index)),
|
|
2444
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2486
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add window" })
|
|
2445
2487
|
] })
|
|
2446
2488
|
] });
|
|
2447
2489
|
}
|
|
@@ -2464,7 +2506,7 @@ function BooleanGroupEditor({
|
|
|
2464
2506
|
});
|
|
2465
2507
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
2466
2508
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2467
|
-
|
|
2509
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
2468
2510
|
{
|
|
2469
2511
|
label: "Combinator",
|
|
2470
2512
|
value: value.combinator ?? "and",
|
|
@@ -2482,9 +2524,9 @@ function BooleanGroupEditor({
|
|
|
2482
2524
|
depth
|
|
2483
2525
|
}
|
|
2484
2526
|
),
|
|
2485
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2527
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove operand" }) })
|
|
2486
2528
|
] }, index)),
|
|
2487
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2529
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add operand" })
|
|
2488
2530
|
] })
|
|
2489
2531
|
] });
|
|
2490
2532
|
}
|
|
@@ -2520,7 +2562,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2520
2562
|
};
|
|
2521
2563
|
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: [
|
|
2522
2564
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2523
|
-
|
|
2565
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
2524
2566
|
{
|
|
2525
2567
|
label: "Action type",
|
|
2526
2568
|
value: type,
|
|
@@ -2530,7 +2572,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2530
2572
|
),
|
|
2531
2573
|
type === "adjust_price" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2532
2574
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2533
|
-
|
|
2575
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2534
2576
|
{
|
|
2535
2577
|
label: "Multiplier",
|
|
2536
2578
|
type: "number",
|
|
@@ -2540,7 +2582,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2540
2582
|
}
|
|
2541
2583
|
),
|
|
2542
2584
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2543
|
-
|
|
2585
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2544
2586
|
{
|
|
2545
2587
|
label: "Reason code",
|
|
2546
2588
|
value: stringParam(params.reason),
|
|
@@ -2550,7 +2592,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2550
2592
|
)
|
|
2551
2593
|
] }),
|
|
2552
2594
|
type === "enforce_min_margin" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2553
|
-
|
|
2595
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2554
2596
|
{
|
|
2555
2597
|
label: "Floor (fraction, e.g. 0.08)",
|
|
2556
2598
|
type: "number",
|
|
@@ -2560,7 +2602,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2560
2602
|
}
|
|
2561
2603
|
),
|
|
2562
2604
|
type === "realign_to_competitor" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2563
|
-
|
|
2605
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2564
2606
|
{
|
|
2565
2607
|
label: "Tolerance (fraction)",
|
|
2566
2608
|
type: "number",
|
|
@@ -2570,7 +2612,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2570
2612
|
}
|
|
2571
2613
|
),
|
|
2572
2614
|
type === "request_manager_approval" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2573
|
-
|
|
2615
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2574
2616
|
{
|
|
2575
2617
|
label: "Approval limit (fraction)",
|
|
2576
2618
|
type: "number",
|
|
@@ -2580,7 +2622,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2580
2622
|
}
|
|
2581
2623
|
),
|
|
2582
2624
|
type === "round_to" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2583
|
-
|
|
2625
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2584
2626
|
{
|
|
2585
2627
|
label: "Step (e.g. 0.009)",
|
|
2586
2628
|
type: "number",
|
|
@@ -2591,7 +2633,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2591
2633
|
),
|
|
2592
2634
|
type === "alert" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2593
2635
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2594
|
-
|
|
2636
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2595
2637
|
{
|
|
2596
2638
|
label: "Channel",
|
|
2597
2639
|
value: stringParam(params.channel),
|
|
@@ -2600,7 +2642,7 @@ function RuleActionBuilder({ value, onChange }) {
|
|
|
2600
2642
|
}
|
|
2601
2643
|
),
|
|
2602
2644
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2603
|
-
|
|
2645
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2604
2646
|
{
|
|
2605
2647
|
label: "Severity",
|
|
2606
2648
|
value: stringParam(params.severity),
|
|
@@ -2638,7 +2680,7 @@ function CustomParamsEditor({
|
|
|
2638
2680
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
2639
2681
|
entries.map(([key, value], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [
|
|
2640
2682
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2641
|
-
|
|
2683
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2642
2684
|
{
|
|
2643
2685
|
label: "Key",
|
|
2644
2686
|
value: key,
|
|
@@ -2646,16 +2688,16 @@ function CustomParamsEditor({
|
|
|
2646
2688
|
}
|
|
2647
2689
|
),
|
|
2648
2690
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2649
|
-
|
|
2691
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2650
2692
|
{
|
|
2651
2693
|
label: "Value",
|
|
2652
2694
|
value: String(value ?? ""),
|
|
2653
2695
|
onValueChange: (raw) => update(index, key, raw)
|
|
2654
2696
|
}
|
|
2655
2697
|
),
|
|
2656
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2698
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", plain: true, onClick: () => remove(index), children: "Remove" })
|
|
2657
2699
|
] }, index)),
|
|
2658
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2700
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", outline: true, onClick: add, children: "+ Add param" })
|
|
2659
2701
|
] });
|
|
2660
2702
|
}
|
|
2661
2703
|
function numberParam(value, fallback) {
|
|
@@ -2685,9 +2727,9 @@ function RuleForm({ value, onChange }) {
|
|
|
2685
2727
|
);
|
|
2686
2728
|
const update = (key, v) => onChange({ ...value, [key]: v });
|
|
2687
2729
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
2688
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2730
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkI2NZGVBG_js.FormGrid, { children: [
|
|
2689
2731
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2690
|
-
|
|
2732
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2691
2733
|
{
|
|
2692
2734
|
label: "Name",
|
|
2693
2735
|
required: true,
|
|
@@ -2696,7 +2738,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2696
2738
|
}
|
|
2697
2739
|
),
|
|
2698
2740
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2699
|
-
|
|
2741
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2700
2742
|
{
|
|
2701
2743
|
label: "Priority",
|
|
2702
2744
|
type: "number",
|
|
@@ -2706,7 +2748,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2706
2748
|
}
|
|
2707
2749
|
),
|
|
2708
2750
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2709
|
-
|
|
2751
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
2710
2752
|
{
|
|
2711
2753
|
label: "Enabled",
|
|
2712
2754
|
value: value.enabled ? "true" : "false",
|
|
@@ -2718,7 +2760,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2718
2760
|
}
|
|
2719
2761
|
),
|
|
2720
2762
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2721
|
-
|
|
2763
|
+
chunkI2NZGVBG_js.FormTextarea,
|
|
2722
2764
|
{
|
|
2723
2765
|
label: "Description",
|
|
2724
2766
|
rows: 2,
|
|
@@ -2730,7 +2772,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2730
2772
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2731
2773
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2732
2774
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Condition" }),
|
|
2733
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2775
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Badge, { color: "indigo", children: value.condition.operator })
|
|
2734
2776
|
] }),
|
|
2735
2777
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2736
2778
|
RuleConditionBuilder,
|
|
@@ -2743,7 +2785,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2743
2785
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2744
2786
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2745
2787
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Action on match" }),
|
|
2746
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2788
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Badge, { color: "fuchsia", children: value.action.type })
|
|
2747
2789
|
] }),
|
|
2748
2790
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2749
2791
|
RuleActionBuilder,
|
|
@@ -2765,7 +2807,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2765
2807
|
),
|
|
2766
2808
|
showAdvanced && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2767
2809
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2768
|
-
|
|
2810
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2769
2811
|
{
|
|
2770
2812
|
label: "Valid from (ISO 8601)",
|
|
2771
2813
|
type: "datetime-local",
|
|
@@ -2774,7 +2816,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2774
2816
|
}
|
|
2775
2817
|
),
|
|
2776
2818
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2777
|
-
|
|
2819
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2778
2820
|
{
|
|
2779
2821
|
label: "Valid until (ISO 8601)",
|
|
2780
2822
|
type: "datetime-local",
|
|
@@ -2783,7 +2825,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2783
2825
|
}
|
|
2784
2826
|
),
|
|
2785
2827
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2786
|
-
|
|
2828
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
2787
2829
|
{
|
|
2788
2830
|
label: "Status",
|
|
2789
2831
|
value: value.status ?? "active",
|
|
@@ -2792,7 +2834,7 @@ function RuleForm({ value, onChange }) {
|
|
|
2792
2834
|
}
|
|
2793
2835
|
),
|
|
2794
2836
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2795
|
-
|
|
2837
|
+
chunkI2NZGVBG_js.FormInput,
|
|
2796
2838
|
{
|
|
2797
2839
|
label: "Tags (comma-separated)",
|
|
2798
2840
|
value: (value.tags ?? []).join(", "),
|
|
@@ -2894,6 +2936,7 @@ var LOGIC_NODE_ITEMS = [
|
|
|
2894
2936
|
// Data Processing
|
|
2895
2937
|
{ nodeType: "code", nameKey: "codeNode", descriptionKey: "codeNodeDescription", subcategory: "data_processing" },
|
|
2896
2938
|
{ nodeType: "http_request", nameKey: "httpRequestNode", descriptionKey: "httpRequestNodeDescription", subcategory: "data_processing" },
|
|
2939
|
+
{ nodeType: "s3_write", nameKey: "s3WriteNode", descriptionKey: "s3WriteNodeDescription", subcategory: "data_processing" },
|
|
2897
2940
|
{ nodeType: "template_transform", nameKey: "templateTransformNode", descriptionKey: "templateTransformNodeDescription", subcategory: "data_processing" },
|
|
2898
2941
|
{ nodeType: "variable_assigner", nameKey: "variableAssignerNode", descriptionKey: "variableAssignerNodeDescription", subcategory: "data_processing" },
|
|
2899
2942
|
{ nodeType: "variable_aggregator", nameKey: "variableAggregatorNode", descriptionKey: "variableAggregatorNodeDescription", subcategory: "data_processing" },
|
|
@@ -2976,9 +3019,9 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
|
|
|
2976
3019
|
] });
|
|
2977
3020
|
}
|
|
2978
3021
|
function LogicNodeItemCard({ item, translationFunction }) {
|
|
2979
|
-
const IconComponent =
|
|
2980
|
-
const gradient =
|
|
2981
|
-
const defaultConfig =
|
|
3022
|
+
const IconComponent = chunkEFOXN3LC_js.LOGIC_ICON_MAP[item.nodeType];
|
|
3023
|
+
const gradient = chunkEFOXN3LC_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
|
|
3024
|
+
const defaultConfig = chunkC3H4FM4A_js.createDefaultLogicNodeConfig(item.nodeType);
|
|
2982
3025
|
const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
|
|
2983
3026
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2984
3027
|
"div",
|
|
@@ -3048,7 +3091,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3048
3091
|
[entityTypes, normalizedQuery]
|
|
3049
3092
|
);
|
|
3050
3093
|
const filteredLogicItems = react.useMemo(() => {
|
|
3051
|
-
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !
|
|
3094
|
+
const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkEFOXN3LC_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
|
|
3052
3095
|
if (!normalizedQuery) return visibleByDefault;
|
|
3053
3096
|
return visibleByDefault.filter(
|
|
3054
3097
|
(item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
|
|
@@ -3112,7 +3155,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3112
3155
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
3113
3156
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-gray-900 dark:text-white", children: agent.name }),
|
|
3114
3157
|
(() => {
|
|
3115
|
-
const tier =
|
|
3158
|
+
const tier = chunkC3H4FM4A_js.getAgentTier(Number(agent.elo ?? 0));
|
|
3116
3159
|
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)}`) });
|
|
3117
3160
|
})()
|
|
3118
3161
|
] }),
|
|
@@ -3145,7 +3188,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3145
3188
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.category })
|
|
3146
3189
|
] }),
|
|
3147
3190
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3148
|
-
|
|
3191
|
+
chunkI2NZGVBG_js.ToggleSwitch,
|
|
3149
3192
|
{
|
|
3150
3193
|
checked: Boolean(tool.enabled),
|
|
3151
3194
|
onChange: () => {
|
|
@@ -3186,7 +3229,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3186
3229
|
] })
|
|
3187
3230
|
] }),
|
|
3188
3231
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3189
|
-
|
|
3232
|
+
chunkI2NZGVBG_js.ToggleSwitch,
|
|
3190
3233
|
{
|
|
3191
3234
|
checked: Boolean(rule.enabled),
|
|
3192
3235
|
onChange: () => {
|
|
@@ -3222,8 +3265,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3222
3265
|
limit: entity.defaultLimit
|
|
3223
3266
|
});
|
|
3224
3267
|
const dsLogo = getDatasourceLogo(entity.id);
|
|
3225
|
-
const EntityIcon =
|
|
3226
|
-
const entityGradient =
|
|
3268
|
+
const EntityIcon = chunkEFOXN3LC_js.getEntityIcon(entity.id);
|
|
3269
|
+
const entityGradient = chunkEFOXN3LC_js.getEntityGradient(entity.id);
|
|
3227
3270
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3228
3271
|
"div",
|
|
3229
3272
|
{
|
|
@@ -3243,7 +3286,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3243
3286
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3244
3287
|
/* @__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" }),
|
|
3245
3288
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3246
|
-
|
|
3289
|
+
chunkI2NZGVBG_js.ToggleSwitch,
|
|
3247
3290
|
{
|
|
3248
3291
|
checked: true,
|
|
3249
3292
|
onChange: () => {
|
|
@@ -3621,9 +3664,9 @@ function formatDuration3(durationMs) {
|
|
|
3621
3664
|
}
|
|
3622
3665
|
function RunPanel({ open, onClose, onRun, onStop }) {
|
|
3623
3666
|
const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.runPanel");
|
|
3624
|
-
const nodes =
|
|
3625
|
-
const isRunning =
|
|
3626
|
-
const nodeResults =
|
|
3667
|
+
const nodes = chunkEFOXN3LC_js.useWorkflowStore((state) => state.nodes);
|
|
3668
|
+
const isRunning = chunkEFOXN3LC_js.useWorkflowStore((state) => state.isRunning);
|
|
3669
|
+
const nodeResults = chunkEFOXN3LC_js.useWorkflowStore((state) => state.nodeResults);
|
|
3627
3670
|
const startNode = nodes.find((node) => node.type === "start");
|
|
3628
3671
|
const hasEndNode = nodes.some((node) => node.type === "end");
|
|
3629
3672
|
const hasValidStartConfig = Boolean(
|
|
@@ -3806,6 +3849,20 @@ function inferVariables(config, nodeType) {
|
|
|
3806
3849
|
variables.push({ name: "body", direction: "input", variableType: "string" });
|
|
3807
3850
|
}
|
|
3808
3851
|
break;
|
|
3852
|
+
case "s3_write":
|
|
3853
|
+
variables.push({ name: "key", direction: "input", variableType: "string" });
|
|
3854
|
+
if (config.sourceUrl) {
|
|
3855
|
+
variables.push({ name: "sourceUrl", direction: "input", variableType: "string" });
|
|
3856
|
+
}
|
|
3857
|
+
if (config.body) {
|
|
3858
|
+
variables.push({ name: "body", direction: "input", variableType: "string" });
|
|
3859
|
+
}
|
|
3860
|
+
variables.push({ name: "bucket", direction: "output", variableType: "string" });
|
|
3861
|
+
variables.push({ name: "key", direction: "output", variableType: "string" });
|
|
3862
|
+
variables.push({ name: "size", direction: "output", variableType: "number" });
|
|
3863
|
+
variables.push({ name: "etag", direction: "output", variableType: "string" });
|
|
3864
|
+
variables.push({ name: "contentType", direction: "output", variableType: "string" });
|
|
3865
|
+
break;
|
|
3809
3866
|
case "template_transform":
|
|
3810
3867
|
variables.push({ name: "template", direction: "input", variableType: "string" });
|
|
3811
3868
|
if (config.outputVariable) {
|
|
@@ -3911,8 +3968,8 @@ function inferVariables(config, nodeType) {
|
|
|
3911
3968
|
}
|
|
3912
3969
|
function VariableInspector({ open, onClose }) {
|
|
3913
3970
|
const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.variableInspector");
|
|
3914
|
-
const nodes =
|
|
3915
|
-
const edges =
|
|
3971
|
+
const nodes = chunkEFOXN3LC_js.useWorkflowStore((state) => state.nodes);
|
|
3972
|
+
const edges = chunkEFOXN3LC_js.useWorkflowStore((state) => state.edges);
|
|
3916
3973
|
const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
|
|
3917
3974
|
const toggleNodeExpansion = react.useCallback((nodeId) => {
|
|
3918
3975
|
setExpandedNodes((current) => {
|
|
@@ -3974,8 +4031,8 @@ function VariableInspector({ open, onClose }) {
|
|
|
3974
4031
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: translations("noNodes") })
|
|
3975
4032
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-gray-100 dark:divide-gray-800", children: nodeVariableEntries.map((entry) => {
|
|
3976
4033
|
const isExpanded = expandedNodes.has(entry.nodeId);
|
|
3977
|
-
const IconComponent =
|
|
3978
|
-
const gradient =
|
|
4034
|
+
const IconComponent = chunkEFOXN3LC_js.LOGIC_ICON_MAP[entry.nodeType];
|
|
4035
|
+
const gradient = chunkEFOXN3LC_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
|
|
3979
4036
|
const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
|
|
3980
4037
|
const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
|
|
3981
4038
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
|
|
@@ -4041,7 +4098,7 @@ function RunInputDialog({
|
|
|
4041
4098
|
onRun
|
|
4042
4099
|
}) {
|
|
4043
4100
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.runInputDialog");
|
|
4044
|
-
const nodes =
|
|
4101
|
+
const nodes = chunkEFOXN3LC_js.useWorkflowStore((state) => state.nodes);
|
|
4045
4102
|
const [values, setValues] = react.useState({});
|
|
4046
4103
|
const inputVariableNames = react.useMemo(() => {
|
|
4047
4104
|
const storeStartNode = nodes.find((node) => node.type === "start");
|
|
@@ -4068,7 +4125,7 @@ function RunInputDialog({
|
|
|
4068
4125
|
}, [onClose]);
|
|
4069
4126
|
if (!open) return null;
|
|
4070
4127
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4071
|
-
|
|
4128
|
+
chunkI2NZGVBG_js.GlassModal,
|
|
4072
4129
|
{
|
|
4073
4130
|
open,
|
|
4074
4131
|
onClose: handleClose,
|
|
@@ -4079,7 +4136,7 @@ function RunInputDialog({
|
|
|
4079
4136
|
/* @__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: [
|
|
4080
4137
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: variableName }),
|
|
4081
4138
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4082
|
-
|
|
4139
|
+
chunkI2NZGVBG_js.Input,
|
|
4083
4140
|
{
|
|
4084
4141
|
value: values[variableName] ?? "",
|
|
4085
4142
|
onChange: (event) => handleValueChange(variableName, event.target.value),
|
|
@@ -4088,8 +4145,8 @@ function RunInputDialog({
|
|
|
4088
4145
|
)
|
|
4089
4146
|
] }, variableName)) }),
|
|
4090
4147
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [
|
|
4091
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4092
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4148
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { size: "sm", plain: true, onClick: handleClose, children: t("cancel") }),
|
|
4149
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkI2NZGVBG_js.Button, { size: "sm", gradient: true, onClick: handleSubmit, children: [
|
|
4093
4150
|
/* @__PURE__ */ jsxRuntime.jsx(outline.PlayIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
|
|
4094
4151
|
t("run")
|
|
4095
4152
|
] })
|
|
@@ -4122,8 +4179,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4122
4179
|
const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
|
|
4123
4180
|
const [selectedRun, setSelectedRun] = react.useState(null);
|
|
4124
4181
|
const [selectedNode, setSelectedNode] = react.useState(null);
|
|
4125
|
-
const isRunning =
|
|
4126
|
-
const nodeResults =
|
|
4182
|
+
const isRunning = chunkEFOXN3LC_js.useWorkflowStore((state) => state.isRunning);
|
|
4183
|
+
const nodeResults = chunkEFOXN3LC_js.useWorkflowStore((state) => state.nodeResults);
|
|
4127
4184
|
const refreshRuns = react.useCallback(async () => {
|
|
4128
4185
|
setIsLoadingRuns(true);
|
|
4129
4186
|
try {
|
|
@@ -4279,7 +4336,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4279
4336
|
onAutoSaveGraph(graph);
|
|
4280
4337
|
}, [onAutoSaveGraph, onGraphSnapshot]);
|
|
4281
4338
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4282
|
-
|
|
4339
|
+
chunkEFOXN3LC_js.Workspace,
|
|
4283
4340
|
{
|
|
4284
4341
|
...workspaceProps,
|
|
4285
4342
|
onGraphChange: handleGraphChange
|
|
@@ -4287,7 +4344,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
|
|
|
4287
4344
|
);
|
|
4288
4345
|
});
|
|
4289
4346
|
function DynamicIslandConfirm2(props) {
|
|
4290
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4347
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.DynamicIslandConfirm, { ...props });
|
|
4291
4348
|
}
|
|
4292
4349
|
var JSON_PREVIEW_LINE_LIMIT = 50;
|
|
4293
4350
|
function DslExportModal({ open, onClose, workflow, graph }) {
|
|
@@ -4341,7 +4398,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4341
4398
|
}, [jsonString, workflow.name, workflow.version]);
|
|
4342
4399
|
if (!open) return null;
|
|
4343
4400
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4344
|
-
|
|
4401
|
+
chunkI2NZGVBG_js.GlassModal,
|
|
4345
4402
|
{
|
|
4346
4403
|
open,
|
|
4347
4404
|
onClose,
|
|
@@ -4383,7 +4440,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4383
4440
|
] }),
|
|
4384
4441
|
/* @__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: [
|
|
4385
4442
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4386
|
-
|
|
4443
|
+
chunkI2NZGVBG_js.Button,
|
|
4387
4444
|
{
|
|
4388
4445
|
type: "button",
|
|
4389
4446
|
onClick: handleCopyToClipboard,
|
|
@@ -4400,7 +4457,7 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4400
4457
|
}
|
|
4401
4458
|
),
|
|
4402
4459
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4403
|
-
|
|
4460
|
+
chunkI2NZGVBG_js.Button,
|
|
4404
4461
|
{
|
|
4405
4462
|
type: "button",
|
|
4406
4463
|
onClick: handleDownloadJson,
|
|
@@ -4559,7 +4616,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4559
4616
|
}, []);
|
|
4560
4617
|
if (!open) return null;
|
|
4561
4618
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4562
|
-
|
|
4619
|
+
chunkI2NZGVBG_js.GlassModal,
|
|
4563
4620
|
{
|
|
4564
4621
|
open,
|
|
4565
4622
|
onClose,
|
|
@@ -4599,7 +4656,7 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4599
4656
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "import-validation-result", children: [
|
|
4600
4657
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-center justify-between", children: [
|
|
4601
4658
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: fileName }),
|
|
4602
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4659
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", plain: true, size: "sm", onClick: handleReset, children: translations("chooseAnother") })
|
|
4603
4660
|
] }),
|
|
4604
4661
|
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: [
|
|
4605
4662
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -4627,9 +4684,9 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4627
4684
|
] })
|
|
4628
4685
|
] }) }),
|
|
4629
4686
|
/* @__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: [
|
|
4630
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4687
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", onClick: onClose, outline: true, size: "sm", "data-testid": "import-cancel-button", children: translations("cancel") }),
|
|
4631
4688
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4632
|
-
|
|
4689
|
+
chunkI2NZGVBG_js.Button,
|
|
4633
4690
|
{
|
|
4634
4691
|
type: "button",
|
|
4635
4692
|
onClick: handleImport,
|
|
@@ -4650,14 +4707,14 @@ function DslImportModal({ open, onClose, onImport }) {
|
|
|
4650
4707
|
}
|
|
4651
4708
|
|
|
4652
4709
|
// src/astrlabe/store/selectors.ts
|
|
4653
|
-
var useCanUndo = () =>
|
|
4654
|
-
var useCanRedo = () =>
|
|
4655
|
-
var useHasCopied = () =>
|
|
4656
|
-
var useContextMenu = () =>
|
|
4657
|
-
var useEditingNodeId = () =>
|
|
4658
|
-
var useSelectedNodeCount = () =>
|
|
4659
|
-
var useIsRunning = () =>
|
|
4660
|
-
var useNodeResults = () =>
|
|
4710
|
+
var useCanUndo = () => chunkEFOXN3LC_js.useWorkflowStore((state) => state.past.length > 0);
|
|
4711
|
+
var useCanRedo = () => chunkEFOXN3LC_js.useWorkflowStore((state) => state.future.length > 0);
|
|
4712
|
+
var useHasCopied = () => chunkEFOXN3LC_js.useWorkflowStore((state) => state.clipboard !== null);
|
|
4713
|
+
var useContextMenu = () => chunkEFOXN3LC_js.useWorkflowStore((state) => state.contextMenu);
|
|
4714
|
+
var useEditingNodeId = () => chunkEFOXN3LC_js.useWorkflowStore((state) => state.editingNodeId);
|
|
4715
|
+
var useSelectedNodeCount = () => chunkEFOXN3LC_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
|
|
4716
|
+
var useIsRunning = () => chunkEFOXN3LC_js.useWorkflowStore((state) => state.isRunning);
|
|
4717
|
+
var useNodeResults = () => chunkEFOXN3LC_js.useWorkflowStore((state) => state.nodeResults);
|
|
4661
4718
|
var DEFAULT_MAX_HISTORY = 50;
|
|
4662
4719
|
function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
|
|
4663
4720
|
const pastRef = react.useRef([]);
|
|
@@ -4955,6 +5012,7 @@ exports.RuleForm = RuleForm;
|
|
|
4955
5012
|
exports.RunInputDialog = RunInputDialog;
|
|
4956
5013
|
exports.RunPanel = RunPanel;
|
|
4957
5014
|
exports.RunReplayModal = RunReplayModal;
|
|
5015
|
+
exports.S3WriteFlowNode = S3WriteFlowNode;
|
|
4958
5016
|
exports.SaveStatusBadge = SaveStatusBadge;
|
|
4959
5017
|
exports.SubworkflowModal = SubworkflowModal;
|
|
4960
5018
|
exports.TIMEZONE_OPTIONS = TIMEZONE_OPTIONS;
|
|
@@ -4979,5 +5037,5 @@ exports.useNodeResults = useNodeResults;
|
|
|
4979
5037
|
exports.useSelectedNodeCount = useSelectedNodeCount;
|
|
4980
5038
|
exports.useSubworkflowStore = useSubworkflowStore;
|
|
4981
5039
|
exports.useUndoRedo = useUndoRedo;
|
|
4982
|
-
//# sourceMappingURL=chunk-
|
|
4983
|
-
//# sourceMappingURL=chunk-
|
|
5040
|
+
//# sourceMappingURL=chunk-RL35XATZ.js.map
|
|
5041
|
+
//# sourceMappingURL=chunk-RL35XATZ.js.map
|