@loopstack/loopstack-studio 0.25.2 → 0.26.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.
Files changed (96) hide show
  1. package/dist/api/environments.js +4 -0
  2. package/dist/api/index.js +13 -9
  3. package/dist/app/EnvironmentEmbedRoot.js +29 -19
  4. package/dist/components/data-table/DataList.js +93 -91
  5. package/dist/components/data-table/DataTable.js +128 -126
  6. package/dist/components/feedback/Snackbar.js +1 -1
  7. package/dist/components/layout/StudioSidebar.js +124 -131
  8. package/dist/components/ui/sidebar.js +2 -2
  9. package/dist/components/ui/slider.js +37 -26
  10. package/dist/components/ui-widgets/widgets/SandboxRun.js +16 -14
  11. package/dist/features/code-explorer/components/CodeExplorerTree.js +1 -0
  12. package/dist/features/code-explorer/components/FileContentViewer.js +1 -1
  13. package/dist/features/dashboard/RunItem.js +39 -37
  14. package/dist/features/debug/lib/flow-utils.js +1 -1
  15. package/dist/features/documents/DocumentRenderer.js +59 -58
  16. package/dist/features/documents/renderers/useDocumentTransition.js +29 -24
  17. package/dist/features/feature-registry/FeatureRegistryProvider.js +17 -0
  18. package/dist/features/feature-registry/index.js +1 -0
  19. package/dist/features/file-explorer/api/files.js +7 -0
  20. package/dist/features/file-explorer/components/FileExplorerPanel.js +95 -0
  21. package/dist/features/{workbench/components/RemoteFileTabsBar.js → file-explorer/components/FileTabsBar.js} +4 -4
  22. package/dist/features/{workbench/components/RemoteFileTree.js → file-explorer/components/FileTree.js} +6 -6
  23. package/dist/features/file-explorer/file-explorer-feature.js +12 -0
  24. package/dist/features/file-explorer/hooks/useFileExplorer.js +44 -0
  25. package/dist/features/file-explorer/index.js +2 -0
  26. package/dist/features/file-explorer/providers/FileExplorerProvider.js +112 -0
  27. package/dist/features/oauth/OAuthPromptRenderer.js +162 -132
  28. package/dist/features/runs/Runs.js +1 -1
  29. package/dist/features/secrets/components/WorkbenchSecretsPanel.js +178 -0
  30. package/dist/features/secrets/index.js +1 -0
  31. package/dist/features/{documents → secrets}/renderers/SecretInputRenderer.js +17 -17
  32. package/dist/features/secrets/secrets-feature.js +14 -0
  33. package/dist/features/workbench/Workbench.js +32 -82
  34. package/dist/features/workbench/WorkflowList.js +109 -46
  35. package/dist/features/workbench/components/SidebarPanel.js +155 -0
  36. package/dist/features/workbench/components/WorkbenchEnvironmentPanel.js +82 -0
  37. package/dist/features/workbench/components/WorkbenchIconSidebar.js +128 -60
  38. package/dist/features/workbench/components/WorkbenchPreviewPanel.js +127 -114
  39. package/dist/features/workbench/components/WorkbenchRunsPanel.js +32 -0
  40. package/dist/features/workbench/components/WorkbenchSidebarShell.js +80 -0
  41. package/dist/features/workbench/hooks/useWorkflowData.js +3 -3
  42. package/dist/features/workbench/index.js +3 -2
  43. package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +60 -62
  44. package/dist/features/workspaces/Workspaces.js +1 -1
  45. package/dist/features/workspaces/components/EnvironmentSlotSelector.js +68 -51
  46. package/dist/features/workspaces/components/WorkflowRunForm.js +1 -1
  47. package/dist/features/workspaces/components/WorkspaceHomePage.js +1 -1
  48. package/dist/hooks/useEnvironmentPreviewUrl.js +13 -0
  49. package/dist/hooks/useEnvironments.js +8 -0
  50. package/dist/hooks/useWorkflows.js +28 -26
  51. package/dist/hooks/useWorkspaces.js +28 -26
  52. package/dist/index.d.ts +98 -7
  53. package/dist/index.js +8 -1
  54. package/dist/loopstack-studio.css +1 -1
  55. package/dist/node_modules/@shikijs/core/dist/index.js +105 -643
  56. package/dist/node_modules/@shikijs/engine-oniguruma/dist/index.js +135 -122
  57. package/dist/node_modules/@shikijs/langs/dist/bird2.js +1 -1
  58. package/dist/node_modules/@shikijs/langs/dist/cobol.js +1 -1
  59. package/dist/node_modules/@shikijs/langs/dist/css.js +1 -1
  60. package/dist/node_modules/@shikijs/langs/dist/dart.js +1 -1
  61. package/dist/node_modules/@shikijs/langs/dist/emacs-lisp.js +1 -1
  62. package/dist/node_modules/@shikijs/langs/dist/es-tag-sql.js +1 -1
  63. package/dist/node_modules/@shikijs/langs/dist/go.js +1 -1
  64. package/dist/node_modules/@shikijs/langs/dist/kusto.js +1 -1
  65. package/dist/node_modules/@shikijs/langs/dist/nextflow-groovy.js +1 -1
  66. package/dist/node_modules/@shikijs/langs/dist/php.js +1 -1
  67. package/dist/node_modules/@shikijs/langs/dist/ruby.js +1 -1
  68. package/dist/node_modules/@shikijs/langs/dist/typespec.js +1 -1
  69. package/dist/node_modules/@shikijs/primitive/dist/index.js +538 -0
  70. package/dist/node_modules/@shikijs/themes/dist/horizon-bright.js +1 -1
  71. package/dist/node_modules/@xyflow/react/dist/esm/index.js +1 -1
  72. package/dist/node_modules/shiki/dist/bundle-full.js +6 -5
  73. package/dist/node_modules/shiki/dist/chunk-CtajNgzt.js +15 -0
  74. package/dist/node_modules/shiki/dist/engine-oniguruma.js +5 -0
  75. package/dist/node_modules/shiki/dist/{langs.js → langs-bundle-full-DfKZStlK.js} +1 -1
  76. package/dist/node_modules/shiki/dist/themes.js +1 -1
  77. package/dist/pages/DashboardPage.js +54 -79
  78. package/dist/pages/DebugWorkflowDetailsPage.js +41 -55
  79. package/dist/pages/DebugWorkflowsPage.js +151 -112
  80. package/dist/pages/EmbedWorkbenchPage.js +2 -1
  81. package/dist/pages/PreviewWorkbenchPage.js +77 -59
  82. package/dist/pages/RunsListPage.js +27 -41
  83. package/dist/pages/RunsPage.js +21 -36
  84. package/dist/pages/WorkbenchPage.js +48 -70
  85. package/dist/pages/WorkflowDebugPage.js +65 -79
  86. package/dist/pages/WorkspacePage.js +59 -86
  87. package/dist/pages/WorkspaceRunsPage.js +59 -54
  88. package/dist/pages/WorkspacesPage.js +11 -27
  89. package/dist/providers/StudioPreferencesProvider.js +54 -0
  90. package/package.json +29 -29
  91. package/dist/features/workbench/components/WorkbenchFilesPanel.js +0 -67
  92. package/dist/features/workbench/components/WorkbenchFloatingPanel.js +0 -57
  93. package/dist/features/workbench/components/WorkbenchFlowPanel.js +0 -47
  94. package/dist/features/workbench/components/WorkbenchSecretsPanel.js +0 -182
  95. package/dist/features/workbench/providers/RemoteFileExplorerProvider.js +0 -160
  96. /package/dist/{node_modules → frontend/studio/node_modules}/@dagrejs/dagre/dist/dagre.esm.js +0 -0
@@ -1,5 +1,6 @@
1
1
  import { useStudio, useStudioOptional } from "../../providers/StudioProvider.js";
2
2
  import { useFilterWorkflows } from "../../hooks/useWorkflows.js";
3
+ import { useFilterWorkspaces } from "../../hooks/useWorkspaces.js";
3
4
  import { useComponentOverrides } from "../../providers/ComponentOverridesProvider.js";
4
5
  import { cn } from "../../lib/utils.js";
5
6
  import { Button } from "../ui/button.js";
@@ -9,12 +10,12 @@ import { c } from "react/compiler-runtime";
9
10
  import { useState } from "react";
10
11
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
12
  import { Link, useLocation } from "react-router-dom";
12
- import { CircleAlert, Info, LayoutDashboard, LayoutGrid, PanelLeftIcon, Play, Workflow } from "lucide-react";
13
+ import { CircleAlert, LayoutGrid, MoreHorizontal, PanelLeftIcon, Play, Star } from "lucide-react";
13
14
  var DefaultSidebarHeader = () => {
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", {
15
+ let e = c(18), { state: u, toggleSidebar: d } = useSidebar(), [f, p] = useState(!1), g = u === "collapsed" ? "justify-center" : "justify-between", _;
16
+ e[0] === g ? _ = e[1] : (_ = cn("border-sidebar-border h-12 w-full flex-row items-center border-b px-1.5 py-0", g), e[0] = g, e[1] = _);
17
+ let v;
18
+ e[2] === u ? v = e[3] : (v = u === "expanded" && /* @__PURE__ */ jsxs("div", {
18
19
  className: "flex items-center gap-2 overflow-hidden px-1.5",
19
20
  children: [/* @__PURE__ */ jsx("img", {
20
21
  src: "/loopstack.svg",
@@ -44,182 +45,174 @@ var DefaultSidebarHeader = () => {
44
45
  },
45
46
  children: "Loopstack Studio"
46
47
  })]
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, {
48
+ }), e[2] = u, e[3] = v);
49
+ let y;
50
+ e[4] === Symbol.for("react.memo_cache_sentinel") ? (y = cn("relative size-10 text-muted-foreground hover:cursor-pointer hover:bg-accent/50 hover:text-accent-foreground"), e[4] = y) : y = e[4];
51
+ let b, x;
52
+ e[5] === Symbol.for("react.memo_cache_sentinel") ? (b = () => p(!0), x = () => p(!1), e[5] = b, e[6] = x) : (b = e[5], x = e[6]);
53
+ let C;
54
+ e[7] !== f || e[8] !== u ? (C = u === "collapsed" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(motion.img, {
54
55
  src: "/loopstack.svg",
55
56
  alt: "Loopstack",
56
57
  className: "absolute top-1/2 left-1/2 h-5 w-5 -translate-x-1/2 -translate-y-1/2",
57
58
  initial: { opacity: 1 },
58
- animate: { opacity: d ? 0 : 1 },
59
+ animate: { opacity: f ? 0 : 1 },
59
60
  transition: { duration: .2 }
60
61
  }), /* @__PURE__ */ jsx(motion.div, {
61
62
  className: "absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center",
62
63
  initial: { opacity: 0 },
63
- animate: { opacity: d ? 1 : 0 },
64
+ animate: { opacity: f ? 1 : 0 },
64
65
  transition: { duration: .2 },
65
66
  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", {
67
+ })] }) : /* @__PURE__ */ jsx(PanelLeftIcon, { className: "size-5" }), e[7] = f, e[8] = u, e[9] = C) : C = e[9];
68
+ let w;
69
+ e[10] === Symbol.for("react.memo_cache_sentinel") ? (w = /* @__PURE__ */ jsx("span", {
69
70
  className: "sr-only",
70
71
  children: "Toggle Sidebar"
71
- }), e[10] = C) : C = e[10];
72
- let w;
73
- e[11] !== S || e[12] !== u ? (w = /* @__PURE__ */ jsxs(Button, {
72
+ }), e[10] = w) : w = e[10];
73
+ let T;
74
+ e[11] !== C || e[12] !== d ? (T = /* @__PURE__ */ jsxs(Button, {
74
75
  "data-sidebar": "trigger",
75
76
  "data-slot": "sidebar-trigger",
76
77
  variant: "ghost",
77
78
  size: "icon",
78
- className: v,
79
- onClick: u,
80
- onMouseEnter: y,
79
+ className: y,
80
+ onClick: d,
81
+ onMouseEnter: b,
81
82
  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;
83
+ children: [C, w]
84
+ }), e[11] = C, e[12] = d, e[13] = T) : T = e[13];
85
+ let E;
86
+ return e[14] !== _ || e[15] !== v || e[16] !== T ? (E = /* @__PURE__ */ jsxs(SidebarHeader, {
87
+ className: _,
88
+ children: [v, T]
89
+ }), e[14] = _, e[15] = v, e[16] = T, e[17] = E) : E = e[17], E;
89
90
  }, RunsNav = () => {
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 = {
91
+ let u = c(26), f = useLocation(), { router: p } = useStudio(), m = p.getRuns(), h;
92
+ u[0] === p ? h = u[1] : (h = p.getRunsActionRequired(), u[0] = p, u[1] = h);
93
+ let g = h, _;
94
+ u[2] === Symbol.for("react.memo_cache_sentinel") ? (_ = {
94
95
  parentId: null,
95
96
  status: "paused"
96
- }, l[2] = g) : g = l[2];
97
- let b = useFilterWorkflows(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]);
97
+ }, u[2] = _) : _ = u[2];
98
+ let v = useFilterWorkflows(void 0, _, "createdAt", "DESC", 0, 1).data?.total ?? 0, S;
99
+ u[3] === Symbol.for("react.memo_cache_sentinel") ? (S = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Runs" }), u[3] = S) : S = u[3];
100
+ let D = f.pathname === m || f.pathname === m + "/", O, k;
101
+ u[4] === Symbol.for("react.memo_cache_sentinel") ? (O = /* @__PURE__ */ jsx(Play, {}), k = /* @__PURE__ */ jsx("span", { children: "Overview" }), u[4] = O, u[5] = k) : (O = u[4], k = u[5]);
101
102
  let A;
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);
103
+ u[6] === m ? A = u[7] : (A = /* @__PURE__ */ jsxs(Link, {
104
+ to: m,
105
+ children: [O, k]
106
+ }), u[6] = m, u[7] = A);
106
107
  let j;
107
- l[8] !== E || l[9] !== A ? (j = /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
108
+ u[8] !== D || u[9] !== A ? (j = /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
108
109
  asChild: !0,
109
- isActive: E,
110
+ isActive: D,
110
111
  tooltip: "Overview",
111
112
  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]);
113
+ }) }), u[8] = D, u[9] = A, u[10] = j) : j = u[10];
114
+ let M = f.pathname === g, N, P;
115
+ u[11] === Symbol.for("react.memo_cache_sentinel") ? (P = /* @__PURE__ */ jsx(CircleAlert, {}), N = /* @__PURE__ */ jsx("span", { children: "Action Required" }), u[11] = N, u[12] = P) : (N = u[11], P = u[12]);
115
116
  let F;
116
- l[13] === h ? F = l[14] : (F = /* @__PURE__ */ jsxs(Link, {
117
- to: h,
117
+ u[13] === g ? F = u[14] : (F = /* @__PURE__ */ jsxs(Link, {
118
+ to: g,
118
119
  children: [P, N]
119
- }), l[13] = h, l[14] = F);
120
+ }), u[13] = g, u[14] = F);
120
121
  let I;
121
- l[15] !== F || l[16] !== M ? (I = /* @__PURE__ */ jsx(SidebarMenuButton, {
122
+ u[15] !== F || u[16] !== M ? (I = /* @__PURE__ */ jsx(SidebarMenuButton, {
122
123
  asChild: !0,
123
124
  isActive: M,
124
125
  tooltip: "Action Required",
125
126
  children: F
126
- }), l[15] = F, l[16] = M, l[17] = I) : I = l[17];
127
+ }), u[15] = F, u[16] = M, u[17] = I) : I = u[17];
127
128
  let L;
128
- l[18] === b ? L = l[19] : (L = b > 0 && /* @__PURE__ */ jsx(SidebarMenuBadge, { children: b }), l[18] = b, l[19] = L);
129
+ u[18] === v ? L = u[19] : (L = v > 0 && /* @__PURE__ */ jsx(SidebarMenuBadge, { children: v }), u[18] = v, u[19] = L);
129
130
  let R;
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
+ u[20] !== I || u[21] !== L ? (R = /* @__PURE__ */ jsxs(SidebarMenuItem, { children: [I, L] }), u[20] = I, u[21] = L, u[22] = R) : R = u[22];
131
132
  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;
133
+ return u[23] !== R || u[24] !== j ? (z = /* @__PURE__ */ jsxs(SidebarGroup, { children: [S, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsxs(SidebarMenu, { children: [j, R] }) })] }), u[23] = R, u[24] = j, u[25] = z) : z = u[25], z;
133
134
  }, WorkspacesNav = () => {
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);
135
+ let u = c(10), d = useLocation(), { router: f } = useStudio(), p;
136
+ u[0] === f ? p = u[1] : (p = f.getWorkspaces(), u[0] = f, u[1] = p);
137
+ let m = p, h;
138
+ u[2] === Symbol.for("react.memo_cache_sentinel") ? (h = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Workspaces" }), u[2] = h) : h = u[2];
139
+ let g = d.pathname === m, _, v;
140
+ u[3] === Symbol.for("react.memo_cache_sentinel") ? (_ = /* @__PURE__ */ jsx(LayoutGrid, {}), v = /* @__PURE__ */ jsx("span", { children: "Workspaces" }), u[3] = _, u[4] = v) : (_ = u[3], v = u[4]);
145
141
  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, {
142
+ u[5] === m ? S = u[6] : (S = /* @__PURE__ */ jsxs(Link, {
143
+ to: m,
144
+ children: [_, v]
145
+ }), u[5] = m, u[6] = S);
146
+ let w;
147
+ return u[7] !== g || u[8] !== S ? (w = /* @__PURE__ */ jsxs(SidebarGroup, { children: [h, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
147
148
  asChild: !0,
148
- isActive: m,
149
- tooltip: "My Workspaces",
150
- children: b
151
- }) }) }) })] }), l[8] = m, l[9] = b, l[10] = S) : S = l[10], S;
152
- }, InsightsNav = () => {
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 = {
157
- label: "Dashboard",
158
- href: f,
159
- icon: LayoutDashboard
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);
163
- let h;
164
- l[6] === m ? h = l[7] : (h = {
165
- label: "Workflows",
166
- href: m,
167
- icon: Workflow
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];
173
- let T;
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, {
149
+ isActive: g,
150
+ tooltip: "Workspaces",
151
+ children: S
152
+ }) }) }) })] }), u[7] = g, u[8] = S, u[9] = w) : w = u[9], w;
153
+ }, FavouritesNav = () => {
154
+ let u = c(19), d = useLocation(), { router: p } = useStudio(), m;
155
+ u[0] === p ? m = u[1] : (m = p.getWorkspaces(), u[0] = p, u[1] = m);
156
+ let h = m, g;
157
+ u[2] === Symbol.for("react.memo_cache_sentinel") ? (g = { isFavourite: "true" }, u[2] = g) : g = u[2];
158
+ let _ = useFilterWorkspaces(void 0, g, "createdAt", "ASC", 0, 10), v;
159
+ u[3] === _.data?.data ? v = u[4] : (v = _.data?.data ?? [], u[3] = _.data?.data, u[4] = v);
160
+ let S = v;
161
+ if (S.length === 0) return null;
162
+ let w;
163
+ u[5] === Symbol.for("react.memo_cache_sentinel") ? (w = /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Favourites" }), u[5] = w) : w = u[5];
164
+ let D;
165
+ if (u[6] !== S || u[7] !== d || u[8] !== p) {
166
+ let e;
167
+ u[10] !== d || u[11] !== p ? (e = (e) => {
168
+ let u = p.getWorkspace(e.id);
169
+ return /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
170
+ asChild: !0,
171
+ isActive: d.pathname === u || d.pathname.startsWith(u + "/"),
172
+ tooltip: e.title,
173
+ children: /* @__PURE__ */ jsxs(Link, {
174
+ to: u,
175
+ children: [/* @__PURE__ */ jsx(Star, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", { children: e.title })]
176
+ })
177
+ }) }, e.id);
178
+ }, u[10] = d, u[11] = p, u[12] = e) : e = u[12], D = S.map(e), u[6] = S, u[7] = d, u[8] = p, u[9] = D;
179
+ } else D = u[9];
180
+ let O;
181
+ u[13] !== _.data?.total || u[14] !== h ? (O = (_.data?.total ?? 0) > 10 && /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
175
182
  asChild: !0,
176
- isActive: u.pathname === e.href,
177
- tooltip: e.label,
183
+ tooltip: "More favourites",
178
184
  children: /* @__PURE__ */ jsxs(Link, {
179
- to: e.href,
180
- children: [/* @__PURE__ */ jsx(e.icon, {}), /* @__PURE__ */ jsx("span", { children: e.label })]
185
+ to: h,
186
+ children: [/* @__PURE__ */ jsx(MoreHorizontal, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", { children: "More" })]
181
187
  })
182
- }) }, e.href)) }) })] }), l[12] = u, l[13] = b, l[14] = T) : T = l[14], T;
188
+ }) }), u[13] = _.data?.total, u[14] = h, u[15] = O) : O = u[15];
189
+ let k;
190
+ return u[16] !== D || u[17] !== O ? (k = /* @__PURE__ */ jsxs(SidebarGroup, { children: [w, /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsxs(SidebarMenu, { children: [D, O] }) })] }), u[16] = D, u[17] = O, u[18] = k) : k = u[18], k;
183
191
  }, DefaultSidebarFooter = () => {
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);
193
- let y;
194
- return l[6] !== m || l[7] !== v ? (y = /* @__PURE__ */ jsx(SidebarFooter, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
195
- asChild: !0,
196
- isActive: m,
197
- size: "sm",
198
- tooltip: "Info",
199
- children: v
200
- }) }) }) }), l[6] = m, l[7] = v, l[8] = y) : y = l[8], y;
192
+ let e = c(1), u;
193
+ return e[0] === Symbol.for("react.memo_cache_sentinel") ? (u = /* @__PURE__ */ jsx(SidebarFooter, {}), e[0] = u) : u = e[0], u;
201
194
  };
202
195
  const StudioSidebar = () => {
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: [
196
+ let e = c(13), d = useComponentOverrides(), f = useStudioOptional(), m = d.SidebarHeader ?? DefaultSidebarHeader, h = d.SidebarFooter ?? DefaultSidebarFooter, v;
197
+ e[0] === m ? v = e[1] : (v = /* @__PURE__ */ jsx(m, {}), e[0] = m, e[1] = v);
198
+ let y;
199
+ e[2] === f ? y = e[3] : (y = f && /* @__PURE__ */ jsxs(Fragment$1, { children: [
207
200
  /* @__PURE__ */ jsx(RunsNav, {}),
208
201
  /* @__PURE__ */ jsx(WorkspacesNav, {}),
209
- /* @__PURE__ */ jsx(InsightsNav, {})
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);
202
+ /* @__PURE__ */ jsx(FavouritesNav, {})
203
+ ] }), e[2] = f, e[3] = y);
213
204
  let b;
214
- e[6] !== g || e[7] !== f ? (b = f && /* @__PURE__ */ jsx(g, {}), e[6] = g, e[7] = f, e[8] = b) : b = e[8];
205
+ e[4] === y ? b = e[5] : (b = /* @__PURE__ */ jsx(SidebarContent, { children: y }), e[4] = y, e[5] = b);
215
206
  let x;
216
- return e[9] !== _ || e[10] !== y || e[11] !== b ? (x = /* @__PURE__ */ jsxs(Sidebar, {
207
+ e[6] !== h || e[7] !== f ? (x = f && /* @__PURE__ */ jsx(h, {}), e[6] = h, e[7] = f, e[8] = x) : x = e[8];
208
+ let S;
209
+ return e[9] !== v || e[10] !== b || e[11] !== x ? (S = /* @__PURE__ */ jsxs(Sidebar, {
217
210
  collapsible: "icon",
218
211
  children: [
219
- _,
220
- y,
221
- b
212
+ v,
213
+ b,
214
+ x
222
215
  ]
223
- }), e[9] = _, e[10] = y, e[11] = b, e[12] = x) : x = e[12], x;
216
+ }), e[9] = v, e[10] = b, e[11] = x, e[12] = S) : S = e[12], S;
224
217
  };
225
218
  export { StudioSidebar };
@@ -293,7 +293,7 @@ function SidebarGroup(t) {
293
293
  let g = c(8), _, v;
294
294
  g[0] === t ? (_ = g[1], v = g[2]) : ({className: _, ...v} = t, g[0] = t, g[1] = _, g[2] = v);
295
295
  let y;
296
- g[3] === _ ? y = g[4] : (y = cn("relative flex w-full min-w-0 flex-col p-1.5", _), g[3] = _, g[4] = y);
296
+ g[3] === _ ? y = g[4] : (y = cn("relative flex w-full min-w-0 flex-col p-1.5 group-data-[collapsible=icon]:p-1", _), g[3] = _, g[4] = y);
297
297
  let b;
298
298
  return g[5] !== v || g[6] !== y ? (b = /* @__PURE__ */ jsx("div", {
299
299
  "data-slot": "sidebar-group",
@@ -367,7 +367,7 @@ function SidebarMenuItem(t) {
367
367
  ...v
368
368
  }), g[5] = v, g[6] = y, g[7] = b) : b = g[7], b;
369
369
  }
370
- var sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm text-muted-foreground outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-accent/50 hover:text-accent-foreground focus-visible:ring-2 active:bg-accent/50 active:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-foreground data-[active=true]:font-medium data-[active=true]:text-background data-[state=open]:hover:bg-accent/50 data-[state=open]:hover:text-accent-foreground group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-5 [&>svg]:shrink-0", {
370
+ var sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm text-muted-foreground outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-accent/50 hover:text-accent-foreground focus-visible:ring-2 active:bg-accent/50 active:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-foreground data-[active=true]:font-medium data-[active=true]:text-background data-[state=open]:hover:bg-accent/50 data-[state=open]:hover:text-accent-foreground group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:p-2! group-data-[collapsible=icon]:relative group-data-[collapsible=icon]:[&>svg]:absolute group-data-[collapsible=icon]:[&>svg]:left-1/2 group-data-[collapsible=icon]:[&>svg]:top-1/2 group-data-[collapsible=icon]:[&>svg]:-translate-x-1/2 group-data-[collapsible=icon]:[&>svg]:-translate-y-1/2 group-data-[collapsible=icon]:[&>span]:hidden [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", {
371
371
  variants: {
372
372
  variant: {
373
373
  default: "hover:bg-accent/50 hover:text-accent-foreground",
@@ -1,35 +1,46 @@
1
1
  import { cn } from "../../lib/utils.js";
2
- import * as React$1 from "react";
2
+ import { c } from "react/compiler-runtime";
3
+ import "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import * as SliderPrimitive from "@radix-ui/react-slider";
5
- function Slider({ className: a, defaultValue: o, value: s, min: c = 0, max: l = 100, ...u }) {
6
- let d = React$1.useMemo(() => Array.isArray(s) ? s : Array.isArray(o) ? o : [c, l], [
7
- s,
8
- o,
9
- c,
10
- l
11
- ]);
12
- return /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
13
- "data-slot": "slider",
14
- defaultValue: o,
15
- value: s,
16
- min: c,
17
- max: l,
18
- className: cn("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col", a),
19
- ...u,
20
- children: [/* @__PURE__ */ jsx(SliderPrimitive.Track, {
21
- "data-slot": "slider-track",
22
- className: cn("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"),
23
- children: /* @__PURE__ */ jsx(SliderPrimitive.Range, {
24
- "data-slot": "slider-range",
25
- className: cn("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")
26
- })
27
- }), Array.from({ length: d.length }, (e, i) => /* @__PURE__ */ jsx(SliderPrimitive.Thumb, {
6
+ function Slider(a) {
7
+ let o = c(29), s, l, u, d, f, p;
8
+ o[0] === a ? (s = o[1], l = o[2], u = o[3], d = o[4], f = o[5], p = o[6]) : ({className: s, defaultValue: l, value: p, min: d, max: f, ...u} = a, o[0] = a, o[1] = s, o[2] = l, o[3] = u, o[4] = d, o[5] = f, o[6] = p);
9
+ let m = d === void 0 ? 0 : d, h = f === void 0 ? 100 : f, g;
10
+ o[7] !== l || o[8] !== h || o[9] !== m || o[10] !== p ? (g = Array.isArray(p) ? p : Array.isArray(l) ? l : [m, h], o[7] = l, o[8] = h, o[9] = m, o[10] = p, o[11] = g) : g = o[11];
11
+ let _ = g, v;
12
+ o[12] === s ? v = o[13] : (v = cn("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col", s), o[12] = s, o[13] = v);
13
+ let y;
14
+ o[14] === Symbol.for("react.memo_cache_sentinel") ? (y = cn("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"), o[14] = y) : y = o[14];
15
+ let b;
16
+ o[15] === Symbol.for("react.memo_cache_sentinel") ? (b = /* @__PURE__ */ jsx(SliderPrimitive.Track, {
17
+ "data-slot": "slider-track",
18
+ className: y,
19
+ children: /* @__PURE__ */ jsx(SliderPrimitive.Range, {
20
+ "data-slot": "slider-range",
21
+ className: cn("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")
22
+ })
23
+ }), o[15] = b) : b = o[15];
24
+ let x;
25
+ if (o[16] !== _.length || o[17] !== u) {
26
+ let e;
27
+ o[19] === u ? e = o[20] : (e = (e, i) => /* @__PURE__ */ jsx(SliderPrimitive.Thumb, {
28
28
  "data-slot": "slider-thumb",
29
29
  className: "border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50",
30
30
  "aria-label": u["aria-label"],
31
31
  "aria-labelledby": u["aria-labelledby"]
32
- }, i))]
33
- });
32
+ }, i), o[19] = u, o[20] = e), x = Array.from({ length: _.length }, e), o[16] = _.length, o[17] = u, o[18] = x;
33
+ } else x = o[18];
34
+ let S;
35
+ return o[21] !== l || o[22] !== h || o[23] !== m || o[24] !== u || o[25] !== v || o[26] !== x || o[27] !== p ? (S = /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
36
+ "data-slot": "slider",
37
+ defaultValue: l,
38
+ value: p,
39
+ min: m,
40
+ max: h,
41
+ className: v,
42
+ ...u,
43
+ children: [b, x]
44
+ }), o[21] = l, o[22] = h, o[23] = m, o[24] = u, o[25] = v, o[26] = x, o[27] = p, o[28] = S) : S = o[28], S;
34
45
  }
35
46
  export { Slider };
@@ -7,27 +7,29 @@ import React from "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import { MonitorPlay } from "lucide-react";
9
9
  const SandboxRun = (u) => {
10
- let d = c(12), { ui: f, disabled: p } = u, { openPreviewWithEnvironment: m, environments: h } = useWorkbenchLayout(), g = f?.slotId, _ = g ? h?.find((e) => e.slotId === g) : void 0, v = !!_, y = _?.envName ? `Open ${_.envName}` : "Open Sandbox", b;
11
- d[0] !== m || d[1] !== g ? (b = () => {
10
+ let d = c(15), { ui: f, disabled: p } = u, { openPreviewWithEnvironment: m, environments: h } = useWorkbenchLayout(), g = f?.slotId, _;
11
+ d[0] !== h || d[1] !== g ? (_ = g ? h?.find((t) => t.slotId === g) : void 0, d[0] = h, d[1] = g, d[2] = _) : _ = d[2];
12
+ let v = _, y = !!v, b = v?.envName ? `Open ${v.envName}` : "Open Sandbox", x;
13
+ d[3] !== m || d[4] !== g ? (x = () => {
12
14
  g && m(g);
13
- }, d[0] = m, d[1] = g, d[2] = b) : b = d[2];
14
- let x = b, S = p || !v, C;
15
- d[3] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ jsx(MonitorPlay, { className: "h-4 w-4" }), d[3] = C) : C = d[3];
16
- let w;
17
- d[4] !== x || d[5] !== S ? (w = /* @__PURE__ */ jsx(TooltipTrigger, {
15
+ }, d[3] = m, d[4] = g, d[5] = x) : x = d[5];
16
+ let S = x, C = p || !y, w;
17
+ d[6] === Symbol.for("react.memo_cache_sentinel") ? (w = /* @__PURE__ */ jsx(MonitorPlay, { className: "h-4 w-4" }), d[6] = w) : w = d[6];
18
+ let T;
19
+ d[7] !== S || d[8] !== C ? (T = /* @__PURE__ */ jsx(TooltipTrigger, {
18
20
  asChild: !0,
19
21
  children: /* @__PURE__ */ jsx(Button, {
20
22
  type: "button",
21
23
  variant: "default",
22
24
  size: "icon",
23
- disabled: S,
24
- onClick: x,
25
- children: C
25
+ disabled: C,
26
+ onClick: S,
27
+ children: w
26
28
  })
27
- }), d[4] = x, d[5] = S, d[6] = w) : w = d[6];
28
- let T;
29
- d[7] === y ? T = d[8] : (T = /* @__PURE__ */ jsx(TooltipContent, { children: y }), d[7] = y, d[8] = T);
29
+ }), d[7] = S, d[8] = C, d[9] = T) : T = d[9];
30
30
  let E;
31
- return d[9] !== w || d[10] !== T ? (E = /* @__PURE__ */ jsxs(Tooltip, { children: [w, T] }), d[9] = w, d[10] = T, d[11] = E) : E = d[11], E;
31
+ d[10] === b ? E = d[11] : (E = /* @__PURE__ */ jsx(TooltipContent, { children: b }), d[10] = b, d[11] = E);
32
+ let D;
33
+ return d[12] !== T || d[13] !== E ? (D = /* @__PURE__ */ jsxs(Tooltip, { children: [T, E] }), d[12] = T, d[13] = E, d[14] = D) : D = d[14], D;
32
34
  };
33
35
  export { SandboxRun };
@@ -1,5 +1,6 @@
1
1
  import "../../../components/ui/scroll-area.js";
2
2
  import "../providers/CodeExplorerProvider.js";
3
3
  import "./CodeExplorerTreeNode.js";
4
+ import { c } from "react/compiler-runtime";
4
5
  import { useMemo } from "react";
5
6
  import { jsx } from "react/jsx-runtime";
@@ -2,9 +2,9 @@ import { cn } from "../../../lib/utils.js";
2
2
  import { ScrollArea, ScrollBar } from "../../../components/ui/scroll-area.js";
3
3
  import MarkdownContent_default from "../../../components/dynamic-form/MarkdownContent.js";
4
4
  import { ReactFlowProvider } from "../../../node_modules/@xyflow/react/dist/esm/index.js";
5
- import { Tabs, TabsContent, TabsList, TabsTrigger } from "../../../components/ui/tabs.js";
6
5
  import ConfigFlowViewer_default from "../../debug/components/ConfigFlowViewer.js";
7
6
  import "../../debug/index.js";
7
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "../../../components/ui/tabs.js";
8
8
  import { c } from "react/compiler-runtime";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import { Loader2 } from "lucide-react";
@@ -3,49 +3,51 @@ import { c } from "react/compiler-runtime";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { Link } from "react-router-dom";
5
5
  function RunItem(a) {
6
- let o = c(26), { run: s, router: l } = a, u = {
6
+ let o = c(27), { run: s, router: l } = a, u;
7
+ o[0] === Symbol.for("react.memo_cache_sentinel") ? (u = {
7
8
  completed: "bg-green-50 text-green-900 border-green-200",
8
9
  failed: "bg-destructive/10 text-destructive border-destructive/20",
9
10
  canceled: "bg-orange-50 text-orange-900 border-orange-200",
10
11
  running: "bg-blue-50 text-blue-900 border-blue-200",
11
12
  paused: "bg-yellow-50 text-yellow-900 border-yellow-200",
12
13
  pending: "bg-muted text-muted-foreground border-border"
13
- }[s.status] || "bg-muted text-muted-foreground border-border", d;
14
- o[0] !== l || o[1] !== s.id ? (d = l.getWorkflow(s.id), o[0] = l, o[1] = s.id, o[2] = d) : d = o[2];
15
- let f = s.id, p = s.run ?? s.index ?? "?", m = s.title ? `(${s.title})` : "", h;
16
- o[3] !== p || o[4] !== m ? (h = /* @__PURE__ */ jsxs("h3", {
14
+ }, o[0] = u) : u = o[0];
15
+ let d = u[s.status] || "bg-muted text-muted-foreground border-border", f;
16
+ o[1] !== l || o[2] !== s.id ? (f = l.getWorkflow(s.id), o[1] = l, o[2] = s.id, o[3] = f) : f = o[3];
17
+ let p = s.id, m = s.run ?? s.index ?? "?", h = s.title ? `(${s.title})` : "", g;
18
+ o[4] !== m || o[5] !== h ? (g = /* @__PURE__ */ jsxs("h3", {
17
19
  className: "text-foreground group-hover:text-primary truncate font-semibold transition-colors",
18
20
  children: [
19
21
  "Run #",
20
- p,
22
+ m,
21
23
  " ",
22
- m
24
+ h
23
25
  ]
24
- }), o[3] = p, o[4] = m, o[5] = h) : h = o[5];
25
- let g = `rounded-full border px-2 py-1 text-xs whitespace-nowrap ${u}`, _;
26
- o[6] !== s.status || o[7] !== g ? (_ = /* @__PURE__ */ jsx(Badge, {
27
- className: g,
26
+ }), o[4] = m, o[5] = h, o[6] = g) : g = o[6];
27
+ let _ = `rounded-full border px-2 py-1 text-xs whitespace-nowrap ${d}`, v;
28
+ o[7] !== s.status || o[8] !== _ ? (v = /* @__PURE__ */ jsx(Badge, {
29
+ className: _,
28
30
  children: s.status
29
- }), o[6] = s.status, o[7] = g, o[8] = _) : _ = o[8];
30
- let v;
31
- o[9] === s.updatedAt ? v = o[10] : (v = new Date(s.updatedAt).toLocaleString(), o[9] = s.updatedAt, o[10] = v);
31
+ }), o[7] = s.status, o[8] = _, o[9] = v) : v = o[9];
32
32
  let y;
33
- o[11] === v ? y = o[12] : (y = /* @__PURE__ */ jsx("span", {
34
- className: "text-muted-foreground text-xs",
35
- children: v
36
- }), o[11] = v, o[12] = y);
33
+ o[10] === s.updatedAt ? y = o[11] : (y = new Date(s.updatedAt).toLocaleString(), o[10] = s.updatedAt, o[11] = y);
37
34
  let b;
38
- o[13] !== _ || o[14] !== y ? (b = /* @__PURE__ */ jsxs("div", {
39
- className: "mt-2 flex flex-wrap items-center gap-2",
40
- children: [_, y]
41
- }), o[13] = _, o[14] = y, o[15] = b) : b = o[15];
35
+ o[12] === y ? b = o[13] : (b = /* @__PURE__ */ jsx("span", {
36
+ className: "text-muted-foreground text-xs",
37
+ children: y
38
+ }), o[12] = y, o[13] = b);
42
39
  let x;
43
- o[16] !== b || o[17] !== h ? (x = /* @__PURE__ */ jsxs("div", {
44
- className: "min-w-0 flex-1 pr-2",
45
- children: [h, b]
46
- }), o[16] = b, o[17] = h, o[18] = x) : x = o[18];
40
+ o[14] !== b || o[15] !== v ? (x = /* @__PURE__ */ jsxs("div", {
41
+ className: "mt-2 flex flex-wrap items-center gap-2",
42
+ children: [v, b]
43
+ }), o[14] = b, o[15] = v, o[16] = x) : x = o[16];
47
44
  let S;
48
- o[19] === Symbol.for("react.memo_cache_sentinel") ? (S = /* @__PURE__ */ jsx("div", {
45
+ o[17] !== x || o[18] !== g ? (S = /* @__PURE__ */ jsxs("div", {
46
+ className: "min-w-0 flex-1 pr-2",
47
+ children: [g, x]
48
+ }), o[17] = x, o[18] = g, o[19] = S) : S = o[19];
49
+ let C;
50
+ o[20] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ jsx("div", {
49
51
  className: "ml-3 opacity-0 transition-opacity group-hover:opacity-100",
50
52
  children: /* @__PURE__ */ jsx("svg", {
51
53
  className: "text-muted-foreground h-4 w-4",
@@ -59,18 +61,18 @@ function RunItem(a) {
59
61
  d: "M9 5l7 7-7 7"
60
62
  })
61
63
  })
62
- }), o[19] = S) : S = o[19];
63
- let C;
64
- o[20] === x ? C = o[21] : (C = /* @__PURE__ */ jsxs("div", {
65
- className: "flex min-w-0 items-start justify-between",
66
- children: [x, S]
67
- }), o[20] = x, o[21] = C);
64
+ }), o[20] = C) : C = o[20];
68
65
  let w;
69
- return o[22] !== s.id || o[23] !== d || o[24] !== C ? (w = /* @__PURE__ */ jsx(Link, {
70
- to: d,
66
+ o[21] === S ? w = o[22] : (w = /* @__PURE__ */ jsxs("div", {
67
+ className: "flex min-w-0 items-start justify-between",
68
+ children: [S, C]
69
+ }), o[21] = S, o[22] = w);
70
+ let T;
71
+ return o[23] !== s.id || o[24] !== w || o[25] !== f ? (T = /* @__PURE__ */ jsx(Link, {
72
+ to: f,
71
73
  className: "bg-card border-border hover:border-primary/50 group block w-full overflow-hidden rounded-lg border p-4 transition-all duration-200 hover:shadow-md",
72
- children: C
73
- }, f), o[22] = s.id, o[23] = d, o[24] = C, o[25] = w) : w = o[25], w;
74
+ children: w
75
+ }, p), o[23] = s.id, o[24] = w, o[25] = f, o[26] = T) : T = o[26], T;
74
76
  }
75
77
  var RunItem_default = RunItem;
76
78
  export { RunItem_default as default };