@loopstack/loopstack-studio 0.23.0 → 0.24.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/api/index.js +12 -10
- package/dist/api/secrets.js +16 -0
- package/dist/components/dynamic-form/ArrayController.js +68 -64
- package/dist/components/dynamic-form/Form.js +56 -27
- package/dist/components/dynamic-form/FormElement.js +1 -1
- package/dist/components/dynamic-form/FormElementHeader.js +2 -2
- package/dist/components/dynamic-form/InputController.js +3 -1
- package/dist/components/dynamic-form/ObjectController.js +24 -21
- package/dist/components/dynamic-form/fields/BaseFieldWrapper.js +1 -1
- package/dist/components/dynamic-form/fields/InputField.js +20 -19
- package/dist/components/dynamic-form/fields/MarkdownViewField.js +20 -0
- package/dist/components/dynamic-form/fields/RadioField.js +18 -18
- package/dist/components/dynamic-form/fields/SelectField.js +19 -19
- package/dist/components/dynamic-form/fields/TextareaField.js +17 -17
- package/dist/components/layout/MainLayout.js +18 -31
- package/dist/components/layout/StudioSidebar.js +168 -108
- package/dist/components/page/PageBreadcrumbs.js +79 -32
- package/dist/components/ui-widgets/UiWidget.js +36 -27
- package/dist/components/ui-widgets/widgets/SecretInput.js +42 -0
- package/dist/features/code-explorer/components/CodeExplorerTreeNode.js +80 -4
- package/dist/features/code-explorer/components/FileContentViewer.js +47 -30
- package/dist/features/code-explorer/components/FileTabsBar.js +3 -190
- package/dist/features/code-explorer/components/FileTabsBarBase.js +190 -0
- package/dist/features/code-explorer/index.js +2 -2
- package/dist/features/code-explorer/providers/CodeExplorerProvider.js +2 -162
- package/dist/features/code-explorer/utils/fileIcons.js +7 -4
- package/dist/features/debug/components/PipelineFlowViewer.js +46 -45
- package/dist/features/debug/components/pipeline-flow/WorkflowGraph.js +19 -19
- package/dist/features/documents/DocumentRenderer.js +20 -15
- package/dist/features/documents/components/DocumentList.js +5 -1
- package/dist/features/documents/renderers/AiMessage.js +11 -11
- package/dist/features/documents/renderers/ClaudeMessage.js +96 -0
- package/dist/features/documents/renderers/DocumentFormRenderer.js +17 -11
- package/dist/features/workbench/Workbench.js +64 -80
- package/dist/features/workbench/WorkflowItem.js +5 -5
- package/dist/features/workbench/components/RemoteFileTabsBar.js +18 -0
- package/dist/features/workbench/components/RemoteFileTree.js +90 -0
- package/dist/features/workbench/components/WorkbenchFilesPanel.js +67 -0
- package/dist/features/workbench/components/WorkbenchFloatingPanel.js +57 -49
- package/dist/features/workbench/components/WorkbenchFlowPanel.js +2 -2
- package/dist/features/workbench/components/WorkbenchIconSidebar.js +48 -28
- package/dist/features/workbench/components/WorkbenchSecretsPanel.js +182 -0
- package/dist/features/workbench/hooks/useWorkflowData.js +4 -4
- package/dist/features/workbench/providers/RemoteFileExplorerProvider.js +160 -0
- package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +46 -43
- package/dist/features/workspaces/components/PipelineForm.js +1 -1
- package/dist/features/workspaces/components/WorkspaceHomePage.js +93 -0
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/query-keys.js +41 -34
- package/dist/hooks/useFiles.js +1 -43
- package/dist/hooks/useSecrets.js +69 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.js +3 -2
- package/dist/node_modules/@xyflow/react/dist/esm/index.js +1 -1
- package/dist/pages/DashboardPage.js +87 -35
- package/dist/pages/EmbedWorkbenchPage.js +43 -39
- package/dist/pages/PipelineDebugPage.js +1 -1
- package/dist/pages/PreviewWorkbenchPage.js +167 -70
- package/dist/pages/WorkspacePage.js +102 -50
- package/dist/pages/WorkspaceRunsPage.js +71 -0
- package/dist/routing/LocalRouter.js +6 -0
- package/dist/types/ai.types.js +13 -0
- package/package.json +2 -3
- package/dist/node_modules/@ai-sdk/provider/dist/index.js +0 -65
- package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +0 -1008
- package/dist/node_modules/ai/dist/index.js +0 -1083
- package/dist/node_modules/zod/v3/ZodError.js +0 -79
- package/dist/node_modules/zod/v3/errors.js +0 -6
- package/dist/node_modules/zod/v3/helpers/errorUtil.js +0 -5
- package/dist/node_modules/zod/v3/helpers/parseUtil.js +0 -90
- package/dist/node_modules/zod/v3/helpers/util.js +0 -72
- package/dist/node_modules/zod/v3/locales/en.js +0 -58
- package/dist/node_modules/zod/v3/types.js +0 -2425
- package/dist/node_modules/zod/v4/classic/errors.js +0 -21
- package/dist/node_modules/zod/v4/classic/iso.js +0 -29
- package/dist/node_modules/zod/v4/classic/parse.js +0 -4
- package/dist/node_modules/zod/v4/classic/schemas.js +0 -392
- package/dist/node_modules/zod/v4/core/api.js +0 -532
- package/dist/node_modules/zod/v4/core/checks.js +0 -283
- package/dist/node_modules/zod/v4/core/core.js +0 -44
- package/dist/node_modules/zod/v4/core/doc.js +0 -21
- package/dist/node_modules/zod/v4/core/errors.js +0 -40
- package/dist/node_modules/zod/v4/core/json-schema-processors.js +0 -305
- package/dist/node_modules/zod/v4/core/parse.js +0 -66
- package/dist/node_modules/zod/v4/core/regexes.js +0 -28
- package/dist/node_modules/zod/v4/core/registries.js +0 -38
- package/dist/node_modules/zod/v4/core/schemas.js +0 -863
- package/dist/node_modules/zod/v4/core/to-json-schema.js +0 -220
- package/dist/node_modules/zod/v4/core/util.js +0 -267
- package/dist/node_modules/zod/v4/core/versions.js +0 -6
|
@@ -6,16 +6,16 @@ import React from "react";
|
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { Controller } from "react-hook-form";
|
|
8
8
|
const SelectField = (m) => {
|
|
9
|
-
let h = c(22), { name: g, schema: _, ui: v, required: y, form: b, disabled: x } = m, S = useFieldConfig(g, _, v, x), C;
|
|
10
|
-
h[0] !==
|
|
11
|
-
let w = C, T;
|
|
12
|
-
h[3] === w ? T = h[4] : (T = w.map(_temp), h[3] = w, h[4] = T);
|
|
9
|
+
let h = c(22), { name: g, schema: _, ui: v, required: y, form: b, disabled: x } = m, S = useFieldConfig(g, _, v, x), C = v, w = C?.enumOptions ?? _.enumOptions, T;
|
|
10
|
+
h[0] !== w || h[1] !== _ ? (T = w && w.length > 0 ? w : _.enum || [], h[0] = w, h[1] = _, h[2] = T) : T = h[2];
|
|
13
11
|
let E = T, D;
|
|
14
|
-
h[
|
|
15
|
-
let O = D, k
|
|
16
|
-
h[
|
|
17
|
-
let N;
|
|
18
|
-
h[
|
|
12
|
+
h[3] === E ? D = h[4] : (D = E.map(_temp), h[3] = E, h[4] = D);
|
|
13
|
+
let O = D, k;
|
|
14
|
+
h[5] === E ? k = h[6] : (k = E.map(_temp2), h[5] = E, h[6] = k);
|
|
15
|
+
let A = k, j = C?.placeholder || _.placeholder || `Select ${S.fieldLabel}`, M = S.defaultValue || "", N = y ? "This field is required" : void 0, P;
|
|
16
|
+
h[7] === N ? P = h[8] : (P = { required: N }, h[7] = N, h[8] = P);
|
|
17
|
+
let F;
|
|
18
|
+
h[9] !== S || h[10] !== O || h[11] !== A || h[12] !== g || h[13] !== j || h[14] !== y ? (F = (f) => {
|
|
19
19
|
let { field: p } = f;
|
|
20
20
|
return /* @__PURE__ */ jsx(BaseFieldWrapper, {
|
|
21
21
|
name: g,
|
|
@@ -33,23 +33,23 @@ const SelectField = (m) => {
|
|
|
33
33
|
id: g,
|
|
34
34
|
className: S.error ? "border-destructive" : "",
|
|
35
35
|
...S.getAriaProps(),
|
|
36
|
-
children: /* @__PURE__ */ jsx(SelectValue, { placeholder:
|
|
37
|
-
}), /* @__PURE__ */ jsx(SelectContent, { children:
|
|
36
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: j })
|
|
37
|
+
}), /* @__PURE__ */ jsx(SelectContent, { children: A.map((t, d) => /* @__PURE__ */ jsx(SelectItem, {
|
|
38
38
|
value: t.toString(),
|
|
39
39
|
disabled: S.isDisabled,
|
|
40
|
-
children:
|
|
40
|
+
children: O[d]?.toString() || t.toString()
|
|
41
41
|
}, `${t}-${d}`)) })]
|
|
42
42
|
})
|
|
43
43
|
});
|
|
44
|
-
}, h[9] = S, h[10] =
|
|
45
|
-
let
|
|
46
|
-
return h[16] !== b.control || h[17] !== g || h[18] !==
|
|
44
|
+
}, h[9] = S, h[10] = O, h[11] = A, h[12] = g, h[13] = j, h[14] = y, h[15] = F) : F = h[15];
|
|
45
|
+
let I;
|
|
46
|
+
return h[16] !== b.control || h[17] !== g || h[18] !== M || h[19] !== P || h[20] !== F ? (I = /* @__PURE__ */ jsx(Controller, {
|
|
47
47
|
name: g,
|
|
48
48
|
control: b.control,
|
|
49
|
-
defaultValue:
|
|
50
|
-
rules:
|
|
51
|
-
render:
|
|
52
|
-
}), h[16] = b.control, h[17] = g, h[18] =
|
|
49
|
+
defaultValue: M,
|
|
50
|
+
rules: P,
|
|
51
|
+
render: F
|
|
52
|
+
}), h[16] = b.control, h[17] = g, h[18] = M, h[19] = P, h[20] = F, h[21] = I) : I = h[21], I;
|
|
53
53
|
};
|
|
54
54
|
function _temp(t) {
|
|
55
55
|
return typeof t == "string" || typeof t == "number" ? t : t.label;
|
|
@@ -8,9 +8,9 @@ import React from "react";
|
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
import { Controller } from "react-hook-form";
|
|
10
10
|
const TextareaField = (d) => {
|
|
11
|
-
let f = c(25), { name: p, schema: m, ui: h, required: g, form: _, disabled: v, viewOnly: y } = d, b = useFieldConfig(p, m, h, v), x = m.placeholder || m.examples?.[0] || "",
|
|
12
|
-
f[0] !== g || f[1] !== m ? (
|
|
13
|
-
let
|
|
11
|
+
let f = c(25), { name: p, schema: m, ui: h, required: g, form: _, disabled: v, viewOnly: y } = d, b = useFieldConfig(p, m, h, v), x = h, S = x?.placeholder || m.placeholder || m.examples?.[0] || "", C = x?.rows || m.rows || 4, w;
|
|
12
|
+
f[0] !== g || f[1] !== m ? (w = buildTextValidationRules(m, g), f[0] = g, f[1] = m, f[2] = w) : w = f[2];
|
|
13
|
+
let T = w;
|
|
14
14
|
if (y) {
|
|
15
15
|
let o;
|
|
16
16
|
f[3] === b.fieldLabel ? o = f[4] : (o = /* @__PURE__ */ jsx(Label, {
|
|
@@ -26,12 +26,12 @@ const TextareaField = (d) => {
|
|
|
26
26
|
}), f[5] = _.control, f[6] = p, f[7] = s, f[8] = l) : l = f[8];
|
|
27
27
|
let u;
|
|
28
28
|
return f[9] !== o || f[10] !== l ? (u = /* @__PURE__ */ jsxs("div", {
|
|
29
|
-
className: "
|
|
29
|
+
className: "mb-4 block",
|
|
30
30
|
children: [o, l]
|
|
31
31
|
}), f[9] = o, f[10] = l, f[11] = u) : u = f[11], u;
|
|
32
32
|
}
|
|
33
|
-
let
|
|
34
|
-
f[12] !== b || f[13] !== p || f[14] !==
|
|
33
|
+
let E = b.defaultValue || "", D;
|
|
34
|
+
f[12] !== b || f[13] !== p || f[14] !== S || f[15] !== g || f[16] !== C || f[17] !== m.maxLength ? (D = (r) => {
|
|
35
35
|
let { field: s } = r;
|
|
36
36
|
return /* @__PURE__ */ jsx(BaseFieldWrapper, {
|
|
37
37
|
name: p,
|
|
@@ -44,28 +44,28 @@ const TextareaField = (d) => {
|
|
|
44
44
|
...s,
|
|
45
45
|
id: p,
|
|
46
46
|
onChange: b.isReadOnly ? void 0 : s.onChange,
|
|
47
|
-
rows:
|
|
48
|
-
placeholder:
|
|
47
|
+
rows: C,
|
|
48
|
+
placeholder: S,
|
|
49
49
|
disabled: b.isDisabled,
|
|
50
50
|
readOnly: b.isReadOnly,
|
|
51
51
|
maxLength: m.maxLength,
|
|
52
52
|
className: b.error ? "border-destructive focus-visible:ring-destructive" : "",
|
|
53
53
|
style: {
|
|
54
|
-
minHeight:
|
|
55
|
-
resize:
|
|
54
|
+
minHeight: C ? `${C * 1.5}em` : void 0,
|
|
55
|
+
resize: C ? "vertical" : "none"
|
|
56
56
|
},
|
|
57
57
|
...b.getAriaProps()
|
|
58
58
|
})
|
|
59
59
|
});
|
|
60
|
-
}, f[12] = b, f[13] = p, f[14] =
|
|
61
|
-
let
|
|
62
|
-
return f[19] !== _.control || f[20] !== p || f[21] !==
|
|
60
|
+
}, f[12] = b, f[13] = p, f[14] = S, f[15] = g, f[16] = C, f[17] = m.maxLength, f[18] = D) : D = f[18];
|
|
61
|
+
let O;
|
|
62
|
+
return f[19] !== _.control || f[20] !== p || f[21] !== E || f[22] !== D || f[23] !== T ? (O = /* @__PURE__ */ jsx(Controller, {
|
|
63
63
|
name: p,
|
|
64
64
|
control: _.control,
|
|
65
|
-
defaultValue:
|
|
66
|
-
rules:
|
|
67
|
-
render:
|
|
68
|
-
}), f[19] = _.control, f[20] = p, f[21] =
|
|
65
|
+
defaultValue: E,
|
|
66
|
+
rules: T,
|
|
67
|
+
render: D
|
|
68
|
+
}), f[19] = _.control, f[20] = p, f[21] = E, f[22] = D, f[23] = T, f[24] = O) : O = f[24], O;
|
|
69
69
|
};
|
|
70
70
|
function _temp(r) {
|
|
71
71
|
let { field: o } = r;
|
|
@@ -1,42 +1,29 @@
|
|
|
1
|
-
import { Separator } from "../ui/separator.js";
|
|
2
|
-
import { SidebarTrigger, useSidebar } from "../ui/sidebar.js";
|
|
3
1
|
import PageBreadcrumbs_default from "../page/PageBreadcrumbs.js";
|
|
4
2
|
import { c } from "react/compiler-runtime";
|
|
5
|
-
import {
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
orientation: "vertical",
|
|
10
|
-
className: "mr-2 data-[orientation=vertical]:h-4"
|
|
11
|
-
})] });
|
|
12
|
-
} catch {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
}, MainLayout_default = (e) => {
|
|
16
|
-
let o = c(11), { children: s, breadcrumbsData: l, headerMenu: u } = e, d;
|
|
17
|
-
o[0] === Symbol.for("react.memo_cache_sentinel") ? (d = /* @__PURE__ */ jsx(SidebarTriggerSafe, {}), o[0] = d) : d = o[0];
|
|
18
|
-
let f;
|
|
19
|
-
o[1] === l ? f = o[2] : (f = /* @__PURE__ */ jsxs("div", {
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
var MainLayout_default = (i) => {
|
|
5
|
+
let a = c(10), { children: o, breadcrumbsData: s, headerMenu: l } = i, u;
|
|
6
|
+
a[0] === s ? u = a[1] : (u = /* @__PURE__ */ jsx("div", {
|
|
20
7
|
className: "flex items-center gap-2",
|
|
21
|
-
children:
|
|
22
|
-
}),
|
|
23
|
-
let
|
|
24
|
-
|
|
8
|
+
children: /* @__PURE__ */ jsx(PageBreadcrumbs_default, { breadcrumbData: s })
|
|
9
|
+
}), a[0] = s, a[1] = u);
|
|
10
|
+
let d;
|
|
11
|
+
a[2] !== l || a[3] !== u ? (d = /* @__PURE__ */ jsxs("div", {
|
|
25
12
|
className: "border-b flex h-12 shrink-0 items-center justify-between gap-2 px-4",
|
|
26
|
-
children: [
|
|
27
|
-
}),
|
|
28
|
-
let
|
|
29
|
-
|
|
13
|
+
children: [u, l]
|
|
14
|
+
}), a[2] = l, a[3] = u, a[4] = d) : d = a[4];
|
|
15
|
+
let f;
|
|
16
|
+
a[5] === o ? f = a[6] : (f = /* @__PURE__ */ jsx("div", {
|
|
30
17
|
className: "flex-1 overflow-auto p-4",
|
|
31
18
|
children: /* @__PURE__ */ jsx("div", {
|
|
32
19
|
className: "space-y-6",
|
|
33
|
-
children:
|
|
20
|
+
children: o
|
|
34
21
|
})
|
|
35
|
-
}),
|
|
36
|
-
let
|
|
37
|
-
return
|
|
22
|
+
}), a[5] = o, a[6] = f);
|
|
23
|
+
let p;
|
|
24
|
+
return a[7] !== d || a[8] !== f ? (p = /* @__PURE__ */ jsxs("div", {
|
|
38
25
|
className: "flex h-full flex-col",
|
|
39
|
-
children: [
|
|
40
|
-
}),
|
|
26
|
+
children: [d, f]
|
|
27
|
+
}), a[7] = d, a[8] = f, a[9] = p) : p = a[9], p;
|
|
41
28
|
};
|
|
42
29
|
export { MainLayout_default as default };
|
|
@@ -1,165 +1,225 @@
|
|
|
1
1
|
import { useStudio, useStudioOptional } from "../../providers/StudioProvider.js";
|
|
2
2
|
import { useFilterPipelines } from "../../hooks/usePipelines.js";
|
|
3
3
|
import { useComponentOverrides } from "../../providers/ComponentOverridesProvider.js";
|
|
4
|
-
import {
|
|
4
|
+
import { cn } from "../../lib/utils.js";
|
|
5
|
+
import { Button } from "../ui/button.js";
|
|
6
|
+
import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarMenu, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, useSidebar } from "../ui/sidebar.js";
|
|
7
|
+
import { motion } from "../../node_modules/motion/dist/es/react.js";
|
|
5
8
|
import { c } from "react/compiler-runtime";
|
|
6
|
-
import {
|
|
9
|
+
import { useState } from "react";
|
|
10
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
11
|
import { Link, useLocation } from "react-router-dom";
|
|
8
|
-
import { CircleAlert, Info, LayoutDashboard, LayoutGrid, Play, Workflow } from "lucide-react";
|
|
12
|
+
import { CircleAlert, Info, LayoutDashboard, LayoutGrid, PanelLeftIcon, Play, Workflow } from "lucide-react";
|
|
9
13
|
var DefaultSidebarHeader = () => {
|
|
10
|
-
let e = c(
|
|
11
|
-
e[0] ===
|
|
12
|
-
|
|
14
|
+
let e = c(18), { state: l, toggleSidebar: u } = useSidebar(), [d, m] = useState(!1), h = l === "collapsed" ? "justify-center" : "justify-between", g;
|
|
15
|
+
e[0] === h ? g = e[1] : (g = cn("border-sidebar-border h-12 w-full flex-row items-center border-b px-1.5 py-0", h), e[0] = h, e[1] = g);
|
|
16
|
+
let _;
|
|
17
|
+
e[2] === l ? _ = e[3] : (_ = l === "expanded" && /* @__PURE__ */ jsxs("div", {
|
|
18
|
+
className: "flex items-center gap-2 overflow-hidden px-1.5",
|
|
13
19
|
children: [/* @__PURE__ */ jsx("img", {
|
|
14
20
|
src: "/loopstack.svg",
|
|
15
21
|
alt: "Loopstack",
|
|
16
22
|
className: "h-6 w-6"
|
|
17
|
-
}), /* @__PURE__ */ jsx(
|
|
18
|
-
className: "text-sm font-semibold",
|
|
23
|
+
}), /* @__PURE__ */ jsx(motion.span, {
|
|
24
|
+
className: "whitespace-nowrap text-sm font-semibold",
|
|
25
|
+
initial: {
|
|
26
|
+
opacity: 0,
|
|
27
|
+
x: -6
|
|
28
|
+
},
|
|
29
|
+
animate: {
|
|
30
|
+
opacity: 1,
|
|
31
|
+
x: 0
|
|
32
|
+
},
|
|
33
|
+
transition: {
|
|
34
|
+
opacity: {
|
|
35
|
+
duration: .18,
|
|
36
|
+
delay: .12,
|
|
37
|
+
ease: "easeOut"
|
|
38
|
+
},
|
|
39
|
+
x: {
|
|
40
|
+
duration: .18,
|
|
41
|
+
delay: .12,
|
|
42
|
+
ease: "easeOut"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
19
45
|
children: "Loopstack Studio"
|
|
20
46
|
})]
|
|
21
|
-
}), e[
|
|
22
|
-
let
|
|
23
|
-
e[
|
|
24
|
-
let
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
47
|
+
}), e[2] = l, e[3] = _);
|
|
48
|
+
let v;
|
|
49
|
+
e[4] === Symbol.for("react.memo_cache_sentinel") ? (v = cn("relative size-10 text-muted-foreground hover:cursor-pointer hover:bg-accent/50 hover:text-accent-foreground"), e[4] = v) : v = e[4];
|
|
50
|
+
let y, x;
|
|
51
|
+
e[5] === Symbol.for("react.memo_cache_sentinel") ? (y = () => m(!0), x = () => m(!1), e[5] = y, e[6] = x) : (y = e[5], x = e[6]);
|
|
52
|
+
let S;
|
|
53
|
+
e[7] !== d || e[8] !== l ? (S = l === "collapsed" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(motion.img, {
|
|
54
|
+
src: "/loopstack.svg",
|
|
55
|
+
alt: "Loopstack",
|
|
56
|
+
className: "absolute top-1/2 left-1/2 h-5 w-5 -translate-x-1/2 -translate-y-1/2",
|
|
57
|
+
initial: { opacity: 1 },
|
|
58
|
+
animate: { opacity: d ? 0 : 1 },
|
|
59
|
+
transition: { duration: .2 }
|
|
60
|
+
}), /* @__PURE__ */ jsx(motion.div, {
|
|
61
|
+
className: "absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center",
|
|
62
|
+
initial: { opacity: 0 },
|
|
63
|
+
animate: { opacity: d ? 1 : 0 },
|
|
64
|
+
transition: { duration: .2 },
|
|
65
|
+
children: /* @__PURE__ */ jsx(PanelLeftIcon, { className: "size-5" })
|
|
66
|
+
})] }) : /* @__PURE__ */ jsx(PanelLeftIcon, { className: "size-5" }), e[7] = d, e[8] = l, e[9] = S) : S = e[9];
|
|
67
|
+
let C;
|
|
68
|
+
e[10] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ jsx("span", {
|
|
69
|
+
className: "sr-only",
|
|
70
|
+
children: "Toggle Sidebar"
|
|
71
|
+
}), e[10] = C) : C = e[10];
|
|
72
|
+
let w;
|
|
73
|
+
e[11] !== S || e[12] !== u ? (w = /* @__PURE__ */ jsxs(Button, {
|
|
74
|
+
"data-sidebar": "trigger",
|
|
75
|
+
"data-slot": "sidebar-trigger",
|
|
76
|
+
variant: "ghost",
|
|
77
|
+
size: "icon",
|
|
78
|
+
className: v,
|
|
79
|
+
onClick: u,
|
|
80
|
+
onMouseEnter: y,
|
|
81
|
+
onMouseLeave: x,
|
|
82
|
+
children: [S, C]
|
|
83
|
+
}), e[11] = S, e[12] = u, e[13] = w) : w = e[13];
|
|
84
|
+
let k;
|
|
85
|
+
return e[14] !== g || e[15] !== _ || e[16] !== w ? (k = /* @__PURE__ */ jsxs(SidebarHeader, {
|
|
86
|
+
className: g,
|
|
87
|
+
children: [_, w]
|
|
88
|
+
}), e[14] = g, e[15] = _, e[16] = w, e[17] = k) : k = e[17], k;
|
|
29
89
|
}, RunsNav = () => {
|
|
30
|
-
let
|
|
31
|
-
|
|
32
|
-
let
|
|
33
|
-
|
|
90
|
+
let l = c(26), d = useLocation(), { router: f } = useStudio(), p = f.getRuns(), m;
|
|
91
|
+
l[0] === f ? m = l[1] : (m = f.getRunsActionRequired(), l[0] = f, l[1] = m);
|
|
92
|
+
let h = m, g;
|
|
93
|
+
l[2] === Symbol.for("react.memo_cache_sentinel") ? (g = {
|
|
34
94
|
parentId: null,
|
|
35
95
|
status: "paused"
|
|
36
|
-
},
|
|
37
|
-
let
|
|
38
|
-
|
|
39
|
-
let E =
|
|
40
|
-
|
|
41
|
-
let k;
|
|
42
|
-
u[6] === m ? k = u[7] : (k = /* @__PURE__ */ jsxs(Link, {
|
|
43
|
-
to: m,
|
|
44
|
-
children: [D, O]
|
|
45
|
-
}), u[6] = m, u[7] = k);
|
|
96
|
+
}, l[2] = g) : g = l[2];
|
|
97
|
+
let b = useFilterPipelines(void 0, g, "createdAt", "DESC", 0, 1).data?.total ?? 0, T;
|
|
98
|
+
l[3] === Symbol.for("react.memo_cache_sentinel") ? (T = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Runs" }), l[3] = T) : T = l[3];
|
|
99
|
+
let E = d.pathname === p || d.pathname === p + "/", D, O;
|
|
100
|
+
l[4] === Symbol.for("react.memo_cache_sentinel") ? (D = /* @__PURE__ */ jsx(Play, {}), O = /* @__PURE__ */ jsx("span", { children: "Overview" }), l[4] = D, l[5] = O) : (D = l[4], O = l[5]);
|
|
46
101
|
let A;
|
|
47
|
-
|
|
102
|
+
l[6] === p ? A = l[7] : (A = /* @__PURE__ */ jsxs(Link, {
|
|
103
|
+
to: p,
|
|
104
|
+
children: [D, O]
|
|
105
|
+
}), l[6] = p, l[7] = A);
|
|
106
|
+
let j;
|
|
107
|
+
l[8] !== E || l[9] !== A ? (j = /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
48
108
|
asChild: !0,
|
|
49
109
|
isActive: E,
|
|
50
110
|
tooltip: "Overview",
|
|
51
|
-
children:
|
|
52
|
-
}) }),
|
|
53
|
-
let
|
|
54
|
-
|
|
55
|
-
let P;
|
|
56
|
-
u[13] === y ? P = u[14] : (P = /* @__PURE__ */ jsxs(Link, {
|
|
57
|
-
to: y,
|
|
58
|
-
children: [N, M]
|
|
59
|
-
}), u[13] = y, u[14] = P);
|
|
111
|
+
children: A
|
|
112
|
+
}) }), l[8] = E, l[9] = A, l[10] = j) : j = l[10];
|
|
113
|
+
let M = d.pathname === h, N, P;
|
|
114
|
+
l[11] === Symbol.for("react.memo_cache_sentinel") ? (P = /* @__PURE__ */ jsx(CircleAlert, {}), N = /* @__PURE__ */ jsx("span", { children: "Action Required" }), l[11] = N, l[12] = P) : (N = l[11], P = l[12]);
|
|
60
115
|
let F;
|
|
61
|
-
|
|
116
|
+
l[13] === h ? F = l[14] : (F = /* @__PURE__ */ jsxs(Link, {
|
|
117
|
+
to: h,
|
|
118
|
+
children: [P, N]
|
|
119
|
+
}), l[13] = h, l[14] = F);
|
|
120
|
+
let I;
|
|
121
|
+
l[15] !== F || l[16] !== M ? (I = /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
62
122
|
asChild: !0,
|
|
63
|
-
isActive:
|
|
123
|
+
isActive: M,
|
|
64
124
|
tooltip: "Action Required",
|
|
65
|
-
children:
|
|
66
|
-
}),
|
|
67
|
-
let I;
|
|
68
|
-
u[18] === w ? I = u[19] : (I = w > 0 && /* @__PURE__ */ jsx(SidebarMenuBadge, { children: w }), u[18] = w, u[19] = I);
|
|
125
|
+
children: F
|
|
126
|
+
}), l[15] = F, l[16] = M, l[17] = I) : I = l[17];
|
|
69
127
|
let L;
|
|
70
|
-
|
|
128
|
+
l[18] === b ? L = l[19] : (L = b > 0 && /* @__PURE__ */ jsx(SidebarMenuBadge, { children: b }), l[18] = b, l[19] = L);
|
|
71
129
|
let R;
|
|
72
|
-
|
|
130
|
+
l[20] !== I || l[21] !== L ? (R = /* @__PURE__ */ jsxs(SidebarMenuItem, { children: [I, L] }), l[20] = I, l[21] = L, l[22] = R) : R = l[22];
|
|
131
|
+
let z;
|
|
132
|
+
return l[23] !== R || l[24] !== j ? (z = /* @__PURE__ */ jsxs(SidebarGroup, { children: [T, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsxs(SidebarMenu, { children: [j, R] }) })] }), l[23] = R, l[24] = j, l[25] = z) : z = l[25], z;
|
|
73
133
|
}, WorkspacesNav = () => {
|
|
74
|
-
let
|
|
75
|
-
|
|
76
|
-
let
|
|
77
|
-
|
|
78
|
-
let
|
|
79
|
-
|
|
80
|
-
let
|
|
81
|
-
|
|
82
|
-
to:
|
|
83
|
-
children: [
|
|
84
|
-
}),
|
|
85
|
-
let
|
|
86
|
-
return
|
|
134
|
+
let l = c(11), u = useLocation(), { router: d } = useStudio(), f = d.getWorkspaces(), p;
|
|
135
|
+
l[0] === Symbol.for("react.memo_cache_sentinel") ? (p = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Workspaces" }), l[0] = p) : p = l[0];
|
|
136
|
+
let m;
|
|
137
|
+
l[1] !== u.pathname || l[2] !== f ? (m = u.pathname === f || u.pathname.startsWith(f + "/"), l[1] = u.pathname, l[2] = f, l[3] = m) : m = l[3];
|
|
138
|
+
let h, g;
|
|
139
|
+
l[4] === Symbol.for("react.memo_cache_sentinel") ? (h = /* @__PURE__ */ jsx(LayoutGrid, {}), g = /* @__PURE__ */ jsx("span", { children: "My Workspaces" }), l[4] = h, l[5] = g) : (h = l[4], g = l[5]);
|
|
140
|
+
let b;
|
|
141
|
+
l[6] === f ? b = l[7] : (b = /* @__PURE__ */ jsxs(Link, {
|
|
142
|
+
to: f,
|
|
143
|
+
children: [h, g]
|
|
144
|
+
}), l[6] = f, l[7] = b);
|
|
145
|
+
let S;
|
|
146
|
+
return l[8] !== m || l[9] !== b ? (S = /* @__PURE__ */ jsxs(SidebarGroup, { children: [p, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
87
147
|
asChild: !0,
|
|
88
|
-
isActive:
|
|
148
|
+
isActive: m,
|
|
89
149
|
tooltip: "My Workspaces",
|
|
90
|
-
children:
|
|
91
|
-
}) }) }) })] }),
|
|
150
|
+
children: b
|
|
151
|
+
}) }) }) })] }), l[8] = m, l[9] = b, l[10] = S) : S = l[10], S;
|
|
92
152
|
}, InsightsNav = () => {
|
|
93
|
-
let
|
|
94
|
-
|
|
95
|
-
let
|
|
96
|
-
|
|
153
|
+
let l = c(15), u = useLocation(), { router: d } = useStudio(), f;
|
|
154
|
+
l[0] === d ? f = l[1] : (f = d.getDashboard(), l[0] = d, l[1] = f);
|
|
155
|
+
let p;
|
|
156
|
+
l[2] === f ? p = l[3] : (p = {
|
|
97
157
|
label: "Dashboard",
|
|
98
|
-
href:
|
|
158
|
+
href: f,
|
|
99
159
|
icon: LayoutDashboard
|
|
100
|
-
},
|
|
160
|
+
}, l[2] = f, l[3] = p);
|
|
161
|
+
let m;
|
|
162
|
+
l[4] === d ? m = l[5] : (m = d.getDebugWorkflows(), l[4] = d, l[5] = m);
|
|
101
163
|
let h;
|
|
102
|
-
|
|
103
|
-
let y;
|
|
104
|
-
u[6] === h ? y = u[7] : (y = {
|
|
164
|
+
l[6] === m ? h = l[7] : (h = {
|
|
105
165
|
label: "Workflows",
|
|
106
|
-
href:
|
|
166
|
+
href: m,
|
|
107
167
|
icon: Workflow
|
|
108
|
-
},
|
|
109
|
-
let
|
|
110
|
-
|
|
111
|
-
let
|
|
112
|
-
|
|
168
|
+
}, l[6] = m, l[7] = h);
|
|
169
|
+
let g;
|
|
170
|
+
l[8] !== p || l[9] !== h ? (g = [p, h], l[8] = p, l[9] = h, l[10] = g) : g = l[10];
|
|
171
|
+
let b = g, S;
|
|
172
|
+
l[11] === Symbol.for("react.memo_cache_sentinel") ? (S = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Insights" }), l[11] = S) : S = l[11];
|
|
113
173
|
let T;
|
|
114
|
-
return
|
|
174
|
+
return l[12] !== u || l[13] !== b ? (T = /* @__PURE__ */ jsxs(SidebarGroup, { children: [S, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: b.map((e) => /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
115
175
|
asChild: !0,
|
|
116
|
-
isActive:
|
|
176
|
+
isActive: u.pathname === e.href,
|
|
117
177
|
tooltip: e.label,
|
|
118
178
|
children: /* @__PURE__ */ jsxs(Link, {
|
|
119
179
|
to: e.href,
|
|
120
180
|
children: [/* @__PURE__ */ jsx(e.icon, {}), /* @__PURE__ */ jsx("span", { children: e.label })]
|
|
121
181
|
})
|
|
122
|
-
}) }, e.href)) }) })] }),
|
|
182
|
+
}) }, e.href)) }) })] }), l[12] = u, l[13] = b, l[14] = T) : T = l[14], T;
|
|
123
183
|
}, DefaultSidebarFooter = () => {
|
|
124
|
-
let
|
|
125
|
-
|
|
126
|
-
let
|
|
127
|
-
|
|
184
|
+
let l = c(9), u = useLocation(), { router: d } = useStudio(), f;
|
|
185
|
+
l[0] === d ? f = l[1] : (f = d.getEnvironmentInfo(), l[0] = d, l[1] = f);
|
|
186
|
+
let p = f, m = u.pathname === p, h, _;
|
|
187
|
+
l[2] === Symbol.for("react.memo_cache_sentinel") ? (h = /* @__PURE__ */ jsx(Info, {}), _ = /* @__PURE__ */ jsx("span", { children: "Info" }), l[2] = h, l[3] = _) : (h = l[2], _ = l[3]);
|
|
188
|
+
let v;
|
|
189
|
+
l[4] === p ? v = l[5] : (v = /* @__PURE__ */ jsxs(Link, {
|
|
190
|
+
to: p,
|
|
191
|
+
children: [h, _]
|
|
192
|
+
}), l[4] = p, l[5] = v);
|
|
128
193
|
let y;
|
|
129
|
-
|
|
130
|
-
to: m,
|
|
131
|
-
children: [_, v]
|
|
132
|
-
}), u[4] = m, u[5] = y);
|
|
133
|
-
let x;
|
|
134
|
-
return u[6] !== g || u[7] !== y ? (x = /* @__PURE__ */ jsx(SidebarFooter, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
194
|
+
return l[6] !== m || l[7] !== v ? (y = /* @__PURE__ */ jsx(SidebarFooter, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
135
195
|
asChild: !0,
|
|
136
|
-
isActive:
|
|
196
|
+
isActive: m,
|
|
137
197
|
size: "sm",
|
|
138
198
|
tooltip: "Info",
|
|
139
|
-
children:
|
|
140
|
-
}) }) }) }),
|
|
199
|
+
children: v
|
|
200
|
+
}) }) }) }), l[6] = m, l[7] = v, l[8] = y) : y = l[8], y;
|
|
141
201
|
};
|
|
142
202
|
const StudioSidebar = () => {
|
|
143
|
-
let e = c(13),
|
|
144
|
-
e[0] ===
|
|
145
|
-
let
|
|
146
|
-
e[2] ===
|
|
203
|
+
let e = c(13), u = useComponentOverrides(), f = useStudioOptional(), p = u.SidebarHeader ?? DefaultSidebarHeader, g = u.SidebarFooter ?? DefaultSidebarFooter, _;
|
|
204
|
+
e[0] === p ? _ = e[1] : (_ = /* @__PURE__ */ jsx(p, {}), e[0] = p, e[1] = _);
|
|
205
|
+
let v;
|
|
206
|
+
e[2] === f ? v = e[3] : (v = f && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
147
207
|
/* @__PURE__ */ jsx(RunsNav, {}),
|
|
148
208
|
/* @__PURE__ */ jsx(WorkspacesNav, {}),
|
|
149
209
|
/* @__PURE__ */ jsx(InsightsNav, {})
|
|
150
|
-
] }), e[2] =
|
|
210
|
+
] }), e[2] = f, e[3] = v);
|
|
211
|
+
let y;
|
|
212
|
+
e[4] === v ? y = e[5] : (y = /* @__PURE__ */ jsx(SidebarContent, { children: v }), e[4] = v, e[5] = y);
|
|
151
213
|
let b;
|
|
152
|
-
e[
|
|
214
|
+
e[6] !== g || e[7] !== f ? (b = f && /* @__PURE__ */ jsx(g, {}), e[6] = g, e[7] = f, e[8] = b) : b = e[8];
|
|
153
215
|
let x;
|
|
154
|
-
e[
|
|
155
|
-
let S;
|
|
156
|
-
return e[9] !== v || e[10] !== b || e[11] !== x ? (S = /* @__PURE__ */ jsxs(Sidebar, {
|
|
216
|
+
return e[9] !== _ || e[10] !== y || e[11] !== b ? (x = /* @__PURE__ */ jsxs(Sidebar, {
|
|
157
217
|
collapsible: "icon",
|
|
158
218
|
children: [
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
219
|
+
_,
|
|
220
|
+
y,
|
|
221
|
+
b
|
|
162
222
|
]
|
|
163
|
-
}), e[9] =
|
|
223
|
+
}), e[9] = _, e[10] = y, e[11] = b, e[12] = x) : x = e[12], x;
|
|
164
224
|
};
|
|
165
225
|
export { StudioSidebar };
|