@datatechsolutions/ui 3.2.0 → 3.3.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.js +115 -115
- package/dist/astrlabe/index.mjs +4 -4
- package/dist/astrlabe/utils.js +9 -9
- package/dist/astrlabe/utils.mjs +2 -2
- package/dist/astrlabe/workflow-canvas.js +3 -3
- package/dist/astrlabe/workflow-canvas.mjs +2 -2
- package/dist/{chunk-QYA53LUF.mjs → chunk-2WXRRQM3.mjs} +21 -4
- package/dist/chunk-2WXRRQM3.mjs.map +1 -0
- package/dist/{chunk-C3H4FM4A.js → chunk-72SWXOD5.js} +15 -2
- package/dist/chunk-72SWXOD5.js.map +1 -0
- package/dist/{chunk-H2D2CRTD.mjs → chunk-BR2GAZKG.mjs} +5 -5
- package/dist/{chunk-H2D2CRTD.mjs.map → chunk-BR2GAZKG.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-5W7L7BT7.mjs → chunk-G7JQ4OCE.mjs} +15 -2
- package/dist/chunk-G7JQ4OCE.mjs.map +1 -0
- package/dist/{chunk-YIB2YAM5.mjs → chunk-GIQXB3BG.mjs} +3 -3
- package/dist/{chunk-YIB2YAM5.mjs.map → chunk-GIQXB3BG.mjs.map} +1 -1
- package/dist/{chunk-RL35XATZ.js → chunk-IJAKZHXX.js} +82 -65
- package/dist/chunk-IJAKZHXX.js.map +1 -0
- package/dist/{chunk-U7XM3N7F.mjs → chunk-LEXBTVGM.mjs} +12 -2
- package/dist/chunk-LEXBTVGM.mjs.map +1 -0
- package/dist/{chunk-SU3YPWFW.js → chunk-MWPTSBAI.js} +4 -4
- package/dist/{chunk-SU3YPWFW.js.map → chunk-MWPTSBAI.js.map} +1 -1
- package/dist/{chunk-EFOXN3LC.js → chunk-NJFRJ6YD.js} +279 -19
- package/dist/chunk-NJFRJ6YD.js.map +1 -0
- package/dist/{chunk-YV72JM4B.mjs → chunk-O6M3KDGT.mjs} +3 -3
- package/dist/{chunk-YV72JM4B.mjs.map → chunk-O6M3KDGT.mjs.map} +1 -1
- package/dist/{chunk-RGI74SQH.js → chunk-OCELRSLO.js} +4 -4
- package/dist/{chunk-RGI74SQH.js.map → chunk-OCELRSLO.js.map} +1 -1
- package/dist/{chunk-IRT4T3CU.mjs → chunk-PCYL4MII.mjs} +274 -14
- package/dist/chunk-PCYL4MII.mjs.map +1 -0
- package/dist/{chunk-Y6AEE56Q.js → chunk-ZL6C2ZAF.js} +29 -29
- package/dist/{chunk-Y6AEE56Q.js.map → chunk-ZL6C2ZAF.js.map} +1 -1
- package/dist/platform/agents-workspace.js +6 -6
- package/dist/platform/agents-workspace.mjs +5 -5
- package/dist/platform/index.js +17 -17
- package/dist/platform/index.mjs +8 -8
- package/dist/platform/pages/index.js +12 -12
- package/dist/platform/pages/index.mjs +6 -6
- package/dist/platform/telemetry/index.js +9 -0
- package/dist/platform/telemetry/index.js.map +1 -1
- package/dist/platform/telemetry/index.mjs +9 -0
- package/dist/platform/telemetry/index.mjs.map +1 -1
- package/dist/platform/workflow-canvas-shell.js +4 -4
- package/dist/platform/workflow-canvas-shell.mjs +3 -3
- package/package.json +1 -1
- package/dist/chunk-5W7L7BT7.mjs.map +0 -1
- package/dist/chunk-C3H4FM4A.js.map +0 -1
- package/dist/chunk-EFOXN3LC.js.map +0 -1
- package/dist/chunk-IRT4T3CU.mjs.map +0 -1
- package/dist/chunk-NJS2YC3J.js.map +0 -1
- package/dist/chunk-QYA53LUF.mjs.map +0 -1
- package/dist/chunk-RL35XATZ.js.map +0 -1
- package/dist/chunk-U7XM3N7F.mjs.map +0 -1
|
@@ -5,7 +5,7 @@ var chunkI2NZGVBG_js = require('./chunk-I2NZGVBG.js');
|
|
|
5
5
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
6
6
|
var chunkF54Q2YJY_js = require('./chunk-F54Q2YJY.js');
|
|
7
7
|
var chunkP4YYEM4B_js = require('./chunk-P4YYEM4B.js');
|
|
8
|
-
var
|
|
8
|
+
var chunk72SWXOD5_js = require('./chunk-72SWXOD5.js');
|
|
9
9
|
var react = require('react');
|
|
10
10
|
var react$1 = require('@xyflow/react');
|
|
11
11
|
require('@xyflow/react/dist/style.css');
|
|
@@ -373,7 +373,9 @@ var LOGIC_NODE_GRADIENTS = {
|
|
|
373
373
|
datasource: "from-cyan-500 to-blue-600",
|
|
374
374
|
model_provider: "from-slate-500 to-gray-600",
|
|
375
375
|
dashboard_output: "from-fuchsia-500 to-pink-600",
|
|
376
|
-
group: "from-slate-400 to-gray-500"
|
|
376
|
+
group: "from-slate-400 to-gray-500",
|
|
377
|
+
audio_input: "from-teal-400 to-cyan-500",
|
|
378
|
+
speech_transcriber: "from-violet-500 to-purple-600"
|
|
377
379
|
};
|
|
378
380
|
var LOGIC_NODE_BADGE_COLORS = {
|
|
379
381
|
start: "bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-300",
|
|
@@ -398,7 +400,9 @@ var LOGIC_NODE_BADGE_COLORS = {
|
|
|
398
400
|
datasource: "bg-cyan-100 text-cyan-700 dark:bg-cyan-500/20 dark:text-cyan-300",
|
|
399
401
|
model_provider: "bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300",
|
|
400
402
|
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"
|
|
403
|
+
group: "bg-slate-100 text-slate-700 dark:bg-slate-500/20 dark:text-slate-300",
|
|
404
|
+
audio_input: "bg-teal-100 text-teal-700 dark:bg-teal-500/20 dark:text-teal-300",
|
|
405
|
+
speech_transcriber: "bg-violet-100 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300"
|
|
402
406
|
};
|
|
403
407
|
var LOGIC_NODE_BADGE_SOFT_COLORS = {
|
|
404
408
|
start: "bg-green-50 text-green-600 dark:bg-green-500/20 dark:text-green-400",
|
|
@@ -423,7 +427,9 @@ var LOGIC_NODE_BADGE_SOFT_COLORS = {
|
|
|
423
427
|
datasource: "bg-cyan-50 text-cyan-600 dark:bg-cyan-500/20 dark:text-cyan-400",
|
|
424
428
|
model_provider: "bg-slate-50 text-slate-600 dark:bg-slate-500/20 dark:text-slate-400",
|
|
425
429
|
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"
|
|
430
|
+
group: "bg-slate-50 text-slate-600 dark:bg-slate-500/20 dark:text-slate-400",
|
|
431
|
+
audio_input: "bg-teal-50 text-teal-600 dark:bg-teal-500/20 dark:text-teal-400",
|
|
432
|
+
speech_transcriber: "bg-violet-50 text-violet-600 dark:bg-violet-500/20 dark:text-violet-400"
|
|
427
433
|
};
|
|
428
434
|
var LOGIC_ICON_MAP = {
|
|
429
435
|
start: outline.PlayIcon,
|
|
@@ -448,7 +454,9 @@ var LOGIC_ICON_MAP = {
|
|
|
448
454
|
datasource: outline.ServerStackIcon,
|
|
449
455
|
model_provider: outline.KeyIcon,
|
|
450
456
|
dashboard_output: outline.ChartBarIcon,
|
|
451
|
-
group: outline.RectangleGroupIcon
|
|
457
|
+
group: outline.RectangleGroupIcon,
|
|
458
|
+
audio_input: outline.MicrophoneIcon,
|
|
459
|
+
speech_transcriber: outline.SpeakerWaveIcon
|
|
452
460
|
};
|
|
453
461
|
var EXPERIMENTAL_NODE_TYPES = /* @__PURE__ */ new Set([
|
|
454
462
|
"document_extractor",
|
|
@@ -484,7 +492,9 @@ var NODE_BORDER_COLORS = {
|
|
|
484
492
|
list_operator: "border-lime-300/50 dark:border-lime-600/50",
|
|
485
493
|
note: "border-gray-200/50 dark:border-gray-700/50",
|
|
486
494
|
datasource: "border-cyan-300/50 dark:border-cyan-600/50",
|
|
487
|
-
model_provider: "border-slate-300/50 dark:border-slate-600/50"
|
|
495
|
+
model_provider: "border-slate-300/50 dark:border-slate-600/50",
|
|
496
|
+
audio_input: "border-teal-300/50 dark:border-teal-600/50",
|
|
497
|
+
speech_transcriber: "border-violet-300/50 dark:border-violet-600/50"
|
|
488
498
|
};
|
|
489
499
|
function getNodeStateClass(selected, nodeType, customBorder) {
|
|
490
500
|
if (selected) return NODE_SELECTED_CLASS;
|
|
@@ -574,7 +584,9 @@ var INSERTABLE_NODES = [
|
|
|
574
584
|
{ nodeType: "knowledge_base", nameKey: "knowledgeBaseNode", subcategory: "AI" },
|
|
575
585
|
{ nodeType: "answer", nameKey: "answerNode", subcategory: "AI" },
|
|
576
586
|
{ nodeType: "question_classifier", nameKey: "questionClassifierNode", subcategory: "AI" },
|
|
577
|
-
{ nodeType: "parameter_extractor", nameKey: "parameterExtractorNode", subcategory: "AI" }
|
|
587
|
+
{ nodeType: "parameter_extractor", nameKey: "parameterExtractorNode", subcategory: "AI" },
|
|
588
|
+
{ nodeType: "audio_input", nameKey: "audioInputNode", subcategory: "AI" },
|
|
589
|
+
{ nodeType: "speech_transcriber", nameKey: "speechTranscriberNode", subcategory: "AI" }
|
|
578
590
|
];
|
|
579
591
|
function EdgeInsertPopupComponent({ position, onSelect, onClose }) {
|
|
580
592
|
const tWorkflow = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
@@ -2106,7 +2118,7 @@ var AgentFlowNode = react.memo(function AgentFlowNode2({ id, data, selected }) {
|
|
|
2106
2118
|
/* @__PURE__ */ jsxRuntime.jsx(NodeCardMeta, { compact: isCompact, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
2107
2119
|
/* @__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
2120
|
(() => {
|
|
2109
|
-
const tier =
|
|
2121
|
+
const tier = chunk72SWXOD5_js.getAgentTier(Number(data.agent.elo ?? 0));
|
|
2110
2122
|
return /* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { className: `rounded-full px-2 py-0.5 text-[10px] font-bold ${tier.pillColor}`, children: tier.key });
|
|
2111
2123
|
})(),
|
|
2112
2124
|
/* @__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: [
|
|
@@ -3795,6 +3807,90 @@ var GroupFlowNode = react.memo(function GroupFlowNode2({ id, data, selected }) {
|
|
|
3795
3807
|
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-slate-500" })
|
|
3796
3808
|
] });
|
|
3797
3809
|
});
|
|
3810
|
+
var AudioInputFlowNode = react.memo(function AudioInputFlowNode2({ id, data, selected }) {
|
|
3811
|
+
const { config, label, onDelete, onEdit } = data;
|
|
3812
|
+
const isCompact = data.displayMode === "compact";
|
|
3813
|
+
const urlPreview = config.url ? config.url.slice(0, 32) : "";
|
|
3814
|
+
const formatLabel = config.format && config.format.length > 0 ? config.format : "auto";
|
|
3815
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3816
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3817
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-teal-500" }),
|
|
3818
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3819
|
+
NodeInteractiveCard,
|
|
3820
|
+
{
|
|
3821
|
+
nodeId: id,
|
|
3822
|
+
onEdit,
|
|
3823
|
+
compact: isCompact,
|
|
3824
|
+
selected,
|
|
3825
|
+
nodeType: "audio_input",
|
|
3826
|
+
children: [
|
|
3827
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3828
|
+
NodeCardHeader,
|
|
3829
|
+
{
|
|
3830
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(NodeIconBubble, { tone: "audio_input", children: /* @__PURE__ */ jsxRuntime.jsx(outline.MicrophoneIcon, { className: "h-5 w-5 text-white" }) }),
|
|
3831
|
+
title: label,
|
|
3832
|
+
description: "Validates an audio source URL for downstream voice nodes",
|
|
3833
|
+
compact: isCompact,
|
|
3834
|
+
iconClassName: ""
|
|
3835
|
+
}
|
|
3836
|
+
),
|
|
3837
|
+
/* @__PURE__ */ jsxRuntime.jsxs(NodeCardMeta, { compact: isCompact, children: [
|
|
3838
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3839
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "audio_input", children: "Audio Input" }),
|
|
3840
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "audio_input", soft: true, children: formatLabel }),
|
|
3841
|
+
urlPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: urlPreview })
|
|
3842
|
+
] }),
|
|
3843
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
3844
|
+
] })
|
|
3845
|
+
]
|
|
3846
|
+
}
|
|
3847
|
+
),
|
|
3848
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-teal-500" })
|
|
3849
|
+
] });
|
|
3850
|
+
});
|
|
3851
|
+
var SpeechTranscriberFlowNode = react.memo(function SpeechTranscriberFlowNode2({ id, data, selected }) {
|
|
3852
|
+
const { config, label, onDelete, onEdit } = data;
|
|
3853
|
+
const isCompact = data.displayMode === "compact";
|
|
3854
|
+
const model = config.model && config.model.length > 0 ? config.model : "whisper-1";
|
|
3855
|
+
const language = config.language && config.language.length > 0 ? config.language : "auto";
|
|
3856
|
+
const audioRefPreview = config.audioUrl ? config.audioUrl.slice(0, 32) : "";
|
|
3857
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3858
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeRunningIndicator, { nodeId: id }),
|
|
3859
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "target", position: react$1.Position.Left, id: "left-in", colorClass: "!bg-violet-500" }),
|
|
3860
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3861
|
+
NodeInteractiveCard,
|
|
3862
|
+
{
|
|
3863
|
+
nodeId: id,
|
|
3864
|
+
onEdit,
|
|
3865
|
+
compact: isCompact,
|
|
3866
|
+
selected,
|
|
3867
|
+
nodeType: "speech_transcriber",
|
|
3868
|
+
children: [
|
|
3869
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3870
|
+
NodeCardHeader,
|
|
3871
|
+
{
|
|
3872
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(NodeIconBubble, { tone: "speech_transcriber", children: /* @__PURE__ */ jsxRuntime.jsx(outline.SpeakerWaveIcon, { className: "h-5 w-5 text-white" }) }),
|
|
3873
|
+
title: label,
|
|
3874
|
+
description: "Transcribes audio via OpenAI Whisper-compatible endpoints",
|
|
3875
|
+
compact: isCompact,
|
|
3876
|
+
iconClassName: ""
|
|
3877
|
+
}
|
|
3878
|
+
),
|
|
3879
|
+
/* @__PURE__ */ jsxRuntime.jsxs(NodeCardMeta, { compact: isCompact, children: [
|
|
3880
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3881
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "speech_transcriber", children: "Whisper" }),
|
|
3882
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "speech_transcriber", soft: true, children: model }),
|
|
3883
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardBadge, { tone: "speech_transcriber", soft: true, children: language }),
|
|
3884
|
+
audioRefPreview && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-[10px] text-gray-400 dark:text-gray-500", children: audioRefPreview })
|
|
3885
|
+
] }),
|
|
3886
|
+
/* @__PURE__ */ jsxRuntime.jsx(NodeCardDeleteAction, { nodeId: id, onDelete })
|
|
3887
|
+
] })
|
|
3888
|
+
]
|
|
3889
|
+
}
|
|
3890
|
+
),
|
|
3891
|
+
/* @__PURE__ */ jsxRuntime.jsx(WorkflowHandle, { type: "source", position: react$1.Position.Right, id: "right-out", colorClass: "!bg-violet-500" })
|
|
3892
|
+
] });
|
|
3893
|
+
});
|
|
3798
3894
|
function ConfigFormActions({
|
|
3799
3895
|
cancelLabel,
|
|
3800
3896
|
saveLabel,
|
|
@@ -6246,6 +6342,160 @@ function AgentNodeConfigForm({
|
|
|
6246
6342
|
)
|
|
6247
6343
|
] });
|
|
6248
6344
|
}
|
|
6345
|
+
var AUDIO_FORMATS = ["auto", "mp3", "wav", "m4a", "webm", "ogg", "flac", "mp4", "mpga"];
|
|
6346
|
+
function AudioInputNodeConfigForm({ config, onSave, onCancel }) {
|
|
6347
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.audioInputNodeConfig");
|
|
6348
|
+
const [url, setUrl] = react.useState(config.url ?? "");
|
|
6349
|
+
const [format, setFormat] = react.useState(config.format && config.format.length > 0 ? config.format : "auto");
|
|
6350
|
+
const handleSave = () => {
|
|
6351
|
+
onSave({
|
|
6352
|
+
...config,
|
|
6353
|
+
url,
|
|
6354
|
+
format: format === "auto" ? void 0 : format
|
|
6355
|
+
});
|
|
6356
|
+
};
|
|
6357
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
6358
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6359
|
+
chunkI2NZGVBG_js.FormInput,
|
|
6360
|
+
{
|
|
6361
|
+
type: "text",
|
|
6362
|
+
label: t("urlLabel"),
|
|
6363
|
+
value: url,
|
|
6364
|
+
onValueChange: setUrl,
|
|
6365
|
+
placeholder: t("urlPlaceholder")
|
|
6366
|
+
}
|
|
6367
|
+
),
|
|
6368
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6369
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
6370
|
+
{
|
|
6371
|
+
label: t("formatLabel"),
|
|
6372
|
+
value: format,
|
|
6373
|
+
onValueChange: setFormat,
|
|
6374
|
+
options: AUDIO_FORMATS.map((option) => ({ value: option, label: option }))
|
|
6375
|
+
}
|
|
6376
|
+
),
|
|
6377
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6378
|
+
ConfigFormActions,
|
|
6379
|
+
{
|
|
6380
|
+
cancelLabel: t("cancel"),
|
|
6381
|
+
saveLabel: t("save"),
|
|
6382
|
+
onCancel,
|
|
6383
|
+
onSave: handleSave
|
|
6384
|
+
}
|
|
6385
|
+
)
|
|
6386
|
+
] });
|
|
6387
|
+
}
|
|
6388
|
+
var RESPONSE_FORMATS = [
|
|
6389
|
+
"verbose_json",
|
|
6390
|
+
"json",
|
|
6391
|
+
"text"
|
|
6392
|
+
];
|
|
6393
|
+
function SpeechTranscriberNodeConfigForm({ config, onSave, onCancel }) {
|
|
6394
|
+
const t = chunkYXN2K77G_js.useTranslations("agents.workflow.speechTranscriberNodeConfig");
|
|
6395
|
+
const [audioUrl, setAudioUrl] = react.useState(config.audioUrl ?? "");
|
|
6396
|
+
const [model, setModel] = react.useState(config.model ?? "whisper-1");
|
|
6397
|
+
const [language, setLanguage] = react.useState(config.language ?? "");
|
|
6398
|
+
const [prompt, setPrompt] = react.useState(config.prompt ?? "");
|
|
6399
|
+
const [responseFormat, setResponseFormat] = react.useState(
|
|
6400
|
+
config.responseFormat ?? "verbose_json"
|
|
6401
|
+
);
|
|
6402
|
+
const [endpoint, setEndpoint] = react.useState(config.endpoint ?? "");
|
|
6403
|
+
const [timeoutMs, setTimeoutMs] = react.useState(config.timeoutMs ?? 12e4);
|
|
6404
|
+
const handleSave = () => {
|
|
6405
|
+
onSave({
|
|
6406
|
+
...config,
|
|
6407
|
+
audioUrl,
|
|
6408
|
+
model: model.trim() || void 0,
|
|
6409
|
+
language: language.trim() || void 0,
|
|
6410
|
+
prompt: prompt.trim() || void 0,
|
|
6411
|
+
responseFormat,
|
|
6412
|
+
endpoint: endpoint.trim() || void 0,
|
|
6413
|
+
timeoutMs
|
|
6414
|
+
});
|
|
6415
|
+
};
|
|
6416
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
6417
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6418
|
+
chunkI2NZGVBG_js.FormInput,
|
|
6419
|
+
{
|
|
6420
|
+
type: "text",
|
|
6421
|
+
label: t("audioUrlLabel"),
|
|
6422
|
+
value: audioUrl,
|
|
6423
|
+
onValueChange: setAudioUrl,
|
|
6424
|
+
placeholder: t("audioUrlPlaceholder")
|
|
6425
|
+
}
|
|
6426
|
+
),
|
|
6427
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6428
|
+
chunkI2NZGVBG_js.FormInput,
|
|
6429
|
+
{
|
|
6430
|
+
type: "text",
|
|
6431
|
+
label: t("modelLabel"),
|
|
6432
|
+
value: model,
|
|
6433
|
+
onValueChange: setModel,
|
|
6434
|
+
placeholder: "whisper-1"
|
|
6435
|
+
}
|
|
6436
|
+
),
|
|
6437
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6438
|
+
chunkI2NZGVBG_js.FormInput,
|
|
6439
|
+
{
|
|
6440
|
+
type: "text",
|
|
6441
|
+
label: t("languageLabel"),
|
|
6442
|
+
value: language,
|
|
6443
|
+
onValueChange: setLanguage,
|
|
6444
|
+
placeholder: t("languagePlaceholder")
|
|
6445
|
+
}
|
|
6446
|
+
),
|
|
6447
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6448
|
+
chunkI2NZGVBG_js.FormTextarea,
|
|
6449
|
+
{
|
|
6450
|
+
label: t("promptLabel"),
|
|
6451
|
+
value: prompt,
|
|
6452
|
+
onValueChange: setPrompt,
|
|
6453
|
+
placeholder: t("promptPlaceholder"),
|
|
6454
|
+
rows: 3
|
|
6455
|
+
}
|
|
6456
|
+
),
|
|
6457
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6458
|
+
chunkI2NZGVBG_js.FormSelect,
|
|
6459
|
+
{
|
|
6460
|
+
label: t("responseFormatLabel"),
|
|
6461
|
+
value: responseFormat,
|
|
6462
|
+
onValueChange: (value) => setResponseFormat(value),
|
|
6463
|
+
options: RESPONSE_FORMATS.map((value) => ({ value, label: value }))
|
|
6464
|
+
}
|
|
6465
|
+
),
|
|
6466
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6467
|
+
chunkI2NZGVBG_js.FormInput,
|
|
6468
|
+
{
|
|
6469
|
+
type: "text",
|
|
6470
|
+
label: t("endpointLabel"),
|
|
6471
|
+
value: endpoint,
|
|
6472
|
+
onValueChange: setEndpoint,
|
|
6473
|
+
placeholder: t("endpointPlaceholder")
|
|
6474
|
+
}
|
|
6475
|
+
),
|
|
6476
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6477
|
+
chunkI2NZGVBG_js.FormInput,
|
|
6478
|
+
{
|
|
6479
|
+
type: "number",
|
|
6480
|
+
label: t("timeoutLabel"),
|
|
6481
|
+
value: String(timeoutMs),
|
|
6482
|
+
onValueChange: (value) => setTimeoutMs(Number(value)),
|
|
6483
|
+
min: 1e3,
|
|
6484
|
+
max: 6e5,
|
|
6485
|
+
step: 1e3
|
|
6486
|
+
}
|
|
6487
|
+
),
|
|
6488
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6489
|
+
ConfigFormActions,
|
|
6490
|
+
{
|
|
6491
|
+
cancelLabel: t("cancel"),
|
|
6492
|
+
saveLabel: t("save"),
|
|
6493
|
+
onCancel,
|
|
6494
|
+
onSave: handleSave
|
|
6495
|
+
}
|
|
6496
|
+
)
|
|
6497
|
+
] });
|
|
6498
|
+
}
|
|
6249
6499
|
var NODE_TITLE_KEYS = {
|
|
6250
6500
|
start: "startNodeConfig",
|
|
6251
6501
|
end: "endNodeConfig",
|
|
@@ -6269,7 +6519,9 @@ var NODE_TITLE_KEYS = {
|
|
|
6269
6519
|
group: "groupNodeConfig",
|
|
6270
6520
|
model_provider: "modelProviderNodeConfig",
|
|
6271
6521
|
rule: "ruleNodeConfig",
|
|
6272
|
-
agent: "agentNodeConfig"
|
|
6522
|
+
agent: "agentNodeConfig",
|
|
6523
|
+
audio_input: "audioInputNodeConfig",
|
|
6524
|
+
speech_transcriber: "speechTranscriberNodeConfig"
|
|
6273
6525
|
};
|
|
6274
6526
|
function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables, onLoadSchema }) {
|
|
6275
6527
|
const t = chunkYXN2K77G_js.useTranslations("agents.workflow");
|
|
@@ -6336,6 +6588,10 @@ function LogicNodeModal({ onSave, entities = [], datasources = [], onLoadTables,
|
|
|
6336
6588
|
return /* @__PURE__ */ jsxRuntime.jsx(RuleNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6337
6589
|
case "agent":
|
|
6338
6590
|
return /* @__PURE__ */ jsxRuntime.jsx(AgentNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6591
|
+
case "audio_input":
|
|
6592
|
+
return /* @__PURE__ */ jsxRuntime.jsx(AudioInputNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6593
|
+
case "speech_transcriber":
|
|
6594
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SpeechTranscriberNodeConfigForm, { config, onSave: handleSave, onCancel: closeModal });
|
|
6339
6595
|
default:
|
|
6340
6596
|
return null;
|
|
6341
6597
|
}
|
|
@@ -6719,7 +6975,9 @@ var BUILT_IN_NODE_TYPES = {
|
|
|
6719
6975
|
note: NoteFlowNode,
|
|
6720
6976
|
datasource: DatasourceFlowNode,
|
|
6721
6977
|
model_provider: ModelProviderFlowNode,
|
|
6722
|
-
group: GroupFlowNode
|
|
6978
|
+
group: GroupFlowNode,
|
|
6979
|
+
audio_input: AudioInputFlowNode,
|
|
6980
|
+
speech_transcriber: SpeechTranscriberFlowNode
|
|
6723
6981
|
};
|
|
6724
6982
|
var ALL_LOGIC_NODE_TYPES = [
|
|
6725
6983
|
"start",
|
|
@@ -6745,7 +7003,9 @@ var ALL_LOGIC_NODE_TYPES = [
|
|
|
6745
7003
|
"entity",
|
|
6746
7004
|
"datasource",
|
|
6747
7005
|
"model_provider",
|
|
6748
|
-
"group"
|
|
7006
|
+
"group",
|
|
7007
|
+
"audio_input",
|
|
7008
|
+
"speech_transcriber"
|
|
6749
7009
|
];
|
|
6750
7010
|
function isLogicNodeType(nodeType) {
|
|
6751
7011
|
return ALL_LOGIC_NODE_TYPES.includes(nodeType);
|
|
@@ -7083,7 +7343,7 @@ function WorkflowCanvasInner({
|
|
|
7083
7343
|
};
|
|
7084
7344
|
}
|
|
7085
7345
|
if (isLogicNodeType(savedNode.type)) {
|
|
7086
|
-
const config = savedNode.data.config ??
|
|
7346
|
+
const config = savedNode.data.config ?? chunk72SWXOD5_js.createDefaultLogicNodeConfig(savedNode.type);
|
|
7087
7347
|
if (config) {
|
|
7088
7348
|
const baseNode = {
|
|
7089
7349
|
id: savedNode.id,
|
|
@@ -7262,7 +7522,7 @@ function WorkflowCanvasInner({
|
|
|
7262
7522
|
}
|
|
7263
7523
|
storeTakeSnapshot();
|
|
7264
7524
|
const isTB = direction === "TB";
|
|
7265
|
-
const repositionedNodes =
|
|
7525
|
+
const repositionedNodes = chunk72SWXOD5_js.applyDagreLayout(nodes, edges, direction).map((node) => ({
|
|
7266
7526
|
...node,
|
|
7267
7527
|
sourcePosition: isTB ? react$1.Position.Bottom : react$1.Position.Right,
|
|
7268
7528
|
targetPosition: isTB ? react$1.Position.Top : react$1.Position.Left
|
|
@@ -7391,7 +7651,7 @@ function WorkflowCanvasInner({
|
|
|
7391
7651
|
}, [storePaste]);
|
|
7392
7652
|
const contextMenuAddNote = react.useCallback((flowPosition) => {
|
|
7393
7653
|
storeTakeSnapshot();
|
|
7394
|
-
const noteConfig =
|
|
7654
|
+
const noteConfig = chunk72SWXOD5_js.createDefaultLogicNodeConfig("note");
|
|
7395
7655
|
const noteNode = {
|
|
7396
7656
|
id: crypto.randomUUID(),
|
|
7397
7657
|
type: "note",
|
|
@@ -7902,7 +8162,7 @@ function WorkflowCanvasInner({
|
|
|
7902
8162
|
};
|
|
7903
8163
|
setNodes((currentNodes) => [...currentNodes, newNode]);
|
|
7904
8164
|
} else if (nodeType === "group") {
|
|
7905
|
-
const groupConfig = configRaw ? JSON.parse(configRaw) :
|
|
8165
|
+
const groupConfig = configRaw ? JSON.parse(configRaw) : chunk72SWXOD5_js.createDefaultLogicNodeConfig("group");
|
|
7906
8166
|
if (!groupConfig) return;
|
|
7907
8167
|
const newNode = {
|
|
7908
8168
|
id: newNodeId,
|
|
@@ -7919,7 +8179,7 @@ function WorkflowCanvasInner({
|
|
|
7919
8179
|
};
|
|
7920
8180
|
setNodes((currentNodes) => [...currentNodes, newNode]);
|
|
7921
8181
|
} else if (isLogicNodeType(nodeType)) {
|
|
7922
|
-
const config = configRaw ? JSON.parse(configRaw) :
|
|
8182
|
+
const config = configRaw ? JSON.parse(configRaw) : chunk72SWXOD5_js.createDefaultLogicNodeConfig(nodeType);
|
|
7923
8183
|
if (!config) return;
|
|
7924
8184
|
const newNode = {
|
|
7925
8185
|
id: newNodeId,
|
|
@@ -8057,7 +8317,7 @@ function WorkflowCanvasInner({
|
|
|
8057
8317
|
(edgeId, nodeType, position) => {
|
|
8058
8318
|
if (!isLogicNodeType(nodeType)) return;
|
|
8059
8319
|
storeTakeSnapshot();
|
|
8060
|
-
const config =
|
|
8320
|
+
const config = chunk72SWXOD5_js.createDefaultLogicNodeConfig(nodeType);
|
|
8061
8321
|
if (!config) return;
|
|
8062
8322
|
const newNodeId = crypto.randomUUID();
|
|
8063
8323
|
const newNode = {
|
|
@@ -8565,5 +8825,5 @@ exports.useModalStore = useModalStore;
|
|
|
8565
8825
|
exports.useWorkflowBuilderClient = useWorkflowBuilderClient;
|
|
8566
8826
|
exports.useWorkflowBuilderClientOptional = useWorkflowBuilderClientOptional;
|
|
8567
8827
|
exports.useWorkflowStore = useWorkflowStore;
|
|
8568
|
-
//# sourceMappingURL=chunk-
|
|
8569
|
-
//# sourceMappingURL=chunk-
|
|
8828
|
+
//# sourceMappingURL=chunk-NJFRJ6YD.js.map
|
|
8829
|
+
//# sourceMappingURL=chunk-NJFRJ6YD.js.map
|