@loopstack/loopstack-studio 0.23.1 → 0.25.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 (147) hide show
  1. package/dist/api/config.js +3 -3
  2. package/dist/api/index.js +10 -12
  3. package/dist/api/processor.js +1 -1
  4. package/dist/api/secrets.js +16 -0
  5. package/dist/api/workflows.js +7 -1
  6. package/dist/components/dynamic-form/ArrayController.js +68 -64
  7. package/dist/components/dynamic-form/CodeContent.js +3 -3
  8. package/dist/components/dynamic-form/Form.js +46 -40
  9. package/dist/components/dynamic-form/FormElement.js +1 -1
  10. package/dist/components/dynamic-form/FormElementHeader.js +2 -2
  11. package/dist/components/dynamic-form/ObjectController.js +24 -21
  12. package/dist/components/dynamic-form/fields/BaseFieldWrapper.js +1 -1
  13. package/dist/components/dynamic-form/fields/CodeViewField.js +36 -36
  14. package/dist/components/dynamic-form/fields/InputField.js +20 -19
  15. package/dist/components/dynamic-form/fields/RadioField.js +18 -18
  16. package/dist/components/dynamic-form/fields/SelectField.js +19 -19
  17. package/dist/components/dynamic-form/fields/TextareaField.js +17 -17
  18. package/dist/components/feedback/LoadingCentered.js +1 -1
  19. package/dist/components/layout/MainLayout.js +18 -31
  20. package/dist/components/layout/StudioSidebar.js +169 -109
  21. package/dist/components/loopstack-elements/link.js +77 -76
  22. package/dist/components/loopstack-elements/tool.js +171 -0
  23. package/dist/components/page/PageBreadcrumbs.js +79 -32
  24. package/dist/components/ui-widgets/UiActions.js +10 -4
  25. package/dist/components/ui-widgets/widgets/ButtonFullWidth.js +8 -6
  26. package/dist/components/ui-widgets/widgets/SubmitButton.js +8 -6
  27. package/dist/features/code-explorer/components/FileContentViewer.js +92 -100
  28. package/dist/features/dashboard/RunItem.js +1 -1
  29. package/dist/features/debug/components/ConfigFlowViewer.js +2 -2
  30. package/dist/features/debug/components/{PipelineDebugHeader.js → WorkflowDebugHeader.js} +5 -5
  31. package/dist/features/debug/components/{PipelineDebugLegend.js → WorkflowDebugLegend.js} +2 -2
  32. package/dist/features/debug/components/{PipelineFlowViewer.js → WorkflowFlowViewer.js} +9 -9
  33. package/dist/features/debug/components/workflow-flow/WorkflowGraph.js +46 -0
  34. package/dist/features/debug/index.js +2 -2
  35. package/dist/features/debug/lib/flow-utils.js +142 -150
  36. package/dist/features/documents/DocumentRenderer.js +66 -30
  37. package/dist/features/documents/components/DocumentItem.js +2 -2
  38. package/dist/features/documents/components/DocumentList.js +18 -11
  39. package/dist/features/documents/document-details/DocumentDetails.js +4 -4
  40. package/dist/features/documents/renderers/AiMessage.js +12 -12
  41. package/dist/features/documents/renderers/ChoicesRenderer.js +92 -0
  42. package/dist/features/documents/renderers/ClaudeMessage.js +1 -1
  43. package/dist/features/documents/renderers/ConfirmPromptRenderer.js +56 -0
  44. package/dist/features/documents/renderers/DocumentFormRenderer.js +95 -65
  45. package/dist/features/documents/renderers/LinkMessageRenderer.js +8 -10
  46. package/dist/features/documents/renderers/SecretInputRenderer.js +87 -0
  47. package/dist/features/documents/renderers/TextPromptRenderer.js +57 -0
  48. package/dist/features/documents/renderers/useDocumentTransition.js +30 -0
  49. package/dist/features/oauth/OAuthPromptRenderer.js +20 -20
  50. package/dist/features/runs/Runs.js +8 -8
  51. package/dist/features/workbench/Workbench.js +35 -35
  52. package/dist/features/workbench/WorkflowItem.js +10 -9
  53. package/dist/features/workbench/WorkflowList.js +56 -73
  54. package/dist/features/workbench/components/NewRunDialog.js +18 -18
  55. package/dist/features/workbench/components/WorkbenchFilesPanel.js +33 -26
  56. package/dist/features/workbench/components/WorkbenchFloatingPanel.js +13 -44
  57. package/dist/features/workbench/components/WorkbenchFlowPanel.js +27 -29
  58. package/dist/features/workbench/components/WorkbenchIconSidebar.js +17 -17
  59. package/dist/features/workbench/components/WorkbenchPreviewPanel.js +2 -2
  60. package/dist/features/workbench/components/WorkbenchSecretsPanel.js +182 -0
  61. package/dist/features/workbench/components/WorkbenchSettingsModal.js +16 -41
  62. package/dist/features/workbench/components/WorkflowForms.js +14 -13
  63. package/dist/features/workbench/components/WorkflowHistoryItem.js +60 -81
  64. package/dist/features/workbench/components/{PipelineHistoryList.js → WorkflowHistoryList.js} +5 -5
  65. package/dist/features/workbench/components/buttons/WorkflowButtons.js +56 -54
  66. package/dist/features/workbench/hooks/useWorkflowData.js +10 -10
  67. package/dist/features/workbench/hooks/useWorkflowListState.js +8 -45
  68. package/dist/features/workbench/index.js +2 -3
  69. package/dist/features/workbench/providers/RemoteFileExplorerProvider.js +132 -117
  70. package/dist/features/workbench/providers/ScrollProvider.js +2 -2
  71. package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +4 -4
  72. package/dist/features/workspaces/Workspaces.js +1 -1
  73. package/dist/features/workspaces/components/CreateWorkspace.js +12 -12
  74. package/dist/features/workspaces/components/ExecutionTimeline.js +22 -21
  75. package/dist/features/workspaces/components/{NewPipelineRunDialog.js → NewWorkflowRunDialog.js} +6 -6
  76. package/dist/features/workspaces/components/{PipelineForm.js → WorkflowRunForm.js} +31 -31
  77. package/dist/features/workspaces/components/WorkspaceHomePage.js +11 -11
  78. package/dist/features/workspaces/components/{pipeline-form → workflow-form}/ArgumentsView.js +1 -1
  79. package/dist/features/workspaces/components/{pipeline-form → workflow-form}/SelectionView.js +16 -16
  80. package/dist/hooks/index.js +3 -3
  81. package/dist/hooks/query-keys.js +34 -68
  82. package/dist/hooks/useConfig.js +5 -5
  83. package/dist/hooks/useProcessor.js +5 -5
  84. package/dist/hooks/useSecrets.js +69 -0
  85. package/dist/hooks/useWorkflows.js +155 -68
  86. package/dist/index.d.ts +158 -116
  87. package/dist/index.js +5 -5
  88. package/dist/packages/contracts/dist/enums/index.js +11 -12
  89. package/dist/packages/contracts/dist/enums/workflow-state.enum.js +1 -1
  90. package/dist/pages/DashboardPage.js +87 -35
  91. package/dist/pages/DebugWorkflowDetailsPage.js +8 -8
  92. package/dist/pages/DebugWorkflowsPage.js +10 -10
  93. package/dist/pages/EmbedWorkbenchPage.js +39 -45
  94. package/dist/pages/PreviewWorkbenchPage.js +130 -255
  95. package/dist/pages/RunsListPage.js +1 -1
  96. package/dist/pages/StudioLandingPage.js +13 -13
  97. package/dist/pages/WorkbenchPage.js +6 -6
  98. package/dist/pages/WorkflowDebugPage.js +114 -0
  99. package/dist/pages/WorkspacePage.js +4 -2
  100. package/dist/providers/InvalidationEventsProvider.js +19 -19
  101. package/dist/providers/SseProvider.js +0 -1
  102. package/dist/routing/LocalRouter.js +14 -17
  103. package/dist/types/ai.types.js +13 -0
  104. package/package.json +2 -3
  105. package/dist/api/namespaces.js +0 -7
  106. package/dist/api/pipelines.js +0 -13
  107. package/dist/components/ai-elements/tool.js +0 -158
  108. package/dist/features/debug/components/pipeline-flow/WorkflowGraph.js +0 -41
  109. package/dist/features/workbench/NavigationItems.js +0 -52
  110. package/dist/features/workbench/WorkbenchNavigation.js +0 -38
  111. package/dist/features/workbench/components/NavigationItem.js +0 -68
  112. package/dist/features/workbench/hooks/useIntersectionObserver.js +0 -44
  113. package/dist/hooks/useNamespaceTree.js +0 -27
  114. package/dist/hooks/useNamespaces.js +0 -25
  115. package/dist/hooks/usePipelines.js +0 -161
  116. package/dist/node_modules/@ai-sdk/provider/dist/index.js +0 -65
  117. package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +0 -1008
  118. package/dist/node_modules/ai/dist/index.js +0 -1083
  119. package/dist/node_modules/zod/v3/ZodError.js +0 -79
  120. package/dist/node_modules/zod/v3/errors.js +0 -6
  121. package/dist/node_modules/zod/v3/helpers/errorUtil.js +0 -5
  122. package/dist/node_modules/zod/v3/helpers/parseUtil.js +0 -90
  123. package/dist/node_modules/zod/v3/helpers/util.js +0 -72
  124. package/dist/node_modules/zod/v3/locales/en.js +0 -58
  125. package/dist/node_modules/zod/v3/types.js +0 -2425
  126. package/dist/node_modules/zod/v4/classic/errors.js +0 -21
  127. package/dist/node_modules/zod/v4/classic/iso.js +0 -29
  128. package/dist/node_modules/zod/v4/classic/parse.js +0 -4
  129. package/dist/node_modules/zod/v4/classic/schemas.js +0 -392
  130. package/dist/node_modules/zod/v4/core/api.js +0 -532
  131. package/dist/node_modules/zod/v4/core/checks.js +0 -283
  132. package/dist/node_modules/zod/v4/core/core.js +0 -44
  133. package/dist/node_modules/zod/v4/core/doc.js +0 -21
  134. package/dist/node_modules/zod/v4/core/errors.js +0 -40
  135. package/dist/node_modules/zod/v4/core/json-schema-processors.js +0 -305
  136. package/dist/node_modules/zod/v4/core/parse.js +0 -66
  137. package/dist/node_modules/zod/v4/core/regexes.js +0 -28
  138. package/dist/node_modules/zod/v4/core/registries.js +0 -38
  139. package/dist/node_modules/zod/v4/core/schemas.js +0 -863
  140. package/dist/node_modules/zod/v4/core/to-json-schema.js +0 -220
  141. package/dist/node_modules/zod/v4/core/util.js +0 -267
  142. package/dist/node_modules/zod/v4/core/versions.js +0 -6
  143. package/dist/packages/contracts/dist/enums/pipeline-state.js +0 -10
  144. package/dist/pages/PipelineDebugPage.js +0 -115
  145. /package/dist/features/debug/components/{pipeline-flow → workflow-flow}/StateNode.js +0 -0
  146. /package/dist/features/debug/components/{pipeline-flow → workflow-flow}/WorkflowTransitionEdge.js +0 -0
  147. /package/dist/features/workspaces/components/{pipeline-form → workflow-form}/HeaderSection.js +0 -0
@@ -0,0 +1,87 @@
1
+ import { Button } from "../../../components/ui/button.js";
2
+ import { Input } from "../../../components/ui/input.js";
3
+ import { Label } from "../../../components/ui/label.js";
4
+ import CompletionMessagePaper_default from "../../../components/messages/CompletionMessagePaper.js";
5
+ import { useRunWorkflow } from "../../../hooks/useProcessor.js";
6
+ import { useUpsertSecret } from "../../../hooks/useSecrets.js";
7
+ import { useWorkbenchLayout } from "../../workbench/providers/WorkbenchLayoutProvider.js";
8
+ import "../../workbench/index.js";
9
+ import React, { useState } from "react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ import { Info, KeyRound, Loader2 } from "lucide-react";
12
+ var SecretInputRenderer_default = ({ parentWorkflow: p, workflow: m, document: h, isActive: g }) => {
13
+ let _ = h.content.variables ?? [], v = (h.ui?.widgets)?.[0]?.options, y = v?.transition, b = v?.label ?? "Save & Continue", { workflow: x } = useWorkbenchLayout(), S = x?.workspaceId, C = useRunWorkflow(), w = useUpsertSecret(), T = m.availableTransitions?.map((e) => e.id) ?? [], [E, D] = useState(() => {
14
+ let e = {};
15
+ for (let d of _) e[d.key] = d.value ?? "";
16
+ return e;
17
+ }), [O, k] = useState(!1), A = !!y && T.includes(y), j = !g || !A, M = async () => {
18
+ if (!(!S || !y)) {
19
+ k(!0);
20
+ try {
21
+ let e = [];
22
+ for (let d of _) {
23
+ let f = E[d.key]?.trim();
24
+ !d.key.trim() || !f || (await w.mutateAsync({
25
+ workspaceId: S,
26
+ key: d.key,
27
+ value: f
28
+ }), e.push(d.key));
29
+ }
30
+ C.mutate({
31
+ workflowId: p.id,
32
+ runWorkflowPayloadDto: { transition: {
33
+ id: y,
34
+ workflowId: m.id,
35
+ payload: { keys: e }
36
+ } }
37
+ });
38
+ } finally {
39
+ k(!1);
40
+ }
41
+ }
42
+ };
43
+ return /* @__PURE__ */ jsx(CompletionMessagePaper_default, {
44
+ role: "document",
45
+ fullWidth: !0,
46
+ timestamp: new Date(h.createdAt),
47
+ children: /* @__PURE__ */ jsxs("div", {
48
+ className: "flex flex-col gap-4 p-1",
49
+ children: [
50
+ /* @__PURE__ */ jsx("div", {
51
+ className: "text-sm font-medium",
52
+ children: "Secrets"
53
+ }),
54
+ _.map((e) => /* @__PURE__ */ jsxs("div", {
55
+ className: "flex flex-col gap-1.5",
56
+ children: [/* @__PURE__ */ jsx(Label, {
57
+ className: "text-muted-foreground text-xs",
58
+ children: e.key
59
+ }), /* @__PURE__ */ jsx(Input, {
60
+ type: "password",
61
+ placeholder: "Enter value...",
62
+ value: E[e.key] ?? "",
63
+ onChange: (d) => D((f) => ({
64
+ ...f,
65
+ [e.key]: d.target.value
66
+ })),
67
+ disabled: j
68
+ })]
69
+ }, e.key)),
70
+ /* @__PURE__ */ jsxs("div", {
71
+ className: "text-muted-foreground flex items-center gap-2 text-xs",
72
+ children: [/* @__PURE__ */ jsx(Info, { className: "h-3.5 w-3.5 shrink-0" }), /* @__PURE__ */ jsx("span", { children: "To add or remove other secrets, use the Secrets panel in the right sidebar." })]
73
+ }),
74
+ /* @__PURE__ */ jsx("div", {
75
+ className: "flex justify-end",
76
+ children: /* @__PURE__ */ jsxs(Button, {
77
+ onClick: () => void M(),
78
+ disabled: j || O,
79
+ className: "w-48",
80
+ children: [O ? /* @__PURE__ */ jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx(KeyRound, { className: "mr-2 h-4 w-4" }), b]
81
+ })
82
+ })
83
+ ]
84
+ })
85
+ });
86
+ };
87
+ export { SecretInputRenderer_default as default };
@@ -0,0 +1,57 @@
1
+ import { Button } from "../../../components/ui/button.js";
2
+ import { Textarea } from "../../../components/ui/textarea.js";
3
+ import CompletionMessagePaper_default from "../../../components/messages/CompletionMessagePaper.js";
4
+ import MarkdownContent_default from "../../../components/dynamic-form/MarkdownContent.js";
5
+ import { useDocumentTransition } from "./useDocumentTransition.js";
6
+ import { c } from "react/compiler-runtime";
7
+ import React, { useState } from "react";
8
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
+ import { Loader2 } from "lucide-react";
10
+ var TextPromptRenderer_default = (f) => {
11
+ let p = c(20), { parentWorkflow: m, workflow: h, document: g, isActive: _ } = f, v = g.content, { submit: y, canSubmit: b, isLoading: x } = useDocumentTransition(m, h, g.ui), [S, C] = useState(""), w = !!v.answer, T = !_ || !b || w, E;
12
+ p[0] !== y || p[1] !== S ? (E = () => {
13
+ let e = S.trim();
14
+ e && y({ answer: e });
15
+ }, p[0] = y, p[1] = S, p[2] = E) : E = p[2];
16
+ let D = E, O;
17
+ p[3] === g.createdAt ? O = p[4] : (O = new Date(g.createdAt), p[3] = g.createdAt, p[4] = O);
18
+ let k;
19
+ p[5] === v.question ? k = p[6] : (k = /* @__PURE__ */ jsx(MarkdownContent_default, { content: v.question }), p[5] = v.question, p[6] = k);
20
+ let A;
21
+ p[7] !== v.answer || p[8] !== T || p[9] !== D || p[10] !== w || p[11] !== x || p[12] !== S ? (A = w ? /* @__PURE__ */ jsxs("div", {
22
+ className: "text-muted-foreground text-sm",
23
+ children: ["Answered: ", /* @__PURE__ */ jsx("span", {
24
+ className: "text-foreground font-medium",
25
+ children: v.answer
26
+ })]
27
+ }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Textarea, {
28
+ placeholder: "Type your answer...",
29
+ value: S,
30
+ onChange: (e) => C(e.target.value),
31
+ disabled: T,
32
+ rows: 3
33
+ }), /* @__PURE__ */ jsx("div", {
34
+ className: "flex justify-end",
35
+ children: /* @__PURE__ */ jsxs(Button, {
36
+ type: "button",
37
+ variant: "default",
38
+ disabled: T || x || !S.trim(),
39
+ onClick: D,
40
+ className: "w-48",
41
+ children: [x && /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Submit"]
42
+ })
43
+ })] }), p[7] = v.answer, p[8] = T, p[9] = D, p[10] = w, p[11] = x, p[12] = S, p[13] = A) : A = p[13];
44
+ let j;
45
+ p[14] !== k || p[15] !== A ? (j = /* @__PURE__ */ jsxs("div", {
46
+ className: "flex flex-col gap-4 p-1",
47
+ children: [k, A]
48
+ }), p[14] = k, p[15] = A, p[16] = j) : j = p[16];
49
+ let M;
50
+ return p[17] !== O || p[18] !== j ? (M = /* @__PURE__ */ jsx(CompletionMessagePaper_default, {
51
+ role: "document",
52
+ fullWidth: !0,
53
+ timestamp: O,
54
+ children: j
55
+ }), p[17] = O, p[18] = j, p[19] = M) : M = p[19], M;
56
+ };
57
+ export { TextPromptRenderer_default as default };
@@ -0,0 +1,30 @@
1
+ import { useRunWorkflow } from "../../../hooks/useProcessor.js";
2
+ import { useCallback } from "react";
3
+ function resolveTransition(e) {
4
+ let t = e, n = t?.widgets;
5
+ return n?.[0]?.options?.transition ? n[0].options.transition : (t?.actions)?.map((e) => e.options?.transition).find((e) => !!e);
6
+ }
7
+ function useDocumentTransition(r, i, a) {
8
+ let o = useRunWorkflow(), s = i.availableTransitions?.map((e) => e.id) ?? [], c = resolveTransition(a), l = !!c && s.includes(c);
9
+ return {
10
+ submit: useCallback((e) => {
11
+ !c || !l || o.mutate({
12
+ workflowId: r.id,
13
+ runWorkflowPayloadDto: { transition: {
14
+ id: c,
15
+ workflowId: i.id,
16
+ payload: e
17
+ } }
18
+ });
19
+ }, [
20
+ c,
21
+ l,
22
+ o,
23
+ r.id,
24
+ i.id
25
+ ]),
26
+ canSubmit: l,
27
+ isLoading: o.isPending
28
+ };
29
+ }
30
+ export { useDocumentTransition };
@@ -1,15 +1,15 @@
1
1
  import CompletionMessagePaper_default from "../../components/messages/CompletionMessagePaper.js";
2
- import { useRunPipeline } from "../../hooks/useProcessor.js";
2
+ import { useRunWorkflow } from "../../hooks/useProcessor.js";
3
3
  import { useOAuthPopup } from "./useOAuthPopup.js";
4
4
  import { c } from "react/compiler-runtime";
5
5
  import React, { useCallback, useEffect, useRef } from "react";
6
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
- var OAuthPromptRenderer = ({ pipeline: l, workflow: u, document: m, isActive: h }) => {
8
- let g = m.content, _ = (m.ui?.actions ?? []).map((e) => e.options?.transition).find((e) => !!e), v = useRunPipeline(), { result: y, open: b, reset: x } = useOAuthPopup(), S = useRef(!1), C = u.availableTransitions?.map((e) => e.id) ?? [], w = useCallback((e, o) => {
9
- !_ || !C.includes(_) || v.mutate({
10
- pipelineId: l.id,
11
- runPipelinePayloadDto: { transition: {
12
- id: _,
7
+ var OAuthPromptRenderer = ({ parentWorkflow: l, workflow: u, document: m, isActive: h }) => {
8
+ let g = m.content, _ = m.ui, v = (_?.widgets)?.[0]?.options?.transition ?? (_?.actions)?.map((e) => e.options?.transition).find((e) => !!e), y = useRunWorkflow(), { result: b, open: x, reset: S } = useOAuthPopup(), C = useRef(!1), w = u.availableTransitions?.map((e) => e.id) ?? [], T = useCallback((e, o) => {
9
+ !v || !w.includes(v) || y.mutate({
10
+ workflowId: l.id,
11
+ runWorkflowPayloadDto: { transition: {
12
+ id: v,
13
13
  workflowId: u.id,
14
14
  payload: {
15
15
  code: e,
@@ -18,22 +18,22 @@ var OAuthPromptRenderer = ({ pipeline: l, workflow: u, document: m, isActive: h
18
18
  } }
19
19
  });
20
20
  }, [
21
- _,
22
- C,
23
21
  v,
22
+ w,
23
+ y,
24
24
  l.id,
25
25
  u.id
26
26
  ]);
27
27
  useEffect(() => {
28
- y.status === "success" && !S.current && (S.current = !0, w(y.code, y.state));
29
- }, [y, w]);
30
- let T = () => {
31
- S.current = !1, b({
28
+ b.status === "success" && !C.current && (C.current = !0, T(b.code, b.state));
29
+ }, [b, T]);
30
+ let E = () => {
31
+ C.current = !1, x({
32
32
  authUrl: g.authUrl,
33
33
  state: g.state
34
34
  });
35
- }, E = () => {
36
- x(), S.current = !1, b({
35
+ }, D = () => {
36
+ S(), C.current = !1, x({
37
37
  authUrl: g.authUrl,
38
38
  state: g.state
39
39
  });
@@ -46,13 +46,13 @@ var OAuthPromptRenderer = ({ pipeline: l, workflow: u, document: m, isActive: h
46
46
  status: "error",
47
47
  provider: g.provider,
48
48
  message: g.message
49
- }), h && /* @__PURE__ */ jsx(RetryButton, { onClick: E })] }) : /* @__PURE__ */ jsx(CompletionMessagePaper_default, { children: /* @__PURE__ */ jsx(PopupResultView, {
50
- result: y,
49
+ }), h && /* @__PURE__ */ jsx(RetryButton, { onClick: D })] }) : /* @__PURE__ */ jsx(CompletionMessagePaper_default, { children: /* @__PURE__ */ jsx(PopupResultView, {
50
+ result: b,
51
51
  provider: g.provider,
52
52
  isActive: h,
53
- isSubmitting: v.isPending,
54
- onSignIn: T,
55
- onRetry: E
53
+ isSubmitting: y.isPending,
54
+ onSignIn: E,
55
+ onRetry: D
56
56
  }) });
57
57
  }, ProviderLabel = (e) => {
58
58
  let o = c(2), { provider: s } = e, u = s.charAt(0).toUpperCase() + s.slice(1), d;
@@ -1,5 +1,5 @@
1
1
  import { useStudio } from "../../providers/StudioProvider.js";
2
- import { useBatchDeletePipeline, useDeletePipeline, useFilterPipelines } from "../../hooks/usePipelines.js";
2
+ import { useBatchDeleteWorkflows, useDeleteWorkflow, useFilterWorkflows } from "../../hooks/useWorkflows.js";
3
3
  import { useFilterWorkspaces } from "../../hooks/useWorkspaces.js";
4
4
  import { Badge } from "../../components/ui/badge.js";
5
5
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../components/ui/tooltip.js";
@@ -23,9 +23,9 @@ var statusColors = {
23
23
  ...y,
24
24
  parentId: null
25
25
  }, r[2] = y, r[3] = x);
26
- let S = useFilterPipelines(me, x, p, h, l, d), C;
26
+ let S = useFilterWorkflows(me, x, p, h, l, d), C;
27
27
  r[4] === Symbol.for("react.memo_cache_sentinel") ? (C = {}, r[4] = C) : C = r[4];
28
- let w = useFilterWorkspaces(void 0, C, "title", "ASC", 0, 100), T = useDeletePipeline(), E = useBatchDeletePipeline(), D;
28
+ let w = useFilterWorkspaces(void 0, C, "title", "ASC", 0, 100), T = useDeleteWorkflow(), E = useBatchDeleteWorkflows(), D;
29
29
  if (r[5] !== w.data?.data) {
30
30
  D = /* @__PURE__ */ new Map();
31
31
  for (let e of w.data?.data ?? []) D.set(e.id, e.title);
@@ -38,7 +38,7 @@ var statusColors = {
38
38
  let j = A, M;
39
39
  if (r[11] !== S.data?.data) {
40
40
  let e = /* @__PURE__ */ new Set();
41
- for (let t of S.data?.data ?? []) t.blockName && e.add(t.blockName);
41
+ for (let t of S.data?.data ?? []) t.alias && e.add(t.alias);
42
42
  M = Array.from(e).sort(), r[11] = S.data?.data, r[12] = M;
43
43
  } else M = r[12];
44
44
  let N = M, P;
@@ -51,7 +51,7 @@ var statusColors = {
51
51
  }, r[15] = E, r[16] = I);
52
52
  let L = I, R;
53
53
  r[17] === s ? R = r[18] : (R = (e) => {
54
- s.navigateToPipeline(e);
54
+ s.navigateToWorkflow(e);
55
55
  }, r[17] = s, r[18] = R);
56
56
  let z = R, B = S.error ?? null, V;
57
57
  r[19] === S.data?.data ? V = r[20] : (V = S.data?.data ?? [], r[19] = S.data?.data, r[20] = V);
@@ -84,7 +84,7 @@ var statusColors = {
84
84
  }, r[22] = O, r[23] = W);
85
85
  let G, K, q, J;
86
86
  r[24] === Symbol.for("react.memo_cache_sentinel") ? (G = {
87
- id: "blockName",
87
+ id: "alias",
88
88
  label: "Type",
89
89
  minWidth: 100,
90
90
  format: (e) => {
@@ -95,7 +95,7 @@ var statusColors = {
95
95
  onClick: (e) => {
96
96
  e.stopPropagation(), b((e) => ({
97
97
  ...e,
98
- blockName: t
98
+ alias: t
99
99
  }));
100
100
  },
101
101
  children: t
@@ -139,7 +139,7 @@ var statusColors = {
139
139
  r[31] !== N || r[32] !== j ? (Q = {
140
140
  status: Z,
141
141
  workspaceId: j,
142
- blockName: N
142
+ alias: N
143
143
  }, r[31] = N, r[32] = j, r[33] = Q) : Q = r[33];
144
144
  let $;
145
145
  return r[34] !== S.isPending || r[35] !== y || r[36] !== L || r[37] !== F || r[38] !== z || r[39] !== h || r[40] !== p || r[41] !== l || r[42] !== d || r[43] !== _ || r[44] !== B || r[45] !== V || r[46] !== H || r[47] !== X || r[48] !== Q ? ($ = /* @__PURE__ */ jsx(ListView_default, {
@@ -1,59 +1,59 @@
1
1
  import { useWorkspace } from "../../hooks/useWorkspaces.js";
2
2
  import PageBreadcrumbs_default from "../../components/page/PageBreadcrumbs.js";
3
- import { WorkbenchLayoutProvider, useWorkbenchLayout } from "./providers/WorkbenchLayoutProvider.js";
4
3
  import WorkflowList_default from "./WorkflowList.js";
5
4
  import { RemoteFileExplorerProvider } from "./providers/RemoteFileExplorerProvider.js";
5
+ import { WorkbenchLayoutProvider, useWorkbenchLayout } from "./providers/WorkbenchLayoutProvider.js";
6
6
  import { WorkbenchFilesPanel } from "./components/WorkbenchFilesPanel.js";
7
- import { ScrollProvider } from "./providers/ScrollProvider.js";
8
7
  import { WorkbenchFloatingPanel } from "./components/WorkbenchFloatingPanel.js";
9
8
  import { WorkbenchFlowPanel } from "./components/WorkbenchFlowPanel.js";
10
9
  import { WorkbenchIconSidebar } from "./components/WorkbenchIconSidebar.js";
11
10
  import { WorkbenchPreviewPanel } from "./components/WorkbenchPreviewPanel.js";
11
+ import { ScrollProvider } from "./providers/ScrollProvider.js";
12
12
  import { c } from "react/compiler-runtime";
13
13
  import { jsx, jsxs } from "react/jsx-runtime";
14
14
  function WorkbenchContent(t) {
15
- let i = c(7), { pipeline: a, breadcrumbData: s } = t, l;
16
- i[0] === s ? l = i[1] : (l = /* @__PURE__ */ jsx("div", {
15
+ let a = c(7), { workflow: o, breadcrumbData: s } = t, l;
16
+ a[0] === s ? l = a[1] : (l = /* @__PURE__ */ jsx("div", {
17
17
  className: "border-b flex h-12 shrink-0 items-center",
18
18
  children: s ? /* @__PURE__ */ jsx(PageBreadcrumbs_default, { breadcrumbData: s }) : /* @__PURE__ */ jsx("span", {
19
19
  className: "px-3 text-sm font-medium",
20
20
  children: "Workflows"
21
21
  })
22
- }), i[0] = s, i[1] = l);
23
- let d;
24
- i[2] === a ? d = i[3] : (d = /* @__PURE__ */ jsx(ScrollProvider, { children: /* @__PURE__ */ jsx("div", {
22
+ }), a[0] = s, a[1] = l);
23
+ let u;
24
+ a[2] === o ? u = a[3] : (u = /* @__PURE__ */ jsx(ScrollProvider, { children: /* @__PURE__ */ jsx("div", {
25
25
  className: "flex-1 overflow-auto",
26
- children: /* @__PURE__ */ jsx(WorkflowList_default, { pipeline: a })
27
- }) }), i[2] = a, i[3] = d);
28
- let f;
29
- return i[4] !== l || i[5] !== d ? (f = /* @__PURE__ */ jsx("div", {
26
+ children: /* @__PURE__ */ jsx(WorkflowList_default, { workflow: o })
27
+ }) }), a[2] = o, a[3] = u);
28
+ let d;
29
+ return a[4] !== l || a[5] !== u ? (d = /* @__PURE__ */ jsx("div", {
30
30
  className: "flex h-full flex-col",
31
31
  children: /* @__PURE__ */ jsx("div", {
32
32
  className: "flex flex-1 gap-4 overflow-hidden md:flex-row flex-col",
33
33
  children: /* @__PURE__ */ jsxs("div", {
34
34
  className: "flex flex-1 flex-col overflow-hidden",
35
- children: [l, d]
35
+ children: [l, u]
36
36
  })
37
37
  })
38
- }), i[4] = l, i[5] = d, i[6] = f) : f = i[6], f;
38
+ }), a[4] = l, a[5] = u, a[6] = d) : d = a[6], d;
39
39
  }
40
40
  function WorkbenchInner(t) {
41
- let r = c(21), { pipeline: i, breadcrumbData: o } = t, { activeSidePanel: s } = useWorkbenchLayout(), u = s ? "w-1/2 overflow-hidden" : "w-full overflow-hidden", _;
42
- r[0] !== o || r[1] !== i ? (_ = /* @__PURE__ */ jsx(WorkbenchContent, {
43
- pipeline: i,
44
- breadcrumbData: o
45
- }), r[0] = o, r[1] = i, r[2] = _) : _ = r[2];
41
+ let r = c(21), { workflow: i, breadcrumbData: a } = t, { activeSidePanel: o } = useWorkbenchLayout(), m = o ? "w-1/2 overflow-hidden" : "w-full overflow-hidden", _;
42
+ r[0] !== a || r[1] !== i ? (_ = /* @__PURE__ */ jsx(WorkbenchContent, {
43
+ workflow: i,
44
+ breadcrumbData: a
45
+ }), r[0] = a, r[1] = i, r[2] = _) : _ = r[2];
46
46
  let v;
47
- r[3] !== u || r[4] !== _ ? (v = /* @__PURE__ */ jsx("div", {
48
- className: u,
47
+ r[3] !== m || r[4] !== _ ? (v = /* @__PURE__ */ jsx("div", {
48
+ className: m,
49
49
  children: _
50
- }), r[3] = u, r[4] = _, r[5] = v) : v = r[5];
50
+ }), r[3] = m, r[4] = _, r[5] = v) : v = r[5];
51
51
  let y;
52
- r[6] === s ? y = r[7] : (y = s === "preview" && /* @__PURE__ */ jsx(WorkbenchPreviewPanel, {}), r[6] = s, r[7] = y);
52
+ r[6] === o ? y = r[7] : (y = o === "preview" && /* @__PURE__ */ jsx(WorkbenchPreviewPanel, {}), r[6] = o, r[7] = y);
53
53
  let b;
54
- r[8] === s ? b = r[9] : (b = s === "flow" && /* @__PURE__ */ jsx(WorkbenchFlowPanel, {}), r[8] = s, r[9] = b);
54
+ r[8] === o ? b = r[9] : (b = o === "flow" && /* @__PURE__ */ jsx(WorkbenchFlowPanel, {}), r[8] = o, r[9] = b);
55
55
  let x;
56
- r[10] === s ? x = r[11] : (x = s === "files" && /* @__PURE__ */ jsx(WorkbenchFilesPanel, {}), r[10] = s, r[11] = x);
56
+ r[10] === o ? x = r[11] : (x = o === "files" && /* @__PURE__ */ jsx(WorkbenchFilesPanel, {}), r[10] = o, r[11] = x);
57
57
  let S;
58
58
  r[12] === Symbol.for("react.memo_cache_sentinel") ? (S = /* @__PURE__ */ jsx(WorkbenchFloatingPanel, {}), r[12] = S) : S = r[12];
59
59
  let C;
@@ -76,24 +76,24 @@ function WorkbenchInner(t) {
76
76
  }), r[19] = C, r[20] = T), T;
77
77
  }
78
78
  function Workbench(r) {
79
- let a = c(20), { pipeline: o, breadcrumbData: l, previewPanelOpen: u, onPreviewPanelOpenChange: d, isDeveloperMode: f, getPreviewUrl: p, getEnvironmentPreviewUrl: m, environments: h } = r, g = o?.workspaceId, v = useWorkspace(g), y;
80
- a[0] !== h?.[0]?.slotId || a[1] !== v.data?.features?.fileExplorer?.enabled || a[2] !== v.data?.features?.fileExplorer?.environments ? (y = v.data?.features?.fileExplorer?.enabled && v.data?.features?.fileExplorer?.environments?.includes(h?.[0]?.slotId ?? ""), a[0] = h?.[0]?.slotId, a[1] = v.data?.features?.fileExplorer?.enabled, a[2] = v.data?.features?.fileExplorer?.environments, a[3] = y) : y = a[3];
79
+ let i = c(20), { workflow: s, breadcrumbData: l, previewPanelOpen: u, onPreviewPanelOpenChange: d, isDeveloperMode: f, getPreviewUrl: p, getEnvironmentPreviewUrl: m, environments: h } = r, g = s?.workspaceId, v = useWorkspace(g), y;
80
+ i[0] !== h?.[0]?.slotId || i[1] !== v.data?.features?.fileExplorer?.enabled || i[2] !== v.data?.features?.fileExplorer?.environments ? (y = v.data?.features?.fileExplorer?.enabled && v.data?.features?.fileExplorer?.environments?.includes(h?.[0]?.slotId ?? ""), i[0] = h?.[0]?.slotId, i[1] = v.data?.features?.fileExplorer?.enabled, i[2] = v.data?.features?.fileExplorer?.environments, i[3] = y) : y = i[3];
81
81
  let b = y, x;
82
- a[4] === v.data ? x = a[5] : (x = v.data ? {
82
+ i[4] === v.data ? x = i[5] : (x = v.data ? {
83
83
  volumes: v.data.volumes,
84
84
  features: v.data.features
85
- } : void 0, a[4] = v.data, a[5] = x);
85
+ } : void 0, i[4] = v.data, i[5] = x);
86
86
  let S = x, C = h ?? v.data?.environments, w;
87
- a[6] !== l || a[7] !== b || a[8] !== o ? (w = b ? /* @__PURE__ */ jsx(RemoteFileExplorerProvider, { children: /* @__PURE__ */ jsx(WorkbenchInner, {
88
- pipeline: o,
87
+ i[6] !== l || i[7] !== b || i[8] !== s ? (w = b ? /* @__PURE__ */ jsx(RemoteFileExplorerProvider, { children: /* @__PURE__ */ jsx(WorkbenchInner, {
88
+ workflow: s,
89
89
  breadcrumbData: l
90
90
  }) }) : /* @__PURE__ */ jsx(WorkbenchInner, {
91
- pipeline: o,
91
+ workflow: s,
92
92
  breadcrumbData: l
93
- }), a[6] = l, a[7] = b, a[8] = o, a[9] = w) : w = a[9];
93
+ }), i[6] = l, i[7] = b, i[8] = s, i[9] = w) : w = i[9];
94
94
  let T;
95
- return a[10] !== m || a[11] !== p || a[12] !== f || a[13] !== d || a[14] !== o || a[15] !== u || a[16] !== C || a[17] !== w || a[18] !== S ? (T = /* @__PURE__ */ jsx(WorkbenchLayoutProvider, {
96
- pipeline: o,
95
+ return i[10] !== m || i[11] !== p || i[12] !== f || i[13] !== d || i[14] !== u || i[15] !== C || i[16] !== w || i[17] !== s || i[18] !== S ? (T = /* @__PURE__ */ jsx(WorkbenchLayoutProvider, {
96
+ workflow: s,
97
97
  isDeveloperMode: f,
98
98
  workspaceConfig: S,
99
99
  getPreviewUrl: p,
@@ -102,6 +102,6 @@ function Workbench(r) {
102
102
  previewPanelOpen: u,
103
103
  onPreviewPanelOpenChange: d,
104
104
  children: w
105
- }), a[10] = m, a[11] = p, a[12] = f, a[13] = d, a[14] = o, a[15] = u, a[16] = C, a[17] = w, a[18] = S, a[19] = T) : T = a[19], T;
105
+ }), i[10] = m, i[11] = p, i[12] = f, i[13] = d, i[14] = u, i[15] = C, i[16] = w, i[17] = s, i[18] = S, i[19] = T) : T = i[19], T;
106
106
  }
107
107
  export { Workbench as default };
@@ -11,7 +11,7 @@ import React, { useEffect } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
12
  import { useParams } from "react-router-dom";
13
13
  var WorkflowItem_default = (p) => {
14
- let m = c(45), { pipeline: h, workflowId: g, scrollTo: _, settings: v, embed: y } = p, { workflowId: b, clickId: x } = useParams(), S;
14
+ let m = c(46), { workflow: h, workflowId: g, scrollTo: _, settings: v, embed: y } = p, { workflowId: b, clickId: x } = useParams(), S;
15
15
  m[0] !== v.showFullMessageHistory || m[1] !== g ? (S = {
16
16
  workflowId: g,
17
17
  showFullMessageHistory: v.showFullMessageHistory
@@ -38,26 +38,27 @@ var WorkflowItem_default = (p) => {
38
38
  let B;
39
39
  m[22] === E ? B = m[23] : (B = /* @__PURE__ */ jsx(ErrorAlert_default, { error: E }), m[22] = E, m[23] = B);
40
40
  let V;
41
- m[24] !== D || m[25] !== j || m[26] !== h || m[27] !== _ || m[28] !== v || m[29] !== C || m[30] !== T ? (V = T && C && /* @__PURE__ */ jsx(DocumentList_default, {
42
- pipeline: h,
43
- workflow: C,
41
+ m[24] !== C || m[25] !== D || m[26] !== j || m[27] !== _ || m[28] !== v || m[29] !== h || m[30] !== T ? (V = T && C && /* @__PURE__ */ jsx(DocumentList_default, {
42
+ workflow: h,
43
+ childWorkflow: C,
44
44
  documents: D,
45
45
  scrollTo: _,
46
46
  settings: v,
47
47
  isLoading: j
48
- }), m[24] = D, m[25] = j, m[26] = h, m[27] = _, m[28] = v, m[29] = C, m[30] = T, m[31] = V) : V = m[31];
48
+ }), m[24] = C, m[25] = D, m[26] = j, m[27] = _, m[28] = v, m[29] = h, m[30] = T, m[31] = V) : V = m[31];
49
49
  let H;
50
50
  m[32] === j ? H = m[33] : (H = /* @__PURE__ */ jsx(LoadingCentered_default, { loading: j }), m[32] = j, m[33] = H);
51
51
  let U;
52
- m[34] !== M || m[35] !== C ? (U = !!C && /* @__PURE__ */ jsx("div", {
52
+ m[34] !== C || m[35] !== M || m[36] !== h ? (U = !!C && /* @__PURE__ */ jsx("div", {
53
53
  className: "mt-6",
54
54
  children: /* @__PURE__ */ jsx(WorkflowForms_default, {
55
55
  workflow: C,
56
+ parentWorkflow: h,
56
57
  onSubmit: M
57
58
  })
58
- }), m[34] = M, m[35] = C, m[36] = U) : U = m[36];
59
+ }), m[34] = C, m[35] = M, m[36] = h, m[37] = U) : U = m[37];
59
60
  let W;
60
- return m[37] !== V || m[38] !== H || m[39] !== U || m[40] !== I || m[41] !== R || m[42] !== z || m[43] !== B ? (W = /* @__PURE__ */ jsxs("div", {
61
+ return m[38] !== V || m[39] !== H || m[40] !== U || m[41] !== I || m[42] !== R || m[43] !== z || m[44] !== B ? (W = /* @__PURE__ */ jsxs("div", {
61
62
  className: I,
62
63
  children: [
63
64
  R,
@@ -67,6 +68,6 @@ var WorkflowItem_default = (p) => {
67
68
  H,
68
69
  U
69
70
  ]
70
- }), m[37] = V, m[38] = H, m[39] = U, m[40] = I, m[41] = R, m[42] = z, m[43] = B, m[44] = W) : W = m[44], W;
71
+ }), m[38] = V, m[39] = H, m[40] = U, m[41] = I, m[42] = R, m[43] = z, m[44] = B, m[45] = W) : W = m[45], W;
71
72
  };
72
73
  export { WorkflowItem_default as default };
@@ -1,8 +1,5 @@
1
- import { cn } from "../../lib/utils.js";
1
+ import { useWorkflowConfigByName } from "../../hooks/useWorkflows.js";
2
2
  import { Button } from "../../components/ui/button.js";
3
- import LoadingCentered_default from "../../components/feedback/LoadingCentered.js";
4
- import ErrorSnackbar_default from "../../components/feedback/ErrorSnackbar.js";
5
- import { useFetchWorkflowsByPipeline } from "../../hooks/useWorkflows.js";
6
3
  import WorkflowItem_default from "./WorkflowItem.js";
7
4
  import WorkbenchSettingsModal_default from "./components/WorkbenchSettingsModal.js";
8
5
  import WorkflowButtons_default from "./components/buttons/WorkflowButtons.js";
@@ -10,81 +7,67 @@ import { useWorkflowListState } from "./hooks/useWorkflowListState.js";
10
7
  import { c } from "react/compiler-runtime";
11
8
  import React, { useState } from "react";
12
9
  import { jsx, jsxs } from "react/jsx-runtime";
13
- import { ArrowDownIcon, ChevronRightIcon, Play } from "lucide-react";
14
- var WorkflowList_default = (_) => {
15
- let v = c(24), { pipeline: y } = _, b = useFetchWorkflowsByPipeline(y.id), [x, S] = useState(!1), C;
16
- v[0] === Symbol.for("react.memo_cache_sentinel") ? (C = {
10
+ import { ArrowDownIcon } from "lucide-react";
11
+ var WorkflowList_default = (f) => {
12
+ let p = c(26), { workflow: m } = f, [h, g] = useState(!1), _;
13
+ p[0] === Symbol.for("react.memo_cache_sentinel") ? (_ = {
17
14
  enableDebugMode: !1,
18
15
  showFullMessageHistory: !1
19
- }, v[0] = C) : C = v[0];
20
- let [w, T] = useState(C), { activeId: E, expandedSections: D, observe: O, listRef: k, scrollTo: A, canScrollDown: j, scrollToBottom: M, toggleSection: N } = useWorkflowListState(b.data), P;
21
- v[1] !== j || v[2] !== M ? (P = j && /* @__PURE__ */ jsx(Button, {
16
+ }, p[0] = _) : _ = p[0];
17
+ let [v, y] = useState(_), { listRef: b, scrollTo: x, canScrollDown: S, scrollToBottom: C } = useWorkflowListState(), w = useWorkflowConfigByName(m.className ?? void 0), T;
18
+ p[1] !== S || p[2] !== C ? (T = S && /* @__PURE__ */ jsx(Button, {
22
19
  variant: "outline",
23
20
  size: "icon",
24
- onClick: M,
21
+ onClick: C,
25
22
  className: "bg-background/80 fixed right-[calc(var(--sidebar-width)+1.5rem)] bottom-6 z-50 rounded-full shadow-md backdrop-blur-sm",
26
23
  children: /* @__PURE__ */ jsx(ArrowDownIcon, { className: "size-4" })
27
- }), v[1] = j, v[2] = M, v[3] = P) : P = v[3];
28
- let F;
29
- v[4] === b.isLoading ? F = v[5] : (F = /* @__PURE__ */ jsx(LoadingCentered_default, { loading: b.isLoading }), v[4] = b.isLoading, v[5] = F);
30
- let I;
31
- v[6] === b.error ? I = v[7] : (I = /* @__PURE__ */ jsx(ErrorSnackbar_default, { error: b.error }), v[6] = b.error, v[7] = I);
32
- let L;
33
- v[8] !== E || v[9] !== D || v[10] !== b.data || v[11] !== k || v[12] !== O || v[13] !== x || v[14] !== y || v[15] !== A || v[16] !== w || v[17] !== N ? (L = b.data ? /* @__PURE__ */ jsx("div", {
24
+ }), p[1] = S, p[2] = C, p[3] = T) : T = p[3];
25
+ let E = w.data?.title ?? m.alias, D;
26
+ p[4] === E ? D = p[5] : (D = /* @__PURE__ */ jsx("span", {
27
+ className: "flex-1 truncate text-sm",
28
+ children: E
29
+ }), p[4] = E, p[5] = D);
30
+ let O;
31
+ p[6] === m ? O = p[7] : (O = /* @__PURE__ */ jsx(WorkflowButtons_default, {
32
+ workflow: m,
33
+ workflowId: m.id
34
+ }), p[6] = m, p[7] = O);
35
+ let k;
36
+ p[8] !== h || p[9] !== v ? (k = /* @__PURE__ */ jsx(WorkbenchSettingsModal_default, {
37
+ settings: v,
38
+ onSettingsChange: y,
39
+ open: h,
40
+ onOpenChange: g
41
+ }), p[8] = h, p[9] = v, p[10] = k) : k = p[10];
42
+ let A;
43
+ p[11] !== D || p[12] !== O || p[13] !== k ? (A = /* @__PURE__ */ jsx("div", {
44
+ className: "bg-background/95 supports-[backdrop-filter]:bg-background/60 sticky top-0 z-10 backdrop-blur",
45
+ children: /* @__PURE__ */ jsxs("div", {
46
+ className: "flex w-full items-center gap-2 rounded-md p-2 px-3 text-left text-sm font-medium",
47
+ children: [
48
+ D,
49
+ O,
50
+ k
51
+ ]
52
+ })
53
+ }), p[11] = D, p[12] = O, p[13] = k, p[14] = A) : A = p[14];
54
+ let j;
55
+ p[15] !== x || p[16] !== v || p[17] !== m ? (j = /* @__PURE__ */ jsx("div", {
56
+ className: "max-w-4xl py-1",
57
+ children: /* @__PURE__ */ jsx(WorkflowItem_default, {
58
+ workflow: m,
59
+ workflowId: m.id,
60
+ scrollTo: x,
61
+ settings: v
62
+ })
63
+ }), p[15] = x, p[16] = v, p[17] = m, p[18] = j) : j = p[18];
64
+ let M;
65
+ p[19] !== b || p[20] !== A || p[21] !== j ? (M = /* @__PURE__ */ jsxs("div", {
34
66
  className: "mb-10",
35
- ref: k,
36
- children: /* @__PURE__ */ jsx("div", { children: b.data.map((f) => {
37
- let p = `section-${f.index}-${f.id}`, m = E === p, h = b.data.length === 1, g = h || D[p];
38
- return /* @__PURE__ */ jsxs("div", {
39
- ref: (i) => O(i),
40
- "data-id": p,
41
- children: [/* @__PURE__ */ jsx("div", {
42
- className: "bg-background/95 supports-[backdrop-filter]:bg-background/60 sticky top-0 z-10 backdrop-blur",
43
- children: /* @__PURE__ */ jsxs("div", {
44
- role: "button",
45
- tabIndex: h ? void 0 : 0,
46
- className: cn("flex w-full items-center gap-2 rounded-md p-2 px-3 text-left text-sm font-medium", !h && "hover:bg-accent hover:text-accent-foreground cursor-pointer", h && "cursor-default"),
47
- onClick: h ? void 0 : () => N(p),
48
- onKeyDown: h ? void 0 : (i) => {
49
- (i.key === "Enter" || i.key === " ") && (i.preventDefault(), N(p));
50
- },
51
- children: [
52
- /* @__PURE__ */ jsx(Play, { className: "text-primary h-3.5 w-3.5 fill-current" }),
53
- /* @__PURE__ */ jsx("span", {
54
- className: "flex-1 truncate text-sm",
55
- children: f.title ?? f.blockName
56
- }),
57
- /* @__PURE__ */ jsx(WorkflowButtons_default, {
58
- pipeline: y,
59
- workflowId: f.id
60
- }),
61
- m && /* @__PURE__ */ jsx(WorkbenchSettingsModal_default, {
62
- settings: w,
63
- onSettingsChange: T,
64
- open: x,
65
- onOpenChange: S
66
- }),
67
- !h && /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn("text-muted-foreground h-3.5 w-3.5 transition-transform", g && "rotate-90") })
68
- ]
69
- })
70
- }), g && /* @__PURE__ */ jsx("div", {
71
- className: "max-w-4xl py-1",
72
- children: /* @__PURE__ */ jsx(WorkflowItem_default, {
73
- pipeline: y,
74
- workflowId: f.id,
75
- scrollTo: A,
76
- settings: w
77
- })
78
- })]
79
- }, f.id);
80
- }) })
81
- }) : null, v[8] = E, v[9] = D, v[10] = b.data, v[11] = k, v[12] = O, v[13] = x, v[14] = y, v[15] = A, v[16] = w, v[17] = N, v[18] = L) : L = v[18];
82
- let R;
83
- return v[19] !== P || v[20] !== F || v[21] !== I || v[22] !== L ? (R = /* @__PURE__ */ jsxs("div", { children: [
84
- P,
85
- F,
86
- I,
87
- L
88
- ] }), v[19] = P, v[20] = F, v[21] = I, v[22] = L, v[23] = R) : R = v[23], R;
67
+ ref: b,
68
+ children: [A, j]
69
+ }), p[19] = b, p[20] = A, p[21] = j, p[22] = M) : M = p[22];
70
+ let N;
71
+ return p[23] !== T || p[24] !== M ? (N = /* @__PURE__ */ jsxs("div", { children: [T, M] }), p[23] = T, p[24] = M, p[25] = N) : N = p[25], N;
89
72
  };
90
73
  export { WorkflowList_default as default };