@datatechsolutions/ui 3.2.1 → 3.4.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/contracts.d.mts +31 -3
- package/dist/astrlabe/contracts.d.ts +31 -3
- package/dist/astrlabe/index.d.mts +22 -30
- package/dist/astrlabe/index.d.ts +22 -30
- package/dist/astrlabe/index.js +121 -121
- package/dist/astrlabe/index.mjs +7 -7
- package/dist/astrlabe/utils.js +9 -9
- package/dist/astrlabe/utils.mjs +2 -2
- package/dist/astrlabe/workflow-canvas.d.mts +6 -69
- package/dist/astrlabe/workflow-canvas.d.ts +6 -69
- package/dist/astrlabe/workflow-canvas.js +6 -6
- package/dist/astrlabe/workflow-canvas.mjs +5 -5
- package/dist/brand/index.d.mts +1 -15
- package/dist/brand/index.d.ts +1 -15
- 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-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-JSNRCYSO.js → chunk-45QAUEYT.js} +4 -4
- package/dist/{chunk-JSNRCYSO.js.map → chunk-45QAUEYT.js.map} +1 -1
- package/dist/{chunk-B67DP7MI.mjs → chunk-4GDWGWHY.mjs} +4 -4
- package/dist/{chunk-B67DP7MI.mjs.map → chunk-4GDWGWHY.mjs.map} +1 -1
- package/dist/{chunk-KR2X2WHJ.js → chunk-4ICEQJH4.js} +53 -53
- package/dist/{chunk-KR2X2WHJ.js.map → chunk-4ICEQJH4.js.map} +1 -1
- package/dist/{chunk-RXZNACMI.js → chunk-6MBWKOPF.js} +33 -33
- package/dist/{chunk-RXZNACMI.js.map → chunk-6MBWKOPF.js.map} +1 -1
- package/dist/{chunk-C3H4FM4A.js → chunk-72SWXOD5.js} +15 -2
- package/dist/chunk-72SWXOD5.js.map +1 -0
- package/dist/{chunk-JN6IL6OH.mjs → chunk-AGGOHPMZ.mjs} +1054 -5229
- package/dist/chunk-AGGOHPMZ.mjs.map +1 -0
- package/dist/{chunk-5GDKCFM5.mjs → chunk-AL73YAV4.mjs} +3 -3
- package/dist/{chunk-5GDKCFM5.mjs.map → chunk-AL73YAV4.mjs.map} +1 -1
- package/dist/{chunk-ZJPNP2YW.mjs → chunk-BUDZNAKL.mjs} +2 -2
- package/dist/chunk-BUDZNAKL.mjs.map +1 -0
- package/dist/{chunk-OL73LBX5.mjs → chunk-BW67WFHT.mjs} +3 -4
- package/dist/chunk-BW67WFHT.mjs.map +1 -0
- package/dist/{chunk-W5OEBO6E.js → chunk-CF7GOUBQ.js} +13 -14
- package/dist/chunk-CF7GOUBQ.js.map +1 -0
- package/dist/{chunk-IRPS5UCS.mjs → chunk-CUWPLPVY.mjs} +3 -3
- package/dist/{chunk-IRPS5UCS.mjs.map → chunk-CUWPLPVY.mjs.map} +1 -1
- package/dist/{chunk-NJS2YC3J.js → chunk-DJDZIRM6.js} +12 -2
- package/dist/chunk-DJDZIRM6.js.map +1 -0
- package/dist/{chunk-RL35XATZ.js → chunk-ERCDMBRT.js} +702 -647
- package/dist/chunk-ERCDMBRT.js.map +1 -0
- package/dist/{chunk-I2NZGVBG.js → chunk-FSBR4RCK.js} +1101 -5313
- package/dist/chunk-FSBR4RCK.js.map +1 -0
- package/dist/{chunk-5W7L7BT7.mjs → chunk-G7JQ4OCE.mjs} +15 -2
- package/dist/chunk-G7JQ4OCE.mjs.map +1 -0
- package/dist/{chunk-5RM6NGZ6.mjs → chunk-IDEM3DYF.mjs} +3 -3
- package/dist/{chunk-5RM6NGZ6.mjs.map → chunk-IDEM3DYF.mjs.map} +1 -1
- package/dist/{chunk-U7XM3N7F.mjs → chunk-LEXBTVGM.mjs} +12 -2
- package/dist/chunk-LEXBTVGM.mjs.map +1 -0
- package/dist/{chunk-EFOXN3LC.js → chunk-M7KSEUZR.js} +490 -389
- package/dist/chunk-M7KSEUZR.js.map +1 -0
- package/dist/{chunk-AOUUZ52N.js → chunk-MO5FBVV3.js} +85 -86
- package/dist/chunk-MO5FBVV3.js.map +1 -0
- package/dist/{chunk-H2D2CRTD.mjs → chunk-NAFWHJCM.mjs} +8 -8
- package/dist/{chunk-H2D2CRTD.mjs.map → chunk-NAFWHJCM.mjs.map} +1 -1
- package/dist/{chunk-3JJWPOK6.js → chunk-NCLZKVJK.js} +9 -10
- package/dist/chunk-NCLZKVJK.js.map +1 -0
- package/dist/{chunk-R4TQWXNG.mjs → chunk-NVQWHJQH.mjs} +6 -5
- package/dist/chunk-NVQWHJQH.mjs.map +1 -0
- package/dist/{chunk-Y6AEE56Q.js → chunk-PGVZKMOA.js} +69 -69
- package/dist/{chunk-Y6AEE56Q.js.map → chunk-PGVZKMOA.js.map} +1 -1
- package/dist/{chunk-UDDZTTLO.mjs → chunk-QBFE7ABE.mjs} +6 -7
- package/dist/chunk-QBFE7ABE.mjs.map +1 -0
- package/dist/{chunk-3ZUMJTDT.mjs → chunk-RFRXS4PC.mjs} +3 -4
- package/dist/{chunk-3JJWPOK6.js.map → chunk-RFRXS4PC.mjs.map} +1 -1
- 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-SU3YPWFW.js → chunk-RLLP7VQJ.js} +26 -26
- package/dist/{chunk-SU3YPWFW.js.map → chunk-RLLP7VQJ.js.map} +1 -1
- package/dist/{chunk-YIB2YAM5.mjs → chunk-RLVOG5OQ.mjs} +3 -3
- package/dist/{chunk-YIB2YAM5.mjs.map → chunk-RLVOG5OQ.mjs.map} +1 -1
- package/dist/{chunk-QYA53LUF.mjs → chunk-SEYUYGER.mjs} +571 -517
- package/dist/chunk-SEYUYGER.mjs.map +1 -0
- package/dist/{chunk-YV72JM4B.mjs → chunk-SQ4KGLBZ.mjs} +4 -4
- package/dist/{chunk-YV72JM4B.mjs.map → chunk-SQ4KGLBZ.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-ZM5MVWIT.js → chunk-TUQLZ4QD.js} +5 -6
- package/dist/chunk-TUQLZ4QD.js.map +1 -0
- package/dist/{chunk-TVMLV675.js → chunk-UE2RDQIK.js} +98 -95
- package/dist/chunk-UE2RDQIK.js.map +1 -0
- package/dist/{chunk-HDCUWUNH.js → chunk-UJVDI66K.js} +28 -27
- package/dist/chunk-UJVDI66K.js.map +1 -0
- package/dist/{chunk-IRT4T3CU.mjs → chunk-VV6SYMPM.mjs} +423 -321
- package/dist/chunk-VV6SYMPM.mjs.map +1 -0
- package/dist/{chunk-HZ4LOVHM.js → chunk-VY52Y5GC.js} +2 -2
- package/dist/chunk-VY52Y5GC.js.map +1 -0
- package/dist/{chunk-LEKZUS6N.mjs → chunk-X3GW7UPN.mjs} +4 -5
- package/dist/chunk-X3GW7UPN.mjs.map +1 -0
- package/dist/{chunk-RGI74SQH.js → chunk-Y2AYFG4E.js} +4 -4
- package/dist/{chunk-RGI74SQH.js.map → chunk-Y2AYFG4E.js.map} +1 -1
- package/dist/{chunk-TIJJHW2Z.js → chunk-YV7F7IXG.js} +36 -36
- package/dist/{chunk-TIJJHW2Z.js.map → chunk-YV7F7IXG.js.map} +1 -1
- package/dist/{chunk-MVBIAXVN.mjs → chunk-ZKSDDFHG.mjs} +14 -11
- package/dist/chunk-ZKSDDFHG.mjs.map +1 -0
- package/dist/{index-VI9gyJXl.d.mts → index-BNRGVAS5.d.mts} +9 -2
- package/dist/index-BoebbJ44.d.mts +49 -0
- package/dist/index-BoebbJ44.d.ts +49 -0
- package/dist/{index-CoB18TbG.d.ts → index-CnCY-b5V.d.ts} +9 -2
- package/dist/index.d.mts +399 -548
- package/dist/index.d.ts +399 -548
- package/dist/index.js +727 -887
- package/dist/index.mjs +3 -3
- package/dist/platform/admin/index.js +12 -12
- package/dist/platform/admin/index.mjs +6 -6
- package/dist/platform/agents-workspace.js +10 -10
- package/dist/platform/agents-workspace.mjs +9 -9
- package/dist/platform/app-shell.js +5 -5
- package/dist/platform/app-shell.mjs +4 -4
- package/dist/platform/auth/index.js +29 -29
- package/dist/platform/auth/index.mjs +6 -6
- package/dist/platform/billing/index.js +5 -5
- package/dist/platform/billing/index.mjs +4 -4
- package/dist/platform/impersonation/index.js +5 -5
- package/dist/platform/impersonation/index.mjs +4 -4
- package/dist/platform/index.d.mts +3 -39
- package/dist/platform/index.d.ts +3 -39
- package/dist/platform/index.js +102 -4812
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +25 -4730
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/pages/index.d.mts +4 -4
- package/dist/platform/pages/index.d.ts +4 -4
- package/dist/platform/pages/index.js +199 -199
- package/dist/platform/pages/index.mjs +11 -11
- package/dist/platform/rbac.d.mts +2 -1
- package/dist/platform/rbac.d.ts +2 -1
- package/dist/platform/rbac.js +2 -2
- package/dist/platform/rbac.mjs +1 -1
- package/dist/platform/settings/index.js +9 -9
- package/dist/platform/settings/index.mjs +8 -8
- 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.d.mts +2 -2
- package/dist/platform/workflow-api-client.d.ts +2 -2
- 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/dist/{workflow-api-client-DoYj7nHz.d.mts → workflow-api-client-CpFl3WcG.d.mts} +1 -1
- package/dist/{workflow-api-client-BKD8OfP_.d.ts → workflow-api-client-uLICOanv.d.ts} +1 -1
- package/dist/workflow-canvas--qaYKuMm.d.ts +113 -0
- package/dist/workflow-canvas-B80fmD_n.d.mts +113 -0
- package/package.json +15 -5
- package/src/styles/liquid-glass.css +283 -2
- package/dist/chunk-3ZUMJTDT.mjs.map +0 -1
- package/dist/chunk-5W7L7BT7.mjs.map +0 -1
- package/dist/chunk-AOUUZ52N.js.map +0 -1
- package/dist/chunk-C3H4FM4A.js.map +0 -1
- package/dist/chunk-EFOXN3LC.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-IRT4T3CU.mjs.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-NJS2YC3J.js.map +0 -1
- package/dist/chunk-OL73LBX5.mjs.map +0 -1
- package/dist/chunk-QYA53LUF.mjs.map +0 -1
- package/dist/chunk-R4TQWXNG.mjs.map +0 -1
- package/dist/chunk-RL35XATZ.js.map +0 -1
- package/dist/chunk-SYNVNTLJ.mjs.map +0 -1
- package/dist/chunk-TVMLV675.js.map +0 -1
- package/dist/chunk-U7XM3N7F.mjs.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/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,11 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkFSBR4RCK_js = require('./chunk-FSBR4RCK.js');
|
|
5
5
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
6
|
-
var chunkF54Q2YJY_js = require('./chunk-F54Q2YJY.js');
|
|
7
6
|
var chunkP4YYEM4B_js = require('./chunk-P4YYEM4B.js');
|
|
8
|
-
var
|
|
7
|
+
var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
|
|
9
8
|
var react = require('react');
|
|
10
9
|
var react$1 = require('@xyflow/react');
|
|
11
10
|
require('@xyflow/react/dist/style.css');
|
|
@@ -373,7 +372,9 @@ var LOGIC_NODE_GRADIENTS = {
|
|
|
373
372
|
datasource: "from-cyan-500 to-blue-600",
|
|
374
373
|
model_provider: "from-slate-500 to-gray-600",
|
|
375
374
|
dashboard_output: "from-fuchsia-500 to-pink-600",
|
|
376
|
-
group: "from-slate-400 to-gray-500"
|
|
375
|
+
group: "from-slate-400 to-gray-500",
|
|
376
|
+
audio_input: "from-teal-400 to-cyan-500",
|
|
377
|
+
speech_transcriber: "from-violet-500 to-purple-600"
|
|
377
378
|
};
|
|
378
379
|
var LOGIC_NODE_BADGE_COLORS = {
|
|
379
380
|
start: "bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-300",
|
|
@@ -398,7 +399,9 @@ var LOGIC_NODE_BADGE_COLORS = {
|
|
|
398
399
|
datasource: "bg-cyan-100 text-cyan-700 dark:bg-cyan-500/20 dark:text-cyan-300",
|
|
399
400
|
model_provider: "bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300",
|
|
400
401
|
dashboard_output: "bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-500/20 dark:text-fuchsia-300",
|
|
401
|
-
group: "bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300"
|
|
402
|
+
group: "bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300",
|
|
403
|
+
audio_input: "bg-teal-100 text-teal-700 dark:bg-teal-500/20 dark:text-teal-300",
|
|
404
|
+
speech_transcriber: "bg-violet-100 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300"
|
|
402
405
|
};
|
|
403
406
|
var LOGIC_NODE_BADGE_SOFT_COLORS = {
|
|
404
407
|
start: "bg-green-50 text-green-600 dark:bg-green-500/20 dark:text-green-400",
|
|
@@ -423,7 +426,9 @@ var LOGIC_NODE_BADGE_SOFT_COLORS = {
|
|
|
423
426
|
datasource: "bg-cyan-50 text-cyan-600 dark:bg-cyan-500/20 dark:text-cyan-400",
|
|
424
427
|
model_provider: "bg-slate-50 text-slate-600 dark:bg-slate-500/20 dark:text-slate-400",
|
|
425
428
|
dashboard_output: "bg-fuchsia-50 text-fuchsia-600 dark:bg-fuchsia-500/20 dark:text-fuchsia-400",
|
|
426
|
-
group: "bg-slate-50 text-slate-600 dark:bg-slate-500/20 dark:text-slate-400"
|
|
429
|
+
group: "bg-slate-50 text-slate-600 dark:bg-slate-500/20 dark:text-slate-400",
|
|
430
|
+
audio_input: "bg-teal-50 text-teal-600 dark:bg-teal-500/20 dark:text-teal-400",
|
|
431
|
+
speech_transcriber: "bg-violet-50 text-violet-600 dark:bg-violet-500/20 dark:text-violet-400"
|
|
427
432
|
};
|
|
428
433
|
var LOGIC_ICON_MAP = {
|
|
429
434
|
start: outline.PlayIcon,
|
|
@@ -448,7 +453,9 @@ var LOGIC_ICON_MAP = {
|
|
|
448
453
|
datasource: outline.ServerStackIcon,
|
|
449
454
|
model_provider: outline.KeyIcon,
|
|
450
455
|
dashboard_output: outline.ChartBarIcon,
|
|
451
|
-
group: outline.RectangleGroupIcon
|
|
456
|
+
group: outline.RectangleGroupIcon,
|
|
457
|
+
audio_input: outline.MicrophoneIcon,
|
|
458
|
+
speech_transcriber: outline.SpeakerWaveIcon
|
|
452
459
|
};
|
|
453
460
|
var EXPERIMENTAL_NODE_TYPES = /* @__PURE__ */ new Set([
|
|
454
461
|
"document_extractor",
|
|
@@ -484,7 +491,9 @@ var NODE_BORDER_COLORS = {
|
|
|
484
491
|
list_operator: "border-lime-300/50 dark:border-lime-600/50",
|
|
485
492
|
note: "border-gray-200/50 dark:border-gray-700/50",
|
|
486
493
|
datasource: "border-cyan-300/50 dark:border-cyan-600/50",
|
|
487
|
-
model_provider: "border-slate-300/50 dark:border-slate-600/50"
|
|
494
|
+
model_provider: "border-slate-300/50 dark:border-slate-600/50",
|
|
495
|
+
audio_input: "border-teal-300/50 dark:border-teal-600/50",
|
|
496
|
+
speech_transcriber: "border-violet-300/50 dark:border-violet-600/50"
|
|
488
497
|
};
|
|
489
498
|
function getNodeStateClass(selected, nodeType, customBorder) {
|
|
490
499
|
if (selected) return NODE_SELECTED_CLASS;
|
|
@@ -574,7 +583,9 @@ var INSERTABLE_NODES = [
|
|
|
574
583
|
{ nodeType: "knowledge_base", nameKey: "knowledgeBaseNode", subcategory: "AI" },
|
|
575
584
|
{ nodeType: "answer", nameKey: "answerNode", subcategory: "AI" },
|
|
576
585
|
{ nodeType: "question_classifier", nameKey: "questionClassifierNode", subcategory: "AI" },
|
|
577
|
-
{ nodeType: "parameter_extractor", nameKey: "parameterExtractorNode", subcategory: "AI" }
|
|
586
|
+
{ nodeType: "parameter_extractor", nameKey: "parameterExtractorNode", subcategory: "AI" },
|
|
587
|
+
{ nodeType: "audio_input", nameKey: "audioInputNode", subcategory: "AI" },
|
|
588
|
+
{ nodeType: "speech_transcriber", nameKey: "speechTranscriberNode", subcategory: "AI" }
|
|
578
589
|
];
|
|
579
590
|
function EdgeInsertPopupComponent({ position, onSelect, onClose }) {
|
|
580
591
|
const tWorkflow = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
@@ -1692,7 +1703,7 @@ function DatasourceNodeConfigForm({
|
|
|
1692
1703
|
}
|
|
1693
1704
|
const logo = getDatasourceLogo(selectedDatasourceId, selectedDatasource?.dialect);
|
|
1694
1705
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1695
|
-
|
|
1706
|
+
chunkFSBR4RCK_js.GlassModal,
|
|
1696
1707
|
{
|
|
1697
1708
|
open,
|
|
1698
1709
|
onClose: onCancel,
|
|
@@ -1707,8 +1718,8 @@ function DatasourceNodeConfigForm({
|
|
|
1707
1718
|
onSectionChange: setActiveSectionId
|
|
1708
1719
|
},
|
|
1709
1720
|
footer: readOnly ? void 0 : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 px-6 py-3", children: [
|
|
1710
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1711
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1721
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { outline: true, onClick: onCancel, children: t("cancel") }),
|
|
1722
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { color: "cyan", onClick: handleSave, disabled: !canSave, children: t("save") })
|
|
1712
1723
|
] }),
|
|
1713
1724
|
children: renderSection()
|
|
1714
1725
|
}
|
|
@@ -2046,7 +2057,7 @@ function NodeRunningIndicatorComponent({ nodeId }) {
|
|
|
2046
2057
|
borderColor: `rgba(${accentRgb}, 0.55)`,
|
|
2047
2058
|
boxShadow: `0 0 0 1px rgba(${accentRgb}, 0.16), 0 6px 16px rgba(${accentRgb}, 0.18)`
|
|
2048
2059
|
},
|
|
2049
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "h-3 w-3 animate-spin", style: { color: accentColor }, viewBox: "0 0 24 24", fill: "none", children: [
|
|
2060
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "h-3 w-3 animate-spin motion-reduce:animate-none", style: { color: accentColor }, viewBox: "0 0 24 24", fill: "none", children: [
|
|
2050
2061
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
2051
2062
|
/* @__PURE__ */ jsxRuntime.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" })
|
|
2052
2063
|
] })
|
|
@@ -2106,7 +2117,7 @@ var AgentFlowNode = react.memo(function AgentFlowNode2({ id, data, selected }) {
|
|
|
2106
2117
|
/* @__PURE__ */ jsxRuntime.jsx(NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
2107
2118
|
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: "rounded-full bg-indigo-100 px-2 py-0.5 text-[10px] font-semibold text-indigo-700 dark:bg-indigo-500/20 dark:text-indigo-300", children: "Agent" }),
|
|
2108
2119
|
(() => {
|
|
2109
|
-
const tier =
|
|
2120
|
+
const tier = chunk72SWXOD5_js.getAgentTier(Number(data.agent.elo ?? 0));
|
|
2110
2121
|
return /* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-bold ${tier.pillColor}`, children: tier.key });
|
|
2111
2122
|
})(),
|
|
2112
2123
|
/* @__PURE__ */ jsxRuntime.jsxs(NodeCardBadge, { className: `inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-medium ${frameworkMeta.badgeColor}`, children: [
|
|
@@ -2215,7 +2226,7 @@ var AgentToolFlowNode = react.memo(function AgentToolFlowNode2({ id, data, selec
|
|
|
2215
2226
|
event.stopPropagation();
|
|
2216
2227
|
},
|
|
2217
2228
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2218
|
-
|
|
2229
|
+
chunkFSBR4RCK_js.ToggleSwitch,
|
|
2219
2230
|
{
|
|
2220
2231
|
checked: Boolean(agentTool.enabled),
|
|
2221
2232
|
onChange: () => data.onToggle?.(agentTool),
|
|
@@ -2323,7 +2334,7 @@ var ToolFlowNode = react.memo(function ToolFlowNode2({ id, data, selected }) {
|
|
|
2323
2334
|
event.preventDefault();
|
|
2324
2335
|
},
|
|
2325
2336
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2326
|
-
|
|
2337
|
+
chunkFSBR4RCK_js.ToggleSwitch,
|
|
2327
2338
|
{
|
|
2328
2339
|
checked: Boolean(tool.enabled),
|
|
2329
2340
|
onChange: () => onToggle(tool),
|
|
@@ -2475,7 +2486,7 @@ var RuleFlowNode = react.memo(function RuleFlowNode2({ id, data, selected }) {
|
|
|
2475
2486
|
event.preventDefault();
|
|
2476
2487
|
},
|
|
2477
2488
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2478
|
-
|
|
2489
|
+
chunkFSBR4RCK_js.ToggleSwitch,
|
|
2479
2490
|
{
|
|
2480
2491
|
checked: Boolean(rule.enabled),
|
|
2481
2492
|
onChange: () => onToggle(rule),
|
|
@@ -3475,7 +3486,7 @@ var DatasourceFlowNode = react.memo(function DatasourceFlowNode2({ id, data, sel
|
|
|
3475
3486
|
event.preventDefault();
|
|
3476
3487
|
},
|
|
3477
3488
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3478
|
-
|
|
3489
|
+
chunkFSBR4RCK_js.ToggleSwitch,
|
|
3479
3490
|
{
|
|
3480
3491
|
checked: true,
|
|
3481
3492
|
onChange: () => {
|
|
@@ -3531,92 +3542,6 @@ var DatasourceFlowNode = react.memo(function DatasourceFlowNode2({ id, data, sel
|
|
|
3531
3542
|
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-cyan-400" })
|
|
3532
3543
|
] });
|
|
3533
3544
|
});
|
|
3534
|
-
var SI = (slug, color) => `https://cdn.simpleicons.org/${slug}/${color}`;
|
|
3535
|
-
var PROVIDER_LOGOS = {
|
|
3536
|
-
aws_bedrock: "https://www.svgrepo.com/show/448266/aws.svg",
|
|
3537
|
-
openai_api: "https://www.svgrepo.com/show/306500/openai.svg",
|
|
3538
|
-
google_vertex: SI("googlegemini", "8E75B2"),
|
|
3539
|
-
azure_openai: SI("microsoftazure", "0078D4"),
|
|
3540
|
-
anthropic_api: SI("anthropic", "D4A27F"),
|
|
3541
|
-
groq: SI("groq", "000000"),
|
|
3542
|
-
mistral: SI("mistralai", "FF7000"),
|
|
3543
|
-
huggingface: SI("huggingface", "FFD21E"),
|
|
3544
|
-
ollama: SI("ollama", "FFFFFF")
|
|
3545
|
-
};
|
|
3546
|
-
var PROVIDER_TYPE_LABELS = {
|
|
3547
|
-
aws_bedrock: "AWS Bedrock",
|
|
3548
|
-
openai_api: "OpenAI API",
|
|
3549
|
-
google_vertex: "Google Vertex AI",
|
|
3550
|
-
azure_openai: "Azure OpenAI",
|
|
3551
|
-
anthropic_api: "Anthropic API",
|
|
3552
|
-
groq: "Groq Cloud",
|
|
3553
|
-
mistral: "Mistral AI",
|
|
3554
|
-
huggingface: "Hugging Face",
|
|
3555
|
-
ollama: "Ollama (Local)",
|
|
3556
|
-
custom: "Custom"
|
|
3557
|
-
};
|
|
3558
|
-
var ModelProviderFlowNode = react.memo(function ModelProviderFlowNode2({ id, data, selected }) {
|
|
3559
|
-
const config = data.config;
|
|
3560
|
-
const isCompact = data.displayMode === "compact";
|
|
3561
|
-
if (!config) {
|
|
3562
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3563
|
-
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3564
|
-
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
3565
|
-
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
3566
|
-
/* @__PURE__ */ jsxRuntime.jsx(NodeCard, { variant: "error", nodeType: "model_provider", width: "w-[280px]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3567
|
-
NodeCardHeader,
|
|
3568
|
-
{
|
|
3569
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ExclamationTriangleIcon, { className: "h-6 w-6 text-white" }),
|
|
3570
|
-
title: data.label || "Model Provider",
|
|
3571
|
-
description: "Not configured",
|
|
3572
|
-
iconClassName: "flex h-11 w-11 items-center justify-center rounded-xl bg-gradient-to-br from-amber-400 to-orange-500 shadow-lg"
|
|
3573
|
-
}
|
|
3574
|
-
) }),
|
|
3575
|
-
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
3576
|
-
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
3577
|
-
] });
|
|
3578
|
-
}
|
|
3579
|
-
const providerLabel = PROVIDER_TYPE_LABELS[config.providerType] ?? config.providerType;
|
|
3580
|
-
const displayName = config.name || providerLabel;
|
|
3581
|
-
const regionLabel = config.region ? config.region : void 0;
|
|
3582
|
-
const isConfigured = !!(config.credentialRef || config.apiKeyRef);
|
|
3583
|
-
const logo = PROVIDER_LOGOS[config.providerType];
|
|
3584
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3585
|
-
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3586
|
-
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
3587
|
-
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Top, id: "top-in", colorClass: "!bg-gray-400 dark:!bg-gray-500" }),
|
|
3588
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3589
|
-
"button",
|
|
3590
|
-
{
|
|
3591
|
-
type: "button",
|
|
3592
|
-
onClick: () => data.onEdit?.(id),
|
|
3593
|
-
className: "w-full text-left",
|
|
3594
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(NodeCard, { compact: isCompact, selected, nodeType: "model_provider", width: "w-[280px]", children: [
|
|
3595
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3596
|
-
NodeCardHeader,
|
|
3597
|
-
{
|
|
3598
|
-
icon: logo ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo, alt: providerLabel, className: "h-6 w-6 object-contain", loading: "lazy" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-6 w-6 text-white" }),
|
|
3599
|
-
title: displayName,
|
|
3600
|
-
description: providerLabel,
|
|
3601
|
-
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"}`
|
|
3602
|
-
}
|
|
3603
|
-
),
|
|
3604
|
-
/* @__PURE__ */ jsxRuntime.jsx(NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
3605
|
-
/* @__PURE__ */ jsxRuntime.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 }),
|
|
3606
|
-
regionLabel && /* @__PURE__ */ jsxRuntime.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 }),
|
|
3607
|
-
/* @__PURE__ */ jsxRuntime.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" }),
|
|
3608
|
-
config.modelFilter && config.modelFilter.length > 0 && /* @__PURE__ */ jsxRuntime.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: [
|
|
3609
|
-
config.modelFilter.length,
|
|
3610
|
-
" models"
|
|
3611
|
-
] })
|
|
3612
|
-
] }) })
|
|
3613
|
-
] })
|
|
3614
|
-
}
|
|
3615
|
-
),
|
|
3616
|
-
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" }),
|
|
3617
|
-
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Bottom, id: "bottom-out", colorClass: "!bg-slate-500" })
|
|
3618
|
-
] });
|
|
3619
|
-
});
|
|
3620
3545
|
var GROUP_COLORS = {
|
|
3621
3546
|
indigo: {
|
|
3622
3547
|
border: "border-indigo-300/50 dark:border-indigo-600/50",
|
|
@@ -3795,6 +3720,130 @@ var GroupFlowNode = react.memo(function GroupFlowNode2({ id, data, selected }) {
|
|
|
3795
3720
|
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" })
|
|
3796
3721
|
] });
|
|
3797
3722
|
});
|
|
3723
|
+
var AudioInputFlowNode = react.memo(function AudioInputFlowNode2({ id, data, selected }) {
|
|
3724
|
+
const { config, label, onDelete, onEdit } = data;
|
|
3725
|
+
const isCompact = data.displayMode === "compact";
|
|
3726
|
+
const urlPreview = config.url ? config.url.slice(0, 32) : "";
|
|
3727
|
+
const formatLabel = config.format && config.format.length > 0 ? config.format : "auto";
|
|
3728
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3729
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3730
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-teal-500" }),
|
|
3731
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3732
|
+
NodeInteractiveCard,
|
|
3733
|
+
{
|
|
3734
|
+
nodeId: id,
|
|
3735
|
+
onEdit,
|
|
3736
|
+
compact: isCompact,
|
|
3737
|
+
selected,
|
|
3738
|
+
nodeType: "audio_input",
|
|
3739
|
+
children: [
|
|
3740
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3741
|
+
NodeCardHeader,
|
|
3742
|
+
{
|
|
3743
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(NodeIconBubble, { tone: "audio_input", children: /* @__PURE__ */ jsxRuntime.jsx(outline.MicrophoneIcon, { className: "h-5 w-5 text-white" }) }),
|
|
3744
|
+
title: label,
|
|
3745
|
+
description: "Validates an audio source URL for downstream voice nodes",
|
|
3746
|
+
compact: isCompact,
|
|
3747
|
+
iconClassName: ""
|
|
3748
|
+
}
|
|
3749
|
+
),
|
|
3750
|
+
/* @__PURE__ */ jsxRuntime.jsxs(NodeCardMeta, { compact: isCompact, children: [
|
|
3751
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3752
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "audio_input", children: "Audio Input" }),
|
|
3753
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "audio_input", soft: true, children: formatLabel }),
|
|
3754
|
+
urlPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: urlPreview })
|
|
3755
|
+
] }),
|
|
3756
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
3757
|
+
] })
|
|
3758
|
+
]
|
|
3759
|
+
}
|
|
3760
|
+
),
|
|
3761
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-teal-500" })
|
|
3762
|
+
] });
|
|
3763
|
+
});
|
|
3764
|
+
var SpeechTranscriberFlowNode = react.memo(function SpeechTranscriberFlowNode2({ id, data, selected }) {
|
|
3765
|
+
const { config, label, onDelete, onEdit } = data;
|
|
3766
|
+
const isCompact = data.displayMode === "compact";
|
|
3767
|
+
const model = config.model && config.model.length > 0 ? config.model : "whisper-1";
|
|
3768
|
+
const language = config.language && config.language.length > 0 ? config.language : "auto";
|
|
3769
|
+
const audioRefPreview = config.audioUrl ? config.audioUrl.slice(0, 32) : "";
|
|
3770
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3771
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3772
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-violet-500" }),
|
|
3773
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3774
|
+
NodeInteractiveCard,
|
|
3775
|
+
{
|
|
3776
|
+
nodeId: id,
|
|
3777
|
+
onEdit,
|
|
3778
|
+
compact: isCompact,
|
|
3779
|
+
selected,
|
|
3780
|
+
nodeType: "speech_transcriber",
|
|
3781
|
+
children: [
|
|
3782
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3783
|
+
NodeCardHeader,
|
|
3784
|
+
{
|
|
3785
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(NodeIconBubble, { tone: "speech_transcriber", children: /* @__PURE__ */ jsxRuntime.jsx(outline.SpeakerWaveIcon, { className: "h-5 w-5 text-white" }) }),
|
|
3786
|
+
title: label,
|
|
3787
|
+
description: "Transcribes audio via OpenAI Whisper-compatible endpoints",
|
|
3788
|
+
compact: isCompact,
|
|
3789
|
+
iconClassName: ""
|
|
3790
|
+
}
|
|
3791
|
+
),
|
|
3792
|
+
/* @__PURE__ */ jsxRuntime.jsxs(NodeCardMeta, { compact: isCompact, children: [
|
|
3793
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3794
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "speech_transcriber", children: "Whisper" }),
|
|
3795
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "speech_transcriber", soft: true, children: model }),
|
|
3796
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "speech_transcriber", soft: true, children: language }),
|
|
3797
|
+
audioRefPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: audioRefPreview })
|
|
3798
|
+
] }),
|
|
3799
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
3800
|
+
] })
|
|
3801
|
+
]
|
|
3802
|
+
}
|
|
3803
|
+
),
|
|
3804
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-violet-500" })
|
|
3805
|
+
] });
|
|
3806
|
+
});
|
|
3807
|
+
var DashboardOutputFlowNode = react.memo(function DashboardOutputFlowNode2({ id, data, selected }) {
|
|
3808
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
3809
|
+
const { config, label, onDelete, onEdit } = data;
|
|
3810
|
+
const isCompact = data.displayMode === "compact";
|
|
3811
|
+
const source = config?.dashboardFrom ? `\u2190 ${config.dashboardFrom}` : config?.dashboard ? "inline" : "unset";
|
|
3812
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3813
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3814
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-fuchsia-500" }),
|
|
3815
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3816
|
+
NodeInteractiveCard,
|
|
3817
|
+
{
|
|
3818
|
+
nodeId: id,
|
|
3819
|
+
onEdit,
|
|
3820
|
+
compact: isCompact,
|
|
3821
|
+
selected,
|
|
3822
|
+
nodeType: "dashboard_output",
|
|
3823
|
+
width: "w-[260px]",
|
|
3824
|
+
children: [
|
|
3825
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3826
|
+
NodeCardHeader,
|
|
3827
|
+
{
|
|
3828
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(NodeIconBubble, { tone: "dashboard_output", children: /* @__PURE__ */ jsxRuntime.jsx(outline.ChartBarIcon, { className: "h-5 w-5 text-white" }) }),
|
|
3829
|
+
title: label,
|
|
3830
|
+
description: t("dashboardOutputNodeDescription"),
|
|
3831
|
+
compact: isCompact,
|
|
3832
|
+
iconClassName: ""
|
|
3833
|
+
}
|
|
3834
|
+
),
|
|
3835
|
+
/* @__PURE__ */ jsxRuntime.jsxs(NodeCardMeta, { compact: isCompact, children: [
|
|
3836
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3837
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "dashboard_output", children: t("dashboardOutputNode") }),
|
|
3838
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "dashboard_output", soft: true, children: source })
|
|
3839
|
+
] }),
|
|
3840
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
3841
|
+
] })
|
|
3842
|
+
]
|
|
3843
|
+
}
|
|
3844
|
+
)
|
|
3845
|
+
] });
|
|
3846
|
+
});
|
|
3798
3847
|
function ConfigFormActions({
|
|
3799
3848
|
cancelLabel,
|
|
3800
3849
|
saveLabel,
|
|
@@ -3803,8 +3852,8 @@ function ConfigFormActions({
|
|
|
3803
3852
|
saveDisabled = false
|
|
3804
3853
|
}) {
|
|
3805
3854
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", children: [
|
|
3806
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3807
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3855
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
|
|
3856
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
|
|
3808
3857
|
] });
|
|
3809
3858
|
}
|
|
3810
3859
|
var COLOR_CLASSES = {
|
|
@@ -4051,7 +4100,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4051
4100
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-center justify-between", children: [
|
|
4052
4101
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("conditionsLabel") }),
|
|
4053
4102
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4054
|
-
|
|
4103
|
+
chunkFSBR4RCK_js.Button,
|
|
4055
4104
|
{
|
|
4056
4105
|
type: "button",
|
|
4057
4106
|
onClick: handleAddCondition,
|
|
@@ -4062,7 +4111,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4062
4111
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: conditions.map((condition, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50", children: [
|
|
4063
4112
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid flex-1 grid-cols-3 gap-2", children: [
|
|
4064
4113
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4065
|
-
|
|
4114
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4066
4115
|
{
|
|
4067
4116
|
type: "text",
|
|
4068
4117
|
label: t("variableLabel"),
|
|
@@ -4073,7 +4122,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4073
4122
|
}
|
|
4074
4123
|
) }),
|
|
4075
4124
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4076
|
-
|
|
4125
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
4077
4126
|
{
|
|
4078
4127
|
label: t("operatorLabel"),
|
|
4079
4128
|
value: condition.operator,
|
|
@@ -4083,7 +4132,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4083
4132
|
}
|
|
4084
4133
|
) }),
|
|
4085
4134
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4086
|
-
|
|
4135
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4087
4136
|
{
|
|
4088
4137
|
type: "text",
|
|
4089
4138
|
label: t("valueLabel"),
|
|
@@ -4095,7 +4144,7 @@ function IfElseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4095
4144
|
) })
|
|
4096
4145
|
] }),
|
|
4097
4146
|
conditions.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4098
|
-
|
|
4147
|
+
chunkFSBR4RCK_js.IconButton,
|
|
4099
4148
|
{
|
|
4100
4149
|
onClick: () => handleRemoveCondition(index),
|
|
4101
4150
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
|
|
@@ -4467,7 +4516,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4467
4516
|
};
|
|
4468
4517
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4469
4518
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4470
|
-
|
|
4519
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
4471
4520
|
{
|
|
4472
4521
|
label: t("methodLabel"),
|
|
4473
4522
|
value: method,
|
|
@@ -4476,7 +4525,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4476
4525
|
}
|
|
4477
4526
|
),
|
|
4478
4527
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4479
|
-
|
|
4528
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4480
4529
|
{
|
|
4481
4530
|
type: "text",
|
|
4482
4531
|
label: t("urlLabel"),
|
|
@@ -4489,7 +4538,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4489
4538
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
4490
4539
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: t("headersLabel") }),
|
|
4491
4540
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4492
|
-
|
|
4541
|
+
chunkFSBR4RCK_js.Button,
|
|
4493
4542
|
{
|
|
4494
4543
|
type: "button",
|
|
4495
4544
|
onClick: handleAddHeader,
|
|
@@ -4499,7 +4548,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4499
4548
|
] }),
|
|
4500
4549
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: headerEntries.map((entry, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4501
4550
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4502
|
-
|
|
4551
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4503
4552
|
{
|
|
4504
4553
|
type: "text",
|
|
4505
4554
|
value: entry.key,
|
|
@@ -4509,7 +4558,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4509
4558
|
}
|
|
4510
4559
|
),
|
|
4511
4560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4512
|
-
|
|
4561
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4513
4562
|
{
|
|
4514
4563
|
type: "text",
|
|
4515
4564
|
value: entry.value,
|
|
@@ -4519,7 +4568,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4519
4568
|
}
|
|
4520
4569
|
),
|
|
4521
4570
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4522
|
-
|
|
4571
|
+
chunkFSBR4RCK_js.IconButton,
|
|
4523
4572
|
{
|
|
4524
4573
|
onClick: () => handleRemoveHeader(index),
|
|
4525
4574
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.TrashIcon, { className: "h-4 w-4" }),
|
|
@@ -4531,7 +4580,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4531
4580
|
] }, index)) })
|
|
4532
4581
|
] }),
|
|
4533
4582
|
method !== "GET" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4534
|
-
|
|
4583
|
+
chunkFSBR4RCK_js.FormTextarea,
|
|
4535
4584
|
{
|
|
4536
4585
|
label: t("bodyLabel"),
|
|
4537
4586
|
value: body,
|
|
@@ -4542,7 +4591,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4542
4591
|
}
|
|
4543
4592
|
),
|
|
4544
4593
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4545
|
-
|
|
4594
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4546
4595
|
{
|
|
4547
4596
|
type: "number",
|
|
4548
4597
|
label: t("timeoutLabel"),
|
|
@@ -4554,7 +4603,7 @@ function HttpRequestNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4554
4603
|
}
|
|
4555
4604
|
),
|
|
4556
4605
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4557
|
-
|
|
4606
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
4558
4607
|
{
|
|
4559
4608
|
label: t("parseResponseLabel"),
|
|
4560
4609
|
value: parseResponse,
|
|
@@ -4599,7 +4648,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4599
4648
|
};
|
|
4600
4649
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4601
4650
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4602
|
-
|
|
4651
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4603
4652
|
{
|
|
4604
4653
|
type: "text",
|
|
4605
4654
|
label: t("bucketLabel"),
|
|
@@ -4609,7 +4658,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4609
4658
|
}
|
|
4610
4659
|
),
|
|
4611
4660
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4612
|
-
|
|
4661
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4613
4662
|
{
|
|
4614
4663
|
type: "text",
|
|
4615
4664
|
label: t("keyLabel"),
|
|
@@ -4620,7 +4669,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4620
4669
|
),
|
|
4621
4670
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-cyan-200/40 bg-cyan-50/40 px-3 py-2 text-[11px] text-cyan-900 dark:border-cyan-500/30 dark:bg-cyan-500/10 dark:text-cyan-100", children: t("sourceOrBodyHint") }),
|
|
4622
4671
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4623
|
-
|
|
4672
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4624
4673
|
{
|
|
4625
4674
|
type: "text",
|
|
4626
4675
|
label: t("sourceUrlLabel"),
|
|
@@ -4630,7 +4679,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4630
4679
|
}
|
|
4631
4680
|
),
|
|
4632
4681
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4633
|
-
|
|
4682
|
+
chunkFSBR4RCK_js.FormTextarea,
|
|
4634
4683
|
{
|
|
4635
4684
|
label: t("bodyLabel"),
|
|
4636
4685
|
value: body,
|
|
@@ -4641,7 +4690,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4641
4690
|
}
|
|
4642
4691
|
),
|
|
4643
4692
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4644
|
-
|
|
4693
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4645
4694
|
{
|
|
4646
4695
|
type: "text",
|
|
4647
4696
|
label: t("contentTypeLabel"),
|
|
@@ -4651,7 +4700,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4651
4700
|
}
|
|
4652
4701
|
),
|
|
4653
4702
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4654
|
-
|
|
4703
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4655
4704
|
{
|
|
4656
4705
|
type: "number",
|
|
4657
4706
|
label: t("timeoutLabel"),
|
|
@@ -4662,7 +4711,7 @@ function S3WriteNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4662
4711
|
}
|
|
4663
4712
|
),
|
|
4664
4713
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4665
|
-
|
|
4714
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4666
4715
|
{
|
|
4667
4716
|
type: "text",
|
|
4668
4717
|
label: t("connectionIdLabel"),
|
|
@@ -4691,7 +4740,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4691
4740
|
};
|
|
4692
4741
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4693
4742
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4694
|
-
|
|
4743
|
+
chunkFSBR4RCK_js.FormTextarea,
|
|
4695
4744
|
{
|
|
4696
4745
|
label: t("templateLabel"),
|
|
4697
4746
|
value: template,
|
|
@@ -4702,7 +4751,7 @@ function TemplateTransformNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4702
4751
|
}
|
|
4703
4752
|
),
|
|
4704
4753
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4705
|
-
|
|
4754
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4706
4755
|
{
|
|
4707
4756
|
type: "text",
|
|
4708
4757
|
label: t("outputVariableLabel"),
|
|
@@ -4731,7 +4780,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4731
4780
|
};
|
|
4732
4781
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4733
4782
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4734
|
-
|
|
4783
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4735
4784
|
{
|
|
4736
4785
|
type: "text",
|
|
4737
4786
|
label: t("iteratorVariableLabel"),
|
|
@@ -4741,7 +4790,7 @@ function IterationNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4741
4790
|
}
|
|
4742
4791
|
),
|
|
4743
4792
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4744
|
-
|
|
4793
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4745
4794
|
{
|
|
4746
4795
|
type: "number",
|
|
4747
4796
|
label: t("maxIterationsLabel"),
|
|
@@ -4772,7 +4821,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4772
4821
|
};
|
|
4773
4822
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4774
4823
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4775
|
-
|
|
4824
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4776
4825
|
{
|
|
4777
4826
|
type: "text",
|
|
4778
4827
|
label: t("sourceIdLabel"),
|
|
@@ -4782,7 +4831,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4782
4831
|
}
|
|
4783
4832
|
),
|
|
4784
4833
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4785
|
-
|
|
4834
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4786
4835
|
{
|
|
4787
4836
|
type: "number",
|
|
4788
4837
|
label: t("topKLabel"),
|
|
@@ -4793,7 +4842,7 @@ function KnowledgeBaseNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4793
4842
|
}
|
|
4794
4843
|
),
|
|
4795
4844
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4796
|
-
|
|
4845
|
+
chunkFSBR4RCK_js.FormInput,
|
|
4797
4846
|
{
|
|
4798
4847
|
type: "number",
|
|
4799
4848
|
label: t("similarityThresholdLabel"),
|
|
@@ -4824,7 +4873,7 @@ function AnswerNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
4824
4873
|
};
|
|
4825
4874
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4826
4875
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4827
|
-
|
|
4876
|
+
chunkFSBR4RCK_js.FormTextarea,
|
|
4828
4877
|
{
|
|
4829
4878
|
label: t("outputTemplateLabel"),
|
|
4830
4879
|
hint: t("outputTemplateHelp"),
|
|
@@ -5258,7 +5307,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5258
5307
|
}
|
|
5259
5308
|
),
|
|
5260
5309
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5261
|
-
|
|
5310
|
+
chunkFSBR4RCK_js.FormInput,
|
|
5262
5311
|
{
|
|
5263
5312
|
type: "text",
|
|
5264
5313
|
label: t("outputVariableLabel"),
|
|
@@ -5268,7 +5317,7 @@ function VariableAggregatorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5268
5317
|
}
|
|
5269
5318
|
),
|
|
5270
5319
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5271
|
-
|
|
5320
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
5272
5321
|
{
|
|
5273
5322
|
label: t("aggregationModeLabel"),
|
|
5274
5323
|
value: aggregationMode,
|
|
@@ -5301,7 +5350,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5301
5350
|
};
|
|
5302
5351
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
5303
5352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5304
|
-
|
|
5353
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
5305
5354
|
{
|
|
5306
5355
|
label: t("extractionModeLabel"),
|
|
5307
5356
|
value: extractionMode,
|
|
@@ -5310,7 +5359,7 @@ function DocumentExtractorNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5310
5359
|
}
|
|
5311
5360
|
),
|
|
5312
5361
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5313
|
-
|
|
5362
|
+
chunkFSBR4RCK_js.FormInput,
|
|
5314
5363
|
{
|
|
5315
5364
|
type: "text",
|
|
5316
5365
|
label: t("outputVariableLabel"),
|
|
@@ -5487,7 +5536,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5487
5536
|
};
|
|
5488
5537
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
5489
5538
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5490
|
-
|
|
5539
|
+
chunkFSBR4RCK_js.FormInput,
|
|
5491
5540
|
{
|
|
5492
5541
|
type: "text",
|
|
5493
5542
|
label: t("iteratorVariableLabel"),
|
|
@@ -5497,7 +5546,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5497
5546
|
}
|
|
5498
5547
|
),
|
|
5499
5548
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5500
|
-
|
|
5549
|
+
chunkFSBR4RCK_js.FormInput,
|
|
5501
5550
|
{
|
|
5502
5551
|
type: "text",
|
|
5503
5552
|
label: t("itemVariableLabel"),
|
|
@@ -5507,7 +5556,7 @@ function IterationStartNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5507
5556
|
}
|
|
5508
5557
|
),
|
|
5509
5558
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5510
|
-
|
|
5559
|
+
chunkFSBR4RCK_js.FormInput,
|
|
5511
5560
|
{
|
|
5512
5561
|
type: "text",
|
|
5513
5562
|
label: t("indexVariableLabel"),
|
|
@@ -5779,7 +5828,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5779
5828
|
};
|
|
5780
5829
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
5781
5830
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5782
|
-
|
|
5831
|
+
chunkFSBR4RCK_js.FormInput,
|
|
5783
5832
|
{
|
|
5784
5833
|
type: "text",
|
|
5785
5834
|
label: translations("labelField"),
|
|
@@ -5789,7 +5838,7 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5789
5838
|
}
|
|
5790
5839
|
),
|
|
5791
5840
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5792
|
-
|
|
5841
|
+
chunkFSBR4RCK_js.FormTextarea,
|
|
5793
5842
|
{
|
|
5794
5843
|
label: translations("descriptionField"),
|
|
5795
5844
|
value: description,
|
|
@@ -5823,215 +5872,6 @@ function GroupNodeConfigForm({ config, onSave, onCancel }) {
|
|
|
5823
5872
|
)
|
|
5824
5873
|
] });
|
|
5825
5874
|
}
|
|
5826
|
-
var catalogCache = null;
|
|
5827
|
-
var catalogPromise = null;
|
|
5828
|
-
async function loadCatalog() {
|
|
5829
|
-
if (catalogCache) return catalogCache;
|
|
5830
|
-
if (!catalogPromise) {
|
|
5831
|
-
catalogPromise = chunkF54Q2YJY_js.listModelProviderCatalog().then((rows) => {
|
|
5832
|
-
catalogCache = rows;
|
|
5833
|
-
return rows;
|
|
5834
|
-
});
|
|
5835
|
-
}
|
|
5836
|
-
return catalogPromise;
|
|
5837
|
-
}
|
|
5838
|
-
var ENDPOINT_SLUGS = /* @__PURE__ */ new Set(["custom", "azure_openai", "ollama"]);
|
|
5839
|
-
function ModelProviderNodeConfigForm({ config, onSave, onCancel }) {
|
|
5840
|
-
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.modelProviderNodeConfig");
|
|
5841
|
-
const [catalog, setCatalog] = react.useState(catalogCache);
|
|
5842
|
-
const [catalogError, setCatalogError] = react.useState(null);
|
|
5843
|
-
const [providerType, setProviderType] = react.useState(config.providerType);
|
|
5844
|
-
const [name, setName] = react.useState(config.name ?? "");
|
|
5845
|
-
const [region, setRegion] = react.useState(config.region ?? "");
|
|
5846
|
-
const [endpoint, setEndpoint] = react.useState(config.endpoint ?? "");
|
|
5847
|
-
const [credentialRef, setCredentialRef] = react.useState(config.credentialRef ?? "");
|
|
5848
|
-
const [apiKeyRef, setApiKeyRef] = react.useState(config.apiKeyRef ?? "");
|
|
5849
|
-
const [selectedFamilies, setSelectedFamilies] = react.useState(/* @__PURE__ */ new Set());
|
|
5850
|
-
react.useEffect(() => {
|
|
5851
|
-
let cancelled = false;
|
|
5852
|
-
if (catalog) return;
|
|
5853
|
-
void loadCatalog().then((rows) => {
|
|
5854
|
-
if (cancelled) return;
|
|
5855
|
-
setCatalog(rows);
|
|
5856
|
-
}).catch((error) => {
|
|
5857
|
-
if (cancelled) return;
|
|
5858
|
-
const message = error instanceof Error ? error.message : "Failed to load provider catalog";
|
|
5859
|
-
setCatalogError(message);
|
|
5860
|
-
});
|
|
5861
|
-
return () => {
|
|
5862
|
-
cancelled = true;
|
|
5863
|
-
};
|
|
5864
|
-
}, [catalog]);
|
|
5865
|
-
const currentProvider = react.useMemo(() => {
|
|
5866
|
-
if (!catalog) return void 0;
|
|
5867
|
-
return catalog.find((entry) => entry.slug === providerType);
|
|
5868
|
-
}, [catalog, providerType]);
|
|
5869
|
-
const families = currentProvider?.families ?? [];
|
|
5870
|
-
const regions = Array.isArray(currentProvider?.regions) ? currentProvider.regions : [];
|
|
5871
|
-
const showRegion = regions.length > 0;
|
|
5872
|
-
const showEndpoint = ENDPOINT_SLUGS.has(providerType);
|
|
5873
|
-
const authType = currentProvider?.authType ?? null;
|
|
5874
|
-
const showApiKey = authType === "api_key";
|
|
5875
|
-
const showCredentialRef = authType === "iam_role";
|
|
5876
|
-
react.useEffect(() => {
|
|
5877
|
-
if (!currentProvider) return;
|
|
5878
|
-
setSelectedFamilies((previous) => {
|
|
5879
|
-
if (previous.size > 0) return previous;
|
|
5880
|
-
const filter = new Set(config.modelFilter ?? []);
|
|
5881
|
-
const next = /* @__PURE__ */ new Set();
|
|
5882
|
-
for (const family of currentProvider.families) {
|
|
5883
|
-
if (filter.size === 0 || family.modelIds.some((id) => filter.has(id))) {
|
|
5884
|
-
next.add(family.id);
|
|
5885
|
-
}
|
|
5886
|
-
}
|
|
5887
|
-
return next;
|
|
5888
|
-
});
|
|
5889
|
-
}, [currentProvider, config.modelFilter]);
|
|
5890
|
-
const handleToggleFamily = (familyId) => {
|
|
5891
|
-
setSelectedFamilies((previous) => {
|
|
5892
|
-
const next = new Set(previous);
|
|
5893
|
-
if (next.has(familyId)) next.delete(familyId);
|
|
5894
|
-
else next.add(familyId);
|
|
5895
|
-
return next;
|
|
5896
|
-
});
|
|
5897
|
-
};
|
|
5898
|
-
const handleProviderChange = (value) => {
|
|
5899
|
-
const newType = value;
|
|
5900
|
-
setProviderType(newType);
|
|
5901
|
-
setRegion("");
|
|
5902
|
-
const next = catalog?.find((entry) => entry.slug === newType);
|
|
5903
|
-
setSelectedFamilies(new Set((next?.families ?? []).map((family) => family.id)));
|
|
5904
|
-
};
|
|
5905
|
-
const handleSave = () => {
|
|
5906
|
-
const modelFilter = families.filter((family) => selectedFamilies.has(family.id)).flatMap((family) => family.modelIds);
|
|
5907
|
-
onSave({
|
|
5908
|
-
...config,
|
|
5909
|
-
providerType,
|
|
5910
|
-
name: name.trim() || void 0,
|
|
5911
|
-
region: region || void 0,
|
|
5912
|
-
endpoint: endpoint.trim() || void 0,
|
|
5913
|
-
credentialRef: credentialRef.trim() || void 0,
|
|
5914
|
-
apiKeyRef: apiKeyRef.trim() || void 0,
|
|
5915
|
-
modelFilter
|
|
5916
|
-
});
|
|
5917
|
-
};
|
|
5918
|
-
if (catalogError) {
|
|
5919
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
5920
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-900 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-200", children: catalogError }),
|
|
5921
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5922
|
-
ConfigFormActions,
|
|
5923
|
-
{
|
|
5924
|
-
cancelLabel: t("cancel"),
|
|
5925
|
-
saveLabel: t("save"),
|
|
5926
|
-
onCancel,
|
|
5927
|
-
onSave: handleSave,
|
|
5928
|
-
saveDisabled: true
|
|
5929
|
-
}
|
|
5930
|
-
)
|
|
5931
|
-
] });
|
|
5932
|
-
}
|
|
5933
|
-
if (!catalog) {
|
|
5934
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4 h-32" });
|
|
5935
|
-
}
|
|
5936
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
5937
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5938
|
-
chunkI2NZGVBG_js.FormInput,
|
|
5939
|
-
{
|
|
5940
|
-
type: "text",
|
|
5941
|
-
label: t("nameLabel"),
|
|
5942
|
-
value: name,
|
|
5943
|
-
onValueChange: setName,
|
|
5944
|
-
placeholder: t("namePlaceholder")
|
|
5945
|
-
}
|
|
5946
|
-
),
|
|
5947
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5948
|
-
chunkI2NZGVBG_js.FormSelect,
|
|
5949
|
-
{
|
|
5950
|
-
label: t("providerTypeLabel"),
|
|
5951
|
-
value: providerType,
|
|
5952
|
-
onValueChange: handleProviderChange,
|
|
5953
|
-
options: catalog.filter((entry) => entry.enabled).map((entry) => ({ value: entry.slug, label: entry.name }))
|
|
5954
|
-
}
|
|
5955
|
-
),
|
|
5956
|
-
showRegion && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5957
|
-
chunkI2NZGVBG_js.FormSelect,
|
|
5958
|
-
{
|
|
5959
|
-
label: t("regionLabel"),
|
|
5960
|
-
value: region,
|
|
5961
|
-
onValueChange: setRegion,
|
|
5962
|
-
options: [
|
|
5963
|
-
{ value: "", label: t("selectRegion") },
|
|
5964
|
-
...regions.map((value) => ({ value, label: value }))
|
|
5965
|
-
]
|
|
5966
|
-
}
|
|
5967
|
-
),
|
|
5968
|
-
showEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5969
|
-
chunkI2NZGVBG_js.FormInput,
|
|
5970
|
-
{
|
|
5971
|
-
type: "text",
|
|
5972
|
-
label: t("endpointLabel"),
|
|
5973
|
-
value: endpoint,
|
|
5974
|
-
onValueChange: setEndpoint,
|
|
5975
|
-
placeholder: providerType === "ollama" ? "http://localhost:11434" : t("endpointPlaceholder")
|
|
5976
|
-
}
|
|
5977
|
-
),
|
|
5978
|
-
showApiKey && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5979
|
-
chunkI2NZGVBG_js.FormInput,
|
|
5980
|
-
{
|
|
5981
|
-
type: "password",
|
|
5982
|
-
label: t("apiKeyLabel"),
|
|
5983
|
-
value: apiKeyRef,
|
|
5984
|
-
onValueChange: setApiKeyRef,
|
|
5985
|
-
placeholder: t("apiKeyPlaceholder")
|
|
5986
|
-
}
|
|
5987
|
-
),
|
|
5988
|
-
showCredentialRef && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5989
|
-
chunkI2NZGVBG_js.FormInput,
|
|
5990
|
-
{
|
|
5991
|
-
type: "text",
|
|
5992
|
-
label: t("credentialRefLabel"),
|
|
5993
|
-
value: credentialRef,
|
|
5994
|
-
onValueChange: setCredentialRef,
|
|
5995
|
-
placeholder: providerType === "aws_bedrock" ? "arn:aws:iam::role/bedrock-role" : t("credentialRefPlaceholder")
|
|
5996
|
-
}
|
|
5997
|
-
),
|
|
5998
|
-
families.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
5999
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300", children: t("modelFamiliesLabel") }),
|
|
6000
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: families.map((family) => {
|
|
6001
|
-
const isSelected = selectedFamilies.has(family.id);
|
|
6002
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6003
|
-
"button",
|
|
6004
|
-
{
|
|
6005
|
-
type: "button",
|
|
6006
|
-
onClick: () => handleToggleFamily(family.id),
|
|
6007
|
-
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"}`,
|
|
6008
|
-
children: [
|
|
6009
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-4 w-4 shrink-0 items-center justify-center rounded ${isSelected ? "bg-indigo-500 text-white" : "border border-gray-300 dark:border-gray-600"}`, children: isSelected && /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "h-3 w-3", viewBox: "0 0 20 20", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", clipRule: "evenodd" }) }) }),
|
|
6010
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
6011
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-gray-900 dark:text-white", children: family.name }),
|
|
6012
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-2 text-[10px] text-gray-400 dark:text-gray-500", children: [
|
|
6013
|
-
family.modelIds.length,
|
|
6014
|
-
" models"
|
|
6015
|
-
] })
|
|
6016
|
-
] })
|
|
6017
|
-
]
|
|
6018
|
-
},
|
|
6019
|
-
family.id
|
|
6020
|
-
);
|
|
6021
|
-
}) })
|
|
6022
|
-
] }),
|
|
6023
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6024
|
-
ConfigFormActions,
|
|
6025
|
-
{
|
|
6026
|
-
cancelLabel: t("cancel"),
|
|
6027
|
-
saveLabel: t("save"),
|
|
6028
|
-
onCancel,
|
|
6029
|
-
onSave: handleSave,
|
|
6030
|
-
saveDisabled: !providerType
|
|
6031
|
-
}
|
|
6032
|
-
)
|
|
6033
|
-
] });
|
|
6034
|
-
}
|
|
6035
5875
|
function RuleNodeConfigForm({ config, onSave, onCancel, availableRules }) {
|
|
6036
5876
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.ruleNodeConfig");
|
|
6037
5877
|
const [ruleId, setRuleId] = react.useState(config.ruleId ?? "");
|
|
@@ -6056,7 +5896,7 @@ function RuleNodeConfigForm({ config, onSave, onCancel, availableRules }) {
|
|
|
6056
5896
|
]
|
|
6057
5897
|
}
|
|
6058
5898
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6059
|
-
|
|
5899
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6060
5900
|
{
|
|
6061
5901
|
type: "text",
|
|
6062
5902
|
value: ruleId,
|
|
@@ -6072,7 +5912,7 @@ function RuleNodeConfigForm({ config, onSave, onCancel, availableRules }) {
|
|
|
6072
5912
|
] }),
|
|
6073
5913
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
|
|
6074
5914
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6075
|
-
|
|
5915
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6076
5916
|
{
|
|
6077
5917
|
type: "number",
|
|
6078
5918
|
label: t("priorityLabel", { _: "Priority" }),
|
|
@@ -6144,7 +5984,7 @@ function AgentNodeConfigForm({
|
|
|
6144
5984
|
}));
|
|
6145
5985
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
6146
5986
|
agentOptions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6147
|
-
|
|
5987
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
6148
5988
|
{
|
|
6149
5989
|
label: t("agentLabel", { _: "Agent" }),
|
|
6150
5990
|
value: agentId,
|
|
@@ -6152,7 +5992,7 @@ function AgentNodeConfigForm({
|
|
|
6152
5992
|
options: [{ value: "", label: t("agentPickPrompt", { _: "Choose an agent\u2026" }) }, ...agentOptions]
|
|
6153
5993
|
}
|
|
6154
5994
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6155
|
-
|
|
5995
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6156
5996
|
{
|
|
6157
5997
|
type: "text",
|
|
6158
5998
|
label: t("agentIdLabel", { _: "Agent ID" }),
|
|
@@ -6162,7 +6002,7 @@ function AgentNodeConfigForm({
|
|
|
6162
6002
|
}
|
|
6163
6003
|
),
|
|
6164
6004
|
connOptions.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6165
|
-
|
|
6005
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
6166
6006
|
{
|
|
6167
6007
|
label: t("connectionLabel", { _: "Model provider connection" }),
|
|
6168
6008
|
value: connectionId,
|
|
@@ -6170,7 +6010,7 @@ function AgentNodeConfigForm({
|
|
|
6170
6010
|
options: [{ value: "", label: t("connectionPickPrompt", { _: "Inline model (no connection)" }) }, ...connOptions]
|
|
6171
6011
|
}
|
|
6172
6012
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6173
|
-
|
|
6013
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6174
6014
|
{
|
|
6175
6015
|
type: "text",
|
|
6176
6016
|
label: t("connectionIdLabel", { _: "Connection ID" }),
|
|
@@ -6180,7 +6020,7 @@ function AgentNodeConfigForm({
|
|
|
6180
6020
|
}
|
|
6181
6021
|
),
|
|
6182
6022
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6183
|
-
|
|
6023
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6184
6024
|
{
|
|
6185
6025
|
type: "text",
|
|
6186
6026
|
label: t("modelIdLabel", { _: "Model override (optional)" }),
|
|
@@ -6190,7 +6030,7 @@ function AgentNodeConfigForm({
|
|
|
6190
6030
|
}
|
|
6191
6031
|
),
|
|
6192
6032
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6193
|
-
|
|
6033
|
+
chunkFSBR4RCK_js.FormTextarea,
|
|
6194
6034
|
{
|
|
6195
6035
|
label: t("systemPromptLabel", { _: "System prompt" }),
|
|
6196
6036
|
value: systemPrompt,
|
|
@@ -6200,7 +6040,7 @@ function AgentNodeConfigForm({
|
|
|
6200
6040
|
}
|
|
6201
6041
|
),
|
|
6202
6042
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6203
|
-
|
|
6043
|
+
chunkFSBR4RCK_js.FormTextarea,
|
|
6204
6044
|
{
|
|
6205
6045
|
label: t("userPromptLabel", { _: "User prompt" }),
|
|
6206
6046
|
value: userPrompt,
|
|
@@ -6211,7 +6051,7 @@ function AgentNodeConfigForm({
|
|
|
6211
6051
|
),
|
|
6212
6052
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
|
|
6213
6053
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6214
|
-
|
|
6054
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6215
6055
|
{
|
|
6216
6056
|
type: "number",
|
|
6217
6057
|
label: t("maxTokensLabel", { _: "Max output tokens" }),
|
|
@@ -6223,7 +6063,7 @@ function AgentNodeConfigForm({
|
|
|
6223
6063
|
}
|
|
6224
6064
|
),
|
|
6225
6065
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6226
|
-
|
|
6066
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6227
6067
|
{
|
|
6228
6068
|
type: "number",
|
|
6229
6069
|
label: t("temperatureLabel", { _: "Temperature" }),
|
|
@@ -6246,6 +6086,247 @@ function AgentNodeConfigForm({
|
|
|
6246
6086
|
)
|
|
6247
6087
|
] });
|
|
6248
6088
|
}
|
|
6089
|
+
var AUDIO_FORMATS = ["auto", "mp3", "wav", "m4a", "webm", "ogg", "flac", "mp4", "mpga"];
|
|
6090
|
+
function AudioInputNodeConfigForm({ config, onSave, onCancel }) {
|
|
6091
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.audioInputNodeConfig");
|
|
6092
|
+
const [url, setUrl] = react.useState(config.url ?? "");
|
|
6093
|
+
const [format, setFormat] = react.useState(config.format && config.format.length > 0 ? config.format : "auto");
|
|
6094
|
+
const handleSave = () => {
|
|
6095
|
+
onSave({
|
|
6096
|
+
...config,
|
|
6097
|
+
url,
|
|
6098
|
+
format: format === "auto" ? void 0 : format
|
|
6099
|
+
});
|
|
6100
|
+
};
|
|
6101
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
6102
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6103
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6104
|
+
{
|
|
6105
|
+
type: "text",
|
|
6106
|
+
label: t("urlLabel"),
|
|
6107
|
+
value: url,
|
|
6108
|
+
onValueChange: setUrl,
|
|
6109
|
+
placeholder: t("urlPlaceholder")
|
|
6110
|
+
}
|
|
6111
|
+
),
|
|
6112
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6113
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
6114
|
+
{
|
|
6115
|
+
label: t("formatLabel"),
|
|
6116
|
+
value: format,
|
|
6117
|
+
onValueChange: setFormat,
|
|
6118
|
+
options: AUDIO_FORMATS.map((option) => ({ value: option, label: option }))
|
|
6119
|
+
}
|
|
6120
|
+
),
|
|
6121
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6122
|
+
ConfigFormActions,
|
|
6123
|
+
{
|
|
6124
|
+
cancelLabel: t("cancel"),
|
|
6125
|
+
saveLabel: t("save"),
|
|
6126
|
+
onCancel,
|
|
6127
|
+
onSave: handleSave
|
|
6128
|
+
}
|
|
6129
|
+
)
|
|
6130
|
+
] });
|
|
6131
|
+
}
|
|
6132
|
+
var RESPONSE_FORMATS = [
|
|
6133
|
+
"verbose_json",
|
|
6134
|
+
"json",
|
|
6135
|
+
"text"
|
|
6136
|
+
];
|
|
6137
|
+
function SpeechTranscriberNodeConfigForm({ config, onSave, onCancel }) {
|
|
6138
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.speechTranscriberNodeConfig");
|
|
6139
|
+
const [audioUrl, setAudioUrl] = react.useState(config.audioUrl ?? "");
|
|
6140
|
+
const [model, setModel] = react.useState(config.model ?? "whisper-1");
|
|
6141
|
+
const [language, setLanguage] = react.useState(config.language ?? "");
|
|
6142
|
+
const [prompt, setPrompt] = react.useState(config.prompt ?? "");
|
|
6143
|
+
const [responseFormat, setResponseFormat] = react.useState(
|
|
6144
|
+
config.responseFormat ?? "verbose_json"
|
|
6145
|
+
);
|
|
6146
|
+
const [endpoint, setEndpoint] = react.useState(config.endpoint ?? "");
|
|
6147
|
+
const [timeoutMs, setTimeoutMs] = react.useState(config.timeoutMs ?? 12e4);
|
|
6148
|
+
const handleSave = () => {
|
|
6149
|
+
onSave({
|
|
6150
|
+
...config,
|
|
6151
|
+
audioUrl,
|
|
6152
|
+
model: model.trim() || void 0,
|
|
6153
|
+
language: language.trim() || void 0,
|
|
6154
|
+
prompt: prompt.trim() || void 0,
|
|
6155
|
+
responseFormat,
|
|
6156
|
+
endpoint: endpoint.trim() || void 0,
|
|
6157
|
+
timeoutMs
|
|
6158
|
+
});
|
|
6159
|
+
};
|
|
6160
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
6161
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6162
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6163
|
+
{
|
|
6164
|
+
type: "text",
|
|
6165
|
+
label: t("audioUrlLabel"),
|
|
6166
|
+
value: audioUrl,
|
|
6167
|
+
onValueChange: setAudioUrl,
|
|
6168
|
+
placeholder: t("audioUrlPlaceholder")
|
|
6169
|
+
}
|
|
6170
|
+
),
|
|
6171
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6172
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6173
|
+
{
|
|
6174
|
+
type: "text",
|
|
6175
|
+
label: t("modelLabel"),
|
|
6176
|
+
value: model,
|
|
6177
|
+
onValueChange: setModel,
|
|
6178
|
+
placeholder: "whisper-1"
|
|
6179
|
+
}
|
|
6180
|
+
),
|
|
6181
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6182
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6183
|
+
{
|
|
6184
|
+
type: "text",
|
|
6185
|
+
label: t("languageLabel"),
|
|
6186
|
+
value: language,
|
|
6187
|
+
onValueChange: setLanguage,
|
|
6188
|
+
placeholder: t("languagePlaceholder")
|
|
6189
|
+
}
|
|
6190
|
+
),
|
|
6191
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6192
|
+
chunkFSBR4RCK_js.FormTextarea,
|
|
6193
|
+
{
|
|
6194
|
+
label: t("promptLabel"),
|
|
6195
|
+
value: prompt,
|
|
6196
|
+
onValueChange: setPrompt,
|
|
6197
|
+
placeholder: t("promptPlaceholder"),
|
|
6198
|
+
rows: 3
|
|
6199
|
+
}
|
|
6200
|
+
),
|
|
6201
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6202
|
+
chunkFSBR4RCK_js.FormSelect,
|
|
6203
|
+
{
|
|
6204
|
+
label: t("responseFormatLabel"),
|
|
6205
|
+
value: responseFormat,
|
|
6206
|
+
onValueChange: (value) => setResponseFormat(value),
|
|
6207
|
+
options: RESPONSE_FORMATS.map((value) => ({ value, label: value }))
|
|
6208
|
+
}
|
|
6209
|
+
),
|
|
6210
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6211
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6212
|
+
{
|
|
6213
|
+
type: "text",
|
|
6214
|
+
label: t("endpointLabel"),
|
|
6215
|
+
value: endpoint,
|
|
6216
|
+
onValueChange: setEndpoint,
|
|
6217
|
+
placeholder: t("endpointPlaceholder")
|
|
6218
|
+
}
|
|
6219
|
+
),
|
|
6220
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6221
|
+
chunkFSBR4RCK_js.FormInput,
|
|
6222
|
+
{
|
|
6223
|
+
type: "number",
|
|
6224
|
+
label: t("timeoutLabel"),
|
|
6225
|
+
value: String(timeoutMs),
|
|
6226
|
+
onValueChange: (value) => setTimeoutMs(Number(value)),
|
|
6227
|
+
min: 1e3,
|
|
6228
|
+
max: 6e5,
|
|
6229
|
+
step: 1e3
|
|
6230
|
+
}
|
|
6231
|
+
),
|
|
6232
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6233
|
+
ConfigFormActions,
|
|
6234
|
+
{
|
|
6235
|
+
cancelLabel: t("cancel"),
|
|
6236
|
+
saveLabel: t("save"),
|
|
6237
|
+
onCancel,
|
|
6238
|
+
onSave: handleSave
|
|
6239
|
+
}
|
|
6240
|
+
)
|
|
6241
|
+
] });
|
|
6242
|
+
}
|
|
6243
|
+
function DashboardOutputNodeConfigForm({ config, onSave, onCancel }) {
|
|
6244
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.dashboardOutputNodeConfig");
|
|
6245
|
+
const initialMode = config.dashboard ? "inline" : "reference";
|
|
6246
|
+
const [mode, setMode] = react.useState(initialMode);
|
|
6247
|
+
const [dashboardFrom, setDashboardFrom] = react.useState(config.dashboardFrom ?? "");
|
|
6248
|
+
const [inlineJson, setInlineJson] = react.useState(
|
|
6249
|
+
config.dashboard ? JSON.stringify(config.dashboard, null, 2) : ""
|
|
6250
|
+
);
|
|
6251
|
+
const [parseError, setParseError] = react.useState(null);
|
|
6252
|
+
const handleSave = () => {
|
|
6253
|
+
if (mode === "reference") {
|
|
6254
|
+
const trimmed = dashboardFrom.trim();
|
|
6255
|
+
onSave({ type: "dashboard_output", dashboardFrom: trimmed });
|
|
6256
|
+
return;
|
|
6257
|
+
}
|
|
6258
|
+
try {
|
|
6259
|
+
const parsed = inlineJson.trim() ? JSON.parse(inlineJson) : {};
|
|
6260
|
+
setParseError(null);
|
|
6261
|
+
onSave({ type: "dashboard_output", dashboard: parsed });
|
|
6262
|
+
} catch (error) {
|
|
6263
|
+
setParseError(error instanceof Error ? error.message : String(error));
|
|
6264
|
+
}
|
|
6265
|
+
};
|
|
6266
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
6267
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t("description") }),
|
|
6268
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
6269
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6270
|
+
"button",
|
|
6271
|
+
{
|
|
6272
|
+
type: "button",
|
|
6273
|
+
onClick: () => setMode("reference"),
|
|
6274
|
+
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"}`,
|
|
6275
|
+
children: t("modeReference")
|
|
6276
|
+
}
|
|
6277
|
+
),
|
|
6278
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6279
|
+
"button",
|
|
6280
|
+
{
|
|
6281
|
+
type: "button",
|
|
6282
|
+
onClick: () => setMode("inline"),
|
|
6283
|
+
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"}`,
|
|
6284
|
+
children: t("modeInline")
|
|
6285
|
+
}
|
|
6286
|
+
)
|
|
6287
|
+
] }),
|
|
6288
|
+
mode === "reference" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
6289
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: t("referenceLabel") }),
|
|
6290
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6291
|
+
"input",
|
|
6292
|
+
{
|
|
6293
|
+
type: "text",
|
|
6294
|
+
value: dashboardFrom,
|
|
6295
|
+
onChange: (event) => setDashboardFrom(event.target.value),
|
|
6296
|
+
placeholder: t("referencePlaceholder"),
|
|
6297
|
+
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"
|
|
6298
|
+
}
|
|
6299
|
+
),
|
|
6300
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[10px] text-gray-500 dark:text-gray-400", children: t("referenceHelp") })
|
|
6301
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
6302
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300", children: t("inlineLabel") }),
|
|
6303
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6304
|
+
"textarea",
|
|
6305
|
+
{
|
|
6306
|
+
value: inlineJson,
|
|
6307
|
+
onChange: (event) => setInlineJson(event.target.value),
|
|
6308
|
+
placeholder: '{\\n "kpis": [],\\n "charts": [],\\n "tables": []\\n}',
|
|
6309
|
+
rows: 12,
|
|
6310
|
+
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"
|
|
6311
|
+
}
|
|
6312
|
+
),
|
|
6313
|
+
parseError ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-1 text-[10px] font-medium text-red-600 dark:text-red-400", children: [
|
|
6314
|
+
t("parseError"),
|
|
6315
|
+
": ",
|
|
6316
|
+
parseError
|
|
6317
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[10px] text-gray-500 dark:text-gray-400", children: t("inlineHelp") })
|
|
6318
|
+
] }),
|
|
6319
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6320
|
+
ConfigFormActions,
|
|
6321
|
+
{
|
|
6322
|
+
cancelLabel: t("cancel"),
|
|
6323
|
+
saveLabel: t("save"),
|
|
6324
|
+
onCancel,
|
|
6325
|
+
onSave: handleSave
|
|
6326
|
+
}
|
|
6327
|
+
)
|
|
6328
|
+
] });
|
|
6329
|
+
}
|
|
6249
6330
|
var NODE_TITLE_KEYS = {
|
|
6250
6331
|
start: "startNodeConfig",
|
|
6251
6332
|
end: "endNodeConfig",
|
|
@@ -6267,9 +6348,11 @@ var NODE_TITLE_KEYS = {
|
|
|
6267
6348
|
entity: "entityNodeConfig",
|
|
6268
6349
|
datasource: "datasourceNodeConfig",
|
|
6269
6350
|
group: "groupNodeConfig",
|
|
6270
|
-
model_provider: "modelProviderNodeConfig",
|
|
6271
6351
|
rule: "ruleNodeConfig",
|
|
6272
|
-
agent: "agentNodeConfig"
|
|
6352
|
+
agent: "agentNodeConfig",
|
|
6353
|
+
audio_input: "audioInputNodeConfig",
|
|
6354
|
+
speech_transcriber: "speechTranscriberNodeConfig",
|
|
6355
|
+
dashboard_output: "dashboardOutputNodeConfig"
|
|
6273
6356
|
};
|
|
6274
6357
|
function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables, onLoadSchema }) {
|
|
6275
6358
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
@@ -6330,19 +6413,27 @@ function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables,
|
|
|
6330
6413
|
return /* @__PURE__ */ jsxRuntime.jsx(EntityNodeConfigForm, { config, entities, onSave: handleSave, onCancel: closeModal });
|
|
6331
6414
|
case "group":
|
|
6332
6415
|
return /* @__PURE__ */ jsxRuntime.jsx(GroupNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6333
|
-
|
|
6334
|
-
|
|
6416
|
+
// model_provider was removed from the canvas — providers are
|
|
6417
|
+
// now account-level credentials configured in Settings, not
|
|
6418
|
+
// draggable nodes. Any legacy graph that still has a
|
|
6419
|
+
// model_provider node falls through to default → no edit form.
|
|
6335
6420
|
case "rule":
|
|
6336
6421
|
return /* @__PURE__ */ jsxRuntime.jsx(RuleNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6337
6422
|
case "agent":
|
|
6338
6423
|
return /* @__PURE__ */ jsxRuntime.jsx(AgentNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6424
|
+
case "audio_input":
|
|
6425
|
+
return /* @__PURE__ */ jsxRuntime.jsx(AudioInputNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6426
|
+
case "speech_transcriber":
|
|
6427
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SpeechTranscriberNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6428
|
+
case "dashboard_output":
|
|
6429
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DashboardOutputNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6339
6430
|
default:
|
|
6340
6431
|
return null;
|
|
6341
6432
|
}
|
|
6342
6433
|
};
|
|
6343
6434
|
const isExperimental = isExperimentalNodeType(config.type);
|
|
6344
6435
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6345
|
-
|
|
6436
|
+
chunkFSBR4RCK_js.GlassModal,
|
|
6346
6437
|
{
|
|
6347
6438
|
open,
|
|
6348
6439
|
onClose: closeModal,
|
|
@@ -6413,7 +6504,7 @@ function NodeContextMenu({ position, targetId, onClose, onEdit, onDuplicate, onC
|
|
|
6413
6504
|
}
|
|
6414
6505
|
];
|
|
6415
6506
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6416
|
-
|
|
6507
|
+
chunkFSBR4RCK_js.ContextMenu,
|
|
6417
6508
|
{
|
|
6418
6509
|
position,
|
|
6419
6510
|
onClose,
|
|
@@ -6470,7 +6561,7 @@ function PanelContextMenu({ position, onClose, onPaste, onSelectAll, onFitView,
|
|
|
6470
6561
|
}
|
|
6471
6562
|
];
|
|
6472
6563
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6473
|
-
|
|
6564
|
+
chunkFSBR4RCK_js.ContextMenu,
|
|
6474
6565
|
{
|
|
6475
6566
|
position,
|
|
6476
6567
|
onClose,
|
|
@@ -6617,7 +6708,7 @@ function SelectionContextMenu({
|
|
|
6617
6708
|
}
|
|
6618
6709
|
];
|
|
6619
6710
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6620
|
-
|
|
6711
|
+
chunkFSBR4RCK_js.ContextMenu,
|
|
6621
6712
|
{
|
|
6622
6713
|
position,
|
|
6623
6714
|
onClose,
|
|
@@ -6718,8 +6809,14 @@ var BUILT_IN_NODE_TYPES = {
|
|
|
6718
6809
|
iteration_start: IterationStartFlowNode,
|
|
6719
6810
|
note: NoteFlowNode,
|
|
6720
6811
|
datasource: DatasourceFlowNode,
|
|
6721
|
-
model_provider
|
|
6722
|
-
|
|
6812
|
+
// model_provider removed from canvas — providers are now
|
|
6813
|
+
// account-level credentials (configured in Settings), not draggable
|
|
6814
|
+
// nodes. Agents reference the provider via the `Models` tab in the
|
|
6815
|
+
// agent modal. See agent-modal.tsx + n8n/Dify patterns.
|
|
6816
|
+
group: GroupFlowNode,
|
|
6817
|
+
audio_input: AudioInputFlowNode,
|
|
6818
|
+
speech_transcriber: SpeechTranscriberFlowNode,
|
|
6819
|
+
dashboard_output: DashboardOutputFlowNode
|
|
6723
6820
|
};
|
|
6724
6821
|
var ALL_LOGIC_NODE_TYPES = [
|
|
6725
6822
|
"start",
|
|
@@ -6744,8 +6841,10 @@ var ALL_LOGIC_NODE_TYPES = [
|
|
|
6744
6841
|
"rule",
|
|
6745
6842
|
"entity",
|
|
6746
6843
|
"datasource",
|
|
6747
|
-
"
|
|
6748
|
-
"
|
|
6844
|
+
"group",
|
|
6845
|
+
"audio_input",
|
|
6846
|
+
"speech_transcriber",
|
|
6847
|
+
"dashboard_output"
|
|
6749
6848
|
];
|
|
6750
6849
|
function isLogicNodeType(nodeType) {
|
|
6751
6850
|
return ALL_LOGIC_NODE_TYPES.includes(nodeType);
|
|
@@ -6769,6 +6868,7 @@ var AUTO_SAVE_DEBOUNCE_MS = 2e3;
|
|
|
6769
6868
|
function WorkflowCanvasInner({
|
|
6770
6869
|
agents,
|
|
6771
6870
|
models,
|
|
6871
|
+
modelProviders = [],
|
|
6772
6872
|
tools,
|
|
6773
6873
|
agentTools = [],
|
|
6774
6874
|
rules,
|
|
@@ -6803,7 +6903,9 @@ function WorkflowCanvasInner({
|
|
|
6803
6903
|
openAgentModalAction(
|
|
6804
6904
|
{ agentId: "", name: "", order: 0, enabled: true, temperature: 0.7, maxTokens: 4096 },
|
|
6805
6905
|
models,
|
|
6806
|
-
true
|
|
6906
|
+
true,
|
|
6907
|
+
agentTools,
|
|
6908
|
+
modelProviders
|
|
6807
6909
|
);
|
|
6808
6910
|
}
|
|
6809
6911
|
}, [isCreatingAgent]);
|
|
@@ -6950,7 +7052,7 @@ function WorkflowCanvasInner({
|
|
|
6950
7052
|
providerName: models.find((m) => m.id === agent.modelId)?.provider,
|
|
6951
7053
|
onSelect: () => {
|
|
6952
7054
|
setSelectedAgentId(agent.agentId);
|
|
6953
|
-
openAgentModalAction(agent, models, false, agentTools);
|
|
7055
|
+
openAgentModalAction(agent, models, false, agentTools, modelProviders);
|
|
6954
7056
|
},
|
|
6955
7057
|
onRemoveFromCanvas: handleRemoveNodeFromCanvas
|
|
6956
7058
|
}
|
|
@@ -7083,7 +7185,7 @@ function WorkflowCanvasInner({
|
|
|
7083
7185
|
};
|
|
7084
7186
|
}
|
|
7085
7187
|
if (isLogicNodeType(savedNode.type)) {
|
|
7086
|
-
const config = savedNode.data.config ??
|
|
7188
|
+
const config = savedNode.data.config ?? chunk72SWXOD5_js.createDefaultLogicNodeConfig(savedNode.type);
|
|
7087
7189
|
if (config) {
|
|
7088
7190
|
const baseNode = {
|
|
7089
7191
|
id: savedNode.id,
|
|
@@ -7262,7 +7364,7 @@ function WorkflowCanvasInner({
|
|
|
7262
7364
|
}
|
|
7263
7365
|
storeTakeSnapshot();
|
|
7264
7366
|
const isTB = direction === "TB";
|
|
7265
|
-
const repositionedNodes =
|
|
7367
|
+
const repositionedNodes = chunk72SWXOD5_js.applyDagreLayout(nodes, edges, direction).map((node) => ({
|
|
7266
7368
|
...node,
|
|
7267
7369
|
sourcePosition: isTB ? react$1.Position.Bottom : react$1.Position.Right,
|
|
7268
7370
|
targetPosition: isTB ? react$1.Position.Top : react$1.Position.Left
|
|
@@ -7333,7 +7435,7 @@ function WorkflowCanvasInner({
|
|
|
7333
7435
|
const agent = targetNode.data?.agent;
|
|
7334
7436
|
if (agent) {
|
|
7335
7437
|
setSelectedAgentId(agent.agentId ?? agent.id ?? null);
|
|
7336
|
-
openAgentModalAction(agent, models, false, agentTools);
|
|
7438
|
+
openAgentModalAction(agent, models, false, agentTools, modelProviders);
|
|
7337
7439
|
}
|
|
7338
7440
|
} else if (targetNode.type === "tool") {
|
|
7339
7441
|
const tool = targetNode.data?.tool;
|
|
@@ -7391,7 +7493,7 @@ function WorkflowCanvasInner({
|
|
|
7391
7493
|
}, [storePaste]);
|
|
7392
7494
|
const contextMenuAddNote = react.useCallback((flowPosition) => {
|
|
7393
7495
|
storeTakeSnapshot();
|
|
7394
|
-
const noteConfig =
|
|
7496
|
+
const noteConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig("note");
|
|
7395
7497
|
const noteNode = {
|
|
7396
7498
|
id: crypto.randomUUID(),
|
|
7397
7499
|
type: "note",
|
|
@@ -7832,7 +7934,7 @@ function WorkflowCanvasInner({
|
|
|
7832
7934
|
selected: false,
|
|
7833
7935
|
onSelect: () => {
|
|
7834
7936
|
setSelectedAgentId(agent.agentId);
|
|
7835
|
-
openAgentModalAction(agent, models, false, agentTools);
|
|
7937
|
+
openAgentModalAction(agent, models, false, agentTools, modelProviders);
|
|
7836
7938
|
},
|
|
7837
7939
|
onRemoveFromCanvas: handleRemoveNodeFromCanvas
|
|
7838
7940
|
}
|
|
@@ -7902,7 +8004,7 @@ function WorkflowCanvasInner({
|
|
|
7902
8004
|
};
|
|
7903
8005
|
setNodes((currentNodes) => [...currentNodes, newNode]);
|
|
7904
8006
|
} else if (nodeType === "group") {
|
|
7905
|
-
const groupConfig = configRaw ? JSON.parse(configRaw) :
|
|
8007
|
+
const groupConfig = configRaw ? JSON.parse(configRaw) : chunk72SWXOD5_js.createDefaultLogicNodeConfig("group");
|
|
7906
8008
|
if (!groupConfig) return;
|
|
7907
8009
|
const newNode = {
|
|
7908
8010
|
id: newNodeId,
|
|
@@ -7919,7 +8021,7 @@ function WorkflowCanvasInner({
|
|
|
7919
8021
|
};
|
|
7920
8022
|
setNodes((currentNodes) => [...currentNodes, newNode]);
|
|
7921
8023
|
} else if (isLogicNodeType(nodeType)) {
|
|
7922
|
-
const config = configRaw ? JSON.parse(configRaw) :
|
|
8024
|
+
const config = configRaw ? JSON.parse(configRaw) : chunk72SWXOD5_js.createDefaultLogicNodeConfig(nodeType);
|
|
7923
8025
|
if (!config) return;
|
|
7924
8026
|
const newNode = {
|
|
7925
8027
|
id: newNodeId,
|
|
@@ -8057,7 +8159,7 @@ function WorkflowCanvasInner({
|
|
|
8057
8159
|
(edgeId, nodeType, position) => {
|
|
8058
8160
|
if (!isLogicNodeType(nodeType)) return;
|
|
8059
8161
|
storeTakeSnapshot();
|
|
8060
|
-
const config =
|
|
8162
|
+
const config = chunk72SWXOD5_js.createDefaultLogicNodeConfig(nodeType);
|
|
8061
8163
|
if (!config) return;
|
|
8062
8164
|
const newNodeId = crypto.randomUUID();
|
|
8063
8165
|
const newNode = {
|
|
@@ -8521,7 +8623,6 @@ exports.LangChainIcon = LangChainIcon;
|
|
|
8521
8623
|
exports.ListOperatorFlowNode = ListOperatorFlowNode;
|
|
8522
8624
|
exports.LogicNodeModal = LogicNodeModal;
|
|
8523
8625
|
exports.MINIMAP_NODE_COLORS = MINIMAP_NODE_COLORS;
|
|
8524
|
-
exports.ModelProviderFlowNode = ModelProviderFlowNode;
|
|
8525
8626
|
exports.NODE_EXECUTION_ACCENT_COLORS = NODE_EXECUTION_ACCENT_COLORS;
|
|
8526
8627
|
exports.NodeCard = NodeCard;
|
|
8527
8628
|
exports.NodeCardBadge = NodeCardBadge;
|
|
@@ -8565,5 +8666,5 @@ exports.useModalStore = useModalStore;
|
|
|
8565
8666
|
exports.useWorkflowBuilderClient = useWorkflowBuilderClient;
|
|
8566
8667
|
exports.useWorkflowBuilderClientOptional = useWorkflowBuilderClientOptional;
|
|
8567
8668
|
exports.useWorkflowStore = useWorkflowStore;
|
|
8568
|
-
//# sourceMappingURL=chunk-
|
|
8569
|
-
//# sourceMappingURL=chunk-
|
|
8669
|
+
//# sourceMappingURL=chunk-M7KSEUZR.js.map
|
|
8670
|
+
//# sourceMappingURL=chunk-M7KSEUZR.js.map
|