@datatechsolutions/ui 2.11.93 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/astrlabe/contracts.d.mts +3 -3
  2. package/dist/astrlabe/contracts.d.ts +3 -3
  3. package/dist/astrlabe/index.js +108 -108
  4. package/dist/astrlabe/index.mjs +4 -4
  5. package/dist/astrlabe/workflow-canvas.js +4 -4
  6. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  7. package/dist/brand/index.d.mts +1 -15
  8. package/dist/brand/index.d.ts +1 -15
  9. package/dist/brand/index.js +0 -14
  10. package/dist/brand/index.js.map +1 -1
  11. package/dist/brand/index.mjs +0 -14
  12. package/dist/brand/index.mjs.map +1 -1
  13. package/dist/{chunk-24QKSC74.js → chunk-3JJWPOK6.js} +6 -6
  14. package/dist/{chunk-24QKSC74.js.map → chunk-3JJWPOK6.js.map} +1 -1
  15. package/dist/{chunk-HGN5W56D.mjs → chunk-3ZUMJTDT.mjs} +3 -3
  16. package/dist/{chunk-HGN5W56D.mjs.map → chunk-3ZUMJTDT.mjs.map} +1 -1
  17. package/dist/{chunk-LKJZGFM4.mjs → chunk-5GDKCFM5.mjs} +3 -3
  18. package/dist/{chunk-LKJZGFM4.mjs.map → chunk-5GDKCFM5.mjs.map} +1 -1
  19. package/dist/{chunk-ZHUPYX4Q.mjs → chunk-5RM6NGZ6.mjs} +3 -3
  20. package/dist/{chunk-ZHUPYX4Q.mjs.map → chunk-5RM6NGZ6.mjs.map} +1 -1
  21. package/dist/{chunk-DB64YDV2.js → chunk-AOUUZ52N.js} +55 -55
  22. package/dist/{chunk-DB64YDV2.js.map → chunk-AOUUZ52N.js.map} +1 -1
  23. package/dist/{chunk-VGSWSQQU.mjs → chunk-B67DP7MI.mjs} +4 -4
  24. package/dist/{chunk-VGSWSQQU.mjs.map → chunk-B67DP7MI.mjs.map} +1 -1
  25. package/dist/{chunk-NYQAEPC7.js → chunk-EFOXN3LC.js} +159 -168
  26. package/dist/chunk-EFOXN3LC.js.map +1 -0
  27. package/dist/{chunk-ARVLVWUC.js → chunk-F54Q2YJY.js} +97 -15
  28. package/dist/chunk-F54Q2YJY.js.map +1 -0
  29. package/dist/{chunk-GMZ3PTNK.mjs → chunk-H2D2CRTD.mjs} +7 -7
  30. package/dist/{chunk-GMZ3PTNK.mjs.map → chunk-H2D2CRTD.mjs.map} +1 -1
  31. package/dist/{chunk-PTGPQJZJ.js → chunk-HDCUWUNH.js} +15 -15
  32. package/dist/{chunk-PTGPQJZJ.js.map → chunk-HDCUWUNH.js.map} +1 -1
  33. package/dist/{chunk-ZKUYNCAG.js → chunk-I2NZGVBG.js} +1595 -2140
  34. package/dist/chunk-I2NZGVBG.js.map +1 -0
  35. package/dist/{chunk-MLAXYDEU.mjs → chunk-IRPS5UCS.mjs} +3 -3
  36. package/dist/{chunk-MLAXYDEU.mjs.map → chunk-IRPS5UCS.mjs.map} +1 -1
  37. package/dist/{chunk-TEQYIK2B.mjs → chunk-IRT4T3CU.mjs} +92 -101
  38. package/dist/chunk-IRT4T3CU.mjs.map +1 -0
  39. package/dist/{chunk-A3BFURJB.mjs → chunk-JN6IL6OH.mjs} +1595 -2138
  40. package/dist/chunk-JN6IL6OH.mjs.map +1 -0
  41. package/dist/{chunk-NA57KK4O.js → chunk-JSNRCYSO.js} +4 -4
  42. package/dist/{chunk-NA57KK4O.js.map → chunk-JSNRCYSO.js.map} +1 -1
  43. package/dist/{chunk-XSBZNPUO.js → chunk-KR2X2WHJ.js} +53 -53
  44. package/dist/{chunk-XSBZNPUO.js.map → chunk-KR2X2WHJ.js.map} +1 -1
  45. package/dist/{chunk-YEWXDCCI.mjs → chunk-LEKZUS6N.mjs} +4 -4
  46. package/dist/{chunk-YEWXDCCI.mjs.map → chunk-LEKZUS6N.mjs.map} +1 -1
  47. package/dist/{chunk-6NAZVG2O.mjs → chunk-MVBIAXVN.mjs} +4 -4
  48. package/dist/{chunk-6NAZVG2O.mjs.map → chunk-MVBIAXVN.mjs.map} +1 -1
  49. package/dist/{chunk-4TY55HGO.mjs → chunk-OL73LBX5.mjs} +3 -3
  50. package/dist/{chunk-4TY55HGO.mjs.map → chunk-OL73LBX5.mjs.map} +1 -1
  51. package/dist/{chunk-HUGHELRM.mjs → chunk-QYA53LUF.mjs} +6 -6
  52. package/dist/chunk-QYA53LUF.mjs.map +1 -0
  53. package/dist/{chunk-DWFLIXES.mjs → chunk-R4TQWXNG.mjs} +3 -3
  54. package/dist/{chunk-DWFLIXES.mjs.map → chunk-R4TQWXNG.mjs.map} +1 -1
  55. package/dist/{chunk-SMKN4ZVB.js → chunk-RGI74SQH.js} +4 -4
  56. package/dist/{chunk-SMKN4ZVB.js.map → chunk-RGI74SQH.js.map} +1 -1
  57. package/dist/{chunk-FZTOP6EE.js → chunk-RL35XATZ.js} +141 -141
  58. package/dist/chunk-RL35XATZ.js.map +1 -0
  59. package/dist/{chunk-BUI7BCUN.js → chunk-RXZNACMI.js} +33 -33
  60. package/dist/{chunk-BUI7BCUN.js.map → chunk-RXZNACMI.js.map} +1 -1
  61. package/dist/{chunk-ST3GH5OM.js → chunk-SU3YPWFW.js} +26 -26
  62. package/dist/{chunk-ST3GH5OM.js.map → chunk-SU3YPWFW.js.map} +1 -1
  63. package/dist/{chunk-DIMLLLZR.js → chunk-TIJJHW2Z.js} +36 -36
  64. package/dist/{chunk-DIMLLLZR.js.map → chunk-TIJJHW2Z.js.map} +1 -1
  65. package/dist/{chunk-2RDGJXYZ.js → chunk-TVMLV675.js} +67 -67
  66. package/dist/{chunk-2RDGJXYZ.js.map → chunk-TVMLV675.js.map} +1 -1
  67. package/dist/{chunk-Y3WJAYOY.mjs → chunk-UDDZTTLO.mjs} +6 -6
  68. package/dist/chunk-UDDZTTLO.mjs.map +1 -0
  69. package/dist/{chunk-43GCSCQA.js → chunk-W5OEBO6E.js} +12 -12
  70. package/dist/chunk-W5OEBO6E.js.map +1 -0
  71. package/dist/{chunk-3Z366CVM.js → chunk-Y6AEE56Q.js} +67 -67
  72. package/dist/{chunk-3Z366CVM.js.map → chunk-Y6AEE56Q.js.map} +1 -1
  73. package/dist/{chunk-RXFAQFE7.mjs → chunk-YIB2YAM5.mjs} +3 -3
  74. package/dist/{chunk-RXFAQFE7.mjs.map → chunk-YIB2YAM5.mjs.map} +1 -1
  75. package/dist/{chunk-OLXOBT42.mjs → chunk-YV72JM4B.mjs} +4 -4
  76. package/dist/{chunk-OLXOBT42.mjs.map → chunk-YV72JM4B.mjs.map} +1 -1
  77. package/dist/{chunk-MEEFOZC4.js → chunk-ZM5MVWIT.js} +4 -4
  78. package/dist/{chunk-MEEFOZC4.js.map → chunk-ZM5MVWIT.js.map} +1 -1
  79. package/dist/{chunk-PU2KTO4O.mjs → chunk-ZV5EZXXO.mjs} +97 -15
  80. package/dist/chunk-ZV5EZXXO.mjs.map +1 -0
  81. package/dist/index.d.mts +8 -41
  82. package/dist/index.d.ts +8 -41
  83. package/dist/index.js +745 -753
  84. package/dist/index.mjs +2 -2
  85. package/dist/platform/admin/index.js +11 -11
  86. package/dist/platform/admin/index.mjs +5 -5
  87. package/dist/platform/agents-workspace.js +7 -7
  88. package/dist/platform/agents-workspace.mjs +6 -6
  89. package/dist/platform/app-shell.js +4 -4
  90. package/dist/platform/app-shell.mjs +3 -3
  91. package/dist/platform/auth/index.js +28 -28
  92. package/dist/platform/auth/index.mjs +5 -5
  93. package/dist/platform/billing/index.js +4 -4
  94. package/dist/platform/billing/index.mjs +3 -3
  95. package/dist/platform/impersonation/index.js +4 -4
  96. package/dist/platform/impersonation/index.mjs +3 -3
  97. package/dist/platform/index.d.mts +1 -1
  98. package/dist/platform/index.d.ts +1 -1
  99. package/dist/platform/index.js +99 -99
  100. package/dist/platform/index.js.map +1 -1
  101. package/dist/platform/index.mjs +19 -19
  102. package/dist/platform/index.mjs.map +1 -1
  103. package/dist/platform/pages/index.d.mts +4 -5
  104. package/dist/platform/pages/index.d.ts +4 -5
  105. package/dist/platform/pages/index.js +197 -197
  106. package/dist/platform/pages/index.js.map +1 -1
  107. package/dist/platform/pages/index.mjs +9 -9
  108. package/dist/platform/pages/index.mjs.map +1 -1
  109. package/dist/platform/settings/index.js +8 -8
  110. package/dist/platform/settings/index.mjs +7 -7
  111. package/dist/platform/telemetry/index.d.mts +42 -0
  112. package/dist/platform/telemetry/index.d.ts +42 -0
  113. package/dist/platform/telemetry/index.js +75 -0
  114. package/dist/platform/telemetry/index.js.map +1 -0
  115. package/dist/platform/telemetry/index.mjs +68 -0
  116. package/dist/platform/telemetry/index.mjs.map +1 -0
  117. package/dist/platform/workflow-api-client.d.mts +1 -1
  118. package/dist/platform/workflow-api-client.d.ts +1 -1
  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 +5 -5
  122. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  123. package/dist/{workflow-api-client-DVLhcpUj.d.ts → workflow-api-client-BKD8OfP_.d.ts} +61 -30
  124. package/dist/{workflow-api-client-DpBxHTHr.d.mts → workflow-api-client-DoYj7nHz.d.mts} +61 -30
  125. package/package.json +7 -1
  126. package/dist/chunk-43GCSCQA.js.map +0 -1
  127. package/dist/chunk-A3BFURJB.mjs.map +0 -1
  128. package/dist/chunk-ARVLVWUC.js.map +0 -1
  129. package/dist/chunk-FZTOP6EE.js.map +0 -1
  130. package/dist/chunk-HUGHELRM.mjs.map +0 -1
  131. package/dist/chunk-NYQAEPC7.js.map +0 -1
  132. package/dist/chunk-PU2KTO4O.mjs.map +0 -1
  133. package/dist/chunk-TEQYIK2B.mjs.map +0 -1
  134. package/dist/chunk-Y3WJAYOY.mjs.map +0 -1
  135. package/dist/chunk-ZKUYNCAG.js.map +0 -1
  136. package/src/brand/logos/fuel-icon.svg +0 -32
  137. package/src/brand/logos/fuel-logo-dark.svg +0 -43
  138. package/src/brand/logos/fuel-logo.svg +0 -43
@@ -1,8 +1,9 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkZKUYNCAG_js = require('./chunk-ZKUYNCAG.js');
4
+ var chunkI2NZGVBG_js = require('./chunk-I2NZGVBG.js');
5
5
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
6
+ var chunkF54Q2YJY_js = require('./chunk-F54Q2YJY.js');
6
7
  var chunkP4YYEM4B_js = require('./chunk-P4YYEM4B.js');
7
8
  var chunkC3H4FM4A_js = require('./chunk-C3H4FM4A.js');
8
9
  var react = require('react');
@@ -1154,12 +1155,11 @@ var ENTITY_ICON_MAP = {
1154
1155
  stations: outline.BuildingStorefrontIcon,
1155
1156
  users: outline.UsersIcon,
1156
1157
  competitors: outline.ShoppingBagIcon,
1157
- fuels: outline.FireIcon,
1158
1158
  approvals: outline.ClipboardDocumentCheckIcon,
1159
1159
  rules: outline.ShieldCheckIcon,
1160
1160
  current_prices: outline.CurrencyDollarIcon,
1161
1161
  competitor_prices: outline.ChartBarSquareIcon,
1162
- fuel_metrics: outline.ChartPieIcon,
1162
+ product_metrics: outline.ChartPieIcon,
1163
1163
  station_metrics: outline.PresentationChartBarIcon,
1164
1164
  entities: outline.CircleStackIcon
1165
1165
  };
@@ -1692,7 +1692,7 @@ function DatasourceNodeConfigForm({
1692
1692
  }
1693
1693
  const logo = getDatasourceLogo(selectedDatasourceId, selectedDatasource?.dialect);
1694
1694
  return /* @__PURE__ */ jsxRuntime.jsx(
1695
- chunkZKUYNCAG_js.GlassModal,
1695
+ chunkI2NZGVBG_js.GlassModal,
1696
1696
  {
1697
1697
  open,
1698
1698
  onClose: onCancel,
@@ -1707,8 +1707,8 @@ function DatasourceNodeConfigForm({
1707
1707
  onSectionChange: setActiveSectionId
1708
1708
  },
1709
1709
  footer: readOnly ? void 0 : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 px-6 py-3", children: [
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") })
1710
+ /* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { outline: true, onClick: onCancel, children: t("cancel") }),
1711
+ /* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { color: "cyan", onClick: handleSave, disabled: !canSave, children: t("save") })
1712
1712
  ] }),
1713
1713
  children: renderSection()
1714
1714
  }
@@ -2215,7 +2215,7 @@ var AgentToolFlowNode = react.memo(function AgentToolFlowNode2({ id, data, selec
2215
2215
  event.stopPropagation();
2216
2216
  },
2217
2217
  children: /* @__PURE__ */ jsxRuntime.jsx(
2218
- chunkZKUYNCAG_js.ToggleSwitch,
2218
+ chunkI2NZGVBG_js.ToggleSwitch,
2219
2219
  {
2220
2220
  checked: Boolean(agentTool.enabled),
2221
2221
  onChange: () => data.onToggle?.(agentTool),
@@ -2323,7 +2323,7 @@ var ToolFlowNode = react.memo(function ToolFlowNode2({ id, data, selected }) {
2323
2323
  event.preventDefault();
2324
2324
  },
2325
2325
  children: /* @__PURE__ */ jsxRuntime.jsx(
2326
- chunkZKUYNCAG_js.ToggleSwitch,
2326
+ chunkI2NZGVBG_js.ToggleSwitch,
2327
2327
  {
2328
2328
  checked: Boolean(tool.enabled),
2329
2329
  onChange: () => onToggle(tool),
@@ -2475,7 +2475,7 @@ var RuleFlowNode = react.memo(function RuleFlowNode2({ id, data, selected }) {
2475
2475
  event.preventDefault();
2476
2476
  },
2477
2477
  children: /* @__PURE__ */ jsxRuntime.jsx(
2478
- chunkZKUYNCAG_js.ToggleSwitch,
2478
+ chunkI2NZGVBG_js.ToggleSwitch,
2479
2479
  {
2480
2480
  checked: Boolean(rule.enabled),
2481
2481
  onChange: () => onToggle(rule),
@@ -2495,9 +2495,9 @@ var RuleFlowNode = react.memo(function RuleFlowNode2({ id, data, selected }) {
2495
2495
  "P",
2496
2496
  String(rule.priority ?? "")
2497
2497
  ] }),
2498
- Array.isArray(rule.condition?.fuelTypes) && rule.condition.fuelTypes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-gray-400 dark:text-gray-500", children: [
2499
- rule.condition.fuelTypes.length,
2500
- " fuels"
2498
+ Array.isArray(rule.condition?.categories) && rule.condition.categories.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-gray-400 dark:text-gray-500", children: [
2499
+ rule.condition.categories.length,
2500
+ " categories"
2501
2501
  ] })
2502
2502
  ] }),
2503
2503
  onRemoveFromCanvas && /* @__PURE__ */ jsxRuntime.jsx(
@@ -3475,7 +3475,7 @@ var DatasourceFlowNode = react.memo(function DatasourceFlowNode2({ id, data, sel
3475
3475
  event.preventDefault();
3476
3476
  },
3477
3477
  children: /* @__PURE__ */ jsxRuntime.jsx(
3478
- chunkZKUYNCAG_js.ToggleSwitch,
3478
+ chunkI2NZGVBG_js.ToggleSwitch,
3479
3479
  {
3480
3480
  checked: true,
3481
3481
  onChange: () => {
@@ -3803,8 +3803,8 @@ function ConfigFormActions({
3803
3803
  saveDisabled = false
3804
3804
  }) {
3805
3805
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", children: [
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 })
3806
+ /* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
3807
+ /* @__PURE__ */ jsxRuntime.jsx(chunkI2NZGVBG_js.Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
3808
3808
  ] });
3809
3809
  }
3810
3810
  var COLOR_CLASSES = {
@@ -4051,7 +4051,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4051
4051
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-center justify-between", children: [
4052
4052
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("conditionsLabel") }),
4053
4053
  /* @__PURE__ */ jsxRuntime.jsx(
4054
- chunkZKUYNCAG_js.Button,
4054
+ chunkI2NZGVBG_js.Button,
4055
4055
  {
4056
4056
  type: "button",
4057
4057
  onClick: handleAddCondition,
@@ -4062,7 +4062,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4062
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: [
4063
4063
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid flex-1 grid-cols-3 gap-2", children: [
4064
4064
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
4065
- chunkZKUYNCAG_js.FormInput,
4065
+ chunkI2NZGVBG_js.FormInput,
4066
4066
  {
4067
4067
  type: "text",
4068
4068
  label: t("variableLabel"),
@@ -4073,7 +4073,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4073
4073
  }
4074
4074
  ) }),
4075
4075
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
4076
- chunkZKUYNCAG_js.FormSelect,
4076
+ chunkI2NZGVBG_js.FormSelect,
4077
4077
  {
4078
4078
  label: t("operatorLabel"),
4079
4079
  value: condition.operator,
@@ -4083,7 +4083,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4083
4083
  }
4084
4084
  ) }),
4085
4085
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
4086
- chunkZKUYNCAG_js.FormInput,
4086
+ chunkI2NZGVBG_js.FormInput,
4087
4087
  {
4088
4088
  type: "text",
4089
4089
  label: t("valueLabel"),
@@ -4095,7 +4095,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
4095
4095
  ) })
4096
4096
  ] }),
4097
4097
  conditions.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
4098
- chunkZKUYNCAG_js.IconButton,
4098
+ chunkI2NZGVBG_js.IconButton,
4099
4099
  {
4100
4100
  onClick: () => handleRemoveCondition(index),
4101
4101
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
@@ -4467,7 +4467,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4467
4467
  };
4468
4468
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4469
4469
  /* @__PURE__ */ jsxRuntime.jsx(
4470
- chunkZKUYNCAG_js.FormSelect,
4470
+ chunkI2NZGVBG_js.FormSelect,
4471
4471
  {
4472
4472
  label: t("methodLabel"),
4473
4473
  value: method,
@@ -4476,7 +4476,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4476
4476
  }
4477
4477
  ),
4478
4478
  /* @__PURE__ */ jsxRuntime.jsx(
4479
- chunkZKUYNCAG_js.FormInput,
4479
+ chunkI2NZGVBG_js.FormInput,
4480
4480
  {
4481
4481
  type: "text",
4482
4482
  label: t("urlLabel"),
@@ -4489,7 +4489,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4489
4489
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
4490
4490
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("headersLabel") }),
4491
4491
  /* @__PURE__ */ jsxRuntime.jsx(
4492
- chunkZKUYNCAG_js.Button,
4492
+ chunkI2NZGVBG_js.Button,
4493
4493
  {
4494
4494
  type: "button",
4495
4495
  onClick: handleAddHeader,
@@ -4499,7 +4499,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4499
4499
  ] }),
4500
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: [
4501
4501
  /* @__PURE__ */ jsxRuntime.jsx(
4502
- chunkZKUYNCAG_js.FormInput,
4502
+ chunkI2NZGVBG_js.FormInput,
4503
4503
  {
4504
4504
  type: "text",
4505
4505
  value: entry.key,
@@ -4509,7 +4509,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4509
4509
  }
4510
4510
  ),
4511
4511
  /* @__PURE__ */ jsxRuntime.jsx(
4512
- chunkZKUYNCAG_js.FormInput,
4512
+ chunkI2NZGVBG_js.FormInput,
4513
4513
  {
4514
4514
  type: "text",
4515
4515
  value: entry.value,
@@ -4519,7 +4519,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4519
4519
  }
4520
4520
  ),
4521
4521
  /* @__PURE__ */ jsxRuntime.jsx(
4522
- chunkZKUYNCAG_js.IconButton,
4522
+ chunkI2NZGVBG_js.IconButton,
4523
4523
  {
4524
4524
  onClick: () => handleRemoveHeader(index),
4525
4525
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
@@ -4531,7 +4531,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4531
4531
  ] }, index)) })
4532
4532
  ] }),
4533
4533
  method !== "GET" && /* @__PURE__ */ jsxRuntime.jsx(
4534
- chunkZKUYNCAG_js.FormTextarea,
4534
+ chunkI2NZGVBG_js.FormTextarea,
4535
4535
  {
4536
4536
  label: t("bodyLabel"),
4537
4537
  value: body,
@@ -4542,7 +4542,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4542
4542
  }
4543
4543
  ),
4544
4544
  /* @__PURE__ */ jsxRuntime.jsx(
4545
- chunkZKUYNCAG_js.FormInput,
4545
+ chunkI2NZGVBG_js.FormInput,
4546
4546
  {
4547
4547
  type: "number",
4548
4548
  label: t("timeoutLabel"),
@@ -4554,7 +4554,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
4554
4554
  }
4555
4555
  ),
4556
4556
  /* @__PURE__ */ jsxRuntime.jsx(
4557
- chunkZKUYNCAG_js.FormSelect,
4557
+ chunkI2NZGVBG_js.FormSelect,
4558
4558
  {
4559
4559
  label: t("parseResponseLabel"),
4560
4560
  value: parseResponse,
@@ -4599,7 +4599,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
4599
4599
  };
4600
4600
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4601
4601
  /* @__PURE__ */ jsxRuntime.jsx(
4602
- chunkZKUYNCAG_js.FormInput,
4602
+ chunkI2NZGVBG_js.FormInput,
4603
4603
  {
4604
4604
  type: "text",
4605
4605
  label: t("bucketLabel"),
@@ -4609,7 +4609,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
4609
4609
  }
4610
4610
  ),
4611
4611
  /* @__PURE__ */ jsxRuntime.jsx(
4612
- chunkZKUYNCAG_js.FormInput,
4612
+ chunkI2NZGVBG_js.FormInput,
4613
4613
  {
4614
4614
  type: "text",
4615
4615
  label: t("keyLabel"),
@@ -4620,7 +4620,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
4620
4620
  ),
4621
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
4622
  /* @__PURE__ */ jsxRuntime.jsx(
4623
- chunkZKUYNCAG_js.FormInput,
4623
+ chunkI2NZGVBG_js.FormInput,
4624
4624
  {
4625
4625
  type: "text",
4626
4626
  label: t("sourceUrlLabel"),
@@ -4630,7 +4630,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
4630
4630
  }
4631
4631
  ),
4632
4632
  /* @__PURE__ */ jsxRuntime.jsx(
4633
- chunkZKUYNCAG_js.FormTextarea,
4633
+ chunkI2NZGVBG_js.FormTextarea,
4634
4634
  {
4635
4635
  label: t("bodyLabel"),
4636
4636
  value: body,
@@ -4641,7 +4641,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
4641
4641
  }
4642
4642
  ),
4643
4643
  /* @__PURE__ */ jsxRuntime.jsx(
4644
- chunkZKUYNCAG_js.FormInput,
4644
+ chunkI2NZGVBG_js.FormInput,
4645
4645
  {
4646
4646
  type: "text",
4647
4647
  label: t("contentTypeLabel"),
@@ -4651,7 +4651,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
4651
4651
  }
4652
4652
  ),
4653
4653
  /* @__PURE__ */ jsxRuntime.jsx(
4654
- chunkZKUYNCAG_js.FormInput,
4654
+ chunkI2NZGVBG_js.FormInput,
4655
4655
  {
4656
4656
  type: "number",
4657
4657
  label: t("timeoutLabel"),
@@ -4662,7 +4662,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
4662
4662
  }
4663
4663
  ),
4664
4664
  /* @__PURE__ */ jsxRuntime.jsx(
4665
- chunkZKUYNCAG_js.FormInput,
4665
+ chunkI2NZGVBG_js.FormInput,
4666
4666
  {
4667
4667
  type: "text",
4668
4668
  label: t("connectionIdLabel"),
@@ -4691,7 +4691,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
4691
4691
  };
4692
4692
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4693
4693
  /* @__PURE__ */ jsxRuntime.jsx(
4694
- chunkZKUYNCAG_js.FormTextarea,
4694
+ chunkI2NZGVBG_js.FormTextarea,
4695
4695
  {
4696
4696
  label: t("templateLabel"),
4697
4697
  value: template,
@@ -4702,7 +4702,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
4702
4702
  }
4703
4703
  ),
4704
4704
  /* @__PURE__ */ jsxRuntime.jsx(
4705
- chunkZKUYNCAG_js.FormInput,
4705
+ chunkI2NZGVBG_js.FormInput,
4706
4706
  {
4707
4707
  type: "text",
4708
4708
  label: t("outputVariableLabel"),
@@ -4731,7 +4731,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
4731
4731
  };
4732
4732
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4733
4733
  /* @__PURE__ */ jsxRuntime.jsx(
4734
- chunkZKUYNCAG_js.FormInput,
4734
+ chunkI2NZGVBG_js.FormInput,
4735
4735
  {
4736
4736
  type: "text",
4737
4737
  label: t("iteratorVariableLabel"),
@@ -4741,7 +4741,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
4741
4741
  }
4742
4742
  ),
4743
4743
  /* @__PURE__ */ jsxRuntime.jsx(
4744
- chunkZKUYNCAG_js.FormInput,
4744
+ chunkI2NZGVBG_js.FormInput,
4745
4745
  {
4746
4746
  type: "number",
4747
4747
  label: t("maxIterationsLabel"),
@@ -4772,7 +4772,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
4772
4772
  };
4773
4773
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4774
4774
  /* @__PURE__ */ jsxRuntime.jsx(
4775
- chunkZKUYNCAG_js.FormInput,
4775
+ chunkI2NZGVBG_js.FormInput,
4776
4776
  {
4777
4777
  type: "text",
4778
4778
  label: t("sourceIdLabel"),
@@ -4782,7 +4782,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
4782
4782
  }
4783
4783
  ),
4784
4784
  /* @__PURE__ */ jsxRuntime.jsx(
4785
- chunkZKUYNCAG_js.FormInput,
4785
+ chunkI2NZGVBG_js.FormInput,
4786
4786
  {
4787
4787
  type: "number",
4788
4788
  label: t("topKLabel"),
@@ -4793,7 +4793,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
4793
4793
  }
4794
4794
  ),
4795
4795
  /* @__PURE__ */ jsxRuntime.jsx(
4796
- chunkZKUYNCAG_js.FormInput,
4796
+ chunkI2NZGVBG_js.FormInput,
4797
4797
  {
4798
4798
  type: "number",
4799
4799
  label: t("similarityThresholdLabel"),
@@ -4824,7 +4824,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
4824
4824
  };
4825
4825
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
4826
4826
  /* @__PURE__ */ jsxRuntime.jsx(
4827
- chunkZKUYNCAG_js.FormTextarea,
4827
+ chunkI2NZGVBG_js.FormTextarea,
4828
4828
  {
4829
4829
  label: t("outputTemplateLabel"),
4830
4830
  hint: t("outputTemplateHelp"),
@@ -5258,7 +5258,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
5258
5258
  }
5259
5259
  ),
5260
5260
  /* @__PURE__ */ jsxRuntime.jsx(
5261
- chunkZKUYNCAG_js.FormInput,
5261
+ chunkI2NZGVBG_js.FormInput,
5262
5262
  {
5263
5263
  type: "text",
5264
5264
  label: t("outputVariableLabel"),
@@ -5268,7 +5268,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
5268
5268
  }
5269
5269
  ),
5270
5270
  /* @__PURE__ */ jsxRuntime.jsx(
5271
- chunkZKUYNCAG_js.FormSelect,
5271
+ chunkI2NZGVBG_js.FormSelect,
5272
5272
  {
5273
5273
  label: t("aggregationModeLabel"),
5274
5274
  value: aggregationMode,
@@ -5301,7 +5301,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
5301
5301
  };
5302
5302
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5303
5303
  /* @__PURE__ */ jsxRuntime.jsx(
5304
- chunkZKUYNCAG_js.FormSelect,
5304
+ chunkI2NZGVBG_js.FormSelect,
5305
5305
  {
5306
5306
  label: t("extractionModeLabel"),
5307
5307
  value: extractionMode,
@@ -5310,7 +5310,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
5310
5310
  }
5311
5311
  ),
5312
5312
  /* @__PURE__ */ jsxRuntime.jsx(
5313
- chunkZKUYNCAG_js.FormInput,
5313
+ chunkI2NZGVBG_js.FormInput,
5314
5314
  {
5315
5315
  type: "text",
5316
5316
  label: t("outputVariableLabel"),
@@ -5487,7 +5487,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
5487
5487
  };
5488
5488
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5489
5489
  /* @__PURE__ */ jsxRuntime.jsx(
5490
- chunkZKUYNCAG_js.FormInput,
5490
+ chunkI2NZGVBG_js.FormInput,
5491
5491
  {
5492
5492
  type: "text",
5493
5493
  label: t("iteratorVariableLabel"),
@@ -5497,7 +5497,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
5497
5497
  }
5498
5498
  ),
5499
5499
  /* @__PURE__ */ jsxRuntime.jsx(
5500
- chunkZKUYNCAG_js.FormInput,
5500
+ chunkI2NZGVBG_js.FormInput,
5501
5501
  {
5502
5502
  type: "text",
5503
5503
  label: t("itemVariableLabel"),
@@ -5507,7 +5507,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
5507
5507
  }
5508
5508
  ),
5509
5509
  /* @__PURE__ */ jsxRuntime.jsx(
5510
- chunkZKUYNCAG_js.FormInput,
5510
+ chunkI2NZGVBG_js.FormInput,
5511
5511
  {
5512
5512
  type: "text",
5513
5513
  label: t("indexVariableLabel"),
@@ -5779,7 +5779,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
5779
5779
  };
5780
5780
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5781
5781
  /* @__PURE__ */ jsxRuntime.jsx(
5782
- chunkZKUYNCAG_js.FormInput,
5782
+ chunkI2NZGVBG_js.FormInput,
5783
5783
  {
5784
5784
  type: "text",
5785
5785
  label: translations("labelField"),
@@ -5789,7 +5789,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
5789
5789
  }
5790
5790
  ),
5791
5791
  /* @__PURE__ */ jsxRuntime.jsx(
5792
- chunkZKUYNCAG_js.FormTextarea,
5792
+ chunkI2NZGVBG_js.FormTextarea,
5793
5793
  {
5794
5794
  label: translations("descriptionField"),
5795
5795
  value: description,
@@ -5823,100 +5823,70 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
5823
5823
  )
5824
5824
  ] });
5825
5825
  }
5826
- var PROVIDER_TYPES = [
5827
- { value: "aws_bedrock", label: "AWS Bedrock" },
5828
- { value: "openai_api", label: "OpenAI API" },
5829
- { value: "google_vertex", label: "Google Vertex AI" },
5830
- { value: "azure_openai", label: "Azure OpenAI" },
5831
- { value: "anthropic_api", label: "Anthropic API" },
5832
- { value: "groq", label: "Groq Cloud" },
5833
- { value: "mistral", label: "Mistral AI" },
5834
- { value: "huggingface", label: "Hugging Face Inference" },
5835
- { value: "ollama", label: "Ollama (Local)" },
5836
- { value: "custom", label: "Custom OpenAI-compatible" }
5837
- ];
5838
- var REGION_OPTIONS = {
5839
- aws_bedrock: [
5840
- { value: "us-east-1", label: "US East (N. Virginia)" },
5841
- { value: "us-west-2", label: "US West (Oregon)" },
5842
- { value: "eu-west-1", label: "Europe (Ireland)" },
5843
- { value: "eu-central-1", label: "Europe (Frankfurt)" },
5844
- { value: "ap-northeast-1", label: "Asia Pacific (Tokyo)" },
5845
- { value: "ap-southeast-1", label: "Asia Pacific (Singapore)" },
5846
- { value: "ap-south-1", label: "Asia Pacific (Mumbai)" },
5847
- { value: "sa-east-1", label: "South America (S\xE3o Paulo)" },
5848
- { value: "ca-central-1", label: "Canada (Central)" }
5849
- ],
5850
- google_vertex: [
5851
- { value: "us-central1", label: "US Central (Iowa)" },
5852
- { value: "us-east4", label: "US East (Virginia)" },
5853
- { value: "europe-west4", label: "Europe West (Netherlands)" },
5854
- { value: "europe-west1", label: "Europe West (Belgium)" },
5855
- { value: "asia-northeast1", label: "Asia NE (Tokyo)" },
5856
- { value: "asia-southeast1", label: "Asia SE (Singapore)" },
5857
- { value: "southamerica-east1", label: "South America (S\xE3o Paulo)" }
5858
- ],
5859
- azure_openai: [
5860
- { value: "eastus", label: "East US" },
5861
- { value: "eastus2", label: "East US 2" },
5862
- { value: "westeurope", label: "West Europe" },
5863
- { value: "swedencentral", label: "Sweden Central" },
5864
- { value: "japaneast", label: "Japan East" },
5865
- { value: "australiaeast", label: "Australia East" },
5866
- { value: "canadaeast", label: "Canada East" },
5867
- { value: "uksouth", label: "UK South" }
5868
- ]
5869
- };
5870
- var MODEL_FAMILIES = {
5871
- aws_bedrock: [
5872
- { id: "claude", label: "Anthropic Claude", models: ["anthropic.claude-haiku-4-5-v1:0", "anthropic.claude-sonnet-4-6-v1:0", "anthropic.claude-opus-4-6-v1:0"] },
5873
- { id: "nova", label: "Amazon Nova", models: ["amazon.nova-lite-v1:0", "amazon.nova-pro-v1:0"] },
5874
- { id: "llama", label: "Meta Llama", models: ["meta.llama3-3-70b-instruct-v1:0"] },
5875
- { id: "mistral-bedrock", label: "Mistral AI", models: ["mistral.mistral-large-2411-v1:0"] }
5876
- ],
5877
- openai_api: [
5878
- { id: "gpt5", label: "GPT-5 Family", models: ["openai.gpt-5-v1:0", "openai.gpt-5-mini-v1:0"] }
5879
- ],
5880
- google_vertex: [
5881
- { id: "gemini", label: "Gemini Family", models: ["google.gemini-3-flash-v1:0", "google.gemini-3-1-pro-v1:0"] }
5882
- ],
5883
- anthropic_api: [
5884
- { id: "claude-direct", label: "Claude Family", models: ["anthropic.claude-haiku-4-5-v1:0", "anthropic.claude-sonnet-4-6-v1:0", "anthropic.claude-opus-4-6-v1:0"] }
5885
- ],
5886
- groq: [
5887
- { id: "groq-llama", label: "Llama (Groq)", models: ["meta.llama3-3-70b-instruct-v1:0"] },
5888
- { id: "groq-mixtral", label: "Mixtral (Groq)", models: ["mistral.mixtral-8x7b-v1:0"] }
5889
- ],
5890
- mistral: [
5891
- { id: "mistral-large", label: "Mistral Large", models: ["mistral.mistral-large-2411-v1:0"] },
5892
- { id: "mistral-small", label: "Mistral Small", models: ["mistral.mistral-small-v1:0"] }
5893
- ]
5894
- };
5826
+ var catalogCache = null;
5827
+ var catalogPromise = null;
5828
+ async function loadCatalog() {
5829
+ if (catalogCache) return catalogCache;
5830
+ if (!catalogPromise) {
5831
+ catalogPromise = chunkF54Q2YJY_js.listModelProviderCatalog().then((rows) => {
5832
+ catalogCache = rows;
5833
+ return rows;
5834
+ });
5835
+ }
5836
+ return catalogPromise;
5837
+ }
5838
+ var ENDPOINT_SLUGS = /* @__PURE__ */ new Set(["custom", "azure_openai", "ollama"]);
5895
5839
  function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5896
5840
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow.modelProviderNodeConfig");
5841
+ const [catalog, setCatalog] = react.useState(catalogCache);
5842
+ const [catalogError, setCatalogError] = react.useState(null);
5897
5843
  const [providerType, setProviderType] = react.useState(config.providerType);
5898
5844
  const [name, setName] = react.useState(config.name ?? "");
5899
5845
  const [region, setRegion] = react.useState(config.region ?? "");
5900
5846
  const [endpoint, setEndpoint] = react.useState(config.endpoint ?? "");
5901
5847
  const [credentialRef, setCredentialRef] = react.useState(config.credentialRef ?? "");
5902
5848
  const [apiKeyRef, setApiKeyRef] = react.useState(config.apiKeyRef ?? "");
5903
- const [selectedFamilies, setSelectedFamilies] = react.useState(() => {
5904
- const families2 = MODEL_FAMILIES[config.providerType] ?? [];
5905
- const filter = new Set(config.modelFilter ?? []);
5906
- const selected = /* @__PURE__ */ new Set();
5907
- for (const family of families2) {
5908
- if (family.models.some((m) => filter.has(m)) || filter.size === 0) {
5909
- selected.add(family.id);
5910
- }
5911
- }
5912
- return selected;
5913
- });
5914
- const regions = REGION_OPTIONS[providerType] ?? [];
5915
- const families = MODEL_FAMILIES[providerType] ?? [];
5849
+ const [selectedFamilies, setSelectedFamilies] = react.useState(/* @__PURE__ */ new Set());
5850
+ react.useEffect(() => {
5851
+ let cancelled = false;
5852
+ if (catalog) return;
5853
+ void loadCatalog().then((rows) => {
5854
+ if (cancelled) return;
5855
+ setCatalog(rows);
5856
+ }).catch((error) => {
5857
+ if (cancelled) return;
5858
+ const message = error instanceof Error ? error.message : "Failed to load provider catalog";
5859
+ setCatalogError(message);
5860
+ });
5861
+ return () => {
5862
+ cancelled = true;
5863
+ };
5864
+ }, [catalog]);
5865
+ const currentProvider = react.useMemo(() => {
5866
+ if (!catalog) return void 0;
5867
+ return catalog.find((entry) => entry.slug === providerType);
5868
+ }, [catalog, providerType]);
5869
+ const families = currentProvider?.families ?? [];
5870
+ const regions = Array.isArray(currentProvider?.regions) ? currentProvider.regions : [];
5916
5871
  const showRegion = regions.length > 0;
5917
- const showEndpoint = providerType === "custom" || providerType === "azure_openai" || providerType === "ollama";
5918
- const showApiKey = ["openai_api", "anthropic_api", "groq", "mistral", "huggingface", "custom"].includes(providerType);
5919
- const showCredentialRef = providerType === "aws_bedrock" || providerType === "google_vertex";
5872
+ const showEndpoint = ENDPOINT_SLUGS.has(providerType);
5873
+ const authType = currentProvider?.authType ?? null;
5874
+ const showApiKey = authType === "api_key";
5875
+ const showCredentialRef = authType === "iam_role";
5876
+ react.useEffect(() => {
5877
+ if (!currentProvider) return;
5878
+ setSelectedFamilies((previous) => {
5879
+ if (previous.size > 0) return previous;
5880
+ const filter = new Set(config.modelFilter ?? []);
5881
+ const next = /* @__PURE__ */ new Set();
5882
+ for (const family of currentProvider.families) {
5883
+ if (filter.size === 0 || family.modelIds.some((id) => filter.has(id))) {
5884
+ next.add(family.id);
5885
+ }
5886
+ }
5887
+ return next;
5888
+ });
5889
+ }, [currentProvider, config.modelFilter]);
5920
5890
  const handleToggleFamily = (familyId) => {
5921
5891
  setSelectedFamilies((previous) => {
5922
5892
  const next = new Set(previous);
@@ -5929,11 +5899,11 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5929
5899
  const newType = value;
5930
5900
  setProviderType(newType);
5931
5901
  setRegion("");
5932
- const newFamilies = MODEL_FAMILIES[newType] ?? [];
5933
- setSelectedFamilies(new Set(newFamilies.map((f) => f.id)));
5902
+ const next = catalog?.find((entry) => entry.slug === newType);
5903
+ setSelectedFamilies(new Set((next?.families ?? []).map((family) => family.id)));
5934
5904
  };
5935
5905
  const handleSave = () => {
5936
- const modelFilter = families.filter((f) => selectedFamilies.has(f.id)).flatMap((f) => f.models);
5906
+ const modelFilter = families.filter((family) => selectedFamilies.has(family.id)).flatMap((family) => family.modelIds);
5937
5907
  onSave({
5938
5908
  ...config,
5939
5909
  providerType,
@@ -5945,9 +5915,27 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5945
5915
  modelFilter
5946
5916
  });
5947
5917
  };
5918
+ if (catalogError) {
5919
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5920
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-900 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-200", children: catalogError }),
5921
+ /* @__PURE__ */ jsxRuntime.jsx(
5922
+ ConfigFormActions,
5923
+ {
5924
+ cancelLabel: t("cancel"),
5925
+ saveLabel: t("save"),
5926
+ onCancel,
5927
+ onSave: handleSave,
5928
+ saveDisabled: true
5929
+ }
5930
+ )
5931
+ ] });
5932
+ }
5933
+ if (!catalog) {
5934
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4 h-32" });
5935
+ }
5948
5936
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
5949
5937
  /* @__PURE__ */ jsxRuntime.jsx(
5950
- chunkZKUYNCAG_js.FormInput,
5938
+ chunkI2NZGVBG_js.FormInput,
5951
5939
  {
5952
5940
  type: "text",
5953
5941
  label: t("nameLabel"),
@@ -5957,25 +5945,28 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5957
5945
  }
5958
5946
  ),
5959
5947
  /* @__PURE__ */ jsxRuntime.jsx(
5960
- chunkZKUYNCAG_js.FormSelect,
5948
+ chunkI2NZGVBG_js.FormSelect,
5961
5949
  {
5962
5950
  label: t("providerTypeLabel"),
5963
5951
  value: providerType,
5964
5952
  onValueChange: handleProviderChange,
5965
- options: PROVIDER_TYPES.map((pt) => ({ value: pt.value, label: pt.label }))
5953
+ options: catalog.filter((entry) => entry.enabled).map((entry) => ({ value: entry.slug, label: entry.name }))
5966
5954
  }
5967
5955
  ),
5968
5956
  showRegion && /* @__PURE__ */ jsxRuntime.jsx(
5969
- chunkZKUYNCAG_js.FormSelect,
5957
+ chunkI2NZGVBG_js.FormSelect,
5970
5958
  {
5971
5959
  label: t("regionLabel"),
5972
5960
  value: region,
5973
5961
  onValueChange: setRegion,
5974
- options: [{ value: "", label: t("selectRegion") }, ...regions]
5962
+ options: [
5963
+ { value: "", label: t("selectRegion") },
5964
+ ...regions.map((value) => ({ value, label: value }))
5965
+ ]
5975
5966
  }
5976
5967
  ),
5977
5968
  showEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
5978
- chunkZKUYNCAG_js.FormInput,
5969
+ chunkI2NZGVBG_js.FormInput,
5979
5970
  {
5980
5971
  type: "text",
5981
5972
  label: t("endpointLabel"),
@@ -5985,7 +5976,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5985
5976
  }
5986
5977
  ),
5987
5978
  showApiKey && /* @__PURE__ */ jsxRuntime.jsx(
5988
- chunkZKUYNCAG_js.FormInput,
5979
+ chunkI2NZGVBG_js.FormInput,
5989
5980
  {
5990
5981
  type: "password",
5991
5982
  label: t("apiKeyLabel"),
@@ -5995,7 +5986,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5995
5986
  }
5996
5987
  ),
5997
5988
  showCredentialRef && /* @__PURE__ */ jsxRuntime.jsx(
5998
- chunkZKUYNCAG_js.FormInput,
5989
+ chunkI2NZGVBG_js.FormInput,
5999
5990
  {
6000
5991
  type: "text",
6001
5992
  label: t("credentialRefLabel"),
@@ -6017,9 +6008,9 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
6017
6008
  children: [
6018
6009
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-4 w-4 shrink-0 items-center justify-center rounded ${isSelected ? "bg-indigo-500 text-white" : "border border-gray-300 dark:border-gray-600"}`, children: isSelected && /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "h-3 w-3", viewBox: "0 0 20 20", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", clipRule: "evenodd" }) }) }),
6019
6010
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
6020
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-white", children: family.label }),
6011
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-white", children: family.name }),
6021
6012
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-2 text-[10px] text-gray-400 dark:text-gray-500", children: [
6022
- family.models.length,
6013
+ family.modelIds.length,
6023
6014
  " models"
6024
6015
  ] })
6025
6016
  ] })
@@ -6065,7 +6056,7 @@ function RuleNodeConfigForm({ config, onSave, onCancel, availableRules }) {
6065
6056
  ]
6066
6057
  }
6067
6058
  ) : /* @__PURE__ */ jsxRuntime.jsx(
6068
- chunkZKUYNCAG_js.FormInput,
6059
+ chunkI2NZGVBG_js.FormInput,
6069
6060
  {
6070
6061
  type: "text",
6071
6062
  value: ruleId,
@@ -6081,7 +6072,7 @@ function RuleNodeConfigForm({ config, onSave, onCancel, availableRules }) {
6081
6072
  ] }),
6082
6073
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
6083
6074
  /* @__PURE__ */ jsxRuntime.jsx(
6084
- chunkZKUYNCAG_js.FormInput,
6075
+ chunkI2NZGVBG_js.FormInput,
6085
6076
  {
6086
6077
  type: "number",
6087
6078
  label: t("priorityLabel", { _: "Priority" }),
@@ -6153,7 +6144,7 @@ function AgentNodeConfigForm({
6153
6144
  }));
6154
6145
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
6155
6146
  agentOptions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
6156
- chunkZKUYNCAG_js.FormSelect,
6147
+ chunkI2NZGVBG_js.FormSelect,
6157
6148
  {
6158
6149
  label: t("agentLabel", { _: "Agent" }),
6159
6150
  value: agentId,
@@ -6161,7 +6152,7 @@ function AgentNodeConfigForm({
6161
6152
  options: [{ value: "", label: t("agentPickPrompt", { _: "Choose an agent\u2026" }) }, ...agentOptions]
6162
6153
  }
6163
6154
  ) : /* @__PURE__ */ jsxRuntime.jsx(
6164
- chunkZKUYNCAG_js.FormInput,
6155
+ chunkI2NZGVBG_js.FormInput,
6165
6156
  {
6166
6157
  type: "text",
6167
6158
  label: t("agentIdLabel", { _: "Agent ID" }),
@@ -6171,7 +6162,7 @@ function AgentNodeConfigForm({
6171
6162
  }
6172
6163
  ),
6173
6164
  connOptions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
6174
- chunkZKUYNCAG_js.FormSelect,
6165
+ chunkI2NZGVBG_js.FormSelect,
6175
6166
  {
6176
6167
  label: t("connectionLabel", { _: "Model provider connection" }),
6177
6168
  value: connectionId,
@@ -6179,7 +6170,7 @@ function AgentNodeConfigForm({
6179
6170
  options: [{ value: "", label: t("connectionPickPrompt", { _: "Inline model (no connection)" }) }, ...connOptions]
6180
6171
  }
6181
6172
  ) : /* @__PURE__ */ jsxRuntime.jsx(
6182
- chunkZKUYNCAG_js.FormInput,
6173
+ chunkI2NZGVBG_js.FormInput,
6183
6174
  {
6184
6175
  type: "text",
6185
6176
  label: t("connectionIdLabel", { _: "Connection ID" }),
@@ -6189,7 +6180,7 @@ function AgentNodeConfigForm({
6189
6180
  }
6190
6181
  ),
6191
6182
  /* @__PURE__ */ jsxRuntime.jsx(
6192
- chunkZKUYNCAG_js.FormInput,
6183
+ chunkI2NZGVBG_js.FormInput,
6193
6184
  {
6194
6185
  type: "text",
6195
6186
  label: t("modelIdLabel", { _: "Model override (optional)" }),
@@ -6199,7 +6190,7 @@ function AgentNodeConfigForm({
6199
6190
  }
6200
6191
  ),
6201
6192
  /* @__PURE__ */ jsxRuntime.jsx(
6202
- chunkZKUYNCAG_js.FormTextarea,
6193
+ chunkI2NZGVBG_js.FormTextarea,
6203
6194
  {
6204
6195
  label: t("systemPromptLabel", { _: "System prompt" }),
6205
6196
  value: systemPrompt,
@@ -6209,7 +6200,7 @@ function AgentNodeConfigForm({
6209
6200
  }
6210
6201
  ),
6211
6202
  /* @__PURE__ */ jsxRuntime.jsx(
6212
- chunkZKUYNCAG_js.FormTextarea,
6203
+ chunkI2NZGVBG_js.FormTextarea,
6213
6204
  {
6214
6205
  label: t("userPromptLabel", { _: "User prompt" }),
6215
6206
  value: userPrompt,
@@ -6220,7 +6211,7 @@ function AgentNodeConfigForm({
6220
6211
  ),
6221
6212
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
6222
6213
  /* @__PURE__ */ jsxRuntime.jsx(
6223
- chunkZKUYNCAG_js.FormInput,
6214
+ chunkI2NZGVBG_js.FormInput,
6224
6215
  {
6225
6216
  type: "number",
6226
6217
  label: t("maxTokensLabel", { _: "Max output tokens" }),
@@ -6232,7 +6223,7 @@ function AgentNodeConfigForm({
6232
6223
  }
6233
6224
  ),
6234
6225
  /* @__PURE__ */ jsxRuntime.jsx(
6235
- chunkZKUYNCAG_js.FormInput,
6226
+ chunkI2NZGVBG_js.FormInput,
6236
6227
  {
6237
6228
  type: "number",
6238
6229
  label: t("temperatureLabel", { _: "Temperature" }),
@@ -6351,7 +6342,7 @@ function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables,
6351
6342
  };
6352
6343
  const isExperimental = isExperimentalNodeType(config.type);
6353
6344
  return /* @__PURE__ */ jsxRuntime.jsxs(
6354
- chunkZKUYNCAG_js.GlassModal,
6345
+ chunkI2NZGVBG_js.GlassModal,
6355
6346
  {
6356
6347
  open,
6357
6348
  onClose: closeModal,
@@ -6422,7 +6413,7 @@ function NodeContextMenu({ position, targetId, onClose, onEdit, onDuplicate, onC
6422
6413
  }
6423
6414
  ];
6424
6415
  return /* @__PURE__ */ jsxRuntime.jsx(
6425
- chunkZKUYNCAG_js.ContextMenu,
6416
+ chunkI2NZGVBG_js.ContextMenu,
6426
6417
  {
6427
6418
  position,
6428
6419
  onClose,
@@ -6479,7 +6470,7 @@ function PanelContextMenu({ position, onClose, onPaste, onSelectAll, onFitView,
6479
6470
  }
6480
6471
  ];
6481
6472
  return /* @__PURE__ */ jsxRuntime.jsx(
6482
- chunkZKUYNCAG_js.ContextMenu,
6473
+ chunkI2NZGVBG_js.ContextMenu,
6483
6474
  {
6484
6475
  position,
6485
6476
  onClose,
@@ -6626,7 +6617,7 @@ function SelectionContextMenu({
6626
6617
  }
6627
6618
  ];
6628
6619
  return /* @__PURE__ */ jsxRuntime.jsx(
6629
- chunkZKUYNCAG_js.ContextMenu,
6620
+ chunkI2NZGVBG_js.ContextMenu,
6630
6621
  {
6631
6622
  position,
6632
6623
  onClose,
@@ -8574,5 +8565,5 @@ exports.useModalStore = useModalStore;
8574
8565
  exports.useWorkflowBuilderClient = useWorkflowBuilderClient;
8575
8566
  exports.useWorkflowBuilderClientOptional = useWorkflowBuilderClientOptional;
8576
8567
  exports.useWorkflowStore = useWorkflowStore;
8577
- //# sourceMappingURL=chunk-NYQAEPC7.js.map
8578
- //# sourceMappingURL=chunk-NYQAEPC7.js.map
8568
+ //# sourceMappingURL=chunk-EFOXN3LC.js.map
8569
+ //# sourceMappingURL=chunk-EFOXN3LC.js.map