@datatechsolutions/ui 2.11.9 → 2.11.11

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.
@@ -250,19 +250,28 @@ type PipelineSettingsModalProps = {
250
250
  };
251
251
  declare function PipelineSettingsModal({ onSave }: PipelineSettingsModalProps): react_jsx_runtime.JSX.Element;
252
252
 
253
+ type ModelProvider = {
254
+ id: string;
255
+ name: string;
256
+ provider: string;
257
+ modelCount: number;
258
+ configured: boolean;
259
+ };
253
260
  type NodePaletteProps = {
254
261
  agents: AgentWithPrompts[];
255
262
  tools: Subworkflow[];
256
263
  agentTools?: AgentTool[];
257
264
  rules: AgentRule[];
258
265
  entities?: WorkflowEntityDefinition[];
266
+ modelProviders?: ModelProvider[];
259
267
  onCreateAgent?: () => void;
260
268
  onCreateTool?: () => void;
261
269
  onCreateAgentTool?: () => void;
262
270
  onCreateRule?: () => void;
263
271
  onCreateDatasource?: () => void;
272
+ onConfigureProvider?: (providerId: string) => void;
264
273
  };
265
- declare function NodePalette({ agents, tools, agentTools, rules, entities, onCreateAgent, onCreateTool, onCreateAgentTool, onCreateRule, onCreateDatasource }: NodePaletteProps): react_jsx_runtime.JSX.Element;
274
+ declare function NodePalette({ agents, tools, agentTools, rules, entities, modelProviders, onCreateAgent, onCreateTool, onCreateAgentTool, onCreateRule, onCreateDatasource, onConfigureProvider }: NodePaletteProps): react_jsx_runtime.JSX.Element;
266
275
 
267
276
  type WorkflowListBarProps = {
268
277
  workflows: Workflow[];
@@ -714,4 +723,4 @@ declare function getEntityBadgeColor(entityKey: string | undefined): string;
714
723
  declare function getEntityHandleColor(entityKey: string | undefined): string;
715
724
  declare function getEntityMinimapColor(entityKey: string | undefined): string;
716
725
 
717
- export { AgentFlowNode, type AgentFramework, AgentModal, AgentNodeData, AgentToolFlowNode, AgentWithPrompts, AmazonNovaIcon, AnswerFlowNode, AnswerNodeData, AnthropicIcon, AnthropicModelIcon, AutoSaveWorkspace, type AutoSaveWorkspaceProps, CodeFlowNode, CodeNodeData, CrewAIIcon, DocumentExtractorFlowNode, DocumentExtractorNodeData, DslExportModal, DslImportModal, DynamicIslandConfirm, type DynamicIslandConfirmProps, EndFlowNode, EndNodeData, EntityFlowNode, EntityNodeData, FRAMEWORK_META, GoogleADKIcon, GroupFlowNode, GroupNodeData, HttpRequestFlowNode, HttpRequestNodeData, IfElseFlowNode, IfElseNodeData, IterationFlowNode, IterationNodeData, IterationStartFlowNode, IterationStartNodeData, KnowledgeBaseFlowNode, KnowledgeBaseNodeData, LOGIC_ICON_MAP, LOGIC_NODE_BADGE_COLORS, LOGIC_NODE_GRADIENTS, LOGIC_NODE_HANDLE_COLORS, LangChainIcon, LayoutDirection, ListOperatorFlowNode, ListOperatorNodeData, LogicNodeModal, MINIMAP_NODE_COLORS, MetaLlamaIcon, NodeCard, NodeContextMenu, NodePalette, type NodeRunResult, NoteFlowNode, NoteNodeData, OpenAIIcon, PanelContextMenu, ParameterExtractorFlowNode, ParameterExtractorNodeData, PipelineSettingsModal, PreviewPanel, type PreviewPanelProps, QuestionClassifierFlowNode, QuestionClassifierNodeData, RuleFlowNode, RuleNodeData, RunInputDialog, type RunInputDialogProps, RunPanel, SaveStatusBadge, type SaveStatusBadgeProps, SelectionContextMenu, StartFlowNode, StartNodeData, StrandsIcon, SubworkflowModal, TemplateTransformFlowNode, TemplateTransformNodeData, ToolFlowNode, ToolNodeData, VariableAggregatorFlowNode, VariableAggregatorNodeData, VariableAssignerFlowNode, VariableAssignerNodeData, VariableInspector, VersionHistoryPanel, type WorkflowBuilderClient, WorkflowBuilderProvider, type WorkflowBuilderProviderProps, WorkflowEntityDefinition, WorkflowGraph, WorkflowListBar, type WorkflowStore, type WorkspaceBootstrapPayload, WorkspaceModal, WorkspaceProps, getCompatibleModels, getDefaultFrameworkForModel, getEntityBadgeColor, getEntityGradient, getEntityHandleColor, getEntityIcon, getEntityMinimapColor, getFrameworkMeta, getModelIcon, isModelCompatibleWithFramework, useCanRedo, useCanUndo, useCanvasShortcuts, useClipboard, useContextMenu, useEditingNodeId, useHasCopied, useHelpLines, useIsRunning, useModalStore, useNodeResults, useSelectedNodeCount, useSubworkflowStore, useUndoRedo, useWorkflowBuilderClient, useWorkflowBuilderClientOptional, useWorkflowStore };
726
+ export { AgentFlowNode, type AgentFramework, AgentModal, AgentNodeData, AgentToolFlowNode, AgentWithPrompts, AmazonNovaIcon, AnswerFlowNode, AnswerNodeData, AnthropicIcon, AnthropicModelIcon, AutoSaveWorkspace, type AutoSaveWorkspaceProps, CodeFlowNode, CodeNodeData, CrewAIIcon, DocumentExtractorFlowNode, DocumentExtractorNodeData, DslExportModal, DslImportModal, DynamicIslandConfirm, type DynamicIslandConfirmProps, EndFlowNode, EndNodeData, EntityFlowNode, EntityNodeData, FRAMEWORK_META, GoogleADKIcon, GroupFlowNode, GroupNodeData, HttpRequestFlowNode, HttpRequestNodeData, IfElseFlowNode, IfElseNodeData, IterationFlowNode, IterationNodeData, IterationStartFlowNode, IterationStartNodeData, KnowledgeBaseFlowNode, KnowledgeBaseNodeData, LOGIC_ICON_MAP, LOGIC_NODE_BADGE_COLORS, LOGIC_NODE_GRADIENTS, LOGIC_NODE_HANDLE_COLORS, LangChainIcon, LayoutDirection, ListOperatorFlowNode, ListOperatorNodeData, LogicNodeModal, MINIMAP_NODE_COLORS, MetaLlamaIcon, type ModelProvider, NodeCard, NodeContextMenu, NodePalette, type NodeRunResult, NoteFlowNode, NoteNodeData, OpenAIIcon, PanelContextMenu, ParameterExtractorFlowNode, ParameterExtractorNodeData, PipelineSettingsModal, PreviewPanel, type PreviewPanelProps, QuestionClassifierFlowNode, QuestionClassifierNodeData, RuleFlowNode, RuleNodeData, RunInputDialog, type RunInputDialogProps, RunPanel, SaveStatusBadge, type SaveStatusBadgeProps, SelectionContextMenu, StartFlowNode, StartNodeData, StrandsIcon, SubworkflowModal, TemplateTransformFlowNode, TemplateTransformNodeData, ToolFlowNode, ToolNodeData, VariableAggregatorFlowNode, VariableAggregatorNodeData, VariableAssignerFlowNode, VariableAssignerNodeData, VariableInspector, VersionHistoryPanel, type WorkflowBuilderClient, WorkflowBuilderProvider, type WorkflowBuilderProviderProps, WorkflowEntityDefinition, WorkflowGraph, WorkflowListBar, type WorkflowStore, type WorkspaceBootstrapPayload, WorkspaceModal, WorkspaceProps, getCompatibleModels, getDefaultFrameworkForModel, getEntityBadgeColor, getEntityGradient, getEntityHandleColor, getEntityIcon, getEntityMinimapColor, getFrameworkMeta, getModelIcon, isModelCompatibleWithFramework, useCanRedo, useCanUndo, useCanvasShortcuts, useClipboard, useContextMenu, useEditingNodeId, useHasCopied, useHelpLines, useIsRunning, useModalStore, useNodeResults, useSelectedNodeCount, useSubworkflowStore, useUndoRedo, useWorkflowBuilderClient, useWorkflowBuilderClientOptional, useWorkflowStore };
@@ -250,19 +250,28 @@ type PipelineSettingsModalProps = {
250
250
  };
251
251
  declare function PipelineSettingsModal({ onSave }: PipelineSettingsModalProps): react_jsx_runtime.JSX.Element;
252
252
 
253
+ type ModelProvider = {
254
+ id: string;
255
+ name: string;
256
+ provider: string;
257
+ modelCount: number;
258
+ configured: boolean;
259
+ };
253
260
  type NodePaletteProps = {
254
261
  agents: AgentWithPrompts[];
255
262
  tools: Subworkflow[];
256
263
  agentTools?: AgentTool[];
257
264
  rules: AgentRule[];
258
265
  entities?: WorkflowEntityDefinition[];
266
+ modelProviders?: ModelProvider[];
259
267
  onCreateAgent?: () => void;
260
268
  onCreateTool?: () => void;
261
269
  onCreateAgentTool?: () => void;
262
270
  onCreateRule?: () => void;
263
271
  onCreateDatasource?: () => void;
272
+ onConfigureProvider?: (providerId: string) => void;
264
273
  };
265
- declare function NodePalette({ agents, tools, agentTools, rules, entities, onCreateAgent, onCreateTool, onCreateAgentTool, onCreateRule, onCreateDatasource }: NodePaletteProps): react_jsx_runtime.JSX.Element;
274
+ declare function NodePalette({ agents, tools, agentTools, rules, entities, modelProviders, onCreateAgent, onCreateTool, onCreateAgentTool, onCreateRule, onCreateDatasource, onConfigureProvider }: NodePaletteProps): react_jsx_runtime.JSX.Element;
266
275
 
267
276
  type WorkflowListBarProps = {
268
277
  workflows: Workflow[];
@@ -714,4 +723,4 @@ declare function getEntityBadgeColor(entityKey: string | undefined): string;
714
723
  declare function getEntityHandleColor(entityKey: string | undefined): string;
715
724
  declare function getEntityMinimapColor(entityKey: string | undefined): string;
716
725
 
717
- export { AgentFlowNode, type AgentFramework, AgentModal, AgentNodeData, AgentToolFlowNode, AgentWithPrompts, AmazonNovaIcon, AnswerFlowNode, AnswerNodeData, AnthropicIcon, AnthropicModelIcon, AutoSaveWorkspace, type AutoSaveWorkspaceProps, CodeFlowNode, CodeNodeData, CrewAIIcon, DocumentExtractorFlowNode, DocumentExtractorNodeData, DslExportModal, DslImportModal, DynamicIslandConfirm, type DynamicIslandConfirmProps, EndFlowNode, EndNodeData, EntityFlowNode, EntityNodeData, FRAMEWORK_META, GoogleADKIcon, GroupFlowNode, GroupNodeData, HttpRequestFlowNode, HttpRequestNodeData, IfElseFlowNode, IfElseNodeData, IterationFlowNode, IterationNodeData, IterationStartFlowNode, IterationStartNodeData, KnowledgeBaseFlowNode, KnowledgeBaseNodeData, LOGIC_ICON_MAP, LOGIC_NODE_BADGE_COLORS, LOGIC_NODE_GRADIENTS, LOGIC_NODE_HANDLE_COLORS, LangChainIcon, LayoutDirection, ListOperatorFlowNode, ListOperatorNodeData, LogicNodeModal, MINIMAP_NODE_COLORS, MetaLlamaIcon, NodeCard, NodeContextMenu, NodePalette, type NodeRunResult, NoteFlowNode, NoteNodeData, OpenAIIcon, PanelContextMenu, ParameterExtractorFlowNode, ParameterExtractorNodeData, PipelineSettingsModal, PreviewPanel, type PreviewPanelProps, QuestionClassifierFlowNode, QuestionClassifierNodeData, RuleFlowNode, RuleNodeData, RunInputDialog, type RunInputDialogProps, RunPanel, SaveStatusBadge, type SaveStatusBadgeProps, SelectionContextMenu, StartFlowNode, StartNodeData, StrandsIcon, SubworkflowModal, TemplateTransformFlowNode, TemplateTransformNodeData, ToolFlowNode, ToolNodeData, VariableAggregatorFlowNode, VariableAggregatorNodeData, VariableAssignerFlowNode, VariableAssignerNodeData, VariableInspector, VersionHistoryPanel, type WorkflowBuilderClient, WorkflowBuilderProvider, type WorkflowBuilderProviderProps, WorkflowEntityDefinition, WorkflowGraph, WorkflowListBar, type WorkflowStore, type WorkspaceBootstrapPayload, WorkspaceModal, WorkspaceProps, getCompatibleModels, getDefaultFrameworkForModel, getEntityBadgeColor, getEntityGradient, getEntityHandleColor, getEntityIcon, getEntityMinimapColor, getFrameworkMeta, getModelIcon, isModelCompatibleWithFramework, useCanRedo, useCanUndo, useCanvasShortcuts, useClipboard, useContextMenu, useEditingNodeId, useHasCopied, useHelpLines, useIsRunning, useModalStore, useNodeResults, useSelectedNodeCount, useSubworkflowStore, useUndoRedo, useWorkflowBuilderClient, useWorkflowBuilderClientOptional, useWorkflowStore };
726
+ export { AgentFlowNode, type AgentFramework, AgentModal, AgentNodeData, AgentToolFlowNode, AgentWithPrompts, AmazonNovaIcon, AnswerFlowNode, AnswerNodeData, AnthropicIcon, AnthropicModelIcon, AutoSaveWorkspace, type AutoSaveWorkspaceProps, CodeFlowNode, CodeNodeData, CrewAIIcon, DocumentExtractorFlowNode, DocumentExtractorNodeData, DslExportModal, DslImportModal, DynamicIslandConfirm, type DynamicIslandConfirmProps, EndFlowNode, EndNodeData, EntityFlowNode, EntityNodeData, FRAMEWORK_META, GoogleADKIcon, GroupFlowNode, GroupNodeData, HttpRequestFlowNode, HttpRequestNodeData, IfElseFlowNode, IfElseNodeData, IterationFlowNode, IterationNodeData, IterationStartFlowNode, IterationStartNodeData, KnowledgeBaseFlowNode, KnowledgeBaseNodeData, LOGIC_ICON_MAP, LOGIC_NODE_BADGE_COLORS, LOGIC_NODE_GRADIENTS, LOGIC_NODE_HANDLE_COLORS, LangChainIcon, LayoutDirection, ListOperatorFlowNode, ListOperatorNodeData, LogicNodeModal, MINIMAP_NODE_COLORS, MetaLlamaIcon, type ModelProvider, NodeCard, NodeContextMenu, NodePalette, type NodeRunResult, NoteFlowNode, NoteNodeData, OpenAIIcon, PanelContextMenu, ParameterExtractorFlowNode, ParameterExtractorNodeData, PipelineSettingsModal, PreviewPanel, type PreviewPanelProps, QuestionClassifierFlowNode, QuestionClassifierNodeData, RuleFlowNode, RuleNodeData, RunInputDialog, type RunInputDialogProps, RunPanel, SaveStatusBadge, type SaveStatusBadgeProps, SelectionContextMenu, StartFlowNode, StartNodeData, StrandsIcon, SubworkflowModal, TemplateTransformFlowNode, TemplateTransformNodeData, ToolFlowNode, ToolNodeData, VariableAggregatorFlowNode, VariableAggregatorNodeData, VariableAssignerFlowNode, VariableAssignerNodeData, VariableInspector, VersionHistoryPanel, type WorkflowBuilderClient, WorkflowBuilderProvider, type WorkflowBuilderProviderProps, WorkflowEntityDefinition, WorkflowGraph, WorkflowListBar, type WorkflowStore, type WorkspaceBootstrapPayload, WorkspaceModal, WorkspaceProps, getCompatibleModels, getDefaultFrameworkForModel, getEntityBadgeColor, getEntityGradient, getEntityHandleColor, getEntityIcon, getEntityMinimapColor, getFrameworkMeta, getModelIcon, isModelCompatibleWithFramework, useCanRedo, useCanUndo, useCanvasShortcuts, useClipboard, useContextMenu, useEditingNodeId, useHasCopied, useHelpLines, useIsRunning, useModalStore, useNodeResults, useSelectedNodeCount, useSubworkflowStore, useUndoRedo, useWorkflowBuilderClient, useWorkflowBuilderClientOptional, useWorkflowStore };
@@ -1073,6 +1073,31 @@ function PipelineSettingsModal({ onSave }) {
1073
1073
  }
1074
1074
  );
1075
1075
  }
1076
+ var DATASOURCE_GRADIENTS = {
1077
+ bigquery: "from-blue-500 to-indigo-600",
1078
+ postgres: "from-sky-500 to-blue-600",
1079
+ snowflake: "from-cyan-400 to-blue-500",
1080
+ mongodb: "from-green-500 to-emerald-600",
1081
+ redis: "from-red-500 to-rose-600",
1082
+ mysql: "from-blue-600 to-indigo-700",
1083
+ clickhouse: "from-amber-500 to-yellow-600",
1084
+ elasticsearch: "from-teal-500 to-cyan-600",
1085
+ duckdb: "from-yellow-500 to-amber-600"
1086
+ };
1087
+ function getDatasourceGradient(entityId) {
1088
+ const lower = entityId.toLowerCase();
1089
+ for (const [key, gradient] of Object.entries(DATASOURCE_GRADIENTS)) {
1090
+ if (lower.includes(key)) return gradient;
1091
+ }
1092
+ return chunkLFWRE3A3_js.getEntityGradient(entityId);
1093
+ }
1094
+ var PROVIDER_GRADIENTS = {
1095
+ anthropic: "from-amber-500 to-orange-600",
1096
+ amazon: "from-orange-500 to-amber-600",
1097
+ google: "from-blue-500 to-cyan-600",
1098
+ openai: "from-emerald-500 to-teal-600",
1099
+ meta: "from-blue-600 to-indigo-700"
1100
+ };
1076
1101
  function onDragStart(event, nodeType, entityId, label, config) {
1077
1102
  event.dataTransfer.setData("nodeType", nodeType);
1078
1103
  event.dataTransfer.setData("entityId", entityId);
@@ -1189,7 +1214,7 @@ function LogicNodeItemCard({ item, translationFunction }) {
1189
1214
  }
1190
1215
  );
1191
1216
  }
1192
- function NodePalette({ agents, tools, agentTools = [], rules, entities = [], onCreateAgent, onCreateTool, onCreateAgentTool, onCreateRule, onCreateDatasource }) {
1217
+ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], modelProviders = [], onCreateAgent, onCreateTool, onCreateAgentTool, onCreateRule, onCreateDatasource, onConfigureProvider }) {
1193
1218
  const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
1194
1219
  const [searchQuery, setSearchQuery] = react.useState("");
1195
1220
  const normalizedQuery = searchQuery.toLowerCase().trim();
@@ -1217,6 +1242,12 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], onC
1217
1242
  ) : rules,
1218
1243
  [rules, normalizedQuery]
1219
1244
  );
1245
+ const filteredProviders = react.useMemo(
1246
+ () => normalizedQuery ? modelProviders.filter(
1247
+ (provider) => provider.name.toLowerCase().includes(normalizedQuery) || provider.provider.toLowerCase().includes(normalizedQuery)
1248
+ ) : modelProviders,
1249
+ [modelProviders, normalizedQuery]
1250
+ );
1220
1251
  const entityTypes = react.useMemo(
1221
1252
  () => entities.map((entity) => ({
1222
1253
  id: entity.id,
@@ -1281,58 +1312,55 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], onC
1281
1312
  colorClass: "text-indigo-600 dark:text-indigo-400",
1282
1313
  onAdd: onCreateAgent,
1283
1314
  addLabel: t("newAgent"),
1284
- children: filteredAgents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-gray-400 dark:text-gray-500", children: t("noAgents") }) : filteredAgents.map((agent) => /* @__PURE__ */ jsxRuntime.jsxs(
1285
- "div",
1286
- {
1287
- draggable: true,
1288
- onDragStart: (event) => onDragStart(event, "agent", agent.agentId, agent.name),
1289
- className: "liquid-surface group flex items-center gap-2 rounded-lg px-3 py-2 transition-all cursor-grab hover:shadow-md active:cursor-grabbing",
1290
- children: [
1291
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-shrink-0", children: [
1292
- agent.avatar ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: agent.avatar, alt: agent.name, className: "h-7 w-7 rounded-full bg-white shadow-sm ring-1 ring-gray-200/50 dark:bg-gray-800 dark:ring-white/10" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-7 w-7 items-center justify-center rounded-full bg-gradient-to-br from-indigo-400 to-purple-500 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-3.5 w-3.5 text-white" }) }),
1293
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -bottom-0.5 -right-0.5 flex h-3.5 w-3.5 items-center justify-center rounded-full bg-indigo-500 ring-1.5 ring-white dark:ring-gray-900", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-2 w-2 text-white" }) })
1294
- ] }),
1295
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1296
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
1297
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-gray-900 dark:text-white", children: agent.name }),
1298
- (() => {
1299
- const tier = chunkPWBWP5FJ_js.getAgentTier(Number(agent.elo ?? 0));
1300
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: `shrink-0 rounded-full px-1.5 py-px text-[8px] font-bold ${tier.pillColor}`, children: t(`agentDrawer.tier${tier.key.charAt(0).toUpperCase()}${tier.key.slice(1)}`) });
1301
- })()
1315
+ count: filteredAgents.length + filteredAgentTools.length,
1316
+ children: filteredAgents.length === 0 && filteredAgentTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-gray-400 dark:text-gray-500", children: t("noAgents") }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1317
+ filteredAgents.map((agent) => /* @__PURE__ */ jsxRuntime.jsxs(
1318
+ "div",
1319
+ {
1320
+ draggable: true,
1321
+ onDragStart: (event) => onDragStart(event, "agent", agent.agentId, agent.name),
1322
+ className: "liquid-surface group flex items-center gap-2 rounded-lg px-3 py-2 transition-all cursor-grab hover:shadow-md active:cursor-grabbing",
1323
+ children: [
1324
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-shrink-0", children: [
1325
+ agent.avatar ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: agent.avatar, alt: agent.name, className: "h-7 w-7 rounded-full bg-white shadow-sm ring-1 ring-gray-200/50 dark:bg-gray-800 dark:ring-white/10" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-7 w-7 items-center justify-center rounded-full bg-gradient-to-br from-indigo-400 to-purple-500 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-3.5 w-3.5 text-white" }) }),
1326
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -bottom-0.5 -right-0.5 flex h-3.5 w-3.5 items-center justify-center rounded-full bg-indigo-500 ring-1.5 ring-white dark:ring-gray-900", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-2 w-2 text-white" }) })
1302
1327
  ] }),
1303
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: agent.role ?? agent.agentId })
1304
- ] })
1305
- ]
1306
- },
1307
- agent.agentId
1308
- ))
1309
- }
1310
- ),
1311
- /* @__PURE__ */ jsxRuntime.jsx(
1312
- CollapsibleSection,
1313
- {
1314
- title: t("agentToolsSection"),
1315
- icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CommandLineIcon, { className: "h-3 w-3" }),
1316
- colorClass: "text-amber-600 dark:text-amber-400",
1317
- onAdd: onCreateAgentTool,
1318
- addLabel: t("newAgentTool"),
1319
- children: filteredAgentTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] text-gray-400 dark:text-gray-500", children: t("noAgentTools") }) : filteredAgentTools.map((agentTool) => /* @__PURE__ */ jsxRuntime.jsxs(
1320
- "div",
1321
- {
1322
- draggable: true,
1323
- onDragStart: (event) => onDragStart(event, "agent_tool", agentTool.agentToolId, agentTool.name),
1324
- className: "liquid-surface group flex items-center gap-2 rounded-lg px-3 py-2 transition-all cursor-grab hover:shadow-md active:cursor-grabbing",
1325
- children: [
1326
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br from-amber-400 to-orange-500 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CommandLineIcon, { className: "h-3.5 w-3.5 text-white" }) }),
1327
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1328
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-gray-900 dark:text-white", children: agentTool.name }),
1329
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: agentTool.category ?? "custom" })
1330
- ] }),
1331
- !agentTool.enabled && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-gray-100 px-1.5 py-0.5 text-[9px] font-medium text-gray-500 dark:bg-white/10 dark:text-gray-400", children: "off" })
1332
- ]
1333
- },
1334
- agentTool.agentToolId
1335
- ))
1328
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1329
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
1330
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-gray-900 dark:text-white", children: agent.name }),
1331
+ (() => {
1332
+ const tier = chunkPWBWP5FJ_js.getAgentTier(Number(agent.elo ?? 0));
1333
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: `shrink-0 rounded-full px-1.5 py-px text-[8px] font-bold ${tier.pillColor}`, children: t(`agentDrawer.tier${tier.key.charAt(0).toUpperCase()}${tier.key.slice(1)}`) });
1334
+ })()
1335
+ ] }),
1336
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: agent.role ?? agent.agentId })
1337
+ ] })
1338
+ ]
1339
+ },
1340
+ agent.agentId
1341
+ )),
1342
+ filteredAgentTools.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1343
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 mb-1 flex items-center gap-1.5 px-1", children: [
1344
+ /* @__PURE__ */ jsxRuntime.jsx(outline.CommandLineIcon, { className: "h-2.5 w-2.5 text-amber-500 dark:text-amber-400" }),
1345
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] font-semibold uppercase tracking-wider text-amber-600 dark:text-amber-400", children: t("agentToolsSection") }),
1346
+ onCreateAgentTool && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: onCreateAgentTool, className: "ml-auto text-[9px] font-medium text-amber-500 hover:text-amber-600 dark:text-amber-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-3 w-3" }) })
1347
+ ] }),
1348
+ filteredAgentTools.map((agentTool) => /* @__PURE__ */ jsxRuntime.jsxs(
1349
+ "div",
1350
+ {
1351
+ draggable: true,
1352
+ onDragStart: (event) => onDragStart(event, "agent_tool", agentTool.agentToolId, agentTool.name),
1353
+ className: "liquid-surface group flex items-center gap-2 rounded-lg px-3 py-1.5 transition-all cursor-grab hover:shadow-md active:cursor-grabbing",
1354
+ children: [
1355
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-5 w-5 items-center justify-center rounded-md bg-gradient-to-br from-amber-400 to-orange-500 shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CommandLineIcon, { className: "h-3 w-3 text-white" }) }),
1356
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-[11px] font-medium text-gray-900 dark:text-white", children: agentTool.name }) }),
1357
+ !agentTool.enabled && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-gray-100 px-1.5 py-0.5 text-[8px] font-medium text-gray-500 dark:bg-white/10 dark:text-gray-400", children: "off" })
1358
+ ]
1359
+ },
1360
+ agentTool.agentToolId
1361
+ ))
1362
+ ] })
1363
+ ] })
1336
1364
  }
1337
1365
  ),
1338
1366
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1411,7 +1439,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], onC
1411
1439
  limit: entity.defaultLimit
1412
1440
  });
1413
1441
  const EntityIcon = chunkLFWRE3A3_js.getEntityIcon(entity.id);
1414
- const entityGradient = chunkLFWRE3A3_js.getEntityGradient(entity.id);
1442
+ const entityGradient = getDatasourceGradient(entity.id);
1415
1443
  return /* @__PURE__ */ jsxRuntime.jsxs(
1416
1444
  "div",
1417
1445
  {
@@ -1435,6 +1463,41 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], onC
1435
1463
  })
1436
1464
  }
1437
1465
  ),
1466
+ filteredProviders.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1467
+ CollapsibleSection,
1468
+ {
1469
+ title: t("modelProvidersSection"),
1470
+ icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-3 w-3" }),
1471
+ colorClass: "text-rose-600 dark:text-rose-400",
1472
+ count: filteredProviders.length,
1473
+ children: filteredProviders.map((provider) => {
1474
+ const providerIcon = getModelIcon(`${provider.provider}.placeholder`);
1475
+ const ProviderIcon = providerIcon.IconComponent;
1476
+ const providerGradient = PROVIDER_GRADIENTS[provider.provider] ?? "from-rose-400 to-pink-500";
1477
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1478
+ "div",
1479
+ {
1480
+ className: "liquid-surface group flex items-center gap-2 rounded-lg px-3 py-2 transition-all cursor-pointer hover:shadow-md",
1481
+ onClick: () => onConfigureProvider?.(provider.id),
1482
+ role: "button",
1483
+ tabIndex: 0,
1484
+ children: [
1485
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br ${providerGradient} shadow-sm`, children: /* @__PURE__ */ jsxRuntime.jsx(ProviderIcon, { className: "h-3.5 w-3.5 text-white" }) }),
1486
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1487
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs font-medium text-gray-900 dark:text-white", children: provider.name }),
1488
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: [
1489
+ provider.modelCount,
1490
+ " models"
1491
+ ] })
1492
+ ] }),
1493
+ provider.configured ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-green-100 px-1.5 py-0.5 text-[9px] font-medium text-green-600 dark:bg-green-500/10 dark:text-green-400", children: t("configured") }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-amber-100 px-1.5 py-0.5 text-[9px] font-medium text-amber-600 dark:bg-amber-500/10 dark:text-amber-400", children: t("setup") })
1494
+ ]
1495
+ },
1496
+ provider.id
1497
+ );
1498
+ })
1499
+ }
1500
+ ),
1438
1501
  /* @__PURE__ */ jsxRuntime.jsxs(
1439
1502
  CollapsibleSection,
1440
1503
  {