@datatechsolutions/ui 2.7.119 → 2.7.121

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.
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkYRY7HFKG_js = require('./chunk-YRY7HFKG.js');
4
+ var chunkDOOTVMMR_js = require('./chunk-DOOTVMMR.js');
5
5
  var chunkNJ6PBGQM_js = require('./chunk-NJ6PBGQM.js');
6
6
  var chunkF4FMGGHO_js = require('./chunk-F4FMGGHO.js');
7
7
  var react = require('react');
@@ -1405,6 +1405,99 @@ var AgentFlowNode = react.memo(function AgentFlowNode2({ id, data, selected }) {
1405
1405
  /* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "rule-out", style: { top: "75%" }, colorClass: "!bg-violet-500" })
1406
1406
  ] });
1407
1407
  });
1408
+ var CATEGORY_ICONS = {
1409
+ search: "from-sky-400 to-blue-500",
1410
+ code: "from-cyan-400 to-sky-500",
1411
+ file: "from-violet-400 to-purple-500",
1412
+ web: "from-orange-400 to-amber-500",
1413
+ math: "from-emerald-400 to-green-500",
1414
+ custom: "from-amber-400 to-orange-500"
1415
+ };
1416
+ var CATEGORY_PILL = {
1417
+ search: "bg-sky-100 text-sky-700 dark:bg-sky-500/20 dark:text-sky-300",
1418
+ code: "bg-cyan-100 text-cyan-700 dark:bg-cyan-500/20 dark:text-cyan-300",
1419
+ file: "bg-violet-100 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300",
1420
+ web: "bg-orange-100 text-orange-700 dark:bg-orange-500/20 dark:text-orange-300",
1421
+ math: "bg-emerald-100 text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-300",
1422
+ custom: "bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300"
1423
+ };
1424
+ var AgentToolFlowNode = react.memo(function AgentToolFlowNode2({ id, data, selected }) {
1425
+ const t = nextIntl.useTranslations("agents.workflow");
1426
+ const { agentTool, onRemoveFromCanvas } = data;
1427
+ const isCompact = data.displayMode === "compact";
1428
+ if (!agentTool?.name) {
1429
+ const label = data.label;
1430
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1431
+ /* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
1432
+ /* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-amber-400" }),
1433
+ /* @__PURE__ */ jsxRuntime.jsx(NodeCard, { variant: "error", nodeType: "agent_tool", children: /* @__PURE__ */ jsxRuntime.jsx(
1434
+ NodeCardHeader,
1435
+ {
1436
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-5 w-5 text-white" }),
1437
+ title: label || "Agent Tool",
1438
+ description: t("agentToolNotFound"),
1439
+ iconClassName: "flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
1440
+ }
1441
+ ) }),
1442
+ /* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-amber-500" })
1443
+ ] });
1444
+ }
1445
+ const category = agentTool.category ?? "custom";
1446
+ const gradient = CATEGORY_ICONS[category] ?? CATEGORY_ICONS.custom;
1447
+ const pill = CATEGORY_PILL[category] ?? CATEGORY_PILL.custom;
1448
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1449
+ /* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
1450
+ /* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-amber-400" }),
1451
+ /* @__PURE__ */ jsxRuntime.jsxs(NodeCard, { compact: isCompact, selected, nodeType: "agent_tool", width: "w-[280px]", children: [
1452
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between", children: [
1453
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
1454
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br ${gradient} shadow-lg`, children: /* @__PURE__ */ jsxRuntime.jsx(outline.CommandLineIcon, { className: "h-5 w-5 text-white" }) }),
1455
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1456
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: agentTool.name }),
1457
+ !isCompact && agentTool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 truncate text-xs text-gray-500 dark:text-gray-400", children: agentTool.description })
1458
+ ] })
1459
+ ] }),
1460
+ data.onToggle && /* @__PURE__ */ jsxRuntime.jsx(
1461
+ "span",
1462
+ {
1463
+ role: "switch",
1464
+ "aria-checked": agentTool.enabled,
1465
+ className: `nodrag nopan relative inline-flex h-5 w-9 flex-shrink-0 cursor-pointer items-center rounded-full border border-white/50 px-0.5 shadow-[inset_0_1px_0_rgba(255,255,255,0.5)] transition duration-200 dark:border-white/15 ${agentTool.enabled ? "bg-amber-500/90" : "bg-slate-300/80 dark:bg-slate-700/80"}`,
1466
+ onClick: (event) => {
1467
+ event.stopPropagation();
1468
+ data.onToggle(agentTool);
1469
+ },
1470
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: `pointer-events-none inline-block h-4 w-4 transform rounded-full bg-white shadow transition duration-200 ${agentTool.enabled ? "translate-x-4" : "translate-x-0"}` })
1471
+ }
1472
+ )
1473
+ ] }),
1474
+ /* @__PURE__ */ jsxRuntime.jsx(NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
1475
+ /* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: "rounded-full bg-amber-100 px-2 py-0.5 text-[10px] font-semibold text-amber-700 dark:bg-amber-500/20 dark:text-amber-300", children: t("agentToolNode") }),
1476
+ /* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-medium ${pill}`, children: category }),
1477
+ agentTool.parameters && agentTool.parameters.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: [
1478
+ agentTool.parameters.length,
1479
+ " params"
1480
+ ] }),
1481
+ onRemoveFromCanvas && /* @__PURE__ */ jsxRuntime.jsx(
1482
+ "span",
1483
+ {
1484
+ role: "button",
1485
+ tabIndex: 0,
1486
+ onClick: (event) => {
1487
+ event.stopPropagation();
1488
+ event.preventDefault();
1489
+ onRemoveFromCanvas(id);
1490
+ },
1491
+ className: "nodrag nopan ml-auto cursor-pointer rounded-lg p-1 opacity-0 transition hover:bg-red-50 group-hover:opacity-100 dark:hover:bg-red-900/20",
1492
+ "aria-label": t("removeFromCanvas"),
1493
+ children: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-3.5 w-3.5 text-red-600 dark:text-red-400" })
1494
+ }
1495
+ )
1496
+ ] }) })
1497
+ ] }),
1498
+ /* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-amber-500" })
1499
+ ] });
1500
+ });
1408
1501
  var ToolFlowNode = react.memo(function ToolFlowNode2({ id, data, selected }) {
1409
1502
  const t = nextIntl.useTranslations("admin.tools");
1410
1503
  const { tool, onRemoveFromCanvas } = data;
@@ -2730,7 +2823,7 @@ function WorkspaceDrawer({
2730
2823
  children
2731
2824
  }) {
2732
2825
  return /* @__PURE__ */ jsxRuntime.jsx(
2733
- chunkYRY7HFKG_js.EntityDrawer,
2826
+ chunkDOOTVMMR_js.EntityDrawer,
2734
2827
  {
2735
2828
  open,
2736
2829
  onClose,
@@ -2773,7 +2866,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
2773
2866
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-gray-500 dark:text-gray-400", children: t("inputVariablesHelp") }),
2774
2867
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
2775
2868
  /* @__PURE__ */ jsxRuntime.jsx(
2776
- chunkYRY7HFKG_js.Input,
2869
+ chunkDOOTVMMR_js.Input,
2777
2870
  {
2778
2871
  value: newVariable,
2779
2872
  onChange: (event) => setNewVariable(event.target.value),
@@ -2783,7 +2876,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
2783
2876
  }
2784
2877
  ),
2785
2878
  /* @__PURE__ */ jsxRuntime.jsx(
2786
- chunkYRY7HFKG_js.Button,
2879
+ chunkDOOTVMMR_js.Button,
2787
2880
  {
2788
2881
  type: "button",
2789
2882
  onClick: handleAddVariable,
@@ -2800,7 +2893,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
2800
2893
  children: [
2801
2894
  variable,
2802
2895
  /* @__PURE__ */ jsxRuntime.jsx(
2803
- chunkYRY7HFKG_js.IconButton,
2896
+ chunkDOOTVMMR_js.IconButton,
2804
2897
  {
2805
2898
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-3 w-3" }),
2806
2899
  label: `Remove ${variable}`,
@@ -2817,7 +2910,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
2817
2910
  ] }),
2818
2911
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", children: [
2819
2912
  /* @__PURE__ */ jsxRuntime.jsx(
2820
- chunkYRY7HFKG_js.Button,
2913
+ chunkDOOTVMMR_js.Button,
2821
2914
  {
2822
2915
  type: "button",
2823
2916
  onClick: onCancel,
@@ -2827,7 +2920,7 @@ function StartNodeConfigForm({ config, onSave, onCancel }) {
2827
2920
  }
2828
2921
  ),
2829
2922
  /* @__PURE__ */ jsxRuntime.jsx(
2830
- chunkYRY7HFKG_js.Button,
2923
+ chunkDOOTVMMR_js.Button,
2831
2924
  {
2832
2925
  type: "button",
2833
2926
  onClick: handleSave,
@@ -2939,8 +3032,8 @@ function ConfigFormActions({
2939
3032
  saveDisabled = false
2940
3033
  }) {
2941
3034
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", children: [
2942
- /* @__PURE__ */ jsxRuntime.jsx(chunkYRY7HFKG_js.Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
2943
- /* @__PURE__ */ jsxRuntime.jsx(chunkYRY7HFKG_js.Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
3035
+ /* @__PURE__ */ jsxRuntime.jsx(chunkDOOTVMMR_js.Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
3036
+ /* @__PURE__ */ jsxRuntime.jsx(chunkDOOTVMMR_js.Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
2944
3037
  ] });
2945
3038
  }
2946
3039
  var OPERATOR_OPTIONS = [
@@ -2989,7 +3082,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
2989
3082
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-center justify-between", children: [
2990
3083
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("conditionsLabel") }),
2991
3084
  /* @__PURE__ */ jsxRuntime.jsx(
2992
- chunkYRY7HFKG_js.Button,
3085
+ chunkDOOTVMMR_js.Button,
2993
3086
  {
2994
3087
  type: "button",
2995
3088
  onClick: handleAddCondition,
@@ -3000,7 +3093,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
3000
3093
  /* @__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: [
3001
3094
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid flex-1 grid-cols-3 gap-2", children: [
3002
3095
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
3003
- chunkYRY7HFKG_js.FormInput,
3096
+ chunkDOOTVMMR_js.FormInput,
3004
3097
  {
3005
3098
  type: "text",
3006
3099
  label: t("variableLabel"),
@@ -3011,7 +3104,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
3011
3104
  }
3012
3105
  ) }),
3013
3106
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
3014
- chunkYRY7HFKG_js.FormSelect,
3107
+ chunkDOOTVMMR_js.FormSelect,
3015
3108
  {
3016
3109
  label: t("operatorLabel"),
3017
3110
  value: condition.operator,
@@ -3021,7 +3114,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
3021
3114
  }
3022
3115
  ) }),
3023
3116
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
3024
- chunkYRY7HFKG_js.FormInput,
3117
+ chunkDOOTVMMR_js.FormInput,
3025
3118
  {
3026
3119
  type: "text",
3027
3120
  label: t("valueLabel"),
@@ -3033,7 +3126,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
3033
3126
  ) })
3034
3127
  ] }),
3035
3128
  conditions.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
3036
- chunkYRY7HFKG_js.IconButton,
3129
+ chunkDOOTVMMR_js.IconButton,
3037
3130
  {
3038
3131
  onClick: () => handleRemoveCondition(index),
3039
3132
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
@@ -3188,7 +3281,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
3188
3281
  };
3189
3282
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3190
3283
  /* @__PURE__ */ jsxRuntime.jsx(
3191
- chunkYRY7HFKG_js.FormSelect,
3284
+ chunkDOOTVMMR_js.FormSelect,
3192
3285
  {
3193
3286
  label: t("methodLabel"),
3194
3287
  value: method,
@@ -3197,7 +3290,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
3197
3290
  }
3198
3291
  ),
3199
3292
  /* @__PURE__ */ jsxRuntime.jsx(
3200
- chunkYRY7HFKG_js.FormInput,
3293
+ chunkDOOTVMMR_js.FormInput,
3201
3294
  {
3202
3295
  type: "text",
3203
3296
  label: t("urlLabel"),
@@ -3210,7 +3303,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
3210
3303
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
3211
3304
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("headersLabel") }),
3212
3305
  /* @__PURE__ */ jsxRuntime.jsx(
3213
- chunkYRY7HFKG_js.Button,
3306
+ chunkDOOTVMMR_js.Button,
3214
3307
  {
3215
3308
  type: "button",
3216
3309
  onClick: handleAddHeader,
@@ -3220,7 +3313,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
3220
3313
  ] }),
3221
3314
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: headerEntries.map((entry, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3222
3315
  /* @__PURE__ */ jsxRuntime.jsx(
3223
- chunkYRY7HFKG_js.FormInput,
3316
+ chunkDOOTVMMR_js.FormInput,
3224
3317
  {
3225
3318
  type: "text",
3226
3319
  value: entry.key,
@@ -3230,7 +3323,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
3230
3323
  }
3231
3324
  ),
3232
3325
  /* @__PURE__ */ jsxRuntime.jsx(
3233
- chunkYRY7HFKG_js.FormInput,
3326
+ chunkDOOTVMMR_js.FormInput,
3234
3327
  {
3235
3328
  type: "text",
3236
3329
  value: entry.value,
@@ -3240,7 +3333,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
3240
3333
  }
3241
3334
  ),
3242
3335
  /* @__PURE__ */ jsxRuntime.jsx(
3243
- chunkYRY7HFKG_js.IconButton,
3336
+ chunkDOOTVMMR_js.IconButton,
3244
3337
  {
3245
3338
  onClick: () => handleRemoveHeader(index),
3246
3339
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
@@ -3252,7 +3345,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
3252
3345
  ] }, index)) })
3253
3346
  ] }),
3254
3347
  method !== "GET" && /* @__PURE__ */ jsxRuntime.jsx(
3255
- chunkYRY7HFKG_js.FormTextarea,
3348
+ chunkDOOTVMMR_js.FormTextarea,
3256
3349
  {
3257
3350
  label: t("bodyLabel"),
3258
3351
  value: body,
@@ -3263,7 +3356,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
3263
3356
  }
3264
3357
  ),
3265
3358
  /* @__PURE__ */ jsxRuntime.jsx(
3266
- chunkYRY7HFKG_js.FormInput,
3359
+ chunkDOOTVMMR_js.FormInput,
3267
3360
  {
3268
3361
  type: "number",
3269
3362
  label: t("timeoutLabel"),
@@ -3294,7 +3387,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
3294
3387
  };
3295
3388
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3296
3389
  /* @__PURE__ */ jsxRuntime.jsx(
3297
- chunkYRY7HFKG_js.FormTextarea,
3390
+ chunkDOOTVMMR_js.FormTextarea,
3298
3391
  {
3299
3392
  label: t("templateLabel"),
3300
3393
  value: template,
@@ -3305,7 +3398,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
3305
3398
  }
3306
3399
  ),
3307
3400
  /* @__PURE__ */ jsxRuntime.jsx(
3308
- chunkYRY7HFKG_js.FormInput,
3401
+ chunkDOOTVMMR_js.FormInput,
3309
3402
  {
3310
3403
  type: "text",
3311
3404
  label: t("outputVariableLabel"),
@@ -3334,7 +3427,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
3334
3427
  };
3335
3428
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3336
3429
  /* @__PURE__ */ jsxRuntime.jsx(
3337
- chunkYRY7HFKG_js.FormInput,
3430
+ chunkDOOTVMMR_js.FormInput,
3338
3431
  {
3339
3432
  type: "text",
3340
3433
  label: t("iteratorVariableLabel"),
@@ -3344,7 +3437,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
3344
3437
  }
3345
3438
  ),
3346
3439
  /* @__PURE__ */ jsxRuntime.jsx(
3347
- chunkYRY7HFKG_js.FormInput,
3440
+ chunkDOOTVMMR_js.FormInput,
3348
3441
  {
3349
3442
  type: "number",
3350
3443
  label: t("maxIterationsLabel"),
@@ -3375,7 +3468,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
3375
3468
  };
3376
3469
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3377
3470
  /* @__PURE__ */ jsxRuntime.jsx(
3378
- chunkYRY7HFKG_js.FormInput,
3471
+ chunkDOOTVMMR_js.FormInput,
3379
3472
  {
3380
3473
  type: "text",
3381
3474
  label: t("sourceIdLabel"),
@@ -3385,7 +3478,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
3385
3478
  }
3386
3479
  ),
3387
3480
  /* @__PURE__ */ jsxRuntime.jsx(
3388
- chunkYRY7HFKG_js.FormInput,
3481
+ chunkDOOTVMMR_js.FormInput,
3389
3482
  {
3390
3483
  type: "number",
3391
3484
  label: t("topKLabel"),
@@ -3396,7 +3489,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
3396
3489
  }
3397
3490
  ),
3398
3491
  /* @__PURE__ */ jsxRuntime.jsx(
3399
- chunkYRY7HFKG_js.FormInput,
3492
+ chunkDOOTVMMR_js.FormInput,
3400
3493
  {
3401
3494
  type: "number",
3402
3495
  label: t("similarityThresholdLabel"),
@@ -3444,7 +3537,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
3444
3537
  };
3445
3538
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
3446
3539
  /* @__PURE__ */ jsxRuntime.jsx(
3447
- chunkYRY7HFKG_js.FormTextarea,
3540
+ chunkDOOTVMMR_js.FormTextarea,
3448
3541
  {
3449
3542
  label: t("outputTemplateLabel"),
3450
3543
  hint: t("outputTemplateHelp"),
@@ -3459,7 +3552,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
3459
3552
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("outputVariablesLabel") }),
3460
3553
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
3461
3554
  /* @__PURE__ */ jsxRuntime.jsx(
3462
- chunkYRY7HFKG_js.FormInput,
3555
+ chunkDOOTVMMR_js.FormInput,
3463
3556
  {
3464
3557
  type: "text",
3465
3558
  value: newVariable,
@@ -3470,7 +3563,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
3470
3563
  }
3471
3564
  ),
3472
3565
  /* @__PURE__ */ jsxRuntime.jsx(
3473
- chunkYRY7HFKG_js.Button,
3566
+ chunkDOOTVMMR_js.Button,
3474
3567
  {
3475
3568
  type: "button",
3476
3569
  onClick: handleAddVariable,
@@ -3485,7 +3578,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
3485
3578
  children: [
3486
3579
  variable,
3487
3580
  /* @__PURE__ */ jsxRuntime.jsx(
3488
- chunkYRY7HFKG_js.IconButton,
3581
+ chunkDOOTVMMR_js.IconButton,
3489
3582
  {
3490
3583
  onClick: () => handleRemoveVariable(variable),
3491
3584
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-3 w-3" }),
@@ -3921,7 +4014,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
3921
4014
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("inputVariablesLabel") }),
3922
4015
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
3923
4016
  /* @__PURE__ */ jsxRuntime.jsx(
3924
- chunkYRY7HFKG_js.FormInput,
4017
+ chunkDOOTVMMR_js.FormInput,
3925
4018
  {
3926
4019
  type: "text",
3927
4020
  value: newVariable,
@@ -3932,7 +4025,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
3932
4025
  }
3933
4026
  ),
3934
4027
  /* @__PURE__ */ jsxRuntime.jsx(
3935
- chunkYRY7HFKG_js.Button,
4028
+ chunkDOOTVMMR_js.Button,
3936
4029
  {
3937
4030
  type: "button",
3938
4031
  onClick: handleAddVariable,
@@ -3940,10 +4033,10 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
3940
4033
  }
3941
4034
  )
3942
4035
  ] }),
3943
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 space-y-2", children: inputVariables.map((variable, index) => /* @__PURE__ */ jsxRuntime.jsx(chunkYRY7HFKG_js.Card, { className: "border-purple-200/70 dark:border-purple-500/30", children: /* @__PURE__ */ jsxRuntime.jsx(chunkYRY7HFKG_js.CardContent, { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
4036
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 space-y-2", children: inputVariables.map((variable, index) => /* @__PURE__ */ jsxRuntime.jsx(chunkDOOTVMMR_js.Card, { className: "border-purple-200/70 dark:border-purple-500/30", children: /* @__PURE__ */ jsxRuntime.jsx(chunkDOOTVMMR_js.CardContent, { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3944
4037
  /* @__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 }),
3945
4038
  /* @__PURE__ */ jsxRuntime.jsx(
3946
- chunkYRY7HFKG_js.FormInput,
4039
+ chunkDOOTVMMR_js.FormInput,
3947
4040
  {
3948
4041
  type: "text",
3949
4042
  value: variable,
@@ -3953,7 +4046,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
3953
4046
  }
3954
4047
  ),
3955
4048
  /* @__PURE__ */ jsxRuntime.jsx(
3956
- chunkYRY7HFKG_js.IconButton,
4049
+ chunkDOOTVMMR_js.IconButton,
3957
4050
  {
3958
4051
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.XMarkIcon, { className: "h-3 w-3" }),
3959
4052
  label: `Remove ${variable || index + 1}`,
@@ -3965,7 +4058,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
3965
4058
  ] }) }) }, `${index}-${variable}`)) })
3966
4059
  ] }),
3967
4060
  /* @__PURE__ */ jsxRuntime.jsx(
3968
- chunkYRY7HFKG_js.FormInput,
4061
+ chunkDOOTVMMR_js.FormInput,
3969
4062
  {
3970
4063
  type: "text",
3971
4064
  label: t("outputVariableLabel"),
@@ -3975,7 +4068,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
3975
4068
  }
3976
4069
  ),
3977
4070
  /* @__PURE__ */ jsxRuntime.jsx(
3978
- chunkYRY7HFKG_js.FormSelect,
4071
+ chunkDOOTVMMR_js.FormSelect,
3979
4072
  {
3980
4073
  label: t("aggregationModeLabel"),
3981
4074
  value: aggregationMode,
@@ -4008,7 +4101,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
4008
4101
  };
4009
4102
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4010
4103
  /* @__PURE__ */ jsxRuntime.jsx(
4011
- chunkYRY7HFKG_js.FormSelect,
4104
+ chunkDOOTVMMR_js.FormSelect,
4012
4105
  {
4013
4106
  label: t("extractionModeLabel"),
4014
4107
  value: extractionMode,
@@ -4017,7 +4110,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
4017
4110
  }
4018
4111
  ),
4019
4112
  /* @__PURE__ */ jsxRuntime.jsx(
4020
- chunkYRY7HFKG_js.FormInput,
4113
+ chunkDOOTVMMR_js.FormInput,
4021
4114
  {
4022
4115
  type: "text",
4023
4116
  label: t("outputVariableLabel"),
@@ -4194,7 +4287,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
4194
4287
  };
4195
4288
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4196
4289
  /* @__PURE__ */ jsxRuntime.jsx(
4197
- chunkYRY7HFKG_js.FormInput,
4290
+ chunkDOOTVMMR_js.FormInput,
4198
4291
  {
4199
4292
  type: "text",
4200
4293
  label: t("iteratorVariableLabel"),
@@ -4204,7 +4297,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
4204
4297
  }
4205
4298
  ),
4206
4299
  /* @__PURE__ */ jsxRuntime.jsx(
4207
- chunkYRY7HFKG_js.FormInput,
4300
+ chunkDOOTVMMR_js.FormInput,
4208
4301
  {
4209
4302
  type: "text",
4210
4303
  label: t("itemVariableLabel"),
@@ -4214,7 +4307,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
4214
4307
  }
4215
4308
  ),
4216
4309
  /* @__PURE__ */ jsxRuntime.jsx(
4217
- chunkYRY7HFKG_js.FormInput,
4310
+ chunkDOOTVMMR_js.FormInput,
4218
4311
  {
4219
4312
  type: "text",
4220
4313
  label: t("indexVariableLabel"),
@@ -4486,7 +4579,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
4486
4579
  };
4487
4580
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4488
4581
  /* @__PURE__ */ jsxRuntime.jsx(
4489
- chunkYRY7HFKG_js.FormInput,
4582
+ chunkDOOTVMMR_js.FormInput,
4490
4583
  {
4491
4584
  type: "text",
4492
4585
  label: translations("labelField"),
@@ -4496,7 +4589,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
4496
4589
  }
4497
4590
  ),
4498
4591
  /* @__PURE__ */ jsxRuntime.jsx(
4499
- chunkYRY7HFKG_js.FormTextarea,
4592
+ chunkDOOTVMMR_js.FormTextarea,
4500
4593
  {
4501
4594
  label: translations("descriptionField"),
4502
4595
  value: description,
@@ -4669,7 +4762,7 @@ function NodeContextMenu({ position, targetId, onClose, onEdit, onDuplicate, onC
4669
4762
  }
4670
4763
  ];
4671
4764
  return /* @__PURE__ */ jsxRuntime.jsx(
4672
- chunkYRY7HFKG_js.ContextMenu,
4765
+ chunkDOOTVMMR_js.ContextMenu,
4673
4766
  {
4674
4767
  position,
4675
4768
  onClose,
@@ -4726,7 +4819,7 @@ function PanelContextMenu({ position, onClose, onPaste, onSelectAll, onFitView,
4726
4819
  }
4727
4820
  ];
4728
4821
  return /* @__PURE__ */ jsxRuntime.jsx(
4729
- chunkYRY7HFKG_js.ContextMenu,
4822
+ chunkDOOTVMMR_js.ContextMenu,
4730
4823
  {
4731
4824
  position,
4732
4825
  onClose,
@@ -4873,7 +4966,7 @@ function SelectionContextMenu({
4873
4966
  }
4874
4967
  ];
4875
4968
  return /* @__PURE__ */ jsxRuntime.jsx(
4876
- chunkYRY7HFKG_js.ContextMenu,
4969
+ chunkDOOTVMMR_js.ContextMenu,
4877
4970
  {
4878
4971
  position,
4879
4972
  onClose,
@@ -4961,6 +5054,7 @@ var MiniMap = dynamic__default.default(
4961
5054
  );
4962
5055
  var BUILT_IN_NODE_TYPES = {
4963
5056
  agent: AgentFlowNode,
5057
+ agent_tool: AgentToolFlowNode,
4964
5058
  tool: ToolFlowNode,
4965
5059
  rule: RuleFlowNode,
4966
5060
  entity: EntityFlowNode,
@@ -6673,6 +6767,7 @@ function Workspace({
6673
6767
  }
6674
6768
 
6675
6769
  exports.AgentFlowNode = AgentFlowNode;
6770
+ exports.AgentToolFlowNode = AgentToolFlowNode;
6676
6771
  exports.AnswerFlowNode = AnswerFlowNode;
6677
6772
  exports.AnthropicIcon = AnthropicIcon;
6678
6773
  exports.CATEGORY_COLORS = CATEGORY_COLORS;
@@ -6700,11 +6795,7 @@ exports.ListOperatorFlowNode = ListOperatorFlowNode;
6700
6795
  exports.LogicNodeDrawer = LogicNodeDrawer;
6701
6796
  exports.MINIMAP_NODE_COLORS = MINIMAP_NODE_COLORS;
6702
6797
  exports.NodeCard = NodeCard;
6703
- exports.NodeCardBadge = NodeCardBadge;
6704
- exports.NodeCardHeader = NodeCardHeader;
6705
- exports.NodeCardMeta = NodeCardMeta;
6706
6798
  exports.NodeContextMenu = NodeContextMenu;
6707
- exports.NodeRunningIndicator = NodeRunningIndicator;
6708
6799
  exports.NoteFlowNode = NoteFlowNode;
6709
6800
  exports.OpenAIIcon = OpenAIIcon;
6710
6801
  exports.PanelContextMenu = PanelContextMenu;
@@ -6720,7 +6811,6 @@ exports.VariableAggregatorFlowNode = VariableAggregatorFlowNode;
6720
6811
  exports.VariableAssignerFlowNode = VariableAssignerFlowNode;
6721
6812
  exports.WorkflowBuilderProvider = WorkflowBuilderProvider;
6722
6813
  exports.WorkflowCanvas = WorkflowCanvas;
6723
- exports.WorkflowHandle = WorkflowHandle;
6724
6814
  exports.Workspace = Workspace;
6725
6815
  exports.WorkspaceDrawer = WorkspaceDrawer;
6726
6816
  exports.getCompatibleModels = getCompatibleModels;
@@ -6736,5 +6826,5 @@ exports.useDrawerStore = useDrawerStore;
6736
6826
  exports.useWorkflowBuilderClient = useWorkflowBuilderClient;
6737
6827
  exports.useWorkflowBuilderClientOptional = useWorkflowBuilderClientOptional;
6738
6828
  exports.useWorkflowStore = useWorkflowStore;
6739
- //# sourceMappingURL=chunk-DOO5ICHD.js.map
6740
- //# sourceMappingURL=chunk-DOO5ICHD.js.map
6829
+ //# sourceMappingURL=chunk-2QXKMKQK.js.map
6830
+ //# sourceMappingURL=chunk-2QXKMKQK.js.map