@datatechsolutions/ui 3.9.1 → 3.10.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 +107 -107
- package/dist/astrlabe/index.mjs +3 -3
- package/dist/astrlabe/workflow-canvas.js +3 -3
- package/dist/astrlabe/workflow-canvas.mjs +2 -2
- package/dist/{chunk-ZDXEGSCF.js → chunk-2A45ZEK4.js} +45 -45
- package/dist/{chunk-ZDXEGSCF.js.map → chunk-2A45ZEK4.js.map} +1 -1
- package/dist/{chunk-T4IYOKHR.js → chunk-5AKTDJFR.js} +25 -25
- package/dist/{chunk-T4IYOKHR.js.map → chunk-5AKTDJFR.js.map} +1 -1
- package/dist/{chunk-ZQRUAXGP.mjs → chunk-5KI7FB3E.mjs} +188 -48
- package/dist/chunk-5KI7FB3E.mjs.map +1 -0
- package/dist/{chunk-GQWC4EKE.mjs → chunk-5U43K6G3.mjs} +4 -4
- package/dist/{chunk-GQWC4EKE.mjs.map → chunk-5U43K6G3.mjs.map} +1 -1
- package/dist/{chunk-PD3JLDA5.mjs → chunk-6UX2SRA2.mjs} +3 -3
- package/dist/{chunk-PD3JLDA5.mjs.map → chunk-6UX2SRA2.mjs.map} +1 -1
- package/dist/{chunk-2ZY3IQ2I.mjs → chunk-6ZYATZS3.mjs} +3 -3
- package/dist/{chunk-2ZY3IQ2I.mjs.map → chunk-6ZYATZS3.mjs.map} +1 -1
- package/dist/{chunk-AXBD6OAF.mjs → chunk-A256OE5E.mjs} +11 -11
- package/dist/{chunk-AXBD6OAF.mjs.map → chunk-A256OE5E.mjs.map} +1 -1
- package/dist/{chunk-DQIEVLA3.js → chunk-AMESLEIO.js} +35 -35
- package/dist/{chunk-DQIEVLA3.js.map → chunk-AMESLEIO.js.map} +1 -1
- package/dist/{chunk-6E2YH67A.js → chunk-B76RTA7D.js} +35 -35
- package/dist/{chunk-6E2YH67A.js.map → chunk-B76RTA7D.js.map} +1 -1
- package/dist/{chunk-OVQ4MKCV.mjs → chunk-BU4WMSK3.mjs} +3 -3
- package/dist/{chunk-OVQ4MKCV.mjs.map → chunk-BU4WMSK3.mjs.map} +1 -1
- package/dist/{chunk-WS3IJFPW.mjs → chunk-C4D3EI5L.mjs} +3 -3
- package/dist/{chunk-WS3IJFPW.mjs.map → chunk-C4D3EI5L.mjs.map} +1 -1
- package/dist/{chunk-EAIE4QGD.mjs → chunk-DA3H7ERQ.mjs} +20 -20
- package/dist/{chunk-EAIE4QGD.mjs.map → chunk-DA3H7ERQ.mjs.map} +1 -1
- package/dist/{chunk-U6VFS3RD.js → chunk-EC34PGUO.js} +142 -142
- package/dist/{chunk-U6VFS3RD.js.map → chunk-EC34PGUO.js.map} +1 -1
- package/dist/{chunk-6QJI5YOJ.mjs → chunk-FD376DZ6.mjs} +3 -3
- package/dist/{chunk-6QJI5YOJ.mjs.map → chunk-FD376DZ6.mjs.map} +1 -1
- package/dist/{chunk-ZQEMKEEH.mjs → chunk-FENA4YGN.mjs} +3 -3
- package/dist/{chunk-ZQEMKEEH.mjs.map → chunk-FENA4YGN.mjs.map} +1 -1
- package/dist/{chunk-R6GEJBFC.js → chunk-FIJMOTP4.js} +34 -34
- package/dist/{chunk-R6GEJBFC.js.map → chunk-FIJMOTP4.js.map} +1 -1
- package/dist/{chunk-BWUFLW5W.mjs → chunk-H7X3SXMB.mjs} +6 -6
- package/dist/{chunk-BWUFLW5W.mjs.map → chunk-H7X3SXMB.mjs.map} +1 -1
- package/dist/{chunk-OEZ7GAJY.mjs → chunk-HEXTU6W3.mjs} +6 -6
- package/dist/{chunk-OEZ7GAJY.mjs.map → chunk-HEXTU6W3.mjs.map} +1 -1
- package/dist/{chunk-2E7HYTS7.mjs → chunk-JB3U6ORY.mjs} +3 -3
- package/dist/{chunk-2E7HYTS7.mjs.map → chunk-JB3U6ORY.mjs.map} +1 -1
- package/dist/{chunk-A2RIX2RK.js → chunk-KHUWFL6W.js} +4 -4
- package/dist/{chunk-A2RIX2RK.js.map → chunk-KHUWFL6W.js.map} +1 -1
- package/dist/{chunk-CRBGZA6Y.js → chunk-L3R425GB.js} +13 -13
- package/dist/{chunk-CRBGZA6Y.js.map → chunk-L3R425GB.js.map} +1 -1
- package/dist/{chunk-MT66VKLS.js → chunk-LVR4SR65.js} +189 -47
- package/dist/chunk-LVR4SR65.js.map +1 -0
- package/dist/{chunk-UZIICTIY.js → chunk-MAOZWOA6.js} +55 -55
- package/dist/{chunk-UZIICTIY.js.map → chunk-MAOZWOA6.js.map} +1 -1
- package/dist/{chunk-WJENX6KB.js → chunk-MSMEECO6.js} +9 -9
- package/dist/{chunk-WJENX6KB.js.map → chunk-MSMEECO6.js.map} +1 -1
- package/dist/{chunk-SJ6SUS7H.mjs → chunk-NM37GLCL.mjs} +3 -3
- package/dist/{chunk-SJ6SUS7H.mjs.map → chunk-NM37GLCL.mjs.map} +1 -1
- package/dist/{chunk-CLTNCBSP.js → chunk-NSZN54HW.js} +4 -4
- package/dist/{chunk-CLTNCBSP.js.map → chunk-NSZN54HW.js.map} +1 -1
- package/dist/{chunk-7AM2SXEF.js → chunk-O4HH77A4.js} +85 -85
- package/dist/{chunk-7AM2SXEF.js.map → chunk-O4HH77A4.js.map} +1 -1
- package/dist/{chunk-RFUSH7WD.js → chunk-TSNKICPP.js} +10 -10
- package/dist/{chunk-RFUSH7WD.js.map → chunk-TSNKICPP.js.map} +1 -1
- package/dist/{chunk-ARLYOLSO.mjs → chunk-W6MBDTKF.mjs} +3 -3
- package/dist/{chunk-ARLYOLSO.mjs.map → chunk-W6MBDTKF.mjs.map} +1 -1
- package/dist/{chunk-IVKFXPLO.js → chunk-YSYEV2Z6.js} +28 -28
- package/dist/{chunk-IVKFXPLO.js.map → chunk-YSYEV2Z6.js.map} +1 -1
- package/dist/index.d.mts +108 -4
- package/dist/index.d.ts +108 -4
- package/dist/index.js +670 -662
- package/dist/index.mjs +1 -1
- package/dist/platform/admin/index.js +9 -9
- package/dist/platform/admin/index.mjs +3 -3
- package/dist/platform/agents-workspace.js +6 -6
- package/dist/platform/agents-workspace.mjs +5 -5
- package/dist/platform/app-shell.js +3 -3
- package/dist/platform/app-shell.mjs +2 -2
- package/dist/platform/auth/index.js +21 -21
- package/dist/platform/auth/index.mjs +3 -3
- package/dist/platform/billing/index.js +3 -3
- package/dist/platform/billing/index.mjs +2 -2
- package/dist/platform/impersonation/index.js +3 -3
- package/dist/platform/impersonation/index.mjs +2 -2
- package/dist/platform/index.js +74 -74
- package/dist/platform/index.mjs +17 -17
- package/dist/platform/pages/index.d.mts +235 -3
- package/dist/platform/pages/index.d.ts +235 -3
- package/dist/platform/pages/index.js +1959 -246
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +1728 -17
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +6 -6
- package/dist/platform/settings/index.mjs +5 -5
- package/dist/platform/workflow-canvas-shell.js +4 -4
- package/dist/platform/workflow-canvas-shell.mjs +3 -3
- package/package.json +1 -1
- package/dist/chunk-MT66VKLS.js.map +0 -1
- package/dist/chunk-ZQRUAXGP.mjs.map +0 -1
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunk3T2WGL47_js = require('../../chunk-3T2WGL47.js');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
5
|
+
var chunkYSYEV2Z6_js = require('../../chunk-YSYEV2Z6.js');
|
|
6
|
+
var chunkFIJMOTP4_js = require('../../chunk-FIJMOTP4.js');
|
|
7
|
+
var chunkEC34PGUO_js = require('../../chunk-EC34PGUO.js');
|
|
8
8
|
require('../../chunk-55H6WZQP.js');
|
|
9
9
|
require('../../chunk-DJDZIRM6.js');
|
|
10
|
-
require('../../chunk-
|
|
11
|
-
var
|
|
10
|
+
require('../../chunk-O4HH77A4.js');
|
|
11
|
+
var chunkLVR4SR65_js = require('../../chunk-LVR4SR65.js');
|
|
12
12
|
require('../../chunk-YXN2K77G.js');
|
|
13
13
|
require('../../chunk-SY4MUT5V.js');
|
|
14
14
|
require('../../chunk-2OZZH2IO.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
|
+
chunkLVR4SR65_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(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
40
40
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41
|
-
|
|
41
|
+
chunkLVR4SR65_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
|
+
chunkLVR4SR65_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" }) }),
|
|
@@ -71,7 +71,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
71
71
|
const filteredAgents = searchTerm.trim() ? allAgents.filter((agent) => String(agent.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allAgents;
|
|
72
72
|
const isEmpty = allAgents.length === 0;
|
|
73
73
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
-
|
|
74
|
+
chunkLVR4SR65_js.HeroSection,
|
|
75
75
|
{
|
|
76
76
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
|
|
77
77
|
label: labels.title,
|
|
@@ -79,7 +79,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
79
79
|
subtitle: labels.subtitle,
|
|
80
80
|
gradient: "from-violet-500 to-indigo-700",
|
|
81
81
|
toolbar: !isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
82
|
-
|
|
82
|
+
chunkLVR4SR65_js.SearchBar,
|
|
83
83
|
{
|
|
84
84
|
searchTerm,
|
|
85
85
|
onSearchChange: setSearchTerm,
|
|
@@ -88,7 +88,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
88
88
|
}
|
|
89
89
|
) : void 0,
|
|
90
90
|
actions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
91
|
-
|
|
91
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
92
92
|
{
|
|
93
93
|
mode: "desktop",
|
|
94
94
|
label: labels.addAgent,
|
|
@@ -99,7 +99,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
99
99
|
}
|
|
100
100
|
);
|
|
101
101
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
102
|
-
|
|
102
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
103
103
|
{
|
|
104
104
|
mode: "mobile",
|
|
105
105
|
label: labels.addAgent,
|
|
@@ -107,10 +107,10 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
107
107
|
accent: "violet"
|
|
108
108
|
}
|
|
109
109
|
);
|
|
110
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
110
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_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) => {
|
|
111
111
|
const modelRecord = models.find((model) => model.id === String(agent.modelId ?? ""));
|
|
112
112
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
-
|
|
113
|
+
chunkLVR4SR65_js.EntityCard,
|
|
114
114
|
{
|
|
115
115
|
accentGradient: "from-violet-500 to-indigo-700",
|
|
116
116
|
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" }) }),
|
|
@@ -147,7 +147,7 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
147
147
|
);
|
|
148
148
|
}) });
|
|
149
149
|
const renderForm = (initial, onSubmit) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
150
|
-
|
|
150
|
+
chunkLVR4SR65_js.GlassModal,
|
|
151
151
|
{
|
|
152
152
|
open: true,
|
|
153
153
|
onClose: () => {
|
|
@@ -170,13 +170,13 @@ function AgentsConfigPageView({ labels, agents, models, loading, onCreate, onUpd
|
|
|
170
170
|
outputSchema: String(form.get("outputSchema") ?? "").trim() || void 0
|
|
171
171
|
});
|
|
172
172
|
},
|
|
173
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
174
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
175
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
176
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
177
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
178
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
179
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
173
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
174
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name ?? "", required: true }),
|
|
175
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "modelId", label: labels.model, options: modelOptions, defaultValue: initial.modelId ?? modelOptions[0]?.value ?? "", required: true }),
|
|
176
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "maxTokens", label: String(labels.maxTokens), type: "number", defaultValue: String(initial.maxTokens ?? 2048) }),
|
|
177
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "temperature", label: labels.temperature, type: "number", step: 0.1, min: 0, max: 2, defaultValue: String(initial.temperature ?? 0.2) }),
|
|
178
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, defaultValue: initial.systemPrompt ?? "", rows: 4 }),
|
|
179
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "outputSchema", label: labels.outputSchema, placeholder: labels.outputSchemaPlaceholder, defaultValue: initial.outputSchema ?? "", rows: 4 })
|
|
180
180
|
] })
|
|
181
181
|
}
|
|
182
182
|
);
|
|
@@ -243,7 +243,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
243
243
|
}) : allPrompts;
|
|
244
244
|
const isEmpty = allPrompts.length === 0;
|
|
245
245
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
246
|
-
|
|
246
|
+
chunkLVR4SR65_js.HeroSection,
|
|
247
247
|
{
|
|
248
248
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ChatBubbleLeftEllipsisIcon, { className: "h-5 w-5" }),
|
|
249
249
|
label: labels.title,
|
|
@@ -251,7 +251,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
251
251
|
subtitle: labels.subtitle,
|
|
252
252
|
gradient: "from-sky-500 to-blue-700",
|
|
253
253
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
254
|
-
|
|
254
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
255
255
|
{
|
|
256
256
|
mode: "desktop",
|
|
257
257
|
label: labels.addPrompt,
|
|
@@ -262,7 +262,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
262
262
|
}
|
|
263
263
|
);
|
|
264
264
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
265
|
-
|
|
265
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
266
266
|
{
|
|
267
267
|
mode: "mobile",
|
|
268
268
|
label: labels.addPrompt,
|
|
@@ -270,9 +270,9 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
270
270
|
accent: "sky"
|
|
271
271
|
}
|
|
272
272
|
);
|
|
273
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
273
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
274
274
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
275
|
-
|
|
275
|
+
chunkLVR4SR65_js.SearchBar,
|
|
276
276
|
{
|
|
277
277
|
searchTerm,
|
|
278
278
|
onSearchChange: setSearchTerm,
|
|
@@ -283,7 +283,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
283
283
|
const agentName = agentNameById.get(prompt.agentId) ?? prompt.agentId;
|
|
284
284
|
const key = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
|
|
285
285
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
286
|
-
|
|
286
|
+
chunkLVR4SR65_js.EntityCard,
|
|
287
287
|
{
|
|
288
288
|
accentGradient: "from-sky-500 to-blue-700",
|
|
289
289
|
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" }) }),
|
|
@@ -318,7 +318,7 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
318
318
|
mobileAction
|
|
319
319
|
] }),
|
|
320
320
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
321
|
-
|
|
321
|
+
chunkLVR4SR65_js.GlassModal,
|
|
322
322
|
{
|
|
323
323
|
open: createOpen,
|
|
324
324
|
onClose: () => setCreateOpen(false),
|
|
@@ -342,11 +342,11 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
342
342
|
});
|
|
343
343
|
setCreateOpen(false);
|
|
344
344
|
},
|
|
345
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
346
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
347
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
345
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
346
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "agentId", label: labels.agent, options: agentOptions, required: true }),
|
|
347
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "locale", label: labels.locale, options: LOCALE_OPTIONS, defaultValue: "en" }),
|
|
348
348
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
349
|
-
|
|
349
|
+
chunkLVR4SR65_js.FormSelect,
|
|
350
350
|
{
|
|
351
351
|
name: "isActive",
|
|
352
352
|
label: labels.isActive,
|
|
@@ -354,10 +354,10 @@ function AgentsPromptsPageView({ labels, agents, prompts, loading, onCreate, onA
|
|
|
354
354
|
defaultValue: "true"
|
|
355
355
|
}
|
|
356
356
|
),
|
|
357
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
358
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
359
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
360
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
357
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "reason", label: labels.reason }),
|
|
358
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "systemPrompt", label: labels.systemPrompt, rows: 3 }),
|
|
359
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "userTemplate", label: labels.userTemplate, rows: 3 }),
|
|
360
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "prompt", label: labels.prompt, rows: 6, required: true })
|
|
361
361
|
] })
|
|
362
362
|
}
|
|
363
363
|
)
|
|
@@ -392,7 +392,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
392
392
|
const filteredTools = searchTerm.trim() ? allTools.filter((tool) => tool.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTools;
|
|
393
393
|
const isEmpty = allTools.length === 0;
|
|
394
394
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
395
|
-
|
|
395
|
+
chunkLVR4SR65_js.HeroSection,
|
|
396
396
|
{
|
|
397
397
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-5 w-5" }),
|
|
398
398
|
label: labels.title,
|
|
@@ -400,7 +400,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
400
400
|
subtitle: labels.subtitle,
|
|
401
401
|
gradient: "from-amber-500 to-orange-700",
|
|
402
402
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
403
|
-
|
|
403
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
404
404
|
{
|
|
405
405
|
mode: "desktop",
|
|
406
406
|
label: labels.addTool,
|
|
@@ -411,7 +411,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
411
411
|
}
|
|
412
412
|
);
|
|
413
413
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
414
|
-
|
|
414
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
415
415
|
{
|
|
416
416
|
mode: "mobile",
|
|
417
417
|
label: labels.addTool,
|
|
@@ -419,9 +419,9 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
419
419
|
accent: "amber"
|
|
420
420
|
}
|
|
421
421
|
);
|
|
422
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
422
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
423
423
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
424
|
-
|
|
424
|
+
chunkLVR4SR65_js.SearchBar,
|
|
425
425
|
{
|
|
426
426
|
searchTerm,
|
|
427
427
|
onSearchChange: setSearchTerm,
|
|
@@ -429,7 +429,7 @@ function AgentsToolDefinitionsPageView({ labels, tools, loading, onCreate, onUpd
|
|
|
429
429
|
}
|
|
430
430
|
),
|
|
431
431
|
/* @__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(
|
|
432
|
-
|
|
432
|
+
chunkLVR4SR65_js.EntityCard,
|
|
433
433
|
{
|
|
434
434
|
accentGradient: "from-amber-500 to-orange-700",
|
|
435
435
|
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" }) }),
|
|
@@ -519,7 +519,7 @@ function ToolEditor({
|
|
|
519
519
|
setValue((v) => ({ ...v, [key]: next }));
|
|
520
520
|
};
|
|
521
521
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
522
|
-
|
|
522
|
+
chunkLVR4SR65_js.GlassModal,
|
|
523
523
|
{
|
|
524
524
|
open: true,
|
|
525
525
|
onClose,
|
|
@@ -532,9 +532,9 @@ function ToolEditor({
|
|
|
532
532
|
handleSubmit();
|
|
533
533
|
},
|
|
534
534
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
535
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
535
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
536
536
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
537
|
-
|
|
537
|
+
chunkLVR4SR65_js.FormInput,
|
|
538
538
|
{
|
|
539
539
|
label: "Name",
|
|
540
540
|
required: true,
|
|
@@ -544,7 +544,7 @@ function ToolEditor({
|
|
|
544
544
|
}
|
|
545
545
|
),
|
|
546
546
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
547
|
-
|
|
547
|
+
chunkLVR4SR65_js.FormSelect,
|
|
548
548
|
{
|
|
549
549
|
label: "Tool type",
|
|
550
550
|
value: value.toolType,
|
|
@@ -554,7 +554,7 @@ function ToolEditor({
|
|
|
554
554
|
}
|
|
555
555
|
),
|
|
556
556
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
557
|
-
|
|
557
|
+
chunkLVR4SR65_js.FormSelect,
|
|
558
558
|
{
|
|
559
559
|
label: "Enabled",
|
|
560
560
|
value: value.enabled ? "true" : "false",
|
|
@@ -563,7 +563,7 @@ function ToolEditor({
|
|
|
563
563
|
}
|
|
564
564
|
),
|
|
565
565
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
566
|
-
|
|
566
|
+
chunkLVR4SR65_js.FormInput,
|
|
567
567
|
{
|
|
568
568
|
label: "Icon (optional)",
|
|
569
569
|
value: value.icon ?? "",
|
|
@@ -573,7 +573,7 @@ function ToolEditor({
|
|
|
573
573
|
)
|
|
574
574
|
] }),
|
|
575
575
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
576
|
-
|
|
576
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
577
577
|
{
|
|
578
578
|
label: "Description",
|
|
579
579
|
rows: 2,
|
|
@@ -621,7 +621,7 @@ function ParametersEditor({
|
|
|
621
621
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
622
622
|
parameters.map((param, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_160px_1fr_110px_auto] items-end gap-2", children: [
|
|
623
623
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
624
|
-
|
|
624
|
+
chunkLVR4SR65_js.FormInput,
|
|
625
625
|
{
|
|
626
626
|
label: "Name",
|
|
627
627
|
value: param.name,
|
|
@@ -630,7 +630,7 @@ function ParametersEditor({
|
|
|
630
630
|
}
|
|
631
631
|
),
|
|
632
632
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
633
|
-
|
|
633
|
+
chunkLVR4SR65_js.FormSelect,
|
|
634
634
|
{
|
|
635
635
|
label: "Type",
|
|
636
636
|
value: param.type,
|
|
@@ -639,7 +639,7 @@ function ParametersEditor({
|
|
|
639
639
|
}
|
|
640
640
|
),
|
|
641
641
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
642
|
-
|
|
642
|
+
chunkLVR4SR65_js.FormInput,
|
|
643
643
|
{
|
|
644
644
|
label: "Description",
|
|
645
645
|
value: param.description,
|
|
@@ -673,9 +673,9 @@ function HandlerConfigEditor({
|
|
|
673
673
|
if (toolType === "http") {
|
|
674
674
|
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: [
|
|
675
675
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "HTTP handler" }),
|
|
676
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
676
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
677
677
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
678
|
-
|
|
678
|
+
chunkLVR4SR65_js.FormSelect,
|
|
679
679
|
{
|
|
680
680
|
label: "Method",
|
|
681
681
|
value: stringProp(config, "method", "GET"),
|
|
@@ -684,7 +684,7 @@ function HandlerConfigEditor({
|
|
|
684
684
|
}
|
|
685
685
|
),
|
|
686
686
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
687
|
-
|
|
687
|
+
chunkLVR4SR65_js.FormInput,
|
|
688
688
|
{
|
|
689
689
|
label: "URL template",
|
|
690
690
|
value: stringProp(config, "url"),
|
|
@@ -694,7 +694,7 @@ function HandlerConfigEditor({
|
|
|
694
694
|
)
|
|
695
695
|
] }),
|
|
696
696
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
697
|
-
|
|
697
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
698
698
|
{
|
|
699
699
|
label: "Headers (JSON)",
|
|
700
700
|
rows: 3,
|
|
@@ -704,7 +704,7 @@ function HandlerConfigEditor({
|
|
|
704
704
|
}
|
|
705
705
|
),
|
|
706
706
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
707
|
-
|
|
707
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
708
708
|
{
|
|
709
709
|
label: "Body template",
|
|
710
710
|
rows: 3,
|
|
@@ -719,7 +719,7 @@ function HandlerConfigEditor({
|
|
|
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: "Function handler" }),
|
|
721
721
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
722
|
-
|
|
722
|
+
chunkLVR4SR65_js.FormInput,
|
|
723
723
|
{
|
|
724
724
|
label: "Implementation key",
|
|
725
725
|
value: stringProp(config, "implementationKey"),
|
|
@@ -733,9 +733,9 @@ function HandlerConfigEditor({
|
|
|
733
733
|
if (toolType === "database_query") {
|
|
734
734
|
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: [
|
|
735
735
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Database query handler" }),
|
|
736
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
736
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
737
737
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
738
|
-
|
|
738
|
+
chunkLVR4SR65_js.FormInput,
|
|
739
739
|
{
|
|
740
740
|
label: "Datasource ID",
|
|
741
741
|
value: stringProp(config, "datasourceId"),
|
|
@@ -744,7 +744,7 @@ function HandlerConfigEditor({
|
|
|
744
744
|
}
|
|
745
745
|
),
|
|
746
746
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
747
|
-
|
|
747
|
+
chunkLVR4SR65_js.FormInput,
|
|
748
748
|
{
|
|
749
749
|
label: "Max rows",
|
|
750
750
|
type: "number",
|
|
@@ -754,7 +754,7 @@ function HandlerConfigEditor({
|
|
|
754
754
|
)
|
|
755
755
|
] }),
|
|
756
756
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
757
|
-
|
|
757
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
758
758
|
{
|
|
759
759
|
label: "Query template",
|
|
760
760
|
rows: 4,
|
|
@@ -770,7 +770,7 @@ function HandlerConfigEditor({
|
|
|
770
770
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "Code execution handler" }),
|
|
771
771
|
/* @__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." }),
|
|
772
772
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
773
|
-
|
|
773
|
+
chunkLVR4SR65_js.FormSelect,
|
|
774
774
|
{
|
|
775
775
|
label: "Language",
|
|
776
776
|
value: stringProp(config, "language", "javascript"),
|
|
@@ -782,7 +782,7 @@ function HandlerConfigEditor({
|
|
|
782
782
|
}
|
|
783
783
|
),
|
|
784
784
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
785
|
-
|
|
785
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
786
786
|
{
|
|
787
787
|
label: "Code",
|
|
788
788
|
rows: 6,
|
|
@@ -795,9 +795,9 @@ function HandlerConfigEditor({
|
|
|
795
795
|
}
|
|
796
796
|
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: [
|
|
797
797
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-sm font-semibold text-slate-700 dark:text-slate-200", children: "API call handler" }),
|
|
798
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
798
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
799
799
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
800
|
-
|
|
800
|
+
chunkLVR4SR65_js.FormInput,
|
|
801
801
|
{
|
|
802
802
|
label: "URL",
|
|
803
803
|
value: stringProp(config, "url"),
|
|
@@ -805,7 +805,7 @@ function HandlerConfigEditor({
|
|
|
805
805
|
}
|
|
806
806
|
),
|
|
807
807
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
808
|
-
|
|
808
|
+
chunkLVR4SR65_js.FormSelect,
|
|
809
809
|
{
|
|
810
810
|
label: "Auth",
|
|
811
811
|
value: stringProp(config, "authType", "bearer"),
|
|
@@ -819,7 +819,7 @@ function HandlerConfigEditor({
|
|
|
819
819
|
}
|
|
820
820
|
),
|
|
821
821
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
822
|
-
|
|
822
|
+
chunkLVR4SR65_js.FormInput,
|
|
823
823
|
{
|
|
824
824
|
label: "Credential secret id",
|
|
825
825
|
value: stringProp(config, "credentialRef"),
|
|
@@ -944,15 +944,19 @@ function setFromJson(set, key, raw) {
|
|
|
944
944
|
set(key, raw);
|
|
945
945
|
}
|
|
946
946
|
}
|
|
947
|
-
function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete }) {
|
|
947
|
+
function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete, onAddClick }) {
|
|
948
948
|
const [createOpen, setCreateOpen] = react.useState(false);
|
|
949
|
+
const openCreate = () => {
|
|
950
|
+
if (onAddClick) onAddClick();
|
|
951
|
+
else setCreateOpen(true);
|
|
952
|
+
};
|
|
949
953
|
const [editing, setEditing] = react.useState(null);
|
|
950
954
|
const [searchTerm, setSearchTerm] = react.useState("");
|
|
951
955
|
const allRules = rules;
|
|
952
956
|
const filteredRules = searchTerm.trim() ? allRules.filter((rule) => (rule.name ?? "").toLowerCase().includes(searchTerm.trim().toLowerCase())) : allRules;
|
|
953
957
|
const isEmpty = allRules.length === 0;
|
|
954
958
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
955
|
-
|
|
959
|
+
chunkLVR4SR65_js.HeroSection,
|
|
956
960
|
{
|
|
957
961
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
|
|
958
962
|
label: labels.title,
|
|
@@ -960,28 +964,28 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
960
964
|
subtitle: labels.subtitle,
|
|
961
965
|
gradient: "from-fuchsia-500 to-purple-700",
|
|
962
966
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
963
|
-
|
|
967
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
964
968
|
{
|
|
965
969
|
mode: "desktop",
|
|
966
970
|
label: labels.addRule,
|
|
967
|
-
onClick:
|
|
971
|
+
onClick: openCreate,
|
|
968
972
|
accent: "fuchsia"
|
|
969
973
|
}
|
|
970
974
|
)
|
|
971
975
|
}
|
|
972
976
|
);
|
|
973
977
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
974
|
-
|
|
978
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
975
979
|
{
|
|
976
980
|
mode: "mobile",
|
|
977
981
|
label: labels.addRule,
|
|
978
|
-
onClick:
|
|
982
|
+
onClick: openCreate,
|
|
979
983
|
accent: "fuchsia"
|
|
980
984
|
}
|
|
981
985
|
);
|
|
982
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
986
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
983
987
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
984
|
-
|
|
988
|
+
chunkLVR4SR65_js.SearchBar,
|
|
985
989
|
{
|
|
986
990
|
searchTerm,
|
|
987
991
|
onSearchChange: setSearchTerm,
|
|
@@ -989,7 +993,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
989
993
|
}
|
|
990
994
|
),
|
|
991
995
|
/* @__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(
|
|
992
|
-
|
|
996
|
+
chunkLVR4SR65_js.EntityCard,
|
|
993
997
|
{
|
|
994
998
|
accentGradient: "from-fuchsia-500 to-purple-700",
|
|
995
999
|
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" }) }),
|
|
@@ -1027,7 +1031,7 @@ function RulesPageView({ labels, rules, loading, onCreate, onUpdate, onDelete })
|
|
|
1027
1031
|
{
|
|
1028
1032
|
title: labels.createTitle,
|
|
1029
1033
|
saveLabel: labels.save,
|
|
1030
|
-
initial:
|
|
1034
|
+
initial: chunkEC34PGUO_js.defaultRuleForm(),
|
|
1031
1035
|
onClose: () => setCreateOpen(false),
|
|
1032
1036
|
onSubmit: (value) => {
|
|
1033
1037
|
onCreate(value);
|
|
@@ -1059,7 +1063,7 @@ function RuleEditor({
|
|
|
1059
1063
|
}) {
|
|
1060
1064
|
const [value, setValue] = react.useState(initial);
|
|
1061
1065
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1062
|
-
|
|
1066
|
+
chunkLVR4SR65_js.GlassModal,
|
|
1063
1067
|
{
|
|
1064
1068
|
open: true,
|
|
1065
1069
|
onClose,
|
|
@@ -1071,12 +1075,12 @@ function RuleEditor({
|
|
|
1071
1075
|
event.preventDefault();
|
|
1072
1076
|
onSubmit(value);
|
|
1073
1077
|
},
|
|
1074
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1078
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkEC34PGUO_js.RuleForm, { value, onChange: setValue })
|
|
1075
1079
|
}
|
|
1076
1080
|
);
|
|
1077
1081
|
}
|
|
1078
1082
|
function ruleToFormValue(rule) {
|
|
1079
|
-
const base =
|
|
1083
|
+
const base = chunkEC34PGUO_js.defaultRuleForm();
|
|
1080
1084
|
const rawCondition = rule.condition ?? rule.conditions;
|
|
1081
1085
|
const rawAction = pickAction(rule);
|
|
1082
1086
|
return {
|
|
@@ -1207,7 +1211,7 @@ var SAMPLE_DATASOURCES = [
|
|
|
1207
1211
|
];
|
|
1208
1212
|
function getDialectLabel(dialect) {
|
|
1209
1213
|
if (!dialect) return "Unknown";
|
|
1210
|
-
for (const category of
|
|
1214
|
+
for (const category of chunkFIJMOTP4_js.DIALECT_CATEGORIES) {
|
|
1211
1215
|
const found = category.dialects.find((d) => d.value === dialect);
|
|
1212
1216
|
if (found) return found.label;
|
|
1213
1217
|
}
|
|
@@ -1215,12 +1219,12 @@ function getDialectLabel(dialect) {
|
|
|
1215
1219
|
}
|
|
1216
1220
|
function getDialectGradient(dialect) {
|
|
1217
1221
|
if (!dialect) return "from-gray-400 to-gray-500";
|
|
1218
|
-
const category =
|
|
1222
|
+
const category = chunkFIJMOTP4_js.findCategory(dialect);
|
|
1219
1223
|
return category?.gradient ?? "from-gray-400 to-gray-500";
|
|
1220
1224
|
}
|
|
1221
1225
|
function getDialectIcon(dialect) {
|
|
1222
1226
|
if (!dialect) return outline.CircleStackIcon;
|
|
1223
|
-
const category =
|
|
1227
|
+
const category = chunkFIJMOTP4_js.findCategory(dialect);
|
|
1224
1228
|
return category?.icon ?? outline.CircleStackIcon;
|
|
1225
1229
|
}
|
|
1226
1230
|
var DIALECT_LOGO = {
|
|
@@ -1259,9 +1263,14 @@ function DatasourcesPageView({
|
|
|
1259
1263
|
labels,
|
|
1260
1264
|
datasources: externalDatasources,
|
|
1261
1265
|
useSampleData = false,
|
|
1262
|
-
onCreate
|
|
1266
|
+
onCreate,
|
|
1267
|
+
onAddClick
|
|
1263
1268
|
}) {
|
|
1264
1269
|
const [modalOpen, setModalOpen] = react.useState(false);
|
|
1270
|
+
const openCreate = () => {
|
|
1271
|
+
if (onAddClick) onAddClick();
|
|
1272
|
+
else setModalOpen(true);
|
|
1273
|
+
};
|
|
1265
1274
|
const [searchTerm, setSearchTerm] = react.useState("");
|
|
1266
1275
|
const [localDatasources, setLocalDatasources] = react.useState(
|
|
1267
1276
|
useSampleData ? SAMPLE_DATASOURCES : []
|
|
@@ -1294,7 +1303,7 @@ function DatasourcesPageView({
|
|
|
1294
1303
|
}
|
|
1295
1304
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
1296
1305
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1297
|
-
|
|
1306
|
+
chunkLVR4SR65_js.HeroSection,
|
|
1298
1307
|
{
|
|
1299
1308
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
|
|
1300
1309
|
label: labels.title,
|
|
@@ -1302,27 +1311,27 @@ function DatasourcesPageView({
|
|
|
1302
1311
|
subtitle: labels.subtitle,
|
|
1303
1312
|
gradient: "from-amber-500 to-orange-600",
|
|
1304
1313
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1305
|
-
|
|
1314
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
1306
1315
|
{
|
|
1307
1316
|
mode: "desktop",
|
|
1308
1317
|
label: labels.addDatasource,
|
|
1309
|
-
onClick:
|
|
1318
|
+
onClick: openCreate,
|
|
1310
1319
|
accent: "amber"
|
|
1311
1320
|
}
|
|
1312
1321
|
)
|
|
1313
1322
|
}
|
|
1314
1323
|
),
|
|
1315
1324
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1316
|
-
|
|
1325
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
1317
1326
|
{
|
|
1318
1327
|
mode: "mobile",
|
|
1319
1328
|
label: labels.addDatasource,
|
|
1320
|
-
onClick:
|
|
1329
|
+
onClick: openCreate,
|
|
1321
1330
|
accent: "amber"
|
|
1322
1331
|
}
|
|
1323
1332
|
),
|
|
1324
1333
|
!isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1325
|
-
|
|
1334
|
+
chunkLVR4SR65_js.SearchBar,
|
|
1326
1335
|
{
|
|
1327
1336
|
searchTerm,
|
|
1328
1337
|
onSearchChange: setSearchTerm,
|
|
@@ -1330,7 +1339,7 @@ function DatasourcesPageView({
|
|
|
1330
1339
|
}
|
|
1331
1340
|
),
|
|
1332
1341
|
isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1333
|
-
|
|
1342
|
+
chunkLVR4SR65_js.PageEmptyState,
|
|
1334
1343
|
{
|
|
1335
1344
|
title: labels.emptyTitle,
|
|
1336
1345
|
message: labels.emptyDescription,
|
|
@@ -1344,7 +1353,7 @@ function DatasourcesPageView({
|
|
|
1344
1353
|
const logoSrc = getDialectLogoSrc(ds.dialect);
|
|
1345
1354
|
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" }) });
|
|
1346
1355
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1347
|
-
|
|
1356
|
+
chunkLVR4SR65_js.EntityCard,
|
|
1348
1357
|
{
|
|
1349
1358
|
accentGradient: gradient,
|
|
1350
1359
|
icon: iconElement,
|
|
@@ -1374,7 +1383,7 @@ function DatasourcesPageView({
|
|
|
1374
1383
|
);
|
|
1375
1384
|
}) }),
|
|
1376
1385
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1377
|
-
|
|
1386
|
+
chunkFIJMOTP4_js.DatasourceModal,
|
|
1378
1387
|
{
|
|
1379
1388
|
open: modalOpen,
|
|
1380
1389
|
onClose: () => setModalOpen(false),
|
|
@@ -1403,7 +1412,7 @@ function AgentsIndexPageView({ labels }) {
|
|
|
1403
1412
|
const filteredTiles = searchTerm.trim() ? allTiles.filter((tile) => tile.title.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allTiles;
|
|
1404
1413
|
const isEmpty = allTiles.length === 0;
|
|
1405
1414
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1406
|
-
|
|
1415
|
+
chunkLVR4SR65_js.HeroSection,
|
|
1407
1416
|
{
|
|
1408
1417
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
|
|
1409
1418
|
label: labels.title,
|
|
@@ -1414,7 +1423,7 @@ function AgentsIndexPageView({ labels }) {
|
|
|
1414
1423
|
);
|
|
1415
1424
|
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1416
1425
|
!isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1417
|
-
|
|
1426
|
+
chunkLVR4SR65_js.SearchBar,
|
|
1418
1427
|
{
|
|
1419
1428
|
searchTerm,
|
|
1420
1429
|
onSearchChange: setSearchTerm,
|
|
@@ -1424,7 +1433,7 @@ function AgentsIndexPageView({ labels }) {
|
|
|
1424
1433
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: filteredTiles.map((tile) => {
|
|
1425
1434
|
const Icon = tile.icon;
|
|
1426
1435
|
return /* @__PURE__ */ jsxRuntime.jsx(Link, { href: tile.href, className: "block focus:outline-none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1427
|
-
|
|
1436
|
+
chunkLVR4SR65_js.EntityCard,
|
|
1428
1437
|
{
|
|
1429
1438
|
accentGradient: tile.gradient,
|
|
1430
1439
|
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" }) }),
|
|
@@ -1443,7 +1452,7 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1443
1452
|
const selectedWorkflow = workflows[0] ?? null;
|
|
1444
1453
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1445
1454
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1446
|
-
|
|
1455
|
+
chunkLVR4SR65_js.SectionHeader,
|
|
1447
1456
|
{
|
|
1448
1457
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.RectangleStackIcon, { className: "h-5 w-5 text-white" }),
|
|
1449
1458
|
title: labels.title,
|
|
@@ -1452,9 +1461,9 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1452
1461
|
}
|
|
1453
1462
|
),
|
|
1454
1463
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
|
|
1455
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1464
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.add }),
|
|
1456
1465
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1457
|
-
|
|
1466
|
+
chunkLVR4SR65_js.Form,
|
|
1458
1467
|
{
|
|
1459
1468
|
onSubmit: (event) => {
|
|
1460
1469
|
event.preventDefault();
|
|
@@ -1465,32 +1474,32 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1465
1474
|
onCreate({ name, description });
|
|
1466
1475
|
event.currentTarget.reset();
|
|
1467
1476
|
},
|
|
1468
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1469
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1470
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1471
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1477
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
1478
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "name", label: labels.workflowName, placeholder: labels.workflowNamePlaceholder, required: true }),
|
|
1479
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.workflowDescriptionPlaceholder, rows: 3 }),
|
|
1480
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", children: labels.create }) })
|
|
1472
1481
|
] })
|
|
1473
1482
|
}
|
|
1474
1483
|
)
|
|
1475
1484
|
] }),
|
|
1476
1485
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
|
|
1477
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1478
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1479
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1480
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1481
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1482
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1483
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1484
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1486
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.registry }),
|
|
1487
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.Table, { children: [
|
|
1488
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHead, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.TableRow, { children: [
|
|
1489
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.name }),
|
|
1490
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.description }),
|
|
1491
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.version }),
|
|
1492
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.status }),
|
|
1493
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableHeader, { children: labels.actions })
|
|
1485
1494
|
] }) }),
|
|
1486
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1487
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1488
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1489
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1490
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1491
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1495
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableBody, { children: workflows.map((workflow) => /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.TableRow, { children: [
|
|
1496
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: workflow.name }),
|
|
1497
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: workflow.description }),
|
|
1498
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: String(workflow.version) }),
|
|
1499
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { children: workflow.isDraft ? labels.statusDraft : labels.statusPublished }) }),
|
|
1500
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TableCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1492
1501
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1493
|
-
|
|
1502
|
+
chunkLVR4SR65_js.Form,
|
|
1494
1503
|
{
|
|
1495
1504
|
onSubmit: (event) => {
|
|
1496
1505
|
event.preventDefault();
|
|
@@ -1500,7 +1509,7 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1500
1509
|
description: workflow.description ?? ""
|
|
1501
1510
|
});
|
|
1502
1511
|
},
|
|
1503
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1512
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.InlineForm, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", outline: true, children: labels.saveMeta }) })
|
|
1504
1513
|
}
|
|
1505
1514
|
),
|
|
1506
1515
|
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "sky", onClick: () => onPublish(workflow.id), children: labels.publish })
|
|
@@ -1509,8 +1518,8 @@ function WorkflowsPageView({ labels, workflows, onCreate, onUpdateMeta, onPublis
|
|
|
1509
1518
|
] })
|
|
1510
1519
|
] }),
|
|
1511
1520
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "liquid-surface rounded-2xl p-4 space-y-3", children: [
|
|
1512
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1513
|
-
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(
|
|
1521
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { className: "font-semibold text-slate-900 dark:text-slate-100", children: labels.workspace }),
|
|
1522
|
+
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(chunkYSYEV2Z6_js.WorkflowWorkspace, { graph: chunk3T2WGL47_js.adaptWorkflowGraphToUi(selectedWorkflow.graph) }) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Text, { children: labels.empty })
|
|
1514
1523
|
] })
|
|
1515
1524
|
] });
|
|
1516
1525
|
}
|
|
@@ -1559,7 +1568,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1559
1568
|
});
|
|
1560
1569
|
const isEmpty = allRuns.length === 0;
|
|
1561
1570
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1562
|
-
|
|
1571
|
+
chunkLVR4SR65_js.HeroSection,
|
|
1563
1572
|
{
|
|
1564
1573
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
|
|
1565
1574
|
label: labels.title,
|
|
@@ -1567,7 +1576,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1567
1576
|
subtitle: labels.subtitle,
|
|
1568
1577
|
gradient: "from-indigo-500 to-sky-700",
|
|
1569
1578
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full sm:w-48", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1570
|
-
|
|
1579
|
+
chunkLVR4SR65_js.FormSelect,
|
|
1571
1580
|
{
|
|
1572
1581
|
name: "statusFilter",
|
|
1573
1582
|
label: labels.filterStatus,
|
|
@@ -1578,9 +1587,9 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1578
1587
|
) })
|
|
1579
1588
|
}
|
|
1580
1589
|
);
|
|
1581
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1590
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : filteredRuns.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1582
1591
|
!isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1583
|
-
|
|
1592
|
+
chunkLVR4SR65_js.SearchBar,
|
|
1584
1593
|
{
|
|
1585
1594
|
searchTerm,
|
|
1586
1595
|
onSearchChange: setSearchTerm,
|
|
@@ -1588,7 +1597,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1588
1597
|
}
|
|
1589
1598
|
),
|
|
1590
1599
|
/* @__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(
|
|
1591
|
-
|
|
1600
|
+
chunkLVR4SR65_js.EntityCard,
|
|
1592
1601
|
{
|
|
1593
1602
|
accentGradient: "from-indigo-500 to-sky-700",
|
|
1594
1603
|
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" }) }),
|
|
@@ -1621,7 +1630,7 @@ function WorkflowRunsPageView({ labels, runs, loading, onCancel, onReplay, onVie
|
|
|
1621
1630
|
}
|
|
1622
1631
|
function RunTimelinePageView({ labels, entries, loading, runId }) {
|
|
1623
1632
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1624
|
-
|
|
1633
|
+
chunkLVR4SR65_js.HeroSection,
|
|
1625
1634
|
{
|
|
1626
1635
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ClockIcon, { className: "h-5 w-5" }),
|
|
1627
1636
|
label: labels.title,
|
|
@@ -1633,19 +1642,19 @@ function RunTimelinePageView({ labels, entries, loading, runId }) {
|
|
|
1633
1642
|
if (loading) {
|
|
1634
1643
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
1635
1644
|
hero,
|
|
1636
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1645
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {})
|
|
1637
1646
|
] });
|
|
1638
1647
|
}
|
|
1639
1648
|
if (entries.length === 0) {
|
|
1640
1649
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
1641
1650
|
hero,
|
|
1642
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1651
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty ?? "", message: "", iconName: "folder-open" })
|
|
1643
1652
|
] });
|
|
1644
1653
|
}
|
|
1645
1654
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
1646
1655
|
hero,
|
|
1647
1656
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1648
|
-
|
|
1657
|
+
chunkEC34PGUO_js.ExecutionTimelinePanel,
|
|
1649
1658
|
{
|
|
1650
1659
|
entries,
|
|
1651
1660
|
labels
|
|
@@ -1730,7 +1739,7 @@ function ConnectionsPageView({
|
|
|
1730
1739
|
const filteredConnections = searchTerm.trim() ? allConnections.filter((conn) => conn.name.toLowerCase().includes(searchTerm.trim().toLowerCase())) : allConnections;
|
|
1731
1740
|
const isEmpty = allConnections.length === 0;
|
|
1732
1741
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1733
|
-
|
|
1742
|
+
chunkLVR4SR65_js.HeroSection,
|
|
1734
1743
|
{
|
|
1735
1744
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-5 w-5" }),
|
|
1736
1745
|
label: labels.title,
|
|
@@ -1738,7 +1747,7 @@ function ConnectionsPageView({
|
|
|
1738
1747
|
subtitle: labels.subtitle,
|
|
1739
1748
|
gradient: "from-sky-500 to-indigo-600",
|
|
1740
1749
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1741
|
-
|
|
1750
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
1742
1751
|
{
|
|
1743
1752
|
mode: "desktop",
|
|
1744
1753
|
label: labels.add,
|
|
@@ -1749,7 +1758,7 @@ function ConnectionsPageView({
|
|
|
1749
1758
|
}
|
|
1750
1759
|
);
|
|
1751
1760
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1752
|
-
|
|
1761
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
1753
1762
|
{
|
|
1754
1763
|
mode: "mobile",
|
|
1755
1764
|
label: labels.add,
|
|
@@ -1757,9 +1766,9 @@ function ConnectionsPageView({
|
|
|
1757
1766
|
accent: "sky"
|
|
1758
1767
|
}
|
|
1759
1768
|
);
|
|
1760
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1769
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1761
1770
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1762
|
-
|
|
1771
|
+
chunkLVR4SR65_js.SearchBar,
|
|
1763
1772
|
{
|
|
1764
1773
|
searchTerm,
|
|
1765
1774
|
onSearchChange: setSearchTerm,
|
|
@@ -1767,7 +1776,7 @@ function ConnectionsPageView({
|
|
|
1767
1776
|
}
|
|
1768
1777
|
),
|
|
1769
1778
|
/* @__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(
|
|
1770
|
-
|
|
1779
|
+
chunkLVR4SR65_js.EntityCard,
|
|
1771
1780
|
{
|
|
1772
1781
|
accentGradient: "from-sky-500 to-indigo-600",
|
|
1773
1782
|
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" }) }),
|
|
@@ -1920,7 +1929,7 @@ function ConnectionEditor({
|
|
|
1920
1929
|
return preset.exampleModels?.join(", ") ?? "";
|
|
1921
1930
|
}, [preset]);
|
|
1922
1931
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1923
|
-
|
|
1932
|
+
chunkLVR4SR65_js.GlassModal,
|
|
1924
1933
|
{
|
|
1925
1934
|
open: true,
|
|
1926
1935
|
onClose,
|
|
@@ -1933,9 +1942,9 @@ function ConnectionEditor({
|
|
|
1933
1942
|
void handleSubmit();
|
|
1934
1943
|
},
|
|
1935
1944
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
1936
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1945
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
1937
1946
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1938
|
-
|
|
1947
|
+
chunkLVR4SR65_js.FormSelect,
|
|
1939
1948
|
{
|
|
1940
1949
|
label: "Provider",
|
|
1941
1950
|
value: value.providerSlug,
|
|
@@ -1946,7 +1955,7 @@ function ConnectionEditor({
|
|
|
1946
1955
|
}
|
|
1947
1956
|
),
|
|
1948
1957
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1949
|
-
|
|
1958
|
+
chunkLVR4SR65_js.FormInput,
|
|
1950
1959
|
{
|
|
1951
1960
|
label: "Display name",
|
|
1952
1961
|
required: true,
|
|
@@ -1956,7 +1965,7 @@ function ConnectionEditor({
|
|
|
1956
1965
|
}
|
|
1957
1966
|
),
|
|
1958
1967
|
preset.needsRegion && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1959
|
-
|
|
1968
|
+
chunkLVR4SR65_js.FormInput,
|
|
1960
1969
|
{
|
|
1961
1970
|
label: "Region",
|
|
1962
1971
|
value: value.region,
|
|
@@ -1965,7 +1974,7 @@ function ConnectionEditor({
|
|
|
1965
1974
|
}
|
|
1966
1975
|
),
|
|
1967
1976
|
preset.needsEndpoint && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1968
|
-
|
|
1977
|
+
chunkLVR4SR65_js.FormInput,
|
|
1969
1978
|
{
|
|
1970
1979
|
label: "Endpoint URL",
|
|
1971
1980
|
value: value.endpoint,
|
|
@@ -1975,7 +1984,7 @@ function ConnectionEditor({
|
|
|
1975
1984
|
)
|
|
1976
1985
|
] }),
|
|
1977
1986
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1978
|
-
|
|
1987
|
+
chunkLVR4SR65_js.FormInput,
|
|
1979
1988
|
{
|
|
1980
1989
|
label: value.credentialRef ? "Rotate API key (leave blank to keep current)" : "API key",
|
|
1981
1990
|
type: "password",
|
|
@@ -1986,7 +1995,7 @@ function ConnectionEditor({
|
|
|
1986
1995
|
}
|
|
1987
1996
|
),
|
|
1988
1997
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1989
|
-
|
|
1998
|
+
chunkLVR4SR65_js.FormInput,
|
|
1990
1999
|
{
|
|
1991
2000
|
label: "Model filter (comma-separated, optional)",
|
|
1992
2001
|
value: value.modelFilter,
|
|
@@ -1998,7 +2007,7 @@ function ConnectionEditor({
|
|
|
1998
2007
|
/* @__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: [
|
|
1999
2008
|
/* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer font-medium text-slate-700 dark:text-slate-200", children: "Advanced config (JSON)" }),
|
|
2000
2009
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2001
|
-
|
|
2010
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
2002
2011
|
{
|
|
2003
2012
|
rows: 4,
|
|
2004
2013
|
value: value.configJson,
|
|
@@ -2068,7 +2077,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2068
2077
|
{ value: "password", label: labels.typePassword }
|
|
2069
2078
|
];
|
|
2070
2079
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2071
|
-
|
|
2080
|
+
chunkLVR4SR65_js.HeroSection,
|
|
2072
2081
|
{
|
|
2073
2082
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-5 w-5" }),
|
|
2074
2083
|
label: labels.title,
|
|
@@ -2076,7 +2085,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2076
2085
|
subtitle: labels.subtitle,
|
|
2077
2086
|
gradient: "from-rose-500 to-orange-600",
|
|
2078
2087
|
toolbar: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2079
|
-
|
|
2088
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
2080
2089
|
{
|
|
2081
2090
|
mode: "desktop",
|
|
2082
2091
|
label: labels.addCredential,
|
|
@@ -2087,7 +2096,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2087
2096
|
}
|
|
2088
2097
|
);
|
|
2089
2098
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2090
|
-
|
|
2099
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
2091
2100
|
{
|
|
2092
2101
|
mode: "mobile",
|
|
2093
2102
|
label: labels.addCredential,
|
|
@@ -2095,9 +2104,9 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2095
2104
|
accent: "rose"
|
|
2096
2105
|
}
|
|
2097
2106
|
);
|
|
2098
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2107
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageEmptyState, { title: labels.empty, message: labels.subtitle, iconName: "folder-open" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2099
2108
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2100
|
-
|
|
2109
|
+
chunkLVR4SR65_js.SearchBar,
|
|
2101
2110
|
{
|
|
2102
2111
|
searchTerm,
|
|
2103
2112
|
onSearchChange: setSearchTerm,
|
|
@@ -2105,7 +2114,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2105
2114
|
}
|
|
2106
2115
|
),
|
|
2107
2116
|
/* @__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(
|
|
2108
|
-
|
|
2117
|
+
chunkLVR4SR65_js.EntityCard,
|
|
2109
2118
|
{
|
|
2110
2119
|
accentGradient: "from-rose-500 to-orange-700",
|
|
2111
2120
|
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" }) }),
|
|
@@ -2113,7 +2122,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2113
2122
|
subtitle: secret.secretType,
|
|
2114
2123
|
status: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: secret.disabled ? "zinc" : "emerald", children: secret.disabled ? labels.disable : "Active" }),
|
|
2115
2124
|
footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
2116
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2125
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.CopyableId, { id: secret.secretId }),
|
|
2117
2126
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
2118
2127
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => setRotateFor(secret), children: [
|
|
2119
2128
|
/* @__PURE__ */ jsxRuntime.jsx(outline.ArrowPathIcon, { className: "mr-1 h-3.5 w-3.5" }),
|
|
@@ -2156,7 +2165,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2156
2165
|
mobileAction
|
|
2157
2166
|
] }),
|
|
2158
2167
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2159
|
-
|
|
2168
|
+
chunkLVR4SR65_js.GlassModal,
|
|
2160
2169
|
{
|
|
2161
2170
|
open: createOpen,
|
|
2162
2171
|
onClose: () => setCreateOpen(false),
|
|
@@ -2174,16 +2183,16 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2174
2183
|
onCreate({ name, value, secretType, description });
|
|
2175
2184
|
setCreateOpen(false);
|
|
2176
2185
|
},
|
|
2177
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2178
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2179
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2180
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2181
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2186
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
2187
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "name", label: labels.name, placeholder: labels.namePlaceholder, required: true }),
|
|
2188
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "secretType", label: labels.type, options: typeOptions, defaultValue: "generic" }),
|
|
2189
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }),
|
|
2190
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "description", label: labels.description, placeholder: labels.descriptionPlaceholder, rows: 2 })
|
|
2182
2191
|
] })
|
|
2183
2192
|
}
|
|
2184
2193
|
),
|
|
2185
2194
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2186
|
-
|
|
2195
|
+
chunkLVR4SR65_js.GlassModal,
|
|
2187
2196
|
{
|
|
2188
2197
|
open: rotateFor !== null,
|
|
2189
2198
|
onClose: () => setRotateFor(null),
|
|
@@ -2198,7 +2207,7 @@ function CredentialsPageView({ labels, credentials, loading, onCreate, onRotate,
|
|
|
2198
2207
|
onRotate(rotateFor, value);
|
|
2199
2208
|
setRotateFor(null);
|
|
2200
2209
|
},
|
|
2201
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2210
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormGrid, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "value", label: labels.value, placeholder: labels.valuePlaceholder, required: true, type: "password" }) })
|
|
2202
2211
|
}
|
|
2203
2212
|
)
|
|
2204
2213
|
] });
|
|
@@ -2251,7 +2260,7 @@ function AgentsWorkspacePageView({
|
|
|
2251
2260
|
}, [agents, selectedId]);
|
|
2252
2261
|
const isEmpty = agents.length === 0;
|
|
2253
2262
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2254
|
-
|
|
2263
|
+
chunkLVR4SR65_js.HeroSection,
|
|
2255
2264
|
{
|
|
2256
2265
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-5 w-5" }),
|
|
2257
2266
|
label: labels.title,
|
|
@@ -2259,7 +2268,7 @@ function AgentsWorkspacePageView({
|
|
|
2259
2268
|
subtitle: labels.subtitle,
|
|
2260
2269
|
gradient: "from-violet-500 to-indigo-700",
|
|
2261
2270
|
actions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2262
|
-
|
|
2271
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
2263
2272
|
{
|
|
2264
2273
|
mode: "desktop",
|
|
2265
2274
|
label: labels.addAgent,
|
|
@@ -2270,7 +2279,7 @@ function AgentsWorkspacePageView({
|
|
|
2270
2279
|
}
|
|
2271
2280
|
);
|
|
2272
2281
|
const mobileAction = /* @__PURE__ */ jsxRuntime.jsx(
|
|
2273
|
-
|
|
2282
|
+
chunkLVR4SR65_js.CreateActionButton,
|
|
2274
2283
|
{
|
|
2275
2284
|
mode: "mobile",
|
|
2276
2285
|
label: labels.addAgent,
|
|
@@ -2278,8 +2287,8 @@ function AgentsWorkspacePageView({
|
|
|
2278
2287
|
accent: "violet"
|
|
2279
2288
|
}
|
|
2280
2289
|
);
|
|
2281
|
-
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2282
|
-
|
|
2290
|
+
const content = loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.PageLoadingState, {}) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2291
|
+
chunkLVR4SR65_js.PageEmptyState,
|
|
2283
2292
|
{
|
|
2284
2293
|
title: labels.empty,
|
|
2285
2294
|
message: labels.emptyMessage,
|
|
@@ -2287,7 +2296,7 @@ function AgentsWorkspacePageView({
|
|
|
2287
2296
|
}
|
|
2288
2297
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2289
2298
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2290
|
-
|
|
2299
|
+
chunkLVR4SR65_js.SearchBar,
|
|
2291
2300
|
{
|
|
2292
2301
|
searchTerm,
|
|
2293
2302
|
onSearchChange: setSearchTerm,
|
|
@@ -2295,15 +2304,15 @@ function AgentsWorkspacePageView({
|
|
|
2295
2304
|
}
|
|
2296
2305
|
),
|
|
2297
2306
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]", children: [
|
|
2298
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2307
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "lg:sticky lg:top-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { variant: "glass", children: filteredAgents.map((agent) => {
|
|
2299
2308
|
const id = String(agent.agentId ?? agent.id ?? "");
|
|
2300
2309
|
const active = id === selectedId;
|
|
2301
2310
|
const initials = deriveInitials(String(agent.name ?? id));
|
|
2302
2311
|
const modelName = models.find((m) => m.id === String(agent.modelId ?? ""))?.name ?? String(agent.modelId ?? "");
|
|
2303
2312
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2304
|
-
|
|
2313
|
+
chunkLVR4SR65_js.ListCardItem,
|
|
2305
2314
|
{
|
|
2306
|
-
leading: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2315
|
+
leading: /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Avatar, { tone: active ? "violet" : "slate", initials }),
|
|
2307
2316
|
trailing: agent.activePromptVersion > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: "emerald", children: [
|
|
2308
2317
|
"v",
|
|
2309
2318
|
agent.activePromptVersion
|
|
@@ -2345,7 +2354,7 @@ function AgentsWorkspacePageView({
|
|
|
2345
2354
|
},
|
|
2346
2355
|
String(selectedAgent.agentId ?? selectedAgent.id ?? "")
|
|
2347
2356
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2348
|
-
|
|
2357
|
+
chunkLVR4SR65_js.SectionCard,
|
|
2349
2358
|
{
|
|
2350
2359
|
header: {
|
|
2351
2360
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
|
|
@@ -2353,7 +2362,7 @@ function AgentsWorkspacePageView({
|
|
|
2353
2362
|
subtitle: labels.noSelectionMessage
|
|
2354
2363
|
},
|
|
2355
2364
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2356
|
-
|
|
2365
|
+
chunkLVR4SR65_js.PageEmptyState,
|
|
2357
2366
|
{
|
|
2358
2367
|
title: labels.noSelection,
|
|
2359
2368
|
message: labels.noSelectionMessage,
|
|
@@ -2388,7 +2397,7 @@ function AgentDetail({
|
|
|
2388
2397
|
}) {
|
|
2389
2398
|
const agentId = String(agent.agentId ?? agent.id ?? "");
|
|
2390
2399
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2391
|
-
|
|
2400
|
+
chunkLVR4SR65_js.SectionCard,
|
|
2392
2401
|
{
|
|
2393
2402
|
header: {
|
|
2394
2403
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CpuChipIcon, { className: "h-4 w-4" }),
|
|
@@ -2413,15 +2422,15 @@ function AgentDetail({
|
|
|
2413
2422
|
]
|
|
2414
2423
|
}
|
|
2415
2424
|
),
|
|
2416
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2417
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2418
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2419
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2420
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2421
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2425
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.Tabs, { defaultValue: "general", className: "w-full", children: [
|
|
2426
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.TabsList, { className: "bg-white/40 dark:bg-white/[0.06]", children: [
|
|
2427
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsTrigger, { value: "general", children: labels.generalTab }),
|
|
2428
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsTrigger, { value: "prompt", children: labels.promptTab }),
|
|
2429
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsTrigger, { value: "tools", children: labels.toolsTab }),
|
|
2430
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsTrigger, { value: "model", children: labels.modelTab })
|
|
2422
2431
|
] }),
|
|
2423
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2424
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2432
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "general", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(GeneralTab, { agent, labels, onSubmit: (input) => onUpdateAgent(agentId, input) }) }),
|
|
2433
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "prompt", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2425
2434
|
PromptTab,
|
|
2426
2435
|
{
|
|
2427
2436
|
agent,
|
|
@@ -2431,7 +2440,7 @@ function AgentDetail({
|
|
|
2431
2440
|
onActivate: (promptId) => onActivatePrompt(agentId, promptId)
|
|
2432
2441
|
}
|
|
2433
2442
|
) }),
|
|
2434
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2443
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "tools", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2435
2444
|
ToolsTab,
|
|
2436
2445
|
{
|
|
2437
2446
|
agent,
|
|
@@ -2441,7 +2450,7 @@ function AgentDetail({
|
|
|
2441
2450
|
onDetach: (toolId) => onDetachTool(agentId, toolId)
|
|
2442
2451
|
}
|
|
2443
2452
|
) }),
|
|
2444
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2453
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.TabsContent, { value: "model", className: "space-y-4 pt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2445
2454
|
ModelTab,
|
|
2446
2455
|
{
|
|
2447
2456
|
agent,
|
|
@@ -2473,7 +2482,7 @@ function GeneralTab({
|
|
|
2473
2482
|
const initialRole = String(agent.role ?? "");
|
|
2474
2483
|
const initialStatus = String(agent.status ?? "draft");
|
|
2475
2484
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2476
|
-
|
|
2485
|
+
chunkLVR4SR65_js.SectionCard,
|
|
2477
2486
|
{
|
|
2478
2487
|
variant: "glass",
|
|
2479
2488
|
header: {
|
|
@@ -2502,10 +2511,10 @@ function GeneralTab({
|
|
|
2502
2511
|
},
|
|
2503
2512
|
className: "space-y-4",
|
|
2504
2513
|
children: [
|
|
2505
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2506
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2514
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
2515
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "name", label: labels.name, defaultValue: initial.name, required: true }),
|
|
2507
2516
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2508
|
-
|
|
2517
|
+
chunkLVR4SR65_js.FormSelect,
|
|
2509
2518
|
{
|
|
2510
2519
|
name: "status",
|
|
2511
2520
|
label: labels.status,
|
|
@@ -2517,9 +2526,9 @@ function GeneralTab({
|
|
|
2517
2526
|
]
|
|
2518
2527
|
}
|
|
2519
2528
|
),
|
|
2520
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2529
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "role", label: labels.role, placeholder: labels.rolePlaceholder, defaultValue: initialRole }),
|
|
2521
2530
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2522
|
-
|
|
2531
|
+
chunkLVR4SR65_js.FormInput,
|
|
2523
2532
|
{
|
|
2524
2533
|
name: "maxTokens",
|
|
2525
2534
|
label: labels.maxTokens,
|
|
@@ -2528,7 +2537,7 @@ function GeneralTab({
|
|
|
2528
2537
|
}
|
|
2529
2538
|
),
|
|
2530
2539
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2531
|
-
|
|
2540
|
+
chunkLVR4SR65_js.FormInput,
|
|
2532
2541
|
{
|
|
2533
2542
|
name: "temperature",
|
|
2534
2543
|
label: labels.temperature,
|
|
@@ -2540,7 +2549,7 @@ function GeneralTab({
|
|
|
2540
2549
|
}
|
|
2541
2550
|
)
|
|
2542
2551
|
] }),
|
|
2543
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2552
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "description", label: labels.description, defaultValue: initialDescription, rows: 3 }),
|
|
2544
2553
|
/* @__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 }) })
|
|
2545
2554
|
]
|
|
2546
2555
|
}
|
|
@@ -2560,7 +2569,7 @@ function PromptTab({
|
|
|
2560
2569
|
const currentSystem = String(agent.systemPrompt ?? "");
|
|
2561
2570
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2562
2571
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2563
|
-
|
|
2572
|
+
chunkLVR4SR65_js.SectionCard,
|
|
2564
2573
|
{
|
|
2565
2574
|
variant: "glass",
|
|
2566
2575
|
header: {
|
|
@@ -2572,7 +2581,7 @@ function PromptTab({
|
|
|
2572
2581
|
}
|
|
2573
2582
|
),
|
|
2574
2583
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2575
|
-
|
|
2584
|
+
chunkLVR4SR65_js.SectionCard,
|
|
2576
2585
|
{
|
|
2577
2586
|
variant: "glass",
|
|
2578
2587
|
header: {
|
|
@@ -2583,10 +2592,10 @@ function PromptTab({
|
|
|
2583
2592
|
/* @__PURE__ */ jsxRuntime.jsx(outline.PlusIcon, { className: "h-4 w-4" }),
|
|
2584
2593
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.addPrompt })
|
|
2585
2594
|
] }),
|
|
2586
|
-
children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2595
|
+
children: prompts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.promptVersionsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { children: prompts.map((prompt) => {
|
|
2587
2596
|
const id = `${prompt.agentId}:${prompt.locale}:${prompt.version}`;
|
|
2588
2597
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2589
|
-
|
|
2598
|
+
chunkLVR4SR65_js.ListCardItem,
|
|
2590
2599
|
{
|
|
2591
2600
|
leading: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Badge, { color: prompt.isActive ? "emerald" : "zinc", children: [
|
|
2592
2601
|
"v",
|
|
@@ -2604,7 +2613,7 @@ function PromptTab({
|
|
|
2604
2613
|
}
|
|
2605
2614
|
),
|
|
2606
2615
|
addOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2607
|
-
|
|
2616
|
+
chunkLVR4SR65_js.GlassModal,
|
|
2608
2617
|
{
|
|
2609
2618
|
open: true,
|
|
2610
2619
|
onClose: () => setAddOpen(false),
|
|
@@ -2625,10 +2634,10 @@ function PromptTab({
|
|
|
2625
2634
|
});
|
|
2626
2635
|
setAddOpen(false);
|
|
2627
2636
|
},
|
|
2628
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2629
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2637
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
2638
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormSelect, { name: "locale", label: labels.promptLocale, options: LOCALE_OPTIONS2, defaultValue: "en" }),
|
|
2630
2639
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2631
|
-
|
|
2640
|
+
chunkLVR4SR65_js.FormSelect,
|
|
2632
2641
|
{
|
|
2633
2642
|
name: "isActive",
|
|
2634
2643
|
label: labels.promptIsActive,
|
|
@@ -2639,10 +2648,10 @@ function PromptTab({
|
|
|
2639
2648
|
defaultValue: "true"
|
|
2640
2649
|
}
|
|
2641
2650
|
),
|
|
2642
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2643
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2644
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2645
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2651
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormInput, { name: "reason", label: labels.promptReason }),
|
|
2652
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "systemPrompt", label: labels.promptSystemPrompt, rows: 3 }),
|
|
2653
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "userTemplate", label: labels.promptUserTemplate, rows: 3 }),
|
|
2654
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormTextarea, { name: "prompt", label: labels.promptText, rows: 6, required: true })
|
|
2646
2655
|
] })
|
|
2647
2656
|
}
|
|
2648
2657
|
)
|
|
@@ -2665,15 +2674,15 @@ function ToolsTab({
|
|
|
2665
2674
|
const availableTools = tools.filter((tool) => !attachedSet.has(tool.agentToolId));
|
|
2666
2675
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2667
2676
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2668
|
-
|
|
2677
|
+
chunkLVR4SR65_js.SectionCard,
|
|
2669
2678
|
{
|
|
2670
2679
|
variant: "glass",
|
|
2671
2680
|
header: {
|
|
2672
2681
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
|
|
2673
2682
|
title: labels.toolsAttached
|
|
2674
2683
|
},
|
|
2675
|
-
children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2676
|
-
|
|
2684
|
+
children: attachedTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { children: attachedTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2685
|
+
chunkLVR4SR65_js.ListCardItem,
|
|
2677
2686
|
{
|
|
2678
2687
|
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" }) }),
|
|
2679
2688
|
trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => onDetach(tool.agentToolId), children: labels.detachTool }),
|
|
@@ -2687,15 +2696,15 @@ function ToolsTab({
|
|
|
2687
2696
|
}
|
|
2688
2697
|
),
|
|
2689
2698
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2690
|
-
|
|
2699
|
+
chunkLVR4SR65_js.SectionCard,
|
|
2691
2700
|
{
|
|
2692
2701
|
variant: "glass",
|
|
2693
2702
|
header: {
|
|
2694
2703
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.WrenchScrewdriverIcon, { className: "h-4 w-4" }),
|
|
2695
2704
|
title: labels.toolsAvailable
|
|
2696
2705
|
},
|
|
2697
|
-
children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2698
|
-
|
|
2706
|
+
children: availableTools.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500 dark:text-slate-400", children: labels.toolsEmpty }) : /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.ListCard, { children: availableTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2707
|
+
chunkLVR4SR65_js.ListCardItem,
|
|
2699
2708
|
{
|
|
2700
2709
|
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" }) }),
|
|
2701
2710
|
trailing: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", color: "indigo", onClick: () => onAttach(tool.agentToolId), children: [
|
|
@@ -2736,7 +2745,7 @@ function ModelTab({
|
|
|
2736
2745
|
return matches.length > 0 ? matches : connections;
|
|
2737
2746
|
}, [selectedModel, connections]);
|
|
2738
2747
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2739
|
-
|
|
2748
|
+
chunkLVR4SR65_js.SectionCard,
|
|
2740
2749
|
{
|
|
2741
2750
|
variant: "glass",
|
|
2742
2751
|
header: {
|
|
@@ -2757,9 +2766,9 @@ function ModelTab({
|
|
|
2757
2766
|
},
|
|
2758
2767
|
className: "space-y-4",
|
|
2759
2768
|
children: [
|
|
2760
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2769
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
2761
2770
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2762
|
-
|
|
2771
|
+
chunkLVR4SR65_js.FormSelect,
|
|
2763
2772
|
{
|
|
2764
2773
|
label: labels.model,
|
|
2765
2774
|
value: modelId,
|
|
@@ -2768,7 +2777,7 @@ function ModelTab({
|
|
|
2768
2777
|
}
|
|
2769
2778
|
),
|
|
2770
2779
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2771
|
-
|
|
2780
|
+
chunkLVR4SR65_js.FormSelect,
|
|
2772
2781
|
{
|
|
2773
2782
|
label: labels.connection,
|
|
2774
2783
|
value: connectionId,
|
|
@@ -2820,14 +2829,14 @@ function RangeSliderField({
|
|
|
2820
2829
|
step,
|
|
2821
2830
|
zones,
|
|
2822
2831
|
trackGradient,
|
|
2823
|
-
formatValue,
|
|
2832
|
+
formatValue: formatValue2,
|
|
2824
2833
|
ariaLabel
|
|
2825
2834
|
}) {
|
|
2826
2835
|
const percent = (value - min) / (max - min) * 100;
|
|
2827
2836
|
const activeZone = zones?.find((z) => value <= z.max) ?? zones?.[zones.length - 1];
|
|
2828
2837
|
const thumbColor = activeZone?.thumbColor ?? "#6366f1";
|
|
2829
2838
|
const glow = hexToGlow(thumbColor);
|
|
2830
|
-
const displayValue =
|
|
2839
|
+
const displayValue = formatValue2 ? formatValue2(value) : value.toString();
|
|
2831
2840
|
const ariaText = activeZone ? `${displayValue} \u2014 ${activeZone.label}` : displayValue;
|
|
2832
2841
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2833
2842
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
@@ -3060,7 +3069,7 @@ function AgentNewWizardPageView({
|
|
|
3060
3069
|
}
|
|
3061
3070
|
const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS));
|
|
3062
3071
|
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
3063
|
-
|
|
3072
|
+
chunkLVR4SR65_js.HeroSection,
|
|
3064
3073
|
{
|
|
3065
3074
|
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3066
3075
|
"div",
|
|
@@ -3078,7 +3087,7 @@ function AgentNewWizardPageView({
|
|
|
3078
3087
|
);
|
|
3079
3088
|
function renderStep1() {
|
|
3080
3089
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3081
|
-
|
|
3090
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3082
3091
|
{
|
|
3083
3092
|
variant: "glass",
|
|
3084
3093
|
header: {
|
|
@@ -3094,7 +3103,7 @@ function AgentNewWizardPageView({
|
|
|
3094
3103
|
children: AGENT_PRESETS.map((preset) => {
|
|
3095
3104
|
const selected = preset.id === presetId;
|
|
3096
3105
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3097
|
-
|
|
3106
|
+
chunkLVR4SR65_js.FilterTileButton,
|
|
3098
3107
|
{
|
|
3099
3108
|
isActive: selected,
|
|
3100
3109
|
color: preset.tileColor,
|
|
@@ -3113,7 +3122,7 @@ function AgentNewWizardPageView({
|
|
|
3113
3122
|
}
|
|
3114
3123
|
function renderStep2() {
|
|
3115
3124
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3116
|
-
|
|
3125
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3117
3126
|
{
|
|
3118
3127
|
variant: "glass",
|
|
3119
3128
|
header: {
|
|
@@ -3141,9 +3150,9 @@ function AgentNewWizardPageView({
|
|
|
3141
3150
|
e
|
|
3142
3151
|
)) })
|
|
3143
3152
|
] }),
|
|
3144
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3153
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
3145
3154
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3146
|
-
|
|
3155
|
+
chunkLVR4SR65_js.FormInput,
|
|
3147
3156
|
{
|
|
3148
3157
|
label: labels.name,
|
|
3149
3158
|
value: name,
|
|
@@ -3156,7 +3165,7 @@ function AgentNewWizardPageView({
|
|
|
3156
3165
|
}
|
|
3157
3166
|
),
|
|
3158
3167
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3159
|
-
|
|
3168
|
+
chunkLVR4SR65_js.FormInput,
|
|
3160
3169
|
{
|
|
3161
3170
|
label: labels.role,
|
|
3162
3171
|
value: role,
|
|
@@ -3169,7 +3178,7 @@ function AgentNewWizardPageView({
|
|
|
3169
3178
|
)
|
|
3170
3179
|
] }),
|
|
3171
3180
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3172
|
-
|
|
3181
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
3173
3182
|
{
|
|
3174
3183
|
label: labels.descriptionLabel,
|
|
3175
3184
|
value: description,
|
|
@@ -3187,7 +3196,7 @@ function AgentNewWizardPageView({
|
|
|
3187
3196
|
}
|
|
3188
3197
|
function renderStep3() {
|
|
3189
3198
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3190
|
-
|
|
3199
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3191
3200
|
{
|
|
3192
3201
|
variant: "glass",
|
|
3193
3202
|
header: {
|
|
@@ -3195,9 +3204,9 @@ function AgentNewWizardPageView({
|
|
|
3195
3204
|
subtitle: labels.connectionPickPrompt
|
|
3196
3205
|
},
|
|
3197
3206
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3198
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3207
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
3199
3208
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3200
|
-
|
|
3209
|
+
chunkLVR4SR65_js.FormSelect,
|
|
3201
3210
|
{
|
|
3202
3211
|
label: labels.connectionLabel,
|
|
3203
3212
|
value: connectionId,
|
|
@@ -3210,7 +3219,7 @@ function AgentNewWizardPageView({
|
|
|
3210
3219
|
}
|
|
3211
3220
|
),
|
|
3212
3221
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3213
|
-
|
|
3222
|
+
chunkLVR4SR65_js.FormSelect,
|
|
3214
3223
|
{
|
|
3215
3224
|
label: labels.frameworkLabel,
|
|
3216
3225
|
value: framework,
|
|
@@ -3222,7 +3231,7 @@ function AgentNewWizardPageView({
|
|
|
3222
3231
|
}
|
|
3223
3232
|
),
|
|
3224
3233
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3225
|
-
|
|
3234
|
+
chunkLVR4SR65_js.FormSelect,
|
|
3226
3235
|
{
|
|
3227
3236
|
label: labels.model,
|
|
3228
3237
|
value: modelId,
|
|
@@ -3235,7 +3244,7 @@ function AgentNewWizardPageView({
|
|
|
3235
3244
|
)
|
|
3236
3245
|
] }),
|
|
3237
3246
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3238
|
-
|
|
3247
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
3239
3248
|
{
|
|
3240
3249
|
label: labels.outputSchemaLabel,
|
|
3241
3250
|
value: outputSchema,
|
|
@@ -3254,7 +3263,7 @@ function AgentNewWizardPageView({
|
|
|
3254
3263
|
function renderStep4() {
|
|
3255
3264
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3256
3265
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3257
|
-
|
|
3266
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3258
3267
|
{
|
|
3259
3268
|
variant: "glass",
|
|
3260
3269
|
header: {
|
|
@@ -3414,7 +3423,7 @@ function AgentNewWizardPageView({
|
|
|
3414
3423
|
}
|
|
3415
3424
|
),
|
|
3416
3425
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3417
|
-
|
|
3426
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3418
3427
|
{
|
|
3419
3428
|
variant: "glass",
|
|
3420
3429
|
header: {
|
|
@@ -3457,7 +3466,7 @@ function AgentNewWizardPageView({
|
|
|
3457
3466
|
}) })
|
|
3458
3467
|
] }),
|
|
3459
3468
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3460
|
-
|
|
3469
|
+
chunkLVR4SR65_js.FormInput,
|
|
3461
3470
|
{
|
|
3462
3471
|
label: labels.tagsLabel,
|
|
3463
3472
|
value: tagsInput,
|
|
@@ -3478,7 +3487,7 @@ function AgentNewWizardPageView({
|
|
|
3478
3487
|
const connectionLabel = connectionId ? connections.find((c) => c.id === connectionId)?.name ?? labels.connectionInline : labels.connectionInline;
|
|
3479
3488
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
3480
3489
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3481
|
-
|
|
3490
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3482
3491
|
{
|
|
3483
3492
|
variant: "glass",
|
|
3484
3493
|
header: {
|
|
@@ -3493,7 +3502,7 @@ function AgentNewWizardPageView({
|
|
|
3493
3502
|
}
|
|
3494
3503
|
),
|
|
3495
3504
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3496
|
-
|
|
3505
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3497
3506
|
{
|
|
3498
3507
|
variant: "glass",
|
|
3499
3508
|
header: {
|
|
@@ -3522,7 +3531,7 @@ function AgentNewWizardPageView({
|
|
|
3522
3531
|
}
|
|
3523
3532
|
),
|
|
3524
3533
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3525
|
-
|
|
3534
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3526
3535
|
{
|
|
3527
3536
|
variant: "glass",
|
|
3528
3537
|
header: {
|
|
@@ -3542,7 +3551,7 @@ function AgentNewWizardPageView({
|
|
|
3542
3551
|
}
|
|
3543
3552
|
),
|
|
3544
3553
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3545
|
-
|
|
3554
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3546
3555
|
{
|
|
3547
3556
|
variant: "glass",
|
|
3548
3557
|
header: {
|
|
@@ -3589,7 +3598,7 @@ function AgentNewWizardPageView({
|
|
|
3589
3598
|
className: "space-y-5",
|
|
3590
3599
|
children: [
|
|
3591
3600
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3592
|
-
|
|
3601
|
+
chunkLVR4SR65_js.StepTimeline,
|
|
3593
3602
|
{
|
|
3594
3603
|
steps: timelineSteps,
|
|
3595
3604
|
progressLabel: labels.pageTitle,
|
|
@@ -3616,34 +3625,1736 @@ function ReviewRow({ label, value }) {
|
|
|
3616
3625
|
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-gray-900 dark:text-white", children: value })
|
|
3617
3626
|
] });
|
|
3618
3627
|
}
|
|
3628
|
+
var DIALECT_LOGO_SRC = {
|
|
3629
|
+
bigquery: "/logos/datasources/bigquery.svg",
|
|
3630
|
+
postgres: "/logos/datasources/postgres.svg",
|
|
3631
|
+
postgresql: "/logos/datasources/postgres.svg",
|
|
3632
|
+
mysql: "/logos/datasources/mysql.svg",
|
|
3633
|
+
mariadb: "/logos/datasources/mariadb.svg",
|
|
3634
|
+
snowflake: "/logos/datasources/snowflake.svg",
|
|
3635
|
+
mongodb: "/logos/datasources/mongodb.svg",
|
|
3636
|
+
redis: "/logos/datasources/redis.svg",
|
|
3637
|
+
clickhouse: "/logos/datasources/clickhouse.svg",
|
|
3638
|
+
elasticsearch: "/logos/datasources/elasticsearch.svg",
|
|
3639
|
+
duckdb: "/logos/datasources/duckdb.svg",
|
|
3640
|
+
sqlite: "/logos/datasources/sqlite.svg",
|
|
3641
|
+
oracle: "/logos/datasources/oracle.svg",
|
|
3642
|
+
mssql: "/logos/datasources/mssql.svg",
|
|
3643
|
+
sqlserver: "/logos/datasources/mssql.svg",
|
|
3644
|
+
cassandra: "/logos/datasources/cassandra.svg",
|
|
3645
|
+
dynamodb: "/logos/datasources/dynamodb.svg",
|
|
3646
|
+
cockroach: "/logos/datasources/cockroachdb.svg",
|
|
3647
|
+
cockroachdb: "/logos/datasources/cockroachdb.svg",
|
|
3648
|
+
supabase: "/logos/datasources/supabase.svg",
|
|
3649
|
+
firebase: "/logos/datasources/firebase.svg",
|
|
3650
|
+
neo4j: "/logos/datasources/neo4j.svg",
|
|
3651
|
+
neptune: "/logos/datasources/neptune.svg",
|
|
3652
|
+
timestream: "/logos/datasources/timestream.svg",
|
|
3653
|
+
opensearch: "/logos/datasources/opensearch.svg"
|
|
3654
|
+
};
|
|
3655
|
+
var CATEGORY_COLOR = {
|
|
3656
|
+
relational: "blue",
|
|
3657
|
+
nosql: "emerald",
|
|
3658
|
+
warehouse: "purple",
|
|
3659
|
+
timeseries: "sky",
|
|
3660
|
+
graph: "pink",
|
|
3661
|
+
keyvalue: "red",
|
|
3662
|
+
search: "amber"
|
|
3663
|
+
};
|
|
3664
|
+
var TOTAL_STEPS2 = 4;
|
|
3665
|
+
function DatasourceNewWizardPageView({
|
|
3666
|
+
labels,
|
|
3667
|
+
initialStep,
|
|
3668
|
+
onStepChange,
|
|
3669
|
+
onSubmit,
|
|
3670
|
+
onCancel,
|
|
3671
|
+
onTestConnection
|
|
3672
|
+
}) {
|
|
3673
|
+
const clampedInitial = Math.min(TOTAL_STEPS2, Math.max(1, initialStep ?? 1));
|
|
3674
|
+
const [step, setStep] = react.useState(clampedInitial);
|
|
3675
|
+
const [dialect, setDialect] = react.useState("");
|
|
3676
|
+
const [name, setName] = react.useState("");
|
|
3677
|
+
const [host, setHost] = react.useState("");
|
|
3678
|
+
const [port, setPort] = react.useState("");
|
|
3679
|
+
const [database, setDatabase] = react.useState("");
|
|
3680
|
+
const [username, setUsername] = react.useState("");
|
|
3681
|
+
const [password, setPassword] = react.useState("");
|
|
3682
|
+
const [schema, setSchema] = react.useState("");
|
|
3683
|
+
const [connectionString, setConnectionString] = react.useState("");
|
|
3684
|
+
const [projectId, setProjectId] = react.useState("");
|
|
3685
|
+
const [dataset, setDataset] = react.useState("");
|
|
3686
|
+
const [keyFile, setKeyFile] = react.useState("");
|
|
3687
|
+
const [account, setAccount] = react.useState("");
|
|
3688
|
+
const [warehouseField, setWarehouseField] = react.useState("");
|
|
3689
|
+
const [region, setRegion] = react.useState("");
|
|
3690
|
+
const [bucket, setBucket] = react.useState("");
|
|
3691
|
+
const [token, setToken] = react.useState("");
|
|
3692
|
+
const [apiKey, setApiKey] = react.useState("");
|
|
3693
|
+
const [environment, setEnvironment] = react.useState("");
|
|
3694
|
+
const [index, setIndex] = react.useState("");
|
|
3695
|
+
const [ssl, setSsl] = react.useState(true);
|
|
3696
|
+
const [readOnly, setReadOnly] = react.useState(true);
|
|
3697
|
+
const [maxPoolSize, setMaxPoolSize] = react.useState("5");
|
|
3698
|
+
const [timeoutMs, setTimeoutMs] = react.useState("5000");
|
|
3699
|
+
const [allowedTables, setAllowedTables] = react.useState("");
|
|
3700
|
+
const [blockedColumns, setBlockedColumns] = react.useState("");
|
|
3701
|
+
const [maskPii, setMaskPii] = react.useState(false);
|
|
3702
|
+
const [submitting, setSubmitting] = react.useState(false);
|
|
3703
|
+
const [touched, setTouched] = react.useState(false);
|
|
3704
|
+
const [testStatus, setTestStatus] = react.useState("idle");
|
|
3705
|
+
const dialectOption = react.useMemo(() => dialect ? chunkFIJMOTP4_js.findDialect(dialect) : null, [dialect]);
|
|
3706
|
+
const category = react.useMemo(() => dialect ? chunkFIJMOTP4_js.findCategory(dialect) : null, [dialect]);
|
|
3707
|
+
react.useEffect(() => {
|
|
3708
|
+
if (dialectOption?.defaultPort && (port === "" || /^[0-9]+$/.test(port))) {
|
|
3709
|
+
setPort(String(dialectOption.defaultPort));
|
|
3710
|
+
}
|
|
3711
|
+
}, [dialect]);
|
|
3712
|
+
react.useEffect(() => {
|
|
3713
|
+
const next = Math.min(TOTAL_STEPS2, Math.max(1, initialStep ?? 1));
|
|
3714
|
+
if (next !== step) setStep(next);
|
|
3715
|
+
}, [initialStep]);
|
|
3716
|
+
function markTouched() {
|
|
3717
|
+
if (!touched) setTouched(true);
|
|
3718
|
+
}
|
|
3719
|
+
const goToStep = react.useCallback((next) => {
|
|
3720
|
+
const clamped = Math.min(TOTAL_STEPS2, Math.max(1, next));
|
|
3721
|
+
setStep(clamped);
|
|
3722
|
+
onStepChange?.(clamped);
|
|
3723
|
+
}, [onStepChange]);
|
|
3724
|
+
function canAdvance(from) {
|
|
3725
|
+
if (from === 1) return Boolean(dialect);
|
|
3726
|
+
if (from === 2) return name.trim().length > 0;
|
|
3727
|
+
return true;
|
|
3728
|
+
}
|
|
3729
|
+
const goNext = react.useCallback(() => {
|
|
3730
|
+
if (!canAdvance(step)) return;
|
|
3731
|
+
if (step < TOTAL_STEPS2) goToStep(step + 1);
|
|
3732
|
+
}, [step, dialect, name]);
|
|
3733
|
+
const goBack = react.useCallback(() => {
|
|
3734
|
+
if (step > 1) goToStep(step - 1);
|
|
3735
|
+
}, [step, goToStep]);
|
|
3736
|
+
const cancelWithConfirm = react.useCallback(() => {
|
|
3737
|
+
if (touched && !window.confirm(labels.wizardCancelConfirm)) return;
|
|
3738
|
+
onCancel();
|
|
3739
|
+
}, [touched, labels.wizardCancelConfirm, onCancel]);
|
|
3740
|
+
function buildPayload() {
|
|
3741
|
+
const payload = {
|
|
3742
|
+
name: name.trim(),
|
|
3743
|
+
dialect,
|
|
3744
|
+
ssl,
|
|
3745
|
+
readOnly
|
|
3746
|
+
};
|
|
3747
|
+
if (host.trim()) payload.host = host.trim();
|
|
3748
|
+
const portNum = Number(port);
|
|
3749
|
+
if (Number.isFinite(portNum) && portNum > 0) payload.port = portNum;
|
|
3750
|
+
if (database.trim()) payload.database = database.trim();
|
|
3751
|
+
if (username.trim()) payload.username = username.trim();
|
|
3752
|
+
if (password) payload.password = password;
|
|
3753
|
+
if (schema.trim()) payload.schema = schema.trim();
|
|
3754
|
+
if (connectionString.trim()) payload.connectionString = connectionString.trim();
|
|
3755
|
+
if (projectId.trim()) payload.projectId = projectId.trim();
|
|
3756
|
+
if (dataset.trim()) payload.dataset = dataset.trim();
|
|
3757
|
+
if (keyFile.trim()) payload.keyFile = keyFile.trim();
|
|
3758
|
+
if (account.trim()) payload.account = account.trim();
|
|
3759
|
+
if (warehouseField.trim()) payload.warehouse = warehouseField.trim();
|
|
3760
|
+
if (region.trim()) payload.region = region.trim();
|
|
3761
|
+
if (bucket.trim()) payload.bucket = bucket.trim();
|
|
3762
|
+
if (token) payload.token = token;
|
|
3763
|
+
if (apiKey) payload.apiKey = apiKey;
|
|
3764
|
+
if (environment.trim()) payload.environment = environment.trim();
|
|
3765
|
+
if (index.trim()) payload.index = index.trim();
|
|
3766
|
+
const pool = Number(maxPoolSize);
|
|
3767
|
+
if (Number.isFinite(pool) && pool > 0) payload.maxPoolSize = pool;
|
|
3768
|
+
const timeout = Number(timeoutMs);
|
|
3769
|
+
if (Number.isFinite(timeout) && timeout > 0) payload.timeoutMs = timeout;
|
|
3770
|
+
const allowed = splitList(allowedTables);
|
|
3771
|
+
if (allowed.length > 0) payload.allowedTables = allowed;
|
|
3772
|
+
const blocked = splitList(blockedColumns);
|
|
3773
|
+
if (blocked.length > 0) payload.blockedColumns = blocked;
|
|
3774
|
+
return payload;
|
|
3775
|
+
}
|
|
3776
|
+
async function handleTestConnection() {
|
|
3777
|
+
setTestStatus("testing");
|
|
3778
|
+
try {
|
|
3779
|
+
const ok = onTestConnection ? await onTestConnection(buildPayload()) : await simulateTest();
|
|
3780
|
+
setTestStatus(ok ? "success" : "failed");
|
|
3781
|
+
setTimeout(() => setTestStatus("idle"), 3500);
|
|
3782
|
+
} catch {
|
|
3783
|
+
setTestStatus("failed");
|
|
3784
|
+
setTimeout(() => setTestStatus("idle"), 3500);
|
|
3785
|
+
}
|
|
3786
|
+
}
|
|
3787
|
+
async function submit() {
|
|
3788
|
+
setSubmitting(true);
|
|
3789
|
+
try {
|
|
3790
|
+
const payload = {
|
|
3791
|
+
...buildPayload(),
|
|
3792
|
+
...maskPii ? { maskPii: true } : {}
|
|
3793
|
+
};
|
|
3794
|
+
await onSubmit(payload);
|
|
3795
|
+
} finally {
|
|
3796
|
+
setSubmitting(false);
|
|
3797
|
+
}
|
|
3798
|
+
}
|
|
3799
|
+
react.useEffect(() => {
|
|
3800
|
+
function onKey(e) {
|
|
3801
|
+
if (e.key === "Escape") {
|
|
3802
|
+
e.preventDefault();
|
|
3803
|
+
cancelWithConfirm();
|
|
3804
|
+
return;
|
|
3805
|
+
}
|
|
3806
|
+
if (e.key === "Enter") {
|
|
3807
|
+
const target = e.target;
|
|
3808
|
+
const tag = target?.tagName?.toLowerCase();
|
|
3809
|
+
if (tag === "textarea" || tag === "select" || tag === "input" || tag === "button") return;
|
|
3810
|
+
e.preventDefault();
|
|
3811
|
+
if (step < TOTAL_STEPS2) goNext();
|
|
3812
|
+
else void submit();
|
|
3813
|
+
}
|
|
3814
|
+
}
|
|
3815
|
+
window.addEventListener("keydown", onKey);
|
|
3816
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
3817
|
+
}, [step, dialect, name, touched]);
|
|
3818
|
+
const stepTitles = [
|
|
3819
|
+
labels.wizardStep1Title,
|
|
3820
|
+
labels.wizardStep2Title,
|
|
3821
|
+
labels.wizardStep3Title,
|
|
3822
|
+
labels.wizardStep4Title
|
|
3823
|
+
];
|
|
3824
|
+
const stepSubtitles = [
|
|
3825
|
+
labels.wizardStep1Subtitle,
|
|
3826
|
+
labels.wizardStep2Subtitle,
|
|
3827
|
+
labels.wizardStep3Subtitle,
|
|
3828
|
+
labels.wizardStep4Subtitle
|
|
3829
|
+
];
|
|
3830
|
+
const timelineSteps = stepTitles.map((title, idx) => ({
|
|
3831
|
+
id: String(idx + 1),
|
|
3832
|
+
name: title,
|
|
3833
|
+
description: stepSubtitles[idx],
|
|
3834
|
+
status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
|
|
3835
|
+
}));
|
|
3836
|
+
const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS2));
|
|
3837
|
+
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
3838
|
+
chunkLVR4SR65_js.HeroSection,
|
|
3839
|
+
{
|
|
3840
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
|
|
3841
|
+
label: counter,
|
|
3842
|
+
title: labels.pageTitle,
|
|
3843
|
+
subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
|
|
3844
|
+
gradient: category?.gradient ?? "from-amber-500 to-orange-600"
|
|
3845
|
+
}
|
|
3846
|
+
);
|
|
3847
|
+
function renderStep1() {
|
|
3848
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: chunkFIJMOTP4_js.DIALECT_CATEGORIES.map((cat) => {
|
|
3849
|
+
const color = CATEGORY_COLOR[cat.id] ?? "slate";
|
|
3850
|
+
const categoryLabel = labels[cat.labelKey] ?? cat.id;
|
|
3851
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3852
|
+
chunkLVR4SR65_js.SectionCard,
|
|
3853
|
+
{
|
|
3854
|
+
variant: "glass",
|
|
3855
|
+
header: {
|
|
3856
|
+
title: categoryLabel,
|
|
3857
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(cat.icon, { className: "h-4 w-4" }),
|
|
3858
|
+
gradient: cat.gradient
|
|
3859
|
+
},
|
|
3860
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3861
|
+
"div",
|
|
3862
|
+
{
|
|
3863
|
+
role: "radiogroup",
|
|
3864
|
+
"aria-label": categoryLabel,
|
|
3865
|
+
className: "grid grid-cols-2 gap-2 sm:grid-cols-3 lg:grid-cols-4",
|
|
3866
|
+
children: cat.dialects.map((opt) => {
|
|
3867
|
+
const selected = opt.value === dialect;
|
|
3868
|
+
const logoSrc = DIALECT_LOGO_SRC[opt.value.toLowerCase()];
|
|
3869
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3870
|
+
chunkLVR4SR65_js.FilterTileButton,
|
|
3871
|
+
{
|
|
3872
|
+
isActive: selected,
|
|
3873
|
+
color,
|
|
3874
|
+
icon: logoSrc ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: logoSrc, alt: opt.label, className: "h-5 w-5 object-contain" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-5 w-5" }),
|
|
3875
|
+
label: opt.label,
|
|
3876
|
+
count: opt.formType.replace("-", " "),
|
|
3877
|
+
onClick: () => {
|
|
3878
|
+
setDialect(opt.value);
|
|
3879
|
+
markTouched();
|
|
3880
|
+
}
|
|
3881
|
+
},
|
|
3882
|
+
opt.value
|
|
3883
|
+
);
|
|
3884
|
+
})
|
|
3885
|
+
}
|
|
3886
|
+
)
|
|
3887
|
+
},
|
|
3888
|
+
cat.id
|
|
3889
|
+
);
|
|
3890
|
+
}) });
|
|
3891
|
+
}
|
|
3892
|
+
function renderConnectionFields() {
|
|
3893
|
+
if (!dialectOption) return null;
|
|
3894
|
+
switch (dialectOption.formType) {
|
|
3895
|
+
case "standard":
|
|
3896
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3897
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3898
|
+
chunkLVR4SR65_js.FormInput,
|
|
3899
|
+
{
|
|
3900
|
+
label: labels.fieldHost,
|
|
3901
|
+
value: host,
|
|
3902
|
+
onValueChange: (v) => {
|
|
3903
|
+
setHost(v);
|
|
3904
|
+
markTouched();
|
|
3905
|
+
},
|
|
3906
|
+
placeholder: labels.fieldHostPlaceholder,
|
|
3907
|
+
required: true
|
|
3908
|
+
}
|
|
3909
|
+
),
|
|
3910
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3911
|
+
chunkLVR4SR65_js.FormInput,
|
|
3912
|
+
{
|
|
3913
|
+
label: labels.fieldPort,
|
|
3914
|
+
type: "number",
|
|
3915
|
+
value: port,
|
|
3916
|
+
onValueChange: (v) => {
|
|
3917
|
+
setPort(v);
|
|
3918
|
+
markTouched();
|
|
3919
|
+
}
|
|
3920
|
+
}
|
|
3921
|
+
),
|
|
3922
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3923
|
+
chunkLVR4SR65_js.FormInput,
|
|
3924
|
+
{
|
|
3925
|
+
label: labels.fieldDatabase,
|
|
3926
|
+
value: database,
|
|
3927
|
+
onValueChange: (v) => {
|
|
3928
|
+
setDatabase(v);
|
|
3929
|
+
markTouched();
|
|
3930
|
+
},
|
|
3931
|
+
placeholder: labels.fieldDatabasePlaceholder,
|
|
3932
|
+
required: true
|
|
3933
|
+
}
|
|
3934
|
+
),
|
|
3935
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3936
|
+
chunkLVR4SR65_js.FormInput,
|
|
3937
|
+
{
|
|
3938
|
+
label: labels.fieldUsername,
|
|
3939
|
+
value: username,
|
|
3940
|
+
onValueChange: (v) => {
|
|
3941
|
+
setUsername(v);
|
|
3942
|
+
markTouched();
|
|
3943
|
+
},
|
|
3944
|
+
placeholder: labels.fieldUsernamePlaceholder
|
|
3945
|
+
}
|
|
3946
|
+
),
|
|
3947
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3948
|
+
chunkLVR4SR65_js.FormInput,
|
|
3949
|
+
{
|
|
3950
|
+
label: labels.fieldPassword,
|
|
3951
|
+
type: "password",
|
|
3952
|
+
value: password,
|
|
3953
|
+
onValueChange: (v) => {
|
|
3954
|
+
setPassword(v);
|
|
3955
|
+
markTouched();
|
|
3956
|
+
},
|
|
3957
|
+
placeholder: labels.fieldPasswordPlaceholder
|
|
3958
|
+
}
|
|
3959
|
+
),
|
|
3960
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3961
|
+
chunkLVR4SR65_js.FormInput,
|
|
3962
|
+
{
|
|
3963
|
+
label: labels.fieldSchema,
|
|
3964
|
+
value: schema,
|
|
3965
|
+
onValueChange: (v) => {
|
|
3966
|
+
setSchema(v);
|
|
3967
|
+
markTouched();
|
|
3968
|
+
},
|
|
3969
|
+
placeholder: labels.fieldSchemaPlaceholder
|
|
3970
|
+
}
|
|
3971
|
+
)
|
|
3972
|
+
] });
|
|
3973
|
+
case "connection-string":
|
|
3974
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3975
|
+
chunkLVR4SR65_js.FormInput,
|
|
3976
|
+
{
|
|
3977
|
+
label: labels.fieldConnectionString,
|
|
3978
|
+
value: connectionString,
|
|
3979
|
+
onValueChange: (v) => {
|
|
3980
|
+
setConnectionString(v);
|
|
3981
|
+
markTouched();
|
|
3982
|
+
},
|
|
3983
|
+
placeholder: labels.fieldConnectionStringPlaceholder,
|
|
3984
|
+
required: true
|
|
3985
|
+
}
|
|
3986
|
+
) });
|
|
3987
|
+
case "cloud-bigquery":
|
|
3988
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3989
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3990
|
+
chunkLVR4SR65_js.FormInput,
|
|
3991
|
+
{
|
|
3992
|
+
label: labels.fieldProjectId,
|
|
3993
|
+
value: projectId,
|
|
3994
|
+
onValueChange: (v) => {
|
|
3995
|
+
setProjectId(v);
|
|
3996
|
+
markTouched();
|
|
3997
|
+
},
|
|
3998
|
+
placeholder: labels.fieldProjectIdPlaceholder,
|
|
3999
|
+
required: true
|
|
4000
|
+
}
|
|
4001
|
+
),
|
|
4002
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4003
|
+
chunkLVR4SR65_js.FormInput,
|
|
4004
|
+
{
|
|
4005
|
+
label: labels.fieldDataset,
|
|
4006
|
+
value: dataset,
|
|
4007
|
+
onValueChange: (v) => {
|
|
4008
|
+
setDataset(v);
|
|
4009
|
+
markTouched();
|
|
4010
|
+
},
|
|
4011
|
+
placeholder: labels.fieldDatasetPlaceholder,
|
|
4012
|
+
required: true
|
|
4013
|
+
}
|
|
4014
|
+
),
|
|
4015
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4016
|
+
chunkLVR4SR65_js.FormInput,
|
|
4017
|
+
{
|
|
4018
|
+
label: labels.fieldKeyFile,
|
|
4019
|
+
value: keyFile,
|
|
4020
|
+
onValueChange: (v) => {
|
|
4021
|
+
setKeyFile(v);
|
|
4022
|
+
markTouched();
|
|
4023
|
+
},
|
|
4024
|
+
placeholder: labels.fieldKeyFilePlaceholder
|
|
4025
|
+
}
|
|
4026
|
+
) })
|
|
4027
|
+
] });
|
|
4028
|
+
case "cloud-snowflake":
|
|
4029
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4030
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4031
|
+
chunkLVR4SR65_js.FormInput,
|
|
4032
|
+
{
|
|
4033
|
+
label: labels.fieldAccount,
|
|
4034
|
+
value: account,
|
|
4035
|
+
onValueChange: (v) => {
|
|
4036
|
+
setAccount(v);
|
|
4037
|
+
markTouched();
|
|
4038
|
+
},
|
|
4039
|
+
placeholder: labels.fieldAccountPlaceholder,
|
|
4040
|
+
required: true
|
|
4041
|
+
}
|
|
4042
|
+
),
|
|
4043
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4044
|
+
chunkLVR4SR65_js.FormInput,
|
|
4045
|
+
{
|
|
4046
|
+
label: labels.fieldWarehouse,
|
|
4047
|
+
value: warehouseField,
|
|
4048
|
+
onValueChange: (v) => {
|
|
4049
|
+
setWarehouseField(v);
|
|
4050
|
+
markTouched();
|
|
4051
|
+
},
|
|
4052
|
+
placeholder: labels.fieldWarehousePlaceholder,
|
|
4053
|
+
required: true
|
|
4054
|
+
}
|
|
4055
|
+
),
|
|
4056
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4057
|
+
chunkLVR4SR65_js.FormInput,
|
|
4058
|
+
{
|
|
4059
|
+
label: labels.fieldDatabase,
|
|
4060
|
+
value: database,
|
|
4061
|
+
onValueChange: (v) => {
|
|
4062
|
+
setDatabase(v);
|
|
4063
|
+
markTouched();
|
|
4064
|
+
},
|
|
4065
|
+
placeholder: labels.fieldDatabasePlaceholder,
|
|
4066
|
+
required: true
|
|
4067
|
+
}
|
|
4068
|
+
),
|
|
4069
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4070
|
+
chunkLVR4SR65_js.FormInput,
|
|
4071
|
+
{
|
|
4072
|
+
label: labels.fieldUsername,
|
|
4073
|
+
value: username,
|
|
4074
|
+
onValueChange: (v) => {
|
|
4075
|
+
setUsername(v);
|
|
4076
|
+
markTouched();
|
|
4077
|
+
},
|
|
4078
|
+
placeholder: labels.fieldUsernamePlaceholder,
|
|
4079
|
+
required: true
|
|
4080
|
+
}
|
|
4081
|
+
),
|
|
4082
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4083
|
+
chunkLVR4SR65_js.FormInput,
|
|
4084
|
+
{
|
|
4085
|
+
label: labels.fieldPassword,
|
|
4086
|
+
type: "password",
|
|
4087
|
+
value: password,
|
|
4088
|
+
onValueChange: (v) => {
|
|
4089
|
+
setPassword(v);
|
|
4090
|
+
markTouched();
|
|
4091
|
+
},
|
|
4092
|
+
placeholder: labels.fieldPasswordPlaceholder
|
|
4093
|
+
}
|
|
4094
|
+
),
|
|
4095
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4096
|
+
chunkLVR4SR65_js.FormInput,
|
|
4097
|
+
{
|
|
4098
|
+
label: labels.fieldSchema,
|
|
4099
|
+
value: schema,
|
|
4100
|
+
onValueChange: (v) => {
|
|
4101
|
+
setSchema(v);
|
|
4102
|
+
markTouched();
|
|
4103
|
+
},
|
|
4104
|
+
placeholder: labels.fieldSchemaPlaceholder
|
|
4105
|
+
}
|
|
4106
|
+
)
|
|
4107
|
+
] });
|
|
4108
|
+
case "cloud-key":
|
|
4109
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4110
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4111
|
+
chunkLVR4SR65_js.FormInput,
|
|
4112
|
+
{
|
|
4113
|
+
label: labels.fieldRegion,
|
|
4114
|
+
value: region,
|
|
4115
|
+
onValueChange: (v) => {
|
|
4116
|
+
setRegion(v);
|
|
4117
|
+
markTouched();
|
|
4118
|
+
},
|
|
4119
|
+
placeholder: labels.fieldRegionPlaceholder,
|
|
4120
|
+
required: true
|
|
4121
|
+
}
|
|
4122
|
+
),
|
|
4123
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4124
|
+
chunkLVR4SR65_js.FormInput,
|
|
4125
|
+
{
|
|
4126
|
+
label: labels.fieldToken,
|
|
4127
|
+
type: "password",
|
|
4128
|
+
value: token,
|
|
4129
|
+
onValueChange: (v) => {
|
|
4130
|
+
setToken(v);
|
|
4131
|
+
markTouched();
|
|
4132
|
+
},
|
|
4133
|
+
placeholder: labels.fieldTokenPlaceholder,
|
|
4134
|
+
required: true
|
|
4135
|
+
}
|
|
4136
|
+
),
|
|
4137
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4138
|
+
chunkLVR4SR65_js.FormInput,
|
|
4139
|
+
{
|
|
4140
|
+
label: labels.fieldBucket,
|
|
4141
|
+
value: bucket,
|
|
4142
|
+
onValueChange: (v) => {
|
|
4143
|
+
setBucket(v);
|
|
4144
|
+
markTouched();
|
|
4145
|
+
},
|
|
4146
|
+
placeholder: labels.fieldBucketPlaceholder
|
|
4147
|
+
}
|
|
4148
|
+
)
|
|
4149
|
+
] });
|
|
4150
|
+
case "vector-key":
|
|
4151
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4152
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4153
|
+
chunkLVR4SR65_js.FormInput,
|
|
4154
|
+
{
|
|
4155
|
+
label: labels.fieldApiKey,
|
|
4156
|
+
type: "password",
|
|
4157
|
+
value: apiKey,
|
|
4158
|
+
onValueChange: (v) => {
|
|
4159
|
+
setApiKey(v);
|
|
4160
|
+
markTouched();
|
|
4161
|
+
},
|
|
4162
|
+
placeholder: labels.fieldApiKeyPlaceholder,
|
|
4163
|
+
required: true
|
|
4164
|
+
}
|
|
4165
|
+
),
|
|
4166
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4167
|
+
chunkLVR4SR65_js.FormInput,
|
|
4168
|
+
{
|
|
4169
|
+
label: labels.fieldEnvironment,
|
|
4170
|
+
value: environment,
|
|
4171
|
+
onValueChange: (v) => {
|
|
4172
|
+
setEnvironment(v);
|
|
4173
|
+
markTouched();
|
|
4174
|
+
},
|
|
4175
|
+
placeholder: labels.fieldEnvironmentPlaceholder,
|
|
4176
|
+
required: true
|
|
4177
|
+
}
|
|
4178
|
+
),
|
|
4179
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4180
|
+
chunkLVR4SR65_js.FormInput,
|
|
4181
|
+
{
|
|
4182
|
+
label: labels.fieldIndex,
|
|
4183
|
+
value: index,
|
|
4184
|
+
onValueChange: (v) => {
|
|
4185
|
+
setIndex(v);
|
|
4186
|
+
markTouched();
|
|
4187
|
+
},
|
|
4188
|
+
placeholder: labels.fieldIndexPlaceholder
|
|
4189
|
+
}
|
|
4190
|
+
)
|
|
4191
|
+
] });
|
|
4192
|
+
}
|
|
4193
|
+
}
|
|
4194
|
+
function renderStep2() {
|
|
4195
|
+
if (!dialectOption) {
|
|
4196
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.SectionCard, { variant: "glass", header: { title: labels.wizardStep1Title }, children: [
|
|
4197
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-700 dark:text-slate-200", children: labels.wizardStep1Subtitle }),
|
|
4198
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: () => goToStep(1), children: labels.wizardBack }) })
|
|
4199
|
+
] });
|
|
4200
|
+
}
|
|
4201
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4202
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4203
|
+
{
|
|
4204
|
+
variant: "glass",
|
|
4205
|
+
header: {
|
|
4206
|
+
title: dialectOption.label,
|
|
4207
|
+
subtitle: labels.wizardStep2Subtitle,
|
|
4208
|
+
icon: category?.icon ? /* @__PURE__ */ jsxRuntime.jsx(category.icon, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(outline.CircleStackIcon, { className: "h-4 w-4" }),
|
|
4209
|
+
gradient: category?.gradient
|
|
4210
|
+
},
|
|
4211
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4212
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4213
|
+
chunkLVR4SR65_js.FormInput,
|
|
4214
|
+
{
|
|
4215
|
+
label: labels.fieldName,
|
|
4216
|
+
value: name,
|
|
4217
|
+
onValueChange: (v) => {
|
|
4218
|
+
setName(v);
|
|
4219
|
+
markTouched();
|
|
4220
|
+
},
|
|
4221
|
+
placeholder: labels.fieldNamePlaceholder,
|
|
4222
|
+
required: true
|
|
4223
|
+
}
|
|
4224
|
+
),
|
|
4225
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.FormGrid, { children: renderConnectionFields() }),
|
|
4226
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-6 pt-1", children: [
|
|
4227
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4228
|
+
chunkLVR4SR65_js.FormToggle,
|
|
4229
|
+
{
|
|
4230
|
+
checked: ssl,
|
|
4231
|
+
onChange: (v) => {
|
|
4232
|
+
setSsl(v);
|
|
4233
|
+
markTouched();
|
|
4234
|
+
},
|
|
4235
|
+
label: labels.fieldSsl,
|
|
4236
|
+
variant: "inline"
|
|
4237
|
+
}
|
|
4238
|
+
),
|
|
4239
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4240
|
+
chunkLVR4SR65_js.FormToggle,
|
|
4241
|
+
{
|
|
4242
|
+
checked: readOnly,
|
|
4243
|
+
onChange: (v) => {
|
|
4244
|
+
setReadOnly(v);
|
|
4245
|
+
markTouched();
|
|
4246
|
+
},
|
|
4247
|
+
label: labels.fieldReadOnly,
|
|
4248
|
+
variant: "inline"
|
|
4249
|
+
}
|
|
4250
|
+
)
|
|
4251
|
+
] }),
|
|
4252
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: labels.fieldReadOnlyHelp }),
|
|
4253
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-3 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
|
|
4254
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4255
|
+
chunkBHOT22QL_js.Button,
|
|
4256
|
+
{
|
|
4257
|
+
type: "button",
|
|
4258
|
+
outline: true,
|
|
4259
|
+
onClick: () => void handleTestConnection(),
|
|
4260
|
+
disabled: testStatus === "testing",
|
|
4261
|
+
children: testStatus === "testing" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
4262
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.Spinner, { size: "xs" }),
|
|
4263
|
+
labels.testing
|
|
4264
|
+
] }) : labels.testConnection
|
|
4265
|
+
}
|
|
4266
|
+
),
|
|
4267
|
+
testStatus === "success" && /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.StatusBadge, { status: "success", label: labels.connectionSuccess }),
|
|
4268
|
+
testStatus === "failed" && /* @__PURE__ */ jsxRuntime.jsx(chunkLVR4SR65_js.StatusBadge, { status: "error", label: labels.connectionFailed })
|
|
4269
|
+
] })
|
|
4270
|
+
] })
|
|
4271
|
+
}
|
|
4272
|
+
);
|
|
4273
|
+
}
|
|
4274
|
+
function renderStep3() {
|
|
4275
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4276
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4277
|
+
{
|
|
4278
|
+
variant: "glass",
|
|
4279
|
+
header: {
|
|
4280
|
+
title: labels.governanceSectionTitle,
|
|
4281
|
+
subtitle: labels.governanceSectionSubtitle
|
|
4282
|
+
},
|
|
4283
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4284
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
4285
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4286
|
+
chunkLVR4SR65_js.FormInput,
|
|
4287
|
+
{
|
|
4288
|
+
label: labels.fieldMaxPoolSize,
|
|
4289
|
+
type: "number",
|
|
4290
|
+
min: 1,
|
|
4291
|
+
max: 100,
|
|
4292
|
+
value: maxPoolSize,
|
|
4293
|
+
onValueChange: (v) => {
|
|
4294
|
+
setMaxPoolSize(v);
|
|
4295
|
+
markTouched();
|
|
4296
|
+
},
|
|
4297
|
+
hint: labels.fieldMaxPoolSizeHint
|
|
4298
|
+
}
|
|
4299
|
+
),
|
|
4300
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4301
|
+
chunkLVR4SR65_js.FormInput,
|
|
4302
|
+
{
|
|
4303
|
+
label: labels.fieldTimeoutMs,
|
|
4304
|
+
type: "number",
|
|
4305
|
+
min: 100,
|
|
4306
|
+
value: timeoutMs,
|
|
4307
|
+
onValueChange: (v) => {
|
|
4308
|
+
setTimeoutMs(v);
|
|
4309
|
+
markTouched();
|
|
4310
|
+
},
|
|
4311
|
+
hint: labels.fieldTimeoutMsHint
|
|
4312
|
+
}
|
|
4313
|
+
)
|
|
4314
|
+
] }),
|
|
4315
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4316
|
+
chunkLVR4SR65_js.FormInput,
|
|
4317
|
+
{
|
|
4318
|
+
label: labels.fieldAllowedTables,
|
|
4319
|
+
value: allowedTables,
|
|
4320
|
+
onValueChange: (v) => {
|
|
4321
|
+
setAllowedTables(v);
|
|
4322
|
+
markTouched();
|
|
4323
|
+
},
|
|
4324
|
+
placeholder: labels.fieldAllowedTablesPlaceholder,
|
|
4325
|
+
hint: labels.fieldAllowedTablesHint
|
|
4326
|
+
}
|
|
4327
|
+
),
|
|
4328
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4329
|
+
chunkLVR4SR65_js.FormInput,
|
|
4330
|
+
{
|
|
4331
|
+
label: labels.fieldBlockedColumns,
|
|
4332
|
+
value: blockedColumns,
|
|
4333
|
+
onValueChange: (v) => {
|
|
4334
|
+
setBlockedColumns(v);
|
|
4335
|
+
markTouched();
|
|
4336
|
+
},
|
|
4337
|
+
placeholder: labels.fieldBlockedColumnsPlaceholder,
|
|
4338
|
+
hint: labels.fieldBlockedColumnsHint
|
|
4339
|
+
}
|
|
4340
|
+
),
|
|
4341
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4342
|
+
chunkLVR4SR65_js.FormCheckbox,
|
|
4343
|
+
{
|
|
4344
|
+
checked: maskPii,
|
|
4345
|
+
onChange: (v) => {
|
|
4346
|
+
setMaskPii(v);
|
|
4347
|
+
markTouched();
|
|
4348
|
+
},
|
|
4349
|
+
label: labels.fieldMaskPii,
|
|
4350
|
+
description: labels.fieldMaskPiiDescription
|
|
4351
|
+
}
|
|
4352
|
+
)
|
|
4353
|
+
] })
|
|
4354
|
+
}
|
|
4355
|
+
);
|
|
4356
|
+
}
|
|
4357
|
+
function renderStep4() {
|
|
4358
|
+
const categoryLabel = category ? labels[category.labelKey] ?? category.id : labels.reviewNoneValue;
|
|
4359
|
+
const dialectLabel = dialectOption?.label ?? labels.reviewNoneValue;
|
|
4360
|
+
const allowed = splitList(allowedTables);
|
|
4361
|
+
const blocked = splitList(blockedColumns);
|
|
4362
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4363
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4364
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4365
|
+
{
|
|
4366
|
+
variant: "glass",
|
|
4367
|
+
header: {
|
|
4368
|
+
title: labels.wizardStep1Title,
|
|
4369
|
+
subtitle: labels.wizardStep1Subtitle
|
|
4370
|
+
},
|
|
4371
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(1), children: [
|
|
4372
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
|
|
4373
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
|
|
4374
|
+
] }),
|
|
4375
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
|
|
4376
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewCategoryLabel, value: categoryLabel }),
|
|
4377
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewDialectLabel, value: dialectLabel })
|
|
4378
|
+
] })
|
|
4379
|
+
}
|
|
4380
|
+
),
|
|
4381
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4382
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4383
|
+
{
|
|
4384
|
+
variant: "glass",
|
|
4385
|
+
header: {
|
|
4386
|
+
title: labels.wizardStep2Title,
|
|
4387
|
+
subtitle: labels.wizardStep2Subtitle
|
|
4388
|
+
},
|
|
4389
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(2), children: [
|
|
4390
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
|
|
4391
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
|
|
4392
|
+
] }),
|
|
4393
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
|
|
4394
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewNameLabel, value: name || labels.reviewNoneValue }),
|
|
4395
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewCredentialsLabel, value: labels.reviewCredentialsRedacted }),
|
|
4396
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewSslLabel, value: ssl ? labels.reviewYes : labels.reviewNo }),
|
|
4397
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewReadOnlyLabel, value: readOnly ? labels.reviewYes : labels.reviewNo })
|
|
4398
|
+
] })
|
|
4399
|
+
}
|
|
4400
|
+
),
|
|
4401
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4402
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4403
|
+
{
|
|
4404
|
+
variant: "glass",
|
|
4405
|
+
header: {
|
|
4406
|
+
title: labels.wizardStep3Title,
|
|
4407
|
+
subtitle: labels.wizardStep3Subtitle
|
|
4408
|
+
},
|
|
4409
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(3), children: [
|
|
4410
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
|
|
4411
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
|
|
4412
|
+
] }),
|
|
4413
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
|
|
4414
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewPoolLabel, value: maxPoolSize || labels.reviewNoneValue }),
|
|
4415
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewTimeoutLabel, value: timeoutMs ? `${timeoutMs}ms` : labels.reviewNoneValue }),
|
|
4416
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4417
|
+
ReviewRow2,
|
|
4418
|
+
{
|
|
4419
|
+
label: labels.reviewAllowedTablesLabel,
|
|
4420
|
+
value: allowed.length > 0 ? allowed.join(", ") : labels.reviewNoneValue
|
|
4421
|
+
}
|
|
4422
|
+
),
|
|
4423
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4424
|
+
ReviewRow2,
|
|
4425
|
+
{
|
|
4426
|
+
label: labels.reviewBlockedColumnsLabel,
|
|
4427
|
+
value: blocked.length > 0 ? blocked.join(", ") : labels.reviewNoneValue
|
|
4428
|
+
}
|
|
4429
|
+
),
|
|
4430
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow2, { label: labels.reviewMaskPiiLabel, value: maskPii ? labels.reviewYes : labels.reviewNo })
|
|
4431
|
+
] })
|
|
4432
|
+
}
|
|
4433
|
+
)
|
|
4434
|
+
] });
|
|
4435
|
+
}
|
|
4436
|
+
const stepBody = step === 1 ? renderStep1() : step === 2 ? renderStep2() : step === 3 ? renderStep3() : renderStep4();
|
|
4437
|
+
const advanceDisabled = !canAdvance(step);
|
|
4438
|
+
const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
|
|
4439
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: goBack, disabled: step === 1 || submitting, children: labels.wizardBack }) }),
|
|
4440
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4441
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: cancelWithConfirm, disabled: submitting, children: labels.wizardCancel }),
|
|
4442
|
+
step < TOTAL_STEPS2 ? /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "amber", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext }) : /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "amber", onClick: () => void submit(), disabled: submitting || !dialect || !name.trim(), children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate })
|
|
4443
|
+
] })
|
|
4444
|
+
] });
|
|
4445
|
+
const content = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4446
|
+
"form",
|
|
4447
|
+
{
|
|
4448
|
+
onSubmit: (e) => {
|
|
4449
|
+
e.preventDefault();
|
|
4450
|
+
if (step < TOTAL_STEPS2) goNext();
|
|
4451
|
+
else void submit();
|
|
4452
|
+
},
|
|
4453
|
+
className: "space-y-5",
|
|
4454
|
+
children: [
|
|
4455
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4456
|
+
chunkLVR4SR65_js.StepTimeline,
|
|
4457
|
+
{
|
|
4458
|
+
steps: timelineSteps,
|
|
4459
|
+
progressLabel: labels.pageTitle,
|
|
4460
|
+
onStepClick: (idx) => goToStep(idx + 1)
|
|
4461
|
+
}
|
|
4462
|
+
),
|
|
4463
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full space-y-5", children: [
|
|
4464
|
+
stepBody,
|
|
4465
|
+
footer
|
|
4466
|
+
] })
|
|
4467
|
+
]
|
|
4468
|
+
}
|
|
4469
|
+
);
|
|
4470
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4471
|
+
hero,
|
|
4472
|
+
content
|
|
4473
|
+
] });
|
|
4474
|
+
}
|
|
4475
|
+
function ReviewRow2({ label, value }) {
|
|
4476
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-white/40 px-3 py-2 dark:border-white/10 dark:bg-white/[0.04]", children: [
|
|
4477
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-[10px] uppercase tracking-wider text-gray-400 dark:text-gray-500", children: label }),
|
|
4478
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 truncate text-xs font-semibold text-gray-900 dark:text-white", children: value })
|
|
4479
|
+
] });
|
|
4480
|
+
}
|
|
4481
|
+
function splitList(raw) {
|
|
4482
|
+
return raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
4483
|
+
}
|
|
4484
|
+
async function simulateTest() {
|
|
4485
|
+
await new Promise((r) => setTimeout(r, 1500));
|
|
4486
|
+
return true;
|
|
4487
|
+
}
|
|
4488
|
+
function RangeSliderField2({
|
|
4489
|
+
sliderId,
|
|
4490
|
+
label,
|
|
4491
|
+
value,
|
|
4492
|
+
onChange,
|
|
4493
|
+
min,
|
|
4494
|
+
max,
|
|
4495
|
+
step,
|
|
4496
|
+
zones,
|
|
4497
|
+
trackGradient,
|
|
4498
|
+
formatValue: formatValue2,
|
|
4499
|
+
ariaLabel
|
|
4500
|
+
}) {
|
|
4501
|
+
const percent = (value - min) / (max - min) * 100;
|
|
4502
|
+
const activeZone = zones?.find((z) => value <= z.max) ?? zones?.[zones.length - 1];
|
|
4503
|
+
const thumbColor = activeZone?.thumbColor ?? "#6366f1";
|
|
4504
|
+
const glow = hexToGlow2(thumbColor);
|
|
4505
|
+
const displayValue = formatValue2 ? formatValue2(value) : value.toString();
|
|
4506
|
+
const ariaText = activeZone ? `${displayValue} \u2014 ${activeZone.label}` : displayValue;
|
|
4507
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4508
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
4509
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: sliderId, className: "text-xs font-medium text-gray-500 dark:text-gray-400", children: label }),
|
|
4510
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold tabular-nums text-gray-900 dark:text-white", children: displayValue })
|
|
4511
|
+
] }),
|
|
4512
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
4513
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-x-0 top-1/2 h-2 -translate-y-1/2 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4514
|
+
"div",
|
|
4515
|
+
{
|
|
4516
|
+
className: "h-full rounded-full transition-all duration-300 ease-out motion-reduce:transition-none",
|
|
4517
|
+
style: {
|
|
4518
|
+
width: `${Math.max(0, Math.min(100, percent))}%`,
|
|
4519
|
+
background: trackGradient ?? `linear-gradient(90deg, ${thumbColor}, ${thumbColor})`
|
|
4520
|
+
}
|
|
4521
|
+
}
|
|
4522
|
+
) }),
|
|
4523
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4524
|
+
"input",
|
|
4525
|
+
{
|
|
4526
|
+
id: sliderId,
|
|
4527
|
+
"data-slider-id": sliderId,
|
|
4528
|
+
type: "range",
|
|
4529
|
+
min,
|
|
4530
|
+
max,
|
|
4531
|
+
step,
|
|
4532
|
+
value,
|
|
4533
|
+
onChange: (e) => onChange(parseFloat(e.target.value)),
|
|
4534
|
+
"aria-label": ariaLabel ?? label,
|
|
4535
|
+
"aria-valuemin": min,
|
|
4536
|
+
"aria-valuemax": max,
|
|
4537
|
+
"aria-valuenow": value,
|
|
4538
|
+
"aria-valuetext": ariaText,
|
|
4539
|
+
className: "relative z-10 h-5 w-full cursor-pointer appearance-none bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2 [&::-webkit-slider-thumb]:h-5 [&::-webkit-slider-thumb]:w-5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-lg dark:[&::-webkit-slider-thumb]:border-gray-900"
|
|
4540
|
+
}
|
|
4541
|
+
),
|
|
4542
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-slider-id="${sliderId}"]::-webkit-slider-thumb { background: ${thumbColor}; box-shadow: 0 0 8px ${glow}; } [data-slider-id="${sliderId}"]::-moz-range-thumb { background: ${thumbColor}; border: 2px solid white; box-shadow: 0 0 8px ${glow}; }` })
|
|
4543
|
+
] }),
|
|
4544
|
+
zones && zones.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex items-center justify-between", children: zones.map((z) => {
|
|
4545
|
+
const isActive = z.label === activeZone?.label;
|
|
4546
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4547
|
+
"span",
|
|
4548
|
+
{
|
|
4549
|
+
className: `text-[10px] font-medium transition-colors motion-reduce:transition-none ${isActive ? z.color : "text-gray-400 dark:text-gray-500"}`,
|
|
4550
|
+
children: z.label
|
|
4551
|
+
},
|
|
4552
|
+
z.label
|
|
4553
|
+
);
|
|
4554
|
+
}) })
|
|
4555
|
+
] });
|
|
4556
|
+
}
|
|
4557
|
+
function hexToGlow2(hex) {
|
|
4558
|
+
const m = /^#?([0-9a-f]{6})$/i.exec(hex);
|
|
4559
|
+
if (!m) return "rgba(99,102,241,0.5)";
|
|
4560
|
+
const int = parseInt(m[1], 16);
|
|
4561
|
+
const r = int >> 16 & 255;
|
|
4562
|
+
const g = int >> 8 & 255;
|
|
4563
|
+
const b = int & 255;
|
|
4564
|
+
return `rgba(${r},${g},${b},0.5)`;
|
|
4565
|
+
}
|
|
4566
|
+
var ACTION_TILES = [
|
|
4567
|
+
{ id: "notify", color: "sky", icon: outline.BellAlertIcon, labelKey: "actionNotifyLabel", descriptionKey: "actionNotifyDescription" },
|
|
4568
|
+
{ id: "call-webhook", color: "indigo", icon: outline.GlobeAltIcon, labelKey: "actionWebhookLabel", descriptionKey: "actionWebhookDescription" },
|
|
4569
|
+
{ id: "mutate", color: "amber", icon: outline.PencilIcon, labelKey: "actionMutateLabel", descriptionKey: "actionMutateDescription" },
|
|
4570
|
+
{ id: "escalate", color: "rose", icon: outline.ArrowUpCircleIcon, labelKey: "actionEscalateLabel", descriptionKey: "actionEscalateDescription" },
|
|
4571
|
+
{ id: "route-to-agent", color: "violet", icon: outline.SparklesIcon, labelKey: "actionRouteLabel", descriptionKey: "actionRouteDescription" }
|
|
4572
|
+
];
|
|
4573
|
+
var WEEKDAYS = [
|
|
4574
|
+
{ id: "mon", labelKey: "weekdayMon" },
|
|
4575
|
+
{ id: "tue", labelKey: "weekdayTue" },
|
|
4576
|
+
{ id: "wed", labelKey: "weekdayWed" },
|
|
4577
|
+
{ id: "thu", labelKey: "weekdayThu" },
|
|
4578
|
+
{ id: "fri", labelKey: "weekdayFri" },
|
|
4579
|
+
{ id: "sat", labelKey: "weekdaySat" },
|
|
4580
|
+
{ id: "sun", labelKey: "weekdaySun" }
|
|
4581
|
+
];
|
|
4582
|
+
var TOTAL_STEPS3 = 5;
|
|
4583
|
+
function RuleNewWizardPageView({
|
|
4584
|
+
labels,
|
|
4585
|
+
initialStep,
|
|
4586
|
+
onStepChange,
|
|
4587
|
+
onSubmit,
|
|
4588
|
+
onCancel
|
|
4589
|
+
}) {
|
|
4590
|
+
const clampedInitial = Math.min(TOTAL_STEPS3, Math.max(1, initialStep ?? 1));
|
|
4591
|
+
const [step, setStep] = react.useState(clampedInitial);
|
|
4592
|
+
const [name, setName] = react.useState("");
|
|
4593
|
+
const [description, setDescription] = react.useState("");
|
|
4594
|
+
const [priority, setPriority] = react.useState(50);
|
|
4595
|
+
const [enabled, setEnabled] = react.useState(true);
|
|
4596
|
+
const [status, setStatus] = react.useState("active");
|
|
4597
|
+
const [tagsInput, setTagsInput] = react.useState("");
|
|
4598
|
+
const [combinator, setCombinator] = react.useState("and");
|
|
4599
|
+
const [condition, setCondition] = react.useState(chunkEC34PGUO_js.defaultRuleCondition());
|
|
4600
|
+
const [actionTileId, setActionTileId] = react.useState("");
|
|
4601
|
+
const [action, setAction] = react.useState(chunkEC34PGUO_js.defaultRuleAction());
|
|
4602
|
+
const [validFromDate, setValidFromDate] = react.useState(null);
|
|
4603
|
+
const [validFromTime, setValidFromTime] = react.useState(null);
|
|
4604
|
+
const [validUntilDate, setValidUntilDate] = react.useState(null);
|
|
4605
|
+
const [validUntilTime, setValidUntilTime] = react.useState(null);
|
|
4606
|
+
const [noExpiry, setNoExpiry] = react.useState(true);
|
|
4607
|
+
const [recurrence, setRecurrence] = react.useState("one-off");
|
|
4608
|
+
const [cronExpression, setCronExpression] = react.useState("");
|
|
4609
|
+
const [weekdays, setWeekdays] = react.useState([]);
|
|
4610
|
+
const [recurringTime, setRecurringTime] = react.useState(null);
|
|
4611
|
+
const [submitting, setSubmitting] = react.useState(false);
|
|
4612
|
+
const [touched, setTouched] = react.useState(false);
|
|
4613
|
+
function markTouched() {
|
|
4614
|
+
if (!touched) setTouched(true);
|
|
4615
|
+
}
|
|
4616
|
+
react.useEffect(() => {
|
|
4617
|
+
const next = Math.min(TOTAL_STEPS3, Math.max(1, initialStep ?? 1));
|
|
4618
|
+
if (next !== step) setStep(next);
|
|
4619
|
+
}, [initialStep]);
|
|
4620
|
+
const goToStep = react.useCallback((next) => {
|
|
4621
|
+
const clamped = Math.min(TOTAL_STEPS3, Math.max(1, next));
|
|
4622
|
+
setStep(clamped);
|
|
4623
|
+
onStepChange?.(clamped);
|
|
4624
|
+
}, [onStepChange]);
|
|
4625
|
+
function canAdvance(from) {
|
|
4626
|
+
if (from === 1) return name.trim().length > 0;
|
|
4627
|
+
if (from === 3) return actionTileId.length > 0;
|
|
4628
|
+
return true;
|
|
4629
|
+
}
|
|
4630
|
+
const goNext = react.useCallback(() => {
|
|
4631
|
+
if (!canAdvance(step)) return;
|
|
4632
|
+
if (step < TOTAL_STEPS3) goToStep(step + 1);
|
|
4633
|
+
}, [step, name, actionTileId]);
|
|
4634
|
+
const goBack = react.useCallback(() => {
|
|
4635
|
+
if (step > 1) goToStep(step - 1);
|
|
4636
|
+
}, [step, goToStep]);
|
|
4637
|
+
const cancelWithConfirm = react.useCallback(() => {
|
|
4638
|
+
if (touched && !window.confirm(labels.wizardCancelConfirm)) return;
|
|
4639
|
+
onCancel();
|
|
4640
|
+
}, [touched, labels.wizardCancelConfirm, onCancel]);
|
|
4641
|
+
function combineDateTime(date, time) {
|
|
4642
|
+
if (!date) return null;
|
|
4643
|
+
const next = new Date(date);
|
|
4644
|
+
next.setHours(time?.hours ?? 0, time?.minutes ?? 0, 0, 0);
|
|
4645
|
+
return next.toISOString();
|
|
4646
|
+
}
|
|
4647
|
+
const tags = react.useMemo(
|
|
4648
|
+
() => tagsInput.split(",").map((t) => t.trim()).filter((t) => t.length > 0),
|
|
4649
|
+
[tagsInput]
|
|
4650
|
+
);
|
|
4651
|
+
function buildPayload() {
|
|
4652
|
+
const validFrom = combineDateTime(validFromDate, validFromTime);
|
|
4653
|
+
const validUntil = noExpiry ? null : combineDateTime(validUntilDate, validUntilTime);
|
|
4654
|
+
const conditionWithCombinator = combinator === "not" ? {
|
|
4655
|
+
operator: "boolean_expression",
|
|
4656
|
+
combinator: "and",
|
|
4657
|
+
operands: [condition],
|
|
4658
|
+
// The engine ignores extra fields, so this is forward-compat.
|
|
4659
|
+
...{ notFlag: true }
|
|
4660
|
+
} : combinator === "or" ? {
|
|
4661
|
+
operator: "boolean_expression",
|
|
4662
|
+
combinator: "or",
|
|
4663
|
+
operands: [condition]
|
|
4664
|
+
} : condition;
|
|
4665
|
+
const finalAction = {
|
|
4666
|
+
type: action.type,
|
|
4667
|
+
params: {
|
|
4668
|
+
...action.params ?? {},
|
|
4669
|
+
actionVariant: actionTileId,
|
|
4670
|
+
recurrence,
|
|
4671
|
+
...recurrence === "cron" && cronExpression ? { cronExpression } : {},
|
|
4672
|
+
...recurrence === "recurring" ? {
|
|
4673
|
+
weekdays,
|
|
4674
|
+
...recurringTime ? { timeOfDay: `${pad(recurringTime.hours)}:${pad(recurringTime.minutes)}` } : {}
|
|
4675
|
+
} : {}
|
|
4676
|
+
}
|
|
4677
|
+
};
|
|
4678
|
+
const wireStatus = status === "paused" ? "draft" : status;
|
|
4679
|
+
return {
|
|
4680
|
+
name: name.trim() || "Untitled Rule",
|
|
4681
|
+
description: description.trim() || void 0,
|
|
4682
|
+
enabled,
|
|
4683
|
+
priority,
|
|
4684
|
+
status: wireStatus,
|
|
4685
|
+
validFrom,
|
|
4686
|
+
validUntil,
|
|
4687
|
+
tags,
|
|
4688
|
+
condition: conditionWithCombinator,
|
|
4689
|
+
action: finalAction
|
|
4690
|
+
};
|
|
4691
|
+
}
|
|
4692
|
+
async function submit() {
|
|
4693
|
+
setSubmitting(true);
|
|
4694
|
+
try {
|
|
4695
|
+
await onSubmit(buildPayload());
|
|
4696
|
+
} finally {
|
|
4697
|
+
setSubmitting(false);
|
|
4698
|
+
}
|
|
4699
|
+
}
|
|
4700
|
+
react.useEffect(() => {
|
|
4701
|
+
function onKey(e) {
|
|
4702
|
+
if (e.key === "Escape") {
|
|
4703
|
+
e.preventDefault();
|
|
4704
|
+
cancelWithConfirm();
|
|
4705
|
+
return;
|
|
4706
|
+
}
|
|
4707
|
+
if (e.key === "Enter") {
|
|
4708
|
+
const target = e.target;
|
|
4709
|
+
const tag = target?.tagName?.toLowerCase();
|
|
4710
|
+
if (tag === "textarea" || tag === "select" || tag === "input" || tag === "button") return;
|
|
4711
|
+
e.preventDefault();
|
|
4712
|
+
if (step < TOTAL_STEPS3) goNext();
|
|
4713
|
+
else void submit();
|
|
4714
|
+
}
|
|
4715
|
+
}
|
|
4716
|
+
window.addEventListener("keydown", onKey);
|
|
4717
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
4718
|
+
}, [step, name, actionTileId, touched]);
|
|
4719
|
+
const stepTitles = [
|
|
4720
|
+
labels.wizardStep1Title,
|
|
4721
|
+
labels.wizardStep2Title,
|
|
4722
|
+
labels.wizardStep3Title,
|
|
4723
|
+
labels.wizardStep4Title,
|
|
4724
|
+
labels.wizardStep5Title
|
|
4725
|
+
];
|
|
4726
|
+
const stepSubtitles = [
|
|
4727
|
+
labels.wizardStep1Subtitle,
|
|
4728
|
+
labels.wizardStep2Subtitle,
|
|
4729
|
+
labels.wizardStep3Subtitle,
|
|
4730
|
+
labels.wizardStep4Subtitle,
|
|
4731
|
+
labels.wizardStep5Subtitle
|
|
4732
|
+
];
|
|
4733
|
+
const timelineSteps = stepTitles.map((title, idx) => ({
|
|
4734
|
+
id: String(idx + 1),
|
|
4735
|
+
name: title,
|
|
4736
|
+
description: stepSubtitles[idx],
|
|
4737
|
+
status: idx + 1 < step ? "complete" : idx + 1 === step ? "current" : "upcoming"
|
|
4738
|
+
}));
|
|
4739
|
+
const counter = labels.wizardStepCounter.replace("{current}", String(step)).replace("{total}", String(TOTAL_STEPS3));
|
|
4740
|
+
const hero = /* @__PURE__ */ jsxRuntime.jsx(
|
|
4741
|
+
chunkLVR4SR65_js.HeroSection,
|
|
4742
|
+
{
|
|
4743
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.AdjustmentsHorizontalIcon, { className: "h-5 w-5" }),
|
|
4744
|
+
label: counter,
|
|
4745
|
+
title: labels.pageTitle,
|
|
4746
|
+
subtitle: stepSubtitles[step - 1] ?? labels.pageSubtitle,
|
|
4747
|
+
gradient: "from-fuchsia-500 to-purple-700"
|
|
4748
|
+
}
|
|
4749
|
+
);
|
|
4750
|
+
function renderStep1() {
|
|
4751
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4752
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4753
|
+
{
|
|
4754
|
+
variant: "glass",
|
|
4755
|
+
header: {
|
|
4756
|
+
title: labels.wizardStep1Title,
|
|
4757
|
+
subtitle: labels.wizardStep1Subtitle
|
|
4758
|
+
},
|
|
4759
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4760
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4761
|
+
chunkLVR4SR65_js.FormInput,
|
|
4762
|
+
{
|
|
4763
|
+
label: labels.nameLabel,
|
|
4764
|
+
value: name,
|
|
4765
|
+
onValueChange: (v) => {
|
|
4766
|
+
setName(v);
|
|
4767
|
+
markTouched();
|
|
4768
|
+
},
|
|
4769
|
+
placeholder: labels.namePlaceholder,
|
|
4770
|
+
required: true
|
|
4771
|
+
}
|
|
4772
|
+
),
|
|
4773
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4774
|
+
chunkLVR4SR65_js.FormTextarea,
|
|
4775
|
+
{
|
|
4776
|
+
label: labels.descriptionLabel,
|
|
4777
|
+
value: description,
|
|
4778
|
+
onValueChange: (v) => {
|
|
4779
|
+
setDescription(v);
|
|
4780
|
+
markTouched();
|
|
4781
|
+
},
|
|
4782
|
+
placeholder: labels.descriptionPlaceholder,
|
|
4783
|
+
rows: 3
|
|
4784
|
+
}
|
|
4785
|
+
),
|
|
4786
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4787
|
+
RangeSliderField2,
|
|
4788
|
+
{
|
|
4789
|
+
sliderId: "wizard-rule-priority",
|
|
4790
|
+
label: labels.priorityLabel,
|
|
4791
|
+
value: priority,
|
|
4792
|
+
onChange: (v) => {
|
|
4793
|
+
setPriority(Math.round(v));
|
|
4794
|
+
markTouched();
|
|
4795
|
+
},
|
|
4796
|
+
min: 0,
|
|
4797
|
+
max: 100,
|
|
4798
|
+
step: 1,
|
|
4799
|
+
trackGradient: "linear-gradient(90deg, #10b981, #38bdf8 33%, #f59e0b 66%, #f43f5e)",
|
|
4800
|
+
formatValue: (v) => String(Math.round(v)),
|
|
4801
|
+
zones: [
|
|
4802
|
+
{ label: labels.priorityLow, max: 25, color: "text-emerald-500", thumbColor: "#10b981" },
|
|
4803
|
+
{ label: labels.priorityNormal, max: 50, color: "text-sky-500", thumbColor: "#38bdf8" },
|
|
4804
|
+
{ label: labels.priorityHigh, max: 75, color: "text-amber-500", thumbColor: "#f59e0b" },
|
|
4805
|
+
{ label: labels.priorityCritical, max: 100, color: "text-rose-500", thumbColor: "#f43f5e" }
|
|
4806
|
+
]
|
|
4807
|
+
}
|
|
4808
|
+
),
|
|
4809
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4810
|
+
chunkLVR4SR65_js.FormToggle,
|
|
4811
|
+
{
|
|
4812
|
+
checked: enabled,
|
|
4813
|
+
onChange: (v) => {
|
|
4814
|
+
setEnabled(v);
|
|
4815
|
+
markTouched();
|
|
4816
|
+
},
|
|
4817
|
+
label: labels.enabledLabel,
|
|
4818
|
+
variant: "card"
|
|
4819
|
+
}
|
|
4820
|
+
)
|
|
4821
|
+
] })
|
|
4822
|
+
}
|
|
4823
|
+
);
|
|
4824
|
+
}
|
|
4825
|
+
function renderStep2() {
|
|
4826
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4827
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4828
|
+
{
|
|
4829
|
+
variant: "glass",
|
|
4830
|
+
header: {
|
|
4831
|
+
title: labels.conditionSectionTitle,
|
|
4832
|
+
subtitle: labels.conditionSectionSubtitle
|
|
4833
|
+
},
|
|
4834
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
4835
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4836
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.combinatorLabel }),
|
|
4837
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4838
|
+
chunkLVR4SR65_js.SegmentedControl,
|
|
4839
|
+
{
|
|
4840
|
+
segments: [
|
|
4841
|
+
{ value: "and", label: labels.combinatorAnd },
|
|
4842
|
+
{ value: "or", label: labels.combinatorOr },
|
|
4843
|
+
{ value: "not", label: labels.combinatorNot }
|
|
4844
|
+
],
|
|
4845
|
+
value: combinator,
|
|
4846
|
+
onChange: (v) => {
|
|
4847
|
+
setCombinator(v);
|
|
4848
|
+
markTouched();
|
|
4849
|
+
},
|
|
4850
|
+
size: "sm"
|
|
4851
|
+
}
|
|
4852
|
+
)
|
|
4853
|
+
] }),
|
|
4854
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4855
|
+
chunkEC34PGUO_js.RuleConditionBuilder,
|
|
4856
|
+
{
|
|
4857
|
+
value: condition,
|
|
4858
|
+
onChange: (next) => {
|
|
4859
|
+
setCondition(next);
|
|
4860
|
+
markTouched();
|
|
4861
|
+
}
|
|
4862
|
+
}
|
|
4863
|
+
)
|
|
4864
|
+
] })
|
|
4865
|
+
}
|
|
4866
|
+
);
|
|
4867
|
+
}
|
|
4868
|
+
function renderStep3() {
|
|
4869
|
+
const selectedTile = ACTION_TILES.find((t) => t.id === actionTileId) ?? null;
|
|
4870
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4871
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4872
|
+
{
|
|
4873
|
+
variant: "glass",
|
|
4874
|
+
header: {
|
|
4875
|
+
title: labels.actionSectionTitle,
|
|
4876
|
+
subtitle: labels.actionSectionSubtitle
|
|
4877
|
+
},
|
|
4878
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
4879
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4880
|
+
"div",
|
|
4881
|
+
{
|
|
4882
|
+
role: "radiogroup",
|
|
4883
|
+
"aria-label": labels.actionSectionTitle,
|
|
4884
|
+
className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",
|
|
4885
|
+
children: ACTION_TILES.map((tile) => {
|
|
4886
|
+
const Icon = tile.icon;
|
|
4887
|
+
const selected = tile.id === actionTileId;
|
|
4888
|
+
const label = labels[tile.labelKey] ?? tile.id;
|
|
4889
|
+
const description2 = labels[tile.descriptionKey] ?? "";
|
|
4890
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4891
|
+
chunkLVR4SR65_js.FilterTileButton,
|
|
4892
|
+
{
|
|
4893
|
+
isActive: selected,
|
|
4894
|
+
color: tile.color,
|
|
4895
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-5 w-5" }),
|
|
4896
|
+
label,
|
|
4897
|
+
count: description2,
|
|
4898
|
+
onClick: () => {
|
|
4899
|
+
setActionTileId(tile.id);
|
|
4900
|
+
markTouched();
|
|
4901
|
+
}
|
|
4902
|
+
},
|
|
4903
|
+
tile.id
|
|
4904
|
+
);
|
|
4905
|
+
})
|
|
4906
|
+
}
|
|
4907
|
+
),
|
|
4908
|
+
selectedTile && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4909
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4910
|
+
{
|
|
4911
|
+
variant: "glass",
|
|
4912
|
+
header: {
|
|
4913
|
+
title: labels[selectedTile.labelKey] ?? selectedTile.id,
|
|
4914
|
+
subtitle: labels.actionConfigSubtitle
|
|
4915
|
+
},
|
|
4916
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4917
|
+
chunkEC34PGUO_js.RuleActionBuilder,
|
|
4918
|
+
{
|
|
4919
|
+
value: action,
|
|
4920
|
+
onChange: (next) => {
|
|
4921
|
+
setAction(next);
|
|
4922
|
+
markTouched();
|
|
4923
|
+
}
|
|
4924
|
+
}
|
|
4925
|
+
)
|
|
4926
|
+
}
|
|
4927
|
+
)
|
|
4928
|
+
] })
|
|
4929
|
+
}
|
|
4930
|
+
);
|
|
4931
|
+
}
|
|
4932
|
+
function renderStep4() {
|
|
4933
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4934
|
+
chunkLVR4SR65_js.SectionCard,
|
|
4935
|
+
{
|
|
4936
|
+
variant: "glass",
|
|
4937
|
+
header: {
|
|
4938
|
+
title: labels.scheduleSectionTitle,
|
|
4939
|
+
subtitle: labels.scheduleSectionSubtitle
|
|
4940
|
+
},
|
|
4941
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
4942
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLVR4SR65_js.FormGrid, { children: [
|
|
4943
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
4944
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validFromLabel }),
|
|
4945
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
4946
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4947
|
+
chunkLVR4SR65_js.DatePicker,
|
|
4948
|
+
{
|
|
4949
|
+
value: validFromDate,
|
|
4950
|
+
onChange: (d) => {
|
|
4951
|
+
setValidFromDate(d);
|
|
4952
|
+
markTouched();
|
|
4953
|
+
},
|
|
4954
|
+
placeholder: labels.validFromDateLabel
|
|
4955
|
+
}
|
|
4956
|
+
),
|
|
4957
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4958
|
+
chunkLVR4SR65_js.TimePicker,
|
|
4959
|
+
{
|
|
4960
|
+
value: validFromTime,
|
|
4961
|
+
onChange: (t) => {
|
|
4962
|
+
setValidFromTime(t);
|
|
4963
|
+
markTouched();
|
|
4964
|
+
},
|
|
4965
|
+
placeholder: labels.validFromTimeLabel
|
|
4966
|
+
}
|
|
4967
|
+
)
|
|
4968
|
+
] })
|
|
4969
|
+
] }),
|
|
4970
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
4971
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.validUntilLabel }),
|
|
4972
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
4973
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4974
|
+
chunkLVR4SR65_js.DatePicker,
|
|
4975
|
+
{
|
|
4976
|
+
value: validUntilDate,
|
|
4977
|
+
onChange: (d) => {
|
|
4978
|
+
setValidUntilDate(d);
|
|
4979
|
+
markTouched();
|
|
4980
|
+
},
|
|
4981
|
+
placeholder: labels.validUntilDateLabel
|
|
4982
|
+
}
|
|
4983
|
+
),
|
|
4984
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4985
|
+
chunkLVR4SR65_js.TimePicker,
|
|
4986
|
+
{
|
|
4987
|
+
value: validUntilTime,
|
|
4988
|
+
onChange: (t) => {
|
|
4989
|
+
setValidUntilTime(t);
|
|
4990
|
+
markTouched();
|
|
4991
|
+
},
|
|
4992
|
+
placeholder: labels.validUntilTimeLabel
|
|
4993
|
+
}
|
|
4994
|
+
)
|
|
4995
|
+
] })
|
|
4996
|
+
] })
|
|
4997
|
+
] }),
|
|
4998
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4999
|
+
chunkLVR4SR65_js.FormCheckbox,
|
|
5000
|
+
{
|
|
5001
|
+
checked: noExpiry,
|
|
5002
|
+
onChange: (v) => {
|
|
5003
|
+
setNoExpiry(v);
|
|
5004
|
+
markTouched();
|
|
5005
|
+
},
|
|
5006
|
+
label: labels.noExpiryLabel,
|
|
5007
|
+
description: labels.noExpiryDescription
|
|
5008
|
+
}
|
|
5009
|
+
),
|
|
5010
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
5011
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.statusLabel }),
|
|
5012
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5013
|
+
chunkLVR4SR65_js.SegmentedControl,
|
|
5014
|
+
{
|
|
5015
|
+
segments: [
|
|
5016
|
+
{ value: "active", label: labels.statusActive },
|
|
5017
|
+
{ value: "paused", label: labels.statusPaused },
|
|
5018
|
+
{ value: "archived", label: labels.statusArchived }
|
|
5019
|
+
],
|
|
5020
|
+
value: status,
|
|
5021
|
+
onChange: (v) => {
|
|
5022
|
+
setStatus(v);
|
|
5023
|
+
markTouched();
|
|
5024
|
+
},
|
|
5025
|
+
size: "sm"
|
|
5026
|
+
}
|
|
5027
|
+
)
|
|
5028
|
+
] }),
|
|
5029
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5030
|
+
chunkLVR4SR65_js.FormInput,
|
|
5031
|
+
{
|
|
5032
|
+
label: labels.tagsLabel,
|
|
5033
|
+
value: tagsInput,
|
|
5034
|
+
onValueChange: (v) => {
|
|
5035
|
+
setTagsInput(v);
|
|
5036
|
+
markTouched();
|
|
5037
|
+
},
|
|
5038
|
+
placeholder: labels.tagsPlaceholder,
|
|
5039
|
+
hint: labels.tagsHint
|
|
5040
|
+
}
|
|
5041
|
+
),
|
|
5042
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
5043
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.recurrenceLabel }),
|
|
5044
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5045
|
+
chunkLVR4SR65_js.SegmentedControl,
|
|
5046
|
+
{
|
|
5047
|
+
segments: [
|
|
5048
|
+
{ value: "one-off", label: labels.recurrenceOneOff },
|
|
5049
|
+
{ value: "cron", label: labels.recurrenceCron },
|
|
5050
|
+
{ value: "recurring", label: labels.recurrenceRecurring }
|
|
5051
|
+
],
|
|
5052
|
+
value: recurrence,
|
|
5053
|
+
onChange: (v) => {
|
|
5054
|
+
setRecurrence(v);
|
|
5055
|
+
markTouched();
|
|
5056
|
+
},
|
|
5057
|
+
size: "sm"
|
|
5058
|
+
}
|
|
5059
|
+
)
|
|
5060
|
+
] }),
|
|
5061
|
+
recurrence === "cron" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5062
|
+
chunkLVR4SR65_js.FormInput,
|
|
5063
|
+
{
|
|
5064
|
+
label: labels.cronExpressionLabel,
|
|
5065
|
+
value: cronExpression,
|
|
5066
|
+
onValueChange: (v) => {
|
|
5067
|
+
setCronExpression(v);
|
|
5068
|
+
markTouched();
|
|
5069
|
+
},
|
|
5070
|
+
placeholder: labels.cronExpressionPlaceholder,
|
|
5071
|
+
hint: labels.cronExpressionHint
|
|
5072
|
+
}
|
|
5073
|
+
),
|
|
5074
|
+
recurrence === "recurring" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
5075
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
5076
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.weekdaysLabel }),
|
|
5077
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: WEEKDAYS.map((d) => {
|
|
5078
|
+
const selected = weekdays.includes(d.id);
|
|
5079
|
+
const label = labels[d.labelKey] ?? d.id;
|
|
5080
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5081
|
+
"button",
|
|
5082
|
+
{
|
|
5083
|
+
type: "button",
|
|
5084
|
+
"aria-pressed": selected,
|
|
5085
|
+
onClick: () => {
|
|
5086
|
+
setWeekdays(
|
|
5087
|
+
(current) => current.includes(d.id) ? current.filter((id) => id !== d.id) : [...current, d.id]
|
|
5088
|
+
);
|
|
5089
|
+
markTouched();
|
|
5090
|
+
},
|
|
5091
|
+
className: [
|
|
5092
|
+
"inline-flex h-9 min-w-9 items-center justify-center rounded-full px-3 text-xs font-semibold transition",
|
|
5093
|
+
selected ? "bg-fuchsia-500 text-white shadow ring-2 ring-fuchsia-300/70" : "liquid-surface text-slate-700 dark:text-slate-300 hover:bg-fuchsia-500/10"
|
|
5094
|
+
].join(" "),
|
|
5095
|
+
children: label
|
|
5096
|
+
},
|
|
5097
|
+
d.id
|
|
5098
|
+
);
|
|
5099
|
+
}) })
|
|
5100
|
+
] }),
|
|
5101
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
5102
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mb-2 block text-xs font-semibold uppercase tracking-wider text-slate-600 dark:text-slate-400", children: labels.timeOfDayLabel }),
|
|
5103
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5104
|
+
chunkLVR4SR65_js.TimePicker,
|
|
5105
|
+
{
|
|
5106
|
+
value: recurringTime,
|
|
5107
|
+
onChange: (t) => {
|
|
5108
|
+
setRecurringTime(t);
|
|
5109
|
+
markTouched();
|
|
5110
|
+
},
|
|
5111
|
+
placeholder: labels.timeOfDayLabel
|
|
5112
|
+
}
|
|
5113
|
+
)
|
|
5114
|
+
] })
|
|
5115
|
+
] })
|
|
5116
|
+
] })
|
|
5117
|
+
}
|
|
5118
|
+
) });
|
|
5119
|
+
}
|
|
5120
|
+
function renderStep5() {
|
|
5121
|
+
const payload = buildPayload();
|
|
5122
|
+
const conditionSentence = humanReadableCondition(payload.condition, labels);
|
|
5123
|
+
const actionSentence = humanReadableAction(payload.action, labels, ACTION_TILES, actionTileId);
|
|
5124
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
5125
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5126
|
+
chunkLVR4SR65_js.SectionCard,
|
|
5127
|
+
{
|
|
5128
|
+
variant: "glass",
|
|
5129
|
+
header: {
|
|
5130
|
+
title: labels.wizardStep1Title,
|
|
5131
|
+
subtitle: labels.wizardStep1Subtitle
|
|
5132
|
+
},
|
|
5133
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(1), children: [
|
|
5134
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
|
|
5135
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
|
|
5136
|
+
] }),
|
|
5137
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
|
|
5138
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewNameLabel, value: payload.name }),
|
|
5139
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewPriorityLabel, value: String(payload.priority) }),
|
|
5140
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewEnabledLabel, value: payload.enabled ? labels.reviewYes : labels.reviewNo }),
|
|
5141
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5142
|
+
ReviewRow3,
|
|
5143
|
+
{
|
|
5144
|
+
label: labels.reviewDescriptionLabel,
|
|
5145
|
+
value: payload.description ?? labels.reviewNoneValue
|
|
5146
|
+
}
|
|
5147
|
+
)
|
|
5148
|
+
] })
|
|
5149
|
+
}
|
|
5150
|
+
),
|
|
5151
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5152
|
+
chunkLVR4SR65_js.SectionCard,
|
|
5153
|
+
{
|
|
5154
|
+
variant: "glass",
|
|
5155
|
+
header: {
|
|
5156
|
+
title: labels.wizardStep2Title,
|
|
5157
|
+
subtitle: labels.wizardStep2Subtitle
|
|
5158
|
+
},
|
|
5159
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(2), children: [
|
|
5160
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
|
|
5161
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
|
|
5162
|
+
] }),
|
|
5163
|
+
children: [
|
|
5164
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm text-slate-700 dark:text-slate-200", children: conditionSentence }),
|
|
5165
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewCombinatorLabel, value: combinator.toUpperCase() }),
|
|
5166
|
+
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-3 max-h-48 overflow-auto rounded-lg border border-slate-200/70 bg-slate-50/60 p-2 text-xs text-slate-700 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-200", children: JSON.stringify(payload.condition, null, 2) })
|
|
5167
|
+
]
|
|
5168
|
+
}
|
|
5169
|
+
),
|
|
5170
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5171
|
+
chunkLVR4SR65_js.SectionCard,
|
|
5172
|
+
{
|
|
5173
|
+
variant: "glass",
|
|
5174
|
+
header: {
|
|
5175
|
+
title: labels.wizardStep3Title,
|
|
5176
|
+
subtitle: labels.wizardStep3Subtitle
|
|
5177
|
+
},
|
|
5178
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(3), children: [
|
|
5179
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
|
|
5180
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
|
|
5181
|
+
] }),
|
|
5182
|
+
children: [
|
|
5183
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm text-slate-700 dark:text-slate-200", children: actionSentence }),
|
|
5184
|
+
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-3 max-h-48 overflow-auto rounded-lg border border-slate-200/70 bg-slate-50/60 p-2 text-xs text-slate-700 dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-200", children: JSON.stringify(payload.action, null, 2) })
|
|
5185
|
+
]
|
|
5186
|
+
}
|
|
5187
|
+
),
|
|
5188
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5189
|
+
chunkLVR4SR65_js.SectionCard,
|
|
5190
|
+
{
|
|
5191
|
+
variant: "glass",
|
|
5192
|
+
header: {
|
|
5193
|
+
title: labels.wizardStep4Title,
|
|
5194
|
+
subtitle: labels.wizardStep4Subtitle
|
|
5195
|
+
},
|
|
5196
|
+
actions: /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", size: "sm", outline: true, onClick: () => goToStep(4), children: [
|
|
5197
|
+
/* @__PURE__ */ jsxRuntime.jsx(outline.PencilSquareIcon, { className: "h-4 w-4" }),
|
|
5198
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: labels.wizardReviewEdit })
|
|
5199
|
+
] }),
|
|
5200
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
|
|
5201
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5202
|
+
ReviewRow3,
|
|
5203
|
+
{
|
|
5204
|
+
label: labels.reviewValidFromLabel,
|
|
5205
|
+
value: payload.validFrom ?? labels.reviewNoneValue
|
|
5206
|
+
}
|
|
5207
|
+
),
|
|
5208
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5209
|
+
ReviewRow3,
|
|
5210
|
+
{
|
|
5211
|
+
label: labels.reviewValidUntilLabel,
|
|
5212
|
+
value: payload.validUntil ?? (noExpiry ? labels.noExpiryLabel : labels.reviewNoneValue)
|
|
5213
|
+
}
|
|
5214
|
+
),
|
|
5215
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewStatusLabel, value: payload.status ?? "active" }),
|
|
5216
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5217
|
+
ReviewRow3,
|
|
5218
|
+
{
|
|
5219
|
+
label: labels.reviewTagsLabel,
|
|
5220
|
+
value: payload.tags && payload.tags.length > 0 ? payload.tags.join(", ") : labels.reviewNoneValue
|
|
5221
|
+
}
|
|
5222
|
+
),
|
|
5223
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReviewRow3, { label: labels.reviewRecurrenceLabel, value: recurrence })
|
|
5224
|
+
] })
|
|
5225
|
+
}
|
|
5226
|
+
)
|
|
5227
|
+
] });
|
|
5228
|
+
}
|
|
5229
|
+
const stepBody = step === 1 ? renderStep1() : step === 2 ? renderStep2() : step === 3 ? renderStep3() : step === 4 ? renderStep4() : renderStep5();
|
|
5230
|
+
const advanceDisabled = !canAdvance(step);
|
|
5231
|
+
const footer = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2 border-t border-slate-200/60 pt-4 dark:border-white/10", children: [
|
|
5232
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: goBack, disabled: step === 1 || submitting, children: labels.wizardBack }) }),
|
|
5233
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
5234
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: cancelWithConfirm, disabled: submitting, children: labels.wizardCancel }),
|
|
5235
|
+
step < TOTAL_STEPS3 ? /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", color: "fuchsia", onClick: goNext, disabled: advanceDisabled || submitting, children: labels.wizardNext }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
5236
|
+
chunkBHOT22QL_js.Button,
|
|
5237
|
+
{
|
|
5238
|
+
type: "button",
|
|
5239
|
+
color: "fuchsia",
|
|
5240
|
+
onClick: () => void submit(),
|
|
5241
|
+
disabled: submitting || !name.trim() || !actionTileId,
|
|
5242
|
+
children: submitting ? labels.wizardCreate + "\u2026" : labels.wizardCreate
|
|
5243
|
+
}
|
|
5244
|
+
)
|
|
5245
|
+
] })
|
|
5246
|
+
] });
|
|
5247
|
+
const content = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5248
|
+
"form",
|
|
5249
|
+
{
|
|
5250
|
+
onSubmit: (e) => {
|
|
5251
|
+
e.preventDefault();
|
|
5252
|
+
if (step < TOTAL_STEPS3) goNext();
|
|
5253
|
+
else void submit();
|
|
5254
|
+
},
|
|
5255
|
+
className: "space-y-5",
|
|
5256
|
+
children: [
|
|
5257
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5258
|
+
chunkLVR4SR65_js.StepTimeline,
|
|
5259
|
+
{
|
|
5260
|
+
steps: timelineSteps,
|
|
5261
|
+
progressLabel: labels.pageTitle,
|
|
5262
|
+
onStepClick: (idx) => goToStep(idx + 1)
|
|
5263
|
+
}
|
|
5264
|
+
),
|
|
5265
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full space-y-5", children: [
|
|
5266
|
+
stepBody,
|
|
5267
|
+
footer
|
|
5268
|
+
] })
|
|
5269
|
+
]
|
|
5270
|
+
}
|
|
5271
|
+
);
|
|
5272
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
5273
|
+
hero,
|
|
5274
|
+
content
|
|
5275
|
+
] });
|
|
5276
|
+
}
|
|
5277
|
+
function ReviewRow3({ label, value }) {
|
|
5278
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-slate-200/60 bg-white/40 px-3 py-2 dark:border-white/10 dark:bg-white/[0.04]", children: [
|
|
5279
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-[10px] uppercase tracking-wider text-gray-400 dark:text-gray-500", children: label }),
|
|
5280
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "mt-0.5 whitespace-pre-wrap break-words text-xs font-semibold text-gray-900 dark:text-white", children: value })
|
|
5281
|
+
] });
|
|
5282
|
+
}
|
|
5283
|
+
function pad(n) {
|
|
5284
|
+
return String(n).padStart(2, "0");
|
|
5285
|
+
}
|
|
5286
|
+
function humanReadableCondition(cond, labels) {
|
|
5287
|
+
if (!cond) return labels.reviewNoneValue;
|
|
5288
|
+
if (cond.operator === "boolean_expression" && Array.isArray(cond.operands)) {
|
|
5289
|
+
const inner = cond.operands.map((o) => humanReadableCondition(o, labels)).join(` ${cond.combinator?.toUpperCase() ?? "AND"} `);
|
|
5290
|
+
return `(${inner})`;
|
|
5291
|
+
}
|
|
5292
|
+
const field = cond.field ?? "?";
|
|
5293
|
+
switch (cond.operator) {
|
|
5294
|
+
case "truthy":
|
|
5295
|
+
return `${field} is set`;
|
|
5296
|
+
case "eq":
|
|
5297
|
+
return `${field} = ${formatValue(cond.value)}`;
|
|
5298
|
+
case "neq":
|
|
5299
|
+
return `${field} \u2260 ${formatValue(cond.value)}`;
|
|
5300
|
+
case "gt":
|
|
5301
|
+
return `${field} > ${formatValue(cond.value)}`;
|
|
5302
|
+
case "gte":
|
|
5303
|
+
return `${field} \u2265 ${formatValue(cond.value)}`;
|
|
5304
|
+
case "lt":
|
|
5305
|
+
return `${field} < ${formatValue(cond.value)}`;
|
|
5306
|
+
case "lte":
|
|
5307
|
+
return `${field} \u2264 ${formatValue(cond.value)}`;
|
|
5308
|
+
case "contains":
|
|
5309
|
+
return `${field} contains "${formatValue(cond.value)}"`;
|
|
5310
|
+
case "regex_match":
|
|
5311
|
+
return `${field} matches /${cond.pattern ?? ""}/`;
|
|
5312
|
+
case "threshold":
|
|
5313
|
+
return `${field} ${cond.comparison ?? "gte"} ${formatValue(cond.value)}`;
|
|
5314
|
+
case "time_window":
|
|
5315
|
+
return `${field} within time-window(${(cond.windows ?? []).length})`;
|
|
5316
|
+
default:
|
|
5317
|
+
return `${cond.operator}(${field})`;
|
|
5318
|
+
}
|
|
5319
|
+
}
|
|
5320
|
+
function formatValue(v) {
|
|
5321
|
+
if (v === null || v === void 0) return "";
|
|
5322
|
+
return String(v);
|
|
5323
|
+
}
|
|
5324
|
+
function humanReadableAction(action, labels, tiles, actionTileId) {
|
|
5325
|
+
const tile = tiles.find((t) => t.id === actionTileId);
|
|
5326
|
+
const tileLabel = tile ? labels[tile.labelKey] ?? tile.id : action.type;
|
|
5327
|
+
const paramSummary = action.params ? Object.entries(action.params).slice(0, 3).map(([k, v]) => `${k}=${String(v)}`).join(", ") : "";
|
|
5328
|
+
return paramSummary ? `${tileLabel} \u2014 ${paramSummary}` : tileLabel;
|
|
5329
|
+
}
|
|
3619
5330
|
|
|
3620
5331
|
Object.defineProperty(exports, "RolesPageView", {
|
|
3621
5332
|
enumerable: true,
|
|
3622
|
-
get: function () { return
|
|
5333
|
+
get: function () { return chunkYSYEV2Z6_js.RolesPageView; }
|
|
3623
5334
|
});
|
|
3624
5335
|
Object.defineProperty(exports, "UsersPageView", {
|
|
3625
5336
|
enumerable: true,
|
|
3626
|
-
get: function () { return
|
|
5337
|
+
get: function () { return chunkYSYEV2Z6_js.UsersPageView; }
|
|
3627
5338
|
});
|
|
3628
5339
|
Object.defineProperty(exports, "DIALECT_CATEGORIES", {
|
|
3629
5340
|
enumerable: true,
|
|
3630
|
-
get: function () { return
|
|
5341
|
+
get: function () { return chunkFIJMOTP4_js.DIALECT_CATEGORIES; }
|
|
3631
5342
|
});
|
|
3632
5343
|
Object.defineProperty(exports, "DatasourceFormModal", {
|
|
3633
5344
|
enumerable: true,
|
|
3634
|
-
get: function () { return
|
|
5345
|
+
get: function () { return chunkFIJMOTP4_js.DatasourceFormModal; }
|
|
3635
5346
|
});
|
|
3636
5347
|
Object.defineProperty(exports, "DatasourceModal", {
|
|
3637
5348
|
enumerable: true,
|
|
3638
|
-
get: function () { return
|
|
5349
|
+
get: function () { return chunkFIJMOTP4_js.DatasourceModal; }
|
|
3639
5350
|
});
|
|
3640
5351
|
Object.defineProperty(exports, "findCategory", {
|
|
3641
5352
|
enumerable: true,
|
|
3642
|
-
get: function () { return
|
|
5353
|
+
get: function () { return chunkFIJMOTP4_js.findCategory; }
|
|
3643
5354
|
});
|
|
3644
5355
|
Object.defineProperty(exports, "findDialect", {
|
|
3645
5356
|
enumerable: true,
|
|
3646
|
-
get: function () { return
|
|
5357
|
+
get: function () { return chunkFIJMOTP4_js.findDialect; }
|
|
3647
5358
|
});
|
|
3648
5359
|
exports.AgentNewWizardPageView = AgentNewWizardPageView;
|
|
3649
5360
|
exports.AgentsConfigPageView = AgentsConfigPageView;
|
|
@@ -3655,7 +5366,9 @@ exports.AgentsWorkspacePageView = AgentsWorkspacePageView;
|
|
|
3655
5366
|
exports.ConnectionsPageView = ConnectionsPageView;
|
|
3656
5367
|
exports.CredentialsPageView = CredentialsPageView;
|
|
3657
5368
|
exports.DashboardPageView = DashboardPageView;
|
|
5369
|
+
exports.DatasourceNewWizardPageView = DatasourceNewWizardPageView;
|
|
3658
5370
|
exports.DatasourcesPageView = DatasourcesPageView;
|
|
5371
|
+
exports.RuleNewWizardPageView = RuleNewWizardPageView;
|
|
3659
5372
|
exports.RulesPageView = RulesPageView;
|
|
3660
5373
|
exports.RunTimelinePageView = RunTimelinePageView;
|
|
3661
5374
|
exports.TOOL_TYPES = TOOL_TYPES;
|