@datatechsolutions/ui 3.7.5 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astrlabe/index.js +108 -108
- package/dist/astrlabe/index.mjs +4 -4
- package/dist/astrlabe/workflow-canvas.js +4 -4
- package/dist/astrlabe/workflow-canvas.mjs +3 -3
- package/dist/{chunk-GAN7AKZ2.mjs → chunk-32DHEVOH.mjs} +3 -3
- package/dist/{chunk-GAN7AKZ2.mjs.map → chunk-32DHEVOH.mjs.map} +1 -1
- package/dist/{chunk-IYDGO7RW.js → chunk-3H5CFLVK.js} +135 -135
- package/dist/{chunk-IYDGO7RW.js.map → chunk-3H5CFLVK.js.map} +1 -1
- package/dist/{chunk-QL2JYRBN.js → chunk-3X3IYDG6.js} +68 -68
- package/dist/{chunk-QL2JYRBN.js.map → chunk-3X3IYDG6.js.map} +1 -1
- package/dist/{chunk-N5365CGD.mjs → chunk-57E4TCB2.mjs} +3 -3
- package/dist/{chunk-N5365CGD.mjs.map → chunk-57E4TCB2.mjs.map} +1 -1
- package/dist/{chunk-4HP7XS5I.mjs → chunk-5W6LMDXV.mjs} +4 -4
- package/dist/{chunk-4HP7XS5I.mjs.map → chunk-5W6LMDXV.mjs.map} +1 -1
- package/dist/{chunk-EIZM2EQA.mjs → chunk-5YVOLHSW.mjs} +4 -4
- package/dist/{chunk-EIZM2EQA.mjs.map → chunk-5YVOLHSW.mjs.map} +1 -1
- package/dist/{chunk-KZSL7AXW.mjs → chunk-74BU2EBZ.mjs} +6 -6
- package/dist/{chunk-KZSL7AXW.mjs.map → chunk-74BU2EBZ.mjs.map} +1 -1
- package/dist/{chunk-7WIWDSF6.js → chunk-7JZFNKJD.js} +36 -36
- package/dist/{chunk-7WIWDSF6.js.map → chunk-7JZFNKJD.js.map} +1 -1
- package/dist/{chunk-DCBRGVD3.mjs → chunk-A4A3SQTV.mjs} +3 -3
- package/dist/{chunk-DCBRGVD3.mjs.map → chunk-A4A3SQTV.mjs.map} +1 -1
- package/dist/{chunk-JUDQX6MP.mjs → chunk-CZZOCKEA.mjs} +3 -3
- package/dist/{chunk-JUDQX6MP.mjs.map → chunk-CZZOCKEA.mjs.map} +1 -1
- package/dist/{chunk-DWIBK7GV.js → chunk-E57RZXOR.js} +25 -25
- package/dist/{chunk-DWIBK7GV.js.map → chunk-E57RZXOR.js.map} +1 -1
- package/dist/{chunk-Z3BMHKKH.mjs → chunk-E6C7MFHJ.mjs} +3 -3
- package/dist/{chunk-Z3BMHKKH.mjs.map → chunk-E6C7MFHJ.mjs.map} +1 -1
- package/dist/{chunk-P7GVXI7Y.mjs → chunk-EWYAM4WJ.mjs} +3 -3
- package/dist/{chunk-P7GVXI7Y.mjs.map → chunk-EWYAM4WJ.mjs.map} +1 -1
- package/dist/{chunk-Y2FR242F.js → chunk-F35GFICG.js} +13 -13
- package/dist/{chunk-Y2FR242F.js.map → chunk-F35GFICG.js.map} +1 -1
- package/dist/{chunk-BEUPW5WS.js → chunk-FKUIVS6I.js} +28 -28
- package/dist/{chunk-BEUPW5WS.js.map → chunk-FKUIVS6I.js.map} +1 -1
- package/dist/{chunk-GD6FHRHV.js → chunk-FNA66TT4.js} +3 -3
- package/dist/{chunk-GD6FHRHV.js.map → chunk-FNA66TT4.js.map} +1 -1
- package/dist/{chunk-RBB5YGWH.js → chunk-H37VDL7Y.js} +4 -4
- package/dist/{chunk-RBB5YGWH.js.map → chunk-H37VDL7Y.js.map} +1 -1
- package/dist/{chunk-KI4UPW4Z.js → chunk-HBOORO52.js} +4 -4
- package/dist/{chunk-KI4UPW4Z.js.map → chunk-HBOORO52.js.map} +1 -1
- package/dist/{chunk-MGZTZELL.mjs → chunk-KKXI7CPF.mjs} +3 -3
- package/dist/{chunk-MGZTZELL.mjs.map → chunk-KKXI7CPF.mjs.map} +1 -1
- package/dist/{chunk-IKH5IRDK.mjs → chunk-PCUINUIC.mjs} +3 -3
- package/dist/{chunk-IKH5IRDK.mjs.map → chunk-PCUINUIC.mjs.map} +1 -1
- package/dist/{chunk-CTCO2YI5.mjs → chunk-PYNXIDG3.mjs} +3 -3
- package/dist/{chunk-CTCO2YI5.mjs.map → chunk-PYNXIDG3.mjs.map} +1 -1
- package/dist/{chunk-MFAVWJWE.js → chunk-Q4QORAMH.js} +10 -10
- package/dist/{chunk-MFAVWJWE.js.map → chunk-Q4QORAMH.js.map} +1 -1
- package/dist/{chunk-ZF7RJNPD.js → chunk-Q7HRCCFT.js} +45 -45
- package/dist/{chunk-ZF7RJNPD.js.map → chunk-Q7HRCCFT.js.map} +1 -1
- package/dist/{chunk-R2RPRRB4.js → chunk-RCHTRG7R.js} +55 -55
- package/dist/{chunk-R2RPRRB4.js.map → chunk-RCHTRG7R.js.map} +1 -1
- package/dist/{chunk-FIB2CFJK.js → chunk-TCP45Q4B.js} +9 -9
- package/dist/{chunk-FIB2CFJK.js.map → chunk-TCP45Q4B.js.map} +1 -1
- package/dist/{chunk-SUU7XPRX.js → chunk-TJPPZU77.js} +34 -34
- package/dist/{chunk-SUU7XPRX.js.map → chunk-TJPPZU77.js.map} +1 -1
- package/dist/{chunk-XT76DMP5.js → chunk-VPFVW7ZF.js} +35 -35
- package/dist/{chunk-XT76DMP5.js.map → chunk-VPFVW7ZF.js.map} +1 -1
- package/dist/{chunk-IKHWYYZC.mjs → chunk-VS6PTRQ7.mjs} +3 -3
- package/dist/{chunk-IKHWYYZC.mjs.map → chunk-VS6PTRQ7.mjs.map} +1 -1
- package/dist/{chunk-YNHQ36UU.mjs → chunk-WDBVIU7W.mjs} +3 -3
- package/dist/{chunk-YNHQ36UU.mjs.map → chunk-WDBVIU7W.mjs.map} +1 -1
- package/dist/{chunk-MRLEINJN.mjs → chunk-ZP37M2QK.mjs} +7 -7
- package/dist/{chunk-MRLEINJN.mjs.map → chunk-ZP37M2QK.mjs.map} +1 -1
- package/dist/index.js +665 -665
- package/dist/index.mjs +2 -2
- package/dist/platform/admin/index.js +10 -10
- package/dist/platform/admin/index.mjs +4 -4
- package/dist/platform/agents-workspace.js +7 -7
- package/dist/platform/agents-workspace.mjs +6 -6
- package/dist/platform/app-shell.js +4 -4
- package/dist/platform/app-shell.mjs +3 -3
- package/dist/platform/auth/index.js +22 -22
- package/dist/platform/auth/index.mjs +4 -4
- package/dist/platform/billing/index.js +4 -4
- package/dist/platform/billing/index.mjs +3 -3
- package/dist/platform/impersonation/index.js +4 -4
- package/dist/platform/impersonation/index.mjs +3 -3
- package/dist/platform/index.js +78 -78
- package/dist/platform/index.mjs +18 -18
- package/dist/platform/pages/index.d.mts +36 -0
- package/dist/platform/pages/index.d.ts +36 -0
- package/dist/platform/pages/index.js +457 -260
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +224 -27
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +7 -7
- package/dist/platform/settings/index.mjs +6 -6
- package/dist/platform/workflow-canvas-shell.js +5 -5
- package/dist/platform/workflow-canvas-shell.mjs +4 -4
- package/package.json +1 -1
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunk3T2WGL47_js = require('../../chunk-3T2WGL47.js');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
5
|
+
var chunkFKUIVS6I_js = require('../../chunk-FKUIVS6I.js');
|
|
6
|
+
var chunkTJPPZU77_js = require('../../chunk-TJPPZU77.js');
|
|
7
|
+
var chunk3H5CFLVK_js = require('../../chunk-3H5CFLVK.js');
|
|
8
8
|
require('../../chunk-55H6WZQP.js');
|
|
9
9
|
require('../../chunk-DJDZIRM6.js');
|
|
10
|
-
require('../../chunk-
|
|
11
|
-
var
|
|
10
|
+
require('../../chunk-3X3IYDG6.js');
|
|
11
|
+
var chunkFNA66TT4_js = require('../../chunk-FNA66TT4.js');
|
|
12
|
+
require('../../chunk-YXN2K77G.js');
|
|
12
13
|
require('../../chunk-SY4MUT5V.js');
|
|
13
14
|
require('../../chunk-2OZZH2IO.js');
|
|
14
|
-
require('../../chunk-YXN2K77G.js');
|
|
15
15
|
require('../../chunk-EZQ2D47U.js');
|
|
16
16
|
var chunkBHOT22QL_js = require('../../chunk-BHOT22QL.js');
|
|
17
17
|
require('../../chunk-UZ3CMNUJ.js');
|
|
@@ -27,7 +27,7 @@ function AgentsModelsPageView({ labels, models, loading }) {
|
|
|
27
27
|
const filteredModels = searchTerm.trim() ? allModels.filter((model) => model.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allModels;
|
|
28
28
|
const isEmpty = allModels.length === 0;
|
|
29
29
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
30
|
-
|
|
30
|
+
chunkFNA66TT4_js.HeroSection,
|
|
31
31
|
{
|
|
32
32
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-5 w-5" }),
|
|
33
33
|
label: labels.title,
|
|
@@ -36,9 +36,9 @@ function AgentsModelsPageView({ labels, models, loading }) {
|
|
|
36
36
|
gradient: "from-emerald-500 to-teal-700"
|
|
37
37
|
}
|
|
38
38
|
);
|
|
39
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
40
40
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41
|
-
|
|
41
|
+
chunkFNA66TT4_js.SearchBar,
|
|
42
42
|
{
|
|
43
43
|
searchTerm,
|
|
44
44
|
onSearchChange: setSearchTerm,
|
|
@@ -46,7 +46,7 @@ function AgentsModelsPageView({ labels, models, loading }) {
|
|
|
46
46
|
}
|
|
47
47
|
),
|
|
48
48
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredModels.map((model) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
49
|
-
|
|
49
|
+
chunkFNA66TT4_js.EntityCard,
|
|
50
50
|
{
|
|
51
51
|
accentGradient: "from-emerald-500 to-teal-700",
|
|
52
52
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-emerald-500/10 text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CubeTransparentIcon, { className: "h-6 w-6" }) }),
|
|
@@ -57,7 +57,7 @@ function AgentsModelsPageView({ labels, models, loading }) {
|
|
|
57
57
|
model.id
|
|
58
58
|
)) })
|
|
59
59
|
] });
|
|
60
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
60
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content });
|
|
61
61
|
}
|
|
62
62
|
function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpdate, onDelete }) {
|
|
63
63
|
const [editing, setEditing] = react.useState(null);
|
|
@@ -68,7 +68,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
68
68
|
const filteredAgents = searchTerm.trim() ? allAgents.filter((agent) => String(agent.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allAgents;
|
|
69
69
|
const isEmpty = allAgents.length === 0;
|
|
70
70
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
71
|
-
|
|
71
|
+
chunkFNA66TT4_js.HeroSection,
|
|
72
72
|
{
|
|
73
73
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
|
|
74
74
|
label: labels.title,
|
|
@@ -76,7 +76,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
76
76
|
subtitle: labels.subtitle,
|
|
77
77
|
gradient: "from-violet-500 to-indigo-700",
|
|
78
78
|
toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
79
|
-
|
|
79
|
+
chunkFNA66TT4_js.SearchBar,
|
|
80
80
|
{
|
|
81
81
|
searchTerm,
|
|
82
82
|
onSearchChange: setSearchTerm,
|
|
@@ -85,7 +85,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
85
85
|
}
|
|
86
86
|
) : void 0,
|
|
87
87
|
actions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
-
|
|
88
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
89
89
|
{
|
|
90
90
|
mode: "desktop",
|
|
91
91
|
label: labels.addAgent,
|
|
@@ -96,7 +96,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
96
96
|
}
|
|
97
97
|
);
|
|
98
98
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
99
|
-
|
|
99
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
100
100
|
{
|
|
101
101
|
mode: "mobile",
|
|
102
102
|
label: labels.addAgent,
|
|
@@ -104,10 +104,10 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
104
104
|
accent: "violet"
|
|
105
105
|
}
|
|
106
106
|
);
|
|
107
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredAgents.map((agent) => {
|
|
108
108
|
const modelRecord = models.find((model) => model.id === String(agent.modelId ?? ""));
|
|
109
109
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
110
|
-
|
|
110
|
+
chunkFNA66TT4_js.EntityCard,
|
|
111
111
|
{
|
|
112
112
|
accentGradient: "from-violet-500 to-indigo-700",
|
|
113
113
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-violet-500/10 text-violet-600 dark:bg-violet-500/20 dark:text-violet-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-6 w-6" }) }),
|
|
@@ -144,7 +144,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
144
144
|
);
|
|
145
145
|
}) });
|
|
146
146
|
const renderForm = (initial, onSubmit) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
147
|
-
|
|
147
|
+
chunkFNA66TT4_js.GlassModal,
|
|
148
148
|
{
|
|
149
149
|
open: true,
|
|
150
150
|
onClose: () => {
|
|
@@ -167,18 +167,18 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
167
167
|
outputSchema: String(form.get("outputSchema") ?? "").trim() || void 0
|
|
168
168
|
});
|
|
169
169
|
},
|
|
170
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
171
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
172
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
173
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
174
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
175
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
176
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
170
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
171
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
|
|
172
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
|
|
173
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
|
|
174
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "temperature", label: labels.temperature, type: "number", step: 0.1, min: 0, max: 2, defaultValue: String(initial.temperature ?? 0.2) }),
|
|
175
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
|
|
176
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
|
|
177
177
|
] })
|
|
178
178
|
}
|
|
179
179
|
);
|
|
180
180
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
181
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
181
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content, mobileAction }),
|
|
182
182
|
createOpen && renderForm({ title: labels.createTitle }, (input) => {
|
|
183
183
|
onCreate(input);
|
|
184
184
|
setCreateOpen(false);
|
|
@@ -236,7 +236,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
236
236
|
}) : allPrompts;
|
|
237
237
|
const isEmpty = allPrompts.length === 0;
|
|
238
238
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
239
|
-
|
|
239
|
+
chunkFNA66TT4_js.HeroSection,
|
|
240
240
|
{
|
|
241
241
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-5 w-5" }),
|
|
242
242
|
label: labels.title,
|
|
@@ -244,7 +244,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
244
244
|
subtitle: labels.subtitle,
|
|
245
245
|
gradient: "from-sky-500 to-blue-700",
|
|
246
246
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
247
|
-
|
|
247
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
248
248
|
{
|
|
249
249
|
mode: "desktop",
|
|
250
250
|
label: labels.addPrompt,
|
|
@@ -255,7 +255,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
255
255
|
}
|
|
256
256
|
);
|
|
257
257
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
258
|
-
|
|
258
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
259
259
|
{
|
|
260
260
|
mode: "mobile",
|
|
261
261
|
label: labels.addPrompt,
|
|
@@ -263,9 +263,9 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
263
263
|
accent: "sky"
|
|
264
264
|
}
|
|
265
265
|
);
|
|
266
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
266
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
267
267
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
268
|
-
|
|
268
|
+
chunkFNA66TT4_js.SearchBar,
|
|
269
269
|
{
|
|
270
270
|
searchTerm,
|
|
271
271
|
onSearchChange: setSearchTerm,
|
|
@@ -276,7 +276,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
276
276
|
const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
|
|
277
277
|
const key = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
|
|
278
278
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
279
|
-
|
|
279
|
+
chunkFNA66TT4_js.EntityCard,
|
|
280
280
|
{
|
|
281
281
|
accentGradient: "from-sky-500 to-blue-700",
|
|
282
282
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-sky-500/10 text-sky-600 dark:bg-sky-500/20 dark:text-sky-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-6 w-6" }) }),
|
|
@@ -305,9 +305,9 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
305
305
|
}) })
|
|
306
306
|
] });
|
|
307
307
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
308
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
308
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content, mobileAction }),
|
|
309
309
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
310
|
-
|
|
310
|
+
chunkFNA66TT4_js.GlassModal,
|
|
311
311
|
{
|
|
312
312
|
open: createOpen,
|
|
313
313
|
onClose: () => setCreateOpen(false),
|
|
@@ -331,11 +331,11 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
331
331
|
});
|
|
332
332
|
setCreateOpen(false);
|
|
333
333
|
},
|
|
334
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
335
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
336
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
334
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
335
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
|
|
336
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
|
|
337
337
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
338
|
-
|
|
338
|
+
chunkFNA66TT4_js.FormSelect,
|
|
339
339
|
{
|
|
340
340
|
name: "isActive",
|
|
341
341
|
label: labels.isActive,
|
|
@@ -343,10 +343,10 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
343
343
|
defaultValue: "true"
|
|
344
344
|
}
|
|
345
345
|
),
|
|
346
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
347
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
348
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
349
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
346
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "reason", label: labels.reason }),
|
|
347
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
|
|
348
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
|
|
349
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
|
|
350
350
|
] })
|
|
351
351
|
}
|
|
352
352
|
)
|
|
@@ -381,7 +381,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
381
381
|
const filteredTools = searchTerm.trim() ? allTools.filter((tool) => tool.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTools;
|
|
382
382
|
const isEmpty = allTools.length === 0;
|
|
383
383
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
384
|
-
|
|
384
|
+
chunkFNA66TT4_js.HeroSection,
|
|
385
385
|
{
|
|
386
386
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }),
|
|
387
387
|
label: labels.title,
|
|
@@ -389,7 +389,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
389
389
|
subtitle: labels.subtitle,
|
|
390
390
|
gradient: "from-amber-500 to-orange-700",
|
|
391
391
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
392
|
-
|
|
392
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
393
393
|
{
|
|
394
394
|
mode: "desktop",
|
|
395
395
|
label: labels.addTool,
|
|
@@ -400,7 +400,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
400
400
|
}
|
|
401
401
|
);
|
|
402
402
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
403
|
-
|
|
403
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
404
404
|
{
|
|
405
405
|
mode: "mobile",
|
|
406
406
|
label: labels.addTool,
|
|
@@ -408,9 +408,9 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
408
408
|
accent: "amber"
|
|
409
409
|
}
|
|
410
410
|
);
|
|
411
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
411
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
412
412
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
413
|
-
|
|
413
|
+
chunkFNA66TT4_js.SearchBar,
|
|
414
414
|
{
|
|
415
415
|
searchTerm,
|
|
416
416
|
onSearchChange: setSearchTerm,
|
|
@@ -418,7 +418,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
418
418
|
}
|
|
419
419
|
),
|
|
420
420
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
421
|
-
|
|
421
|
+
chunkFNA66TT4_js.EntityCard,
|
|
422
422
|
{
|
|
423
423
|
accentGradient: "from-amber-500 to-orange-700",
|
|
424
424
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-amber-500/10 text-amber-600 dark:bg-amber-500/20 dark:text-amber-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-6 w-6" }) }),
|
|
@@ -446,7 +446,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
446
446
|
)) })
|
|
447
447
|
] });
|
|
448
448
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
449
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
449
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content, mobileAction }),
|
|
450
450
|
createOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
451
451
|
ToolEditor,
|
|
452
452
|
{
|
|
@@ -504,7 +504,7 @@ function ToolEditor({
|
|
|
504
504
|
setValue((v) => ({ ...v, [key]: next }));
|
|
505
505
|
};
|
|
506
506
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
507
|
-
|
|
507
|
+
chunkFNA66TT4_js.GlassModal,
|
|
508
508
|
{
|
|
509
509
|
open: true,
|
|
510
510
|
onClose,
|
|
@@ -517,9 +517,9 @@ function ToolEditor({
|
|
|
517
517
|
handleSubmit();
|
|
518
518
|
},
|
|
519
519
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
520
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
520
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
521
521
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
522
|
-
|
|
522
|
+
chunkFNA66TT4_js.FormInput,
|
|
523
523
|
{
|
|
524
524
|
label: "Name",
|
|
525
525
|
required: true,
|
|
@@ -529,7 +529,7 @@ function ToolEditor({
|
|
|
529
529
|
}
|
|
530
530
|
),
|
|
531
531
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
532
|
-
|
|
532
|
+
chunkFNA66TT4_js.FormSelect,
|
|
533
533
|
{
|
|
534
534
|
label: "Tool type",
|
|
535
535
|
value: value.toolType,
|
|
@@ -539,7 +539,7 @@ function ToolEditor({
|
|
|
539
539
|
}
|
|
540
540
|
),
|
|
541
541
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
542
|
-
|
|
542
|
+
chunkFNA66TT4_js.FormSelect,
|
|
543
543
|
{
|
|
544
544
|
label: "Enabled",
|
|
545
545
|
value: value.enabled ? "true" : "false",
|
|
@@ -548,7 +548,7 @@ function ToolEditor({
|
|
|
548
548
|
}
|
|
549
549
|
),
|
|
550
550
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
551
|
-
|
|
551
|
+
chunkFNA66TT4_js.FormInput,
|
|
552
552
|
{
|
|
553
553
|
label: "Icon (optional)",
|
|
554
554
|
value: value.icon ?? "",
|
|
@@ -558,7 +558,7 @@ function ToolEditor({
|
|
|
558
558
|
)
|
|
559
559
|
] }),
|
|
560
560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
561
|
-
|
|
561
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
562
562
|
{
|
|
563
563
|
label: "Description",
|
|
564
564
|
rows: 2,
|
|
@@ -606,7 +606,7 @@ function ParametersEditor({
|
|
|
606
606
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
607
607
|
parameters.map((param, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_160px_1fr_110px_auto] items-end gap-2", children: [
|
|
608
608
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
609
|
-
|
|
609
|
+
chunkFNA66TT4_js.FormInput,
|
|
610
610
|
{
|
|
611
611
|
label: "Name",
|
|
612
612
|
value: param.name,
|
|
@@ -615,7 +615,7 @@ function ParametersEditor({
|
|
|
615
615
|
}
|
|
616
616
|
),
|
|
617
617
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
618
|
-
|
|
618
|
+
chunkFNA66TT4_js.FormSelect,
|
|
619
619
|
{
|
|
620
620
|
label: "Type",
|
|
621
621
|
value: param.type,
|
|
@@ -624,7 +624,7 @@ function ParametersEditor({
|
|
|
624
624
|
}
|
|
625
625
|
),
|
|
626
626
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
627
|
-
|
|
627
|
+
chunkFNA66TT4_js.FormInput,
|
|
628
628
|
{
|
|
629
629
|
label: "Description",
|
|
630
630
|
value: param.description,
|
|
@@ -658,9 +658,9 @@ function HandlerConfigEditor({
|
|
|
658
658
|
if (toolType === "http") {
|
|
659
659
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
660
660
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "HTTP handler" }),
|
|
661
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
661
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
662
662
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
663
|
-
|
|
663
|
+
chunkFNA66TT4_js.FormSelect,
|
|
664
664
|
{
|
|
665
665
|
label: "Method",
|
|
666
666
|
value: stringProp(config, "method", "GET"),
|
|
@@ -669,7 +669,7 @@ function HandlerConfigEditor({
|
|
|
669
669
|
}
|
|
670
670
|
),
|
|
671
671
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
672
|
-
|
|
672
|
+
chunkFNA66TT4_js.FormInput,
|
|
673
673
|
{
|
|
674
674
|
label: "URL template",
|
|
675
675
|
value: stringProp(config, "url"),
|
|
@@ -679,7 +679,7 @@ function HandlerConfigEditor({
|
|
|
679
679
|
)
|
|
680
680
|
] }),
|
|
681
681
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
682
|
-
|
|
682
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
683
683
|
{
|
|
684
684
|
label: "Headers (JSON)",
|
|
685
685
|
rows: 3,
|
|
@@ -689,7 +689,7 @@ function HandlerConfigEditor({
|
|
|
689
689
|
}
|
|
690
690
|
),
|
|
691
691
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
692
|
-
|
|
692
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
693
693
|
{
|
|
694
694
|
label: "Body template",
|
|
695
695
|
rows: 3,
|
|
@@ -704,7 +704,7 @@ function HandlerConfigEditor({
|
|
|
704
704
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
705
705
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Function handler" }),
|
|
706
706
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
707
|
-
|
|
707
|
+
chunkFNA66TT4_js.FormInput,
|
|
708
708
|
{
|
|
709
709
|
label: "Implementation key",
|
|
710
710
|
value: stringProp(config, "implementationKey"),
|
|
@@ -718,9 +718,9 @@ function HandlerConfigEditor({
|
|
|
718
718
|
if (toolType === "database_query") {
|
|
719
719
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
720
720
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Database query handler" }),
|
|
721
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
721
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
722
722
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
723
|
-
|
|
723
|
+
chunkFNA66TT4_js.FormInput,
|
|
724
724
|
{
|
|
725
725
|
label: "Datasource ID",
|
|
726
726
|
value: stringProp(config, "datasourceId"),
|
|
@@ -729,7 +729,7 @@ function HandlerConfigEditor({
|
|
|
729
729
|
}
|
|
730
730
|
),
|
|
731
731
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
732
|
-
|
|
732
|
+
chunkFNA66TT4_js.FormInput,
|
|
733
733
|
{
|
|
734
734
|
label: "Max rows",
|
|
735
735
|
type: "number",
|
|
@@ -739,7 +739,7 @@ function HandlerConfigEditor({
|
|
|
739
739
|
)
|
|
740
740
|
] }),
|
|
741
741
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
742
|
-
|
|
742
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
743
743
|
{
|
|
744
744
|
label: "Query template",
|
|
745
745
|
rows: 4,
|
|
@@ -755,7 +755,7 @@ function HandlerConfigEditor({
|
|
|
755
755
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Code execution handler" }),
|
|
756
756
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs text-amber-600 dark:text-amber-400", children: "Experimental \u2014 sandbox is not yet enforced. Only enable for trusted tools." }),
|
|
757
757
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
758
|
-
|
|
758
|
+
chunkFNA66TT4_js.FormSelect,
|
|
759
759
|
{
|
|
760
760
|
label: "Language",
|
|
761
761
|
value: stringProp(config, "language", "javascript"),
|
|
@@ -767,7 +767,7 @@ function HandlerConfigEditor({
|
|
|
767
767
|
}
|
|
768
768
|
),
|
|
769
769
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
770
|
-
|
|
770
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
771
771
|
{
|
|
772
772
|
label: "Code",
|
|
773
773
|
rows: 6,
|
|
@@ -780,9 +780,9 @@ function HandlerConfigEditor({
|
|
|
780
780
|
}
|
|
781
781
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
782
782
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "API call handler" }),
|
|
783
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
783
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
784
784
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
785
|
-
|
|
785
|
+
chunkFNA66TT4_js.FormInput,
|
|
786
786
|
{
|
|
787
787
|
label: "URL",
|
|
788
788
|
value: stringProp(config, "url"),
|
|
@@ -790,7 +790,7 @@ function HandlerConfigEditor({
|
|
|
790
790
|
}
|
|
791
791
|
),
|
|
792
792
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
793
|
-
|
|
793
|
+
chunkFNA66TT4_js.FormSelect,
|
|
794
794
|
{
|
|
795
795
|
label: "Auth",
|
|
796
796
|
value: stringProp(config, "authType", "bearer"),
|
|
@@ -804,7 +804,7 @@ function HandlerConfigEditor({
|
|
|
804
804
|
}
|
|
805
805
|
),
|
|
806
806
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
807
|
-
|
|
807
|
+
chunkFNA66TT4_js.FormInput,
|
|
808
808
|
{
|
|
809
809
|
label: "Credential secret id",
|
|
810
810
|
value: stringProp(config, "credentialRef"),
|
|
@@ -937,7 +937,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
937
937
|
const filteredRules = searchTerm.trim() ? allRules.filter((rule) => (rule.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allRules;
|
|
938
938
|
const isEmpty = allRules.length === 0;
|
|
939
939
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
940
|
-
|
|
940
|
+
chunkFNA66TT4_js.HeroSection,
|
|
941
941
|
{
|
|
942
942
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
|
|
943
943
|
label: labels.title,
|
|
@@ -945,7 +945,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
945
945
|
subtitle: labels.subtitle,
|
|
946
946
|
gradient: "from-fuchsia-500 to-purple-700",
|
|
947
947
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
948
|
-
|
|
948
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
949
949
|
{
|
|
950
950
|
mode: "desktop",
|
|
951
951
|
label: labels.addRule,
|
|
@@ -956,7 +956,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
956
956
|
}
|
|
957
957
|
);
|
|
958
958
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
959
|
-
|
|
959
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
960
960
|
{
|
|
961
961
|
mode: "mobile",
|
|
962
962
|
label: labels.addRule,
|
|
@@ -964,9 +964,9 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
964
964
|
accent: "fuchsia"
|
|
965
965
|
}
|
|
966
966
|
);
|
|
967
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
967
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
968
968
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
969
|
-
|
|
969
|
+
chunkFNA66TT4_js.SearchBar,
|
|
970
970
|
{
|
|
971
971
|
searchTerm,
|
|
972
972
|
onSearchChange: setSearchTerm,
|
|
@@ -974,7 +974,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
974
974
|
}
|
|
975
975
|
),
|
|
976
976
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRules.map((rule) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
977
|
-
|
|
977
|
+
chunkFNA66TT4_js.EntityCard,
|
|
978
978
|
{
|
|
979
979
|
accentGradient: "from-fuchsia-500 to-purple-700",
|
|
980
980
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-fuchsia-500/10 text-fuchsia-600 dark:bg-fuchsia-500/20 dark:text-fuchsia-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-6 w-6" }) }),
|
|
@@ -1002,13 +1002,13 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
1002
1002
|
)) })
|
|
1003
1003
|
] });
|
|
1004
1004
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1005
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1005
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content, mobileAction }),
|
|
1006
1006
|
createOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1007
1007
|
RuleEditor,
|
|
1008
1008
|
{
|
|
1009
1009
|
title: labels.createTitle,
|
|
1010
1010
|
saveLabel: labels.save,
|
|
1011
|
-
initial:
|
|
1011
|
+
initial: chunk3H5CFLVK_js.defaultRuleForm(),
|
|
1012
1012
|
onClose: () => setCreateOpen(false),
|
|
1013
1013
|
onSubmit: (value) => {
|
|
1014
1014
|
onCreate(value);
|
|
@@ -1040,7 +1040,7 @@ function RuleEditor({
|
|
|
1040
1040
|
}) {
|
|
1041
1041
|
const [value, setValue] = react.useState(initial);
|
|
1042
1042
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1043
|
-
|
|
1043
|
+
chunkFNA66TT4_js.GlassModal,
|
|
1044
1044
|
{
|
|
1045
1045
|
open: true,
|
|
1046
1046
|
onClose,
|
|
@@ -1052,12 +1052,12 @@ function RuleEditor({
|
|
|
1052
1052
|
event.preventDefault();
|
|
1053
1053
|
onSubmit(value);
|
|
1054
1054
|
},
|
|
1055
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1055
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunk3H5CFLVK_js.RuleForm, { value, onChange: setValue })
|
|
1056
1056
|
}
|
|
1057
1057
|
);
|
|
1058
1058
|
}
|
|
1059
1059
|
function ruleToFormValue(rule) {
|
|
1060
|
-
const base =
|
|
1060
|
+
const base = chunk3H5CFLVK_js.defaultRuleForm();
|
|
1061
1061
|
const rawCondition = rule.condition ?? rule.conditions;
|
|
1062
1062
|
const rawAction = pickAction(rule);
|
|
1063
1063
|
return {
|
|
@@ -1188,7 +1188,7 @@ var SAMPLE_DATASOURCES = [
|
|
|
1188
1188
|
];
|
|
1189
1189
|
function getDialectLabel(dialect) {
|
|
1190
1190
|
if (!dialect) return "Unknown";
|
|
1191
|
-
for (const category of
|
|
1191
|
+
for (const category of chunkTJPPZU77_js.DIALECT_CATEGORIES) {
|
|
1192
1192
|
const found = category.dialects.find((d) => d.value === dialect);
|
|
1193
1193
|
if (found) return found.label;
|
|
1194
1194
|
}
|
|
@@ -1196,12 +1196,12 @@ function getDialectLabel(dialect) {
|
|
|
1196
1196
|
}
|
|
1197
1197
|
function getDialectGradient(dialect) {
|
|
1198
1198
|
if (!dialect) return "from-gray-400 to-gray-500";
|
|
1199
|
-
const category =
|
|
1199
|
+
const category = chunkTJPPZU77_js.findCategory(dialect);
|
|
1200
1200
|
return category?.gradient ?? "from-gray-400 to-gray-500";
|
|
1201
1201
|
}
|
|
1202
1202
|
function getDialectIcon(dialect) {
|
|
1203
1203
|
if (!dialect) return outline.CircleStackIcon;
|
|
1204
|
-
const category =
|
|
1204
|
+
const category = chunkTJPPZU77_js.findCategory(dialect);
|
|
1205
1205
|
return category?.icon ?? outline.CircleStackIcon;
|
|
1206
1206
|
}
|
|
1207
1207
|
var DIALECT_LOGO = {
|
|
@@ -1275,7 +1275,7 @@ function DatasourcesPageView({
|
|
|
1275
1275
|
}
|
|
1276
1276
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
1277
1277
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1278
|
-
|
|
1278
|
+
chunkFNA66TT4_js.HeroSection,
|
|
1279
1279
|
{
|
|
1280
1280
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
|
|
1281
1281
|
label: labels.title,
|
|
@@ -1283,7 +1283,7 @@ function DatasourcesPageView({
|
|
|
1283
1283
|
subtitle: labels.subtitle,
|
|
1284
1284
|
gradient: "from-amber-500 to-orange-600",
|
|
1285
1285
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1286
|
-
|
|
1286
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
1287
1287
|
{
|
|
1288
1288
|
mode: "desktop",
|
|
1289
1289
|
label: labels.addDatasource,
|
|
@@ -1294,7 +1294,7 @@ function DatasourcesPageView({
|
|
|
1294
1294
|
}
|
|
1295
1295
|
),
|
|
1296
1296
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1297
|
-
|
|
1297
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
1298
1298
|
{
|
|
1299
1299
|
mode: "mobile",
|
|
1300
1300
|
label: labels.addDatasource,
|
|
@@ -1303,7 +1303,7 @@ function DatasourcesPageView({
|
|
|
1303
1303
|
}
|
|
1304
1304
|
),
|
|
1305
1305
|
!isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1306
|
-
|
|
1306
|
+
chunkFNA66TT4_js.SearchBar,
|
|
1307
1307
|
{
|
|
1308
1308
|
searchTerm,
|
|
1309
1309
|
onSearchChange: setSearchTerm,
|
|
@@ -1311,7 +1311,7 @@ function DatasourcesPageView({
|
|
|
1311
1311
|
}
|
|
1312
1312
|
),
|
|
1313
1313
|
isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1314
|
-
|
|
1314
|
+
chunkFNA66TT4_js.PageEmptyState,
|
|
1315
1315
|
{
|
|
1316
1316
|
title: labels.emptyTitle,
|
|
1317
1317
|
message: labels.emptyDescription,
|
|
@@ -1325,7 +1325,7 @@ function DatasourcesPageView({
|
|
|
1325
1325
|
const logoSrc = getDialectLogoSrc(ds.dialect);
|
|
1326
1326
|
const iconElement = logoSrc ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface flex h-11 w-11 items-center justify-center rounded-lg", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoSrc, alt: dialectLabel, className: "h-7 w-7 object-contain" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-11 w-11 items-center justify-center rounded-lg bg-gradient-to-br ${gradient} shadow-lg`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-6 w-6 text-white" }) });
|
|
1327
1327
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1328
|
-
|
|
1328
|
+
chunkFNA66TT4_js.EntityCard,
|
|
1329
1329
|
{
|
|
1330
1330
|
accentGradient: gradient,
|
|
1331
1331
|
icon: iconElement,
|
|
@@ -1355,7 +1355,7 @@ function DatasourcesPageView({
|
|
|
1355
1355
|
);
|
|
1356
1356
|
}) }),
|
|
1357
1357
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1358
|
-
|
|
1358
|
+
chunkTJPPZU77_js.DatasourceModal,
|
|
1359
1359
|
{
|
|
1360
1360
|
open: modalOpen,
|
|
1361
1361
|
onClose: () => setModalOpen(false),
|
|
@@ -1370,7 +1370,7 @@ function DashboardPageView({ labels, appLogo }) {
|
|
|
1370
1370
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center mb-6", children: appLogo }),
|
|
1371
1371
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-base text-slate-600 dark:text-slate-300", children: labels.subtitle })
|
|
1372
1372
|
] });
|
|
1373
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1373
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content: null });
|
|
1374
1374
|
}
|
|
1375
1375
|
function AgentsIndexPageView({ labels }) {
|
|
1376
1376
|
const Link = chunkS7KHTUHA_js.useLink();
|
|
@@ -1384,7 +1384,7 @@ function AgentsIndexPageView({ labels }) {
|
|
|
1384
1384
|
const filteredTiles = searchTerm.trim() ? allTiles.filter((tile) => tile.title.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTiles;
|
|
1385
1385
|
const isEmpty = allTiles.length === 0;
|
|
1386
1386
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1387
|
-
|
|
1387
|
+
chunkFNA66TT4_js.HeroSection,
|
|
1388
1388
|
{
|
|
1389
1389
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
|
|
1390
1390
|
label: labels.title,
|
|
@@ -1395,7 +1395,7 @@ function AgentsIndexPageView({ labels }) {
|
|
|
1395
1395
|
);
|
|
1396
1396
|
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1397
1397
|
!isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1398
|
-
|
|
1398
|
+
chunkFNA66TT4_js.SearchBar,
|
|
1399
1399
|
{
|
|
1400
1400
|
searchTerm,
|
|
1401
1401
|
onSearchChange: setSearchTerm,
|
|
@@ -1405,7 +1405,7 @@ function AgentsIndexPageView({ labels }) {
|
|
|
1405
1405
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: filteredTiles.map((tile) => {
|
|
1406
1406
|
const Icon = tile.icon;
|
|
1407
1407
|
return /* @__PURE__ */ jsxRuntime.jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1408
|
-
|
|
1408
|
+
chunkFNA66TT4_js.EntityCard,
|
|
1409
1409
|
{
|
|
1410
1410
|
accentGradient: tile.gradient,
|
|
1411
1411
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex h-11 w-11 items-center justify-center rounded-lg bg-gradient-to-br ${tile.gradient} shadow-lg`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-6 w-6 text-white" }) }),
|
|
@@ -1415,13 +1415,13 @@ function AgentsIndexPageView({ labels }) {
|
|
|
1415
1415
|
) }, tile.id);
|
|
1416
1416
|
}) })
|
|
1417
1417
|
] });
|
|
1418
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1418
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content });
|
|
1419
1419
|
}
|
|
1420
1420
|
function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublish }) {
|
|
1421
1421
|
const selectedWorkflow = workflows[0] ?? null;
|
|
1422
1422
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1423
1423
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1424
|
-
|
|
1424
|
+
chunkFNA66TT4_js.SectionHeader,
|
|
1425
1425
|
{
|
|
1426
1426
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.RectangleStackIcon, { className: "h-5 w-5 text-white" }),
|
|
1427
1427
|
title: labels.title,
|
|
@@ -1430,9 +1430,9 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1430
1430
|
}
|
|
1431
1431
|
),
|
|
1432
1432
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
|
|
1433
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1433
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
|
|
1434
1434
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1435
|
-
|
|
1435
|
+
chunkFNA66TT4_js.Form,
|
|
1436
1436
|
{
|
|
1437
1437
|
onSubmit: (event) => {
|
|
1438
1438
|
event.preventDefault();
|
|
@@ -1443,32 +1443,32 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1443
1443
|
onCreate({ name, description });
|
|
1444
1444
|
event.currentTarget.reset();
|
|
1445
1445
|
},
|
|
1446
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1447
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1448
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1449
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1446
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
1447
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
|
|
1448
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
|
|
1449
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", children: labels.create }) })
|
|
1450
1450
|
] })
|
|
1451
1451
|
}
|
|
1452
1452
|
)
|
|
1453
1453
|
] }),
|
|
1454
1454
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
|
|
1455
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1456
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1457
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1458
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1459
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1460
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1461
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1462
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1455
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
|
|
1456
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.Table, { children: [
|
|
1457
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.TableRow, { children: [
|
|
1458
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableHeader, { children: labels.name }),
|
|
1459
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableHeader, { children: labels.description }),
|
|
1460
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableHeader, { children: labels.version }),
|
|
1461
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableHeader, { children: labels.status }),
|
|
1462
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableHeader, { children: labels.actions })
|
|
1463
1463
|
] }) }),
|
|
1464
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1465
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1466
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1467
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1468
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1469
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1464
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.TableRow, { children: [
|
|
1465
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableCell, { children: workflow.name }),
|
|
1466
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableCell, { children: workflow.description }),
|
|
1467
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableCell, { children: String(workflow.version) }),
|
|
1468
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
|
|
1469
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1470
1470
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1471
|
-
|
|
1471
|
+
chunkFNA66TT4_js.Form,
|
|
1472
1472
|
{
|
|
1473
1473
|
onSubmit: (event) => {
|
|
1474
1474
|
event.preventDefault();
|
|
@@ -1478,7 +1478,7 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1478
1478
|
description: workflow.description ?? ""
|
|
1479
1479
|
});
|
|
1480
1480
|
},
|
|
1481
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1481
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
|
|
1482
1482
|
}
|
|
1483
1483
|
),
|
|
1484
1484
|
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "sky", onClick: () => onPublish(workflow.id), children: labels.publish })
|
|
@@ -1487,8 +1487,8 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1487
1487
|
] })
|
|
1488
1488
|
] }),
|
|
1489
1489
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
|
|
1490
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1491
|
-
selectedWorkflow ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[680px] rounded-2xl border border-white/65 dark:border-white/12 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1490
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
|
|
1491
|
+
selectedWorkflow ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[680px] rounded-2xl border border-white/65 dark:border-white/12 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFKUIVS6I_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.Text, { children: labels.empty })
|
|
1492
1492
|
] })
|
|
1493
1493
|
] });
|
|
1494
1494
|
}
|
|
@@ -1537,7 +1537,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1537
1537
|
});
|
|
1538
1538
|
const isEmpty = allRuns.length === 0;
|
|
1539
1539
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1540
|
-
|
|
1540
|
+
chunkFNA66TT4_js.HeroSection,
|
|
1541
1541
|
{
|
|
1542
1542
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
|
|
1543
1543
|
label: labels.title,
|
|
@@ -1545,7 +1545,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1545
1545
|
subtitle: labels.subtitle,
|
|
1546
1546
|
gradient: "from-indigo-500 to-sky-700",
|
|
1547
1547
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full sm:w-48", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1548
|
-
|
|
1548
|
+
chunkFNA66TT4_js.FormSelect,
|
|
1549
1549
|
{
|
|
1550
1550
|
name: "statusFilter",
|
|
1551
1551
|
label: labels.filterStatus,
|
|
@@ -1556,9 +1556,9 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1556
1556
|
) })
|
|
1557
1557
|
}
|
|
1558
1558
|
);
|
|
1559
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1559
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1560
1560
|
!isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1561
|
-
|
|
1561
|
+
chunkFNA66TT4_js.SearchBar,
|
|
1562
1562
|
{
|
|
1563
1563
|
searchTerm,
|
|
1564
1564
|
onSearchChange: setSearchTerm,
|
|
@@ -1566,7 +1566,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1566
1566
|
}
|
|
1567
1567
|
),
|
|
1568
1568
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredRuns.map((run) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1569
|
-
|
|
1569
|
+
chunkFNA66TT4_js.EntityCard,
|
|
1570
1570
|
{
|
|
1571
1571
|
accentGradient: "from-indigo-500 to-sky-700",
|
|
1572
1572
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-indigo-500/10 text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-6 w-6" }) }),
|
|
@@ -1592,11 +1592,11 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1592
1592
|
run.id
|
|
1593
1593
|
)) })
|
|
1594
1594
|
] });
|
|
1595
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1595
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content });
|
|
1596
1596
|
}
|
|
1597
1597
|
function RunTimelinePageView({ labels, entries, loading, runId }) {
|
|
1598
1598
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1599
|
-
|
|
1599
|
+
chunkFNA66TT4_js.HeroSection,
|
|
1600
1600
|
{
|
|
1601
1601
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
|
|
1602
1602
|
label: labels.title,
|
|
@@ -1606,23 +1606,23 @@ function RunTimelinePageView({ labels, entries, loading, runId }) {
|
|
|
1606
1606
|
}
|
|
1607
1607
|
);
|
|
1608
1608
|
if (loading) {
|
|
1609
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1609
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content: /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) });
|
|
1610
1610
|
}
|
|
1611
1611
|
if (entries.length === 0) {
|
|
1612
1612
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1613
|
-
|
|
1613
|
+
chunkFNA66TT4_js.ManagementPageLayout,
|
|
1614
1614
|
{
|
|
1615
1615
|
hero,
|
|
1616
|
-
content: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1616
|
+
content: /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
|
|
1617
1617
|
}
|
|
1618
1618
|
);
|
|
1619
1619
|
}
|
|
1620
1620
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1621
|
-
|
|
1621
|
+
chunkFNA66TT4_js.ManagementPageLayout,
|
|
1622
1622
|
{
|
|
1623
1623
|
hero,
|
|
1624
1624
|
content: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1625
|
-
|
|
1625
|
+
chunk3H5CFLVK_js.ExecutionTimelinePanel,
|
|
1626
1626
|
{
|
|
1627
1627
|
entries,
|
|
1628
1628
|
labels
|
|
@@ -1708,7 +1708,7 @@ function ConnectionsPageView({
|
|
|
1708
1708
|
const filteredConnections = searchTerm.trim() ? allConnections.filter((conn) => conn.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allConnections;
|
|
1709
1709
|
const isEmpty = allConnections.length === 0;
|
|
1710
1710
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1711
|
-
|
|
1711
|
+
chunkFNA66TT4_js.HeroSection,
|
|
1712
1712
|
{
|
|
1713
1713
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-5 w-5" }),
|
|
1714
1714
|
label: labels.title,
|
|
@@ -1716,7 +1716,7 @@ function ConnectionsPageView({
|
|
|
1716
1716
|
subtitle: labels.subtitle,
|
|
1717
1717
|
gradient: "from-sky-500 to-indigo-600",
|
|
1718
1718
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1719
|
-
|
|
1719
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
1720
1720
|
{
|
|
1721
1721
|
mode: "desktop",
|
|
1722
1722
|
label: labels.add,
|
|
@@ -1727,7 +1727,7 @@ function ConnectionsPageView({
|
|
|
1727
1727
|
}
|
|
1728
1728
|
);
|
|
1729
1729
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1730
|
-
|
|
1730
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
1731
1731
|
{
|
|
1732
1732
|
mode: "mobile",
|
|
1733
1733
|
label: labels.add,
|
|
@@ -1735,9 +1735,9 @@ function ConnectionsPageView({
|
|
|
1735
1735
|
accent: "sky"
|
|
1736
1736
|
}
|
|
1737
1737
|
);
|
|
1738
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1738
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1739
1739
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1740
|
-
|
|
1740
|
+
chunkFNA66TT4_js.SearchBar,
|
|
1741
1741
|
{
|
|
1742
1742
|
searchTerm,
|
|
1743
1743
|
onSearchChange: setSearchTerm,
|
|
@@ -1745,7 +1745,7 @@ function ConnectionsPageView({
|
|
|
1745
1745
|
}
|
|
1746
1746
|
),
|
|
1747
1747
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredConnections.map((conn) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1748
|
-
|
|
1748
|
+
chunkFNA66TT4_js.EntityCard,
|
|
1749
1749
|
{
|
|
1750
1750
|
accentGradient: "from-sky-500 to-indigo-600",
|
|
1751
1751
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-sky-500/10 text-sky-600 dark:bg-sky-500/20 dark:text-sky-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-6 w-6" }) }),
|
|
@@ -1780,7 +1780,7 @@ function ConnectionsPageView({
|
|
|
1780
1780
|
)) })
|
|
1781
1781
|
] });
|
|
1782
1782
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1783
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1783
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content, mobileAction }),
|
|
1784
1784
|
createOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1785
1785
|
ConnectionEditor,
|
|
1786
1786
|
{
|
|
@@ -1894,7 +1894,7 @@ function ConnectionEditor({
|
|
|
1894
1894
|
return preset.exampleModels?.join(", ") ?? "";
|
|
1895
1895
|
}, [preset]);
|
|
1896
1896
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1897
|
-
|
|
1897
|
+
chunkFNA66TT4_js.GlassModal,
|
|
1898
1898
|
{
|
|
1899
1899
|
open: true,
|
|
1900
1900
|
onClose,
|
|
@@ -1907,9 +1907,9 @@ function ConnectionEditor({
|
|
|
1907
1907
|
void handleSubmit();
|
|
1908
1908
|
},
|
|
1909
1909
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
1910
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1910
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
1911
1911
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1912
|
-
|
|
1912
|
+
chunkFNA66TT4_js.FormSelect,
|
|
1913
1913
|
{
|
|
1914
1914
|
label: "Provider",
|
|
1915
1915
|
value: value.providerSlug,
|
|
@@ -1920,7 +1920,7 @@ function ConnectionEditor({
|
|
|
1920
1920
|
}
|
|
1921
1921
|
),
|
|
1922
1922
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1923
|
-
|
|
1923
|
+
chunkFNA66TT4_js.FormInput,
|
|
1924
1924
|
{
|
|
1925
1925
|
label: "Display name",
|
|
1926
1926
|
required: true,
|
|
@@ -1930,7 +1930,7 @@ function ConnectionEditor({
|
|
|
1930
1930
|
}
|
|
1931
1931
|
),
|
|
1932
1932
|
preset.needsRegion && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1933
|
-
|
|
1933
|
+
chunkFNA66TT4_js.FormInput,
|
|
1934
1934
|
{
|
|
1935
1935
|
label: "Region",
|
|
1936
1936
|
value: value.region,
|
|
@@ -1939,7 +1939,7 @@ function ConnectionEditor({
|
|
|
1939
1939
|
}
|
|
1940
1940
|
),
|
|
1941
1941
|
preset.needsEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1942
|
-
|
|
1942
|
+
chunkFNA66TT4_js.FormInput,
|
|
1943
1943
|
{
|
|
1944
1944
|
label: "Endpoint URL",
|
|
1945
1945
|
value: value.endpoint,
|
|
@@ -1949,7 +1949,7 @@ function ConnectionEditor({
|
|
|
1949
1949
|
)
|
|
1950
1950
|
] }),
|
|
1951
1951
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1952
|
-
|
|
1952
|
+
chunkFNA66TT4_js.FormInput,
|
|
1953
1953
|
{
|
|
1954
1954
|
label: value.credentialRef ? "Rotate API key (leave blank to keep current)" : "API key",
|
|
1955
1955
|
type: "password",
|
|
@@ -1960,7 +1960,7 @@ function ConnectionEditor({
|
|
|
1960
1960
|
}
|
|
1961
1961
|
),
|
|
1962
1962
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1963
|
-
|
|
1963
|
+
chunkFNA66TT4_js.FormInput,
|
|
1964
1964
|
{
|
|
1965
1965
|
label: "Model filter (comma-separated, optional)",
|
|
1966
1966
|
value: value.modelFilter,
|
|
@@ -1972,7 +1972,7 @@ function ConnectionEditor({
|
|
|
1972
1972
|
/* @__PURE__ */ jsxRuntime.jsxs("details", { className: "rounded-xl border border-slate-200 bg-slate-50/60 p-3 text-sm dark:border-slate-700 dark:bg-slate-900/40", children: [
|
|
1973
1973
|
/* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer font-medium text-slate-700 dark:text-slate-200", children: "Advanced config (JSON)" }),
|
|
1974
1974
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1975
|
-
|
|
1975
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
1976
1976
|
{
|
|
1977
1977
|
rows: 4,
|
|
1978
1978
|
value: value.configJson,
|
|
@@ -2042,7 +2042,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2042
2042
|
{ value: "password", label: labels.typePassword }
|
|
2043
2043
|
];
|
|
2044
2044
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2045
|
-
|
|
2045
|
+
chunkFNA66TT4_js.HeroSection,
|
|
2046
2046
|
{
|
|
2047
2047
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-5 w-5" }),
|
|
2048
2048
|
label: labels.title,
|
|
@@ -2050,7 +2050,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2050
2050
|
subtitle: labels.subtitle,
|
|
2051
2051
|
gradient: "from-rose-500 to-orange-600",
|
|
2052
2052
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2053
|
-
|
|
2053
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
2054
2054
|
{
|
|
2055
2055
|
mode: "desktop",
|
|
2056
2056
|
label: labels.addCredential,
|
|
@@ -2061,7 +2061,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2061
2061
|
}
|
|
2062
2062
|
);
|
|
2063
2063
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2064
|
-
|
|
2064
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
2065
2065
|
{
|
|
2066
2066
|
mode: "mobile",
|
|
2067
2067
|
label: labels.addCredential,
|
|
@@ -2069,9 +2069,9 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2069
2069
|
accent: "rose"
|
|
2070
2070
|
}
|
|
2071
2071
|
);
|
|
2072
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2072
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2073
2073
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2074
|
-
|
|
2074
|
+
chunkFNA66TT4_js.SearchBar,
|
|
2075
2075
|
{
|
|
2076
2076
|
searchTerm,
|
|
2077
2077
|
onSearchChange: setSearchTerm,
|
|
@@ -2079,7 +2079,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2079
2079
|
}
|
|
2080
2080
|
),
|
|
2081
2081
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filteredCredentials.map((secret) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2082
|
-
|
|
2082
|
+
chunkFNA66TT4_js.EntityCard,
|
|
2083
2083
|
{
|
|
2084
2084
|
accentGradient: "from-rose-500 to-orange-700",
|
|
2085
2085
|
icon: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-11 w-11 items-center justify-center rounded-lg bg-rose-500/10 text-rose-600 dark:bg-rose-500/20 dark:text-rose-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-6 w-6" }) }),
|
|
@@ -2087,7 +2087,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2087
2087
|
subtitle: secret.secretType,
|
|
2088
2088
|
status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
|
|
2089
2089
|
footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
2090
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2090
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.CopyableId, { id: secret.secretId }),
|
|
2091
2091
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
2092
2092
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
|
|
2093
2093
|
/* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "mr-1 h-3.5 w-3.5" }),
|
|
@@ -2124,9 +2124,9 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2124
2124
|
)) })
|
|
2125
2125
|
] });
|
|
2126
2126
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2127
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2127
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content, mobileAction }),
|
|
2128
2128
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2129
|
-
|
|
2129
|
+
chunkFNA66TT4_js.GlassModal,
|
|
2130
2130
|
{
|
|
2131
2131
|
open: createOpen,
|
|
2132
2132
|
onClose: () => setCreateOpen(false),
|
|
@@ -2144,16 +2144,16 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2144
2144
|
onCreate({ name, value, secretType, description });
|
|
2145
2145
|
setCreateOpen(false);
|
|
2146
2146
|
},
|
|
2147
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2148
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2149
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2150
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2151
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2147
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
2148
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
|
|
2149
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
|
|
2150
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
|
|
2151
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
|
|
2152
2152
|
] })
|
|
2153
2153
|
}
|
|
2154
2154
|
),
|
|
2155
2155
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2156
|
-
|
|
2156
|
+
chunkFNA66TT4_js.GlassModal,
|
|
2157
2157
|
{
|
|
2158
2158
|
open: rotateFor !== null,
|
|
2159
2159
|
onClose: () => setRotateFor(null),
|
|
@@ -2168,7 +2168,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2168
2168
|
onRotate(rotateFor, value);
|
|
2169
2169
|
setRotateFor(null);
|
|
2170
2170
|
},
|
|
2171
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2171
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
|
|
2172
2172
|
}
|
|
2173
2173
|
)
|
|
2174
2174
|
] });
|
|
@@ -2222,7 +2222,7 @@ function AgentsWorkspacePageView({
|
|
|
2222
2222
|
}, [agents, selectedId]);
|
|
2223
2223
|
const isEmpty = agents.length === 0;
|
|
2224
2224
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2225
|
-
|
|
2225
|
+
chunkFNA66TT4_js.HeroSection,
|
|
2226
2226
|
{
|
|
2227
2227
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
|
|
2228
2228
|
label: labels.title,
|
|
@@ -2230,7 +2230,7 @@ function AgentsWorkspacePageView({
|
|
|
2230
2230
|
subtitle: labels.subtitle,
|
|
2231
2231
|
gradient: "from-violet-500 to-indigo-700",
|
|
2232
2232
|
actions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2233
|
-
|
|
2233
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
2234
2234
|
{
|
|
2235
2235
|
mode: "desktop",
|
|
2236
2236
|
label: labels.addAgent,
|
|
@@ -2241,7 +2241,7 @@ function AgentsWorkspacePageView({
|
|
|
2241
2241
|
}
|
|
2242
2242
|
);
|
|
2243
2243
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2244
|
-
|
|
2244
|
+
chunkFNA66TT4_js.CreateActionButton,
|
|
2245
2245
|
{
|
|
2246
2246
|
mode: "mobile",
|
|
2247
2247
|
label: labels.addAgent,
|
|
@@ -2249,8 +2249,8 @@ function AgentsWorkspacePageView({
|
|
|
2249
2249
|
accent: "violet"
|
|
2250
2250
|
}
|
|
2251
2251
|
);
|
|
2252
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2253
|
-
|
|
2252
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2253
|
+
chunkFNA66TT4_js.PageEmptyState,
|
|
2254
2254
|
{
|
|
2255
2255
|
title: labels.empty,
|
|
2256
2256
|
message: labels.emptyMessage,
|
|
@@ -2258,7 +2258,7 @@ function AgentsWorkspacePageView({
|
|
|
2258
2258
|
}
|
|
2259
2259
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2260
2260
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2261
|
-
|
|
2261
|
+
chunkFNA66TT4_js.SearchBar,
|
|
2262
2262
|
{
|
|
2263
2263
|
searchTerm,
|
|
2264
2264
|
onSearchChange: setSearchTerm,
|
|
@@ -2266,15 +2266,15 @@ function AgentsWorkspacePageView({
|
|
|
2266
2266
|
}
|
|
2267
2267
|
),
|
|
2268
2268
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
|
|
2269
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2269
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
|
|
2270
2270
|
const id = String(agent.agentId ?? agent.id ?? "");
|
|
2271
2271
|
const active = id === selectedId;
|
|
2272
2272
|
const initials = deriveInitials(String(agent.name ?? id));
|
|
2273
2273
|
const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
|
|
2274
2274
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2275
|
-
|
|
2275
|
+
chunkFNA66TT4_js.ListCardItem,
|
|
2276
2276
|
{
|
|
2277
|
-
leading: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2277
|
+
leading: /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.Avatar, { tone: active ? "violet" : "slate", initials }),
|
|
2278
2278
|
trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: "emerald", children: [
|
|
2279
2279
|
"v",
|
|
2280
2280
|
agent.activePromptVersion
|
|
@@ -2316,7 +2316,7 @@ function AgentsWorkspacePageView({
|
|
|
2316
2316
|
},
|
|
2317
2317
|
String(selectedAgent.agentId ?? selectedAgent.id ?? "")
|
|
2318
2318
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2319
|
-
|
|
2319
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2320
2320
|
{
|
|
2321
2321
|
header: {
|
|
2322
2322
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
|
|
@@ -2324,7 +2324,7 @@ function AgentsWorkspacePageView({
|
|
|
2324
2324
|
subtitle: labels.noSelectionMessage
|
|
2325
2325
|
},
|
|
2326
2326
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2327
|
-
|
|
2327
|
+
chunkFNA66TT4_js.PageEmptyState,
|
|
2328
2328
|
{
|
|
2329
2329
|
title: labels.noSelection,
|
|
2330
2330
|
message: labels.noSelectionMessage,
|
|
@@ -2336,12 +2336,13 @@ function AgentsWorkspacePageView({
|
|
|
2336
2336
|
] })
|
|
2337
2337
|
] });
|
|
2338
2338
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2339
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2339
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ManagementPageLayout, { hero, content, mobileAction }),
|
|
2340
2340
|
createOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2341
2341
|
CreateAgentDialog,
|
|
2342
2342
|
{
|
|
2343
2343
|
labels,
|
|
2344
2344
|
models,
|
|
2345
|
+
connections,
|
|
2345
2346
|
onClose: () => setCreateOpen(false),
|
|
2346
2347
|
onSubmit: async (input) => {
|
|
2347
2348
|
await onCreateAgent(input);
|
|
@@ -2369,7 +2370,7 @@ function AgentDetail({
|
|
|
2369
2370
|
}) {
|
|
2370
2371
|
const agentId = String(agent.agentId ?? agent.id ?? "");
|
|
2371
2372
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2372
|
-
|
|
2373
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2373
2374
|
{
|
|
2374
2375
|
header: {
|
|
2375
2376
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
|
|
@@ -2394,15 +2395,15 @@ function AgentDetail({
|
|
|
2394
2395
|
]
|
|
2395
2396
|
}
|
|
2396
2397
|
),
|
|
2397
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2398
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2399
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2400
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2401
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2402
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2398
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.Tabs, { defaultValue: "general", className: "w-full", children: [
|
|
2399
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.TabsList, { className: "bg-white/40 dark:bg-white/[0.06]", children: [
|
|
2400
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TabsTrigger, { value: "general", children: labels.generalTab }),
|
|
2401
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TabsTrigger, { value: "prompt", children: labels.promptTab }),
|
|
2402
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TabsTrigger, { value: "tools", children: labels.toolsTab }),
|
|
2403
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TabsTrigger, { value: "model", children: labels.modelTab })
|
|
2403
2404
|
] }),
|
|
2404
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2405
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2405
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TabsContent, { value: "general", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(GeneralTab, { agent, labels, onSubmit: (input) => onUpdateAgent(agentId, input) }) }),
|
|
2406
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TabsContent, { value: "prompt", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2406
2407
|
PromptTab,
|
|
2407
2408
|
{
|
|
2408
2409
|
agent,
|
|
@@ -2412,7 +2413,7 @@ function AgentDetail({
|
|
|
2412
2413
|
onActivate: (promptId) => onActivatePrompt(agentId, promptId)
|
|
2413
2414
|
}
|
|
2414
2415
|
) }),
|
|
2415
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2416
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2416
2417
|
ToolsTab,
|
|
2417
2418
|
{
|
|
2418
2419
|
agent,
|
|
@@ -2422,7 +2423,7 @@ function AgentDetail({
|
|
|
2422
2423
|
onDetach: (toolId) => onDetachTool(agentId, toolId)
|
|
2423
2424
|
}
|
|
2424
2425
|
) }),
|
|
2425
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2426
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2426
2427
|
ModelTab,
|
|
2427
2428
|
{
|
|
2428
2429
|
agent,
|
|
@@ -2454,7 +2455,7 @@ function GeneralTab({
|
|
|
2454
2455
|
const initialRole = String(agent.role ?? "");
|
|
2455
2456
|
const initialStatus = String(agent.status ?? "draft");
|
|
2456
2457
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2457
|
-
|
|
2458
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2458
2459
|
{
|
|
2459
2460
|
variant: "glass",
|
|
2460
2461
|
header: {
|
|
@@ -2483,10 +2484,10 @@ function GeneralTab({
|
|
|
2483
2484
|
},
|
|
2484
2485
|
className: "space-y-4",
|
|
2485
2486
|
children: [
|
|
2486
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2487
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2487
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
2488
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name, required: true }),
|
|
2488
2489
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2489
|
-
|
|
2490
|
+
chunkFNA66TT4_js.FormSelect,
|
|
2490
2491
|
{
|
|
2491
2492
|
name: "status",
|
|
2492
2493
|
label: labels.status,
|
|
@@ -2498,9 +2499,9 @@ function GeneralTab({
|
|
|
2498
2499
|
]
|
|
2499
2500
|
}
|
|
2500
2501
|
),
|
|
2501
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2502
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
|
|
2502
2503
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2503
|
-
|
|
2504
|
+
chunkFNA66TT4_js.FormInput,
|
|
2504
2505
|
{
|
|
2505
2506
|
name: "maxTokens",
|
|
2506
2507
|
label: labels.maxTokens,
|
|
@@ -2509,7 +2510,7 @@ function GeneralTab({
|
|
|
2509
2510
|
}
|
|
2510
2511
|
),
|
|
2511
2512
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2512
|
-
|
|
2513
|
+
chunkFNA66TT4_js.FormInput,
|
|
2513
2514
|
{
|
|
2514
2515
|
name: "temperature",
|
|
2515
2516
|
label: labels.temperature,
|
|
@@ -2521,7 +2522,7 @@ function GeneralTab({
|
|
|
2521
2522
|
}
|
|
2522
2523
|
)
|
|
2523
2524
|
] }),
|
|
2524
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2525
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
|
|
2525
2526
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", color: "indigo", disabled: submitting, children: submitting ? labels.saving : labels.save }) })
|
|
2526
2527
|
]
|
|
2527
2528
|
}
|
|
@@ -2541,7 +2542,7 @@ function PromptTab({
|
|
|
2541
2542
|
const currentSystem = String(agent.systemPrompt ?? "");
|
|
2542
2543
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2543
2544
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2544
|
-
|
|
2545
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2545
2546
|
{
|
|
2546
2547
|
variant: "glass",
|
|
2547
2548
|
header: {
|
|
@@ -2553,7 +2554,7 @@ function PromptTab({
|
|
|
2553
2554
|
}
|
|
2554
2555
|
),
|
|
2555
2556
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2556
|
-
|
|
2557
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2557
2558
|
{
|
|
2558
2559
|
variant: "glass",
|
|
2559
2560
|
header: {
|
|
@@ -2564,10 +2565,10 @@ function PromptTab({
|
|
|
2564
2565
|
/* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-4 w-4" }),
|
|
2565
2566
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.addPrompt })
|
|
2566
2567
|
] }),
|
|
2567
|
-
children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2568
|
+
children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ListCard, { children: prompts.map((prompt) => {
|
|
2568
2569
|
const id = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
|
|
2569
2570
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2570
|
-
|
|
2571
|
+
chunkFNA66TT4_js.ListCardItem,
|
|
2571
2572
|
{
|
|
2572
2573
|
leading: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: prompt.isActive ? "emerald" : "zinc", children: [
|
|
2573
2574
|
"v",
|
|
@@ -2585,7 +2586,7 @@ function PromptTab({
|
|
|
2585
2586
|
}
|
|
2586
2587
|
),
|
|
2587
2588
|
addOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2588
|
-
|
|
2589
|
+
chunkFNA66TT4_js.GlassModal,
|
|
2589
2590
|
{
|
|
2590
2591
|
open: true,
|
|
2591
2592
|
onClose: () => setAddOpen(false),
|
|
@@ -2606,10 +2607,10 @@ function PromptTab({
|
|
|
2606
2607
|
});
|
|
2607
2608
|
setAddOpen(false);
|
|
2608
2609
|
},
|
|
2609
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2610
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2610
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
2611
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormSelect, { name: "locale", label: labels.promptLocale, options: LOCALE_OPTIONS2, defaultValue: "en" }),
|
|
2611
2612
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2612
|
-
|
|
2613
|
+
chunkFNA66TT4_js.FormSelect,
|
|
2613
2614
|
{
|
|
2614
2615
|
name: "isActive",
|
|
2615
2616
|
label: labels.promptIsActive,
|
|
@@ -2620,10 +2621,10 @@ function PromptTab({
|
|
|
2620
2621
|
defaultValue: "true"
|
|
2621
2622
|
}
|
|
2622
2623
|
),
|
|
2623
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2624
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2625
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2626
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2624
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormInput, { name: "reason", label: labels.promptReason }),
|
|
2625
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "systemPrompt", label: labels.promptSystemPrompt, rows: 3 }),
|
|
2626
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "userTemplate", label: labels.promptUserTemplate, rows: 3 }),
|
|
2627
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.FormTextarea, { name: "prompt", label: labels.promptText, rows: 6, required: true })
|
|
2627
2628
|
] })
|
|
2628
2629
|
}
|
|
2629
2630
|
)
|
|
@@ -2646,15 +2647,15 @@ function ToolsTab({
|
|
|
2646
2647
|
const availableTools = tools.filter((tool) => !attachedSet.has(tool.agentToolId));
|
|
2647
2648
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2648
2649
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2649
|
-
|
|
2650
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2650
2651
|
{
|
|
2651
2652
|
variant: "glass",
|
|
2652
2653
|
header: {
|
|
2653
2654
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
|
|
2654
2655
|
title: labels.toolsAttached
|
|
2655
2656
|
},
|
|
2656
|
-
children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2657
|
-
|
|
2657
|
+
children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ListCard, { children: attachedTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2658
|
+
chunkFNA66TT4_js.ListCardItem,
|
|
2658
2659
|
{
|
|
2659
2660
|
leading: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-9 w-9 items-center justify-center rounded-lg bg-amber-500/10 text-amber-600 dark:bg-amber-500/20 dark:text-amber-400", children: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }) }),
|
|
2660
2661
|
trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onDetach(tool.agentToolId), children: labels.detachTool }),
|
|
@@ -2668,15 +2669,15 @@ function ToolsTab({
|
|
|
2668
2669
|
}
|
|
2669
2670
|
),
|
|
2670
2671
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2671
|
-
|
|
2672
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2672
2673
|
{
|
|
2673
2674
|
variant: "glass",
|
|
2674
2675
|
header: {
|
|
2675
2676
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
|
|
2676
2677
|
title: labels.toolsAvailable
|
|
2677
2678
|
},
|
|
2678
|
-
children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2679
|
-
|
|
2679
|
+
children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkFNA66TT4_js.ListCard, { children: availableTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2680
|
+
chunkFNA66TT4_js.ListCardItem,
|
|
2680
2681
|
{
|
|
2681
2682
|
leading: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-9 w-9 items-center justify-center rounded-lg bg-slate-500/10 text-slate-600 dark:bg-slate-500/20 dark:text-slate-300", children: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }) }),
|
|
2682
2683
|
trailing: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", color: "indigo", onClick: () => onAttach(tool.agentToolId), children: [
|
|
@@ -2717,7 +2718,7 @@ function ModelTab({
|
|
|
2717
2718
|
return matches.length > 0 ? matches : connections;
|
|
2718
2719
|
}, [selectedModel, connections]);
|
|
2719
2720
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2720
|
-
|
|
2721
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2721
2722
|
{
|
|
2722
2723
|
variant: "glass",
|
|
2723
2724
|
header: {
|
|
@@ -2738,9 +2739,9 @@ function ModelTab({
|
|
|
2738
2739
|
},
|
|
2739
2740
|
className: "space-y-4",
|
|
2740
2741
|
children: [
|
|
2741
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2742
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
2742
2743
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2743
|
-
|
|
2744
|
+
chunkFNA66TT4_js.FormSelect,
|
|
2744
2745
|
{
|
|
2745
2746
|
label: labels.model,
|
|
2746
2747
|
value: modelId,
|
|
@@ -2749,7 +2750,7 @@ function ModelTab({
|
|
|
2749
2750
|
}
|
|
2750
2751
|
),
|
|
2751
2752
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2752
|
-
|
|
2753
|
+
chunkFNA66TT4_js.FormSelect,
|
|
2753
2754
|
{
|
|
2754
2755
|
label: labels.connection,
|
|
2755
2756
|
value: connectionId,
|
|
@@ -2770,30 +2771,74 @@ function ModelTab({
|
|
|
2770
2771
|
);
|
|
2771
2772
|
}
|
|
2772
2773
|
var AGENT_PRESETS = [
|
|
2773
|
-
{ id: "sales", emoji: "\u{1F4BC}", name: "Sales Specialist", role: "Lead qualification & CRM", systemPrompt: "You are a sales assistant. Help qualify leads, manage CRM entries, and schedule follow-ups. Always be professional and proactive.", temperature: 0.7, maxTokens: 2048, accent: "from-emerald-500 to-teal-600" },
|
|
2774
|
-
{ id: "support", emoji: "\u{1F3A7}", name: "Customer Support", role: "Ticket resolution & escalation", systemPrompt: "You are a customer support agent. Resolve tickets, answer questions, and escalate complex issues. Prioritize customer satisfaction.", temperature: 0.3, maxTokens: 2048, accent: "from-sky-500 to-indigo-600" },
|
|
2775
|
-
{ id: "finance", emoji: "\u{1F4CA}", name: "Financial Analyst", role: "Revenue, margins, reports", systemPrompt: "You are a financial analyst. Analyze revenue, calculate margins, generate performance reports, and identify trends. Use data-driven insights for recommendations.", temperature: 0.4, maxTokens: 4096, accent: "from-amber-500 to-orange-600" },
|
|
2776
|
-
{ id: "security", emoji: "\u{1F6E1}\uFE0F", name: "Security Analyst", role: "Threat monitoring & compliance", systemPrompt: "You are a security analyst. Monitor for threats, audit data access, ensure compliance with privacy regulations, and manage incident response.", temperature: 0.3, maxTokens: 2048, accent: "from-rose-500 to-red-600" },
|
|
2777
|
-
{ id: "data", emoji: "\u{1F52C}", name: "Data Analyst", role: "Pattern detection & cleaning", systemPrompt: "You are a data analyst. Process raw data inputs, identify patterns, clean datasets, and prepare structured analysis for downstream agents.", temperature: 0.5, maxTokens: 4096, accent: "from-violet-500 to-purple-600" },
|
|
2774
|
+
{ id: "sales", emoji: "\u{1F4BC}", name: "Sales Specialist", role: "Lead qualification & CRM", systemPrompt: "You are a sales assistant. Help qualify leads, manage CRM entries, and schedule follow-ups. Always be professional and proactive.", temperature: 0.7, maxTokens: 2048, accent: "from-emerald-500 to-teal-600", framework: "anthropic" },
|
|
2775
|
+
{ id: "support", emoji: "\u{1F3A7}", name: "Customer Support", role: "Ticket resolution & escalation", systemPrompt: "You are a customer support agent. Resolve tickets, answer questions, and escalate complex issues. Prioritize customer satisfaction.", temperature: 0.3, maxTokens: 2048, accent: "from-sky-500 to-indigo-600", framework: "crewai" },
|
|
2776
|
+
{ id: "finance", emoji: "\u{1F4CA}", name: "Financial Analyst", role: "Revenue, margins, reports", systemPrompt: "You are a financial analyst. Analyze revenue, calculate margins, generate performance reports, and identify trends. Use data-driven insights for recommendations.", temperature: 0.4, maxTokens: 4096, accent: "from-amber-500 to-orange-600", framework: "langchain" },
|
|
2777
|
+
{ id: "security", emoji: "\u{1F6E1}\uFE0F", name: "Security Analyst", role: "Threat monitoring & compliance", systemPrompt: "You are a security analyst. Monitor for threats, audit data access, ensure compliance with privacy regulations, and manage incident response.", temperature: 0.3, maxTokens: 2048, accent: "from-rose-500 to-red-600", framework: "anthropic" },
|
|
2778
|
+
{ id: "data", emoji: "\u{1F52C}", name: "Data Analyst", role: "Pattern detection & cleaning", systemPrompt: "You are a data analyst. Process raw data inputs, identify patterns, clean datasets, and prepare structured analysis for downstream agents.", temperature: 0.5, maxTokens: 4096, accent: "from-violet-500 to-purple-600", framework: "google-adk" },
|
|
2778
2779
|
{ id: "custom", emoji: "\u2728", name: "", role: "", systemPrompt: "", temperature: 0.2, maxTokens: 2048, accent: "from-slate-500 to-slate-700" }
|
|
2779
2780
|
];
|
|
2781
|
+
var DIFFICULTY_OPTIONS = [
|
|
2782
|
+
{ id: "beginner", emoji: "\u{1F331}", accent: "from-emerald-500 to-teal-600" },
|
|
2783
|
+
{ id: "intermediate", emoji: "\u26A1", accent: "from-sky-500 to-indigo-600" },
|
|
2784
|
+
{ id: "advanced", emoji: "\u{1F680}", accent: "from-amber-500 to-orange-600" },
|
|
2785
|
+
{ id: "expert", emoji: "\u{1F9E0}", accent: "from-rose-500 to-purple-600" }
|
|
2786
|
+
];
|
|
2780
2787
|
var EMOJI_PALETTE = ["\u{1F4BC}", "\u{1F3A7}", "\u{1F4CA}", "\u{1F6E1}\uFE0F", "\u{1F52C}", "\u2728", "\u{1F916}", "\u26A1", "\u{1F3AF}", "\u{1F680}", "\u{1F9E0}", "\u{1F9BE}", "\u{1F4E1}", "\u{1F52E}", "\u{1F310}", "\u{1F5C2}\uFE0F"];
|
|
2781
2788
|
function CreateAgentDialog({
|
|
2782
2789
|
labels,
|
|
2783
2790
|
models,
|
|
2791
|
+
connections,
|
|
2784
2792
|
onClose,
|
|
2785
2793
|
onSubmit
|
|
2786
2794
|
}) {
|
|
2787
|
-
const modelOptions = models.map((m) => ({ value: m.id, label: `${m.name} (${m.provider})` }));
|
|
2788
2795
|
const [presetId, setPresetId] = react.useState("custom");
|
|
2789
2796
|
const [emoji, setEmoji] = react.useState("\u2728");
|
|
2790
2797
|
const [name, setName] = react.useState("");
|
|
2791
2798
|
const [role, setRole] = react.useState("");
|
|
2799
|
+
const [description, setDescription] = react.useState("");
|
|
2792
2800
|
const [systemPrompt, setSystemPrompt] = react.useState("");
|
|
2801
|
+
const [userPrompt, setUserPrompt] = react.useState("");
|
|
2793
2802
|
const [temperature, setTemperature] = react.useState(0.2);
|
|
2794
2803
|
const [maxTokens, setMaxTokens] = react.useState(2048);
|
|
2795
|
-
const [
|
|
2804
|
+
const [topP, setTopP] = react.useState(1);
|
|
2805
|
+
const [topK, setTopK] = react.useState(0);
|
|
2806
|
+
const [connectionId, setConnectionId] = react.useState("");
|
|
2807
|
+
const [framework, setFramework] = react.useState("");
|
|
2808
|
+
const [difficulty, setDifficulty] = react.useState("intermediate");
|
|
2809
|
+
const [tagsInput, setTagsInput] = react.useState("");
|
|
2810
|
+
const [outputSchema, setOutputSchema] = react.useState("");
|
|
2811
|
+
const [modelId, setModelId] = react.useState(models[0]?.id ?? "");
|
|
2796
2812
|
const activePreset = AGENT_PRESETS.find((p) => p.id === presetId) ?? AGENT_PRESETS[AGENT_PRESETS.length - 1];
|
|
2813
|
+
const matchingModels = react.useMemo(() => {
|
|
2814
|
+
if (!connectionId) return models;
|
|
2815
|
+
const conn = connections.find((c) => c.id === connectionId);
|
|
2816
|
+
const slug = conn?.providerSlug;
|
|
2817
|
+
if (!slug) return models;
|
|
2818
|
+
const matches = models.filter(
|
|
2819
|
+
(m) => (m.provider ?? "") === slug || String(m.provider ?? "").startsWith(slug)
|
|
2820
|
+
);
|
|
2821
|
+
return matches.length > 0 ? matches : models;
|
|
2822
|
+
}, [models, connections, connectionId]);
|
|
2823
|
+
const modelOptions = matchingModels.map((m) => ({ value: m.id, label: `${m.name} (${m.provider})` }));
|
|
2824
|
+
const connectionOptions = react.useMemo(() => {
|
|
2825
|
+
const inline = { value: "", label: labels.connectionInline ?? "Inline model (no connection)" };
|
|
2826
|
+
return [
|
|
2827
|
+
inline,
|
|
2828
|
+
...connections.map((c) => ({
|
|
2829
|
+
value: c.id,
|
|
2830
|
+
label: `${c.name}${c.providerSlug ? " \xB7 " + c.providerSlug : ""}`
|
|
2831
|
+
}))
|
|
2832
|
+
];
|
|
2833
|
+
}, [connections, labels.connectionInline]);
|
|
2834
|
+
const frameworkOptions = react.useMemo(() => [
|
|
2835
|
+
{ value: "", label: labels.connectionInline ?? "\u2014" },
|
|
2836
|
+
{ value: "anthropic", label: labels.frameworkAnthropic ?? "Anthropic" },
|
|
2837
|
+
{ value: "langchain", label: labels.frameworkLangChain ?? "LangChain" },
|
|
2838
|
+
{ value: "crewai", label: labels.frameworkCrewAI ?? "CrewAI" },
|
|
2839
|
+
{ value: "google-adk", label: labels.frameworkGoogleADK ?? "Google ADK" },
|
|
2840
|
+
{ value: "openai", label: labels.frameworkOpenAI ?? "OpenAI" }
|
|
2841
|
+
], [labels]);
|
|
2797
2842
|
function applyPreset(preset) {
|
|
2798
2843
|
setPresetId(preset.id);
|
|
2799
2844
|
setEmoji(preset.emoji);
|
|
@@ -2803,10 +2848,11 @@ function CreateAgentDialog({
|
|
|
2803
2848
|
setSystemPrompt(preset.systemPrompt);
|
|
2804
2849
|
setTemperature(preset.temperature);
|
|
2805
2850
|
setMaxTokens(preset.maxTokens);
|
|
2851
|
+
if (preset.framework) setFramework(preset.framework);
|
|
2806
2852
|
}
|
|
2807
2853
|
}
|
|
2808
2854
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2809
|
-
|
|
2855
|
+
chunkFNA66TT4_js.GlassModal,
|
|
2810
2856
|
{
|
|
2811
2857
|
open: true,
|
|
2812
2858
|
onClose,
|
|
@@ -2826,17 +2872,29 @@ function CreateAgentDialog({
|
|
|
2826
2872
|
submitLabel: labels.save,
|
|
2827
2873
|
onSubmit: async (event) => {
|
|
2828
2874
|
event.preventDefault();
|
|
2875
|
+
const parsedTags = tagsInput.split(",").map((t) => t.trim()).filter((t) => t.length > 0);
|
|
2829
2876
|
await onSubmit({
|
|
2830
2877
|
name: name.trim() || activePreset.name || "Untitled Agent",
|
|
2878
|
+
role: role.trim() || void 0,
|
|
2879
|
+
description: description.trim() || void 0,
|
|
2880
|
+
avatar: emoji,
|
|
2831
2881
|
modelId,
|
|
2882
|
+
connectionId: connectionId || void 0,
|
|
2883
|
+
framework: framework || void 0,
|
|
2832
2884
|
systemPrompt,
|
|
2885
|
+
userPrompt: userPrompt.trim() || void 0,
|
|
2833
2886
|
maxTokens,
|
|
2834
|
-
temperature
|
|
2887
|
+
temperature,
|
|
2888
|
+
topP,
|
|
2889
|
+
topK,
|
|
2890
|
+
difficulty: difficulty || void 0,
|
|
2891
|
+
tags: parsedTags.length > 0 ? parsedTags : void 0,
|
|
2892
|
+
outputSchema: outputSchema.trim() || void 0
|
|
2835
2893
|
});
|
|
2836
2894
|
},
|
|
2837
2895
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
2838
2896
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2839
|
-
|
|
2897
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2840
2898
|
{
|
|
2841
2899
|
variant: "glass",
|
|
2842
2900
|
padded: false,
|
|
@@ -2876,7 +2934,7 @@ function CreateAgentDialog({
|
|
|
2876
2934
|
}
|
|
2877
2935
|
),
|
|
2878
2936
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2879
|
-
|
|
2937
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2880
2938
|
{
|
|
2881
2939
|
variant: "glass",
|
|
2882
2940
|
header: {
|
|
@@ -2901,9 +2959,9 @@ function CreateAgentDialog({
|
|
|
2901
2959
|
e
|
|
2902
2960
|
)) })
|
|
2903
2961
|
] }),
|
|
2904
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2962
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
2905
2963
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2906
|
-
|
|
2964
|
+
chunkFNA66TT4_js.FormInput,
|
|
2907
2965
|
{
|
|
2908
2966
|
label: labels.name,
|
|
2909
2967
|
value: name,
|
|
@@ -2913,7 +2971,7 @@ function CreateAgentDialog({
|
|
|
2913
2971
|
}
|
|
2914
2972
|
),
|
|
2915
2973
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2916
|
-
|
|
2974
|
+
chunkFNA66TT4_js.FormInput,
|
|
2917
2975
|
{
|
|
2918
2976
|
label: labels.role,
|
|
2919
2977
|
value: role,
|
|
@@ -2921,12 +2979,74 @@ function CreateAgentDialog({
|
|
|
2921
2979
|
placeholder: labels.rolePlaceholder
|
|
2922
2980
|
}
|
|
2923
2981
|
)
|
|
2924
|
-
] })
|
|
2982
|
+
] }),
|
|
2983
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2984
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
2985
|
+
{
|
|
2986
|
+
label: labels.descriptionLabel ?? labels.description,
|
|
2987
|
+
value: description,
|
|
2988
|
+
onValueChange: setDescription,
|
|
2989
|
+
rows: 2,
|
|
2990
|
+
placeholder: labels.descriptionPlaceholder ?? "A short summary of what this agent does."
|
|
2991
|
+
}
|
|
2992
|
+
)
|
|
2993
|
+
] })
|
|
2994
|
+
}
|
|
2995
|
+
),
|
|
2996
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2997
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2998
|
+
{
|
|
2999
|
+
variant: "glass",
|
|
3000
|
+
header: {
|
|
3001
|
+
title: labels.modelSection ?? "Model and connection",
|
|
3002
|
+
subtitle: labels.connectionPickPrompt ?? "Pick the provider connection or use an inline model"
|
|
3003
|
+
},
|
|
3004
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3005
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
3006
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3007
|
+
chunkFNA66TT4_js.FormSelect,
|
|
3008
|
+
{
|
|
3009
|
+
label: labels.connectionLabel ?? labels.connection,
|
|
3010
|
+
value: connectionId,
|
|
3011
|
+
onValueChange: setConnectionId,
|
|
3012
|
+
options: connectionOptions,
|
|
3013
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-4 w-4" })
|
|
3014
|
+
}
|
|
3015
|
+
),
|
|
3016
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3017
|
+
chunkFNA66TT4_js.FormSelect,
|
|
3018
|
+
{
|
|
3019
|
+
label: labels.frameworkLabel ?? "Framework",
|
|
3020
|
+
value: framework,
|
|
3021
|
+
onValueChange: setFramework,
|
|
3022
|
+
options: frameworkOptions
|
|
3023
|
+
}
|
|
3024
|
+
),
|
|
3025
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3026
|
+
chunkFNA66TT4_js.FormSelect,
|
|
3027
|
+
{
|
|
3028
|
+
label: labels.model,
|
|
3029
|
+
value: modelId,
|
|
3030
|
+
onValueChange: setModelId,
|
|
3031
|
+
options: modelOptions.length > 0 ? modelOptions : [{ value: "", label: labels.modelEmpty }]
|
|
3032
|
+
}
|
|
3033
|
+
)
|
|
3034
|
+
] }),
|
|
3035
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3036
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
3037
|
+
{
|
|
3038
|
+
label: labels.outputSchemaLabel ?? "Output schema (JSON)",
|
|
3039
|
+
value: outputSchema,
|
|
3040
|
+
onValueChange: setOutputSchema,
|
|
3041
|
+
rows: 4,
|
|
3042
|
+
placeholder: labels.outputSchemaPlaceholder ?? '{\n "type": "object",\n "properties": { "summary": { "type": "string" } }\n}'
|
|
3043
|
+
}
|
|
3044
|
+
)
|
|
2925
3045
|
] })
|
|
2926
3046
|
}
|
|
2927
3047
|
),
|
|
2928
3048
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2929
|
-
|
|
3049
|
+
chunkFNA66TT4_js.SectionCard,
|
|
2930
3050
|
{
|
|
2931
3051
|
variant: "glass",
|
|
2932
3052
|
header: {
|
|
@@ -2935,7 +3055,7 @@ function CreateAgentDialog({
|
|
|
2935
3055
|
},
|
|
2936
3056
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2937
3057
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2938
|
-
|
|
3058
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
2939
3059
|
{
|
|
2940
3060
|
label: labels.promptSystemPrompt ?? "System prompt",
|
|
2941
3061
|
value: systemPrompt,
|
|
@@ -2944,18 +3064,31 @@ function CreateAgentDialog({
|
|
|
2944
3064
|
placeholder: labels.promptPlaceholder ?? "You are a helpful assistant\u2026"
|
|
2945
3065
|
}
|
|
2946
3066
|
),
|
|
2947
|
-
/* @__PURE__ */ jsxRuntime.
|
|
3067
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3068
|
+
chunkFNA66TT4_js.FormTextarea,
|
|
3069
|
+
{
|
|
3070
|
+
label: labels.userPromptLabel ?? "User prompt template",
|
|
3071
|
+
value: userPrompt,
|
|
3072
|
+
onValueChange: setUserPrompt,
|
|
3073
|
+
rows: 4,
|
|
3074
|
+
placeholder: labels.userPromptPlaceholder ?? "Analyze {{ nodeId.path }} and produce a summary."
|
|
3075
|
+
}
|
|
3076
|
+
),
|
|
3077
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFNA66TT4_js.FormGrid, { children: [
|
|
2948
3078
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2949
|
-
|
|
3079
|
+
chunkFNA66TT4_js.FormInput,
|
|
2950
3080
|
{
|
|
2951
|
-
label: labels.
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
3081
|
+
label: `${labels.temperature} (${temperature.toFixed(2)})`,
|
|
3082
|
+
type: "number",
|
|
3083
|
+
value: String(temperature),
|
|
3084
|
+
onValueChange: (v) => setTemperature(Number(v) || 0),
|
|
3085
|
+
step: 0.1,
|
|
3086
|
+
min: 0,
|
|
3087
|
+
max: 2
|
|
2955
3088
|
}
|
|
2956
3089
|
),
|
|
2957
3090
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2958
|
-
|
|
3091
|
+
chunkFNA66TT4_js.FormInput,
|
|
2959
3092
|
{
|
|
2960
3093
|
label: labels.maxTokens,
|
|
2961
3094
|
type: "number",
|
|
@@ -2966,20 +3099,84 @@ function CreateAgentDialog({
|
|
|
2966
3099
|
}
|
|
2967
3100
|
),
|
|
2968
3101
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2969
|
-
|
|
3102
|
+
chunkFNA66TT4_js.FormInput,
|
|
2970
3103
|
{
|
|
2971
|
-
label: `${labels.
|
|
3104
|
+
label: `${labels.topPLabel ?? "Top-P"} (${topP.toFixed(2)})`,
|
|
2972
3105
|
type: "number",
|
|
2973
|
-
value: String(
|
|
2974
|
-
onValueChange: (v) =>
|
|
2975
|
-
step: 0.
|
|
3106
|
+
value: String(topP),
|
|
3107
|
+
onValueChange: (v) => setTopP(Number(v) || 0),
|
|
3108
|
+
step: 0.05,
|
|
2976
3109
|
min: 0,
|
|
2977
|
-
max:
|
|
3110
|
+
max: 1
|
|
3111
|
+
}
|
|
3112
|
+
),
|
|
3113
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3114
|
+
chunkFNA66TT4_js.FormInput,
|
|
3115
|
+
{
|
|
3116
|
+
label: labels.topKLabel ?? "Top-K",
|
|
3117
|
+
type: "number",
|
|
3118
|
+
value: String(topK),
|
|
3119
|
+
onValueChange: (v) => setTopK(Math.max(0, Math.floor(Number(v) || 0))),
|
|
3120
|
+
step: 1,
|
|
3121
|
+
min: 0,
|
|
3122
|
+
max: 500
|
|
2978
3123
|
}
|
|
2979
3124
|
)
|
|
2980
3125
|
] })
|
|
2981
3126
|
] })
|
|
2982
3127
|
}
|
|
3128
|
+
),
|
|
3129
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3130
|
+
chunkFNA66TT4_js.SectionCard,
|
|
3131
|
+
{
|
|
3132
|
+
variant: "glass",
|
|
3133
|
+
header: {
|
|
3134
|
+
title: labels.metadataSection ?? "Metadata",
|
|
3135
|
+
subtitle: labels.metadataSubtitle ?? "Difficulty tier and free-form tags"
|
|
3136
|
+
},
|
|
3137
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3138
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
3139
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.difficultyLabel ?? "Difficulty" }),
|
|
3140
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2 sm:grid-cols-4", children: DIFFICULTY_OPTIONS.map((opt) => {
|
|
3141
|
+
const selected = difficulty === opt.id;
|
|
3142
|
+
const label = opt.id === "beginner" ? labels.difficultyBeginner ?? "Beginner" : opt.id === "intermediate" ? labels.difficultyIntermediate ?? "Intermediate" : opt.id === "advanced" ? labels.difficultyAdvanced ?? "Advanced" : labels.difficultyExpert ?? "Expert";
|
|
3143
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3144
|
+
"button",
|
|
3145
|
+
{
|
|
3146
|
+
type: "button",
|
|
3147
|
+
onClick: () => setDifficulty(opt.id),
|
|
3148
|
+
"aria-pressed": selected,
|
|
3149
|
+
className: [
|
|
3150
|
+
"liquid-surface flex items-center gap-2 rounded-xl px-3 py-2 text-left transition-all",
|
|
3151
|
+
selected ? "ring-2 ring-indigo-500/70 ring-offset-1 ring-offset-transparent" : "hover:border-indigo-400/40 focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1"
|
|
3152
|
+
].join(" "),
|
|
3153
|
+
children: [
|
|
3154
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3155
|
+
"span",
|
|
3156
|
+
{
|
|
3157
|
+
"aria-hidden": "true",
|
|
3158
|
+
className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-gradient-to-br ${opt.accent} text-base shadow-sm`,
|
|
3159
|
+
children: opt.emoji
|
|
3160
|
+
}
|
|
3161
|
+
),
|
|
3162
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: label })
|
|
3163
|
+
]
|
|
3164
|
+
},
|
|
3165
|
+
opt.id
|
|
3166
|
+
);
|
|
3167
|
+
}) })
|
|
3168
|
+
] }),
|
|
3169
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3170
|
+
chunkFNA66TT4_js.FormInput,
|
|
3171
|
+
{
|
|
3172
|
+
label: labels.tagsLabel ?? "Tags",
|
|
3173
|
+
value: tagsInput,
|
|
3174
|
+
onValueChange: setTagsInput,
|
|
3175
|
+
placeholder: labels.tagsPlaceholder ?? "comma, separated, tags"
|
|
3176
|
+
}
|
|
3177
|
+
)
|
|
3178
|
+
] })
|
|
3179
|
+
}
|
|
2983
3180
|
)
|
|
2984
3181
|
] })
|
|
2985
3182
|
}
|
|
@@ -2995,31 +3192,31 @@ function deriveInitials(name) {
|
|
|
2995
3192
|
|
|
2996
3193
|
Object.defineProperty(exports, "RolesPageView", {
|
|
2997
3194
|
enumerable: true,
|
|
2998
|
-
get: function () { return
|
|
3195
|
+
get: function () { return chunkFKUIVS6I_js.RolesPageView; }
|
|
2999
3196
|
});
|
|
3000
3197
|
Object.defineProperty(exports, "UsersPageView", {
|
|
3001
3198
|
enumerable: true,
|
|
3002
|
-
get: function () { return
|
|
3199
|
+
get: function () { return chunkFKUIVS6I_js.UsersPageView; }
|
|
3003
3200
|
});
|
|
3004
3201
|
Object.defineProperty(exports, "DIALECT_CATEGORIES", {
|
|
3005
3202
|
enumerable: true,
|
|
3006
|
-
get: function () { return
|
|
3203
|
+
get: function () { return chunkTJPPZU77_js.DIALECT_CATEGORIES; }
|
|
3007
3204
|
});
|
|
3008
3205
|
Object.defineProperty(exports, "DatasourceFormModal", {
|
|
3009
3206
|
enumerable: true,
|
|
3010
|
-
get: function () { return
|
|
3207
|
+
get: function () { return chunkTJPPZU77_js.DatasourceFormModal; }
|
|
3011
3208
|
});
|
|
3012
3209
|
Object.defineProperty(exports, "DatasourceModal", {
|
|
3013
3210
|
enumerable: true,
|
|
3014
|
-
get: function () { return
|
|
3211
|
+
get: function () { return chunkTJPPZU77_js.DatasourceModal; }
|
|
3015
3212
|
});
|
|
3016
3213
|
Object.defineProperty(exports, "findCategory", {
|
|
3017
3214
|
enumerable: true,
|
|
3018
|
-
get: function () { return
|
|
3215
|
+
get: function () { return chunkTJPPZU77_js.findCategory; }
|
|
3019
3216
|
});
|
|
3020
3217
|
Object.defineProperty(exports, "findDialect", {
|
|
3021
3218
|
enumerable: true,
|
|
3022
|
-
get: function () { return
|
|
3219
|
+
get: function () { return chunkTJPPZU77_js.findDialect; }
|
|
3023
3220
|
});
|
|
3024
3221
|
exports.AgentsConfigPageView = AgentsConfigPageView;
|
|
3025
3222
|
exports.AgentsIndexPageView = AgentsIndexPageView;
|