@datatechsolutions/ui 3.3.0 → 3.5.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.
- package/dist/astrlabe/index.js +113 -113
- package/dist/astrlabe/index.mjs +6 -6
- package/dist/astrlabe/workflow-canvas.js +6 -6
- package/dist/astrlabe/workflow-canvas.mjs +5 -5
- package/dist/brand/index.js +0 -14
- package/dist/brand/index.js.map +1 -1
- package/dist/brand/index.mjs +0 -14
- package/dist/brand/index.mjs.map +1 -1
- package/dist/{chunk-2WXRRQM3.mjs → chunk-2MJAHST4.mjs} +554 -516
- package/dist/chunk-2MJAHST4.mjs.map +1 -0
- package/dist/{chunk-FAGDZEKM.js → chunk-2OZZH2IO.js} +2 -2
- package/dist/chunk-2OZZH2IO.js.map +1 -0
- package/dist/{chunk-SYNVNTLJ.mjs → chunk-3AY5HIQ6.mjs} +2 -2
- package/dist/chunk-3AY5HIQ6.mjs.map +1 -0
- package/dist/{chunk-O6M3KDGT.mjs → chunk-3OLYSMI5.mjs} +41 -7
- package/dist/chunk-3OLYSMI5.mjs.map +1 -0
- package/dist/{chunk-GIQXB3BG.mjs → chunk-4PFU6A2B.mjs} +3 -3
- package/dist/{chunk-GIQXB3BG.mjs.map → chunk-4PFU6A2B.mjs.map} +1 -1
- package/dist/{chunk-3ZUMJTDT.mjs → chunk-5BEVTOZV.mjs} +4 -5
- package/dist/{chunk-3JJWPOK6.js.map → chunk-5BEVTOZV.mjs.map} +1 -1
- package/dist/{chunk-3JJWPOK6.js → chunk-5I7F7KZ6.js} +10 -11
- package/dist/chunk-5I7F7KZ6.js.map +1 -0
- package/dist/{chunk-BR2GAZKG.mjs → chunk-6V3DUBOZ.mjs} +7 -7
- package/dist/{chunk-BR2GAZKG.mjs.map → chunk-6V3DUBOZ.mjs.map} +1 -1
- package/dist/{chunk-5GDKCFM5.mjs → chunk-6W7VTZG6.mjs} +3 -3
- package/dist/{chunk-5GDKCFM5.mjs.map → chunk-6W7VTZG6.mjs.map} +1 -1
- package/dist/{chunk-IJAKZHXX.js → chunk-74MHWEDC.js} +684 -645
- package/dist/chunk-74MHWEDC.js.map +1 -0
- package/dist/{chunk-IRPS5UCS.mjs → chunk-7CEZB3ZD.mjs} +3 -3
- package/dist/{chunk-IRPS5UCS.mjs.map → chunk-7CEZB3ZD.mjs.map} +1 -1
- package/dist/{chunk-UDDZTTLO.mjs → chunk-7UHV6A4C.mjs} +6 -7
- package/dist/chunk-7UHV6A4C.mjs.map +1 -0
- package/dist/{chunk-ZM5MVWIT.js → chunk-A7FI4K7Z.js} +5 -6
- package/dist/chunk-A7FI4K7Z.js.map +1 -0
- package/dist/{chunk-MWPTSBAI.js → chunk-AVM53A3Y.js} +63 -29
- package/dist/chunk-AVM53A3Y.js.map +1 -0
- package/dist/{chunk-I2NZGVBG.js → chunk-AWDH6WNA.js} +1214 -5396
- package/dist/chunk-AWDH6WNA.js.map +1 -0
- package/dist/{chunk-ZJPNP2YW.mjs → chunk-BUDZNAKL.mjs} +2 -2
- package/dist/chunk-BUDZNAKL.mjs.map +1 -0
- package/dist/{chunk-OCELRSLO.js → chunk-BVXATTTA.js} +4 -4
- package/dist/{chunk-OCELRSLO.js.map → chunk-BVXATTTA.js.map} +1 -1
- package/dist/{chunk-W5OEBO6E.js → chunk-C4NRF2G2.js} +13 -14
- package/dist/chunk-C4NRF2G2.js.map +1 -0
- package/dist/{chunk-JSNRCYSO.js → chunk-CY2MBKVG.js} +4 -4
- package/dist/{chunk-JSNRCYSO.js.map → chunk-CY2MBKVG.js.map} +1 -1
- package/dist/{chunk-ZL6C2ZAF.js → chunk-FK3WDELF.js} +67 -67
- package/dist/{chunk-ZL6C2ZAF.js.map → chunk-FK3WDELF.js.map} +1 -1
- package/dist/{chunk-MVBIAXVN.mjs → chunk-IOEQ2GET.mjs} +14 -11
- package/dist/chunk-IOEQ2GET.mjs.map +1 -0
- package/dist/{chunk-AOUUZ52N.js → chunk-NCDBNGIB.js} +85 -86
- package/dist/chunk-NCDBNGIB.js.map +1 -0
- package/dist/{chunk-B67DP7MI.mjs → chunk-NJ5RVWLA.mjs} +4 -4
- package/dist/{chunk-B67DP7MI.mjs.map → chunk-NJ5RVWLA.mjs.map} +1 -1
- package/dist/{chunk-HDCUWUNH.js → chunk-NKXQYFS7.js} +28 -27
- package/dist/chunk-NKXQYFS7.js.map +1 -0
- package/dist/{chunk-JN6IL6OH.mjs → chunk-NOHHZ6FM.mjs} +1171 -5316
- package/dist/chunk-NOHHZ6FM.mjs.map +1 -0
- package/dist/{chunk-PCYL4MII.mjs → chunk-OASC7NYV.mjs} +156 -314
- package/dist/chunk-OASC7NYV.mjs.map +1 -0
- package/dist/{chunk-RXZNACMI.js → chunk-P43PX75J.js} +33 -33
- package/dist/{chunk-RXZNACMI.js.map → chunk-P43PX75J.js.map} +1 -1
- package/dist/{chunk-OL73LBX5.mjs → chunk-QLFSJ6HK.mjs} +3 -4
- package/dist/chunk-QLFSJ6HK.mjs.map +1 -0
- package/dist/{chunk-LEKZUS6N.mjs → chunk-QPSHM2JQ.mjs} +4 -5
- package/dist/chunk-QPSHM2JQ.mjs.map +1 -0
- package/dist/{chunk-NJFRJ6YD.js → chunk-QSMPKL27.js} +225 -384
- package/dist/chunk-QSMPKL27.js.map +1 -0
- package/dist/{chunk-ZV5EZXXO.mjs → chunk-RHRJXK5R.mjs} +3 -3
- package/dist/{chunk-ZV5EZXXO.mjs.map → chunk-RHRJXK5R.mjs.map} +1 -1
- package/dist/{chunk-F54Q2YJY.js → chunk-SY4MUT5V.js} +7 -7
- package/dist/{chunk-F54Q2YJY.js.map → chunk-SY4MUT5V.js.map} +1 -1
- package/dist/{chunk-5RM6NGZ6.mjs → chunk-UHMAKUON.mjs} +3 -3
- package/dist/{chunk-5RM6NGZ6.mjs.map → chunk-UHMAKUON.mjs.map} +1 -1
- package/dist/{chunk-TIJJHW2Z.js → chunk-V5VBYOF5.js} +36 -36
- package/dist/{chunk-TIJJHW2Z.js.map → chunk-V5VBYOF5.js.map} +1 -1
- package/dist/{chunk-KR2X2WHJ.js → chunk-VMGNQFRO.js} +53 -53
- package/dist/{chunk-KR2X2WHJ.js.map → chunk-VMGNQFRO.js.map} +1 -1
- package/dist/{chunk-HZ4LOVHM.js → chunk-VY52Y5GC.js} +2 -2
- package/dist/chunk-VY52Y5GC.js.map +1 -0
- package/dist/{chunk-TVMLV675.js → chunk-Z7VY5M4T.js} +98 -95
- package/dist/chunk-Z7VY5M4T.js.map +1 -0
- package/dist/{chunk-R4TQWXNG.mjs → chunk-ZM2Q2SMC.mjs} +6 -5
- package/dist/chunk-ZM2Q2SMC.mjs.map +1 -0
- package/dist/index.js +744 -904
- package/dist/index.mjs +4 -4
- package/dist/platform/admin/index.js +13 -13
- package/dist/platform/admin/index.mjs +7 -7
- package/dist/platform/agents-workspace.js +9 -9
- package/dist/platform/agents-workspace.mjs +8 -8
- package/dist/platform/app-shell.js +6 -6
- package/dist/platform/app-shell.mjs +5 -5
- package/dist/platform/auth/index.js +30 -30
- package/dist/platform/auth/index.mjs +7 -7
- package/dist/platform/billing/index.js +6 -6
- package/dist/platform/billing/index.mjs +5 -5
- package/dist/platform/impersonation/index.js +6 -6
- package/dist/platform/impersonation/index.mjs +5 -5
- package/dist/platform/index.js +102 -4812
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +24 -4729
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/pages/index.js +320 -204
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +146 -30
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/rbac.js +2 -2
- package/dist/platform/rbac.mjs +1 -1
- package/dist/platform/settings/index.js +10 -10
- package/dist/platform/settings/index.mjs +9 -9
- package/dist/platform/utils/index.js +3 -3
- package/dist/platform/utils/index.js.map +1 -1
- package/dist/platform/utils/index.mjs +1 -1
- package/dist/platform/utils/index.mjs.map +1 -1
- package/dist/platform/workflow-api-client.js +62 -62
- package/dist/platform/workflow-api-client.mjs +2 -2
- package/dist/platform/workflow-canvas-shell.js +7 -7
- package/dist/platform/workflow-canvas-shell.mjs +6 -6
- package/package.json +15 -5
- package/src/styles/liquid-glass.css +283 -2
- package/dist/astrlabe/contracts.d.mts +0 -517
- package/dist/astrlabe/contracts.d.ts +0 -517
- package/dist/astrlabe/graph-node.d.mts +0 -28
- package/dist/astrlabe/graph-node.d.ts +0 -28
- package/dist/astrlabe/index.d.mts +0 -751
- package/dist/astrlabe/index.d.ts +0 -751
- package/dist/astrlabe/utils.d.mts +0 -60
- package/dist/astrlabe/utils.d.ts +0 -60
- package/dist/astrlabe/workflow-canvas.d.mts +0 -69
- package/dist/astrlabe/workflow-canvas.d.ts +0 -69
- package/dist/astrlabe/workflow-preview-canvas.d.mts +0 -10
- package/dist/astrlabe/workflow-preview-canvas.d.ts +0 -10
- package/dist/billing-panel-DsHhhJqG.d.mts +0 -18
- package/dist/billing-panel-DsHhhJqG.d.ts +0 -18
- package/dist/brand/index.d.mts +0 -85
- package/dist/brand/index.d.ts +0 -85
- package/dist/chunk-2WXRRQM3.mjs.map +0 -1
- package/dist/chunk-3ZUMJTDT.mjs.map +0 -1
- package/dist/chunk-AOUUZ52N.js.map +0 -1
- package/dist/chunk-FAGDZEKM.js.map +0 -1
- package/dist/chunk-HDCUWUNH.js.map +0 -1
- package/dist/chunk-HZ4LOVHM.js.map +0 -1
- package/dist/chunk-I2NZGVBG.js.map +0 -1
- package/dist/chunk-IJAKZHXX.js.map +0 -1
- package/dist/chunk-JN6IL6OH.mjs.map +0 -1
- package/dist/chunk-LEKZUS6N.mjs.map +0 -1
- package/dist/chunk-MVBIAXVN.mjs.map +0 -1
- package/dist/chunk-MWPTSBAI.js.map +0 -1
- package/dist/chunk-NJFRJ6YD.js.map +0 -1
- package/dist/chunk-O6M3KDGT.mjs.map +0 -1
- package/dist/chunk-OL73LBX5.mjs.map +0 -1
- package/dist/chunk-PCYL4MII.mjs.map +0 -1
- package/dist/chunk-R4TQWXNG.mjs.map +0 -1
- package/dist/chunk-SYNVNTLJ.mjs.map +0 -1
- package/dist/chunk-TVMLV675.js.map +0 -1
- package/dist/chunk-UDDZTTLO.mjs.map +0 -1
- package/dist/chunk-W5OEBO6E.js.map +0 -1
- package/dist/chunk-ZJPNP2YW.mjs.map +0 -1
- package/dist/chunk-ZM5MVWIT.js.map +0 -1
- package/dist/dynamic-island-confirm-BKsZkAEP.d.mts +0 -17
- package/dist/dynamic-island-confirm-BKsZkAEP.d.ts +0 -17
- package/dist/index-CoB18TbG.d.ts +0 -215
- package/dist/index-VI9gyJXl.d.mts +0 -215
- package/dist/index.d.mts +0 -5412
- package/dist/index.d.ts +0 -5412
- package/dist/layout-engine-YZcVr20M.d.mts +0 -19
- package/dist/layout-engine-YZcVr20M.d.ts +0 -19
- package/dist/lib/i18n-context.d.mts +0 -36
- package/dist/lib/i18n-context.d.ts +0 -36
- package/dist/lib/router-context.d.mts +0 -35
- package/dist/lib/router-context.d.ts +0 -35
- package/dist/navigation-BiWVffAN.d.mts +0 -49
- package/dist/navigation-BiWVffAN.d.ts +0 -49
- package/dist/platform/admin/index.d.mts +0 -17
- package/dist/platform/admin/index.d.ts +0 -17
- package/dist/platform/agents-workspace.d.mts +0 -19
- package/dist/platform/agents-workspace.d.ts +0 -19
- package/dist/platform/app-shell.d.mts +0 -58
- package/dist/platform/app-shell.d.ts +0 -58
- package/dist/platform/auth/index.d.mts +0 -73
- package/dist/platform/auth/index.d.ts +0 -73
- package/dist/platform/billing/index.d.mts +0 -29
- package/dist/platform/billing/index.d.ts +0 -29
- package/dist/platform/impersonation/index.d.mts +0 -19
- package/dist/platform/impersonation/index.d.ts +0 -19
- package/dist/platform/index.d.mts +0 -224
- package/dist/platform/index.d.ts +0 -224
- package/dist/platform/pages/index.d.mts +0 -432
- package/dist/platform/pages/index.d.ts +0 -432
- package/dist/platform/rbac.d.mts +0 -41
- package/dist/platform/rbac.d.ts +0 -41
- package/dist/platform/settings/index.d.mts +0 -31
- package/dist/platform/settings/index.d.ts +0 -31
- package/dist/platform/telemetry/index.d.mts +0 -51
- package/dist/platform/telemetry/index.d.ts +0 -51
- package/dist/platform/utils/index.d.mts +0 -32
- package/dist/platform/utils/index.d.ts +0 -32
- package/dist/platform/windsock-admin-client.d.mts +0 -57
- package/dist/platform/windsock-admin-client.d.ts +0 -57
- package/dist/platform/workflow-api-client.d.mts +0 -6
- package/dist/platform/workflow-api-client.d.ts +0 -6
- package/dist/platform/workflow-canvas-shell.d.mts +0 -18
- package/dist/platform/workflow-canvas-shell.d.ts +0 -18
- package/dist/rule-form-BYJzyork.d.mts +0 -128
- package/dist/rule-form-BYJzyork.d.ts +0 -128
- package/dist/workflow-api-client-BKD8OfP_.d.ts +0 -468
- package/dist/workflow-api-client-DoYj7nHz.d.mts +0 -468
- package/dist/workflow-store-o17I6L6A.d.ts +0 -79
- package/dist/workflow-store-ppVHdMZi.d.mts +0 -79
- package/src/brand/logos/kori-icon.svg +0 -45
- package/src/brand/logos/kori-logo-dark.svg +0 -40
- package/src/brand/logos/kori-logo.svg +0 -43
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { ToggleSwitch, GlassModal, ContextMenu, FormInput, FormTextarea, FormSelect, Button, IconButton } from './chunk-
|
|
2
|
+
import { ToggleSwitch, GlassModal, ContextMenu, FormInput, FormTextarea, FormSelect, Button, IconButton } from './chunk-NOHHZ6FM.mjs';
|
|
3
3
|
import { useTranslations, I18nProvider, createI18nFromMessages } from './chunk-7VJ7CMMT.mjs';
|
|
4
|
-
import { listModelProviderCatalog } from './chunk-ZV5EZXXO.mjs';
|
|
5
4
|
import { GraphNodeHeader, GraphNodeMeta, GraphNodeBadge, GraphNodeIconBubble } from './chunk-OZNTQROP.mjs';
|
|
6
5
|
import { getAgentTier, createDefaultLogicNodeConfig, applyDagreLayout } from './chunk-G7JQ4OCE.mjs';
|
|
7
6
|
import { memo, useState, useRef, useCallback, useEffect, lazy, createContext, useMemo, useContext } from 'react';
|
|
@@ -9,7 +8,7 @@ import { Position, NodeResizer, MarkerType, useReactFlow, getBezierPath, BaseEdg
|
|
|
9
8
|
import '@xyflow/react/dist/style.css';
|
|
10
9
|
import { create } from 'zustand';
|
|
11
10
|
import { PlusIcon, XMarkIcon } from '@heroicons/react/24/solid';
|
|
12
|
-
import { Bars2Icon, CursorArrowRaysIcon, HandRaisedIcon, MagnifyingGlassPlusIcon, MagnifyingGlassMinusIcon, ArrowsPointingInIcon, ArrowUturnLeftIcon, ArrowUturnRightIcon, MapIcon, EllipsisHorizontalIcon, Squares2X2Icon, ArrowsRightLeftIcon, CommandLineIcon, ExclamationTriangleIcon, CpuChipIcon, TrashIcon, WrenchScrewdriverIcon, NewspaperIcon, ChartBarIcon, CloudIcon, ScaleIcon, AdjustmentsHorizontalIcon, CircleStackIcon, PlayIcon, StopIcon, ArrowsPointingOutIcon, CodeBracketIcon, GlobeAltIcon, DocumentTextIcon, ArrowPathIcon, BookOpenIcon, ChatBubbleLeftRightIcon, QuestionMarkCircleIcon, AdjustmentsVerticalIcon, Square3Stack3DIcon, DocumentMagnifyingGlassIcon, ListBulletIcon, PlayCircleIcon, PencilSquareIcon, ServerStackIcon,
|
|
11
|
+
import { Bars2Icon, CursorArrowRaysIcon, HandRaisedIcon, MagnifyingGlassPlusIcon, MagnifyingGlassMinusIcon, ArrowsPointingInIcon, ArrowUturnLeftIcon, ArrowUturnRightIcon, MapIcon, EllipsisHorizontalIcon, Squares2X2Icon, ArrowsRightLeftIcon, CommandLineIcon, ExclamationTriangleIcon, CpuChipIcon, TrashIcon, WrenchScrewdriverIcon, NewspaperIcon, ChartBarIcon, CloudIcon, ScaleIcon, AdjustmentsHorizontalIcon, CircleStackIcon, PlayIcon, StopIcon, ArrowsPointingOutIcon, CodeBracketIcon, GlobeAltIcon, DocumentTextIcon, ArrowPathIcon, BookOpenIcon, ChatBubbleLeftRightIcon, QuestionMarkCircleIcon, AdjustmentsVerticalIcon, Square3Stack3DIcon, DocumentMagnifyingGlassIcon, ListBulletIcon, PlayCircleIcon, PencilSquareIcon, ServerStackIcon, RectangleGroupIcon, ChevronDownIcon, ChevronUpIcon, MicrophoneIcon, SpeakerWaveIcon, KeyIcon, CloudArrowUpIcon, PresentationChartBarIcon, ChartPieIcon, ChartBarSquareIcon, CurrencyDollarIcon, ShieldCheckIcon, ClipboardDocumentCheckIcon, ShoppingBagIcon, UsersIcon, BuildingStorefrontIcon, BeakerIcon, PencilIcon, DocumentDuplicateIcon, ClipboardDocumentIcon, ClipboardIcon, PlusIcon as PlusIcon$1, XMarkIcon as XMarkIcon$1, TableCellsIcon, FunnelIcon, Cog6ToothIcon, VariableIcon, MagnifyingGlassIcon, CheckIcon } from '@heroicons/react/24/outline';
|
|
13
12
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
14
13
|
|
|
15
14
|
var DEFAULT_PASTE_OFFSET = 40;
|
|
@@ -2056,7 +2055,7 @@ function NodeRunningIndicatorComponent({ nodeId }) {
|
|
|
2056
2055
|
borderColor: `rgba(${accentRgb}, 0.55)`,
|
|
2057
2056
|
boxShadow: `0 0 0 1px rgba(${accentRgb}, 0.16), 0 6px 16px rgba(${accentRgb}, 0.18)`
|
|
2058
2057
|
},
|
|
2059
|
-
children: /* @__PURE__ */ jsxs("svg", { className: "h-3 w-3 animate-spin", style: { color: accentColor }, viewBox: "0 0 24 24", fill: "none", children: [
|
|
2058
|
+
children: /* @__PURE__ */ jsxs("svg", { className: "h-3 w-3 animate-spin motion-reduce:animate-none", style: { color: accentColor }, viewBox: "0 0 24 24", fill: "none", children: [
|
|
2060
2059
|
/* @__PURE__ */ jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
2061
2060
|
/* @__PURE__ */ jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })
|
|
2062
2061
|
] })
|
|
@@ -3541,92 +3540,6 @@ var DatasourceFlowNode = memo(function DatasourceFlowNode2({ id, data, selected
|
|
|
3541
3540
|
/* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Right, id: "right-out", colorClass: "!bg-cyan-400" })
|
|
3542
3541
|
] });
|
|
3543
3542
|
});
|
|
3544
|
-
var SI = (slug, color) => `https://cdn.simpleicons.org/${slug}/${color}`;
|
|
3545
|
-
var PROVIDER_LOGOS = {
|
|
3546
|
-
aws_bedrock: "https://www.svgrepo.com/show/448266/aws.svg",
|
|
3547
|
-
openai_api: "https://www.svgrepo.com/show/306500/openai.svg",
|
|
3548
|
-
google_vertex: SI("googlegemini", "8E75B2"),
|
|
3549
|
-
azure_openai: SI("microsoftazure", "0078D4"),
|
|
3550
|
-
anthropic_api: SI("anthropic", "D4A27F"),
|
|
3551
|
-
groq: SI("groq", "000000"),
|
|
3552
|
-
mistral: SI("mistralai", "FF7000"),
|
|
3553
|
-
huggingface: SI("huggingface", "FFD21E"),
|
|
3554
|
-
ollama: SI("ollama", "FFFFFF")
|
|
3555
|
-
};
|
|
3556
|
-
var PROVIDER_TYPE_LABELS = {
|
|
3557
|
-
aws_bedrock: "AWS Bedrock",
|
|
3558
|
-
openai_api: "OpenAI API",
|
|
3559
|
-
google_vertex: "Google Vertex AI",
|
|
3560
|
-
azure_openai: "Azure OpenAI",
|
|
3561
|
-
anthropic_api: "Anthropic API",
|
|
3562
|
-
groq: "Groq Cloud",
|
|
3563
|
-
mistral: "Mistral AI",
|
|
3564
|
-
huggingface: "Hugging Face",
|
|
3565
|
-
ollama: "Ollama (Local)",
|
|
3566
|
-
custom: "Custom"
|
|
3567
|
-
};
|
|
3568
|
-
var ModelProviderFlowNode = memo(function ModelProviderFlowNode2({ id, data, selected }) {
|
|
3569
|
-
const config = data.config;
|
|
3570
|
-
const isCompact = data.displayMode === "compact";
|
|
3571
|
-
if (!config) {
|
|
3572
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3573
|
-
/* @__PURE__ */ jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3574
|
-
/* @__PURE__ */ jsx(WorkflowHandle, { type: "target", position: Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
3575
|
-
/* @__PURE__ */ jsx(WorkflowHandle, { type: "target", position: Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
3576
|
-
/* @__PURE__ */ jsx(NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsx(
|
|
3577
|
-
NodeCardHeader,
|
|
3578
|
-
{
|
|
3579
|
-
icon: /* @__PURE__ */ jsx(ExclamationTriangleIcon, { className: "h-6 w-6 text-white" }),
|
|
3580
|
-
title: data.label || "Model Provider",
|
|
3581
|
-
description: "Not configured",
|
|
3582
|
-
iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
|
|
3583
|
-
}
|
|
3584
|
-
) }),
|
|
3585
|
-
/* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
3586
|
-
/* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
3587
|
-
] });
|
|
3588
|
-
}
|
|
3589
|
-
const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
|
|
3590
|
-
const displayName = config.name || providerLabel;
|
|
3591
|
-
const regionLabel = config.region ? config.region : void 0;
|
|
3592
|
-
const isConfigured = !!(config.credentialRef || config.apiKeyRef);
|
|
3593
|
-
const logo = PROVIDER_LOGOS[config.providerType];
|
|
3594
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3595
|
-
/* @__PURE__ */ jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3596
|
-
/* @__PURE__ */ jsx(WorkflowHandle, { type: "target", position: Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
3597
|
-
/* @__PURE__ */ jsx(WorkflowHandle, { type: "target", position: Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
3598
|
-
/* @__PURE__ */ jsx(
|
|
3599
|
-
"button",
|
|
3600
|
-
{
|
|
3601
|
-
type: "button",
|
|
3602
|
-
onClick: () => data.onEdit?.(id),
|
|
3603
|
-
className: "w-full text-left",
|
|
3604
|
-
children: /* @__PURE__ */ jsxs(NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
|
|
3605
|
-
/* @__PURE__ */ jsx(
|
|
3606
|
-
NodeCardHeader,
|
|
3607
|
-
{
|
|
3608
|
-
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" }),
|
|
3609
|
-
title: displayName,
|
|
3610
|
-
description: providerLabel,
|
|
3611
|
-
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"}`
|
|
3612
|
-
}
|
|
3613
|
-
),
|
|
3614
|
-
/* @__PURE__ */ jsx(NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
3615
|
-
/* @__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 }),
|
|
3616
|
-
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 }),
|
|
3617
|
-
/* @__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" }),
|
|
3618
|
-
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: [
|
|
3619
|
-
config.modelFilter.length,
|
|
3620
|
-
" models"
|
|
3621
|
-
] })
|
|
3622
|
-
] }) })
|
|
3623
|
-
] })
|
|
3624
|
-
}
|
|
3625
|
-
),
|
|
3626
|
-
/* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
3627
|
-
/* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
3628
|
-
] });
|
|
3629
|
-
});
|
|
3630
3543
|
var GROUP_COLORS = {
|
|
3631
3544
|
indigo: {
|
|
3632
3545
|
border: "border-indigo-300/50 dark:border-indigo-600/50",
|
|
@@ -3889,6 +3802,46 @@ var SpeechTranscriberFlowNode = memo(function SpeechTranscriberFlowNode2({ id, d
|
|
|
3889
3802
|
/* @__PURE__ */ jsx(WorkflowHandle, { type: "source", position: Position.Right, id: "right-out", colorClass: "!bg-violet-500" })
|
|
3890
3803
|
] });
|
|
3891
3804
|
});
|
|
3805
|
+
var DashboardOutputFlowNode = memo(function DashboardOutputFlowNode2({ id, data, selected }) {
|
|
3806
|
+
const t = useTranslations("agents.workflow");
|
|
3807
|
+
const { config, label, onDelete, onEdit } = data;
|
|
3808
|
+
const isCompact = data.displayMode === "compact";
|
|
3809
|
+
const source = config?.dashboardFrom ? `\u2190 ${config.dashboardFrom}` : config?.dashboard ? "inline" : "unset";
|
|
3810
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3811
|
+
/* @__PURE__ */ jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3812
|
+
/* @__PURE__ */ jsx(WorkflowHandle, { type: "target", position: Position.Left, id: "left-in", colorClass: "!bg-fuchsia-500" }),
|
|
3813
|
+
/* @__PURE__ */ jsxs(
|
|
3814
|
+
NodeInteractiveCard,
|
|
3815
|
+
{
|
|
3816
|
+
nodeId: id,
|
|
3817
|
+
onEdit,
|
|
3818
|
+
compact: isCompact,
|
|
3819
|
+
selected,
|
|
3820
|
+
nodeType: "dashboard_output",
|
|
3821
|
+
width: "w-[260px]",
|
|
3822
|
+
children: [
|
|
3823
|
+
/* @__PURE__ */ jsx(
|
|
3824
|
+
NodeCardHeader,
|
|
3825
|
+
{
|
|
3826
|
+
icon: /* @__PURE__ */ jsx(NodeIconBubble, { tone: "dashboard_output", children: /* @__PURE__ */ jsx(ChartBarIcon, { className: "h-5 w-5 text-white" }) }),
|
|
3827
|
+
title: label,
|
|
3828
|
+
description: t("dashboardOutputNodeDescription"),
|
|
3829
|
+
compact: isCompact,
|
|
3830
|
+
iconClassName: ""
|
|
3831
|
+
}
|
|
3832
|
+
),
|
|
3833
|
+
/* @__PURE__ */ jsxs(NodeCardMeta, { compact: isCompact, children: [
|
|
3834
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3835
|
+
/* @__PURE__ */ jsx(NodeCardBadge, { tone: "dashboard_output", children: t("dashboardOutputNode") }),
|
|
3836
|
+
/* @__PURE__ */ jsx(NodeCardBadge, { tone: "dashboard_output", soft: true, children: source })
|
|
3837
|
+
] }),
|
|
3838
|
+
/* @__PURE__ */ jsx(NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
3839
|
+
] })
|
|
3840
|
+
]
|
|
3841
|
+
}
|
|
3842
|
+
)
|
|
3843
|
+
] });
|
|
3844
|
+
});
|
|
3892
3845
|
function ConfigFormActions({
|
|
3893
3846
|
cancelLabel,
|
|
3894
3847
|
saveLabel,
|
|
@@ -5917,215 +5870,6 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5917
5870
|
)
|
|
5918
5871
|
] });
|
|
5919
5872
|
}
|
|
5920
|
-
var catalogCache = null;
|
|
5921
|
-
var catalogPromise = null;
|
|
5922
|
-
async function loadCatalog() {
|
|
5923
|
-
if (catalogCache) return catalogCache;
|
|
5924
|
-
if (!catalogPromise) {
|
|
5925
|
-
catalogPromise = listModelProviderCatalog().then((rows) => {
|
|
5926
|
-
catalogCache = rows;
|
|
5927
|
-
return rows;
|
|
5928
|
-
});
|
|
5929
|
-
}
|
|
5930
|
-
return catalogPromise;
|
|
5931
|
-
}
|
|
5932
|
-
var ENDPOINT_SLUGS = /* @__PURE__ */ new Set(["custom", "azure_openai", "ollama"]);
|
|
5933
|
-
function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
|
|
5934
|
-
const t = useTranslations("agents.workflow.modelProviderNodeConfig");
|
|
5935
|
-
const [catalog, setCatalog] = useState(catalogCache);
|
|
5936
|
-
const [catalogError, setCatalogError] = useState(null);
|
|
5937
|
-
const [providerType, setProviderType] = useState(config.providerType);
|
|
5938
|
-
const [name, setName] = useState(config.name ?? "");
|
|
5939
|
-
const [region, setRegion] = useState(config.region ?? "");
|
|
5940
|
-
const [endpoint, setEndpoint] = useState(config.endpoint ?? "");
|
|
5941
|
-
const [credentialRef, setCredentialRef] = useState(config.credentialRef ?? "");
|
|
5942
|
-
const [apiKeyRef, setApiKeyRef] = useState(config.apiKeyRef ?? "");
|
|
5943
|
-
const [selectedFamilies, setSelectedFamilies] = useState(/* @__PURE__ */ new Set());
|
|
5944
|
-
useEffect(() => {
|
|
5945
|
-
let cancelled = false;
|
|
5946
|
-
if (catalog) return;
|
|
5947
|
-
void loadCatalog().then((rows) => {
|
|
5948
|
-
if (cancelled) return;
|
|
5949
|
-
setCatalog(rows);
|
|
5950
|
-
}).catch((error) => {
|
|
5951
|
-
if (cancelled) return;
|
|
5952
|
-
const message = error instanceof Error ? error.message : "Failed to load provider catalog";
|
|
5953
|
-
setCatalogError(message);
|
|
5954
|
-
});
|
|
5955
|
-
return () => {
|
|
5956
|
-
cancelled = true;
|
|
5957
|
-
};
|
|
5958
|
-
}, [catalog]);
|
|
5959
|
-
const currentProvider = useMemo(() => {
|
|
5960
|
-
if (!catalog) return void 0;
|
|
5961
|
-
return catalog.find((entry) => entry.slug === providerType);
|
|
5962
|
-
}, [catalog, providerType]);
|
|
5963
|
-
const families = currentProvider?.families ?? [];
|
|
5964
|
-
const regions = Array.isArray(currentProvider?.regions) ? currentProvider.regions : [];
|
|
5965
|
-
const showRegion = regions.length > 0;
|
|
5966
|
-
const showEndpoint = ENDPOINT_SLUGS.has(providerType);
|
|
5967
|
-
const authType = currentProvider?.authType ?? null;
|
|
5968
|
-
const showApiKey = authType === "api_key";
|
|
5969
|
-
const showCredentialRef = authType === "iam_role";
|
|
5970
|
-
useEffect(() => {
|
|
5971
|
-
if (!currentProvider) return;
|
|
5972
|
-
setSelectedFamilies((previous) => {
|
|
5973
|
-
if (previous.size > 0) return previous;
|
|
5974
|
-
const filter = new Set(config.modelFilter ?? []);
|
|
5975
|
-
const next = /* @__PURE__ */ new Set();
|
|
5976
|
-
for (const family of currentProvider.families) {
|
|
5977
|
-
if (filter.size === 0 || family.modelIds.some((id) => filter.has(id))) {
|
|
5978
|
-
next.add(family.id);
|
|
5979
|
-
}
|
|
5980
|
-
}
|
|
5981
|
-
return next;
|
|
5982
|
-
});
|
|
5983
|
-
}, [currentProvider, config.modelFilter]);
|
|
5984
|
-
const handleToggleFamily = (familyId) => {
|
|
5985
|
-
setSelectedFamilies((previous) => {
|
|
5986
|
-
const next = new Set(previous);
|
|
5987
|
-
if (next.has(familyId)) next.delete(familyId);
|
|
5988
|
-
else next.add(familyId);
|
|
5989
|
-
return next;
|
|
5990
|
-
});
|
|
5991
|
-
};
|
|
5992
|
-
const handleProviderChange = (value) => {
|
|
5993
|
-
const newType = value;
|
|
5994
|
-
setProviderType(newType);
|
|
5995
|
-
setRegion("");
|
|
5996
|
-
const next = catalog?.find((entry) => entry.slug === newType);
|
|
5997
|
-
setSelectedFamilies(new Set((next?.families ?? []).map((family) => family.id)));
|
|
5998
|
-
};
|
|
5999
|
-
const handleSave = () => {
|
|
6000
|
-
const modelFilter = families.filter((family) => selectedFamilies.has(family.id)).flatMap((family) => family.modelIds);
|
|
6001
|
-
onSave({
|
|
6002
|
-
...config,
|
|
6003
|
-
providerType,
|
|
6004
|
-
name: name.trim() || void 0,
|
|
6005
|
-
region: region || void 0,
|
|
6006
|
-
endpoint: endpoint.trim() || void 0,
|
|
6007
|
-
credentialRef: credentialRef.trim() || void 0,
|
|
6008
|
-
apiKeyRef: apiKeyRef.trim() || void 0,
|
|
6009
|
-
modelFilter
|
|
6010
|
-
});
|
|
6011
|
-
};
|
|
6012
|
-
if (catalogError) {
|
|
6013
|
-
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
6014
|
-
/* @__PURE__ */ 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 }),
|
|
6015
|
-
/* @__PURE__ */ jsx(
|
|
6016
|
-
ConfigFormActions,
|
|
6017
|
-
{
|
|
6018
|
-
cancelLabel: t("cancel"),
|
|
6019
|
-
saveLabel: t("save"),
|
|
6020
|
-
onCancel,
|
|
6021
|
-
onSave: handleSave,
|
|
6022
|
-
saveDisabled: true
|
|
6023
|
-
}
|
|
6024
|
-
)
|
|
6025
|
-
] });
|
|
6026
|
-
}
|
|
6027
|
-
if (!catalog) {
|
|
6028
|
-
return /* @__PURE__ */ jsx("div", { className: "space-y-4 h-32" });
|
|
6029
|
-
}
|
|
6030
|
-
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
6031
|
-
/* @__PURE__ */ jsx(
|
|
6032
|
-
FormInput,
|
|
6033
|
-
{
|
|
6034
|
-
type: "text",
|
|
6035
|
-
label: t("nameLabel"),
|
|
6036
|
-
value: name,
|
|
6037
|
-
onValueChange: setName,
|
|
6038
|
-
placeholder: t("namePlaceholder")
|
|
6039
|
-
}
|
|
6040
|
-
),
|
|
6041
|
-
/* @__PURE__ */ jsx(
|
|
6042
|
-
FormSelect,
|
|
6043
|
-
{
|
|
6044
|
-
label: t("providerTypeLabel"),
|
|
6045
|
-
value: providerType,
|
|
6046
|
-
onValueChange: handleProviderChange,
|
|
6047
|
-
options: catalog.filter((entry) => entry.enabled).map((entry) => ({ value: entry.slug, label: entry.name }))
|
|
6048
|
-
}
|
|
6049
|
-
),
|
|
6050
|
-
showRegion && /* @__PURE__ */ jsx(
|
|
6051
|
-
FormSelect,
|
|
6052
|
-
{
|
|
6053
|
-
label: t("regionLabel"),
|
|
6054
|
-
value: region,
|
|
6055
|
-
onValueChange: setRegion,
|
|
6056
|
-
options: [
|
|
6057
|
-
{ value: "", label: t("selectRegion") },
|
|
6058
|
-
...regions.map((value) => ({ value, label: value }))
|
|
6059
|
-
]
|
|
6060
|
-
}
|
|
6061
|
-
),
|
|
6062
|
-
showEndpoint && /* @__PURE__ */ jsx(
|
|
6063
|
-
FormInput,
|
|
6064
|
-
{
|
|
6065
|
-
type: "text",
|
|
6066
|
-
label: t("endpointLabel"),
|
|
6067
|
-
value: endpoint,
|
|
6068
|
-
onValueChange: setEndpoint,
|
|
6069
|
-
placeholder: providerType === "ollama" ? "http://localhost:11434" : t("endpointPlaceholder")
|
|
6070
|
-
}
|
|
6071
|
-
),
|
|
6072
|
-
showApiKey && /* @__PURE__ */ jsx(
|
|
6073
|
-
FormInput,
|
|
6074
|
-
{
|
|
6075
|
-
type: "password",
|
|
6076
|
-
label: t("apiKeyLabel"),
|
|
6077
|
-
value: apiKeyRef,
|
|
6078
|
-
onValueChange: setApiKeyRef,
|
|
6079
|
-
placeholder: t("apiKeyPlaceholder")
|
|
6080
|
-
}
|
|
6081
|
-
),
|
|
6082
|
-
showCredentialRef && /* @__PURE__ */ jsx(
|
|
6083
|
-
FormInput,
|
|
6084
|
-
{
|
|
6085
|
-
type: "text",
|
|
6086
|
-
label: t("credentialRefLabel"),
|
|
6087
|
-
value: credentialRef,
|
|
6088
|
-
onValueChange: setCredentialRef,
|
|
6089
|
-
placeholder: providerType === "aws_bedrock" ? "arn:aws:iam::role/bedrock-role" : t("credentialRefPlaceholder")
|
|
6090
|
-
}
|
|
6091
|
-
),
|
|
6092
|
-
families.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
6093
|
-
/* @__PURE__ */ jsx("label", { className: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("modelFamiliesLabel") }),
|
|
6094
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1.5", children: families.map((family) => {
|
|
6095
|
-
const isSelected = selectedFamilies.has(family.id);
|
|
6096
|
-
return /* @__PURE__ */ jsxs(
|
|
6097
|
-
"button",
|
|
6098
|
-
{
|
|
6099
|
-
type: "button",
|
|
6100
|
-
onClick: () => handleToggleFamily(family.id),
|
|
6101
|
-
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"}`,
|
|
6102
|
-
children: [
|
|
6103
|
-
/* @__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" }) }) }),
|
|
6104
|
-
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
6105
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-white", children: family.name }),
|
|
6106
|
-
/* @__PURE__ */ jsxs("span", { className: "ml-2 text-[10px] text-gray-400 dark:text-gray-500", children: [
|
|
6107
|
-
family.modelIds.length,
|
|
6108
|
-
" models"
|
|
6109
|
-
] })
|
|
6110
|
-
] })
|
|
6111
|
-
]
|
|
6112
|
-
},
|
|
6113
|
-
family.id
|
|
6114
|
-
);
|
|
6115
|
-
}) })
|
|
6116
|
-
] }),
|
|
6117
|
-
/* @__PURE__ */ jsx(
|
|
6118
|
-
ConfigFormActions,
|
|
6119
|
-
{
|
|
6120
|
-
cancelLabel: t("cancel"),
|
|
6121
|
-
saveLabel: t("save"),
|
|
6122
|
-
onCancel,
|
|
6123
|
-
onSave: handleSave,
|
|
6124
|
-
saveDisabled: !providerType
|
|
6125
|
-
}
|
|
6126
|
-
)
|
|
6127
|
-
] });
|
|
6128
|
-
}
|
|
6129
5873
|
function RuleNodeConfigForm({ config, onSave, onCancel, availableRules }) {
|
|
6130
5874
|
const t = useTranslations("agents.workflow.ruleNodeConfig");
|
|
6131
5875
|
const [ruleId, setRuleId] = useState(config.ruleId ?? "");
|
|
@@ -6494,6 +6238,93 @@ function SpeechTranscriberNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
6494
6238
|
)
|
|
6495
6239
|
] });
|
|
6496
6240
|
}
|
|
6241
|
+
function DashboardOutputNodeConfigForm({ config, onSave, onCancel }) {
|
|
6242
|
+
const t = useTranslations("agents.workflow.dashboardOutputNodeConfig");
|
|
6243
|
+
const initialMode = config.dashboard ? "inline" : "reference";
|
|
6244
|
+
const [mode, setMode] = useState(initialMode);
|
|
6245
|
+
const [dashboardFrom, setDashboardFrom] = useState(config.dashboardFrom ?? "");
|
|
6246
|
+
const [inlineJson, setInlineJson] = useState(
|
|
6247
|
+
config.dashboard ? JSON.stringify(config.dashboard, null, 2) : ""
|
|
6248
|
+
);
|
|
6249
|
+
const [parseError, setParseError] = useState(null);
|
|
6250
|
+
const handleSave = () => {
|
|
6251
|
+
if (mode === "reference") {
|
|
6252
|
+
const trimmed = dashboardFrom.trim();
|
|
6253
|
+
onSave({ type: "dashboard_output", dashboardFrom: trimmed });
|
|
6254
|
+
return;
|
|
6255
|
+
}
|
|
6256
|
+
try {
|
|
6257
|
+
const parsed = inlineJson.trim() ? JSON.parse(inlineJson) : {};
|
|
6258
|
+
setParseError(null);
|
|
6259
|
+
onSave({ type: "dashboard_output", dashboard: parsed });
|
|
6260
|
+
} catch (error) {
|
|
6261
|
+
setParseError(error instanceof Error ? error.message : String(error));
|
|
6262
|
+
}
|
|
6263
|
+
};
|
|
6264
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
6265
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t("description") }),
|
|
6266
|
+
/* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
6267
|
+
/* @__PURE__ */ jsx(
|
|
6268
|
+
"button",
|
|
6269
|
+
{
|
|
6270
|
+
type: "button",
|
|
6271
|
+
onClick: () => setMode("reference"),
|
|
6272
|
+
className: `flex-1 rounded-lg border px-3 py-2 text-xs font-medium transition-colors ${mode === "reference" ? "border-fuchsia-500 bg-fuchsia-500/10 text-fuchsia-700 dark:text-fuchsia-300" : "border-gray-200 bg-white text-gray-600 hover:border-fuchsia-300 dark:border-white/10 dark:bg-white/5 dark:text-gray-300"}`,
|
|
6273
|
+
children: t("modeReference")
|
|
6274
|
+
}
|
|
6275
|
+
),
|
|
6276
|
+
/* @__PURE__ */ jsx(
|
|
6277
|
+
"button",
|
|
6278
|
+
{
|
|
6279
|
+
type: "button",
|
|
6280
|
+
onClick: () => setMode("inline"),
|
|
6281
|
+
className: `flex-1 rounded-lg border px-3 py-2 text-xs font-medium transition-colors ${mode === "inline" ? "border-fuchsia-500 bg-fuchsia-500/10 text-fuchsia-700 dark:text-fuchsia-300" : "border-gray-200 bg-white text-gray-600 hover:border-fuchsia-300 dark:border-white/10 dark:bg-white/5 dark:text-gray-300"}`,
|
|
6282
|
+
children: t("modeInline")
|
|
6283
|
+
}
|
|
6284
|
+
)
|
|
6285
|
+
] }),
|
|
6286
|
+
mode === "reference" ? /* @__PURE__ */ jsxs("div", { children: [
|
|
6287
|
+
/* @__PURE__ */ jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: t("referenceLabel") }),
|
|
6288
|
+
/* @__PURE__ */ jsx(
|
|
6289
|
+
"input",
|
|
6290
|
+
{
|
|
6291
|
+
type: "text",
|
|
6292
|
+
value: dashboardFrom,
|
|
6293
|
+
onChange: (event) => setDashboardFrom(event.target.value),
|
|
6294
|
+
placeholder: t("referencePlaceholder"),
|
|
6295
|
+
className: "w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm font-mono text-gray-900 placeholder:text-gray-400 focus:border-fuchsia-500 focus:outline-none focus:ring-1 focus:ring-fuchsia-500 dark:border-white/10 dark:bg-white/5 dark:text-white"
|
|
6296
|
+
}
|
|
6297
|
+
),
|
|
6298
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 text-[10px] text-gray-500 dark:text-gray-400", children: t("referenceHelp") })
|
|
6299
|
+
] }) : /* @__PURE__ */ jsxs("div", { children: [
|
|
6300
|
+
/* @__PURE__ */ jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: t("inlineLabel") }),
|
|
6301
|
+
/* @__PURE__ */ jsx(
|
|
6302
|
+
"textarea",
|
|
6303
|
+
{
|
|
6304
|
+
value: inlineJson,
|
|
6305
|
+
onChange: (event) => setInlineJson(event.target.value),
|
|
6306
|
+
placeholder: '{\\n "kpis": [],\\n "charts": [],\\n "tables": []\\n}',
|
|
6307
|
+
rows: 12,
|
|
6308
|
+
className: "w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-xs font-mono text-gray-900 placeholder:text-gray-400 focus:border-fuchsia-500 focus:outline-none focus:ring-1 focus:ring-fuchsia-500 dark:border-white/10 dark:bg-white/5 dark:text-white"
|
|
6309
|
+
}
|
|
6310
|
+
),
|
|
6311
|
+
parseError ? /* @__PURE__ */ jsxs("p", { className: "mt-1 text-[10px] font-medium text-red-600 dark:text-red-400", children: [
|
|
6312
|
+
t("parseError"),
|
|
6313
|
+
": ",
|
|
6314
|
+
parseError
|
|
6315
|
+
] }) : /* @__PURE__ */ jsx("p", { className: "mt-1 text-[10px] text-gray-500 dark:text-gray-400", children: t("inlineHelp") })
|
|
6316
|
+
] }),
|
|
6317
|
+
/* @__PURE__ */ jsx(
|
|
6318
|
+
ConfigFormActions,
|
|
6319
|
+
{
|
|
6320
|
+
cancelLabel: t("cancel"),
|
|
6321
|
+
saveLabel: t("save"),
|
|
6322
|
+
onCancel,
|
|
6323
|
+
onSave: handleSave
|
|
6324
|
+
}
|
|
6325
|
+
)
|
|
6326
|
+
] });
|
|
6327
|
+
}
|
|
6497
6328
|
var NODE_TITLE_KEYS = {
|
|
6498
6329
|
start: "startNodeConfig",
|
|
6499
6330
|
end: "endNodeConfig",
|
|
@@ -6515,11 +6346,11 @@ var NODE_TITLE_KEYS = {
|
|
|
6515
6346
|
entity: "entityNodeConfig",
|
|
6516
6347
|
datasource: "datasourceNodeConfig",
|
|
6517
6348
|
group: "groupNodeConfig",
|
|
6518
|
-
model_provider: "modelProviderNodeConfig",
|
|
6519
6349
|
rule: "ruleNodeConfig",
|
|
6520
6350
|
agent: "agentNodeConfig",
|
|
6521
6351
|
audio_input: "audioInputNodeConfig",
|
|
6522
|
-
speech_transcriber: "speechTranscriberNodeConfig"
|
|
6352
|
+
speech_transcriber: "speechTranscriberNodeConfig",
|
|
6353
|
+
dashboard_output: "dashboardOutputNodeConfig"
|
|
6523
6354
|
};
|
|
6524
6355
|
function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables, onLoadSchema }) {
|
|
6525
6356
|
const t = useTranslations("agents.workflow");
|
|
@@ -6580,8 +6411,10 @@ function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables,
|
|
|
6580
6411
|
return /* @__PURE__ */ jsx(EntityNodeConfigForm, { config, entities, onSave: handleSave, onCancel: closeModal });
|
|
6581
6412
|
case "group":
|
|
6582
6413
|
return /* @__PURE__ */ jsx(GroupNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6583
|
-
|
|
6584
|
-
|
|
6414
|
+
// model_provider was removed from the canvas — providers are
|
|
6415
|
+
// now account-level credentials configured in Settings, not
|
|
6416
|
+
// draggable nodes. Any legacy graph that still has a
|
|
6417
|
+
// model_provider node falls through to default → no edit form.
|
|
6585
6418
|
case "rule":
|
|
6586
6419
|
return /* @__PURE__ */ jsx(RuleNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6587
6420
|
case "agent":
|
|
@@ -6590,6 +6423,8 @@ function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables,
|
|
|
6590
6423
|
return /* @__PURE__ */ jsx(AudioInputNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6591
6424
|
case "speech_transcriber":
|
|
6592
6425
|
return /* @__PURE__ */ jsx(SpeechTranscriberNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6426
|
+
case "dashboard_output":
|
|
6427
|
+
return /* @__PURE__ */ jsx(DashboardOutputNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6593
6428
|
default:
|
|
6594
6429
|
return null;
|
|
6595
6430
|
}
|
|
@@ -6972,10 +6807,14 @@ var BUILT_IN_NODE_TYPES = {
|
|
|
6972
6807
|
iteration_start: IterationStartFlowNode,
|
|
6973
6808
|
note: NoteFlowNode,
|
|
6974
6809
|
datasource: DatasourceFlowNode,
|
|
6975
|
-
model_provider
|
|
6810
|
+
// model_provider removed from canvas — providers are now
|
|
6811
|
+
// account-level credentials (configured in Settings), not draggable
|
|
6812
|
+
// nodes. Agents reference the provider via the `Models` tab in the
|
|
6813
|
+
// agent modal. See agent-modal.tsx + n8n/Dify patterns.
|
|
6976
6814
|
group: GroupFlowNode,
|
|
6977
6815
|
audio_input: AudioInputFlowNode,
|
|
6978
|
-
speech_transcriber: SpeechTranscriberFlowNode
|
|
6816
|
+
speech_transcriber: SpeechTranscriberFlowNode,
|
|
6817
|
+
dashboard_output: DashboardOutputFlowNode
|
|
6979
6818
|
};
|
|
6980
6819
|
var ALL_LOGIC_NODE_TYPES = [
|
|
6981
6820
|
"start",
|
|
@@ -7000,10 +6839,10 @@ var ALL_LOGIC_NODE_TYPES = [
|
|
|
7000
6839
|
"rule",
|
|
7001
6840
|
"entity",
|
|
7002
6841
|
"datasource",
|
|
7003
|
-
"model_provider",
|
|
7004
6842
|
"group",
|
|
7005
6843
|
"audio_input",
|
|
7006
|
-
"speech_transcriber"
|
|
6844
|
+
"speech_transcriber",
|
|
6845
|
+
"dashboard_output"
|
|
7007
6846
|
];
|
|
7008
6847
|
function isLogicNodeType(nodeType) {
|
|
7009
6848
|
return ALL_LOGIC_NODE_TYPES.includes(nodeType);
|
|
@@ -7027,6 +6866,7 @@ var AUTO_SAVE_DEBOUNCE_MS = 2e3;
|
|
|
7027
6866
|
function WorkflowCanvasInner({
|
|
7028
6867
|
agents,
|
|
7029
6868
|
models,
|
|
6869
|
+
modelProviders = [],
|
|
7030
6870
|
tools,
|
|
7031
6871
|
agentTools = [],
|
|
7032
6872
|
rules,
|
|
@@ -7061,7 +6901,9 @@ function WorkflowCanvasInner({
|
|
|
7061
6901
|
openAgentModalAction(
|
|
7062
6902
|
{ agentId: "", name: "", order: 0, enabled: true, temperature: 0.7, maxTokens: 4096 },
|
|
7063
6903
|
models,
|
|
7064
|
-
true
|
|
6904
|
+
true,
|
|
6905
|
+
agentTools,
|
|
6906
|
+
modelProviders
|
|
7065
6907
|
);
|
|
7066
6908
|
}
|
|
7067
6909
|
}, [isCreatingAgent]);
|
|
@@ -7208,7 +7050,7 @@ function WorkflowCanvasInner({
|
|
|
7208
7050
|
providerName: models.find((m) => m.id === agent.modelId)?.provider,
|
|
7209
7051
|
onSelect: () => {
|
|
7210
7052
|
setSelectedAgentId(agent.agentId);
|
|
7211
|
-
openAgentModalAction(agent, models, false, agentTools);
|
|
7053
|
+
openAgentModalAction(agent, models, false, agentTools, modelProviders);
|
|
7212
7054
|
},
|
|
7213
7055
|
onRemoveFromCanvas: handleRemoveNodeFromCanvas
|
|
7214
7056
|
}
|
|
@@ -7591,7 +7433,7 @@ function WorkflowCanvasInner({
|
|
|
7591
7433
|
const agent = targetNode.data?.agent;
|
|
7592
7434
|
if (agent) {
|
|
7593
7435
|
setSelectedAgentId(agent.agentId ?? agent.id ?? null);
|
|
7594
|
-
openAgentModalAction(agent, models, false, agentTools);
|
|
7436
|
+
openAgentModalAction(agent, models, false, agentTools, modelProviders);
|
|
7595
7437
|
}
|
|
7596
7438
|
} else if (targetNode.type === "tool") {
|
|
7597
7439
|
const tool = targetNode.data?.tool;
|
|
@@ -8090,7 +7932,7 @@ function WorkflowCanvasInner({
|
|
|
8090
7932
|
selected: false,
|
|
8091
7933
|
onSelect: () => {
|
|
8092
7934
|
setSelectedAgentId(agent.agentId);
|
|
8093
|
-
openAgentModalAction(agent, models, false, agentTools);
|
|
7935
|
+
openAgentModalAction(agent, models, false, agentTools, modelProviders);
|
|
8094
7936
|
},
|
|
8095
7937
|
onRemoveFromCanvas: handleRemoveNodeFromCanvas
|
|
8096
7938
|
}
|
|
@@ -8750,6 +8592,6 @@ function Workspace({
|
|
|
8750
8592
|
) }) });
|
|
8751
8593
|
}
|
|
8752
8594
|
|
|
8753
|
-
export { AgentFlowNode, AgentToolFlowNode, AnswerFlowNode, AnthropicIcon, CATEGORY_COLORS, CATEGORY_PILL_COLORS, CodeFlowNode, CrewAIIcon, DocumentExtractorFlowNode, EXPERIMENTAL_NODE_TYPES, 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,
|
|
8754
|
-
//# sourceMappingURL=chunk-
|
|
8755
|
-
//# sourceMappingURL=chunk-
|
|
8595
|
+
export { AgentFlowNode, AgentToolFlowNode, AnswerFlowNode, AnthropicIcon, CATEGORY_COLORS, CATEGORY_PILL_COLORS, CodeFlowNode, CrewAIIcon, DocumentExtractorFlowNode, EXPERIMENTAL_NODE_TYPES, 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, NODE_EXECUTION_ACCENT_COLORS, NodeCard, NodeCardBadge, NodeCardDeleteAction, NodeCardHeader, NodeCardMeta, NodeContextMenu, NodeIconBubble, NodeInteractiveCard, NodeRunningIndicator, NoteFlowNode, OpenAIIcon, PanelContextMenu, ParameterExtractorFlowNode, QuestionClassifierFlowNode, RuleFlowNode, SelectionContextMenu, StartFlowNode, StrandsIcon, TemplateTransformFlowNode, ToolFlowNode, VariableAggregatorFlowNode, VariableAssignerFlowNode, WorkflowBuilderProvider, WorkflowCanvas, WorkflowHandle, Workspace, getCompatibleModels, getDefaultFrameworkForModel, getEntityBadgeColor, getEntityGradient, getEntityHandleColor, getEntityIcon, getEntityMinimapColor, getFrameworkMeta, getNodeExecutionAccent, getNodeExecutionAccentRgb, isFrameworkCompatibleWithProviders, isModelCompatibleWithFramework, useModalStore, useWorkflowBuilderClient, useWorkflowBuilderClientOptional, useWorkflowStore };
|
|
8596
|
+
//# sourceMappingURL=chunk-OASC7NYV.mjs.map
|
|
8597
|
+
//# sourceMappingURL=chunk-OASC7NYV.mjs.map
|