@datatechsolutions/ui 2.8.8 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{workflow → astrlabe}/graph-node.js +6 -6
- package/dist/{workflow → astrlabe}/graph-node.mjs +2 -2
- package/dist/{workflow → astrlabe}/index.d.mts +17 -4
- package/dist/{workflow → astrlabe}/index.d.ts +17 -4
- package/dist/{workflow → astrlabe}/index.js +138 -136
- package/dist/astrlabe/index.js.map +1 -0
- package/dist/{workflow → astrlabe}/index.mjs +12 -10
- package/dist/astrlabe/index.mjs.map +1 -0
- package/dist/{workflow → astrlabe}/utils.js +7 -7
- package/dist/{workflow → astrlabe}/utils.mjs +2 -2
- package/dist/{workflow → astrlabe}/workflow-canvas.d.mts +1 -1
- package/dist/{workflow → astrlabe}/workflow-canvas.d.ts +1 -1
- package/dist/{workflow → astrlabe}/workflow-canvas.js +5 -5
- package/dist/astrlabe/workflow-canvas.mjs +11 -0
- package/dist/{workflow → astrlabe}/workflow-preview-canvas.js.map +1 -1
- package/dist/{workflow → astrlabe}/workflow-preview-canvas.mjs.map +1 -1
- package/dist/{chunk-E42PD4X6.js → chunk-3GE3MBUZ.js} +3 -3
- package/dist/{chunk-E42PD4X6.js.map → chunk-3GE3MBUZ.js.map} +1 -1
- package/dist/chunk-55H6WZQP.js +5 -0
- package/dist/{chunk-2HUN5ZXT.js.map → chunk-55H6WZQP.js.map} +1 -1
- package/dist/{chunk-Y2KJSGXS.js → chunk-6AA5OM4H.js} +481 -66
- package/dist/chunk-6AA5OM4H.js.map +1 -0
- package/dist/{chunk-BTJP5QCD.mjs → chunk-AM2TTPYM.mjs} +4 -4
- package/dist/{chunk-BTJP5QCD.mjs.map → chunk-AM2TTPYM.mjs.map} +1 -1
- package/dist/{chunk-55S2KOTZ.mjs → chunk-BLNXRUC4.mjs} +3 -3
- package/dist/{chunk-55S2KOTZ.mjs.map → chunk-BLNXRUC4.mjs.map} +1 -1
- package/dist/{chunk-ULPKAD4A.js → chunk-DFR6CMJH.js} +4 -4
- package/dist/{chunk-ULPKAD4A.js.map → chunk-DFR6CMJH.js.map} +1 -1
- package/dist/{chunk-GXCWMPW5.js → chunk-HSANA5YY.js} +3391 -671
- package/dist/chunk-HSANA5YY.js.map +1 -0
- package/dist/chunk-JB6RNAD2.mjs +4 -0
- package/dist/{chunk-A3B3A43Y.mjs.map → chunk-JB6RNAD2.mjs.map} +1 -1
- package/dist/{chunk-SHKRLL36.mjs → chunk-JODJG6CJ.mjs} +3235 -668
- package/dist/chunk-JODJG6CJ.mjs.map +1 -0
- package/dist/{chunk-UBCSCLUW.mjs → chunk-OZNTQROP.mjs} +3 -3
- package/dist/{chunk-UBCSCLUW.mjs.map → chunk-OZNTQROP.mjs.map} +1 -1
- package/dist/{chunk-NJ6PBGQM.js → chunk-P4YYEM4B.js} +3 -3
- package/dist/{chunk-NJ6PBGQM.js.map → chunk-P4YYEM4B.js.map} +1 -1
- package/dist/{chunk-D3INPADN.mjs → chunk-ZEUBXXRI.mjs} +422 -7
- package/dist/chunk-ZEUBXXRI.mjs.map +1 -0
- package/dist/index.d.mts +342 -3
- package/dist/index.d.ts +342 -3
- package/dist/index.js +1177 -553
- package/dist/index.mjs +1 -1
- package/dist/{workflow-canvas-CVkbfTQu.d.ts → workflow-canvas-CGeuIgBQ.d.ts} +1 -1
- package/dist/{workflow-canvas-B3k03HVM.d.mts → workflow-canvas-at3LMbkg.d.mts} +1 -1
- package/package.json +25 -25
- package/dist/chunk-2HUN5ZXT.js +0 -5
- package/dist/chunk-A3B3A43Y.mjs +0 -4
- package/dist/chunk-D3INPADN.mjs.map +0 -1
- package/dist/chunk-GXCWMPW5.js.map +0 -1
- package/dist/chunk-SHKRLL36.mjs.map +0 -1
- package/dist/chunk-Y2KJSGXS.js.map +0 -1
- package/dist/workflow/index.js.map +0 -1
- package/dist/workflow/index.mjs.map +0 -1
- package/dist/workflow/workflow-canvas.mjs +0 -11
- /package/dist/{workflow → astrlabe}/contracts.d.mts +0 -0
- /package/dist/{workflow → astrlabe}/contracts.d.ts +0 -0
- /package/dist/{workflow → astrlabe}/contracts.js +0 -0
- /package/dist/{workflow → astrlabe}/contracts.js.map +0 -0
- /package/dist/{workflow → astrlabe}/contracts.mjs +0 -0
- /package/dist/{workflow → astrlabe}/contracts.mjs.map +0 -0
- /package/dist/{workflow → astrlabe}/graph-node.d.mts +0 -0
- /package/dist/{workflow → astrlabe}/graph-node.d.ts +0 -0
- /package/dist/{workflow → astrlabe}/graph-node.js.map +0 -0
- /package/dist/{workflow → astrlabe}/graph-node.mjs.map +0 -0
- /package/dist/{workflow → astrlabe}/utils.d.mts +0 -0
- /package/dist/{workflow → astrlabe}/utils.d.ts +0 -0
- /package/dist/{workflow → astrlabe}/utils.js.map +0 -0
- /package/dist/{workflow → astrlabe}/utils.mjs.map +0 -0
- /package/dist/{workflow → astrlabe}/workflow-canvas.js.map +0 -0
- /package/dist/{workflow → astrlabe}/workflow-canvas.mjs.map +0 -0
- /package/dist/{workflow → astrlabe}/workflow-preview-canvas.d.mts +0 -0
- /package/dist/{workflow → astrlabe}/workflow-preview-canvas.d.ts +0 -0
- /package/dist/{workflow → astrlabe}/workflow-preview-canvas.js +0 -0
- /package/dist/{workflow → astrlabe}/workflow-preview-canvas.mjs +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkHSANA5YY_js = require('./chunk-HSANA5YY.js');
|
|
5
5
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
6
|
+
var chunkP4YYEM4B_js = require('./chunk-P4YYEM4B.js');
|
|
7
|
+
var chunkDFR6CMJH_js = require('./chunk-DFR6CMJH.js');
|
|
8
8
|
var react = require('react');
|
|
9
9
|
var react$1 = require('@xyflow/react');
|
|
10
10
|
require('@xyflow/react/dist/style.css');
|
|
@@ -1213,17 +1213,17 @@ function NodeInteractiveCard({
|
|
|
1213
1213
|
);
|
|
1214
1214
|
}
|
|
1215
1215
|
function NodeIconBubble({ tone, children }) {
|
|
1216
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1216
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkP4YYEM4B_js.GraphNodeIconBubble, { className: `bg-gradient-to-br ${LOGIC_NODE_GRADIENTS[tone]}`, children });
|
|
1217
1217
|
}
|
|
1218
1218
|
function NodeCardHeader({ icon, title, description, compact = false, iconClassName }) {
|
|
1219
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1219
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkP4YYEM4B_js.GraphNodeHeader, { icon, title, description, compact, iconClassName });
|
|
1220
1220
|
}
|
|
1221
1221
|
function NodeCardMeta({ compact = false, children }) {
|
|
1222
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1222
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkP4YYEM4B_js.GraphNodeMeta, { compact, children });
|
|
1223
1223
|
}
|
|
1224
1224
|
function NodeCardBadge({ children, className, tone, soft = false }) {
|
|
1225
1225
|
const toneClass = tone ? soft ? LOGIC_NODE_BADGE_SOFT_COLORS[tone] : LOGIC_NODE_BADGE_COLORS[tone] : "";
|
|
1226
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1226
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkP4YYEM4B_js.GraphNodeBadge, { className: className ?? `inline-flex items-center rounded-full px-2 py-0.5 text-[10px] ${soft ? "font-medium" : "font-semibold"} ${toneClass}`, children });
|
|
1227
1227
|
}
|
|
1228
1228
|
function NodeCardDeleteAction({ nodeId, onDelete }) {
|
|
1229
1229
|
if (!onDelete) return null;
|
|
@@ -1369,7 +1369,7 @@ var AgentFlowNode = react.memo(function AgentFlowNode2({ id, data, selected }) {
|
|
|
1369
1369
|
/* @__PURE__ */ jsxRuntime.jsx(NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
1370
1370
|
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: "rounded-full bg-indigo-100 px-2 py-0.5 text-[10px] font-semibold text-indigo-700 dark:bg-indigo-500/20 dark:text-indigo-300", children: "Agent" }),
|
|
1371
1371
|
(() => {
|
|
1372
|
-
const tier =
|
|
1372
|
+
const tier = chunkDFR6CMJH_js.getAgentTier(Number(data.agent.elo ?? 0));
|
|
1373
1373
|
return /* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-bold ${tier.pillColor}`, children: tier.key });
|
|
1374
1374
|
})(),
|
|
1375
1375
|
/* @__PURE__ */ jsxRuntime.jsxs(NodeCardBadge, { className: `inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-medium ${frameworkMeta.badgeColor}`, children: [
|
|
@@ -2635,6 +2635,83 @@ var NoteFlowNode = react.memo(function NoteFlowNode2({ data, selected }) {
|
|
|
2635
2635
|
}
|
|
2636
2636
|
);
|
|
2637
2637
|
});
|
|
2638
|
+
var DatasourceFlowNode = react.memo(function DatasourceFlowNode2({ id, data, selected }) {
|
|
2639
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
2640
|
+
const { config, label, onEdit, onRemoveFromCanvas } = data;
|
|
2641
|
+
const isCompact = data.displayMode === "compact";
|
|
2642
|
+
if (!config || config.type !== "datasource") {
|
|
2643
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2644
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
2645
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-400" }),
|
|
2646
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCard, { variant: "error", nodeType: "datasource", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2647
|
+
NodeCardHeader,
|
|
2648
|
+
{
|
|
2649
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-5 w-5 text-white" }),
|
|
2650
|
+
title: label || t("datasourceNodeType"),
|
|
2651
|
+
description: t("datasourceNotConfigured"),
|
|
2652
|
+
iconClassName: "flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
|
|
2653
|
+
}
|
|
2654
|
+
) }),
|
|
2655
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-400" })
|
|
2656
|
+
] });
|
|
2657
|
+
}
|
|
2658
|
+
const columnCount = config.selectedColumns?.length ?? 0;
|
|
2659
|
+
const filterCount = config.filterVariables ? Object.keys(config.filterVariables).length : 0;
|
|
2660
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2661
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
2662
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-400" }),
|
|
2663
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2664
|
+
"button",
|
|
2665
|
+
{
|
|
2666
|
+
type: "button",
|
|
2667
|
+
onClick: () => onEdit?.(id),
|
|
2668
|
+
className: "w-full text-left",
|
|
2669
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(NodeCard, { compact: isCompact, selected, nodeType: "datasource", children: [
|
|
2670
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
2671
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-cyan-500 to-blue-600 shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(outline.ServerStackIcon, { className: "h-5 w-5 text-white" }) }),
|
|
2672
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
2673
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: label }),
|
|
2674
|
+
!isCompact && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-xs text-gray-500 dark:text-gray-400", children: config.table ?? config.datasourceId })
|
|
2675
|
+
] })
|
|
2676
|
+
] }),
|
|
2677
|
+
/* @__PURE__ */ jsxRuntime.jsxs(NodeCardMeta, { compact: isCompact, children: [
|
|
2678
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2679
|
+
config.dialect && /* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300", children: config.dialect }),
|
|
2680
|
+
config.table && /* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300", children: config.table }),
|
|
2681
|
+
columnCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-gray-400 dark:text-gray-500", children: [
|
|
2682
|
+
columnCount,
|
|
2683
|
+
" ",
|
|
2684
|
+
t("datasourceColumns")
|
|
2685
|
+
] }),
|
|
2686
|
+
config.limit > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-gray-400 dark:text-gray-500", children: t("datasourceLimit", { count: config.limit }) }),
|
|
2687
|
+
filterCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-gray-400 dark:text-gray-500", children: [
|
|
2688
|
+
filterCount,
|
|
2689
|
+
" ",
|
|
2690
|
+
t("datasourceFilters")
|
|
2691
|
+
] })
|
|
2692
|
+
] }),
|
|
2693
|
+
onRemoveFromCanvas && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2694
|
+
"span",
|
|
2695
|
+
{
|
|
2696
|
+
role: "button",
|
|
2697
|
+
tabIndex: 0,
|
|
2698
|
+
onClick: (event) => {
|
|
2699
|
+
event.stopPropagation();
|
|
2700
|
+
event.preventDefault();
|
|
2701
|
+
onRemoveFromCanvas(id);
|
|
2702
|
+
},
|
|
2703
|
+
className: "nodrag nopan cursor-pointer rounded-lg p-1 opacity-0 transition hover:bg-red-50 group-hover:opacity-100 dark:hover:bg-red-900/20",
|
|
2704
|
+
"aria-label": t("removeFromCanvas"),
|
|
2705
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-3.5 w-3.5 text-red-600 dark:text-red-400" })
|
|
2706
|
+
}
|
|
2707
|
+
)
|
|
2708
|
+
] })
|
|
2709
|
+
] })
|
|
2710
|
+
}
|
|
2711
|
+
),
|
|
2712
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-400" })
|
|
2713
|
+
] });
|
|
2714
|
+
});
|
|
2638
2715
|
var GROUP_COLORS = {
|
|
2639
2716
|
indigo: {
|
|
2640
2717
|
border: "border-indigo-300/50 dark:border-indigo-600/50",
|
|
@@ -2825,7 +2902,7 @@ function WorkspaceDrawer({
|
|
|
2825
2902
|
children
|
|
2826
2903
|
}) {
|
|
2827
2904
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2828
|
-
|
|
2905
|
+
chunkHSANA5YY_js.EntityDrawer,
|
|
2829
2906
|
{
|
|
2830
2907
|
open,
|
|
2831
2908
|
onClose,
|
|
@@ -2868,7 +2945,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
2868
2945
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-gray-500 dark:text-gray-400", children: t("inputVariablesHelp") }),
|
|
2869
2946
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
2870
2947
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2871
|
-
|
|
2948
|
+
chunkHSANA5YY_js.Input,
|
|
2872
2949
|
{
|
|
2873
2950
|
value: newVariable,
|
|
2874
2951
|
onChange: (event) => setNewVariable(event.target.value),
|
|
@@ -2878,7 +2955,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
2878
2955
|
}
|
|
2879
2956
|
),
|
|
2880
2957
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2881
|
-
|
|
2958
|
+
chunkHSANA5YY_js.Button,
|
|
2882
2959
|
{
|
|
2883
2960
|
type: "button",
|
|
2884
2961
|
onClick: handleAddVariable,
|
|
@@ -2895,7 +2972,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
2895
2972
|
children: [
|
|
2896
2973
|
variable,
|
|
2897
2974
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2898
|
-
|
|
2975
|
+
chunkHSANA5YY_js.IconButton,
|
|
2899
2976
|
{
|
|
2900
2977
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-3 w-3" }),
|
|
2901
2978
|
label: `Remove ${variable}`,
|
|
@@ -2912,7 +2989,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
2912
2989
|
] }),
|
|
2913
2990
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", children: [
|
|
2914
2991
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2915
|
-
|
|
2992
|
+
chunkHSANA5YY_js.Button,
|
|
2916
2993
|
{
|
|
2917
2994
|
type: "button",
|
|
2918
2995
|
onClick: onCancel,
|
|
@@ -2922,7 +2999,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
2922
2999
|
}
|
|
2923
3000
|
),
|
|
2924
3001
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2925
|
-
|
|
3002
|
+
chunkHSANA5YY_js.Button,
|
|
2926
3003
|
{
|
|
2927
3004
|
type: "button",
|
|
2928
3005
|
onClick: handleSave,
|
|
@@ -3034,8 +3111,8 @@ function ConfigFormActions({
|
|
|
3034
3111
|
saveDisabled = false
|
|
3035
3112
|
}) {
|
|
3036
3113
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", children: [
|
|
3037
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3038
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3114
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHSANA5YY_js.Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
|
|
3115
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkHSANA5YY_js.Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
|
|
3039
3116
|
] });
|
|
3040
3117
|
}
|
|
3041
3118
|
var OPERATOR_OPTIONS = [
|
|
@@ -3084,7 +3161,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3084
3161
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-center justify-between", children: [
|
|
3085
3162
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("conditionsLabel") }),
|
|
3086
3163
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3087
|
-
|
|
3164
|
+
chunkHSANA5YY_js.Button,
|
|
3088
3165
|
{
|
|
3089
3166
|
type: "button",
|
|
3090
3167
|
onClick: handleAddCondition,
|
|
@@ -3095,7 +3172,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3095
3172
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: conditions.map((condition, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50", children: [
|
|
3096
3173
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid flex-1 grid-cols-3 gap-2", children: [
|
|
3097
3174
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3098
|
-
|
|
3175
|
+
chunkHSANA5YY_js.FormInput,
|
|
3099
3176
|
{
|
|
3100
3177
|
type: "text",
|
|
3101
3178
|
label: t("variableLabel"),
|
|
@@ -3106,7 +3183,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3106
3183
|
}
|
|
3107
3184
|
) }),
|
|
3108
3185
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3109
|
-
|
|
3186
|
+
chunkHSANA5YY_js.FormSelect,
|
|
3110
3187
|
{
|
|
3111
3188
|
label: t("operatorLabel"),
|
|
3112
3189
|
value: condition.operator,
|
|
@@ -3116,7 +3193,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3116
3193
|
}
|
|
3117
3194
|
) }),
|
|
3118
3195
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3119
|
-
|
|
3196
|
+
chunkHSANA5YY_js.FormInput,
|
|
3120
3197
|
{
|
|
3121
3198
|
type: "text",
|
|
3122
3199
|
label: t("valueLabel"),
|
|
@@ -3128,7 +3205,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3128
3205
|
) })
|
|
3129
3206
|
] }),
|
|
3130
3207
|
conditions.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3131
|
-
|
|
3208
|
+
chunkHSANA5YY_js.IconButton,
|
|
3132
3209
|
{
|
|
3133
3210
|
onClick: () => handleRemoveCondition(index),
|
|
3134
3211
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
|
|
@@ -3283,7 +3360,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3283
3360
|
};
|
|
3284
3361
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3285
3362
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3286
|
-
|
|
3363
|
+
chunkHSANA5YY_js.FormSelect,
|
|
3287
3364
|
{
|
|
3288
3365
|
label: t("methodLabel"),
|
|
3289
3366
|
value: method,
|
|
@@ -3292,7 +3369,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3292
3369
|
}
|
|
3293
3370
|
),
|
|
3294
3371
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3295
|
-
|
|
3372
|
+
chunkHSANA5YY_js.FormInput,
|
|
3296
3373
|
{
|
|
3297
3374
|
type: "text",
|
|
3298
3375
|
label: t("urlLabel"),
|
|
@@ -3305,7 +3382,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3305
3382
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
3306
3383
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("headersLabel") }),
|
|
3307
3384
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3308
|
-
|
|
3385
|
+
chunkHSANA5YY_js.Button,
|
|
3309
3386
|
{
|
|
3310
3387
|
type: "button",
|
|
3311
3388
|
onClick: handleAddHeader,
|
|
@@ -3315,7 +3392,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3315
3392
|
] }),
|
|
3316
3393
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: headerEntries.map((entry, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3317
3394
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3318
|
-
|
|
3395
|
+
chunkHSANA5YY_js.FormInput,
|
|
3319
3396
|
{
|
|
3320
3397
|
type: "text",
|
|
3321
3398
|
value: entry.key,
|
|
@@ -3325,7 +3402,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3325
3402
|
}
|
|
3326
3403
|
),
|
|
3327
3404
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3328
|
-
|
|
3405
|
+
chunkHSANA5YY_js.FormInput,
|
|
3329
3406
|
{
|
|
3330
3407
|
type: "text",
|
|
3331
3408
|
value: entry.value,
|
|
@@ -3335,7 +3412,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3335
3412
|
}
|
|
3336
3413
|
),
|
|
3337
3414
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3338
|
-
|
|
3415
|
+
chunkHSANA5YY_js.IconButton,
|
|
3339
3416
|
{
|
|
3340
3417
|
onClick: () => handleRemoveHeader(index),
|
|
3341
3418
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
|
|
@@ -3347,7 +3424,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3347
3424
|
] }, index)) })
|
|
3348
3425
|
] }),
|
|
3349
3426
|
method !== "GET" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3350
|
-
|
|
3427
|
+
chunkHSANA5YY_js.FormTextarea,
|
|
3351
3428
|
{
|
|
3352
3429
|
label: t("bodyLabel"),
|
|
3353
3430
|
value: body,
|
|
@@ -3358,7 +3435,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3358
3435
|
}
|
|
3359
3436
|
),
|
|
3360
3437
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3361
|
-
|
|
3438
|
+
chunkHSANA5YY_js.FormInput,
|
|
3362
3439
|
{
|
|
3363
3440
|
type: "number",
|
|
3364
3441
|
label: t("timeoutLabel"),
|
|
@@ -3389,7 +3466,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3389
3466
|
};
|
|
3390
3467
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3391
3468
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3392
|
-
|
|
3469
|
+
chunkHSANA5YY_js.FormTextarea,
|
|
3393
3470
|
{
|
|
3394
3471
|
label: t("templateLabel"),
|
|
3395
3472
|
value: template,
|
|
@@ -3400,7 +3477,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3400
3477
|
}
|
|
3401
3478
|
),
|
|
3402
3479
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3403
|
-
|
|
3480
|
+
chunkHSANA5YY_js.FormInput,
|
|
3404
3481
|
{
|
|
3405
3482
|
type: "text",
|
|
3406
3483
|
label: t("outputVariableLabel"),
|
|
@@ -3429,7 +3506,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3429
3506
|
};
|
|
3430
3507
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3431
3508
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3432
|
-
|
|
3509
|
+
chunkHSANA5YY_js.FormInput,
|
|
3433
3510
|
{
|
|
3434
3511
|
type: "text",
|
|
3435
3512
|
label: t("iteratorVariableLabel"),
|
|
@@ -3439,7 +3516,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3439
3516
|
}
|
|
3440
3517
|
),
|
|
3441
3518
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3442
|
-
|
|
3519
|
+
chunkHSANA5YY_js.FormInput,
|
|
3443
3520
|
{
|
|
3444
3521
|
type: "number",
|
|
3445
3522
|
label: t("maxIterationsLabel"),
|
|
@@ -3470,7 +3547,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3470
3547
|
};
|
|
3471
3548
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3472
3549
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3473
|
-
|
|
3550
|
+
chunkHSANA5YY_js.FormInput,
|
|
3474
3551
|
{
|
|
3475
3552
|
type: "text",
|
|
3476
3553
|
label: t("sourceIdLabel"),
|
|
@@ -3480,7 +3557,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3480
3557
|
}
|
|
3481
3558
|
),
|
|
3482
3559
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3483
|
-
|
|
3560
|
+
chunkHSANA5YY_js.FormInput,
|
|
3484
3561
|
{
|
|
3485
3562
|
type: "number",
|
|
3486
3563
|
label: t("topKLabel"),
|
|
@@ -3491,7 +3568,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3491
3568
|
}
|
|
3492
3569
|
),
|
|
3493
3570
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3494
|
-
|
|
3571
|
+
chunkHSANA5YY_js.FormInput,
|
|
3495
3572
|
{
|
|
3496
3573
|
type: "number",
|
|
3497
3574
|
label: t("similarityThresholdLabel"),
|
|
@@ -3539,7 +3616,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3539
3616
|
};
|
|
3540
3617
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3541
3618
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3542
|
-
|
|
3619
|
+
chunkHSANA5YY_js.FormTextarea,
|
|
3543
3620
|
{
|
|
3544
3621
|
label: t("outputTemplateLabel"),
|
|
3545
3622
|
hint: t("outputTemplateHelp"),
|
|
@@ -3554,7 +3631,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3554
3631
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("outputVariablesLabel") }),
|
|
3555
3632
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
3556
3633
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3557
|
-
|
|
3634
|
+
chunkHSANA5YY_js.FormInput,
|
|
3558
3635
|
{
|
|
3559
3636
|
type: "text",
|
|
3560
3637
|
value: newVariable,
|
|
@@ -3565,7 +3642,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3565
3642
|
}
|
|
3566
3643
|
),
|
|
3567
3644
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3568
|
-
|
|
3645
|
+
chunkHSANA5YY_js.Button,
|
|
3569
3646
|
{
|
|
3570
3647
|
type: "button",
|
|
3571
3648
|
onClick: handleAddVariable,
|
|
@@ -3580,7 +3657,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
3580
3657
|
children: [
|
|
3581
3658
|
variable,
|
|
3582
3659
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3583
|
-
|
|
3660
|
+
chunkHSANA5YY_js.IconButton,
|
|
3584
3661
|
{
|
|
3585
3662
|
onClick: () => handleRemoveVariable(variable),
|
|
3586
3663
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-3 w-3" }),
|
|
@@ -4016,7 +4093,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4016
4093
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("inputVariablesLabel") }),
|
|
4017
4094
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
4018
4095
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4019
|
-
|
|
4096
|
+
chunkHSANA5YY_js.FormInput,
|
|
4020
4097
|
{
|
|
4021
4098
|
type: "text",
|
|
4022
4099
|
value: newVariable,
|
|
@@ -4027,7 +4104,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4027
4104
|
}
|
|
4028
4105
|
),
|
|
4029
4106
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4030
|
-
|
|
4107
|
+
chunkHSANA5YY_js.Button,
|
|
4031
4108
|
{
|
|
4032
4109
|
type: "button",
|
|
4033
4110
|
onClick: handleAddVariable,
|
|
@@ -4035,10 +4112,10 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4035
4112
|
}
|
|
4036
4113
|
)
|
|
4037
4114
|
] }),
|
|
4038
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 space-y-2", children: inputVariables.map((variable, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4115
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 space-y-2", children: inputVariables.map((variable, index) => /* @__PURE__ */ jsxRuntime.jsx(chunkHSANA5YY_js.Card, { className: "border-purple-200/70 dark:border-purple-500/30", children: /* @__PURE__ */ jsxRuntime.jsx(chunkHSANA5YY_js.CardContent, { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4039
4116
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex min-w-6 items-center justify-center rounded-full bg-purple-100 px-1.5 py-0.5 text-[10px] font-semibold text-purple-700 dark:bg-purple-500/20 dark:text-purple-300", children: index + 1 }),
|
|
4040
4117
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4041
|
-
|
|
4118
|
+
chunkHSANA5YY_js.FormInput,
|
|
4042
4119
|
{
|
|
4043
4120
|
type: "text",
|
|
4044
4121
|
value: variable,
|
|
@@ -4048,7 +4125,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4048
4125
|
}
|
|
4049
4126
|
),
|
|
4050
4127
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4051
|
-
|
|
4128
|
+
chunkHSANA5YY_js.IconButton,
|
|
4052
4129
|
{
|
|
4053
4130
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-3 w-3" }),
|
|
4054
4131
|
label: `Remove ${variable || index + 1}`,
|
|
@@ -4060,7 +4137,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4060
4137
|
] }) }) }, `${index}-${variable}`)) })
|
|
4061
4138
|
] }),
|
|
4062
4139
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4063
|
-
|
|
4140
|
+
chunkHSANA5YY_js.FormInput,
|
|
4064
4141
|
{
|
|
4065
4142
|
type: "text",
|
|
4066
4143
|
label: t("outputVariableLabel"),
|
|
@@ -4070,7 +4147,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4070
4147
|
}
|
|
4071
4148
|
),
|
|
4072
4149
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4073
|
-
|
|
4150
|
+
chunkHSANA5YY_js.FormSelect,
|
|
4074
4151
|
{
|
|
4075
4152
|
label: t("aggregationModeLabel"),
|
|
4076
4153
|
value: aggregationMode,
|
|
@@ -4103,7 +4180,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4103
4180
|
};
|
|
4104
4181
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4105
4182
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4106
|
-
|
|
4183
|
+
chunkHSANA5YY_js.FormSelect,
|
|
4107
4184
|
{
|
|
4108
4185
|
label: t("extractionModeLabel"),
|
|
4109
4186
|
value: extractionMode,
|
|
@@ -4112,7 +4189,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4112
4189
|
}
|
|
4113
4190
|
),
|
|
4114
4191
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4115
|
-
|
|
4192
|
+
chunkHSANA5YY_js.FormInput,
|
|
4116
4193
|
{
|
|
4117
4194
|
type: "text",
|
|
4118
4195
|
label: t("outputVariableLabel"),
|
|
@@ -4289,7 +4366,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4289
4366
|
};
|
|
4290
4367
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4291
4368
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4292
|
-
|
|
4369
|
+
chunkHSANA5YY_js.FormInput,
|
|
4293
4370
|
{
|
|
4294
4371
|
type: "text",
|
|
4295
4372
|
label: t("iteratorVariableLabel"),
|
|
@@ -4299,7 +4376,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4299
4376
|
}
|
|
4300
4377
|
),
|
|
4301
4378
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4302
|
-
|
|
4379
|
+
chunkHSANA5YY_js.FormInput,
|
|
4303
4380
|
{
|
|
4304
4381
|
type: "text",
|
|
4305
4382
|
label: t("itemVariableLabel"),
|
|
@@ -4309,7 +4386,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4309
4386
|
}
|
|
4310
4387
|
),
|
|
4311
4388
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4312
|
-
|
|
4389
|
+
chunkHSANA5YY_js.FormInput,
|
|
4313
4390
|
{
|
|
4314
4391
|
type: "text",
|
|
4315
4392
|
label: t("indexVariableLabel"),
|
|
@@ -4557,6 +4634,328 @@ function EntityNodeConfigForm({ config, entities = [], onSave, onCancel }) {
|
|
|
4557
4634
|
] })
|
|
4558
4635
|
] });
|
|
4559
4636
|
}
|
|
4637
|
+
var COLUMN_TYPE_BADGE_COLORS = {
|
|
4638
|
+
string: "bg-gray-100 text-gray-600 dark:bg-gray-500/20 dark:text-gray-300",
|
|
4639
|
+
varchar: "bg-gray-100 text-gray-600 dark:bg-gray-500/20 dark:text-gray-300",
|
|
4640
|
+
text: "bg-gray-100 text-gray-600 dark:bg-gray-500/20 dark:text-gray-300",
|
|
4641
|
+
integer: "bg-blue-100 text-blue-600 dark:bg-blue-500/20 dark:text-blue-300",
|
|
4642
|
+
int: "bg-blue-100 text-blue-600 dark:bg-blue-500/20 dark:text-blue-300",
|
|
4643
|
+
bigint: "bg-blue-100 text-blue-600 dark:bg-blue-500/20 dark:text-blue-300",
|
|
4644
|
+
number: "bg-blue-100 text-blue-600 dark:bg-blue-500/20 dark:text-blue-300",
|
|
4645
|
+
decimal: "bg-blue-100 text-blue-600 dark:bg-blue-500/20 dark:text-blue-300",
|
|
4646
|
+
float: "bg-blue-100 text-blue-600 dark:bg-blue-500/20 dark:text-blue-300",
|
|
4647
|
+
boolean: "bg-green-100 text-green-600 dark:bg-green-500/20 dark:text-green-300",
|
|
4648
|
+
date: "bg-amber-100 text-amber-600 dark:bg-amber-500/20 dark:text-amber-300",
|
|
4649
|
+
timestamp: "bg-amber-100 text-amber-600 dark:bg-amber-500/20 dark:text-amber-300",
|
|
4650
|
+
datetime: "bg-amber-100 text-amber-600 dark:bg-amber-500/20 dark:text-amber-300",
|
|
4651
|
+
json: "bg-purple-100 text-purple-600 dark:bg-purple-500/20 dark:text-purple-300",
|
|
4652
|
+
jsonb: "bg-purple-100 text-purple-600 dark:bg-purple-500/20 dark:text-purple-300",
|
|
4653
|
+
uuid: "bg-teal-100 text-teal-600 dark:bg-teal-500/20 dark:text-teal-300"
|
|
4654
|
+
};
|
|
4655
|
+
function DatasourceNodeConfigForm({
|
|
4656
|
+
nodeId,
|
|
4657
|
+
config,
|
|
4658
|
+
onSave,
|
|
4659
|
+
onCancel,
|
|
4660
|
+
datasources,
|
|
4661
|
+
onLoadTables,
|
|
4662
|
+
onLoadSchema
|
|
4663
|
+
}) {
|
|
4664
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.datasourceNodeConfig");
|
|
4665
|
+
const [selectedDatasourceId, setSelectedDatasourceId] = react.useState(config.datasourceId ?? "");
|
|
4666
|
+
const [selectedTable, setSelectedTable] = react.useState(config.table ?? "");
|
|
4667
|
+
const [availableTables, setAvailableTables] = react.useState([]);
|
|
4668
|
+
const [availableColumns, setAvailableColumns] = react.useState([]);
|
|
4669
|
+
const [selectedColumns, setSelectedColumns] = react.useState([...config.selectedColumns]);
|
|
4670
|
+
const [outputVariable, setOutputVariable] = react.useState(config.outputVariable);
|
|
4671
|
+
const [limit, setLimit] = react.useState(config.limit);
|
|
4672
|
+
const [filterVariables, setFilterVariables] = react.useState({ ...config.filterVariables });
|
|
4673
|
+
const allColumnNames = availableColumns.map((column) => column.name);
|
|
4674
|
+
const allSelected = selectedColumns.length > 0 && selectedColumns.length === allColumnNames.length;
|
|
4675
|
+
const selectedDatasource = datasources.find((datasource) => datasource.id === selectedDatasourceId);
|
|
4676
|
+
const loadTables = react.useCallback(async (datasourceId) => {
|
|
4677
|
+
if (!datasourceId) {
|
|
4678
|
+
setAvailableTables([]);
|
|
4679
|
+
return;
|
|
4680
|
+
}
|
|
4681
|
+
const tables = await onLoadTables(datasourceId);
|
|
4682
|
+
setAvailableTables(tables);
|
|
4683
|
+
}, [onLoadTables]);
|
|
4684
|
+
const loadSchema = react.useCallback(async (datasourceId, table) => {
|
|
4685
|
+
if (!datasourceId || !table) {
|
|
4686
|
+
setAvailableColumns([]);
|
|
4687
|
+
return;
|
|
4688
|
+
}
|
|
4689
|
+
const columns = await onLoadSchema(datasourceId, table);
|
|
4690
|
+
setAvailableColumns(columns);
|
|
4691
|
+
}, [onLoadSchema]);
|
|
4692
|
+
react.useEffect(() => {
|
|
4693
|
+
if (selectedDatasourceId) {
|
|
4694
|
+
loadTables(selectedDatasourceId);
|
|
4695
|
+
}
|
|
4696
|
+
}, [selectedDatasourceId, loadTables]);
|
|
4697
|
+
react.useEffect(() => {
|
|
4698
|
+
if (selectedDatasourceId && selectedTable) {
|
|
4699
|
+
loadSchema(selectedDatasourceId, selectedTable);
|
|
4700
|
+
}
|
|
4701
|
+
}, [selectedDatasourceId, selectedTable, loadSchema]);
|
|
4702
|
+
const handleDatasourceChange = (datasourceId) => {
|
|
4703
|
+
setSelectedDatasourceId(datasourceId);
|
|
4704
|
+
setSelectedTable("");
|
|
4705
|
+
setAvailableTables([]);
|
|
4706
|
+
setAvailableColumns([]);
|
|
4707
|
+
setSelectedColumns([]);
|
|
4708
|
+
setFilterVariables({});
|
|
4709
|
+
};
|
|
4710
|
+
const handleTableChange = (table) => {
|
|
4711
|
+
setSelectedTable(table);
|
|
4712
|
+
setAvailableColumns([]);
|
|
4713
|
+
setSelectedColumns([]);
|
|
4714
|
+
setFilterVariables({});
|
|
4715
|
+
};
|
|
4716
|
+
const handleToggleSelectAll = () => {
|
|
4717
|
+
if (allSelected) {
|
|
4718
|
+
setSelectedColumns([]);
|
|
4719
|
+
} else {
|
|
4720
|
+
setSelectedColumns([...allColumnNames]);
|
|
4721
|
+
}
|
|
4722
|
+
};
|
|
4723
|
+
const handleToggleColumn = (columnName) => {
|
|
4724
|
+
setSelectedColumns(
|
|
4725
|
+
(previous) => previous.includes(columnName) ? previous.filter((name) => name !== columnName) : [...previous, columnName]
|
|
4726
|
+
);
|
|
4727
|
+
};
|
|
4728
|
+
const handleAddFilter = () => {
|
|
4729
|
+
setFilterVariables((previous) => ({ ...previous, "": "" }));
|
|
4730
|
+
};
|
|
4731
|
+
const handleUpdateFilterVariable = (oldKey, newKey) => {
|
|
4732
|
+
setFilterVariables((previous) => {
|
|
4733
|
+
const updated = { ...previous };
|
|
4734
|
+
const value = updated[oldKey] ?? "";
|
|
4735
|
+
delete updated[oldKey];
|
|
4736
|
+
updated[newKey] = value;
|
|
4737
|
+
return updated;
|
|
4738
|
+
});
|
|
4739
|
+
};
|
|
4740
|
+
const handleUpdateFilterField = (key, newValue) => {
|
|
4741
|
+
setFilterVariables((previous) => ({ ...previous, [key]: newValue }));
|
|
4742
|
+
};
|
|
4743
|
+
const handleRemoveFilter = (key) => {
|
|
4744
|
+
setFilterVariables((previous) => {
|
|
4745
|
+
const updated = { ...previous };
|
|
4746
|
+
delete updated[key];
|
|
4747
|
+
return updated;
|
|
4748
|
+
});
|
|
4749
|
+
};
|
|
4750
|
+
const handleSave = () => {
|
|
4751
|
+
const cleanedFilters = {};
|
|
4752
|
+
for (const [key, value] of Object.entries(filterVariables)) {
|
|
4753
|
+
if (key.trim() && value.trim()) {
|
|
4754
|
+
cleanedFilters[key.trim()] = value.trim();
|
|
4755
|
+
}
|
|
4756
|
+
}
|
|
4757
|
+
onSave({
|
|
4758
|
+
...config,
|
|
4759
|
+
datasourceId: selectedDatasourceId,
|
|
4760
|
+
dialect: selectedDatasource?.dialect ?? "",
|
|
4761
|
+
table: selectedTable,
|
|
4762
|
+
selectedColumns,
|
|
4763
|
+
outputVariable: outputVariable.trim(),
|
|
4764
|
+
limit,
|
|
4765
|
+
filterVariables: cleanedFilters
|
|
4766
|
+
});
|
|
4767
|
+
};
|
|
4768
|
+
const filterEntries = Object.entries(filterVariables);
|
|
4769
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
4770
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4771
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("datasourceLabel") }),
|
|
4772
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-gray-500 dark:text-gray-400", children: t("datasourceHelp") }),
|
|
4773
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4774
|
+
"select",
|
|
4775
|
+
{
|
|
4776
|
+
value: selectedDatasourceId,
|
|
4777
|
+
onChange: (event) => handleDatasourceChange(event.target.value),
|
|
4778
|
+
className: "w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-400/20 dark:border-gray-600 dark:bg-gray-800 dark:text-white",
|
|
4779
|
+
children: [
|
|
4780
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("selectDatasource") }),
|
|
4781
|
+
datasources.map((datasource) => /* @__PURE__ */ jsxRuntime.jsxs("option", { value: datasource.id, children: [
|
|
4782
|
+
datasource.name,
|
|
4783
|
+
" (",
|
|
4784
|
+
datasource.dialect,
|
|
4785
|
+
")"
|
|
4786
|
+
] }, datasource.id))
|
|
4787
|
+
]
|
|
4788
|
+
}
|
|
4789
|
+
),
|
|
4790
|
+
selectedDatasource && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300", children: selectedDatasource.dialect }) })
|
|
4791
|
+
] }),
|
|
4792
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4793
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("tableLabel") }),
|
|
4794
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-gray-500 dark:text-gray-400", children: t("tableHelp") }),
|
|
4795
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4796
|
+
"select",
|
|
4797
|
+
{
|
|
4798
|
+
value: selectedTable,
|
|
4799
|
+
onChange: (event) => handleTableChange(event.target.value),
|
|
4800
|
+
disabled: !selectedDatasourceId,
|
|
4801
|
+
className: "w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-400/20 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-white",
|
|
4802
|
+
children: [
|
|
4803
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("selectTable") }),
|
|
4804
|
+
availableTables.map((table) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: table, children: table }, table))
|
|
4805
|
+
]
|
|
4806
|
+
}
|
|
4807
|
+
)
|
|
4808
|
+
] }),
|
|
4809
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4810
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("outputVariableLabel") }),
|
|
4811
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-gray-500 dark:text-gray-400", children: t("outputVariableHelp") }),
|
|
4812
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4813
|
+
"input",
|
|
4814
|
+
{
|
|
4815
|
+
type: "text",
|
|
4816
|
+
value: outputVariable,
|
|
4817
|
+
onChange: (event) => setOutputVariable(event.target.value),
|
|
4818
|
+
placeholder: "datasourceResult",
|
|
4819
|
+
className: "w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 placeholder-gray-400 outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-400/20 dark:border-gray-600 dark:bg-gray-800 dark:text-white dark:placeholder-gray-500"
|
|
4820
|
+
}
|
|
4821
|
+
)
|
|
4822
|
+
] }),
|
|
4823
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4824
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("limitLabel") }),
|
|
4825
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-gray-500 dark:text-gray-400", children: t("limitHelp") }),
|
|
4826
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4827
|
+
"input",
|
|
4828
|
+
{
|
|
4829
|
+
type: "number",
|
|
4830
|
+
value: limit,
|
|
4831
|
+
onChange: (event) => setLimit(Math.max(1, Number.parseInt(event.target.value, 10) || 1)),
|
|
4832
|
+
min: 1,
|
|
4833
|
+
max: 1e4,
|
|
4834
|
+
className: "w-32 rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-400/20 dark:border-gray-600 dark:bg-gray-800 dark:text-white"
|
|
4835
|
+
}
|
|
4836
|
+
)
|
|
4837
|
+
] }),
|
|
4838
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4839
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
4840
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("columnsLabel") }),
|
|
4841
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4842
|
+
"button",
|
|
4843
|
+
{
|
|
4844
|
+
type: "button",
|
|
4845
|
+
onClick: handleToggleSelectAll,
|
|
4846
|
+
disabled: availableColumns.length === 0,
|
|
4847
|
+
className: "text-xs font-medium text-indigo-600 hover:text-indigo-700 disabled:cursor-not-allowed disabled:opacity-50 dark:text-indigo-400 dark:hover:text-indigo-300",
|
|
4848
|
+
children: allSelected ? t("deselectAll") : t("selectAll")
|
|
4849
|
+
}
|
|
4850
|
+
)
|
|
4851
|
+
] }),
|
|
4852
|
+
selectedColumns.length === 0 && availableColumns.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-amber-600 dark:text-amber-400", children: t("noColumnsSelected") }),
|
|
4853
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-h-48 space-y-1 overflow-y-auto rounded-lg border border-gray-200 p-2 dark:border-gray-700", children: [
|
|
4854
|
+
availableColumns.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-2 py-2 text-xs text-gray-500 dark:text-gray-400", children: t("noColumnsAvailable") }),
|
|
4855
|
+
availableColumns.map((column) => {
|
|
4856
|
+
const isSelected = selectedColumns.includes(column.name);
|
|
4857
|
+
const typeBadgeColor = COLUMN_TYPE_BADGE_COLORS[column.type.toLowerCase()] ?? COLUMN_TYPE_BADGE_COLORS.string;
|
|
4858
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4859
|
+
"label",
|
|
4860
|
+
{
|
|
4861
|
+
className: `flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 transition-colors ${isSelected ? "bg-indigo-50 dark:bg-indigo-500/10" : "hover:bg-gray-50 dark:hover:bg-gray-800"}`,
|
|
4862
|
+
children: [
|
|
4863
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4864
|
+
"input",
|
|
4865
|
+
{
|
|
4866
|
+
type: "checkbox",
|
|
4867
|
+
checked: isSelected,
|
|
4868
|
+
onChange: () => handleToggleColumn(column.name),
|
|
4869
|
+
className: "h-3.5 w-3.5 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500 dark:border-gray-600"
|
|
4870
|
+
}
|
|
4871
|
+
),
|
|
4872
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex-1 text-xs font-medium text-gray-900 dark:text-white", children: [
|
|
4873
|
+
column.name,
|
|
4874
|
+
column.nullable && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 text-[9px] text-gray-400 dark:text-gray-500", children: "?" })
|
|
4875
|
+
] }),
|
|
4876
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `rounded-full px-1.5 py-0.5 text-[9px] font-medium ${typeBadgeColor}`, children: column.type })
|
|
4877
|
+
]
|
|
4878
|
+
},
|
|
4879
|
+
column.name
|
|
4880
|
+
);
|
|
4881
|
+
})
|
|
4882
|
+
] })
|
|
4883
|
+
] }),
|
|
4884
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4885
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
4886
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("filtersLabel") }),
|
|
4887
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4888
|
+
"button",
|
|
4889
|
+
{
|
|
4890
|
+
type: "button",
|
|
4891
|
+
onClick: handleAddFilter,
|
|
4892
|
+
className: "flex items-center gap-1 text-xs font-medium text-indigo-600 hover:text-indigo-700 dark:text-indigo-400 dark:hover:text-indigo-300",
|
|
4893
|
+
children: [
|
|
4894
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-3 w-3" }),
|
|
4895
|
+
t("addFilter")
|
|
4896
|
+
]
|
|
4897
|
+
}
|
|
4898
|
+
)
|
|
4899
|
+
] }),
|
|
4900
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-gray-500 dark:text-gray-400", children: t("filtersHelp") }),
|
|
4901
|
+
filterEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: filterEntries.map(([variableName, columnName], index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4902
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4903
|
+
"select",
|
|
4904
|
+
{
|
|
4905
|
+
value: columnName,
|
|
4906
|
+
onChange: (event) => handleUpdateFilterField(variableName, event.target.value),
|
|
4907
|
+
className: "flex-1 rounded-lg border border-gray-300 bg-white px-2 py-1.5 text-xs text-gray-900 outline-none focus:border-indigo-400 focus:ring-1 focus:ring-indigo-400/20 dark:border-gray-600 dark:bg-gray-800 dark:text-white",
|
|
4908
|
+
children: [
|
|
4909
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("columnName") }),
|
|
4910
|
+
availableColumns.map((column) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: column.name, children: column.name }, column.name))
|
|
4911
|
+
]
|
|
4912
|
+
}
|
|
4913
|
+
),
|
|
4914
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-gray-400", children: "=" }),
|
|
4915
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4916
|
+
"input",
|
|
4917
|
+
{
|
|
4918
|
+
type: "text",
|
|
4919
|
+
value: variableName,
|
|
4920
|
+
onChange: (event) => handleUpdateFilterVariable(variableName, event.target.value),
|
|
4921
|
+
placeholder: t("variableReference"),
|
|
4922
|
+
className: "flex-1 rounded-lg border border-gray-300 bg-white px-2 py-1.5 text-xs text-gray-900 placeholder-gray-400 outline-none focus:border-indigo-400 focus:ring-1 focus:ring-indigo-400/20 dark:border-gray-600 dark:bg-gray-800 dark:text-white dark:placeholder-gray-500"
|
|
4923
|
+
}
|
|
4924
|
+
),
|
|
4925
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4926
|
+
"button",
|
|
4927
|
+
{
|
|
4928
|
+
type: "button",
|
|
4929
|
+
onClick: () => handleRemoveFilter(variableName),
|
|
4930
|
+
className: "rounded-md p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20",
|
|
4931
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-3.5 w-3.5" })
|
|
4932
|
+
}
|
|
4933
|
+
)
|
|
4934
|
+
] }, index)) })
|
|
4935
|
+
] }),
|
|
4936
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", children: [
|
|
4937
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4938
|
+
"button",
|
|
4939
|
+
{
|
|
4940
|
+
type: "button",
|
|
4941
|
+
onClick: onCancel,
|
|
4942
|
+
className: "rounded-lg border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800",
|
|
4943
|
+
children: t("cancel")
|
|
4944
|
+
}
|
|
4945
|
+
),
|
|
4946
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4947
|
+
"button",
|
|
4948
|
+
{
|
|
4949
|
+
type: "button",
|
|
4950
|
+
onClick: handleSave,
|
|
4951
|
+
disabled: !selectedDatasourceId || !selectedTable || selectedColumns.length === 0,
|
|
4952
|
+
className: "rounded-lg bg-indigo-600 px-4 py-2 text-sm font-medium text-white hover:bg-indigo-700 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-indigo-500 dark:hover:bg-indigo-600",
|
|
4953
|
+
children: t("save")
|
|
4954
|
+
}
|
|
4955
|
+
)
|
|
4956
|
+
] })
|
|
4957
|
+
] });
|
|
4958
|
+
}
|
|
4560
4959
|
var GROUP_COLOR_OPTIONS = [
|
|
4561
4960
|
{ value: "indigo", ring: "ring-indigo-500", fill: "bg-indigo-500" },
|
|
4562
4961
|
{ value: "teal", ring: "ring-teal-500", fill: "bg-teal-500" },
|
|
@@ -4581,7 +4980,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4581
4980
|
};
|
|
4582
4981
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4583
4982
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4584
|
-
|
|
4983
|
+
chunkHSANA5YY_js.FormInput,
|
|
4585
4984
|
{
|
|
4586
4985
|
type: "text",
|
|
4587
4986
|
label: translations("labelField"),
|
|
@@ -4591,7 +4990,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4591
4990
|
}
|
|
4592
4991
|
),
|
|
4593
4992
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4594
|
-
|
|
4993
|
+
chunkHSANA5YY_js.FormTextarea,
|
|
4595
4994
|
{
|
|
4596
4995
|
label: translations("descriptionField"),
|
|
4597
4996
|
value: description,
|
|
@@ -4643,9 +5042,10 @@ var NODE_TITLE_KEYS = {
|
|
|
4643
5042
|
list_operator: "listOperatorNodeConfig",
|
|
4644
5043
|
iteration_start: "iterationStartNodeConfig",
|
|
4645
5044
|
entity: "entityNodeConfig",
|
|
5045
|
+
datasource: "datasourceNodeConfig",
|
|
4646
5046
|
group: "groupNodeConfig"
|
|
4647
5047
|
};
|
|
4648
|
-
function LogicNodeDrawer({ onSave, entities = [] }) {
|
|
5048
|
+
function LogicNodeDrawer({ onSave, entities = [], datasources = [], onLoadTables, onLoadSchema }) {
|
|
4649
5049
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
4650
5050
|
const activeDrawer = useDrawerStore((s) => s.activeDrawer);
|
|
4651
5051
|
const logicNodeData = useDrawerStore((s) => s.logicNodeData);
|
|
@@ -4697,6 +5097,19 @@ function LogicNodeDrawer({ onSave, entities = [] }) {
|
|
|
4697
5097
|
return /* @__PURE__ */ jsxRuntime.jsx(ListOperatorNodeConfigForm, { config, onSave: handleSave, onCancel: closeDrawer });
|
|
4698
5098
|
case "iteration_start":
|
|
4699
5099
|
return /* @__PURE__ */ jsxRuntime.jsx(IterationStartNodeConfigForm, { config, onSave: handleSave, onCancel: closeDrawer });
|
|
5100
|
+
case "datasource":
|
|
5101
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5102
|
+
DatasourceNodeConfigForm,
|
|
5103
|
+
{
|
|
5104
|
+
nodeId,
|
|
5105
|
+
config,
|
|
5106
|
+
onSave: handleSave,
|
|
5107
|
+
onCancel: closeDrawer,
|
|
5108
|
+
datasources,
|
|
5109
|
+
onLoadTables: onLoadTables ?? (async () => []),
|
|
5110
|
+
onLoadSchema: onLoadSchema ?? (async () => [])
|
|
5111
|
+
}
|
|
5112
|
+
);
|
|
4700
5113
|
case "entity":
|
|
4701
5114
|
return /* @__PURE__ */ jsxRuntime.jsx(EntityNodeConfigForm, { config, entities, onSave: handleSave, onCancel: closeDrawer });
|
|
4702
5115
|
case "group":
|
|
@@ -4764,7 +5177,7 @@ function NodeContextMenu({ position, targetId, onClose, onEdit, onDuplicate, onC
|
|
|
4764
5177
|
}
|
|
4765
5178
|
];
|
|
4766
5179
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4767
|
-
|
|
5180
|
+
chunkHSANA5YY_js.ContextMenu,
|
|
4768
5181
|
{
|
|
4769
5182
|
position,
|
|
4770
5183
|
onClose,
|
|
@@ -4821,7 +5234,7 @@ function PanelContextMenu({ position, onClose, onPaste, onSelectAll, onFitView,
|
|
|
4821
5234
|
}
|
|
4822
5235
|
];
|
|
4823
5236
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4824
|
-
|
|
5237
|
+
chunkHSANA5YY_js.ContextMenu,
|
|
4825
5238
|
{
|
|
4826
5239
|
position,
|
|
4827
5240
|
onClose,
|
|
@@ -4968,7 +5381,7 @@ function SelectionContextMenu({
|
|
|
4968
5381
|
}
|
|
4969
5382
|
];
|
|
4970
5383
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4971
|
-
|
|
5384
|
+
chunkHSANA5YY_js.ContextMenu,
|
|
4972
5385
|
{
|
|
4973
5386
|
position,
|
|
4974
5387
|
onClose,
|
|
@@ -5068,6 +5481,7 @@ var BUILT_IN_NODE_TYPES = {
|
|
|
5068
5481
|
list_operator: ListOperatorFlowNode,
|
|
5069
5482
|
iteration_start: IterationStartFlowNode,
|
|
5070
5483
|
note: NoteFlowNode,
|
|
5484
|
+
datasource: DatasourceFlowNode,
|
|
5071
5485
|
group: GroupFlowNode
|
|
5072
5486
|
};
|
|
5073
5487
|
var ALL_LOGIC_NODE_TYPES = [
|
|
@@ -5092,6 +5506,7 @@ var ALL_LOGIC_NODE_TYPES = [
|
|
|
5092
5506
|
"tool",
|
|
5093
5507
|
"rule",
|
|
5094
5508
|
"entity",
|
|
5509
|
+
"datasource",
|
|
5095
5510
|
"group"
|
|
5096
5511
|
];
|
|
5097
5512
|
function isLogicNodeType(nodeType) {
|
|
@@ -5398,7 +5813,7 @@ function WorkflowCanvasInner({
|
|
|
5398
5813
|
};
|
|
5399
5814
|
}
|
|
5400
5815
|
if (isLogicNodeType(savedNode.type)) {
|
|
5401
|
-
const config = savedNode.data.config ??
|
|
5816
|
+
const config = savedNode.data.config ?? chunkDFR6CMJH_js.createDefaultLogicNodeConfig(savedNode.type);
|
|
5402
5817
|
if (config) {
|
|
5403
5818
|
const baseNode = {
|
|
5404
5819
|
id: savedNode.id,
|
|
@@ -5567,7 +5982,7 @@ function WorkflowCanvasInner({
|
|
|
5567
5982
|
}
|
|
5568
5983
|
storeTakeSnapshot();
|
|
5569
5984
|
const isTB = direction === "TB";
|
|
5570
|
-
const repositionedNodes =
|
|
5985
|
+
const repositionedNodes = chunkDFR6CMJH_js.applyDagreLayout(nodes, edges, direction).map((node) => ({
|
|
5571
5986
|
...node,
|
|
5572
5987
|
sourcePosition: isTB ? react$1.Position.Bottom : react$1.Position.Right,
|
|
5573
5988
|
targetPosition: isTB ? react$1.Position.Top : react$1.Position.Left
|
|
@@ -5696,7 +6111,7 @@ function WorkflowCanvasInner({
|
|
|
5696
6111
|
}, [storePaste]);
|
|
5697
6112
|
const contextMenuAddNote = react.useCallback((flowPosition) => {
|
|
5698
6113
|
storeTakeSnapshot();
|
|
5699
|
-
const noteConfig =
|
|
6114
|
+
const noteConfig = chunkDFR6CMJH_js.createDefaultLogicNodeConfig("note");
|
|
5700
6115
|
const noteNode = {
|
|
5701
6116
|
id: crypto.randomUUID(),
|
|
5702
6117
|
type: "note",
|
|
@@ -6199,7 +6614,7 @@ function WorkflowCanvasInner({
|
|
|
6199
6614
|
};
|
|
6200
6615
|
setNodes((currentNodes) => [...currentNodes, newNode]);
|
|
6201
6616
|
} else if (nodeType === "group") {
|
|
6202
|
-
const groupConfig = configRaw ? JSON.parse(configRaw) :
|
|
6617
|
+
const groupConfig = configRaw ? JSON.parse(configRaw) : chunkDFR6CMJH_js.createDefaultLogicNodeConfig("group");
|
|
6203
6618
|
if (!groupConfig) return;
|
|
6204
6619
|
const newNode = {
|
|
6205
6620
|
id: newNodeId,
|
|
@@ -6216,7 +6631,7 @@ function WorkflowCanvasInner({
|
|
|
6216
6631
|
};
|
|
6217
6632
|
setNodes((currentNodes) => [...currentNodes, newNode]);
|
|
6218
6633
|
} else if (isLogicNodeType(nodeType)) {
|
|
6219
|
-
const config = configRaw ? JSON.parse(configRaw) :
|
|
6634
|
+
const config = configRaw ? JSON.parse(configRaw) : chunkDFR6CMJH_js.createDefaultLogicNodeConfig(nodeType);
|
|
6220
6635
|
if (!config) return;
|
|
6221
6636
|
const newNode = {
|
|
6222
6637
|
id: newNodeId,
|
|
@@ -6333,7 +6748,7 @@ function WorkflowCanvasInner({
|
|
|
6333
6748
|
(edgeId, nodeType, position) => {
|
|
6334
6749
|
if (!isLogicNodeType(nodeType)) return;
|
|
6335
6750
|
storeTakeSnapshot();
|
|
6336
|
-
const config =
|
|
6751
|
+
const config = chunkDFR6CMJH_js.createDefaultLogicNodeConfig(nodeType);
|
|
6337
6752
|
if (!config) return;
|
|
6338
6753
|
const newNodeId = crypto.randomUUID();
|
|
6339
6754
|
const newNode = {
|
|
@@ -6809,5 +7224,5 @@ exports.useDrawerStore = useDrawerStore;
|
|
|
6809
7224
|
exports.useWorkflowBuilderClient = useWorkflowBuilderClient;
|
|
6810
7225
|
exports.useWorkflowBuilderClientOptional = useWorkflowBuilderClientOptional;
|
|
6811
7226
|
exports.useWorkflowStore = useWorkflowStore;
|
|
6812
|
-
//# sourceMappingURL=chunk-
|
|
6813
|
-
//# sourceMappingURL=chunk-
|
|
7227
|
+
//# sourceMappingURL=chunk-6AA5OM4H.js.map
|
|
7228
|
+
//# sourceMappingURL=chunk-6AA5OM4H.js.map
|