@datatechsolutions/ui 3.6.0 → 3.6.1

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 (41) hide show
  1. package/dist/astrlabe/index.js +106 -106
  2. package/dist/astrlabe/index.mjs +2 -2
  3. package/dist/astrlabe/workflow-canvas.js +2 -2
  4. package/dist/astrlabe/workflow-canvas.mjs +1 -1
  5. package/dist/{chunk-I63NFWIA.mjs → chunk-3Z66NXEB.mjs} +3 -3
  6. package/dist/{chunk-I63NFWIA.mjs.map → chunk-3Z66NXEB.mjs.map} +1 -1
  7. package/dist/{chunk-XTXLRQ3H.mjs → chunk-4JDJRGAB.mjs} +27 -28
  8. package/dist/chunk-4JDJRGAB.mjs.map +1 -0
  9. package/dist/{chunk-WEZ722BS.mjs → chunk-5ZAZ2C7A.mjs} +4 -4
  10. package/dist/{chunk-WEZ722BS.mjs.map → chunk-5ZAZ2C7A.mjs.map} +1 -1
  11. package/dist/{chunk-UWSMHKOF.js → chunk-6ZMTJSQF.js} +78 -78
  12. package/dist/chunk-6ZMTJSQF.js.map +1 -0
  13. package/dist/{chunk-VPOIX2DY.js → chunk-DRORQGN2.js} +27 -27
  14. package/dist/{chunk-VPOIX2DY.js.map → chunk-DRORQGN2.js.map} +1 -1
  15. package/dist/{chunk-QTA5I6FC.mjs → chunk-KDFBN2L2.mjs} +34 -31
  16. package/dist/chunk-KDFBN2L2.mjs.map +1 -0
  17. package/dist/{chunk-QHP2MR2F.js → chunk-KEWRLEYV.js} +4 -4
  18. package/dist/{chunk-QHP2MR2F.js.map → chunk-KEWRLEYV.js.map} +1 -1
  19. package/dist/{chunk-DYWSG42B.mjs → chunk-MQNXKBFP.mjs} +8 -8
  20. package/dist/chunk-MQNXKBFP.mjs.map +1 -0
  21. package/dist/{chunk-3WXMBAGN.js → chunk-MUOTTGCX.js} +27 -28
  22. package/dist/chunk-MUOTTGCX.js.map +1 -0
  23. package/dist/{chunk-S7AV6XEY.js → chunk-SQZGQOKU.js} +32 -29
  24. package/dist/chunk-SQZGQOKU.js.map +1 -0
  25. package/dist/platform/agents-workspace.js +4 -4
  26. package/dist/platform/agents-workspace.mjs +3 -3
  27. package/dist/platform/index.js +15 -15
  28. package/dist/platform/index.mjs +6 -6
  29. package/dist/platform/pages/index.js +325 -320
  30. package/dist/platform/pages/index.js.map +1 -1
  31. package/dist/platform/pages/index.mjs +320 -315
  32. package/dist/platform/pages/index.mjs.map +1 -1
  33. package/dist/platform/workflow-canvas-shell.js +3 -3
  34. package/dist/platform/workflow-canvas-shell.mjs +2 -2
  35. package/package.json +1 -1
  36. package/dist/chunk-3WXMBAGN.js.map +0 -1
  37. package/dist/chunk-DYWSG42B.mjs.map +0 -1
  38. package/dist/chunk-QTA5I6FC.mjs.map +0 -1
  39. package/dist/chunk-S7AV6XEY.js.map +0 -1
  40. package/dist/chunk-UWSMHKOF.js.map +0 -1
  41. package/dist/chunk-XTXLRQ3H.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkS7AV6XEY_js = require('./chunk-S7AV6XEY.js');
4
+ var chunkSQZGQOKU_js = require('./chunk-SQZGQOKU.js');
5
5
  var chunkGCYYGSHU_js = require('./chunk-GCYYGSHU.js');
6
6
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
7
7
  var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
@@ -40,11 +40,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
40
40
  const isCompact = data.displayMode === "compact";
41
41
  if (!config) {
42
42
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
43
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeRunningIndicator, { nodeId: id }),
44
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
45
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
46
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
47
- chunkS7AV6XEY_js.NodeCardHeader,
43
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeRunningIndicator, { nodeId: id }),
44
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
45
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
46
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
47
+ chunkSQZGQOKU_js.NodeCardHeader,
48
48
  {
49
49
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-6 w-6 text-white" }),
50
50
  title: data.label || "Model Provider",
@@ -52,8 +52,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
52
52
  iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
53
53
  }
54
54
  ) }),
55
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
56
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
55
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
56
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
57
57
  ] });
58
58
  }
59
59
  const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
@@ -62,18 +62,18 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
62
62
  const isConfigured = !!(config.credentialRef || config.apiKeyRef);
63
63
  const logo = PROVIDER_LOGOS[config.providerType];
64
64
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
65
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeRunningIndicator, { nodeId: id }),
66
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
67
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
65
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeRunningIndicator, { nodeId: id }),
66
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
67
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
68
68
  /* @__PURE__ */ jsxRuntime.jsx(
69
69
  "button",
70
70
  {
71
71
  type: "button",
72
72
  onClick: () => data.onEdit?.(id),
73
73
  className: "w-full text-left",
74
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkS7AV6XEY_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
74
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkSQZGQOKU_js.NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
75
75
  /* @__PURE__ */ jsxRuntime.jsx(
76
- chunkS7AV6XEY_js.NodeCardHeader,
76
+ chunkSQZGQOKU_js.NodeCardHeader,
77
77
  {
78
78
  icon: logo ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo, alt: providerLabel, className: "h-6 w-6 object-contain", loading: "lazy" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-6 w-6 text-white" }),
79
79
  title: displayName,
@@ -81,11 +81,11 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
81
81
  iconClassName: `flex h-11 w-11 items-center justify-center rounded-xl shadow-lg ${logo ? "bg-white/10 dark:bg-white/5 p-2" : "bg-gradient-to-br from-slate-600 to-slate-700 p-1.5"}`
82
82
  }
83
83
  ),
84
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
85
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeCardBadge, { className: "rounded-full bg-slate-100 px-2 py-0.5 text-[10px] font-semibold text-slate-700 dark:bg-slate-500/20 dark:text-slate-300", children: providerLabel }),
86
- regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: regionLabel }),
87
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-medium ${isConfigured ? "bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-300" : "bg-amber-100 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300"}`, children: isConfigured ? "Configured" : "Setup needed" }),
88
- config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkS7AV6XEY_js.NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: [
84
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
85
+ /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: "zinc", size: "xs", children: providerLabel }),
86
+ regionLabel && /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: "zinc", size: "xs", children: regionLabel }),
87
+ /* @__PURE__ */ jsxRuntime.jsx(chunkGCYYGSHU_js.Badge, { color: isConfigured ? "green" : "amber", size: "xs", children: isConfigured ? "Configured" : "Setup needed" }),
88
+ config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkGCYYGSHU_js.Badge, { color: "zinc", size: "xs", children: [
89
89
  config.modelFilter.length,
90
90
  " models"
91
91
  ] })
@@ -93,8 +93,8 @@ var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, dat
93
93
  ] })
94
94
  }
95
95
  ),
96
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
97
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
96
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
97
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
98
98
  ] });
99
99
  });
100
100
  var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected }) {
@@ -103,10 +103,10 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
103
103
  const isCompact = data.displayMode === "compact";
104
104
  const keyPreview = config.key ? config.key.slice(0, 30) : "";
105
105
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
106
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeRunningIndicator, { nodeId: id }),
107
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
106
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeRunningIndicator, { nodeId: id }),
107
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-cyan-500" }),
108
108
  /* @__PURE__ */ jsxRuntime.jsxs(
109
- chunkS7AV6XEY_js.NodeInteractiveCard,
109
+ chunkSQZGQOKU_js.NodeInteractiveCard,
110
110
  {
111
111
  nodeId: id,
112
112
  onEdit,
@@ -115,27 +115,27 @@ var S3WriteFlowNode = react.memo(function S3WriteFlowNode2({ id, data, selected
115
115
  nodeType: "s3_write",
116
116
  children: [
117
117
  /* @__PURE__ */ jsxRuntime.jsx(
118
- chunkS7AV6XEY_js.NodeCardHeader,
118
+ chunkSQZGQOKU_js.NodeCardHeader,
119
119
  {
120
- icon: /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
120
+ icon: /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeIconBubble, { tone: "s3_write", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CloudArrowUpIcon, { className: "h-5 w-5 text-white" }) }),
121
121
  title: label,
122
122
  description: t("s3WriteNodeDescription"),
123
123
  compact: isCompact,
124
124
  iconClassName: ""
125
125
  }
126
126
  ),
127
- /* @__PURE__ */ jsxRuntime.jsxs(chunkS7AV6XEY_js.NodeCardMeta, { compact: isCompact, children: [
127
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkSQZGQOKU_js.NodeCardMeta, { compact: isCompact, children: [
128
128
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
129
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
130
- config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
129
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeCardBadge, { tone: "s3_write", children: t("s3WriteNode") }),
130
+ config.bucket && /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeCardBadge, { tone: "s3_write", soft: true, children: config.bucket }),
131
131
  keyPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: keyPreview })
132
132
  ] }),
133
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.NodeCardDeleteAction, { nodeId: id, onDelete })
133
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.NodeCardDeleteAction, { nodeId: id, onDelete })
134
134
  ] })
135
135
  ]
136
136
  }
137
137
  ),
138
- /* @__PURE__ */ jsxRuntime.jsx(chunkS7AV6XEY_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
138
+ /* @__PURE__ */ jsxRuntime.jsx(chunkSQZGQOKU_js.WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-500" })
139
139
  ] });
140
140
  });
141
141
  function AnthropicModelIcon({ className }) {
@@ -611,13 +611,13 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
611
611
  ] });
612
612
  }
613
613
  function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFramework, setSelectedFramework, markDirty, connectedProviderTypes }) {
614
- const frameworkKeys = Object.keys(chunkS7AV6XEY_js.FRAMEWORK_META);
614
+ const frameworkKeys = Object.keys(chunkSQZGQOKU_js.FRAMEWORK_META);
615
615
  const hasProviderConstraints = connectedProviderTypes.length > 0;
616
- const compatibleModels = chunkS7AV6XEY_js.getCompatibleModels(models, selectedFramework);
616
+ const compatibleModels = chunkSQZGQOKU_js.getCompatibleModels(models, selectedFramework);
617
617
  const handleFrameworkChange = react.useCallback((newFramework) => {
618
618
  setSelectedFramework(newFramework);
619
- if (!chunkS7AV6XEY_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
620
- const compatible = chunkS7AV6XEY_js.getCompatibleModels(models, newFramework);
619
+ if (!chunkSQZGQOKU_js.isModelCompatibleWithFramework(selectedModelId, newFramework)) {
620
+ const compatible = chunkSQZGQOKU_js.getCompatibleModels(models, newFramework);
621
621
  if (compatible.length > 0) {
622
622
  setSelectedModelId(compatible[0].id);
623
623
  }
@@ -628,10 +628,10 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
628
628
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
629
629
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-xs font-medium text-gray-500 dark:text-gray-400", children: t("agentDrawer.framework") }),
630
630
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
631
- const meta = chunkS7AV6XEY_js.FRAMEWORK_META[key];
631
+ const meta = chunkSQZGQOKU_js.FRAMEWORK_META[key];
632
632
  const isSelected = key === selectedFramework;
633
- const compatCount = chunkS7AV6XEY_js.getCompatibleModels(models, key).length;
634
- const isCompatibleWithProviders = !hasProviderConstraints || chunkS7AV6XEY_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
633
+ const compatCount = chunkSQZGQOKU_js.getCompatibleModels(models, key).length;
634
+ const isCompatibleWithProviders = !hasProviderConstraints || chunkSQZGQOKU_js.isFrameworkCompatibleWithProviders(key, connectedProviderTypes);
635
635
  return /* @__PURE__ */ jsxRuntime.jsxs(
636
636
  "button",
637
637
  {
@@ -663,7 +663,7 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
663
663
  ] }),
664
664
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: models.map((model) => {
665
665
  const isSelected = model.id === selectedModelId;
666
- const isCompatible = chunkS7AV6XEY_js.isModelCompatibleWithFramework(model.id, selectedFramework);
666
+ const isCompatible = chunkSQZGQOKU_js.isModelCompatibleWithFramework(model.id, selectedFramework);
667
667
  const { IconComponent, color, providerLabel } = getModelIcon(model.id);
668
668
  return /* @__PURE__ */ jsxRuntime.jsxs(
669
669
  "button",
@@ -821,7 +821,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
821
821
  ] }),
822
822
  tool.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: tool.description }),
823
823
  tool.compatibleFrameworks && tool.compatibleFrameworks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex flex-wrap gap-0.5", children: tool.compatibleFrameworks.map((framework) => {
824
- const meta = chunkS7AV6XEY_js.getFrameworkMeta(framework);
824
+ const meta = chunkSQZGQOKU_js.getFrameworkMeta(framework);
825
825
  const isCurrentFw = framework === agentFramework;
826
826
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[8px] font-medium ${isCurrentFw ? meta.badgeColor : "bg-gray-100 text-gray-500 dark:bg-white/5 dark:text-gray-400"}`, children: [
827
827
  /* @__PURE__ */ jsxRuntime.jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
@@ -886,7 +886,7 @@ function EngineTab({
886
886
  const compatibleProviders = findCompatibleProviders(selectedModelId, modelProviders);
887
887
  const configuredCompatible = compatibleProviders.filter((p) => p.configured);
888
888
  const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
889
- const frameworkMeta = chunkS7AV6XEY_js.getFrameworkMeta(selectedFramework);
889
+ const frameworkMeta = chunkSQZGQOKU_js.getFrameworkMeta(selectedFramework);
890
890
  const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-gray-800 outline-none transition-colors focus:ring-1 focus:ring-indigo-300/40 dark:text-gray-200 dark:focus:ring-indigo-500/20";
891
891
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-hidden rounded-2xl border border-indigo-500/20 bg-gradient-to-b from-indigo-500/[0.04] via-violet-500/[0.03] to-purple-500/[0.04] dark:border-indigo-400/20 dark:from-indigo-500/[0.10] dark:via-violet-500/[0.06] dark:to-purple-500/[0.08]", children: [
892
892
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1030,9 +1030,9 @@ function EngineTab({
1030
1030
  }
1031
1031
  function AgentModal({ onSaved, onPersist }) {
1032
1032
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1033
- const activeModal = chunkS7AV6XEY_js.useModalStore((s) => s.activeModal);
1034
- const agentData = chunkS7AV6XEY_js.useModalStore((s) => s.agentData);
1035
- const closeModal = chunkS7AV6XEY_js.useModalStore((s) => s.closeModal);
1033
+ const activeModal = chunkSQZGQOKU_js.useModalStore((s) => s.activeModal);
1034
+ const agentData = chunkSQZGQOKU_js.useModalStore((s) => s.agentData);
1035
+ const closeModal = chunkSQZGQOKU_js.useModalStore((s) => s.closeModal);
1036
1036
  const open = activeModal === "agent";
1037
1037
  const agent = agentData?.agent ?? null;
1038
1038
  const models = agentData?.models ?? [];
@@ -1477,7 +1477,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1477
1477
  const markDirty = useSubworkflowStore((s) => s.markDirty);
1478
1478
  const markSaved = useSubworkflowStore((s) => s.markSaved);
1479
1479
  const closeModal = useSubworkflowStore((s) => s.closeModal);
1480
- const agentBehind = chunkS7AV6XEY_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
1480
+ const agentBehind = chunkSQZGQOKU_js.useModalStore((s) => s.activeModal === "agent" ? s.agentData?.agent?.name : null);
1481
1481
  const isCreateMode = !tool?.toolId;
1482
1482
  const initialGraph = react.useMemo(() => {
1483
1483
  const config = tool?.config;
@@ -1506,9 +1506,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1506
1506
  }, [tool, onSaved, name, category, description, timeoutMs, latestGraphRef, markSaved]);
1507
1507
  if (!tool) return null;
1508
1508
  const categoryKey = category ?? "external";
1509
- const gradient = tool.color ?? chunkS7AV6XEY_js.CATEGORY_COLORS[categoryKey] ?? chunkS7AV6XEY_js.CATEGORY_COLORS.external;
1510
- const categoryPill = chunkS7AV6XEY_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkS7AV6XEY_js.CATEGORY_PILL_COLORS.external;
1511
- const IconComponent = chunkS7AV6XEY_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
1509
+ const gradient = tool.color ?? chunkSQZGQOKU_js.CATEGORY_COLORS[categoryKey] ?? chunkSQZGQOKU_js.CATEGORY_COLORS.external;
1510
+ const categoryPill = chunkSQZGQOKU_js.CATEGORY_PILL_COLORS[categoryKey] ?? chunkSQZGQOKU_js.CATEGORY_PILL_COLORS.external;
1511
+ const IconComponent = chunkSQZGQOKU_js.ICON_MAP[tool.icon ?? ""] ?? outline.ArrowPathRoundedSquareIcon;
1512
1512
  const graph = latestGraphRef.current;
1513
1513
  const startNode = graph.nodes.find((n) => n.type === "start");
1514
1514
  const endNode = graph.nodes.find((n) => n.type === "end");
@@ -1573,7 +1573,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1573
1573
  {
1574
1574
  type: "button",
1575
1575
  onClick: () => setCategory(cat),
1576
- className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkS7AV6XEY_js.CATEGORY_PILL_COLORS[cat] ?? chunkS7AV6XEY_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-gray-500 hover:bg-white/50 dark:bg-white/5 dark:text-gray-400"}`,
1576
+ className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${chunkSQZGQOKU_js.CATEGORY_PILL_COLORS[cat] ?? chunkSQZGQOKU_js.CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-gray-500 hover:bg-white/50 dark:bg-white/5 dark:text-gray-400"}`,
1577
1577
  children: cat
1578
1578
  },
1579
1579
  cat
@@ -1660,7 +1660,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1660
1660
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-auto" })
1661
1661
  ] }),
1662
1662
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1663
- chunkS7AV6XEY_js.WorkflowCanvas,
1663
+ chunkSQZGQOKU_js.WorkflowCanvas,
1664
1664
  {
1665
1665
  initialGraph,
1666
1666
  agents: [],
@@ -1676,9 +1676,9 @@ function SubworkflowModal({ onSaved, onMaximize }) {
1676
1676
  }
1677
1677
  function PipelineSettingsModal({ onSave }) {
1678
1678
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1679
- const activeModal = chunkS7AV6XEY_js.useModalStore((s) => s.activeModal);
1680
- const data = chunkS7AV6XEY_js.useModalStore((s) => s.pipelineSettingsData);
1681
- const closeModal = chunkS7AV6XEY_js.useModalStore((s) => s.closeModal);
1679
+ const activeModal = chunkSQZGQOKU_js.useModalStore((s) => s.activeModal);
1680
+ const data = chunkSQZGQOKU_js.useModalStore((s) => s.pipelineSettingsData);
1681
+ const closeModal = chunkSQZGQOKU_js.useModalStore((s) => s.closeModal);
1682
1682
  const open = activeModal === "pipeline-settings";
1683
1683
  const [nameValue, setNameValue] = react.useState("");
1684
1684
  const [descriptionValue, setDescriptionValue] = react.useState("");
@@ -3027,8 +3027,8 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
3027
3027
  ] });
3028
3028
  }
3029
3029
  function LogicNodeItemCard({ item, translationFunction }) {
3030
- const IconComponent = chunkS7AV6XEY_js.LOGIC_ICON_MAP[item.nodeType];
3031
- const gradient = chunkS7AV6XEY_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
3030
+ const IconComponent = chunkSQZGQOKU_js.LOGIC_ICON_MAP[item.nodeType];
3031
+ const gradient = chunkSQZGQOKU_js.LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-gray-400 to-gray-500";
3032
3032
  const defaultConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig(item.nodeType);
3033
3033
  const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
3034
3034
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3099,7 +3099,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3099
3099
  [entityTypes, normalizedQuery]
3100
3100
  );
3101
3101
  const filteredLogicItems = react.useMemo(() => {
3102
- const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkS7AV6XEY_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
3102
+ const visibleByDefault = LOGIC_NODE_ITEMS.filter((item) => !chunkSQZGQOKU_js.EXPERIMENTAL_NODE_TYPES.has(item.nodeType));
3103
3103
  if (!normalizedQuery) return visibleByDefault;
3104
3104
  return visibleByDefault.filter(
3105
3105
  (item) => t(item.nameKey).toLowerCase().includes(normalizedQuery) || t(item.descriptionKey).toLowerCase().includes(normalizedQuery)
@@ -3312,8 +3312,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
3312
3312
  limit: entity.defaultLimit
3313
3313
  });
3314
3314
  const dsLogo = getDatasourceLogo(entity.id);
3315
- const EntityIcon = chunkS7AV6XEY_js.getEntityIcon(entity.id);
3316
- const entityGradient = chunkS7AV6XEY_js.getEntityGradient(entity.id);
3315
+ const EntityIcon = chunkSQZGQOKU_js.getEntityIcon(entity.id);
3316
+ const entityGradient = chunkSQZGQOKU_js.getEntityGradient(entity.id);
3317
3317
  return /* @__PURE__ */ jsxRuntime.jsxs(
3318
3318
  "div",
3319
3319
  {
@@ -3668,9 +3668,9 @@ function formatDuration2(durationMs) {
3668
3668
  }
3669
3669
  function RunPanel({ open, onClose, onRun, onStop }) {
3670
3670
  const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.runPanel");
3671
- const nodes = chunkS7AV6XEY_js.useWorkflowStore((state) => state.nodes);
3672
- const isRunning = chunkS7AV6XEY_js.useWorkflowStore((state) => state.isRunning);
3673
- const nodeResults = chunkS7AV6XEY_js.useWorkflowStore((state) => state.nodeResults);
3671
+ const nodes = chunkSQZGQOKU_js.useWorkflowStore((state) => state.nodes);
3672
+ const isRunning = chunkSQZGQOKU_js.useWorkflowStore((state) => state.isRunning);
3673
+ const nodeResults = chunkSQZGQOKU_js.useWorkflowStore((state) => state.nodeResults);
3674
3674
  const startNode = nodes.find((node) => node.type === "start");
3675
3675
  const hasEndNode = nodes.some((node) => node.type === "end");
3676
3676
  const hasValidStartConfig = Boolean(
@@ -4001,8 +4001,8 @@ function inferVariables(config, nodeType) {
4001
4001
  }
4002
4002
  function VariableInspector({ open, onClose }) {
4003
4003
  const translations = chunkYXN2K77G_js.useTranslations("agents.workflow.variableInspector");
4004
- const nodes = chunkS7AV6XEY_js.useWorkflowStore((state) => state.nodes);
4005
- const edges = chunkS7AV6XEY_js.useWorkflowStore((state) => state.edges);
4004
+ const nodes = chunkSQZGQOKU_js.useWorkflowStore((state) => state.nodes);
4005
+ const edges = chunkSQZGQOKU_js.useWorkflowStore((state) => state.edges);
4006
4006
  const [expandedNodes, setExpandedNodes] = react.useState(/* @__PURE__ */ new Set());
4007
4007
  const toggleNodeExpansion = react.useCallback((nodeId) => {
4008
4008
  setExpandedNodes((current) => {
@@ -4064,8 +4064,8 @@ function VariableInspector({ open, onClose }) {
4064
4064
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-gray-500 dark:text-gray-400", children: translations("noNodes") })
4065
4065
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-gray-100 dark:divide-gray-800", children: nodeVariableEntries.map((entry) => {
4066
4066
  const isExpanded = expandedNodes.has(entry.nodeId);
4067
- const IconComponent = chunkS7AV6XEY_js.LOGIC_ICON_MAP[entry.nodeType];
4068
- const gradient = chunkS7AV6XEY_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
4067
+ const IconComponent = chunkSQZGQOKU_js.LOGIC_ICON_MAP[entry.nodeType];
4068
+ const gradient = chunkSQZGQOKU_js.LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-gray-400 to-gray-500";
4069
4069
  const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
4070
4070
  const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
4071
4071
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
@@ -4131,7 +4131,7 @@ function RunInputDialog({
4131
4131
  onRun
4132
4132
  }) {
4133
4133
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow.runInputDialog");
4134
- const nodes = chunkS7AV6XEY_js.useWorkflowStore((state) => state.nodes);
4134
+ const nodes = chunkSQZGQOKU_js.useWorkflowStore((state) => state.nodes);
4135
4135
  const [values, setValues] = react.useState({});
4136
4136
  const inputVariableNames = react.useMemo(() => {
4137
4137
  const storeStartNode = nodes.find((node) => node.type === "start");
@@ -4212,8 +4212,8 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
4212
4212
  const [isLoadingRuns, setIsLoadingRuns] = react.useState(false);
4213
4213
  const [selectedRun, setSelectedRun] = react.useState(null);
4214
4214
  const [selectedNode, setSelectedNode] = react.useState(null);
4215
- const isRunning = chunkS7AV6XEY_js.useWorkflowStore((state) => state.isRunning);
4216
- const nodeResults = chunkS7AV6XEY_js.useWorkflowStore((state) => state.nodeResults);
4215
+ const isRunning = chunkSQZGQOKU_js.useWorkflowStore((state) => state.isRunning);
4216
+ const nodeResults = chunkSQZGQOKU_js.useWorkflowStore((state) => state.nodeResults);
4217
4217
  const refreshRuns = react.useCallback(async () => {
4218
4218
  setIsLoadingRuns(true);
4219
4219
  try {
@@ -4391,7 +4391,7 @@ var AutoSaveWorkspace = react.memo(function AutoSaveWorkspace2({
4391
4391
  onAutoSaveGraph(graph);
4392
4392
  }, [onAutoSaveGraph, onGraphSnapshot]);
4393
4393
  return /* @__PURE__ */ jsxRuntime.jsx(
4394
- chunkS7AV6XEY_js.Workspace,
4394
+ chunkSQZGQOKU_js.Workspace,
4395
4395
  {
4396
4396
  ...workspaceProps,
4397
4397
  onGraphChange: handleGraphChange
@@ -4762,14 +4762,14 @@ function DslImportModal({ open, onClose, onImport }) {
4762
4762
  }
4763
4763
 
4764
4764
  // src/astrlabe/store/selectors.ts
4765
- var useCanUndo = () => chunkS7AV6XEY_js.useWorkflowStore((state) => state.past.length > 0);
4766
- var useCanRedo = () => chunkS7AV6XEY_js.useWorkflowStore((state) => state.future.length > 0);
4767
- var useHasCopied = () => chunkS7AV6XEY_js.useWorkflowStore((state) => state.clipboard !== null);
4768
- var useContextMenu = () => chunkS7AV6XEY_js.useWorkflowStore((state) => state.contextMenu);
4769
- var useEditingNodeId = () => chunkS7AV6XEY_js.useWorkflowStore((state) => state.editingNodeId);
4770
- var useSelectedNodeCount = () => chunkS7AV6XEY_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
4771
- var useIsRunning = () => chunkS7AV6XEY_js.useWorkflowStore((state) => state.isRunning);
4772
- var useNodeResults = () => chunkS7AV6XEY_js.useWorkflowStore((state) => state.nodeResults);
4765
+ var useCanUndo = () => chunkSQZGQOKU_js.useWorkflowStore((state) => state.past.length > 0);
4766
+ var useCanRedo = () => chunkSQZGQOKU_js.useWorkflowStore((state) => state.future.length > 0);
4767
+ var useHasCopied = () => chunkSQZGQOKU_js.useWorkflowStore((state) => state.clipboard !== null);
4768
+ var useContextMenu = () => chunkSQZGQOKU_js.useWorkflowStore((state) => state.contextMenu);
4769
+ var useEditingNodeId = () => chunkSQZGQOKU_js.useWorkflowStore((state) => state.editingNodeId);
4770
+ var useSelectedNodeCount = () => chunkSQZGQOKU_js.useWorkflowStore((state) => state.nodes.filter((node) => node.selected).length);
4771
+ var useIsRunning = () => chunkSQZGQOKU_js.useWorkflowStore((state) => state.isRunning);
4772
+ var useNodeResults = () => chunkSQZGQOKU_js.useWorkflowStore((state) => state.nodeResults);
4773
4773
  var DEFAULT_MAX_HISTORY = 50;
4774
4774
  function useUndoRedo(nodes, edges, setNodes, setEdges, maxHistory = DEFAULT_MAX_HISTORY) {
4775
4775
  const pastRef = react.useRef([]);
@@ -5093,5 +5093,5 @@ exports.useNodeResults = useNodeResults;
5093
5093
  exports.useSelectedNodeCount = useSelectedNodeCount;
5094
5094
  exports.useSubworkflowStore = useSubworkflowStore;
5095
5095
  exports.useUndoRedo = useUndoRedo;
5096
- //# sourceMappingURL=chunk-UWSMHKOF.js.map
5097
- //# sourceMappingURL=chunk-UWSMHKOF.js.map
5096
+ //# sourceMappingURL=chunk-6ZMTJSQF.js.map
5097
+ //# sourceMappingURL=chunk-6ZMTJSQF.js.map