@datatechsolutions/ui 2.11.91 → 2.11.93

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.
Files changed (137) hide show
  1. package/dist/astrlabe/contracts.d.mts +14 -3
  2. package/dist/astrlabe/contracts.d.ts +14 -3
  3. package/dist/astrlabe/index.d.mts +9 -3
  4. package/dist/astrlabe/index.d.ts +9 -3
  5. package/dist/astrlabe/index.js +120 -116
  6. package/dist/astrlabe/index.mjs +6 -6
  7. package/dist/astrlabe/utils.d.mts +1 -1
  8. package/dist/astrlabe/utils.d.ts +1 -1
  9. package/dist/astrlabe/utils.js +9 -9
  10. package/dist/astrlabe/utils.mjs +2 -2
  11. package/dist/astrlabe/workflow-canvas.d.mts +1 -1
  12. package/dist/astrlabe/workflow-canvas.d.ts +1 -1
  13. package/dist/astrlabe/workflow-canvas.js +5 -5
  14. package/dist/astrlabe/workflow-canvas.mjs +4 -4
  15. package/dist/{chunk-MLAIUJYC.js → chunk-24QKSC74.js} +6 -6
  16. package/dist/{chunk-MLAIUJYC.js.map → chunk-24QKSC74.js.map} +1 -1
  17. package/dist/{chunk-OQDWU6AE.js → chunk-2RDGJXYZ.js} +67 -67
  18. package/dist/{chunk-OQDWU6AE.js.map → chunk-2RDGJXYZ.js.map} +1 -1
  19. package/dist/{chunk-B5NZVS4A.js → chunk-3Z366CVM.js} +69 -69
  20. package/dist/{chunk-B5NZVS4A.js.map → chunk-3Z366CVM.js.map} +1 -1
  21. package/dist/{chunk-GWRJ5L36.js → chunk-43GCSCQA.js} +12 -12
  22. package/dist/{chunk-GWRJ5L36.js.map → chunk-43GCSCQA.js.map} +1 -1
  23. package/dist/{chunk-U4BTEKZT.mjs → chunk-4TY55HGO.mjs} +3 -3
  24. package/dist/{chunk-U4BTEKZT.mjs.map → chunk-4TY55HGO.mjs.map} +1 -1
  25. package/dist/{chunk-WNCPAWLC.mjs → chunk-5W7L7BT7.mjs} +13 -2
  26. package/dist/chunk-5W7L7BT7.mjs.map +1 -0
  27. package/dist/{chunk-7JFAOHZ3.mjs → chunk-6NAZVG2O.mjs} +4 -4
  28. package/dist/{chunk-7JFAOHZ3.mjs.map → chunk-6NAZVG2O.mjs.map} +1 -1
  29. package/dist/{chunk-J4QUCX27.mjs → chunk-A3BFURJB.mjs} +24 -25
  30. package/dist/chunk-A3BFURJB.mjs.map +1 -0
  31. package/dist/{chunk-L5VEY7G4.js → chunk-ARVLVWUC.js} +7 -5
  32. package/dist/chunk-ARVLVWUC.js.map +1 -0
  33. package/dist/{chunk-BVCS7RBR.js → chunk-BUI7BCUN.js} +33 -33
  34. package/dist/{chunk-BVCS7RBR.js.map → chunk-BUI7BCUN.js.map} +1 -1
  35. package/dist/{chunk-C7BI5LQ6.js → chunk-C3H4FM4A.js} +13 -2
  36. package/dist/chunk-C3H4FM4A.js.map +1 -0
  37. package/dist/{chunk-C7KAF363.js → chunk-DB64YDV2.js} +55 -55
  38. package/dist/{chunk-C7KAF363.js.map → chunk-DB64YDV2.js.map} +1 -1
  39. package/dist/{chunk-WIKMIULO.js → chunk-DIMLLLZR.js} +36 -36
  40. package/dist/{chunk-WIKMIULO.js.map → chunk-DIMLLLZR.js.map} +1 -1
  41. package/dist/{chunk-FDSU7GPS.mjs → chunk-DWFLIXES.mjs} +3 -3
  42. package/dist/{chunk-FDSU7GPS.mjs.map → chunk-DWFLIXES.mjs.map} +1 -1
  43. package/dist/{chunk-Y4DNREFH.js → chunk-FZTOP6EE.js} +190 -132
  44. package/dist/chunk-FZTOP6EE.js.map +1 -0
  45. package/dist/{chunk-URMZJ3WF.mjs → chunk-GMZ3PTNK.mjs} +8 -8
  46. package/dist/{chunk-URMZJ3WF.mjs.map → chunk-GMZ3PTNK.mjs.map} +1 -1
  47. package/dist/{chunk-HPIKJS5B.mjs → chunk-HGN5W56D.mjs} +3 -3
  48. package/dist/{chunk-HPIKJS5B.mjs.map → chunk-HGN5W56D.mjs.map} +1 -1
  49. package/dist/{chunk-CBVRUJ7N.mjs → chunk-HUGHELRM.mjs} +65 -8
  50. package/dist/chunk-HUGHELRM.mjs.map +1 -0
  51. package/dist/{chunk-6OWD54HK.mjs → chunk-LKJZGFM4.mjs} +3 -3
  52. package/dist/{chunk-6OWD54HK.mjs.map → chunk-LKJZGFM4.mjs.map} +1 -1
  53. package/dist/{chunk-AP7OWR6S.js → chunk-MEEFOZC4.js} +4 -4
  54. package/dist/{chunk-AP7OWR6S.js.map → chunk-MEEFOZC4.js.map} +1 -1
  55. package/dist/{chunk-CG3P5Z5U.mjs → chunk-MLAXYDEU.mjs} +3 -3
  56. package/dist/{chunk-CG3P5Z5U.mjs.map → chunk-MLAXYDEU.mjs.map} +1 -1
  57. package/dist/{chunk-YMGJ4FZZ.js → chunk-NA57KK4O.js} +4 -4
  58. package/dist/{chunk-YMGJ4FZZ.js.map → chunk-NA57KK4O.js.map} +1 -1
  59. package/dist/{chunk-5UU3RQRB.js → chunk-NJS2YC3J.js} +15 -2
  60. package/dist/chunk-NJS2YC3J.js.map +1 -0
  61. package/dist/{chunk-R5KUEOPU.js → chunk-NYQAEPC7.js} +200 -74
  62. package/dist/chunk-NYQAEPC7.js.map +1 -0
  63. package/dist/{chunk-Q7WGFPGK.mjs → chunk-OLXOBT42.mjs} +4 -4
  64. package/dist/{chunk-Q7WGFPGK.mjs.map → chunk-OLXOBT42.mjs.map} +1 -1
  65. package/dist/{chunk-E32B2MVK.js → chunk-PTGPQJZJ.js} +15 -15
  66. package/dist/{chunk-E32B2MVK.js.map → chunk-PTGPQJZJ.js.map} +1 -1
  67. package/dist/{chunk-OE4Z4FKM.mjs → chunk-PU2KTO4O.mjs} +7 -5
  68. package/dist/chunk-PU2KTO4O.mjs.map +1 -0
  69. package/dist/{chunk-KHAMY7MA.mjs → chunk-RXFAQFE7.mjs} +3 -3
  70. package/dist/{chunk-KHAMY7MA.mjs.map → chunk-RXFAQFE7.mjs.map} +1 -1
  71. package/dist/{chunk-SIBJRWUB.js → chunk-SMKN4ZVB.js} +4 -4
  72. package/dist/{chunk-SIBJRWUB.js.map → chunk-SMKN4ZVB.js.map} +1 -1
  73. package/dist/{chunk-WY3YDQXK.js → chunk-ST3GH5OM.js} +26 -26
  74. package/dist/{chunk-WY3YDQXK.js.map → chunk-ST3GH5OM.js.map} +1 -1
  75. package/dist/{chunk-36G7GAPU.mjs → chunk-TEQYIK2B.mjs} +126 -8
  76. package/dist/chunk-TEQYIK2B.mjs.map +1 -0
  77. package/dist/{chunk-53SRKVKQ.mjs → chunk-U7XM3N7F.mjs} +15 -2
  78. package/dist/chunk-U7XM3N7F.mjs.map +1 -0
  79. package/dist/{chunk-E2ZGFN2H.mjs → chunk-VGSWSQQU.mjs} +4 -4
  80. package/dist/{chunk-E2ZGFN2H.mjs.map → chunk-VGSWSQQU.mjs.map} +1 -1
  81. package/dist/{chunk-SOYGVHPZ.js → chunk-XSBZNPUO.js} +53 -53
  82. package/dist/{chunk-SOYGVHPZ.js.map → chunk-XSBZNPUO.js.map} +1 -1
  83. package/dist/{chunk-IEWFVP42.mjs → chunk-Y3WJAYOY.mjs} +6 -6
  84. package/dist/{chunk-IEWFVP42.mjs.map → chunk-Y3WJAYOY.mjs.map} +1 -1
  85. package/dist/{chunk-VPNZDLR6.mjs → chunk-YEWXDCCI.mjs} +4 -4
  86. package/dist/{chunk-VPNZDLR6.mjs.map → chunk-YEWXDCCI.mjs.map} +1 -1
  87. package/dist/{chunk-256TJHVO.mjs → chunk-ZHUPYX4Q.mjs} +3 -3
  88. package/dist/{chunk-256TJHVO.mjs.map → chunk-ZHUPYX4Q.mjs.map} +1 -1
  89. package/dist/{chunk-YN4IEDE4.js → chunk-ZKUYNCAG.js} +26 -27
  90. package/dist/chunk-ZKUYNCAG.js.map +1 -0
  91. package/dist/{index-AioB90qq.d.mts → index-CoB18TbG.d.ts} +9 -2
  92. package/dist/{index-D5ai0cGZ.d.ts → index-VI9gyJXl.d.mts} +9 -2
  93. package/dist/index.js +747 -747
  94. package/dist/index.mjs +2 -2
  95. package/dist/platform/admin/index.js +11 -11
  96. package/dist/platform/admin/index.mjs +5 -5
  97. package/dist/platform/agents-workspace.js +9 -9
  98. package/dist/platform/agents-workspace.mjs +8 -8
  99. package/dist/platform/app-shell.js +4 -4
  100. package/dist/platform/app-shell.mjs +3 -3
  101. package/dist/platform/auth/index.js +28 -28
  102. package/dist/platform/auth/index.mjs +5 -5
  103. package/dist/platform/billing/index.js +4 -4
  104. package/dist/platform/billing/index.mjs +3 -3
  105. package/dist/platform/impersonation/index.js +4 -4
  106. package/dist/platform/impersonation/index.mjs +3 -3
  107. package/dist/platform/index.d.mts +1 -1
  108. package/dist/platform/index.d.ts +1 -1
  109. package/dist/platform/index.js +101 -101
  110. package/dist/platform/index.mjs +21 -21
  111. package/dist/platform/pages/index.d.mts +3 -3
  112. package/dist/platform/pages/index.d.ts +3 -3
  113. package/dist/platform/pages/index.js +198 -198
  114. package/dist/platform/pages/index.mjs +10 -10
  115. package/dist/platform/settings/index.js +8 -8
  116. package/dist/platform/settings/index.mjs +7 -7
  117. package/dist/platform/workflow-api-client.d.mts +2 -2
  118. package/dist/platform/workflow-api-client.d.ts +2 -2
  119. package/dist/platform/workflow-api-client.js +61 -61
  120. package/dist/platform/workflow-api-client.mjs +1 -1
  121. package/dist/platform/workflow-canvas-shell.js +6 -6
  122. package/dist/platform/workflow-canvas-shell.mjs +5 -5
  123. package/dist/{workflow-api-client-CXN5iaih.d.ts → workflow-api-client-DVLhcpUj.d.ts} +26 -7
  124. package/dist/{workflow-api-client-XU83zq0k.d.mts → workflow-api-client-DpBxHTHr.d.mts} +26 -7
  125. package/package.json +1 -1
  126. package/dist/chunk-36G7GAPU.mjs.map +0 -1
  127. package/dist/chunk-53SRKVKQ.mjs.map +0 -1
  128. package/dist/chunk-5UU3RQRB.js.map +0 -1
  129. package/dist/chunk-C7BI5LQ6.js.map +0 -1
  130. package/dist/chunk-CBVRUJ7N.mjs.map +0 -1
  131. package/dist/chunk-J4QUCX27.mjs.map +0 -1
  132. package/dist/chunk-L5VEY7G4.js.map +0 -1
  133. package/dist/chunk-OE4Z4FKM.mjs.map +0 -1
  134. package/dist/chunk-R5KUEOPU.js.map +0 -1
  135. package/dist/chunk-WNCPAWLC.mjs.map +0 -1
  136. package/dist/chunk-Y4DNREFH.js.map +0 -1
  137. package/dist/chunk-YN4IEDE4.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkYN4IEDE4_js = require('./chunk-YN4IEDE4.js');
4
+ var chunkZKUYNCAG_js = require('./chunk-ZKUYNCAG.js');
5
5
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
6
6
  var chunkP4YYEM4B_js = require('./chunk-P4YYEM4B.js');
7
- var chunkC7BI5LQ6_js = require('./chunk-C7BI5LQ6.js');
7
+ var chunkC3H4FM4A_js = require('./chunk-C3H4FM4A.js');
8
8
  var react = require('react');
9
9
  var react$1 = require('@xyflow/react');
10
10
  require('@xyflow/react/dist/style.css');
@@ -355,6 +355,7 @@ var LOGIC_NODE_GRADIENTS = {
355
355
  if_else: "from-amber-400 to-orange-500",
356
356
  code: "from-cyan-400 to-sky-500",
357
357
  http_request: "from-orange-400 to-amber-500",
358
+ s3_write: "from-cyan-400 to-cyan-500",
358
359
  template_transform: "from-pink-400 to-rose-500",
359
360
  iteration: "from-indigo-400 to-violet-500",
360
361
  knowledge_base: "from-emerald-400 to-teal-500",
@@ -379,6 +380,7 @@ var LOGIC_NODE_BADGE_COLORS = {
379
380
  if_else: "bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300",
380
381
  code: "bg-cyan-100 text-cyan-700 dark:bg-cyan-500/20 dark:text-cyan-300",
381
382
  http_request: "bg-orange-100 text-orange-700 dark:bg-orange-500/20 dark:text-orange-300",
383
+ s3_write: "bg-cyan-100 text-cyan-700 dark:bg-cyan-500/20 dark:text-cyan-300",
382
384
  template_transform: "bg-pink-100 text-pink-700 dark:bg-pink-500/20 dark:text-pink-300",
383
385
  iteration: "bg-indigo-100 text-indigo-700 dark:bg-indigo-500/20 dark:text-indigo-300",
384
386
  knowledge_base: "bg-emerald-100 text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-300",
@@ -403,6 +405,7 @@ var LOGIC_NODE_BADGE_SOFT_COLORS = {
403
405
  if_else: "bg-amber-50 text-amber-600 dark:bg-amber-500/20 dark:text-amber-400",
404
406
  code: "bg-cyan-50 text-cyan-600 dark:bg-cyan-500/20 dark:text-cyan-400",
405
407
  http_request: "bg-orange-50 text-orange-600 dark:bg-orange-500/20 dark:text-orange-400",
408
+ s3_write: "bg-cyan-50 text-cyan-600 dark:bg-cyan-500/20 dark:text-cyan-400",
406
409
  template_transform: "bg-pink-50 text-pink-600 dark:bg-pink-500/20 dark:text-pink-400",
407
410
  iteration: "bg-indigo-50 text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-400",
408
411
  knowledge_base: "bg-emerald-50 text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-400",
@@ -427,6 +430,7 @@ var LOGIC_ICON_MAP = {
427
430
  if_else: outline.ArrowsPointingOutIcon,
428
431
  code: outline.CodeBracketIcon,
429
432
  http_request: outline.GlobeAltIcon,
433
+ s3_write: outline.CloudArrowUpIcon,
430
434
  template_transform: outline.DocumentTextIcon,
431
435
  iteration: outline.ArrowPathIcon,
432
436
  knowledge_base: outline.BookOpenIcon,
@@ -465,6 +469,7 @@ var NODE_BORDER_COLORS = {
465
469
  if_else: "border-amber-300/50 dark:border-amber-600/50",
466
470
  code: "border-cyan-300/50 dark:border-cyan-600/50",
467
471
  http_request: "border-orange-300/50 dark:border-orange-600/50",
472
+ s3_write: "border-cyan-300/50 dark:border-cyan-600/50",
468
473
  template_transform: "border-pink-300/50 dark:border-pink-600/50",
469
474
  iteration: "border-indigo-300/50 dark:border-indigo-600/50",
470
475
  iteration_start: "border-indigo-300/50 dark:border-indigo-600/50",
@@ -495,6 +500,7 @@ var MINIMAP_NODE_COLORS = {
495
500
  if_else: "#f59e0b",
496
501
  code: "#06b6d4",
497
502
  http_request: "#f97316",
503
+ s3_write: "#06b6d4",
498
504
  template_transform: "#ec4899",
499
505
  iteration: "#818cf8",
500
506
  knowledge_base: "#10b981",
@@ -536,6 +542,7 @@ var LOGIC_NODE_HANDLE_COLORS = {
536
542
  if_else: "!bg-amber-500",
537
543
  code: "!bg-cyan-500",
538
544
  http_request: "!bg-orange-500",
545
+ s3_write: "!bg-cyan-500",
539
546
  template_transform: "!bg-pink-500",
540
547
  iteration: "!bg-indigo-500",
541
548
  knowledge_base: "!bg-emerald-500",
@@ -1685,7 +1692,7 @@ function DatasourceNodeConfigForm({
1685
1692
  }
1686
1693
  const logo = getDatasourceLogo(selectedDatasourceId, selectedDatasource?.dialect);
1687
1694
  return /* @__PURE__ */ jsxRuntime.jsx(
1688
- chunkYN4IEDE4_js.GlassModal,
1695
+ chunkZKUYNCAG_js.GlassModal,
1689
1696
  {
1690
1697
  open,
1691
1698
  onClose: onCancel,
@@ -1700,8 +1707,8 @@ function DatasourceNodeConfigForm({
1700
1707
  onSectionChange: setActiveSectionId
1701
1708
  },
1702
1709
  footer: readOnly ? void 0 : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 px-6 py-3", children: [
1703
- /* @__PURE__ */ jsxRuntime.jsx(chunkYN4IEDE4_js.Button, { outline: true, onClick: onCancel, children: t("cancel") }),
1704
- /* @__PURE__ */ jsxRuntime.jsx(chunkYN4IEDE4_js.Button, { color: "cyan", onClick: handleSave, disabled: !canSave, children: t("save") })
1710
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZKUYNCAG_js.Button, { outline: true, onClick: onCancel, children: t("cancel") }),
1711
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZKUYNCAG_js.Button, { color: "cyan", onClick: handleSave, disabled: !canSave, children: t("save") })
1705
1712
  ] }),
1706
1713
  children: renderSection()
1707
1714
  }
@@ -2099,7 +2106,7 @@ var AgentFlowNode = react.memo(function AgentFlowNode2({ id, data, selected }) {
2099
2106
  /* @__PURE__ */ jsxRuntime.jsx(NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
2100
2107
  /* @__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" }),
2101
2108
  (() => {
2102
- const tier = chunkC7BI5LQ6_js.getAgentTier(Number(data.agent.elo ?? 0));
2109
+ const tier = chunkC3H4FM4A_js.getAgentTier(Number(data.agent.elo ?? 0));
2103
2110
  return /* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-bold ${tier.pillColor}`, children: tier.key });
2104
2111
  })(),
2105
2112
  /* @__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: [
@@ -2208,7 +2215,7 @@ var AgentToolFlowNode = react.memo(function AgentToolFlowNode2({ id, data, selec
2208
2215
  event.stopPropagation();
2209
2216
  },
2210
2217
  children: /* @__PURE__ */ jsxRuntime.jsx(
2211
- chunkYN4IEDE4_js.ToggleSwitch,
2218
+ chunkZKUYNCAG_js.ToggleSwitch,
2212
2219
  {
2213
2220
  checked: Boolean(agentTool.enabled),
2214
2221
  onChange: () => data.onToggle?.(agentTool),
@@ -2316,7 +2323,7 @@ var ToolFlowNode = react.memo(function ToolFlowNode2({ id, data, selected }) {
2316
2323
  event.preventDefault();
2317
2324
  },
2318
2325
  children: /* @__PURE__ */ jsxRuntime.jsx(
2319
- chunkYN4IEDE4_js.ToggleSwitch,
2326
+ chunkZKUYNCAG_js.ToggleSwitch,
2320
2327
  {
2321
2328
  checked: Boolean(tool.enabled),
2322
2329
  onChange: () => onToggle(tool),
@@ -2468,7 +2475,7 @@ var RuleFlowNode = react.memo(function RuleFlowNode2({ id, data, selected }) {
2468
2475
  event.preventDefault();
2469
2476
  },
2470
2477
  children: /* @__PURE__ */ jsxRuntime.jsx(
2471
- chunkYN4IEDE4_js.ToggleSwitch,
2478
+ chunkZKUYNCAG_js.ToggleSwitch,
2472
2479
  {
2473
2480
  checked: Boolean(rule.enabled),
2474
2481
  onChange: () => onToggle(rule),
@@ -3468,7 +3475,7 @@ var DatasourceFlowNode = react.memo(function DatasourceFlowNode2({ id, data, sel
3468
3475
  event.preventDefault();
3469
3476
  },
3470
3477
  children: /* @__PURE__ */ jsxRuntime.jsx(
3471
- chunkYN4IEDE4_js.ToggleSwitch,
3478
+ chunkZKUYNCAG_js.ToggleSwitch,
3472
3479
  {
3473
3480
  checked: true,
3474
3481
  onChange: () => {
@@ -3796,8 +3803,8 @@ function ConfigFormActions({
3796
3803
  saveDisabled = false
3797
3804
  }) {
3798
3805
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", children: [
3799
- /* @__PURE__ */ jsxRuntime.jsx(chunkYN4IEDE4_js.Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
3800
- /* @__PURE__ */ jsxRuntime.jsx(chunkYN4IEDE4_js.Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
3806
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZKUYNCAG_js.Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
3807
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZKUYNCAG_js.Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
3801
3808
  ] });
3802
3809
  }
3803
3810
  var COLOR_CLASSES = {
@@ -4044,7 +4051,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4044
4051
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-center justify-between", children: [
4045
4052
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("conditionsLabel") }),
4046
4053
  /* @__PURE__ */ jsxRuntime.jsx(
4047
- chunkYN4IEDE4_js.Button,
4054
+ chunkZKUYNCAG_js.Button,
4048
4055
  {
4049
4056
  type: "button",
4050
4057
  onClick: handleAddCondition,
@@ -4055,7 +4062,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4055
4062
  /* @__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: [
4056
4063
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid flex-1 grid-cols-3 gap-2", children: [
4057
4064
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
4058
- chunkYN4IEDE4_js.FormInput,
4065
+ chunkZKUYNCAG_js.FormInput,
4059
4066
  {
4060
4067
  type: "text",
4061
4068
  label: t("variableLabel"),
@@ -4066,7 +4073,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4066
4073
  }
4067
4074
  ) }),
4068
4075
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
4069
- chunkYN4IEDE4_js.FormSelect,
4076
+ chunkZKUYNCAG_js.FormSelect,
4070
4077
  {
4071
4078
  label: t("operatorLabel"),
4072
4079
  value: condition.operator,
@@ -4076,7 +4083,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4076
4083
  }
4077
4084
  ) }),
4078
4085
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
4079
- chunkYN4IEDE4_js.FormInput,
4086
+ chunkZKUYNCAG_js.FormInput,
4080
4087
  {
4081
4088
  type: "text",
4082
4089
  label: t("valueLabel"),
@@ -4088,7 +4095,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4088
4095
  ) })
4089
4096
  ] }),
4090
4097
  conditions.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
4091
- chunkYN4IEDE4_js.IconButton,
4098
+ chunkZKUYNCAG_js.IconButton,
4092
4099
  {
4093
4100
  onClick: () => handleRemoveCondition(index),
4094
4101
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
@@ -4460,7 +4467,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4460
4467
  };
4461
4468
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4462
4469
  /* @__PURE__ */ jsxRuntime.jsx(
4463
- chunkYN4IEDE4_js.FormSelect,
4470
+ chunkZKUYNCAG_js.FormSelect,
4464
4471
  {
4465
4472
  label: t("methodLabel"),
4466
4473
  value: method,
@@ -4469,7 +4476,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4469
4476
  }
4470
4477
  ),
4471
4478
  /* @__PURE__ */ jsxRuntime.jsx(
4472
- chunkYN4IEDE4_js.FormInput,
4479
+ chunkZKUYNCAG_js.FormInput,
4473
4480
  {
4474
4481
  type: "text",
4475
4482
  label: t("urlLabel"),
@@ -4482,7 +4489,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4482
4489
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
4483
4490
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("headersLabel") }),
4484
4491
  /* @__PURE__ */ jsxRuntime.jsx(
4485
- chunkYN4IEDE4_js.Button,
4492
+ chunkZKUYNCAG_js.Button,
4486
4493
  {
4487
4494
  type: "button",
4488
4495
  onClick: handleAddHeader,
@@ -4492,7 +4499,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4492
4499
  ] }),
4493
4500
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: headerEntries.map((entry, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
4494
4501
  /* @__PURE__ */ jsxRuntime.jsx(
4495
- chunkYN4IEDE4_js.FormInput,
4502
+ chunkZKUYNCAG_js.FormInput,
4496
4503
  {
4497
4504
  type: "text",
4498
4505
  value: entry.key,
@@ -4502,7 +4509,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4502
4509
  }
4503
4510
  ),
4504
4511
  /* @__PURE__ */ jsxRuntime.jsx(
4505
- chunkYN4IEDE4_js.FormInput,
4512
+ chunkZKUYNCAG_js.FormInput,
4506
4513
  {
4507
4514
  type: "text",
4508
4515
  value: entry.value,
@@ -4512,7 +4519,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4512
4519
  }
4513
4520
  ),
4514
4521
  /* @__PURE__ */ jsxRuntime.jsx(
4515
- chunkYN4IEDE4_js.IconButton,
4522
+ chunkZKUYNCAG_js.IconButton,
4516
4523
  {
4517
4524
  onClick: () => handleRemoveHeader(index),
4518
4525
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
@@ -4524,7 +4531,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4524
4531
  ] }, index)) })
4525
4532
  ] }),
4526
4533
  method !== "GET" && /* @__PURE__ */ jsxRuntime.jsx(
4527
- chunkYN4IEDE4_js.FormTextarea,
4534
+ chunkZKUYNCAG_js.FormTextarea,
4528
4535
  {
4529
4536
  label: t("bodyLabel"),
4530
4537
  value: body,
@@ -4535,7 +4542,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4535
4542
  }
4536
4543
  ),
4537
4544
  /* @__PURE__ */ jsxRuntime.jsx(
4538
- chunkYN4IEDE4_js.FormInput,
4545
+ chunkZKUYNCAG_js.FormInput,
4539
4546
  {
4540
4547
  type: "number",
4541
4548
  label: t("timeoutLabel"),
@@ -4547,7 +4554,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4547
4554
  }
4548
4555
  ),
4549
4556
  /* @__PURE__ */ jsxRuntime.jsx(
4550
- chunkYN4IEDE4_js.FormSelect,
4557
+ chunkZKUYNCAG_js.FormSelect,
4551
4558
  {
4552
4559
  label: t("parseResponseLabel"),
4553
4560
  value: parseResponse,
@@ -4569,6 +4576,112 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4569
4576
  )
4570
4577
  ] });
4571
4578
  }
4579
+ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
4580
+ const t = chunkYXN2K77G_js.useTranslations("agents.workflow.s3WriteNodeConfig");
4581
+ const [bucket, setBucket] = react.useState(config.bucket ?? "");
4582
+ const [key, setKey] = react.useState(config.key ?? "");
4583
+ const [sourceUrl, setSourceUrl] = react.useState(config.sourceUrl ?? "");
4584
+ const [body, setBody] = react.useState(config.body ?? "");
4585
+ const [contentType, setContentType] = react.useState(config.contentType ?? "");
4586
+ const [timeoutMs, setTimeoutMs] = react.useState(config.timeoutMs ?? 3e5);
4587
+ const [connectionId, setConnectionId] = react.useState(config.connectionId ?? "");
4588
+ const handleSave = () => {
4589
+ onSave({
4590
+ ...config,
4591
+ bucket,
4592
+ key,
4593
+ sourceUrl,
4594
+ body,
4595
+ contentType,
4596
+ timeoutMs,
4597
+ connectionId
4598
+ });
4599
+ };
4600
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4601
+ /* @__PURE__ */ jsxRuntime.jsx(
4602
+ chunkZKUYNCAG_js.FormInput,
4603
+ {
4604
+ type: "text",
4605
+ label: t("bucketLabel"),
4606
+ value: bucket,
4607
+ onValueChange: setBucket,
4608
+ placeholder: t("bucketPlaceholder")
4609
+ }
4610
+ ),
4611
+ /* @__PURE__ */ jsxRuntime.jsx(
4612
+ chunkZKUYNCAG_js.FormInput,
4613
+ {
4614
+ type: "text",
4615
+ label: t("keyLabel"),
4616
+ value: key,
4617
+ onValueChange: setKey,
4618
+ placeholder: t("keyPlaceholder")
4619
+ }
4620
+ ),
4621
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-cyan-200/40 bg-cyan-50/40 px-3 py-2 text-[11px] text-cyan-900 dark:border-cyan-500/30 dark:bg-cyan-500/10 dark:text-cyan-100", children: t("sourceOrBodyHint") }),
4622
+ /* @__PURE__ */ jsxRuntime.jsx(
4623
+ chunkZKUYNCAG_js.FormInput,
4624
+ {
4625
+ type: "text",
4626
+ label: t("sourceUrlLabel"),
4627
+ value: sourceUrl,
4628
+ onValueChange: setSourceUrl,
4629
+ placeholder: t("sourceUrlPlaceholder")
4630
+ }
4631
+ ),
4632
+ /* @__PURE__ */ jsxRuntime.jsx(
4633
+ chunkZKUYNCAG_js.FormTextarea,
4634
+ {
4635
+ label: t("bodyLabel"),
4636
+ value: body,
4637
+ onValueChange: setBody,
4638
+ placeholder: t("bodyPlaceholder"),
4639
+ rows: 5,
4640
+ className: "font-mono text-xs"
4641
+ }
4642
+ ),
4643
+ /* @__PURE__ */ jsxRuntime.jsx(
4644
+ chunkZKUYNCAG_js.FormInput,
4645
+ {
4646
+ type: "text",
4647
+ label: t("contentTypeLabel"),
4648
+ value: contentType,
4649
+ onValueChange: setContentType,
4650
+ placeholder: "application/json"
4651
+ }
4652
+ ),
4653
+ /* @__PURE__ */ jsxRuntime.jsx(
4654
+ chunkZKUYNCAG_js.FormInput,
4655
+ {
4656
+ type: "number",
4657
+ label: t("timeoutLabel"),
4658
+ value: String(timeoutMs),
4659
+ onValueChange: (value) => setTimeoutMs(Number(value)),
4660
+ min: 1e3,
4661
+ step: 1e3
4662
+ }
4663
+ ),
4664
+ /* @__PURE__ */ jsxRuntime.jsx(
4665
+ chunkZKUYNCAG_js.FormInput,
4666
+ {
4667
+ type: "text",
4668
+ label: t("connectionIdLabel"),
4669
+ value: connectionId,
4670
+ onValueChange: setConnectionId,
4671
+ placeholder: t("connectionIdHelp")
4672
+ }
4673
+ ),
4674
+ /* @__PURE__ */ jsxRuntime.jsx(
4675
+ ConfigFormActions,
4676
+ {
4677
+ cancelLabel: t("cancel"),
4678
+ saveLabel: t("save"),
4679
+ onCancel,
4680
+ onSave: handleSave
4681
+ }
4682
+ )
4683
+ ] });
4684
+ }
4572
4685
  function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
4573
4686
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow.templateTransformNodeConfig");
4574
4687
  const [template, setTemplate] = react.useState(config.template);
@@ -4578,7 +4691,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
4578
4691
  };
4579
4692
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4580
4693
  /* @__PURE__ */ jsxRuntime.jsx(
4581
- chunkYN4IEDE4_js.FormTextarea,
4694
+ chunkZKUYNCAG_js.FormTextarea,
4582
4695
  {
4583
4696
  label: t("templateLabel"),
4584
4697
  value: template,
@@ -4589,7 +4702,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
4589
4702
  }
4590
4703
  ),
4591
4704
  /* @__PURE__ */ jsxRuntime.jsx(
4592
- chunkYN4IEDE4_js.FormInput,
4705
+ chunkZKUYNCAG_js.FormInput,
4593
4706
  {
4594
4707
  type: "text",
4595
4708
  label: t("outputVariableLabel"),
@@ -4618,7 +4731,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
4618
4731
  };
4619
4732
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4620
4733
  /* @__PURE__ */ jsxRuntime.jsx(
4621
- chunkYN4IEDE4_js.FormInput,
4734
+ chunkZKUYNCAG_js.FormInput,
4622
4735
  {
4623
4736
  type: "text",
4624
4737
  label: t("iteratorVariableLabel"),
@@ -4628,7 +4741,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
4628
4741
  }
4629
4742
  ),
4630
4743
  /* @__PURE__ */ jsxRuntime.jsx(
4631
- chunkYN4IEDE4_js.FormInput,
4744
+ chunkZKUYNCAG_js.FormInput,
4632
4745
  {
4633
4746
  type: "number",
4634
4747
  label: t("maxIterationsLabel"),
@@ -4659,7 +4772,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
4659
4772
  };
4660
4773
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4661
4774
  /* @__PURE__ */ jsxRuntime.jsx(
4662
- chunkYN4IEDE4_js.FormInput,
4775
+ chunkZKUYNCAG_js.FormInput,
4663
4776
  {
4664
4777
  type: "text",
4665
4778
  label: t("sourceIdLabel"),
@@ -4669,7 +4782,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
4669
4782
  }
4670
4783
  ),
4671
4784
  /* @__PURE__ */ jsxRuntime.jsx(
4672
- chunkYN4IEDE4_js.FormInput,
4785
+ chunkZKUYNCAG_js.FormInput,
4673
4786
  {
4674
4787
  type: "number",
4675
4788
  label: t("topKLabel"),
@@ -4680,7 +4793,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
4680
4793
  }
4681
4794
  ),
4682
4795
  /* @__PURE__ */ jsxRuntime.jsx(
4683
- chunkYN4IEDE4_js.FormInput,
4796
+ chunkZKUYNCAG_js.FormInput,
4684
4797
  {
4685
4798
  type: "number",
4686
4799
  label: t("similarityThresholdLabel"),
@@ -4711,7 +4824,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
4711
4824
  };
4712
4825
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4713
4826
  /* @__PURE__ */ jsxRuntime.jsx(
4714
- chunkYN4IEDE4_js.FormTextarea,
4827
+ chunkZKUYNCAG_js.FormTextarea,
4715
4828
  {
4716
4829
  label: t("outputTemplateLabel"),
4717
4830
  hint: t("outputTemplateHelp"),
@@ -5145,7 +5258,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
5145
5258
  }
5146
5259
  ),
5147
5260
  /* @__PURE__ */ jsxRuntime.jsx(
5148
- chunkYN4IEDE4_js.FormInput,
5261
+ chunkZKUYNCAG_js.FormInput,
5149
5262
  {
5150
5263
  type: "text",
5151
5264
  label: t("outputVariableLabel"),
@@ -5155,7 +5268,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
5155
5268
  }
5156
5269
  ),
5157
5270
  /* @__PURE__ */ jsxRuntime.jsx(
5158
- chunkYN4IEDE4_js.FormSelect,
5271
+ chunkZKUYNCAG_js.FormSelect,
5159
5272
  {
5160
5273
  label: t("aggregationModeLabel"),
5161
5274
  value: aggregationMode,
@@ -5188,7 +5301,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
5188
5301
  };
5189
5302
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5190
5303
  /* @__PURE__ */ jsxRuntime.jsx(
5191
- chunkYN4IEDE4_js.FormSelect,
5304
+ chunkZKUYNCAG_js.FormSelect,
5192
5305
  {
5193
5306
  label: t("extractionModeLabel"),
5194
5307
  value: extractionMode,
@@ -5197,7 +5310,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
5197
5310
  }
5198
5311
  ),
5199
5312
  /* @__PURE__ */ jsxRuntime.jsx(
5200
- chunkYN4IEDE4_js.FormInput,
5313
+ chunkZKUYNCAG_js.FormInput,
5201
5314
  {
5202
5315
  type: "text",
5203
5316
  label: t("outputVariableLabel"),
@@ -5374,7 +5487,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
5374
5487
  };
5375
5488
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5376
5489
  /* @__PURE__ */ jsxRuntime.jsx(
5377
- chunkYN4IEDE4_js.FormInput,
5490
+ chunkZKUYNCAG_js.FormInput,
5378
5491
  {
5379
5492
  type: "text",
5380
5493
  label: t("iteratorVariableLabel"),
@@ -5384,7 +5497,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
5384
5497
  }
5385
5498
  ),
5386
5499
  /* @__PURE__ */ jsxRuntime.jsx(
5387
- chunkYN4IEDE4_js.FormInput,
5500
+ chunkZKUYNCAG_js.FormInput,
5388
5501
  {
5389
5502
  type: "text",
5390
5503
  label: t("itemVariableLabel"),
@@ -5394,7 +5507,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
5394
5507
  }
5395
5508
  ),
5396
5509
  /* @__PURE__ */ jsxRuntime.jsx(
5397
- chunkYN4IEDE4_js.FormInput,
5510
+ chunkZKUYNCAG_js.FormInput,
5398
5511
  {
5399
5512
  type: "text",
5400
5513
  label: t("indexVariableLabel"),
@@ -5666,7 +5779,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
5666
5779
  };
5667
5780
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5668
5781
  /* @__PURE__ */ jsxRuntime.jsx(
5669
- chunkYN4IEDE4_js.FormInput,
5782
+ chunkZKUYNCAG_js.FormInput,
5670
5783
  {
5671
5784
  type: "text",
5672
5785
  label: translations("labelField"),
@@ -5676,7 +5789,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
5676
5789
  }
5677
5790
  ),
5678
5791
  /* @__PURE__ */ jsxRuntime.jsx(
5679
- chunkYN4IEDE4_js.FormTextarea,
5792
+ chunkZKUYNCAG_js.FormTextarea,
5680
5793
  {
5681
5794
  label: translations("descriptionField"),
5682
5795
  value: description,
@@ -5834,7 +5947,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5834
5947
  };
5835
5948
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5836
5949
  /* @__PURE__ */ jsxRuntime.jsx(
5837
- chunkYN4IEDE4_js.FormInput,
5950
+ chunkZKUYNCAG_js.FormInput,
5838
5951
  {
5839
5952
  type: "text",
5840
5953
  label: t("nameLabel"),
@@ -5844,7 +5957,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5844
5957
  }
5845
5958
  ),
5846
5959
  /* @__PURE__ */ jsxRuntime.jsx(
5847
- chunkYN4IEDE4_js.FormSelect,
5960
+ chunkZKUYNCAG_js.FormSelect,
5848
5961
  {
5849
5962
  label: t("providerTypeLabel"),
5850
5963
  value: providerType,
@@ -5853,7 +5966,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5853
5966
  }
5854
5967
  ),
5855
5968
  showRegion && /* @__PURE__ */ jsxRuntime.jsx(
5856
- chunkYN4IEDE4_js.FormSelect,
5969
+ chunkZKUYNCAG_js.FormSelect,
5857
5970
  {
5858
5971
  label: t("regionLabel"),
5859
5972
  value: region,
@@ -5862,7 +5975,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5862
5975
  }
5863
5976
  ),
5864
5977
  showEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
5865
- chunkYN4IEDE4_js.FormInput,
5978
+ chunkZKUYNCAG_js.FormInput,
5866
5979
  {
5867
5980
  type: "text",
5868
5981
  label: t("endpointLabel"),
@@ -5872,7 +5985,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5872
5985
  }
5873
5986
  ),
5874
5987
  showApiKey && /* @__PURE__ */ jsxRuntime.jsx(
5875
- chunkYN4IEDE4_js.FormInput,
5988
+ chunkZKUYNCAG_js.FormInput,
5876
5989
  {
5877
5990
  type: "password",
5878
5991
  label: t("apiKeyLabel"),
@@ -5882,7 +5995,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5882
5995
  }
5883
5996
  ),
5884
5997
  showCredentialRef && /* @__PURE__ */ jsxRuntime.jsx(
5885
- chunkYN4IEDE4_js.FormInput,
5998
+ chunkZKUYNCAG_js.FormInput,
5886
5999
  {
5887
6000
  type: "text",
5888
6001
  label: t("credentialRefLabel"),
@@ -5952,7 +6065,7 @@ function RuleNodeConfigForm({ config, onSave, onCancel, availableRules }) {
5952
6065
  ]
5953
6066
  }
5954
6067
  ) : /* @__PURE__ */ jsxRuntime.jsx(
5955
- chunkYN4IEDE4_js.FormInput,
6068
+ chunkZKUYNCAG_js.FormInput,
5956
6069
  {
5957
6070
  type: "text",
5958
6071
  value: ruleId,
@@ -5968,7 +6081,7 @@ function RuleNodeConfigForm({ config, onSave, onCancel, availableRules }) {
5968
6081
  ] }),
5969
6082
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
5970
6083
  /* @__PURE__ */ jsxRuntime.jsx(
5971
- chunkYN4IEDE4_js.FormInput,
6084
+ chunkZKUYNCAG_js.FormInput,
5972
6085
  {
5973
6086
  type: "number",
5974
6087
  label: t("priorityLabel", { _: "Priority" }),
@@ -6040,7 +6153,7 @@ function AgentNodeConfigForm({
6040
6153
  }));
6041
6154
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
6042
6155
  agentOptions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
6043
- chunkYN4IEDE4_js.FormSelect,
6156
+ chunkZKUYNCAG_js.FormSelect,
6044
6157
  {
6045
6158
  label: t("agentLabel", { _: "Agent" }),
6046
6159
  value: agentId,
@@ -6048,7 +6161,7 @@ function AgentNodeConfigForm({
6048
6161
  options: [{ value: "", label: t("agentPickPrompt", { _: "Choose an agent\u2026" }) }, ...agentOptions]
6049
6162
  }
6050
6163
  ) : /* @__PURE__ */ jsxRuntime.jsx(
6051
- chunkYN4IEDE4_js.FormInput,
6164
+ chunkZKUYNCAG_js.FormInput,
6052
6165
  {
6053
6166
  type: "text",
6054
6167
  label: t("agentIdLabel", { _: "Agent ID" }),
@@ -6058,7 +6171,7 @@ function AgentNodeConfigForm({
6058
6171
  }
6059
6172
  ),
6060
6173
  connOptions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
6061
- chunkYN4IEDE4_js.FormSelect,
6174
+ chunkZKUYNCAG_js.FormSelect,
6062
6175
  {
6063
6176
  label: t("connectionLabel", { _: "Model provider connection" }),
6064
6177
  value: connectionId,
@@ -6066,7 +6179,7 @@ function AgentNodeConfigForm({
6066
6179
  options: [{ value: "", label: t("connectionPickPrompt", { _: "Inline model (no connection)" }) }, ...connOptions]
6067
6180
  }
6068
6181
  ) : /* @__PURE__ */ jsxRuntime.jsx(
6069
- chunkYN4IEDE4_js.FormInput,
6182
+ chunkZKUYNCAG_js.FormInput,
6070
6183
  {
6071
6184
  type: "text",
6072
6185
  label: t("connectionIdLabel", { _: "Connection ID" }),
@@ -6076,7 +6189,7 @@ function AgentNodeConfigForm({
6076
6189
  }
6077
6190
  ),
6078
6191
  /* @__PURE__ */ jsxRuntime.jsx(
6079
- chunkYN4IEDE4_js.FormInput,
6192
+ chunkZKUYNCAG_js.FormInput,
6080
6193
  {
6081
6194
  type: "text",
6082
6195
  label: t("modelIdLabel", { _: "Model override (optional)" }),
@@ -6086,7 +6199,7 @@ function AgentNodeConfigForm({
6086
6199
  }
6087
6200
  ),
6088
6201
  /* @__PURE__ */ jsxRuntime.jsx(
6089
- chunkYN4IEDE4_js.FormTextarea,
6202
+ chunkZKUYNCAG_js.FormTextarea,
6090
6203
  {
6091
6204
  label: t("systemPromptLabel", { _: "System prompt" }),
6092
6205
  value: systemPrompt,
@@ -6096,7 +6209,7 @@ function AgentNodeConfigForm({
6096
6209
  }
6097
6210
  ),
6098
6211
  /* @__PURE__ */ jsxRuntime.jsx(
6099
- chunkYN4IEDE4_js.FormTextarea,
6212
+ chunkZKUYNCAG_js.FormTextarea,
6100
6213
  {
6101
6214
  label: t("userPromptLabel", { _: "User prompt" }),
6102
6215
  value: userPrompt,
@@ -6107,7 +6220,7 @@ function AgentNodeConfigForm({
6107
6220
  ),
6108
6221
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
6109
6222
  /* @__PURE__ */ jsxRuntime.jsx(
6110
- chunkYN4IEDE4_js.FormInput,
6223
+ chunkZKUYNCAG_js.FormInput,
6111
6224
  {
6112
6225
  type: "number",
6113
6226
  label: t("maxTokensLabel", { _: "Max output tokens" }),
@@ -6119,7 +6232,7 @@ function AgentNodeConfigForm({
6119
6232
  }
6120
6233
  ),
6121
6234
  /* @__PURE__ */ jsxRuntime.jsx(
6122
- chunkYN4IEDE4_js.FormInput,
6235
+ chunkZKUYNCAG_js.FormInput,
6123
6236
  {
6124
6237
  type: "number",
6125
6238
  label: t("temperatureLabel", { _: "Temperature" }),
@@ -6148,6 +6261,7 @@ var NODE_TITLE_KEYS = {
6148
6261
  if_else: "ifElseNodeConfig",
6149
6262
  code: "codeNodeConfig",
6150
6263
  http_request: "httpRequestNodeConfig",
6264
+ s3_write: "s3WriteNodeConfig",
6151
6265
  template_transform: "templateTransformNodeConfig",
6152
6266
  iteration: "iterationNodeConfig",
6153
6267
  knowledge_base: "knowledgeBaseNodeConfig",
@@ -6196,6 +6310,8 @@ function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables,
6196
6310
  return /* @__PURE__ */ jsxRuntime.jsx(CodeNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
6197
6311
  case "http_request":
6198
6312
  return /* @__PURE__ */ jsxRuntime.jsx(HttpRequestNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
6313
+ case "s3_write":
6314
+ return /* @__PURE__ */ jsxRuntime.jsx(S3WriteNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
6199
6315
  case "template_transform":
6200
6316
  return /* @__PURE__ */ jsxRuntime.jsx(TemplateTransformNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
6201
6317
  case "iteration":
@@ -6235,7 +6351,7 @@ function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables,
6235
6351
  };
6236
6352
  const isExperimental = isExperimentalNodeType(config.type);
6237
6353
  return /* @__PURE__ */ jsxRuntime.jsxs(
6238
- chunkYN4IEDE4_js.GlassModal,
6354
+ chunkZKUYNCAG_js.GlassModal,
6239
6355
  {
6240
6356
  open,
6241
6357
  onClose: closeModal,
@@ -6249,8 +6365,10 @@ function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables,
6249
6365
  isExperimental && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex items-start gap-2 rounded-lg border border-amber-300/40 bg-amber-50/70 px-3 py-2 text-xs text-amber-900 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-100", children: [
6250
6366
  /* @__PURE__ */ jsxRuntime.jsx(outline.BeakerIcon, { className: "mt-0.5 h-4 w-4 shrink-0 text-amber-600 dark:text-amber-300", "aria-hidden": "true" }),
6251
6367
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
6252
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold", children: t("experimentalNode") }),
6253
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-amber-800/90 dark:text-amber-100/80", children: t("experimentalNodeWarning") })
6368
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold", children: t("experimentalNode", { _: "Experimental node" }) }),
6369
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-amber-800/90 dark:text-amber-100/80", children: t("experimentalNodeWarning", {
6370
+ _: "This node's executor is a stub today. The configuration is saved, but the node may pass through inputs unchanged at run-time until the executor lands."
6371
+ }) })
6254
6372
  ] })
6255
6373
  ] }),
6256
6374
  renderForm()
@@ -6304,7 +6422,7 @@ function NodeContextMenu({ position, targetId, onClose, onEdit, onDuplicate, onC
6304
6422
  }
6305
6423
  ];
6306
6424
  return /* @__PURE__ */ jsxRuntime.jsx(
6307
- chunkYN4IEDE4_js.ContextMenu,
6425
+ chunkZKUYNCAG_js.ContextMenu,
6308
6426
  {
6309
6427
  position,
6310
6428
  onClose,
@@ -6361,7 +6479,7 @@ function PanelContextMenu({ position, onClose, onPaste, onSelectAll, onFitView,
6361
6479
  }
6362
6480
  ];
6363
6481
  return /* @__PURE__ */ jsxRuntime.jsx(
6364
- chunkYN4IEDE4_js.ContextMenu,
6482
+ chunkZKUYNCAG_js.ContextMenu,
6365
6483
  {
6366
6484
  position,
6367
6485
  onClose,
@@ -6508,7 +6626,7 @@ function SelectionContextMenu({
6508
6626
  }
6509
6627
  ];
6510
6628
  return /* @__PURE__ */ jsxRuntime.jsx(
6511
- chunkYN4IEDE4_js.ContextMenu,
6629
+ chunkZKUYNCAG_js.ContextMenu,
6512
6630
  {
6513
6631
  position,
6514
6632
  onClose,
@@ -6974,7 +7092,7 @@ function WorkflowCanvasInner({
6974
7092
  };
6975
7093
  }
6976
7094
  if (isLogicNodeType(savedNode.type)) {
6977
- const config = savedNode.data.config ?? chunkC7BI5LQ6_js.createDefaultLogicNodeConfig(savedNode.type);
7095
+ const config = savedNode.data.config ?? chunkC3H4FM4A_js.createDefaultLogicNodeConfig(savedNode.type);
6978
7096
  if (config) {
6979
7097
  const baseNode = {
6980
7098
  id: savedNode.id,
@@ -7153,7 +7271,7 @@ function WorkflowCanvasInner({
7153
7271
  }
7154
7272
  storeTakeSnapshot();
7155
7273
  const isTB = direction === "TB";
7156
- const repositionedNodes = chunkC7BI5LQ6_js.applyDagreLayout(nodes, edges, direction).map((node) => ({
7274
+ const repositionedNodes = chunkC3H4FM4A_js.applyDagreLayout(nodes, edges, direction).map((node) => ({
7157
7275
  ...node,
7158
7276
  sourcePosition: isTB ? react$1.Position.Bottom : react$1.Position.Right,
7159
7277
  targetPosition: isTB ? react$1.Position.Top : react$1.Position.Left
@@ -7282,7 +7400,7 @@ function WorkflowCanvasInner({
7282
7400
  }, [storePaste]);
7283
7401
  const contextMenuAddNote = react.useCallback((flowPosition) => {
7284
7402
  storeTakeSnapshot();
7285
- const noteConfig = chunkC7BI5LQ6_js.createDefaultLogicNodeConfig("note");
7403
+ const noteConfig = chunkC3H4FM4A_js.createDefaultLogicNodeConfig("note");
7286
7404
  const noteNode = {
7287
7405
  id: crypto.randomUUID(),
7288
7406
  type: "note",
@@ -7793,7 +7911,7 @@ function WorkflowCanvasInner({
7793
7911
  };
7794
7912
  setNodes((currentNodes) => [...currentNodes, newNode]);
7795
7913
  } else if (nodeType === "group") {
7796
- const groupConfig = configRaw ? JSON.parse(configRaw) : chunkC7BI5LQ6_js.createDefaultLogicNodeConfig("group");
7914
+ const groupConfig = configRaw ? JSON.parse(configRaw) : chunkC3H4FM4A_js.createDefaultLogicNodeConfig("group");
7797
7915
  if (!groupConfig) return;
7798
7916
  const newNode = {
7799
7917
  id: newNodeId,
@@ -7810,7 +7928,7 @@ function WorkflowCanvasInner({
7810
7928
  };
7811
7929
  setNodes((currentNodes) => [...currentNodes, newNode]);
7812
7930
  } else if (isLogicNodeType(nodeType)) {
7813
- const config = configRaw ? JSON.parse(configRaw) : chunkC7BI5LQ6_js.createDefaultLogicNodeConfig(nodeType);
7931
+ const config = configRaw ? JSON.parse(configRaw) : chunkC3H4FM4A_js.createDefaultLogicNodeConfig(nodeType);
7814
7932
  if (!config) return;
7815
7933
  const newNode = {
7816
7934
  id: newNodeId,
@@ -7948,7 +8066,7 @@ function WorkflowCanvasInner({
7948
8066
  (edgeId, nodeType, position) => {
7949
8067
  if (!isLogicNodeType(nodeType)) return;
7950
8068
  storeTakeSnapshot();
7951
- const config = chunkC7BI5LQ6_js.createDefaultLogicNodeConfig(nodeType);
8069
+ const config = chunkC3H4FM4A_js.createDefaultLogicNodeConfig(nodeType);
7952
8070
  if (!config) return;
7953
8071
  const newNodeId = crypto.randomUUID();
7954
8072
  const newNode = {
@@ -8415,7 +8533,14 @@ exports.MINIMAP_NODE_COLORS = MINIMAP_NODE_COLORS;
8415
8533
  exports.ModelProviderFlowNode = ModelProviderFlowNode;
8416
8534
  exports.NODE_EXECUTION_ACCENT_COLORS = NODE_EXECUTION_ACCENT_COLORS;
8417
8535
  exports.NodeCard = NodeCard;
8536
+ exports.NodeCardBadge = NodeCardBadge;
8537
+ exports.NodeCardDeleteAction = NodeCardDeleteAction;
8538
+ exports.NodeCardHeader = NodeCardHeader;
8539
+ exports.NodeCardMeta = NodeCardMeta;
8418
8540
  exports.NodeContextMenu = NodeContextMenu;
8541
+ exports.NodeIconBubble = NodeIconBubble;
8542
+ exports.NodeInteractiveCard = NodeInteractiveCard;
8543
+ exports.NodeRunningIndicator = NodeRunningIndicator;
8419
8544
  exports.NoteFlowNode = NoteFlowNode;
8420
8545
  exports.OpenAIIcon = OpenAIIcon;
8421
8546
  exports.PanelContextMenu = PanelContextMenu;
@@ -8431,6 +8556,7 @@ exports.VariableAggregatorFlowNode = VariableAggregatorFlowNode;
8431
8556
  exports.VariableAssignerFlowNode = VariableAssignerFlowNode;
8432
8557
  exports.WorkflowBuilderProvider = WorkflowBuilderProvider;
8433
8558
  exports.WorkflowCanvas = WorkflowCanvas;
8559
+ exports.WorkflowHandle = WorkflowHandle;
8434
8560
  exports.Workspace = Workspace;
8435
8561
  exports.getCompatibleModels = getCompatibleModels;
8436
8562
  exports.getDefaultFrameworkForModel = getDefaultFrameworkForModel;
@@ -8448,5 +8574,5 @@ exports.useModalStore = useModalStore;
8448
8574
  exports.useWorkflowBuilderClient = useWorkflowBuilderClient;
8449
8575
  exports.useWorkflowBuilderClientOptional = useWorkflowBuilderClientOptional;
8450
8576
  exports.useWorkflowStore = useWorkflowStore;
8451
- //# sourceMappingURL=chunk-R5KUEOPU.js.map
8452
- //# sourceMappingURL=chunk-R5KUEOPU.js.map
8577
+ //# sourceMappingURL=chunk-NYQAEPC7.js.map
8578
+ //# sourceMappingURL=chunk-NYQAEPC7.js.map