@datatechsolutions/ui 3.12.1 → 3.13.1
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/graph-node.js +6 -6
- package/dist/astrlabe/graph-node.mjs +2 -2
- package/dist/astrlabe/index.js +114 -114
- package/dist/astrlabe/index.mjs +6 -6
- package/dist/astrlabe/workflow-canvas.js +6 -6
- package/dist/astrlabe/workflow-canvas.mjs +5 -5
- package/dist/{chunk-BPMYNE7S.mjs → chunk-3VCSMSJB.mjs} +6 -6
- package/dist/{chunk-BPMYNE7S.mjs.map → chunk-3VCSMSJB.mjs.map} +1 -1
- package/dist/{chunk-OM5NNUD2.mjs → chunk-4MNKVDTJ.mjs} +9 -8
- package/dist/chunk-4MNKVDTJ.mjs.map +1 -0
- package/dist/{chunk-PIIY2Z2O.mjs → chunk-4QCO4CBC.mjs} +4 -4
- package/dist/{chunk-PIIY2Z2O.mjs.map → chunk-4QCO4CBC.mjs.map} +1 -1
- package/dist/{chunk-4D23CQZM.mjs → chunk-4VEQJAXJ.mjs} +6 -6
- package/dist/{chunk-4D23CQZM.mjs.map → chunk-4VEQJAXJ.mjs.map} +1 -1
- package/dist/{chunk-FKRIQYRG.js → chunk-4Z5NZINA.js} +431 -481
- package/dist/chunk-4Z5NZINA.js.map +1 -0
- package/dist/{chunk-Z75CEP4V.js → chunk-54T5F65C.js} +29 -29
- package/dist/{chunk-Z75CEP4V.js.map → chunk-54T5F65C.js.map} +1 -1
- package/dist/{chunk-V3UZCOZI.js → chunk-7IAWXG43.js} +35 -35
- package/dist/{chunk-V3UZCOZI.js.map → chunk-7IAWXG43.js.map} +1 -1
- package/dist/{chunk-PLEWG2L7.js → chunk-AC54BNSK.js} +15 -15
- package/dist/{chunk-PLEWG2L7.js.map → chunk-AC54BNSK.js.map} +1 -1
- package/dist/{chunk-ID55ABBB.js → chunk-B3TA74C4.js} +100 -100
- package/dist/chunk-B3TA74C4.js.map +1 -0
- package/dist/{chunk-5OZTI7TR.js → chunk-CKY2QIRR.js} +6 -6
- package/dist/{chunk-5OZTI7TR.js.map → chunk-CKY2QIRR.js.map} +1 -1
- package/dist/{chunk-EZQ2D47U.js → chunk-CVEI4RQP.js} +4 -4
- package/dist/{chunk-EZQ2D47U.js.map → chunk-CVEI4RQP.js.map} +1 -1
- package/dist/{chunk-NK4H3JWN.mjs → chunk-DJHNSBIR.mjs} +63 -100
- package/dist/chunk-DJHNSBIR.mjs.map +1 -0
- package/dist/{chunk-P4RVGMZL.js → chunk-DTFU3ZTD.js} +5 -33
- package/dist/chunk-DTFU3ZTD.js.map +1 -0
- package/dist/{chunk-BHOT22QL.js → chunk-EBARYRSA.js} +2 -2
- package/dist/{chunk-BHOT22QL.js.map → chunk-EBARYRSA.js.map} +1 -1
- package/dist/{chunk-QGLGQXJE.js → chunk-FV42SSLP.js} +10 -10
- package/dist/chunk-FV42SSLP.js.map +1 -0
- package/dist/{chunk-RT264BD4.mjs → chunk-M4KRQXOT.mjs} +4 -4
- package/dist/{chunk-RT264BD4.mjs.map → chunk-M4KRQXOT.mjs.map} +1 -1
- package/dist/{chunk-WR55H7DH.mjs → chunk-O4RZCDP2.mjs} +2 -2
- package/dist/{chunk-WR55H7DH.mjs.map → chunk-O4RZCDP2.mjs.map} +1 -1
- package/dist/{chunk-VYU2FYDE.js → chunk-PM7A5I3X.js} +146 -183
- package/dist/chunk-PM7A5I3X.js.map +1 -0
- package/dist/{chunk-TDNBO3V7.js → chunk-Q7QPHZOV.js} +74 -74
- package/dist/{chunk-TDNBO3V7.js.map → chunk-Q7QPHZOV.js.map} +1 -1
- package/dist/{chunk-OW5LSEHU.mjs → chunk-QEACOJXX.mjs} +74 -74
- package/dist/chunk-QEACOJXX.mjs.map +1 -0
- package/dist/{chunk-N5GQIT7A.mjs → chunk-RMPXGEFL.mjs} +11 -10
- package/dist/chunk-RMPXGEFL.mjs.map +1 -0
- package/dist/{chunk-QSCWV47U.js → chunk-RPNMDGRA.js} +50 -50
- package/dist/chunk-RPNMDGRA.js.map +1 -0
- package/dist/{chunk-5TLKFOEL.mjs → chunk-RSCRIDMW.mjs} +275 -313
- package/dist/chunk-RSCRIDMW.mjs.map +1 -0
- package/dist/{chunk-XGAPZT4J.js → chunk-RUZPOHJW.js} +48 -47
- package/dist/chunk-RUZPOHJW.js.map +1 -0
- package/dist/{chunk-ULKZGM2T.js → chunk-RWZ2PLMQ.js} +177 -177
- package/dist/chunk-RWZ2PLMQ.js.map +1 -0
- package/dist/{chunk-UVFWKDRO.mjs → chunk-SCGICCQM.mjs} +15 -15
- package/dist/chunk-SCGICCQM.mjs.map +1 -0
- package/dist/{chunk-EDI46QA7.mjs → chunk-TRNDFSM6.mjs} +274 -324
- package/dist/chunk-TRNDFSM6.mjs.map +1 -0
- package/dist/{chunk-LRNVB7MO.js → chunk-ULSG4JLR.js} +6 -6
- package/dist/{chunk-LRNVB7MO.js.map → chunk-ULSG4JLR.js.map} +1 -1
- package/dist/{chunk-MFF37C24.js → chunk-UPWJRCAD.js} +445 -483
- package/dist/chunk-UPWJRCAD.js.map +1 -0
- package/dist/{chunk-RBH723MG.mjs → chunk-UUTTS3VV.mjs} +45 -45
- package/dist/chunk-UUTTS3VV.mjs.map +1 -0
- package/dist/{chunk-MYHBXIO2.js → chunk-VCL5LDS5.js} +42 -41
- package/dist/chunk-VCL5LDS5.js.map +1 -0
- package/dist/{chunk-PLTLRL2V.mjs → chunk-VPRAESA7.mjs} +3 -3
- package/dist/{chunk-PLTLRL2V.mjs.map → chunk-VPRAESA7.mjs.map} +1 -1
- package/dist/{chunk-HTODLUKG.js → chunk-VWZ53TE2.js} +12 -12
- package/dist/{chunk-HTODLUKG.js.map → chunk-VWZ53TE2.js.map} +1 -1
- package/dist/{chunk-3VYD7QL2.mjs → chunk-WX44DAQD.mjs} +9 -9
- package/dist/chunk-WX44DAQD.mjs.map +1 -0
- package/dist/{chunk-DJ33CSGJ.mjs → chunk-XYMHIZ3K.mjs} +5 -33
- package/dist/chunk-XYMHIZ3K.mjs.map +1 -0
- package/dist/{chunk-YXN2K77G.js → chunk-Y5VN4SPH.js} +26 -3
- package/dist/chunk-Y5VN4SPH.js.map +1 -0
- package/dist/{chunk-NQGLSM46.mjs → chunk-Y65X2NHF.mjs} +4 -4
- package/dist/{chunk-NQGLSM46.mjs.map → chunk-Y65X2NHF.mjs.map} +1 -1
- package/dist/{chunk-YYNGXKUE.mjs → chunk-YHD6SJIN.mjs} +15 -15
- package/dist/{chunk-YYNGXKUE.mjs.map → chunk-YHD6SJIN.mjs.map} +1 -1
- package/dist/{chunk-7VJ7CMMT.mjs → chunk-ZEFNBGYI.mjs} +26 -3
- package/dist/chunk-ZEFNBGYI.mjs.map +1 -0
- package/dist/{chunk-WLNY3GVM.mjs → chunk-ZPV7X4ZE.mjs} +7 -7
- package/dist/{chunk-WLNY3GVM.mjs.map → chunk-ZPV7X4ZE.mjs.map} +1 -1
- package/dist/index.js +709 -709
- package/dist/index.mjs +3 -3
- package/dist/lib/i18n-context.d.mts +12 -4
- package/dist/lib/i18n-context.d.ts +12 -4
- package/dist/lib/i18n-context.js +6 -6
- package/dist/lib/i18n-context.mjs +1 -1
- package/dist/platform/admin/index.js +12 -12
- package/dist/platform/admin/index.mjs +6 -6
- package/dist/platform/agents-workspace.js +9 -9
- package/dist/platform/agents-workspace.mjs +8 -8
- 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 +7 -7
- package/dist/platform/billing/index.mjs +5 -5
- package/dist/platform/impersonation/index.js +5 -5
- package/dist/platform/impersonation/index.mjs +4 -4
- package/dist/platform/index.d.mts +1 -1
- package/dist/platform/index.d.ts +1 -1
- package/dist/platform/index.js +112 -112
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +30 -30
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/pages/index.d.mts +12 -2
- package/dist/platform/pages/index.d.ts +12 -2
- package/dist/platform/pages/index.js +451 -450
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +51 -50
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +9 -9
- package/dist/platform/settings/index.mjs +8 -8
- package/dist/platform/workflow-canvas-shell.js +7 -7
- package/dist/platform/workflow-canvas-shell.mjs +6 -6
- package/package.json +2 -1
- package/dist/chunk-3VYD7QL2.mjs.map +0 -1
- package/dist/chunk-5TLKFOEL.mjs.map +0 -1
- package/dist/chunk-7VJ7CMMT.mjs.map +0 -1
- package/dist/chunk-DJ33CSGJ.mjs.map +0 -1
- package/dist/chunk-EDI46QA7.mjs.map +0 -1
- package/dist/chunk-FKRIQYRG.js.map +0 -1
- package/dist/chunk-ID55ABBB.js.map +0 -1
- package/dist/chunk-MFF37C24.js.map +0 -1
- package/dist/chunk-MYHBXIO2.js.map +0 -1
- package/dist/chunk-N5GQIT7A.mjs.map +0 -1
- package/dist/chunk-NK4H3JWN.mjs.map +0 -1
- package/dist/chunk-OM5NNUD2.mjs.map +0 -1
- package/dist/chunk-OW5LSEHU.mjs.map +0 -1
- package/dist/chunk-P4RVGMZL.js.map +0 -1
- package/dist/chunk-QGLGQXJE.js.map +0 -1
- package/dist/chunk-QSCWV47U.js.map +0 -1
- package/dist/chunk-RBH723MG.mjs.map +0 -1
- package/dist/chunk-ULKZGM2T.js.map +0 -1
- package/dist/chunk-UVFWKDRO.mjs.map +0 -1
- package/dist/chunk-VYU2FYDE.js.map +0 -1
- package/dist/chunk-XGAPZT4J.js.map +0 -1
- package/dist/chunk-YXN2K77G.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { NodeRunningIndicator, WorkflowHandle, NodeCard, NodeCardHeader, NodeCardMeta, NodeInteractiveCard, NodeIconBubble, NodeCardBadge, NodeCardDeleteAction, Workspace, useModalStore, CATEGORY_COLORS, CATEGORY_PILL_COLORS, ICON_MAP, WorkflowCanvas, EXPERIMENTAL_NODE_TYPES, getEntityIcon, getEntityGradient, useWorkflowStore, LOGIC_ICON_MAP, LOGIC_NODE_GRADIENTS, getFrameworkMeta, getCompatibleModels, isModelCompatibleWithFramework, FRAMEWORK_META, isFrameworkCompatibleWithProviders } from './chunk-
|
|
3
|
-
import { FormInput, FormSelect, Avatar, ToggleSwitch, HeroBlock, GlassModal, SectionCard, FormTextarea, FormGrid, Input, DynamicIslandConfirm } from './chunk-
|
|
4
|
-
import { useTranslations } from './chunk-
|
|
5
|
-
import { Badge, Button } from './chunk-
|
|
2
|
+
import { NodeRunningIndicator, WorkflowHandle, NodeCard, NodeCardHeader, NodeCardMeta, NodeInteractiveCard, NodeIconBubble, NodeCardBadge, NodeCardDeleteAction, Workspace, useModalStore, CATEGORY_COLORS, CATEGORY_PILL_COLORS, ICON_MAP, WorkflowCanvas, EXPERIMENTAL_NODE_TYPES, getEntityIcon, getEntityGradient, useWorkflowStore, LOGIC_ICON_MAP, LOGIC_NODE_GRADIENTS, getFrameworkMeta, getCompatibleModels, isModelCompatibleWithFramework, FRAMEWORK_META, isFrameworkCompatibleWithProviders } from './chunk-TRNDFSM6.mjs';
|
|
3
|
+
import { FormInput, FormSelect, Avatar, ToggleSwitch, HeroBlock, GlassModal, SectionCard, FormTextarea, FormGrid, Input, DynamicIslandConfirm } from './chunk-QEACOJXX.mjs';
|
|
4
|
+
import { useTranslations } from './chunk-ZEFNBGYI.mjs';
|
|
5
|
+
import { Badge, Button, IconButton } from './chunk-O4RZCDP2.mjs';
|
|
6
6
|
import { getAgentTier, createDefaultLogicNodeConfig } from './chunk-G7JQ4OCE.mjs';
|
|
7
7
|
import { memo, useCallback, useMemo, useState, useEffect, useRef, Children } from 'react';
|
|
8
8
|
import { Position } from '@xyflow/react';
|
|
@@ -499,17 +499,17 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
499
499
|
}, [family, models, setSelectedModelId, setTemperature, onChanged]);
|
|
500
500
|
const currentFamilyEntry = family.find((entry) => selectedModelId.startsWith(entry.prefix)) ?? family[0];
|
|
501
501
|
const currentModelName = models.find((model) => model.id === selectedModelId)?.name ?? selectedModelId;
|
|
502
|
-
return /* @__PURE__ */ jsxs("div", { className: "mx-4 mt-4 overflow-hidden rounded-xl border border-
|
|
502
|
+
return /* @__PURE__ */ jsxs("div", { className: "mx-4 mt-4 overflow-hidden rounded-xl border border-slate-200/30 bg-white/40 dark:border-white/10 dark:bg-white/5", children: [
|
|
503
503
|
/* @__PURE__ */ jsxs("div", { className: "px-4 pt-3 pb-2", children: [
|
|
504
504
|
/* @__PURE__ */ jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
505
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-
|
|
505
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("agentDrawer.capabilityRating") }),
|
|
506
506
|
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-1", children: [
|
|
507
507
|
/* @__PURE__ */ jsx("span", { className: `text-lg font-bold tabular-nums ${tierInfo.color}`, children: elo }),
|
|
508
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-
|
|
508
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: "ELO" })
|
|
509
509
|
] })
|
|
510
510
|
] }),
|
|
511
511
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
512
|
-
/* @__PURE__ */ jsxs("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-
|
|
512
|
+
/* @__PURE__ */ jsxs("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-slate-200 dark:bg-slate-700", children: [
|
|
513
513
|
/* @__PURE__ */ jsx(
|
|
514
514
|
"div",
|
|
515
515
|
{
|
|
@@ -520,7 +520,7 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
520
520
|
[1200, 1600, 2e3].map((boundary) => /* @__PURE__ */ jsx(
|
|
521
521
|
"div",
|
|
522
522
|
{
|
|
523
|
-
className: "absolute top-0 h-full w-px bg-
|
|
523
|
+
className: "absolute top-0 h-full w-px bg-slate-400/40 dark:bg-slate-500/40",
|
|
524
524
|
style: { left: `${(boundary - 800) / (2400 - 800) * 100}%` }
|
|
525
525
|
},
|
|
526
526
|
boundary
|
|
@@ -540,12 +540,12 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
540
540
|
"aria-valuemax": 2400,
|
|
541
541
|
"aria-valuenow": elo,
|
|
542
542
|
"aria-valuetext": `${elo} ELO \u2014 ${t(`agentDrawer.tier${tierInfo.tierKey.charAt(0).toUpperCase()}${tierInfo.tierKey.slice(1)}`)}`,
|
|
543
|
-
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
543
|
+
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-lg dark:[&::-webkit-slider-thumb]:border-slate-900"
|
|
544
544
|
}
|
|
545
545
|
),
|
|
546
546
|
/* @__PURE__ */ jsx("style", { children: `input[type="range"]::-webkit-slider-thumb { background: ${elo < 1200 ? "#06b6d4" : elo < 1600 ? "#ec4899" : elo < 2e3 ? "#f59e0b" : "#10b981"}; box-shadow: 0 0 6px ${elo < 1200 ? "rgba(6,182,212,0.5)" : elo < 1600 ? "rgba(236,72,153,0.5)" : elo < 2e3 ? "rgba(245,158,11,0.5)" : "rgba(16,185,129,0.5)"}; }` })
|
|
547
547
|
] }),
|
|
548
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-0.5 flex justify-between text-[8px] text-
|
|
548
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-0.5 flex justify-between text-[8px] text-slate-400 dark:text-slate-500", children: [
|
|
549
549
|
/* @__PURE__ */ jsx("span", { children: "800" }),
|
|
550
550
|
/* @__PURE__ */ jsx("span", { children: "1200" }),
|
|
551
551
|
/* @__PURE__ */ jsx("span", { children: "1600" }),
|
|
@@ -553,35 +553,35 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
553
553
|
/* @__PURE__ */ jsx("span", { children: "2400" })
|
|
554
554
|
] })
|
|
555
555
|
] }),
|
|
556
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-px border-t border-
|
|
557
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
558
|
-
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-
|
|
559
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-semibold text-
|
|
556
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-px border-t border-slate-200/30 bg-slate-200/30 dark:border-white/10 dark:bg-white/10", children: [
|
|
557
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
558
|
+
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.model") }),
|
|
559
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-semibold text-slate-900 dark:text-white", children: currentModelName })
|
|
560
560
|
] }),
|
|
561
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
562
|
-
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-
|
|
563
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-
|
|
561
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
562
|
+
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.maxTokens") }),
|
|
563
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: currentFamilyEntry.maxTokens.toLocaleString() })
|
|
564
564
|
] }),
|
|
565
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
566
|
-
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-
|
|
567
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-
|
|
565
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
566
|
+
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.context") }),
|
|
567
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: currentFamilyEntry.contextWindow })
|
|
568
568
|
] }),
|
|
569
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
570
|
-
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-
|
|
571
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-
|
|
569
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
570
|
+
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.temperature") }),
|
|
571
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: temperature.toFixed(2) })
|
|
572
572
|
] }),
|
|
573
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
574
|
-
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-
|
|
573
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
574
|
+
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.autonomy") }),
|
|
575
575
|
/* @__PURE__ */ jsx("p", { className: `text-xs font-semibold ${tierInfo.color}`, children: t(`agentDrawer.${tierInfo.autonomyKey}`) })
|
|
576
576
|
] }),
|
|
577
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-
|
|
578
|
-
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-
|
|
579
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-
|
|
577
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-white/60 px-3 py-2 dark:bg-slate-900/60", children: [
|
|
578
|
+
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.costPerTask") }),
|
|
579
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: tierInfo.costPerTask })
|
|
580
580
|
] })
|
|
581
581
|
] }),
|
|
582
|
-
/* @__PURE__ */ jsxs("div", { className: "border-t border-
|
|
582
|
+
/* @__PURE__ */ jsxs("div", { className: "border-t border-slate-200/30 bg-white/60 px-4 py-2.5 dark:border-white/10 dark:bg-slate-900/60", children: [
|
|
583
583
|
/* @__PURE__ */ jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
584
|
-
/* @__PURE__ */ jsx("span", { className: "text-[9px] text-
|
|
584
|
+
/* @__PURE__ */ jsx("span", { className: "text-[9px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.autonomyLevel") }),
|
|
585
585
|
/* @__PURE__ */ jsx("span", { className: `text-[10px] font-semibold ${tierInfo.color}`, children: t(`agentDrawer.${tierInfo.autonomyKey}`) })
|
|
586
586
|
] }),
|
|
587
587
|
/* @__PURE__ */ jsx("div", { className: "flex gap-1", children: [
|
|
@@ -596,11 +596,11 @@ function AgentCapabilityCard({ elo, setElo, models, selectedModelId, setSelected
|
|
|
596
596
|
onClick: () => handleAutonomyClick(level),
|
|
597
597
|
"aria-label": t(`agentDrawer.${labelKey}`),
|
|
598
598
|
"aria-pressed": level <= tierInfo.autonomyPercent,
|
|
599
|
-
className: `h-2 flex-1 rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
599
|
+
className: `h-2 flex-1 rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${level <= tierInfo.autonomyPercent ? `bg-gradient-to-r ${tierInfo.barColor} hover:opacity-80` : "bg-slate-200 hover:bg-slate-300 dark:bg-slate-700 dark:hover:bg-slate-600"}`
|
|
600
600
|
},
|
|
601
601
|
level
|
|
602
602
|
)) }),
|
|
603
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-1 flex justify-between text-[7px] text-
|
|
603
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-1 flex justify-between text-[7px] text-slate-400 dark:text-slate-500", children: [
|
|
604
604
|
/* @__PURE__ */ jsx("span", { children: t("agentDrawer.autonomyLow") }),
|
|
605
605
|
/* @__PURE__ */ jsx("span", { children: t("agentDrawer.autonomyMedium") }),
|
|
606
606
|
/* @__PURE__ */ jsx("span", { children: t("agentDrawer.autonomyHigh") }),
|
|
@@ -625,7 +625,7 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
625
625
|
}, [selectedModelId, models, setSelectedFramework, setSelectedModelId, markDirty]);
|
|
626
626
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-5 p-4", children: [
|
|
627
627
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
628
|
-
/* @__PURE__ */ jsx("label", { className: "mb-2 block text-xs font-medium text-
|
|
628
|
+
/* @__PURE__ */ jsx("label", { className: "mb-2 block text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.framework") }),
|
|
629
629
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: frameworkKeys.map((key) => {
|
|
630
630
|
const meta = FRAMEWORK_META[key];
|
|
631
631
|
const isSelected = key === selectedFramework;
|
|
@@ -637,7 +637,7 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
637
637
|
type: "button",
|
|
638
638
|
onClick: () => handleFrameworkChange(key),
|
|
639
639
|
disabled: !isCompatibleWithProviders,
|
|
640
|
-
className: `inline-flex items-center gap-1.5 rounded-full px-3 py-1.5 text-[10px] font-semibold transition-all ${!isCompatibleWithProviders ? "cursor-not-allowed bg-
|
|
640
|
+
className: `inline-flex items-center gap-1.5 rounded-full px-3 py-1.5 text-[10px] font-semibold transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${!isCompatibleWithProviders ? "cursor-not-allowed bg-slate-100 text-slate-400 opacity-40 dark:bg-white/5 dark:text-slate-500" : isSelected ? `${meta.badgeColor} ring-1 ring-current/20` : "bg-slate-100 text-slate-500 hover:bg-slate-200 dark:bg-white/5 dark:text-slate-400 dark:hover:bg-white/10"}`,
|
|
641
641
|
title: !isCompatibleWithProviders ? t("agentDrawer.frameworkIncompatible") : void 0,
|
|
642
642
|
children: [
|
|
643
643
|
/* @__PURE__ */ jsx(meta.IconComponent, { className: "h-3.5 w-3.5" }),
|
|
@@ -650,9 +650,9 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
650
650
|
}) })
|
|
651
651
|
] }),
|
|
652
652
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
653
|
-
/* @__PURE__ */ jsxs("label", { className: "mb-2 block text-xs font-medium text-
|
|
653
|
+
/* @__PURE__ */ jsxs("label", { className: "mb-2 block text-xs font-medium text-slate-500 dark:text-slate-400", children: [
|
|
654
654
|
t("agentDrawer.model"),
|
|
655
|
-
compatibleModels.length < models.length && /* @__PURE__ */ jsxs("span", { className: "ml-1.5 text-[10px] font-normal text-
|
|
655
|
+
compatibleModels.length < models.length && /* @__PURE__ */ jsxs("span", { className: "ml-1.5 text-[10px] font-normal text-slate-400 dark:text-slate-500", children: [
|
|
656
656
|
"(",
|
|
657
657
|
compatibleModels.length,
|
|
658
658
|
"/",
|
|
@@ -673,12 +673,12 @@ function ConfigTab({ models, t, selectedModelId, setSelectedModelId, selectedFra
|
|
|
673
673
|
setSelectedModelId(model.id);
|
|
674
674
|
markDirty();
|
|
675
675
|
},
|
|
676
|
-
className: `flex items-center gap-2.5 rounded-xl border px-3 py-2.5 text-left transition-all ${!isCompatible ? "cursor-not-allowed border-
|
|
676
|
+
className: `flex items-center gap-2.5 rounded-xl border px-3 py-2.5 text-left transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${!isCompatible ? "cursor-not-allowed border-slate-200/30 opacity-35 dark:border-white/5" : isSelected ? "border-indigo-500/50 bg-indigo-50/50 ring-1 ring-indigo-500/30 dark:border-indigo-400/40 dark:bg-indigo-500/10" : "border-slate-200/50 bg-white/40 backdrop-blur-sm hover:border-slate-300 dark:border-white/10 dark:bg-white/[0.04] dark:hover:border-white/20"}`,
|
|
677
677
|
children: [
|
|
678
|
-
/* @__PURE__ */ jsx(IconComponent, { className: `h-5 w-5 flex-shrink-0 ${isSelected && isCompatible ? color : "text-
|
|
678
|
+
/* @__PURE__ */ jsx(IconComponent, { className: `h-5 w-5 flex-shrink-0 ${isSelected && isCompatible ? color : "text-slate-400 dark:text-slate-500"}` }),
|
|
679
679
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
680
|
-
/* @__PURE__ */ jsx("p", { className: `truncate text-xs font-semibold ${isSelected && isCompatible ? "text-
|
|
681
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-
|
|
680
|
+
/* @__PURE__ */ jsx("p", { className: `truncate text-xs font-semibold ${isSelected && isCompatible ? "text-slate-900 dark:text-white" : "text-slate-600 dark:text-slate-300"}`, children: model.name }),
|
|
681
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: providerLabel })
|
|
682
682
|
] })
|
|
683
683
|
]
|
|
684
684
|
},
|
|
@@ -714,11 +714,11 @@ function PromptTab({
|
|
|
714
714
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-5 p-4", children: [
|
|
715
715
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
716
716
|
/* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
717
|
-
/* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-
|
|
718
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold tabular-nums text-
|
|
717
|
+
/* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.temperature") }),
|
|
718
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold tabular-nums text-slate-900 dark:text-white", children: temperature.toFixed(2) })
|
|
719
719
|
] }),
|
|
720
720
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
721
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-
|
|
721
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-slate-200 dark:bg-slate-700", children: /* @__PURE__ */ jsx(
|
|
722
722
|
"div",
|
|
723
723
|
{
|
|
724
724
|
className: "h-full rounded-full transition-all duration-300 ease-out",
|
|
@@ -737,21 +737,21 @@ function PromptTab({
|
|
|
737
737
|
"aria-label": t("agentDrawer.temperature"),
|
|
738
738
|
"aria-valuenow": temperature,
|
|
739
739
|
"aria-valuetext": `${temperature.toFixed(2)} \u2014 ${isPrecise ? t("agentDrawer.precise") : isBalanced ? t("agentDrawer.balanced") : t("agentDrawer.creative")}`,
|
|
740
|
-
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
740
|
+
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 [&::-webkit-slider-thumb]:h-5 [&::-webkit-slider-thumb]:w-5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-lg dark:[&::-webkit-slider-thumb]:border-slate-900"
|
|
741
741
|
}
|
|
742
742
|
),
|
|
743
743
|
/* @__PURE__ */ jsx("style", { children: `input[type="range"]::-webkit-slider-thumb { background: ${isPrecise ? "#3b82f6" : isBalanced ? "#8b5cf6" : "#ec4899"}; box-shadow: 0 0 8px ${isPrecise ? "rgba(59,130,246,0.5)" : isBalanced ? "rgba(139,92,246,0.5)" : "rgba(236,72,153,0.5)"}; }` })
|
|
744
744
|
] }),
|
|
745
745
|
/* @__PURE__ */ jsxs("div", { className: "mt-1 flex items-center justify-between", children: [
|
|
746
|
-
/* @__PURE__ */ jsx("span", { className: `text-[10px] font-medium transition-colors ${isPrecise ? "text-blue-500" : "text-
|
|
747
|
-
/* @__PURE__ */ jsx("span", { className: `text-[10px] font-medium transition-colors ${isBalanced ? "text-purple-500" : "text-
|
|
748
|
-
/* @__PURE__ */ jsx("span", { className: `text-[10px] font-medium transition-colors ${isCreative ? "text-pink-500" : "text-
|
|
746
|
+
/* @__PURE__ */ jsx("span", { className: `text-[10px] font-medium transition-colors ${isPrecise ? "text-blue-500" : "text-slate-400 dark:text-slate-500"}`, children: t("agentDrawer.precise") }),
|
|
747
|
+
/* @__PURE__ */ jsx("span", { className: `text-[10px] font-medium transition-colors ${isBalanced ? "text-purple-500" : "text-slate-400 dark:text-slate-500"}`, children: t("agentDrawer.balanced") }),
|
|
748
|
+
/* @__PURE__ */ jsx("span", { className: `text-[10px] font-medium transition-colors ${isCreative ? "text-pink-500" : "text-slate-400 dark:text-slate-500"}`, children: t("agentDrawer.creative") })
|
|
749
749
|
] })
|
|
750
750
|
] }),
|
|
751
751
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
752
752
|
/* @__PURE__ */ jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
753
|
-
/* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-
|
|
754
|
-
/* @__PURE__ */ jsxs("span", { className: "text-[10px] text-
|
|
753
|
+
/* @__PURE__ */ jsx("label", { className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.systemPrompt") }),
|
|
754
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
755
755
|
promptText.length,
|
|
756
756
|
" chars"
|
|
757
757
|
] })
|
|
@@ -762,14 +762,14 @@ function PromptTab({
|
|
|
762
762
|
value: promptText,
|
|
763
763
|
onChange: handlePromptChange,
|
|
764
764
|
rows: 12,
|
|
765
|
-
className: "w-full resize-y rounded-lg
|
|
765
|
+
className: "liquid-surface w-full resize-y rounded-lg px-3 py-2.5 font-mono text-xs leading-relaxed text-slate-700 outline-none transition-colors placeholder:text-slate-400 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-300 dark:placeholder:text-slate-500",
|
|
766
766
|
placeholder: t("agentDrawer.systemPromptPlaceholder")
|
|
767
767
|
}
|
|
768
768
|
)
|
|
769
769
|
] }),
|
|
770
770
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
771
|
-
/* @__PURE__ */ jsx("label", { className: "mb-1 block text-xs font-medium text-
|
|
772
|
-
/* @__PURE__ */ jsx("p", { className: "mb-2 text-[11px] text-
|
|
771
|
+
/* @__PURE__ */ jsx("label", { className: "mb-1 block text-xs font-medium text-slate-500 dark:text-slate-400", children: t("agentDrawer.outputSchema", { _: "Output schema (optional)" }) }),
|
|
772
|
+
/* @__PURE__ */ jsx("p", { className: "mb-2 text-[11px] text-slate-400 dark:text-slate-500", children: t("agentDrawer.outputSchemaHint", {
|
|
773
773
|
_: "Define the structured JSON the model must return. The engine parses + validates and exposes it under `output.parsed`. Invalid output fails the node."
|
|
774
774
|
}) }),
|
|
775
775
|
/* @__PURE__ */ jsx(
|
|
@@ -788,8 +788,8 @@ function PromptTab({
|
|
|
788
788
|
function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
789
789
|
if (agentTools.length === 0) {
|
|
790
790
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center px-4 py-12 text-center", children: [
|
|
791
|
-
/* @__PURE__ */ jsx(CommandLineIcon, { className: "mb-2 h-8 w-8 text-
|
|
792
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-
|
|
791
|
+
/* @__PURE__ */ jsx(CommandLineIcon, { className: "mb-2 h-8 w-8 text-slate-400 dark:text-slate-500" }),
|
|
792
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: t("agentDrawer.noToolsAvailable") })
|
|
793
793
|
] });
|
|
794
794
|
}
|
|
795
795
|
const sortedTools = [...agentTools].sort((a, b) => {
|
|
@@ -800,7 +800,7 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
800
800
|
return 0;
|
|
801
801
|
});
|
|
802
802
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-2 p-4", children: [
|
|
803
|
-
/* @__PURE__ */ jsx("p", { className: "mb-3 text-xs text-
|
|
803
|
+
/* @__PURE__ */ jsx("p", { className: "mb-3 text-xs text-slate-500 dark:text-slate-400", children: t("agentDrawer.toolsDescription") }),
|
|
804
804
|
sortedTools.map((tool) => {
|
|
805
805
|
const isEnabled = enabledToolIds.has(tool.agentToolId);
|
|
806
806
|
const isCompatible = !tool.compatibleFrameworks || tool.compatibleFrameworks.length === 0 || tool.compatibleFrameworks.includes(agentFramework);
|
|
@@ -809,26 +809,26 @@ function ToolsTab({ agentTools, enabledToolIds, onToggle, agentFramework, t }) {
|
|
|
809
809
|
{
|
|
810
810
|
type: "button",
|
|
811
811
|
onClick: () => onToggle(tool.agentToolId),
|
|
812
|
-
className: `flex w-full items-center gap-3 rounded-xl border px-4 py-3 text-left transition-all ${!isCompatible ? "border-
|
|
812
|
+
className: `flex w-full items-center gap-3 rounded-xl border px-4 py-3 text-left transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 ${!isCompatible ? "border-slate-200/30 opacity-40 dark:border-white/5" : isEnabled ? "border-amber-500/30 bg-amber-50/50 dark:border-amber-400/20 dark:bg-amber-500/5" : "border-slate-200/50 bg-white/40 backdrop-blur-sm hover:border-slate-300 dark:border-white/10 dark:bg-white/[0.04] dark:hover:border-white/20"}`,
|
|
813
813
|
disabled: !isCompatible,
|
|
814
814
|
children: [
|
|
815
|
-
/* @__PURE__ */ jsx("div", { className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg ${isEnabled ? "bg-gradient-to-br from-amber-400 to-orange-500" : "bg-
|
|
815
|
+
/* @__PURE__ */ jsx("div", { className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg ${isEnabled ? "bg-gradient-to-br from-amber-400 to-orange-500" : "bg-slate-200 dark:bg-slate-700"}`, children: /* @__PURE__ */ jsx(CommandLineIcon, { className: `h-4 w-4 ${isEnabled ? "text-white" : "text-slate-500 dark:text-slate-400"}` }) }),
|
|
816
816
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
817
817
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
818
|
-
/* @__PURE__ */ jsx("p", { className: `text-sm font-medium ${isEnabled ? "text-
|
|
819
|
-
!isCompatible && /* @__PURE__ */ jsx(
|
|
818
|
+
/* @__PURE__ */ jsx("p", { className: `text-sm font-medium ${isEnabled ? "text-slate-900 dark:text-white" : "text-slate-600 dark:text-slate-400"}`, children: tool.name }),
|
|
819
|
+
!isCompatible && /* @__PURE__ */ jsx(Badge, { color: "zinc", size: "xs", children: "incompatible" })
|
|
820
820
|
] }),
|
|
821
|
-
tool.description && /* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-
|
|
821
|
+
tool.description && /* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: tool.description }),
|
|
822
822
|
tool.compatibleFrameworks && tool.compatibleFrameworks.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-1 flex flex-wrap gap-0.5", children: tool.compatibleFrameworks.map((framework) => {
|
|
823
823
|
const meta = getFrameworkMeta(framework);
|
|
824
824
|
const isCurrentFw = framework === agentFramework;
|
|
825
|
-
return /* @__PURE__ */ jsxs("span", { className: `inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[8px] font-medium ${isCurrentFw ? meta.badgeColor : "bg-
|
|
825
|
+
return /* @__PURE__ */ jsxs("span", { className: `inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[8px] font-medium ${isCurrentFw ? meta.badgeColor : "bg-slate-100 text-slate-500 dark:bg-white/5 dark:text-slate-400"}`, children: [
|
|
826
826
|
/* @__PURE__ */ jsx(meta.IconComponent, { className: "h-2.5 w-2.5" }),
|
|
827
827
|
meta.label
|
|
828
828
|
] }, framework);
|
|
829
829
|
}) })
|
|
830
830
|
] }),
|
|
831
|
-
/* @__PURE__ */ jsx("div", { className: `flex h-5 w-5 shrink-0 items-center justify-center rounded-full transition-all ${isEnabled ? "bg-amber-500 text-white" : "border border-
|
|
831
|
+
/* @__PURE__ */ jsx("div", { className: `flex h-5 w-5 shrink-0 items-center justify-center rounded-full transition-all ${isEnabled ? "bg-amber-500 text-white" : "border border-slate-300 dark:border-slate-600"}`, children: isEnabled && /* @__PURE__ */ jsx(CheckIcon, { className: "h-3 w-3" }) }),
|
|
832
832
|
/* @__PURE__ */ jsx(
|
|
833
833
|
"div",
|
|
834
834
|
{
|
|
@@ -886,7 +886,7 @@ function EngineTab({
|
|
|
886
886
|
const configuredCompatible = compatibleProviders.filter((p) => p.configured);
|
|
887
887
|
const effectiveProvider = compatibleProviders.find((p) => p.id === selectedProviderId) ?? configuredCompatible[0] ?? compatibleProviders[0];
|
|
888
888
|
const frameworkMeta = getFrameworkMeta(selectedFramework);
|
|
889
|
-
const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-
|
|
889
|
+
const inputCard = "liquid-surface w-full rounded-lg px-3 py-1.5 text-sm text-slate-800 outline-none transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-200";
|
|
890
890
|
return /* @__PURE__ */ jsx("div", { className: "p-5", children: /* @__PURE__ */ jsxs("div", { className: "overflow-hidden rounded-2xl border border-indigo-500/20 bg-gradient-to-b from-indigo-500/[0.04] via-violet-500/[0.03] to-purple-500/[0.04] dark:border-indigo-400/20 dark:from-indigo-500/[0.10] dark:via-violet-500/[0.06] dark:to-purple-500/[0.08]", children: [
|
|
891
891
|
/* @__PURE__ */ jsx("div", { className: "px-4 pb-3 pt-4", children: /* @__PURE__ */ jsx(
|
|
892
892
|
AgentCapabilityCard,
|
|
@@ -914,9 +914,9 @@ function EngineTab({
|
|
|
914
914
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2", children: [
|
|
915
915
|
/* @__PURE__ */ jsx(CpuChipIcon, { className: "mt-0.5 h-5 w-5 text-indigo-500 dark:text-indigo-400" }),
|
|
916
916
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
917
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-
|
|
917
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: modelName }),
|
|
918
918
|
compatibleProviders.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-amber-600 dark:text-amber-400", children: t("agentDrawer.noProviderForFamily", { _: "Nenhum provedor configurado serve a fam\xEDlia " + family }) }) : configuredCompatible.length > 1 ? /* @__PURE__ */ jsxs("div", { className: "mt-1 flex items-center gap-1.5", children: [
|
|
919
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-
|
|
919
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-slate-500 dark:text-slate-400", children: t("agentDrawer.servedVia", { _: "via" }) }),
|
|
920
920
|
/* @__PURE__ */ jsx(
|
|
921
921
|
"select",
|
|
922
922
|
{
|
|
@@ -925,22 +925,17 @@ function EngineTab({
|
|
|
925
925
|
onSelectProvider(event.target.value);
|
|
926
926
|
markDirty();
|
|
927
927
|
},
|
|
928
|
-
|
|
928
|
+
"aria-label": t("agentDrawer.servedVia", { _: "via" }),
|
|
929
|
+
className: "liquid-surface rounded-md px-2 py-0.5 text-[10px] font-semibold text-slate-900 outline-none focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-white",
|
|
929
930
|
children: configuredCompatible.map((p) => /* @__PURE__ */ jsx("option", { value: p.id, children: p.name }, p.id))
|
|
930
931
|
}
|
|
931
932
|
),
|
|
932
|
-
effectiveProvider && /* @__PURE__ */
|
|
933
|
-
|
|
934
|
-
effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" })
|
|
935
|
-
] })
|
|
936
|
-
] }) : /* @__PURE__ */ jsxs("p", { className: "text-[10px] text-gray-500 dark:text-gray-400", children: [
|
|
933
|
+
effectiveProvider && /* @__PURE__ */ jsx(Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) })
|
|
934
|
+
] }) : /* @__PURE__ */ jsxs("p", { className: "text-[10px] text-slate-500 dark:text-slate-400", children: [
|
|
937
935
|
t("agentDrawer.servedVia", { _: "via" }),
|
|
938
936
|
" ",
|
|
939
937
|
effectiveProvider?.name ?? family,
|
|
940
|
-
effectiveProvider && /* @__PURE__ */
|
|
941
|
-
/* @__PURE__ */ jsx("span", { className: `h-1 w-1 rounded-full ${effectiveProvider.configured ? "bg-emerald-500" : "bg-amber-500"}` }),
|
|
942
|
-
effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" })
|
|
943
|
-
] })
|
|
938
|
+
effectiveProvider && /* @__PURE__ */ jsx("span", { className: "ml-2 inline-flex", children: /* @__PURE__ */ jsx(Badge, { color: effectiveProvider.configured ? "emerald" : "amber", size: "xs", children: effectiveProvider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }) })
|
|
944
939
|
] })
|
|
945
940
|
] })
|
|
946
941
|
] }),
|
|
@@ -950,13 +945,13 @@ function EngineTab({
|
|
|
950
945
|
] })
|
|
951
946
|
] }) }),
|
|
952
947
|
/* @__PURE__ */ jsxs("details", { className: "group border-t border-indigo-500/15 bg-white/30 px-4 py-2.5 dark:border-indigo-400/15 dark:bg-white/[0.02]", children: [
|
|
953
|
-
/* @__PURE__ */ jsxs("summary", { className: "flex cursor-pointer items-center gap-2 text-[10px] font-semibold uppercase tracking-wider text-
|
|
948
|
+
/* @__PURE__ */ jsxs("summary", { className: "flex cursor-pointer items-center gap-2 text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: [
|
|
954
949
|
/* @__PURE__ */ jsx(Cog6ToothIcon, { className: "h-3 w-3" }),
|
|
955
950
|
/* @__PURE__ */ jsx("span", { children: t("agentDrawer.overrideDerivation", { _: "Override \xB7 ajustes avan\xE7ados" }) }),
|
|
956
|
-
/* @__PURE__ */ jsx("span", { className: "ml-auto font-normal text-
|
|
957
|
-
/* @__PURE__ */ jsx("span", { className: "ml-auto hidden font-normal text-
|
|
951
|
+
/* @__PURE__ */ jsx("span", { className: "ml-auto font-normal text-slate-400 group-open:hidden", children: "\u25BE" }),
|
|
952
|
+
/* @__PURE__ */ jsx("span", { className: "ml-auto hidden font-normal text-slate-400 group-open:inline", children: "\u25B4" })
|
|
958
953
|
] }),
|
|
959
|
-
/* @__PURE__ */ jsx("p", { className: "mt-1 text-[10px] italic text-
|
|
954
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 text-[10px] italic text-slate-400 dark:text-slate-500", children: t("agentDrawer.overrideHint", { _: "Mude framework, modelo manual ou tokens s\xF3 se a deriva\xE7\xE3o por ELO n\xE3o atender." }) }),
|
|
960
955
|
/* @__PURE__ */ jsxs("div", { className: "mt-3 space-y-4", children: [
|
|
961
956
|
/* @__PURE__ */ jsx(
|
|
962
957
|
ConfigTab,
|
|
@@ -972,13 +967,13 @@ function EngineTab({
|
|
|
972
967
|
}
|
|
973
968
|
),
|
|
974
969
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
975
|
-
/* @__PURE__ */ jsx("p", { className: "mb-2 text-[10px] font-semibold uppercase tracking-wider text-
|
|
970
|
+
/* @__PURE__ */ jsx("p", { className: "mb-2 text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("agentDrawer.generationParams", { _: "Par\xE2metros de gera\xE7\xE3o" }) }),
|
|
976
971
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", children: [
|
|
977
972
|
{ key: "max", labelKey: "agentDrawer.maxOutputTokens", label: "Max output", value: maxOutputTokens, setter: setMaxOutputTokens, step: 1, min: 1, max: 32768 },
|
|
978
973
|
{ key: "topP", labelKey: "agentDrawer.topP", label: "Top-p", value: topP, setter: setTopP, step: 0.05, min: 0, max: 1 },
|
|
979
974
|
{ key: "topK", labelKey: "agentDrawer.topK", label: "Top-k", value: topK, setter: setTopK, step: 1, min: 0, max: 500 }
|
|
980
975
|
].map((field) => /* @__PURE__ */ jsxs("div", { className: `${inputCard} flex flex-col items-center !py-2`, children: [
|
|
981
|
-
/* @__PURE__ */ jsx("span", { className: "text-[8px] font-semibold uppercase tracking-wider text-
|
|
976
|
+
/* @__PURE__ */ jsx("span", { className: "text-[8px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t(field.labelKey, { _: field.label }) }),
|
|
982
977
|
/* @__PURE__ */ jsx(
|
|
983
978
|
"input",
|
|
984
979
|
{
|
|
@@ -991,14 +986,14 @@ function EngineTab({
|
|
|
991
986
|
field.setter(Number(event.target.value) || 0);
|
|
992
987
|
markDirty();
|
|
993
988
|
},
|
|
994
|
-
className: "w-full bg-transparent text-center text-sm font-semibold tabular-nums text-
|
|
989
|
+
className: "w-full bg-transparent text-center text-sm font-semibold tabular-nums text-slate-900 outline-none dark:text-white"
|
|
995
990
|
}
|
|
996
991
|
)
|
|
997
992
|
] }, field.key)) })
|
|
998
993
|
] }),
|
|
999
994
|
modelProviders.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
1000
995
|
/* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
1001
|
-
/* @__PURE__ */ jsx("p", { className: "text-[10px] font-semibold uppercase tracking-wider text-
|
|
996
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("agentDrawer.providerCredentials", { _: "Credenciais do provedor" }) }),
|
|
1002
997
|
/* @__PURE__ */ jsx(
|
|
1003
998
|
"a",
|
|
1004
999
|
{
|
|
@@ -1011,17 +1006,17 @@ function EngineTab({
|
|
|
1011
1006
|
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: modelProviders.map((provider) => /* @__PURE__ */ jsxs(
|
|
1012
1007
|
"div",
|
|
1013
1008
|
{
|
|
1014
|
-
className: "flex items-center gap-2 rounded-lg border border-
|
|
1009
|
+
className: "flex items-center gap-2 rounded-lg border border-slate-200/50 bg-white/40 px-3 py-1.5 dark:border-white/10 dark:bg-white/[0.04]",
|
|
1015
1010
|
children: [
|
|
1016
|
-
/* @__PURE__ */ jsx(KeyIcon, { className: "h-3 w-3 shrink-0 text-
|
|
1017
|
-
/* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold text-
|
|
1018
|
-
/* @__PURE__ */ jsx(
|
|
1019
|
-
provider.apiKeyMasked && /* @__PURE__ */ jsx("span", { className: "ml-auto truncate font-mono text-[9px] text-
|
|
1011
|
+
/* @__PURE__ */ jsx(KeyIcon, { className: "h-3 w-3 shrink-0 text-slate-500 dark:text-slate-400" }),
|
|
1012
|
+
/* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold text-slate-900 dark:text-white", children: provider.name }),
|
|
1013
|
+
/* @__PURE__ */ jsx(Badge, { color: provider.configured ? "emerald" : "amber", size: "xs", children: provider.configured ? t("agentDrawer.configured", { _: "connected" }) : t("agentDrawer.setup", { _: "setup" }) }),
|
|
1014
|
+
provider.apiKeyMasked && /* @__PURE__ */ jsx("span", { className: "ml-auto truncate font-mono text-[9px] text-slate-400 dark:text-slate-500", title: provider.credentialRef, children: provider.apiKeyMasked })
|
|
1020
1015
|
]
|
|
1021
1016
|
},
|
|
1022
1017
|
provider.id
|
|
1023
1018
|
)) }),
|
|
1024
|
-
/* @__PURE__ */ jsx("p", { className: "mt-2 text-[10px] text-
|
|
1019
|
+
/* @__PURE__ */ jsx("p", { className: "mt-2 text-[10px] text-slate-400 dark:text-slate-500", children: selectedProviderId ? "" : t("agentDrawer.providerHint", { _: "Credenciais s\xE3o configuradas no n\xEDvel da conta. Aqui voc\xEA s\xF3 confere o que est\xE1 conectado." }) })
|
|
1025
1020
|
] })
|
|
1026
1021
|
] })
|
|
1027
1022
|
] })
|
|
@@ -1175,7 +1170,7 @@ function AgentModal({ onSaved, onPersist }) {
|
|
|
1175
1170
|
if (!agent) return null;
|
|
1176
1171
|
const sections = [];
|
|
1177
1172
|
const effectiveAvatarUrl = avatarUrl || agent.avatar;
|
|
1178
|
-
const fieldCard = "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-xs text-
|
|
1173
|
+
const fieldCard = "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-xs text-slate-800 outline-none transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-slate-200";
|
|
1179
1174
|
const fieldLabel = "text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400";
|
|
1180
1175
|
const avatarInitial = (displayName || agent.name).charAt(0).toUpperCase();
|
|
1181
1176
|
const avatarNode = /* @__PURE__ */ jsx(
|
|
@@ -1449,9 +1444,9 @@ function ConfigSection({ title, icon: Icon, defaultOpen = true, children }) {
|
|
|
1449
1444
|
"aria-expanded": open,
|
|
1450
1445
|
className: "flex w-full items-center gap-2 px-4 py-2.5 text-left hover:bg-white/5",
|
|
1451
1446
|
children: [
|
|
1452
|
-
open ? /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-3 w-3 text-
|
|
1453
|
-
/* @__PURE__ */ jsx(Icon, { className: "h-3 w-3 text-
|
|
1454
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-
|
|
1447
|
+
open ? /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-3 w-3 text-slate-400" }) : /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-3 w-3 text-slate-400" }),
|
|
1448
|
+
/* @__PURE__ */ jsx(Icon, { className: "h-3 w-3 text-slate-400" }),
|
|
1449
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: title })
|
|
1455
1450
|
]
|
|
1456
1451
|
}
|
|
1457
1452
|
),
|
|
@@ -1518,22 +1513,15 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1518
1513
|
const footer = /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1519
1514
|
/* @__PURE__ */ jsx("div", { role: "status", "aria-live": "polite", className: "text-xs", children: dirty ? /* @__PURE__ */ jsx("span", { className: "text-amber-500 dark:text-amber-400", children: t("subworkflowDrawer.unsavedChanges") }) : /* @__PURE__ */ jsx("span", { className: "text-emerald-500 dark:text-emerald-400", children: t("subworkflowDrawer.saved") }) }),
|
|
1520
1515
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1516
|
+
/* @__PURE__ */ jsx(Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("subworkflowDrawer.cancel") }),
|
|
1521
1517
|
/* @__PURE__ */ jsx(
|
|
1522
|
-
|
|
1523
|
-
{
|
|
1524
|
-
type: "button",
|
|
1525
|
-
onClick: closeModal,
|
|
1526
|
-
className: "rounded-lg border border-gray-200/50 px-4 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100/50 dark:border-white/10 dark:text-gray-300 dark:hover:bg-white/5",
|
|
1527
|
-
children: t("subworkflowDrawer.cancel")
|
|
1528
|
-
}
|
|
1529
|
-
),
|
|
1530
|
-
/* @__PURE__ */ jsx(
|
|
1531
|
-
"button",
|
|
1518
|
+
Button,
|
|
1532
1519
|
{
|
|
1533
1520
|
type: "button",
|
|
1521
|
+
color: "ios-teal",
|
|
1522
|
+
size: "sm",
|
|
1534
1523
|
onClick: handleSave,
|
|
1535
|
-
disabled: isCreateMode && !name.trim(),
|
|
1536
|
-
className: `rounded-lg px-4 py-2 text-xs font-semibold text-white shadow-sm transition-all ${dirty ? "bg-gradient-to-r from-teal-500 to-cyan-500 hover:from-teal-600 hover:to-cyan-600" : "cursor-not-allowed bg-gray-300 dark:bg-gray-700"}`,
|
|
1524
|
+
disabled: isCreateMode && !name.trim() || !dirty,
|
|
1537
1525
|
children: isCreateMode ? t("subworkflowDrawer.create") : t("subworkflowDrawer.save")
|
|
1538
1526
|
}
|
|
1539
1527
|
)
|
|
@@ -1555,7 +1543,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1555
1543
|
children: /* @__PURE__ */ jsxs("div", { className: "flex h-[80vh] min-h-[600px]", children: [
|
|
1556
1544
|
/* @__PURE__ */ jsxs("div", { className: "flex w-72 flex-shrink-0 flex-col overflow-y-auto border-r border-white/10", children: [
|
|
1557
1545
|
isCreateMode ? /* @__PURE__ */ jsxs("div", { className: "border-b border-white/10 bg-gradient-to-br from-teal-500/15 via-cyan-500/8 to-transparent px-4 py-4 dark:from-teal-500/8 dark:via-cyan-500/4", children: [
|
|
1558
|
-
/* @__PURE__ */ jsx("label", { className: "mb-1 block text-[10px] font-semibold uppercase tracking-wider text-
|
|
1546
|
+
/* @__PURE__ */ jsx("label", { className: "mb-1 block text-[10px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("subworkflowDrawer.name") }),
|
|
1559
1547
|
/* @__PURE__ */ jsx(
|
|
1560
1548
|
"input",
|
|
1561
1549
|
{
|
|
@@ -1564,7 +1552,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1564
1552
|
onChange: (event) => setName(event.target.value),
|
|
1565
1553
|
placeholder: t("subworkflowDrawer.namePlaceholder"),
|
|
1566
1554
|
autoFocus: true,
|
|
1567
|
-
className: "w-full rounded-lg border border-
|
|
1555
|
+
className: "w-full rounded-lg bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm border border-slate-200/50 dark:border-white/10 px-3 py-2 text-sm font-medium text-slate-900 outline-none placeholder:text-slate-400 focus:border-teal-300/50 focus:ring-1 focus:ring-teal-300/30 dark:text-white dark:placeholder:text-slate-500"
|
|
1568
1556
|
}
|
|
1569
1557
|
),
|
|
1570
1558
|
/* @__PURE__ */ jsx("div", { className: "mt-3 flex flex-wrap gap-1", children: ["external", "market", "data", "communication", "analytics"].map((cat) => /* @__PURE__ */ jsx(
|
|
@@ -1572,7 +1560,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1572
1560
|
{
|
|
1573
1561
|
type: "button",
|
|
1574
1562
|
onClick: () => setCategory(cat),
|
|
1575
|
-
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${CATEGORY_PILL_COLORS[cat] ?? CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-
|
|
1563
|
+
className: `rounded-full px-2 py-1 text-[9px] font-semibold transition-all ${cat === category ? `${CATEGORY_PILL_COLORS[cat] ?? CATEGORY_PILL_COLORS.external} ring-1 ring-current/20` : "bg-white/30 text-slate-500 hover:bg-white/50 dark:bg-white/5 dark:text-slate-400"}`,
|
|
1576
1564
|
children: cat
|
|
1577
1565
|
},
|
|
1578
1566
|
cat
|
|
@@ -1580,7 +1568,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1580
1568
|
] }) : /* @__PURE__ */ jsx("div", { className: "border-b border-white/10 bg-gradient-to-br from-teal-500/15 via-cyan-500/8 to-transparent px-4 py-4 dark:from-teal-500/8 dark:via-cyan-500/4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1581
1569
|
/* @__PURE__ */ jsx("div", { className: `flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-gradient-to-br ${gradient} shadow-lg`, children: /* @__PURE__ */ jsx(IconComponent, { className: "h-5 w-5 text-white" }) }),
|
|
1582
1570
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
1583
|
-
/* @__PURE__ */ jsx("h3", { className: "truncate text-sm font-bold text-
|
|
1571
|
+
/* @__PURE__ */ jsx("h3", { className: "truncate text-sm font-bold text-slate-900 dark:text-white", children: name }),
|
|
1584
1572
|
/* @__PURE__ */ jsxs("div", { className: "mt-1 flex flex-wrap gap-1", children: [
|
|
1585
1573
|
/* @__PURE__ */ jsx("span", { className: "inline-flex items-center rounded-full bg-teal-100 px-1.5 py-0.5 text-[8px] font-semibold text-teal-700 dark:bg-teal-400/15 dark:text-teal-400", children: t("subworkflowDrawer.subworkflow") }),
|
|
1586
1574
|
/* @__PURE__ */ jsx("span", { className: `inline-flex items-center rounded-full px-1.5 py-0.5 text-[8px] font-medium ${categoryPill}`, children: category })
|
|
@@ -1592,7 +1580,7 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1592
1580
|
type: "button",
|
|
1593
1581
|
onClick: () => onMaximize(tool.toolId),
|
|
1594
1582
|
title: t("subworkflowDrawer.openFullEditor"),
|
|
1595
|
-
className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-
|
|
1583
|
+
className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-slate-400 transition-colors hover:bg-white/10 hover:text-teal-500 dark:hover:text-teal-400",
|
|
1596
1584
|
children: /* @__PURE__ */ jsx(ArrowsPointingOutIcon, { className: "h-4 w-4" })
|
|
1597
1585
|
}
|
|
1598
1586
|
)
|
|
@@ -1604,19 +1592,19 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1604
1592
|
onChange: (event) => setDescription(event.target.value),
|
|
1605
1593
|
rows: 2,
|
|
1606
1594
|
placeholder: t("subworkflowDrawer.descriptionPlaceholder"),
|
|
1607
|
-
className: "w-full resize-none rounded-lg border border-
|
|
1595
|
+
className: "w-full resize-none rounded-lg bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm border border-slate-200/50 dark:border-white/10 px-2.5 py-2 text-[11px] leading-relaxed text-slate-700 outline-none placeholder:text-slate-400 focus:border-teal-300/50 dark:text-slate-300 dark:placeholder:text-slate-500"
|
|
1608
1596
|
}
|
|
1609
1597
|
) }),
|
|
1610
|
-
/* @__PURE__ */ jsx(ConfigSection, { title: t("subworkflowDrawer.inputVariables"), icon: ArrowsPointingInIcon, children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: inputVariables.length > 0 ? inputVariables.map((variable) => /* @__PURE__ */ jsx(VariableChip, { name: variable.name, type: variable.type }, variable.name)) : /* @__PURE__ */ jsx("span", { className: "text-[10px] text-
|
|
1611
|
-
/* @__PURE__ */ jsx(ConfigSection, { title: t("subworkflowDrawer.outputVariables"), icon: ArrowsPointingOutIcon, children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: outputVariables.length > 0 ? outputVariables.map((variable) => /* @__PURE__ */ jsx(OutputChip, { name: variable.name, type: variable.type }, variable.name)) : /* @__PURE__ */ jsx("span", { className: "text-[10px] text-
|
|
1598
|
+
/* @__PURE__ */ jsx(ConfigSection, { title: t("subworkflowDrawer.inputVariables"), icon: ArrowsPointingInIcon, children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: inputVariables.length > 0 ? inputVariables.map((variable) => /* @__PURE__ */ jsx(VariableChip, { name: variable.name, type: variable.type }, variable.name)) : /* @__PURE__ */ jsx("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("subworkflowDrawer.noVariables") }) }) }),
|
|
1599
|
+
/* @__PURE__ */ jsx(ConfigSection, { title: t("subworkflowDrawer.outputVariables"), icon: ArrowsPointingOutIcon, children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: outputVariables.length > 0 ? outputVariables.map((variable) => /* @__PURE__ */ jsx(OutputChip, { name: variable.name, type: variable.type }, variable.name)) : /* @__PURE__ */ jsx("span", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("subworkflowDrawer.noVariables") }) }) }),
|
|
1612
1600
|
/* @__PURE__ */ jsxs(ConfigSection, { title: t("subworkflowDrawer.executionSettings"), icon: BoltIcon, defaultOpen: false, children: [
|
|
1613
1601
|
/* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
|
|
1614
1602
|
/* @__PURE__ */ jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
1615
|
-
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-[10px] text-
|
|
1603
|
+
/* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-[10px] text-slate-600 dark:text-slate-400", children: [
|
|
1616
1604
|
/* @__PURE__ */ jsx(ClockIcon, { className: "h-3 w-3" }),
|
|
1617
1605
|
t("subworkflowDrawer.timeout")
|
|
1618
1606
|
] }),
|
|
1619
|
-
/* @__PURE__ */ jsxs("span", { className: "text-[10px] font-bold tabular-nums text-
|
|
1607
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[10px] font-bold tabular-nums text-slate-900 dark:text-white", children: [
|
|
1620
1608
|
(timeoutMs / 1e3).toFixed(0),
|
|
1621
1609
|
"s"
|
|
1622
1610
|
] })
|
|
@@ -1635,21 +1623,21 @@ function SubworkflowModal({ onSaved, onMaximize }) {
|
|
|
1635
1623
|
"aria-valuemax": 30,
|
|
1636
1624
|
"aria-valuenow": timeoutMs / 1e3,
|
|
1637
1625
|
"aria-valuetext": `${(timeoutMs / 1e3).toFixed(0)} seconds`,
|
|
1638
|
-
className: "h-3 w-full cursor-pointer appearance-none rounded-full bg-
|
|
1626
|
+
className: "h-3 w-full cursor-pointer appearance-none rounded-full bg-slate-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-teal-500 dark:bg-slate-700 [&::-webkit-slider-thumb]:h-3 [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-teal-500"
|
|
1639
1627
|
}
|
|
1640
1628
|
)
|
|
1641
1629
|
] }),
|
|
1642
1630
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
1643
1631
|
/* @__PURE__ */ jsxs("div", { className: "mb-1 flex items-center justify-between", children: [
|
|
1644
|
-
/* @__PURE__ */ jsx("label", { className: "text-[10px] text-
|
|
1645
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold tabular-nums text-
|
|
1632
|
+
/* @__PURE__ */ jsx("label", { className: "text-[10px] text-slate-600 dark:text-slate-400", children: t("subworkflowDrawer.retries") }),
|
|
1633
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold tabular-nums text-slate-900 dark:text-white", children: retryCount })
|
|
1646
1634
|
] }),
|
|
1647
1635
|
/* @__PURE__ */ jsx("div", { className: "flex gap-1", children: [0, 1, 2, 3].map((count) => /* @__PURE__ */ jsx(
|
|
1648
1636
|
"button",
|
|
1649
1637
|
{
|
|
1650
1638
|
type: "button",
|
|
1651
1639
|
onClick: () => setRetryCount(count),
|
|
1652
|
-
className: `flex-1 rounded py-1 text-[10px] font-medium transition-all ${count === retryCount ? "bg-teal-500 text-white" : "bg-
|
|
1640
|
+
className: `flex-1 rounded py-1 text-[10px] font-medium transition-all ${count === retryCount ? "bg-teal-500 text-white" : "bg-white/40 text-slate-500 dark:bg-white/5 dark:text-slate-400"}`,
|
|
1653
1641
|
children: count
|
|
1654
1642
|
},
|
|
1655
1643
|
count
|
|
@@ -1728,15 +1716,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1728
1716
|
}
|
|
1729
1717
|
};
|
|
1730
1718
|
const footer = /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2", children: [
|
|
1731
|
-
/* @__PURE__ */ jsx(
|
|
1732
|
-
"button",
|
|
1733
|
-
{
|
|
1734
|
-
type: "button",
|
|
1735
|
-
onClick: closeModal,
|
|
1736
|
-
className: "rounded-lg border border-gray-200/50 px-4 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100/50 dark:border-white/10 dark:text-gray-300 dark:hover:bg-white/5",
|
|
1737
|
-
children: t("cancel")
|
|
1738
|
-
}
|
|
1739
|
-
),
|
|
1719
|
+
/* @__PURE__ */ jsx(Button, { type: "button", outline: true, size: "sm", onClick: closeModal, children: t("cancel") }),
|
|
1740
1720
|
/* @__PURE__ */ jsxs(
|
|
1741
1721
|
Button,
|
|
1742
1722
|
{
|
|
@@ -1810,12 +1790,12 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1810
1790
|
})
|
|
1811
1791
|
}
|
|
1812
1792
|
),
|
|
1813
|
-
/* @__PURE__ */ jsxs("fieldset", { className: "space-y-2 rounded-xl
|
|
1814
|
-
/* @__PURE__ */ jsx("legend", { className: "px-1 text-xs font-medium text-
|
|
1815
|
-
/* @__PURE__ */ jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-
|
|
1793
|
+
/* @__PURE__ */ jsxs("fieldset", { className: "space-y-2 rounded-xl liquid-surface p-3", children: [
|
|
1794
|
+
/* @__PURE__ */ jsx("legend", { className: "px-1 text-xs font-medium text-slate-600 dark:text-slate-300", children: t("pipelineLifecycle", { _: "Lifecycle" }) }),
|
|
1795
|
+
/* @__PURE__ */ jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-slate-700 dark:text-slate-200", children: [
|
|
1816
1796
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
1817
1797
|
t("pipelineIsDraft", { _: "Draft mode" }),
|
|
1818
|
-
/* @__PURE__ */ jsx("span", { className: "ml-2 text-[11px] text-
|
|
1798
|
+
/* @__PURE__ */ jsx("span", { className: "ml-2 text-[11px] text-slate-400", children: isDraft ? t("pipelineIsDraftOn", { _: "Editable \u2014 changes do not affect runs." }) : t("pipelineIsDraftOff", { _: "Published \u2014 edits require a new version." }) })
|
|
1819
1799
|
] }),
|
|
1820
1800
|
/* @__PURE__ */ jsx(
|
|
1821
1801
|
"input",
|
|
@@ -1823,14 +1803,14 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1823
1803
|
type: "checkbox",
|
|
1824
1804
|
checked: isDraft,
|
|
1825
1805
|
onChange: (event) => setIsDraft(event.target.checked),
|
|
1826
|
-
className: "h-4 w-4 rounded border-
|
|
1806
|
+
className: "h-4 w-4 rounded border-slate-300 text-indigo-600 focus:ring-indigo-500/70 focus:ring-offset-1"
|
|
1827
1807
|
}
|
|
1828
1808
|
)
|
|
1829
1809
|
] }),
|
|
1830
|
-
/* @__PURE__ */ jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-
|
|
1810
|
+
/* @__PURE__ */ jsxs("label", { className: "flex items-center justify-between gap-3 text-sm text-slate-700 dark:text-slate-200", children: [
|
|
1831
1811
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
1832
1812
|
t("pipelineIsActive", { _: "Active" }),
|
|
1833
|
-
/* @__PURE__ */ jsx("span", { className: "ml-2 text-[11px] text-
|
|
1813
|
+
/* @__PURE__ */ jsx("span", { className: "ml-2 text-[11px] text-slate-400", children: isActive ? t("pipelineIsActiveOn", { _: "Visible in listings and runnable." }) : t("pipelineIsActiveOff", { _: "Archived \u2014 hidden from the default listing." }) })
|
|
1834
1814
|
] }),
|
|
1835
1815
|
/* @__PURE__ */ jsx(
|
|
1836
1816
|
"input",
|
|
@@ -1838,7 +1818,7 @@ function PipelineSettingsModal({ onSave }) {
|
|
|
1838
1818
|
type: "checkbox",
|
|
1839
1819
|
checked: isActive,
|
|
1840
1820
|
onChange: (event) => setIsActive(event.target.checked),
|
|
1841
|
-
className: "h-4 w-4 rounded border-
|
|
1821
|
+
className: "h-4 w-4 rounded border-slate-300 text-indigo-600 focus:ring-indigo-500/70 focus:ring-offset-1"
|
|
1842
1822
|
}
|
|
1843
1823
|
)
|
|
1844
1824
|
] })
|
|
@@ -1918,15 +1898,7 @@ function RunReplayModal({
|
|
|
1918
1898
|
/* @__PURE__ */ jsx("code", { children: workflowId.slice(0, 8) })
|
|
1919
1899
|
] }),
|
|
1920
1900
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1921
|
-
/* @__PURE__ */ jsx(
|
|
1922
|
-
"button",
|
|
1923
|
-
{
|
|
1924
|
-
type: "button",
|
|
1925
|
-
onClick: onClose,
|
|
1926
|
-
className: "rounded-lg border border-gray-200/50 px-4 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100/50 dark:border-white/10 dark:text-gray-300 dark:hover:bg-white/5",
|
|
1927
|
-
children: t("cancel")
|
|
1928
|
-
}
|
|
1929
|
-
),
|
|
1901
|
+
/* @__PURE__ */ jsx(Button, { type: "button", outline: true, size: "sm", onClick: onClose, children: t("cancel") }),
|
|
1930
1902
|
/* @__PURE__ */ jsxs(
|
|
1931
1903
|
Button,
|
|
1932
1904
|
{
|
|
@@ -1994,15 +1966,7 @@ function RowEditor({
|
|
|
1994
1966
|
/* @__PURE__ */ jsx("span", { className: "font-mono text-xs text-gray-700 dark:text-gray-200", children: row.key }),
|
|
1995
1967
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1996
1968
|
/* @__PURE__ */ jsx(Badge, { color: "zinc", size: "xs", className: "uppercase tracking-wider", children: row.kind }),
|
|
1997
|
-
row.touched && /* @__PURE__ */ jsx(
|
|
1998
|
-
"button",
|
|
1999
|
-
{
|
|
2000
|
-
type: "button",
|
|
2001
|
-
onClick: onReset,
|
|
2002
|
-
className: "text-[11px] text-indigo-600 hover:text-indigo-500 dark:text-indigo-400",
|
|
2003
|
-
children: "reset"
|
|
2004
|
-
}
|
|
2005
|
-
)
|
|
1969
|
+
row.touched && /* @__PURE__ */ jsx(Button, { type: "button", plain: true, size: "xs", onClick: onReset, children: "reset" })
|
|
2006
1970
|
] })
|
|
2007
1971
|
] }),
|
|
2008
1972
|
row.kind === "boolean" ? /* @__PURE__ */ jsxs(
|
|
@@ -2999,7 +2963,7 @@ function SectionHeader({ icon, title, colorClass, count, onAdd, addLabel, isOpen
|
|
|
2999
2963
|
/* @__PURE__ */ jsx(
|
|
3000
2964
|
ChevronDownIcon,
|
|
3001
2965
|
{
|
|
3002
|
-
className: `h-3 w-3 text-
|
|
2966
|
+
className: `h-3 w-3 text-slate-400 transition-transform duration-200 ${isOpen ? "" : "-rotate-90"}`
|
|
3003
2967
|
}
|
|
3004
2968
|
)
|
|
3005
2969
|
]
|
|
@@ -3020,7 +2984,7 @@ function SectionHeader({ icon, title, colorClass, count, onAdd, addLabel, isOpen
|
|
|
3020
2984
|
function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count, onAdd, addLabel, children }) {
|
|
3021
2985
|
const [isOpen, setIsOpen] = useState(defaultOpen);
|
|
3022
2986
|
const safeChildren = Children.toArray(children);
|
|
3023
|
-
return /* @__PURE__ */ jsxs("div", { className: "border-t border-
|
|
2987
|
+
return /* @__PURE__ */ jsxs("div", { className: "border-t border-slate-200/40 dark:border-white/5", children: [
|
|
3024
2988
|
/* @__PURE__ */ jsx(
|
|
3025
2989
|
SectionHeader,
|
|
3026
2990
|
{
|
|
@@ -3039,7 +3003,7 @@ function CollapsibleSection({ title, icon, colorClass, defaultOpen = true, count
|
|
|
3039
3003
|
}
|
|
3040
3004
|
function LogicNodeItemCard({ item, translationFunction }) {
|
|
3041
3005
|
const IconComponent = LOGIC_ICON_MAP[item.nodeType];
|
|
3042
|
-
const gradient = LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-
|
|
3006
|
+
const gradient = LOGIC_NODE_GRADIENTS[item.nodeType] ?? "from-slate-400 to-slate-500";
|
|
3043
3007
|
const defaultConfig = createDefaultLogicNodeConfig(item.nodeType);
|
|
3044
3008
|
const configJson = defaultConfig ? JSON.stringify(defaultConfig) : void 0;
|
|
3045
3009
|
return /* @__PURE__ */ jsxs(
|
|
@@ -3051,8 +3015,8 @@ function LogicNodeItemCard({ item, translationFunction }) {
|
|
|
3051
3015
|
children: [
|
|
3052
3016
|
/* @__PURE__ */ jsx("div", { className: `flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br ${gradient} shadow-sm`, children: IconComponent && /* @__PURE__ */ jsx(IconComponent, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3053
3017
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3054
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-
|
|
3055
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-
|
|
3018
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: translationFunction(item.nameKey) }),
|
|
3019
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: translationFunction(item.descriptionKey) })
|
|
3056
3020
|
] })
|
|
3057
3021
|
]
|
|
3058
3022
|
}
|
|
@@ -3132,13 +3096,13 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3132
3096
|
function renderLogicSubcategory(subcategory, items, isFirst) {
|
|
3133
3097
|
if (items.length === 0) return null;
|
|
3134
3098
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
3135
|
-
/* @__PURE__ */ jsx("p", { className: `${isFirst ? "mt-1" : "mt-2"} text-[9px] font-semibold uppercase tracking-wider text-
|
|
3099
|
+
/* @__PURE__ */ jsx("p", { className: `${isFirst ? "mt-1" : "mt-2"} text-[9px] font-semibold uppercase tracking-wider text-slate-400 dark:text-slate-500`, children: t(SUBCATEGORY_LABELS[subcategory]) }),
|
|
3136
3100
|
items.map((item) => /* @__PURE__ */ jsx(LogicNodeItemCard, { item, translationFunction: t }, item.nodeType))
|
|
3137
3101
|
] }, subcategory);
|
|
3138
3102
|
}
|
|
3139
|
-
return /* @__PURE__ */ jsxs("div", { className: "liquid-surface w-[260px] flex-shrink-0 overflow-y-auto rounded-none border-0 border-r border-
|
|
3103
|
+
return /* @__PURE__ */ jsxs("div", { className: "liquid-surface w-[260px] flex-shrink-0 overflow-y-auto rounded-none border-0 border-r border-slate-200/30 dark:border-white/5", children: [
|
|
3140
3104
|
/* @__PURE__ */ jsxs("div", { className: "p-4 pb-2", children: [
|
|
3141
|
-
/* @__PURE__ */ jsx("h3", { className: "text-xs font-semibold uppercase tracking-wider text-
|
|
3105
|
+
/* @__PURE__ */ jsx("h3", { className: "text-xs font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("palette") }),
|
|
3142
3106
|
/* @__PURE__ */ jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsx(
|
|
3143
3107
|
"input",
|
|
3144
3108
|
{
|
|
@@ -3146,7 +3110,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3146
3110
|
value: searchQuery,
|
|
3147
3111
|
onChange: (event) => setSearchQuery(event.target.value),
|
|
3148
3112
|
placeholder: t("searchPalette"),
|
|
3149
|
-
className: "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-[11px] text-
|
|
3113
|
+
className: "liquid-surface w-full rounded-lg px-2.5 py-1.5 text-[11px] text-slate-900 placeholder-slate-400 outline-none transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 dark:text-white dark:placeholder-slate-500"
|
|
3150
3114
|
}
|
|
3151
3115
|
) })
|
|
3152
3116
|
] }),
|
|
@@ -3159,7 +3123,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3159
3123
|
onAdd: onCreateAgent,
|
|
3160
3124
|
addLabel: t("newAgent"),
|
|
3161
3125
|
count: filteredAgents.length,
|
|
3162
|
-
children: filteredAgents.length === 0 && filteredAgentTools.length === 0 && filteredProviders.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-
|
|
3126
|
+
children: filteredAgents.length === 0 && filteredAgentTools.length === 0 && filteredProviders.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("noAgents") }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3163
3127
|
filteredAgents.map((agent) => /* @__PURE__ */ jsxs(
|
|
3164
3128
|
"div",
|
|
3165
3129
|
{
|
|
@@ -3168,24 +3132,24 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3168
3132
|
className: "liquid-surface group flex items-center gap-2 rounded-lg px-3 py-2 transition-all cursor-grab hover:shadow-md active:cursor-grabbing",
|
|
3169
3133
|
children: [
|
|
3170
3134
|
/* @__PURE__ */ jsxs("div", { className: "relative flex-shrink-0", children: [
|
|
3171
|
-
agent.avatar ? /* @__PURE__ */ jsx("img", { src: agent.avatar, alt: agent.name, className: "h-7 w-7 rounded-full bg-white shadow-sm ring-1 ring-
|
|
3172
|
-
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-0.5 -right-0.5 flex h-3.5 w-3.5 items-center justify-center rounded-full bg-indigo-500 ring-1.5 ring-white dark:ring-
|
|
3135
|
+
agent.avatar ? /* @__PURE__ */ jsx("img", { src: agent.avatar, alt: agent.name, className: "h-7 w-7 rounded-full bg-white shadow-sm ring-1 ring-slate-200/50 dark:bg-slate-800 dark:ring-white/10" }) : /* @__PURE__ */ jsx("div", { className: "flex h-7 w-7 items-center justify-center rounded-full bg-gradient-to-br from-indigo-400 to-purple-500 shadow-sm", children: /* @__PURE__ */ jsx(CpuChipIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3136
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-0.5 -right-0.5 flex h-3.5 w-3.5 items-center justify-center rounded-full bg-indigo-500 ring-1.5 ring-white dark:ring-slate-900", children: /* @__PURE__ */ jsx(CpuChipIcon, { className: "h-2 w-2 text-white" }) })
|
|
3173
3137
|
] }),
|
|
3174
3138
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3175
3139
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
3176
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-
|
|
3140
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: agent.name }),
|
|
3177
3141
|
(() => {
|
|
3178
3142
|
const tier = getAgentTier(Number(agent.elo ?? 0));
|
|
3179
3143
|
return /* @__PURE__ */ jsx("span", { className: `shrink-0 rounded-full px-1.5 py-px text-[8px] font-bold ${tier.pillColor}`, children: t(`agentDrawer.tier${tier.key.charAt(0).toUpperCase()}${tier.key.slice(1)}`) });
|
|
3180
3144
|
})()
|
|
3181
3145
|
] }),
|
|
3182
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-
|
|
3146
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: agent.role ?? agent.agentId })
|
|
3183
3147
|
] })
|
|
3184
3148
|
]
|
|
3185
3149
|
},
|
|
3186
3150
|
agent.agentId
|
|
3187
3151
|
)),
|
|
3188
|
-
filteredProviders.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 border-t border-
|
|
3152
|
+
filteredProviders.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 border-t border-slate-200/40 pt-2 dark:border-white/5", children: [
|
|
3189
3153
|
/* @__PURE__ */ jsx("p", { className: "mb-1.5 px-1 text-[9px] font-semibold uppercase tracking-wider text-slate-500 dark:text-slate-400", children: t("connectionsSection") }),
|
|
3190
3154
|
filteredProviders.map((provider) => {
|
|
3191
3155
|
const providerLogo = PROVIDER_LOGOS3[provider.provider];
|
|
@@ -3209,13 +3173,13 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3209
3173
|
children: [
|
|
3210
3174
|
providerLogo ? /* @__PURE__ */ jsx("div", { className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-white/10 p-1", children: /* @__PURE__ */ jsx("img", { src: providerLogo, alt: "", className: "h-4 w-4 object-contain", loading: "lazy" }) }) : /* @__PURE__ */ jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br from-rose-400 to-pink-500 shadow-sm", children: /* @__PURE__ */ jsx(KeyIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3211
3175
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3212
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-
|
|
3213
|
-
/* @__PURE__ */ jsxs("p", { className: "truncate text-[10px] text-
|
|
3176
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: provider.name }),
|
|
3177
|
+
/* @__PURE__ */ jsxs("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
3214
3178
|
provider.modelCount,
|
|
3215
3179
|
" models"
|
|
3216
3180
|
] })
|
|
3217
3181
|
] }),
|
|
3218
|
-
provider.configured ? /* @__PURE__ */ jsx(
|
|
3182
|
+
provider.configured ? /* @__PURE__ */ jsx(Badge, { color: "emerald", size: "xs", children: t("configured") }) : /* @__PURE__ */ jsx(Badge, { color: "amber", size: "xs", children: t("setup") })
|
|
3219
3183
|
]
|
|
3220
3184
|
},
|
|
3221
3185
|
provider.id
|
|
@@ -3233,7 +3197,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3233
3197
|
colorClass: "text-teal-600 dark:text-teal-400",
|
|
3234
3198
|
onAdd: onCreateTool,
|
|
3235
3199
|
addLabel: t("newSubworkflow"),
|
|
3236
|
-
children: filteredTools.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-
|
|
3200
|
+
children: filteredTools.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("noSubworkflows") }) : filteredTools.map((tool) => /* @__PURE__ */ jsxs(
|
|
3237
3201
|
"div",
|
|
3238
3202
|
{
|
|
3239
3203
|
draggable: true,
|
|
@@ -3242,8 +3206,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3242
3206
|
children: [
|
|
3243
3207
|
/* @__PURE__ */ jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br from-teal-400 to-emerald-500 shadow-sm", children: /* @__PURE__ */ jsx(ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3244
3208
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3245
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-
|
|
3246
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-
|
|
3209
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: tool.name }),
|
|
3210
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: tool.category })
|
|
3247
3211
|
] }),
|
|
3248
3212
|
/* @__PURE__ */ jsx(
|
|
3249
3213
|
ToggleSwitch,
|
|
@@ -3271,7 +3235,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3271
3235
|
colorClass: "text-violet-600 dark:text-violet-400",
|
|
3272
3236
|
onAdd: onCreateRule,
|
|
3273
3237
|
addLabel: t("newRule"),
|
|
3274
|
-
children: filteredRules.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-
|
|
3238
|
+
children: filteredRules.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("noRules") }) : filteredRules.map((rule) => /* @__PURE__ */ jsxs(
|
|
3275
3239
|
"div",
|
|
3276
3240
|
{
|
|
3277
3241
|
draggable: true,
|
|
@@ -3280,8 +3244,8 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3280
3244
|
children: [
|
|
3281
3245
|
/* @__PURE__ */ jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br from-violet-400 to-purple-500 shadow-sm", children: /* @__PURE__ */ jsx(AdjustmentsHorizontalIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3282
3246
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3283
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-
|
|
3284
|
-
/* @__PURE__ */ jsxs("p", { className: "truncate text-[10px] text-
|
|
3247
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: rule.name }),
|
|
3248
|
+
/* @__PURE__ */ jsxs("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
3285
3249
|
"P",
|
|
3286
3250
|
String(rule.priority ?? "")
|
|
3287
3251
|
] })
|
|
@@ -3313,7 +3277,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3313
3277
|
count: filteredEntityTypes.length,
|
|
3314
3278
|
onAdd: onCreateDatasource,
|
|
3315
3279
|
addLabel: t("newDataSource"),
|
|
3316
|
-
children: filteredEntityTypes.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-
|
|
3280
|
+
children: filteredEntityTypes.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] text-slate-400 dark:text-slate-500", children: t("noDataSources") }) : filteredEntityTypes.map((entity) => {
|
|
3317
3281
|
const defaultConfig = JSON.stringify({
|
|
3318
3282
|
type: "entity",
|
|
3319
3283
|
entityMasterId: entity.id,
|
|
@@ -3334,15 +3298,15 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3334
3298
|
children: [
|
|
3335
3299
|
dsLogo ? /* @__PURE__ */ jsx("div", { className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-white/10 p-1", children: /* @__PURE__ */ jsx("img", { src: dsLogo, alt: "", className: "h-4 w-4 object-contain", loading: "lazy" }) }) : /* @__PURE__ */ jsx("div", { className: `flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br ${entityGradient} shadow-sm`, children: /* @__PURE__ */ jsx(EntityIcon, { className: "h-3.5 w-3.5 text-white" }) }),
|
|
3336
3300
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3337
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-
|
|
3338
|
-
/* @__PURE__ */ jsxs("p", { className: "truncate text-[10px] text-
|
|
3301
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-xs font-medium text-slate-900 dark:text-white", children: entity.label }),
|
|
3302
|
+
/* @__PURE__ */ jsxs("p", { className: "truncate text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
3339
3303
|
entity.fieldCount,
|
|
3340
3304
|
" ",
|
|
3341
3305
|
t("entityFieldsLabel")
|
|
3342
3306
|
] })
|
|
3343
3307
|
] }),
|
|
3344
3308
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3345
|
-
/* @__PURE__ */ jsx(
|
|
3309
|
+
/* @__PURE__ */ jsx(Badge, { color: "zinc", size: "xs", children: "Read only" }),
|
|
3346
3310
|
/* @__PURE__ */ jsx(
|
|
3347
3311
|
ToggleSwitch,
|
|
3348
3312
|
{
|
|
@@ -3368,7 +3332,7 @@ function NodePalette({ agents, tools, agentTools = [], rules, entities = [], mod
|
|
|
3368
3332
|
{
|
|
3369
3333
|
title: t("logicSection"),
|
|
3370
3334
|
icon: /* @__PURE__ */ jsx(BoltIcon, { className: "h-3 w-3" }),
|
|
3371
|
-
colorClass: "text-
|
|
3335
|
+
colorClass: "text-slate-600 dark:text-slate-400",
|
|
3372
3336
|
count: filteredLogicItems.length,
|
|
3373
3337
|
children: [
|
|
3374
3338
|
renderLogicSubcategory("control_flow", groupedLogicItems.control_flow, true),
|
|
@@ -3454,19 +3418,17 @@ function WorkflowListBar({
|
|
|
3454
3418
|
children: /* @__PURE__ */ jsx(ArrowPathRoundedSquareIcon, { className: "h-3.5 w-3.5" })
|
|
3455
3419
|
}
|
|
3456
3420
|
),
|
|
3457
|
-
workflows.length > 1 && /* @__PURE__ */ jsx(
|
|
3458
|
-
|
|
3421
|
+
workflows.length > 1 && /* @__PURE__ */ jsx("div", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ jsx(
|
|
3422
|
+
IconButton,
|
|
3459
3423
|
{
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
"aria-label": `${tWorkflow("deleteWorkflow")} ${workflow.name}`,
|
|
3467
|
-
children: /* @__PURE__ */ jsx(TrashIcon, { className: "h-3.5 w-3.5" })
|
|
3424
|
+
label: `${tWorkflow("deleteWorkflow")} ${workflow.name}`,
|
|
3425
|
+
variant: "ghost",
|
|
3426
|
+
size: "sm",
|
|
3427
|
+
destructive: true,
|
|
3428
|
+
onClick: () => onDelete(workflow.id, workflow.name),
|
|
3429
|
+
icon: /* @__PURE__ */ jsx(TrashIcon, { className: "h-3.5 w-3.5" })
|
|
3468
3430
|
}
|
|
3469
|
-
)
|
|
3431
|
+
) })
|
|
3470
3432
|
] })
|
|
3471
3433
|
]
|
|
3472
3434
|
},
|
|
@@ -3537,22 +3499,23 @@ function VersionHistoryPanel({
|
|
|
3537
3499
|
return /* @__PURE__ */ jsxs(
|
|
3538
3500
|
"div",
|
|
3539
3501
|
{
|
|
3540
|
-
className: "absolute right-0 top-0 z-40 flex h-full w-80 flex-col border-l border-
|
|
3502
|
+
className: "liquid-surface absolute right-0 top-0 z-40 flex h-full w-80 flex-col border-l border-slate-200/60 shadow-xl dark:border-white/10",
|
|
3541
3503
|
"data-testid": "version-history-panel",
|
|
3542
3504
|
children: [
|
|
3543
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between
|
|
3505
|
+
/* @__PURE__ */ jsxs("div", { className: "liquid-divider flex items-center justify-between px-4 py-3", children: [
|
|
3544
3506
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3545
|
-
/* @__PURE__ */ jsx(ClockIcon, { className: "h-5 w-5 text-
|
|
3546
|
-
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-
|
|
3507
|
+
/* @__PURE__ */ jsx(ClockIcon, { className: "h-5 w-5 text-slate-500 dark:text-slate-400" }),
|
|
3508
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") })
|
|
3547
3509
|
] }),
|
|
3548
3510
|
/* @__PURE__ */ jsx(
|
|
3549
|
-
|
|
3511
|
+
IconButton,
|
|
3550
3512
|
{
|
|
3551
|
-
|
|
3513
|
+
label: translations("close"),
|
|
3514
|
+
variant: "ghost",
|
|
3515
|
+
size: "sm",
|
|
3552
3516
|
onClick: onClose,
|
|
3553
|
-
|
|
3554
|
-
"data-testid": "version-history-close"
|
|
3555
|
-
children: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-4 w-4" })
|
|
3517
|
+
icon: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-4 w-4" }),
|
|
3518
|
+
"data-testid": "version-history-close"
|
|
3556
3519
|
}
|
|
3557
3520
|
)
|
|
3558
3521
|
] }),
|
|
@@ -3560,36 +3523,28 @@ function VersionHistoryPanel({
|
|
|
3560
3523
|
isLoading && /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-12", "data-testid": "version-history-loading", children: /* @__PURE__ */ jsx("div", { className: "h-6 w-6 animate-spin motion-reduce:animate-none rounded-full border-2 border-blue-500 border-t-transparent" }) }),
|
|
3561
3524
|
loadError && /* @__PURE__ */ jsxs("div", { className: "px-4 py-8 text-center", "data-testid": "version-history-error", children: [
|
|
3562
3525
|
/* @__PURE__ */ jsx("p", { className: "text-sm text-red-500 dark:text-red-400", children: loadError }),
|
|
3563
|
-
/* @__PURE__ */ jsx(
|
|
3564
|
-
"button",
|
|
3565
|
-
{
|
|
3566
|
-
type: "button",
|
|
3567
|
-
onClick: loadVersions,
|
|
3568
|
-
className: "mt-2 text-xs text-blue-600 hover:underline dark:text-blue-400",
|
|
3569
|
-
children: translations("retry")
|
|
3570
|
-
}
|
|
3571
|
-
)
|
|
3526
|
+
/* @__PURE__ */ jsx(Button, { type: "button", plain: true, size: "xs", onClick: loadVersions, children: translations("retry") })
|
|
3572
3527
|
] }),
|
|
3573
3528
|
!isLoading && !loadError && versions.length === 0 && /* @__PURE__ */ jsxs("div", { className: "px-4 py-12 text-center", "data-testid": "version-history-empty", children: [
|
|
3574
|
-
/* @__PURE__ */ jsx(ClockIcon, { className: "mx-auto h-8 w-8 text-
|
|
3575
|
-
/* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-
|
|
3529
|
+
/* @__PURE__ */ jsx(ClockIcon, { className: "mx-auto h-8 w-8 text-slate-300 dark:text-slate-600" }),
|
|
3530
|
+
/* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400", children: translations("noVersions") })
|
|
3576
3531
|
] }),
|
|
3577
|
-
!isLoading && !loadError && versions.length > 0 && /* @__PURE__ */ jsx("div", { className: "divide-y divide-
|
|
3532
|
+
!isLoading && !loadError && versions.length > 0 && /* @__PURE__ */ jsx("div", { className: "divide-y divide-slate-200/60 dark:divide-white/10", children: versions.map((version) => {
|
|
3578
3533
|
const isCurrentVersion = version.version === currentVersion;
|
|
3579
3534
|
return /* @__PURE__ */ jsxs(
|
|
3580
3535
|
"div",
|
|
3581
3536
|
{
|
|
3582
|
-
className: `px-4 py-3 transition-colors ${isCurrentVersion ? "bg-blue-50 dark:bg-blue-500/10" : "hover:bg-
|
|
3537
|
+
className: `px-4 py-3 transition-colors ${isCurrentVersion ? "bg-blue-50 dark:bg-blue-500/10" : "hover:bg-white/40 dark:hover:bg-white/[0.04]"}`,
|
|
3583
3538
|
"data-testid": `version-entry-${version.version}`,
|
|
3584
3539
|
children: [
|
|
3585
3540
|
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3586
|
-
/* @__PURE__ */ jsxs("span", { className: "text-sm font-semibold text-
|
|
3541
|
+
/* @__PURE__ */ jsxs("span", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: [
|
|
3587
3542
|
"v",
|
|
3588
3543
|
version.version
|
|
3589
3544
|
] }),
|
|
3590
3545
|
isCurrentVersion && /* @__PURE__ */ jsx(Badge, { color: "blue", size: "xs", children: translations("current") })
|
|
3591
3546
|
] }) }),
|
|
3592
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-1 text-xs text-
|
|
3547
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-1 text-xs text-slate-500 dark:text-slate-400", children: [
|
|
3593
3548
|
/* @__PURE__ */ jsx("div", { children: formatTimestamp3(version.publishedAt) }),
|
|
3594
3549
|
/* @__PURE__ */ jsxs("div", { className: "mt-0.5", children: [
|
|
3595
3550
|
translations("publishedBy"),
|
|
@@ -3608,11 +3563,12 @@ function VersionHistoryPanel({
|
|
|
3608
3563
|
] }),
|
|
3609
3564
|
/* @__PURE__ */ jsxs("div", { className: "mt-2 flex gap-2", children: [
|
|
3610
3565
|
/* @__PURE__ */ jsxs(
|
|
3611
|
-
|
|
3566
|
+
Button,
|
|
3612
3567
|
{
|
|
3613
3568
|
type: "button",
|
|
3569
|
+
outline: true,
|
|
3570
|
+
size: "xs",
|
|
3614
3571
|
onClick: () => onPreview(version),
|
|
3615
|
-
className: "inline-flex items-center gap-1 rounded-md border border-gray-300 px-2 py-1 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-100 dark:border-gray-600 dark:text-gray-400 dark:hover:bg-gray-700",
|
|
3616
3572
|
"data-testid": `version-preview-${version.version}`,
|
|
3617
3573
|
children: [
|
|
3618
3574
|
/* @__PURE__ */ jsx(EyeIcon, { className: "h-3 w-3" }),
|
|
@@ -3621,11 +3577,12 @@ function VersionHistoryPanel({
|
|
|
3621
3577
|
}
|
|
3622
3578
|
),
|
|
3623
3579
|
!isCurrentVersion && /* @__PURE__ */ jsxs(
|
|
3624
|
-
|
|
3580
|
+
Button,
|
|
3625
3581
|
{
|
|
3626
3582
|
type: "button",
|
|
3583
|
+
outline: true,
|
|
3584
|
+
size: "xs",
|
|
3627
3585
|
onClick: () => onRestore(version),
|
|
3628
|
-
className: "inline-flex items-center gap-1 rounded-md border border-blue-300 px-2 py-1 text-xs font-medium text-blue-600 transition-colors hover:bg-blue-50 dark:border-blue-600 dark:text-blue-400 dark:hover:bg-blue-500/10",
|
|
3629
3586
|
"data-testid": `version-restore-${version.version}`,
|
|
3630
3587
|
children: [
|
|
3631
3588
|
/* @__PURE__ */ jsx(ArrowPathIcon, { className: "h-3 w-3" }),
|
|
@@ -3647,8 +3604,8 @@ function VersionHistoryPanel({
|
|
|
3647
3604
|
var STATUS_CONFIG = {
|
|
3648
3605
|
pending: {
|
|
3649
3606
|
icon: ClockIcon,
|
|
3650
|
-
color: "text-
|
|
3651
|
-
background: "bg-
|
|
3607
|
+
color: "text-slate-400 dark:text-slate-500",
|
|
3608
|
+
background: "bg-slate-100 dark:bg-slate-800",
|
|
3652
3609
|
label: "pending"
|
|
3653
3610
|
},
|
|
3654
3611
|
running: {
|
|
@@ -3693,13 +3650,13 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3693
3650
|
return /* @__PURE__ */ jsxs(
|
|
3694
3651
|
"div",
|
|
3695
3652
|
{
|
|
3696
|
-
className: "absolute bottom-0 left-0 right-0 z-40 border-t border-
|
|
3653
|
+
className: "liquid-surface absolute bottom-0 left-0 right-0 z-40 border-t border-slate-200/60 shadow-xl dark:border-white/10",
|
|
3697
3654
|
"data-testid": "run-panel",
|
|
3698
3655
|
children: [
|
|
3699
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between
|
|
3656
|
+
/* @__PURE__ */ jsxs("div", { className: "liquid-divider flex items-center justify-between px-4 py-2", children: [
|
|
3700
3657
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3701
|
-
/* @__PURE__ */ jsx(PlayIcon, { className: "h-4 w-4 text-
|
|
3702
|
-
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-
|
|
3658
|
+
/* @__PURE__ */ jsx(PlayIcon, { className: "h-4 w-4 text-slate-500 dark:text-slate-400" }),
|
|
3659
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") }),
|
|
3703
3660
|
isRunning && /* @__PURE__ */ jsxs(
|
|
3704
3661
|
"span",
|
|
3705
3662
|
{
|
|
@@ -3721,11 +3678,12 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3721
3678
|
] }),
|
|
3722
3679
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3723
3680
|
isRunning ? /* @__PURE__ */ jsxs(
|
|
3724
|
-
|
|
3681
|
+
Button,
|
|
3725
3682
|
{
|
|
3726
3683
|
type: "button",
|
|
3684
|
+
destructive: true,
|
|
3685
|
+
size: "sm",
|
|
3727
3686
|
onClick: onStop,
|
|
3728
|
-
className: "inline-flex items-center gap-1.5 rounded-lg bg-red-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-red-600",
|
|
3729
3687
|
"data-testid": "run-panel-stop",
|
|
3730
3688
|
children: [
|
|
3731
3689
|
/* @__PURE__ */ jsx(StopIcon, { className: "h-3.5 w-3.5" }),
|
|
@@ -3733,12 +3691,13 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3733
3691
|
]
|
|
3734
3692
|
}
|
|
3735
3693
|
) : /* @__PURE__ */ jsxs(
|
|
3736
|
-
|
|
3694
|
+
Button,
|
|
3737
3695
|
{
|
|
3738
3696
|
type: "button",
|
|
3697
|
+
color: "ios-green",
|
|
3698
|
+
size: "sm",
|
|
3739
3699
|
onClick: onRun,
|
|
3740
3700
|
disabled: !canRun,
|
|
3741
|
-
className: "inline-flex items-center gap-1.5 rounded-lg bg-green-500 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-green-600 disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-green-500",
|
|
3742
3701
|
"data-testid": "run-panel-run",
|
|
3743
3702
|
children: [
|
|
3744
3703
|
/* @__PURE__ */ jsx(PlayIcon, { className: "h-3.5 w-3.5" }),
|
|
@@ -3747,18 +3706,19 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3747
3706
|
}
|
|
3748
3707
|
),
|
|
3749
3708
|
/* @__PURE__ */ jsx(
|
|
3750
|
-
|
|
3709
|
+
IconButton,
|
|
3751
3710
|
{
|
|
3752
|
-
|
|
3711
|
+
label: translations("close"),
|
|
3712
|
+
variant: "ghost",
|
|
3713
|
+
size: "sm",
|
|
3753
3714
|
onClick: onClose,
|
|
3754
|
-
|
|
3755
|
-
"data-testid": "run-panel-close"
|
|
3756
|
-
children: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-4 w-4" })
|
|
3715
|
+
icon: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-4 w-4" }),
|
|
3716
|
+
"data-testid": "run-panel-close"
|
|
3757
3717
|
}
|
|
3758
3718
|
)
|
|
3759
3719
|
] })
|
|
3760
3720
|
] }),
|
|
3761
|
-
/* @__PURE__ */ jsx("div", { className: "max-h-48 overflow-y-auto px-4 py-2", children: executionNodes.length === 0 ? /* @__PURE__ */ jsx("div", { className: "py-4 text-center text-sm text-
|
|
3721
|
+
/* @__PURE__ */ jsx("div", { className: "max-h-48 overflow-y-auto px-4 py-2", children: executionNodes.length === 0 ? /* @__PURE__ */ jsx("div", { className: "py-4 text-center text-sm text-slate-500 dark:text-slate-400", children: translations("noNodes") }) : /* @__PURE__ */ jsx("div", { className: "space-y-1", children: executionNodes.map((node) => {
|
|
3762
3722
|
const result = nodeResults[node.id];
|
|
3763
3723
|
const status = result?.status ?? "pending";
|
|
3764
3724
|
const statusConfig = STATUS_CONFIG[status];
|
|
@@ -3773,12 +3733,12 @@ function RunPanel({ open, onClose, onRun, onStop }) {
|
|
|
3773
3733
|
/* @__PURE__ */ jsx(StatusIconComponent, { className: `h-4 w-4 flex-shrink-0 ${statusConfig.color}` }),
|
|
3774
3734
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
3775
3735
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3776
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-sm font-medium text-
|
|
3777
|
-
/* @__PURE__ */ jsx("span", { className: "rounded bg-
|
|
3736
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm font-medium text-slate-900 dark:text-white", children: nodeLabel }),
|
|
3737
|
+
/* @__PURE__ */ jsx("span", { className: "rounded bg-slate-200 px-1.5 py-0.5 text-[10px] text-slate-500 dark:bg-slate-700 dark:text-slate-400", children: node.type })
|
|
3778
3738
|
] }),
|
|
3779
3739
|
result?.error && /* @__PURE__ */ jsx("p", { className: "mt-0.5 truncate text-xs text-red-500 dark:text-red-400", children: result.error })
|
|
3780
3740
|
] }),
|
|
3781
|
-
result?.durationMs !== void 0 && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0 text-xs text-
|
|
3741
|
+
result?.durationMs !== void 0 && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0 text-xs text-slate-500 dark:text-slate-400", children: formatDuration2(result.durationMs) })
|
|
3782
3742
|
]
|
|
3783
3743
|
},
|
|
3784
3744
|
node.id
|
|
@@ -4051,32 +4011,33 @@ function VariableInspector({ open, onClose }) {
|
|
|
4051
4011
|
return /* @__PURE__ */ jsxs(
|
|
4052
4012
|
"div",
|
|
4053
4013
|
{
|
|
4054
|
-
className: "absolute right-0 top-0 z-40 flex h-full w-80 flex-col
|
|
4014
|
+
className: "liquid-surface absolute right-0 top-0 z-40 flex h-full w-80 flex-col shadow-xl",
|
|
4055
4015
|
"data-testid": "variable-inspector",
|
|
4056
4016
|
children: [
|
|
4057
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b
|
|
4017
|
+
/* @__PURE__ */ jsxs("div", { className: "liquid-divider flex items-center justify-between border-b px-4 py-3", children: [
|
|
4058
4018
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4059
|
-
/* @__PURE__ */ jsx(VariableIcon, { className: "h-5 w-5 text-
|
|
4060
|
-
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-
|
|
4019
|
+
/* @__PURE__ */ jsx(VariableIcon, { className: "h-5 w-5 text-slate-500 dark:text-slate-400" }),
|
|
4020
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: translations("title") })
|
|
4061
4021
|
] }),
|
|
4062
4022
|
/* @__PURE__ */ jsx(
|
|
4063
|
-
|
|
4023
|
+
IconButton,
|
|
4064
4024
|
{
|
|
4065
|
-
|
|
4025
|
+
label: translations("close"),
|
|
4026
|
+
variant: "ghost",
|
|
4027
|
+
size: "sm",
|
|
4066
4028
|
onClick: onClose,
|
|
4067
|
-
|
|
4068
|
-
"data-testid": "variable-inspector-close"
|
|
4069
|
-
children: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-4 w-4" })
|
|
4029
|
+
icon: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-4 w-4" }),
|
|
4030
|
+
"data-testid": "variable-inspector-close"
|
|
4070
4031
|
}
|
|
4071
4032
|
)
|
|
4072
4033
|
] }),
|
|
4073
4034
|
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto", children: nodeVariableEntries.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "px-4 py-12 text-center", "data-testid": "variable-inspector-empty", children: [
|
|
4074
|
-
/* @__PURE__ */ jsx(VariableIcon, { className: "mx-auto h-8 w-8 text-
|
|
4075
|
-
/* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-
|
|
4076
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "divide-y divide-
|
|
4035
|
+
/* @__PURE__ */ jsx(VariableIcon, { className: "mx-auto h-8 w-8 text-slate-300 dark:text-slate-600" }),
|
|
4036
|
+
/* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400", children: translations("noNodes") })
|
|
4037
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "divide-y divide-slate-100 dark:divide-slate-800", children: nodeVariableEntries.map((entry) => {
|
|
4077
4038
|
const isExpanded = expandedNodes.has(entry.nodeId);
|
|
4078
4039
|
const IconComponent = LOGIC_ICON_MAP[entry.nodeType];
|
|
4079
|
-
const gradient = LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-
|
|
4040
|
+
const gradient = LOGIC_NODE_GRADIENTS[entry.nodeType] ?? "from-slate-400 to-slate-500";
|
|
4080
4041
|
const inputVariables = entry.variables.filter((variable) => variable.direction === "input");
|
|
4081
4042
|
const outputVariables = entry.variables.filter((variable) => variable.direction === "output");
|
|
4082
4043
|
return /* @__PURE__ */ jsxs("div", { "data-testid": `variable-node-${entry.nodeId}`, children: [
|
|
@@ -4085,12 +4046,12 @@ function VariableInspector({ open, onClose }) {
|
|
|
4085
4046
|
{
|
|
4086
4047
|
type: "button",
|
|
4087
4048
|
onClick: () => toggleNodeExpansion(entry.nodeId),
|
|
4088
|
-
className: "flex w-full items-center gap-2 px-4 py-2.5 text-left transition-colors hover:bg-
|
|
4049
|
+
className: "flex w-full items-center gap-2 px-4 py-2.5 text-left transition-colors hover:bg-white/40 dark:hover:bg-white/[0.04]",
|
|
4089
4050
|
children: [
|
|
4090
|
-
isExpanded ? /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-3.5 w-3.5 flex-shrink-0 text-
|
|
4051
|
+
isExpanded ? /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-3.5 w-3.5 flex-shrink-0 text-slate-400" }) : /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-3.5 w-3.5 flex-shrink-0 text-slate-400" }),
|
|
4091
4052
|
/* @__PURE__ */ jsx("div", { className: `flex h-5 w-5 flex-shrink-0 items-center justify-center rounded bg-gradient-to-br ${gradient}`, children: IconComponent && /* @__PURE__ */ jsx(IconComponent, { className: "h-3 w-3 text-white" }) }),
|
|
4092
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-sm font-medium text-
|
|
4093
|
-
/* @__PURE__ */ jsxs("span", { className: "ml-auto flex-shrink-0 text-[10px] text-
|
|
4053
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-sm font-medium text-slate-900 dark:text-white", children: entry.nodeLabel }),
|
|
4054
|
+
/* @__PURE__ */ jsxs("span", { className: "ml-auto flex-shrink-0 text-[10px] text-slate-400 dark:text-slate-500", children: [
|
|
4094
4055
|
entry.variables.length,
|
|
4095
4056
|
" ",
|
|
4096
4057
|
translations("variables")
|
|
@@ -4098,32 +4059,32 @@ function VariableInspector({ open, onClose }) {
|
|
|
4098
4059
|
]
|
|
4099
4060
|
}
|
|
4100
4061
|
),
|
|
4101
|
-
isExpanded && /* @__PURE__ */ jsx("div", { className: "bg-
|
|
4062
|
+
isExpanded && /* @__PURE__ */ jsx("div", { className: "bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm px-4 pb-2", children: entry.variables.length === 0 ? /* @__PURE__ */ jsx("p", { className: "py-2 pl-9 text-xs italic text-slate-400 dark:text-slate-500", children: translations("noVariables") }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4102
4063
|
inputVariables.length > 0 && /* @__PURE__ */ jsxs("div", { className: "pl-9 pt-1", children: [
|
|
4103
|
-
/* @__PURE__ */ jsx("div", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-
|
|
4064
|
+
/* @__PURE__ */ jsx("div", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-slate-400 dark:text-slate-500", children: translations("inputs") }),
|
|
4104
4065
|
inputVariables.map((variable, index) => /* @__PURE__ */ jsxs(
|
|
4105
4066
|
"div",
|
|
4106
4067
|
{
|
|
4107
4068
|
className: "flex items-center gap-2 py-0.5",
|
|
4108
4069
|
children: [
|
|
4109
4070
|
/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-blue-400" }),
|
|
4110
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-
|
|
4111
|
-
/* @__PURE__ */ jsx("span", { className: "rounded bg-
|
|
4071
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-slate-700 dark:text-slate-300", children: variable.name }),
|
|
4072
|
+
/* @__PURE__ */ jsx("span", { className: "rounded bg-slate-200 px-1 py-0.5 text-[9px] text-slate-500 dark:bg-slate-700 dark:text-slate-400", children: variable.variableType })
|
|
4112
4073
|
]
|
|
4113
4074
|
},
|
|
4114
4075
|
`${variable.name}-${index}`
|
|
4115
4076
|
))
|
|
4116
4077
|
] }),
|
|
4117
4078
|
outputVariables.length > 0 && /* @__PURE__ */ jsxs("div", { className: "pl-9 pt-1", children: [
|
|
4118
|
-
/* @__PURE__ */ jsx("div", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-
|
|
4079
|
+
/* @__PURE__ */ jsx("div", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-slate-400 dark:text-slate-500", children: translations("outputs") }),
|
|
4119
4080
|
outputVariables.map((variable, index) => /* @__PURE__ */ jsxs(
|
|
4120
4081
|
"div",
|
|
4121
4082
|
{
|
|
4122
4083
|
className: "flex items-center gap-2 py-0.5",
|
|
4123
4084
|
children: [
|
|
4124
4085
|
/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-green-400" }),
|
|
4125
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-
|
|
4126
|
-
/* @__PURE__ */ jsx("span", { className: "rounded bg-
|
|
4086
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-slate-700 dark:text-slate-300", children: variable.name }),
|
|
4087
|
+
/* @__PURE__ */ jsx("span", { className: "rounded bg-slate-200 px-1 py-0.5 text-[9px] text-slate-500 dark:bg-slate-700 dark:text-slate-400", children: variable.variableType })
|
|
4127
4088
|
]
|
|
4128
4089
|
},
|
|
4129
4090
|
`${variable.name}-${index}`
|
|
@@ -4203,10 +4164,10 @@ var STATUS_STYLES = {
|
|
|
4203
4164
|
completed: { icon: CheckCircleIcon, colorClass: "text-green-500" },
|
|
4204
4165
|
failed: { icon: ExclamationCircleIcon, colorClass: "text-red-500" },
|
|
4205
4166
|
running: { icon: ArrowPathIcon, colorClass: "text-blue-500 animate-spin motion-reduce:animate-none" },
|
|
4206
|
-
pending: { icon: ClockIcon, colorClass: "text-
|
|
4167
|
+
pending: { icon: ClockIcon, colorClass: "text-slate-400" },
|
|
4207
4168
|
success: { icon: CheckCircleIcon, colorClass: "text-green-500" },
|
|
4208
4169
|
error: { icon: ExclamationCircleIcon, colorClass: "text-red-500" },
|
|
4209
|
-
skipped: { icon: ClockIcon, colorClass: "text-
|
|
4170
|
+
skipped: { icon: ClockIcon, colorClass: "text-slate-400" }
|
|
4210
4171
|
};
|
|
4211
4172
|
function formatDuration3(durationMs) {
|
|
4212
4173
|
if (durationMs === null) return "\u2014";
|
|
@@ -4243,21 +4204,22 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4243
4204
|
if (!open) return null;
|
|
4244
4205
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4245
4206
|
/* @__PURE__ */ jsx("div", { className: "fixed inset-x-0 top-[120px] bottom-0 z-40 bg-black/10 backdrop-blur-[1px]", onClick: onClose }),
|
|
4246
|
-
/* @__PURE__ */ jsxs("div", { className: "fixed right-0 top-[120px] bottom-0 z-50 w-96 overflow-hidden border-l border-white/20 bg-white/95 shadow-2xl backdrop-blur-xl dark:border-
|
|
4247
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b
|
|
4248
|
-
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-
|
|
4207
|
+
/* @__PURE__ */ jsxs("div", { className: "fixed right-0 top-[120px] bottom-0 z-50 w-96 overflow-hidden border-l border-white/20 bg-white/95 shadow-2xl backdrop-blur-xl dark:border-slate-700/50 dark:bg-slate-800/95", children: [
|
|
4208
|
+
/* @__PURE__ */ jsxs("div", { className: "liquid-divider flex items-center justify-between border-b px-4 py-3", children: [
|
|
4209
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: t("title") }),
|
|
4249
4210
|
/* @__PURE__ */ jsx(
|
|
4250
|
-
|
|
4211
|
+
IconButton,
|
|
4251
4212
|
{
|
|
4252
|
-
|
|
4213
|
+
label: t("close"),
|
|
4214
|
+
variant: "ghost",
|
|
4215
|
+
size: "sm",
|
|
4253
4216
|
onClick: onClose,
|
|
4254
|
-
|
|
4255
|
-
children: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-4 w-4" })
|
|
4217
|
+
icon: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-4 w-4" })
|
|
4256
4218
|
}
|
|
4257
4219
|
)
|
|
4258
4220
|
] }),
|
|
4259
4221
|
/* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col overflow-hidden", children: [
|
|
4260
|
-
isRunning && /* @__PURE__ */ jsxs("div", { className: "
|
|
4222
|
+
isRunning && /* @__PURE__ */ jsxs("div", { className: "liquid-divider border-b px-4 py-3", children: [
|
|
4261
4223
|
/* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-center gap-2", children: [
|
|
4262
4224
|
/* @__PURE__ */ jsx(ArrowPathIcon, { className: "h-4 w-4 animate-spin motion-reduce:animate-none text-blue-500" }),
|
|
4263
4225
|
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-blue-600 dark:text-blue-400", children: t("activeRun") })
|
|
@@ -4265,46 +4227,46 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4265
4227
|
/* @__PURE__ */ jsx("div", { className: "max-h-60 space-y-1 overflow-y-auto", children: Object.entries(nodeResults).map(([nodeId, result]) => {
|
|
4266
4228
|
const statusStyle = STATUS_STYLES[result.status] ?? STATUS_STYLES.pending;
|
|
4267
4229
|
const StatusIcon = statusStyle.icon;
|
|
4268
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between rounded-lg px-2 py-1.5 text-xs hover:bg-
|
|
4230
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between rounded-lg px-2 py-1.5 text-xs hover:bg-white/40 dark:hover:bg-white/[0.04]", children: [
|
|
4269
4231
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4270
4232
|
/* @__PURE__ */ jsx(StatusIcon, { className: `h-3.5 w-3.5 ${statusStyle.colorClass}` }),
|
|
4271
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-
|
|
4233
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-slate-700 dark:text-slate-300", children: nodeId.slice(0, 8) })
|
|
4272
4234
|
] }),
|
|
4273
|
-
result.durationMs !== void 0 && /* @__PURE__ */ jsx("span", { className: "text-
|
|
4235
|
+
result.durationMs !== void 0 && /* @__PURE__ */ jsx("span", { className: "text-slate-400", children: formatDuration3(result.durationMs) })
|
|
4274
4236
|
] }, nodeId);
|
|
4275
4237
|
}) })
|
|
4276
4238
|
] }),
|
|
4277
|
-
selectedNode && /* @__PURE__ */ jsxs("div", { className: "
|
|
4239
|
+
selectedNode && /* @__PURE__ */ jsxs("div", { className: "liquid-divider border-b px-4 py-3", children: [
|
|
4278
4240
|
/* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
4279
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-
|
|
4280
|
-
/* @__PURE__ */ jsx(
|
|
4241
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-slate-900 dark:text-white", children: t("nodeDetail") }),
|
|
4242
|
+
/* @__PURE__ */ jsx(Button, { type: "button", plain: true, size: "xs", onClick: () => setSelectedNode(null), children: t("close") })
|
|
4281
4243
|
] }),
|
|
4282
4244
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2 text-xs", children: [
|
|
4283
4245
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
|
|
4284
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4285
|
-
/* @__PURE__ */ jsx("span", { className: STATUS_STYLES[selectedNode.status]?.colorClass ?? "text-
|
|
4246
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-500", children: t("status") }),
|
|
4247
|
+
/* @__PURE__ */ jsx("span", { className: STATUS_STYLES[selectedNode.status]?.colorClass ?? "text-slate-400", children: t(selectedNode.status) })
|
|
4286
4248
|
] }),
|
|
4287
4249
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
|
|
4288
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4289
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4250
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-500", children: t("duration") }),
|
|
4251
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-700 dark:text-slate-300", children: formatDuration3(selectedNode.durationMs) })
|
|
4290
4252
|
] }),
|
|
4291
4253
|
selectedNode.error && /* @__PURE__ */ jsxs("div", { children: [
|
|
4292
4254
|
/* @__PURE__ */ jsx("span", { className: "text-red-500", children: t("error") }),
|
|
4293
4255
|
/* @__PURE__ */ jsx("pre", { className: "mt-1 max-h-20 overflow-auto whitespace-pre-wrap rounded bg-red-50 p-2 text-[10px] text-red-700 dark:bg-red-900/20 dark:text-red-300", children: selectedNode.error })
|
|
4294
4256
|
] }),
|
|
4295
4257
|
Object.keys(selectedNode.outputs).length > 0 && /* @__PURE__ */ jsxs("div", { children: [
|
|
4296
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4297
|
-
/* @__PURE__ */ jsx("pre", { className: "mt-1 max-h-32 overflow-auto whitespace-pre-wrap rounded bg-
|
|
4258
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-500", children: t("outputs") }),
|
|
4259
|
+
/* @__PURE__ */ jsx("pre", { className: "mt-1 max-h-32 overflow-auto whitespace-pre-wrap rounded bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm p-2 text-[10px] text-slate-700 dark:text-slate-300", children: JSON.stringify(selectedNode.outputs, null, 2) })
|
|
4298
4260
|
] })
|
|
4299
4261
|
] })
|
|
4300
4262
|
] }),
|
|
4301
4263
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-4 py-3", children: [
|
|
4302
|
-
/* @__PURE__ */ jsx("h4", { className: "mb-2 text-xs font-semibold text-
|
|
4264
|
+
/* @__PURE__ */ jsx("h4", { className: "mb-2 text-xs font-semibold text-slate-500 dark:text-slate-400", children: t("runHistory") }),
|
|
4303
4265
|
isLoadingRuns && /* @__PURE__ */ jsx("div", { className: "space-y-2", children: [1, 2, 3].map((index) => /* @__PURE__ */ jsx("div", { className: "shimmer h-14 rounded-lg" }, index)) }),
|
|
4304
4266
|
!isLoadingRuns && runs.length === 0 && /* @__PURE__ */ jsxs("div", { className: "py-8 text-center", children: [
|
|
4305
|
-
/* @__PURE__ */ jsx(ClockIcon, { className: "mx-auto mb-2 h-8 w-8 text-
|
|
4306
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs text-
|
|
4307
|
-
/* @__PURE__ */ jsx("p", { className: "mt-1 text-[10px] text-
|
|
4267
|
+
/* @__PURE__ */ jsx(ClockIcon, { className: "mx-auto mb-2 h-8 w-8 text-slate-300 dark:text-slate-600" }),
|
|
4268
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: t("noRuns") }),
|
|
4269
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 text-[10px] text-slate-400 dark:text-slate-500", children: t("noRunsDescription") })
|
|
4308
4270
|
] }),
|
|
4309
4271
|
!isLoadingRuns && runs.length > 0 && /* @__PURE__ */ jsx("div", { className: "space-y-1.5", children: runs.map((run) => {
|
|
4310
4272
|
const statusStyle = STATUS_STYLES[run.status] ?? STATUS_STYLES.pending;
|
|
@@ -4318,14 +4280,14 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4318
4280
|
setSelectedRun(isSelected ? null : run);
|
|
4319
4281
|
setSelectedNode(null);
|
|
4320
4282
|
},
|
|
4321
|
-
className: `w-full rounded-lg border px-3 py-2.5 text-left transition-colors ${isSelected ? "border-blue-200 bg-blue-50/50 dark:border-blue-800 dark:bg-blue-900/20" : "border-
|
|
4283
|
+
className: `w-full rounded-lg border px-3 py-2.5 text-left transition-colors ${isSelected ? "border-blue-200 bg-blue-50/50 dark:border-blue-800 dark:bg-blue-900/20" : "border-slate-100 hover:border-slate-200 hover:bg-white/40 dark:border-slate-700/50 dark:hover:border-slate-600 dark:hover:bg-white/[0.04]"}`,
|
|
4322
4284
|
children: [
|
|
4323
4285
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
4324
4286
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4325
4287
|
/* @__PURE__ */ jsx(StatusIcon, { className: `h-3.5 w-3.5 ${statusStyle.colorClass}` }),
|
|
4326
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-
|
|
4288
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-slate-900 dark:text-white", children: formatTimestamp2(run.createdAt) })
|
|
4327
4289
|
] }),
|
|
4328
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-
|
|
4290
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-slate-400", children: formatDuration3(run.totalDurationMs) })
|
|
4329
4291
|
] }),
|
|
4330
4292
|
run.error && /* @__PURE__ */ jsx("p", { className: "mt-1 truncate text-[10px] text-red-500", children: run.error })
|
|
4331
4293
|
]
|
|
@@ -4334,7 +4296,7 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4334
4296
|
);
|
|
4335
4297
|
}) }),
|
|
4336
4298
|
selectedRun && selectedRun.nodeResults.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-3 space-y-1", children: [
|
|
4337
|
-
/* @__PURE__ */ jsx("h5", { className: "mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-
|
|
4299
|
+
/* @__PURE__ */ jsx("h5", { className: "mb-1.5 text-[10px] font-semibold uppercase tracking-wider text-slate-400", children: "Nodes" }),
|
|
4338
4300
|
selectedRun.nodeResults.map((nodeResult) => {
|
|
4339
4301
|
const nodeStatusStyle = STATUS_STYLES[nodeResult.status] ?? STATUS_STYLES.pending;
|
|
4340
4302
|
const NodeStatusIcon = nodeStatusStyle.icon;
|
|
@@ -4343,13 +4305,13 @@ function PreviewPanel({ open, onClose, workflowId, loadRuns }) {
|
|
|
4343
4305
|
{
|
|
4344
4306
|
type: "button",
|
|
4345
4307
|
onClick: () => setSelectedNode(nodeResult),
|
|
4346
|
-
className: "flex w-full items-center justify-between rounded px-2 py-1.5 text-xs hover:bg-
|
|
4308
|
+
className: "flex w-full items-center justify-between rounded px-2 py-1.5 text-xs hover:bg-white/40 dark:hover:bg-white/[0.04]",
|
|
4347
4309
|
children: [
|
|
4348
4310
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4349
4311
|
/* @__PURE__ */ jsx(NodeStatusIcon, { className: `h-3 w-3 ${nodeStatusStyle.colorClass}` }),
|
|
4350
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4312
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-700 dark:text-slate-300", children: nodeResult.nodeType })
|
|
4351
4313
|
] }),
|
|
4352
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-
|
|
4314
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-slate-400", children: formatDuration3(nodeResult.durationMs) })
|
|
4353
4315
|
]
|
|
4354
4316
|
},
|
|
4355
4317
|
nodeResult.nodeId
|
|
@@ -4472,39 +4434,39 @@ function DslExportModal({ open, onClose, workflow, graph }) {
|
|
|
4472
4434
|
subtitle: translations("description"),
|
|
4473
4435
|
maxWidth: "2xl",
|
|
4474
4436
|
children: /* @__PURE__ */ jsxs("div", { "data-testid": "dsl-export-modal", children: [
|
|
4475
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
4437
|
+
/* @__PURE__ */ jsx("div", { className: "liquid-divider px-1 py-4", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4 text-sm", children: [
|
|
4476
4438
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
4477
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4478
|
-
/* @__PURE__ */ jsx("p", { className: "font-medium text-
|
|
4439
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-500 dark:text-slate-400", children: translations("workflowName") }),
|
|
4440
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-slate-900 dark:text-white", children: workflow.name })
|
|
4479
4441
|
] }),
|
|
4480
4442
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
4481
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4482
|
-
/* @__PURE__ */ jsxs("p", { className: "font-medium text-
|
|
4443
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-500 dark:text-slate-400", children: translations("version") }),
|
|
4444
|
+
/* @__PURE__ */ jsxs("p", { className: "font-medium text-slate-900 dark:text-white", children: [
|
|
4483
4445
|
"v",
|
|
4484
4446
|
workflow.version
|
|
4485
4447
|
] })
|
|
4486
4448
|
] }),
|
|
4487
4449
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
4488
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4489
|
-
/* @__PURE__ */ jsx("p", { className: "font-medium text-
|
|
4450
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-500 dark:text-slate-400", children: translations("nodes") }),
|
|
4451
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-slate-900 dark:text-white", children: graph.nodes.length })
|
|
4490
4452
|
] }),
|
|
4491
4453
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
4492
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
4493
|
-
/* @__PURE__ */ jsx("p", { className: "font-medium text-
|
|
4454
|
+
/* @__PURE__ */ jsx("span", { className: "text-slate-500 dark:text-slate-400", children: translations("edges") }),
|
|
4455
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-slate-900 dark:text-white", children: graph.edges.length })
|
|
4494
4456
|
] })
|
|
4495
4457
|
] }) }),
|
|
4496
4458
|
/* @__PURE__ */ jsxs("div", { className: "px-1 py-4", children: [
|
|
4497
|
-
/* @__PURE__ */ jsx("div", { className: "mb-2 text-xs font-medium uppercase tracking-wider text-
|
|
4459
|
+
/* @__PURE__ */ jsx("div", { className: "mb-2 text-xs font-medium uppercase tracking-wider text-slate-400 dark:text-slate-500", children: translations("preview") }),
|
|
4498
4460
|
/* @__PURE__ */ jsx(
|
|
4499
4461
|
"pre",
|
|
4500
4462
|
{
|
|
4501
|
-
className: "max-h-64 overflow-auto rounded-lg
|
|
4463
|
+
className: "liquid-surface max-h-64 overflow-auto rounded-lg p-3 text-xs text-slate-700 dark:text-slate-300",
|
|
4502
4464
|
"data-testid": "export-json-preview",
|
|
4503
4465
|
children: previewLines
|
|
4504
4466
|
}
|
|
4505
4467
|
)
|
|
4506
4468
|
] }),
|
|
4507
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-
|
|
4469
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-3 border-t border-slate-200 px-1 py-4 dark:border-slate-700", children: [
|
|
4508
4470
|
/* @__PURE__ */ jsx(
|
|
4509
4471
|
Button,
|
|
4510
4472
|
{
|
|
@@ -5059,5 +5021,5 @@ function useHelpLines() {
|
|
|
5059
5021
|
}
|
|
5060
5022
|
|
|
5061
5023
|
export { AgentModal, AmazonNovaIcon, AnthropicModelIcon, AutoSaveWorkspace, DslExportModal, DslImportModal, DynamicIslandConfirm2 as DynamicIslandConfirm, ExecutionTimelinePanel, MetaLlamaIcon, ModelProviderFlowNode, NodePalette, OutputSchemaBuilder, PipelineSettingsModal, PreviewPanel, RULE_STATUS_OPTIONS, RuleActionBuilder, RuleConditionBuilder, RuleForm, RunInputDialog, RunPanel, RunReplayModal, S3WriteFlowNode, SaveStatusBadge, SubworkflowModal, TIMEZONE_OPTIONS, VariableInspector, VersionHistoryPanel, WorkflowListBar, defaultAgentOutputSchema, defaultRuleAction, defaultRuleCondition, defaultRuleForm, getModelIcon, useCanRedo, useCanUndo, useCanvasShortcuts, useClipboard, useContextMenu, useEditingNodeId, useHasCopied, useHelpLines, useIsRunning, useNodeResults, useSelectedNodeCount, useSubworkflowStore, useUndoRedo };
|
|
5062
|
-
//# sourceMappingURL=chunk-
|
|
5063
|
-
//# sourceMappingURL=chunk-
|
|
5024
|
+
//# sourceMappingURL=chunk-RSCRIDMW.mjs.map
|
|
5025
|
+
//# sourceMappingURL=chunk-RSCRIDMW.mjs.map
|