@datatechsolutions/ui 2.11.16 → 2.11.18

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.
@@ -338,7 +338,7 @@ var LOGIC_NODE_GRADIENTS = {
338
338
  note: "from-yellow-400 to-amber-500",
339
339
  entity: "from-blue-400 to-cyan-500",
340
340
  datasource: "from-cyan-500 to-blue-600",
341
- model_provider: "from-rose-500 to-pink-600",
341
+ model_provider: "from-slate-500 to-gray-600",
342
342
  group: "from-slate-400 to-gray-500"
343
343
  };
344
344
  var LOGIC_NODE_BADGE_COLORS = {
@@ -361,7 +361,7 @@ var LOGIC_NODE_BADGE_COLORS = {
361
361
  note: "bg-yellow-100 text-yellow-700 dark:bg-yellow-500/20 dark:text-yellow-300",
362
362
  entity: "bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300",
363
363
  datasource: "bg-cyan-100 text-cyan-700 dark:bg-cyan-500/20 dark:text-cyan-300",
364
- model_provider: "bg-rose-100 text-rose-700 dark:bg-rose-500/20 dark:text-rose-300",
364
+ model_provider: "bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300",
365
365
  group: "bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300"
366
366
  };
367
367
  var LOGIC_NODE_BADGE_SOFT_COLORS = {
@@ -384,7 +384,7 @@ var LOGIC_NODE_BADGE_SOFT_COLORS = {
384
384
  note: "bg-yellow-50 text-yellow-600 dark:bg-yellow-500/20 dark:text-yellow-400",
385
385
  entity: "bg-blue-50 text-blue-600 dark:bg-blue-500/20 dark:text-blue-400",
386
386
  datasource: "bg-cyan-50 text-cyan-600 dark:bg-cyan-500/20 dark:text-cyan-400",
387
- model_provider: "bg-rose-50 text-rose-600 dark:bg-rose-500/20 dark:text-rose-400",
387
+ model_provider: "bg-slate-50 text-slate-600 dark:bg-slate-500/20 dark:text-slate-400",
388
388
  group: "bg-slate-50 text-slate-600 dark:bg-slate-500/20 dark:text-slate-400"
389
389
  };
390
390
  var LOGIC_ICON_MAP = {
@@ -436,7 +436,7 @@ var NODE_BORDER_COLORS = {
436
436
  list_operator: "border-lime-300/50 dark:border-lime-600/50",
437
437
  note: "border-gray-200/50 dark:border-gray-700/50",
438
438
  datasource: "border-cyan-300/50 dark:border-cyan-600/50",
439
- model_provider: "border-rose-300/50 dark:border-rose-600/50"
439
+ model_provider: "border-slate-300/50 dark:border-slate-600/50"
440
440
  };
441
441
  function getNodeStateClass(selected, nodeType, customBorder) {
442
442
  if (selected) return NODE_SELECTED_CLASS;
@@ -467,7 +467,7 @@ var MINIMAP_NODE_COLORS = {
467
467
  note: "#eab308",
468
468
  entity: "#3b82f6",
469
469
  datasource: "#06b6d4",
470
- model_provider: "#f43f5e",
470
+ model_provider: "#64748b",
471
471
  group: "#64748b"
472
472
  };
473
473
  var LOGIC_NODE_HANDLE_COLORS = {
@@ -490,7 +490,7 @@ var LOGIC_NODE_HANDLE_COLORS = {
490
490
  note: "!bg-yellow-500",
491
491
  entity: "!bg-blue-500",
492
492
  datasource: "!bg-cyan-500",
493
- model_provider: "!bg-rose-500",
493
+ model_provider: "!bg-slate-500",
494
494
  group: "!bg-slate-500"
495
495
  };
496
496
  var INSERTABLE_NODES = [
@@ -2771,7 +2771,11 @@ var PROVIDER_LOGOS = {
2771
2771
  openai_api: "https://www.svgrepo.com/show/306500/openai.svg",
2772
2772
  google_vertex: SI("googlegemini", "8E75B2"),
2773
2773
  azure_openai: SI("microsoftazure", "0078D4"),
2774
- anthropic_api: SI("anthropic", "D4A27F")
2774
+ anthropic_api: SI("anthropic", "D4A27F"),
2775
+ groq: SI("groq", "000000"),
2776
+ mistral: SI("mistralai", "FF7000"),
2777
+ huggingface: SI("huggingface", "FFD21E"),
2778
+ ollama: SI("ollama", "FFFFFF")
2775
2779
  };
2776
2780
  var PROVIDER_TYPE_LABELS = {
2777
2781
  aws_bedrock: "AWS Bedrock",
@@ -2779,6 +2783,10 @@ var PROVIDER_TYPE_LABELS = {
2779
2783
  google_vertex: "Google Vertex AI",
2780
2784
  azure_openai: "Azure OpenAI",
2781
2785
  anthropic_api: "Anthropic API",
2786
+ groq: "Groq Cloud",
2787
+ mistral: "Mistral AI",
2788
+ huggingface: "Hugging Face",
2789
+ ollama: "Ollama (Local)",
2782
2790
  custom: "Custom"
2783
2791
  };
2784
2792
  var ModelProviderFlowNode = memo(function ModelProviderFlowNode2({ id, data, selected }) {
@@ -2798,8 +2806,8 @@ var ModelProviderFlowNode = memo(function ModelProviderFlowNode2({ id, data, sel
2798
2806
  iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
2799
2807
  }
2800
2808
  ) }),
2801
- /* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Right, id: "right-out", colorClass: "!bg-rose-500" }),
2802
- /* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Bottom, id: "bottom-out", colorClass: "!bg-rose-500" })
2809
+ /* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
2810
+ /* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
2803
2811
  ] });
2804
2812
  }
2805
2813
  const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
@@ -2824,11 +2832,11 @@ var ModelProviderFlowNode = memo(function ModelProviderFlowNode2({ id, data, sel
2824
2832
  icon: logo ? /* @__PURE__ */ jsx("img", { src: logo, alt: providerLabel, className: "h-6 w-6 object-contain", loading: "lazy" }) : /* @__PURE__ */ jsx(KeyIcon, { className: "h-6 w-6 text-white" }),
2825
2833
  title: displayName,
2826
2834
  description: providerLabel,
2827
- iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-rose-500 to-pink-600 shadow-lg p-1.5"
2835
+ 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"}`
2828
2836
  }
2829
2837
  ),
2830
2838
  /* @__PURE__ */ jsx(NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
2831
- /* @__PURE__ */ jsx(NodeCardBadge, { className: "rounded-full bg-rose-100 px-2 py-0.5 text-[10px] font-semibold text-rose-700 dark:bg-rose-500/20 dark:text-rose-300", children: providerLabel }),
2839
+ /* @__PURE__ */ jsx(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 }),
2832
2840
  regionLabel && /* @__PURE__ */ jsx(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 }),
2833
2841
  /* @__PURE__ */ jsx(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" }),
2834
2842
  config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxs(NodeCardBadge, { className: "rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600 dark:bg-white/10 dark:text-gray-300", children: [
@@ -2839,8 +2847,8 @@ var ModelProviderFlowNode = memo(function ModelProviderFlowNode2({ id, data, sel
2839
2847
  ] })
2840
2848
  }
2841
2849
  ),
2842
- /* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Right, id: "right-out", colorClass: "!bg-rose-500" }),
2843
- /* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Bottom, id: "bottom-out", colorClass: "!bg-rose-500" })
2850
+ /* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
2851
+ /* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
2844
2852
  ] });
2845
2853
  });
2846
2854
  var GROUP_COLORS = {
@@ -5042,7 +5050,11 @@ var PROVIDER_TYPES = [
5042
5050
  { value: "google_vertex", label: "Google Vertex AI" },
5043
5051
  { value: "azure_openai", label: "Azure OpenAI" },
5044
5052
  { value: "anthropic_api", label: "Anthropic API" },
5045
- { value: "custom", label: "Custom" }
5053
+ { value: "groq", label: "Groq Cloud" },
5054
+ { value: "mistral", label: "Mistral AI" },
5055
+ { value: "huggingface", label: "Hugging Face Inference" },
5056
+ { value: "ollama", label: "Ollama (Local)" },
5057
+ { value: "custom", label: "Custom OpenAI-compatible" }
5046
5058
  ];
5047
5059
  var REGION_OPTIONS = {
5048
5060
  aws_bedrock: [
@@ -5052,19 +5064,53 @@ var REGION_OPTIONS = {
5052
5064
  { value: "eu-central-1", label: "Europe (Frankfurt)" },
5053
5065
  { value: "ap-northeast-1", label: "Asia Pacific (Tokyo)" },
5054
5066
  { value: "ap-southeast-1", label: "Asia Pacific (Singapore)" },
5055
- { value: "sa-east-1", label: "South America (S\xE3o Paulo)" }
5067
+ { value: "ap-south-1", label: "Asia Pacific (Mumbai)" },
5068
+ { value: "sa-east-1", label: "South America (S\xE3o Paulo)" },
5069
+ { value: "ca-central-1", label: "Canada (Central)" }
5056
5070
  ],
5057
5071
  google_vertex: [
5058
5072
  { value: "us-central1", label: "US Central (Iowa)" },
5059
5073
  { value: "us-east4", label: "US East (Virginia)" },
5060
5074
  { value: "europe-west4", label: "Europe West (Netherlands)" },
5061
- { value: "asia-northeast1", label: "Asia NE (Tokyo)" }
5075
+ { value: "europe-west1", label: "Europe West (Belgium)" },
5076
+ { value: "asia-northeast1", label: "Asia NE (Tokyo)" },
5077
+ { value: "asia-southeast1", label: "Asia SE (Singapore)" },
5078
+ { value: "southamerica-east1", label: "South America (S\xE3o Paulo)" }
5062
5079
  ],
5063
5080
  azure_openai: [
5064
5081
  { value: "eastus", label: "East US" },
5082
+ { value: "eastus2", label: "East US 2" },
5065
5083
  { value: "westeurope", label: "West Europe" },
5066
5084
  { value: "swedencentral", label: "Sweden Central" },
5067
- { value: "japaneast", label: "Japan East" }
5085
+ { value: "japaneast", label: "Japan East" },
5086
+ { value: "australiaeast", label: "Australia East" },
5087
+ { value: "canadaeast", label: "Canada East" },
5088
+ { value: "uksouth", label: "UK South" }
5089
+ ]
5090
+ };
5091
+ var MODEL_FAMILIES = {
5092
+ aws_bedrock: [
5093
+ { 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"] },
5094
+ { id: "nova", label: "Amazon Nova", models: ["amazon.nova-lite-v1:0", "amazon.nova-pro-v1:0"] },
5095
+ { id: "llama", label: "Meta Llama", models: ["meta.llama3-3-70b-instruct-v1:0"] },
5096
+ { id: "mistral-bedrock", label: "Mistral AI", models: ["mistral.mistral-large-2411-v1:0"] }
5097
+ ],
5098
+ openai_api: [
5099
+ { id: "gpt5", label: "GPT-5 Family", models: ["openai.gpt-5-v1:0", "openai.gpt-5-mini-v1:0"] }
5100
+ ],
5101
+ google_vertex: [
5102
+ { id: "gemini", label: "Gemini Family", models: ["google.gemini-3-flash-v1:0", "google.gemini-3-1-pro-v1:0"] }
5103
+ ],
5104
+ anthropic_api: [
5105
+ { 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"] }
5106
+ ],
5107
+ groq: [
5108
+ { id: "groq-llama", label: "Llama (Groq)", models: ["meta.llama3-3-70b-instruct-v1:0"] },
5109
+ { id: "groq-mixtral", label: "Mixtral (Groq)", models: ["mistral.mixtral-8x7b-v1:0"] }
5110
+ ],
5111
+ mistral: [
5112
+ { id: "mistral-large", label: "Mistral Large", models: ["mistral.mistral-large-2411-v1:0"] },
5113
+ { id: "mistral-small", label: "Mistral Small", models: ["mistral.mistral-small-v1:0"] }
5068
5114
  ]
5069
5115
  };
5070
5116
  function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
@@ -5075,12 +5121,40 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5075
5121
  const [endpoint, setEndpoint] = useState(config.endpoint ?? "");
5076
5122
  const [credentialRef, setCredentialRef] = useState(config.credentialRef ?? "");
5077
5123
  const [apiKeyRef, setApiKeyRef] = useState(config.apiKeyRef ?? "");
5124
+ const [selectedFamilies, setSelectedFamilies] = useState(() => {
5125
+ const families2 = MODEL_FAMILIES[config.providerType] ?? [];
5126
+ const filter = new Set(config.modelFilter ?? []);
5127
+ const selected = /* @__PURE__ */ new Set();
5128
+ for (const family of families2) {
5129
+ if (family.models.some((m) => filter.has(m)) || filter.size === 0) {
5130
+ selected.add(family.id);
5131
+ }
5132
+ }
5133
+ return selected;
5134
+ });
5078
5135
  const regions = REGION_OPTIONS[providerType] ?? [];
5136
+ const families = MODEL_FAMILIES[providerType] ?? [];
5079
5137
  const showRegion = regions.length > 0;
5080
- const showEndpoint = providerType === "custom" || providerType === "azure_openai";
5081
- const showApiKey = providerType === "openai_api" || providerType === "anthropic_api" || providerType === "custom";
5138
+ const showEndpoint = providerType === "custom" || providerType === "azure_openai" || providerType === "ollama";
5139
+ const showApiKey = ["openai_api", "anthropic_api", "groq", "mistral", "huggingface", "custom"].includes(providerType);
5082
5140
  const showCredentialRef = providerType === "aws_bedrock" || providerType === "google_vertex";
5141
+ const handleToggleFamily = (familyId) => {
5142
+ setSelectedFamilies((previous) => {
5143
+ const next = new Set(previous);
5144
+ if (next.has(familyId)) next.delete(familyId);
5145
+ else next.add(familyId);
5146
+ return next;
5147
+ });
5148
+ };
5149
+ const handleProviderChange = (value) => {
5150
+ const newType = value;
5151
+ setProviderType(newType);
5152
+ setRegion("");
5153
+ const newFamilies = MODEL_FAMILIES[newType] ?? [];
5154
+ setSelectedFamilies(new Set(newFamilies.map((f) => f.id)));
5155
+ };
5083
5156
  const handleSave = () => {
5157
+ const modelFilter = families.filter((f) => selectedFamilies.has(f.id)).flatMap((f) => f.models);
5084
5158
  onSave({
5085
5159
  ...config,
5086
5160
  providerType,
@@ -5088,7 +5162,8 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5088
5162
  region: region || void 0,
5089
5163
  endpoint: endpoint.trim() || void 0,
5090
5164
  credentialRef: credentialRef.trim() || void 0,
5091
- apiKeyRef: apiKeyRef.trim() || void 0
5165
+ apiKeyRef: apiKeyRef.trim() || void 0,
5166
+ modelFilter
5092
5167
  });
5093
5168
  };
5094
5169
  return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
@@ -5107,10 +5182,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5107
5182
  {
5108
5183
  label: t("providerTypeLabel"),
5109
5184
  value: providerType,
5110
- onValueChange: (value) => {
5111
- setProviderType(value);
5112
- setRegion("");
5113
- },
5185
+ onValueChange: handleProviderChange,
5114
5186
  options: PROVIDER_TYPES.map((pt) => ({ value: pt.value, label: pt.label }))
5115
5187
  }
5116
5188
  ),
@@ -5130,7 +5202,7 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5130
5202
  label: t("endpointLabel"),
5131
5203
  value: endpoint,
5132
5204
  onValueChange: setEndpoint,
5133
- placeholder: t("endpointPlaceholder")
5205
+ placeholder: providerType === "ollama" ? "http://localhost:11434" : t("endpointPlaceholder")
5134
5206
  }
5135
5207
  ),
5136
5208
  showApiKey && /* @__PURE__ */ jsx(
@@ -5150,9 +5222,34 @@ function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
5150
5222
  label: t("credentialRefLabel"),
5151
5223
  value: credentialRef,
5152
5224
  onValueChange: setCredentialRef,
5153
- placeholder: t("credentialRefPlaceholder")
5225
+ placeholder: providerType === "aws_bedrock" ? "arn:aws:iam::role/bedrock-role" : t("credentialRefPlaceholder")
5154
5226
  }
5155
5227
  ),
5228
+ families.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
5229
+ /* @__PURE__ */ jsx("label", { className: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("modelFamiliesLabel") }),
5230
+ /* @__PURE__ */ jsx("div", { className: "space-y-1.5", children: families.map((family) => {
5231
+ const isSelected = selectedFamilies.has(family.id);
5232
+ return /* @__PURE__ */ jsxs(
5233
+ "button",
5234
+ {
5235
+ type: "button",
5236
+ onClick: () => handleToggleFamily(family.id),
5237
+ className: `flex w-full items-center gap-3 rounded-lg border px-3 py-2 text-left transition-all ${isSelected ? "border-indigo-500/30 bg-indigo-50/50 dark:border-indigo-400/20 dark:bg-indigo-500/5" : "border-gray-200/50 hover:border-gray-300 dark:border-white/10 dark:hover:border-white/20"}`,
5238
+ children: [
5239
+ /* @__PURE__ */ 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__ */ jsx("svg", { className: "h-3 w-3", viewBox: "0 0 20 20", fill: "currentColor", children: /* @__PURE__ */ 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" }) }) }),
5240
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
5241
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-white", children: family.label }),
5242
+ /* @__PURE__ */ jsxs("span", { className: "ml-2 text-[10px] text-gray-400 dark:text-gray-500", children: [
5243
+ family.models.length,
5244
+ " models"
5245
+ ] })
5246
+ ] })
5247
+ ]
5248
+ },
5249
+ family.id
5250
+ );
5251
+ }) })
5252
+ ] }),
5156
5253
  /* @__PURE__ */ jsx(
5157
5254
  ConfigFormActions,
5158
5255
  {
@@ -7315,5 +7412,5 @@ function Workspace({
7315
7412
  }
7316
7413
 
7317
7414
  export { AgentFlowNode, AgentToolFlowNode, AnswerFlowNode, AnthropicIcon, CATEGORY_COLORS, CATEGORY_PILL_COLORS, CodeFlowNode, CrewAIIcon, DocumentExtractorFlowNode, EndFlowNode, EntityFlowNode, FRAMEWORK_META, GoogleADKIcon, GroupFlowNode, HttpRequestFlowNode, ICON_MAP, IfElseFlowNode, IterationFlowNode, IterationStartFlowNode, KnowledgeBaseFlowNode, LOGIC_ICON_MAP, LOGIC_NODE_BADGE_COLORS, LOGIC_NODE_GRADIENTS, LOGIC_NODE_HANDLE_COLORS, LangChainIcon, ListOperatorFlowNode, LogicNodeModal, MINIMAP_NODE_COLORS, ModelProviderFlowNode, NodeCard, NodeContextMenu, NoteFlowNode, OpenAIIcon, PanelContextMenu, ParameterExtractorFlowNode, QuestionClassifierFlowNode, RuleFlowNode, SelectionContextMenu, StartFlowNode, StrandsIcon, TemplateTransformFlowNode, ToolFlowNode, VariableAggregatorFlowNode, VariableAssignerFlowNode, WorkflowBuilderProvider, WorkflowCanvas, Workspace, getCompatibleModels, getDefaultFrameworkForModel, getEntityBadgeColor, getEntityGradient, getEntityHandleColor, getEntityIcon, getEntityMinimapColor, getFrameworkMeta, isModelCompatibleWithFramework, useModalStore, useWorkflowBuilderClient, useWorkflowBuilderClientOptional, useWorkflowStore };
7318
- //# sourceMappingURL=chunk-4B47R7VI.mjs.map
7319
- //# sourceMappingURL=chunk-4B47R7VI.mjs.map
7415
+ //# sourceMappingURL=chunk-LIYKHVLG.mjs.map
7416
+ //# sourceMappingURL=chunk-LIYKHVLG.mjs.map