@loopstack/loopstack-studio 0.24.0 → 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 (105) hide show
  1. package/dist/api/config.js +3 -3
  2. package/dist/api/index.js +9 -13
  3. package/dist/api/processor.js +1 -1
  4. package/dist/api/workflows.js +7 -1
  5. package/dist/components/dynamic-form/CodeContent.js +3 -3
  6. package/dist/components/dynamic-form/fields/CodeViewField.js +36 -36
  7. package/dist/components/feedback/LoadingCentered.js +1 -1
  8. package/dist/components/layout/StudioSidebar.js +2 -2
  9. package/dist/components/loopstack-elements/link.js +77 -76
  10. package/dist/components/loopstack-elements/tool.js +171 -0
  11. package/dist/components/ui-widgets/UiActions.js +10 -4
  12. package/dist/components/ui-widgets/UiWidget.js +27 -36
  13. package/dist/components/ui-widgets/widgets/ButtonFullWidth.js +8 -6
  14. package/dist/components/ui-widgets/widgets/SubmitButton.js +8 -6
  15. package/dist/features/code-explorer/components/FileContentViewer.js +87 -112
  16. package/dist/features/dashboard/RunItem.js +1 -1
  17. package/dist/features/debug/components/ConfigFlowViewer.js +2 -2
  18. package/dist/features/debug/components/{PipelineDebugHeader.js → WorkflowDebugHeader.js} +5 -5
  19. package/dist/features/debug/components/{PipelineDebugLegend.js → WorkflowDebugLegend.js} +2 -2
  20. package/dist/features/debug/components/{PipelineFlowViewer.js → WorkflowFlowViewer.js} +9 -9
  21. package/dist/features/debug/components/workflow-flow/WorkflowGraph.js +46 -0
  22. package/dist/features/debug/index.js +2 -2
  23. package/dist/features/debug/lib/flow-utils.js +142 -150
  24. package/dist/features/documents/DocumentRenderer.js +66 -30
  25. package/dist/features/documents/components/DocumentItem.js +2 -2
  26. package/dist/features/documents/components/DocumentList.js +15 -12
  27. package/dist/features/documents/document-details/DocumentDetails.js +4 -4
  28. package/dist/features/documents/renderers/AiMessage.js +1 -1
  29. package/dist/features/documents/renderers/ChoicesRenderer.js +92 -0
  30. package/dist/features/documents/renderers/ClaudeMessage.js +1 -1
  31. package/dist/features/documents/renderers/ConfirmPromptRenderer.js +56 -0
  32. package/dist/features/documents/renderers/DocumentFormRenderer.js +95 -71
  33. package/dist/features/documents/renderers/LinkMessageRenderer.js +8 -10
  34. package/dist/features/documents/renderers/SecretInputRenderer.js +87 -0
  35. package/dist/features/documents/renderers/TextPromptRenderer.js +57 -0
  36. package/dist/features/documents/renderers/useDocumentTransition.js +30 -0
  37. package/dist/features/oauth/OAuthPromptRenderer.js +20 -20
  38. package/dist/features/runs/Runs.js +8 -8
  39. package/dist/features/workbench/Workbench.js +35 -35
  40. package/dist/features/workbench/WorkflowItem.js +10 -9
  41. package/dist/features/workbench/WorkflowList.js +56 -73
  42. package/dist/features/workbench/components/NewRunDialog.js +18 -18
  43. package/dist/features/workbench/components/WorkbenchFilesPanel.js +1 -1
  44. package/dist/features/workbench/components/WorkbenchFloatingPanel.js +33 -72
  45. package/dist/features/workbench/components/WorkbenchFlowPanel.js +27 -29
  46. package/dist/features/workbench/components/WorkbenchIconSidebar.js +30 -42
  47. package/dist/features/workbench/components/WorkbenchPreviewPanel.js +2 -2
  48. package/dist/features/workbench/components/WorkbenchSecretsPanel.js +1 -1
  49. package/dist/features/workbench/components/WorkbenchSettingsModal.js +16 -41
  50. package/dist/features/workbench/components/WorkflowForms.js +14 -13
  51. package/dist/features/workbench/components/WorkflowHistoryItem.js +60 -81
  52. package/dist/features/workbench/components/{PipelineHistoryList.js → WorkflowHistoryList.js} +5 -5
  53. package/dist/features/workbench/components/buttons/WorkflowButtons.js +56 -54
  54. package/dist/features/workbench/hooks/useWorkflowData.js +10 -10
  55. package/dist/features/workbench/hooks/useWorkflowListState.js +8 -45
  56. package/dist/features/workbench/index.js +2 -3
  57. package/dist/features/workbench/providers/ScrollProvider.js +2 -2
  58. package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +4 -4
  59. package/dist/features/workspaces/Workspaces.js +1 -1
  60. package/dist/features/workspaces/components/CreateWorkspace.js +12 -12
  61. package/dist/features/workspaces/components/ExecutionTimeline.js +22 -21
  62. package/dist/features/workspaces/components/{NewPipelineRunDialog.js → NewWorkflowRunDialog.js} +6 -6
  63. package/dist/features/workspaces/components/{PipelineForm.js → WorkflowRunForm.js} +31 -31
  64. package/dist/features/workspaces/components/WorkspaceHomePage.js +11 -11
  65. package/dist/features/workspaces/components/{pipeline-form → workflow-form}/ArgumentsView.js +1 -1
  66. package/dist/features/workspaces/components/{pipeline-form → workflow-form}/SelectionView.js +16 -16
  67. package/dist/hooks/index.js +3 -3
  68. package/dist/hooks/query-keys.js +31 -72
  69. package/dist/hooks/useConfig.js +5 -5
  70. package/dist/hooks/useProcessor.js +5 -5
  71. package/dist/hooks/useWorkflows.js +155 -68
  72. package/dist/index.d.ts +127 -128
  73. package/dist/index.js +5 -5
  74. package/dist/packages/contracts/dist/enums/index.js +11 -12
  75. package/dist/packages/contracts/dist/enums/workflow-state.enum.js +1 -1
  76. package/dist/pages/DebugWorkflowDetailsPage.js +8 -8
  77. package/dist/pages/DebugWorkflowsPage.js +10 -10
  78. package/dist/pages/EmbedWorkbenchPage.js +42 -52
  79. package/dist/pages/PreviewWorkbenchPage.js +130 -255
  80. package/dist/pages/RunsListPage.js +1 -1
  81. package/dist/pages/StudioLandingPage.js +13 -13
  82. package/dist/pages/WorkbenchPage.js +6 -6
  83. package/dist/pages/WorkflowDebugPage.js +114 -0
  84. package/dist/pages/WorkspacePage.js +4 -2
  85. package/dist/providers/InvalidationEventsProvider.js +19 -19
  86. package/dist/providers/SseProvider.js +0 -1
  87. package/dist/routing/LocalRouter.js +14 -17
  88. package/package.json +2 -2
  89. package/dist/api/namespaces.js +0 -7
  90. package/dist/api/pipelines.js +0 -13
  91. package/dist/components/ai-elements/tool.js +0 -158
  92. package/dist/components/ui-widgets/widgets/SecretInput.js +0 -42
  93. package/dist/features/debug/components/pipeline-flow/WorkflowGraph.js +0 -41
  94. package/dist/features/workbench/NavigationItems.js +0 -52
  95. package/dist/features/workbench/WorkbenchNavigation.js +0 -38
  96. package/dist/features/workbench/components/NavigationItem.js +0 -68
  97. package/dist/features/workbench/hooks/useIntersectionObserver.js +0 -44
  98. package/dist/hooks/useNamespaceTree.js +0 -27
  99. package/dist/hooks/useNamespaces.js +0 -25
  100. package/dist/hooks/usePipelines.js +0 -161
  101. package/dist/packages/contracts/dist/enums/pipeline-state.js +0 -10
  102. package/dist/pages/PipelineDebugPage.js +0 -115
  103. /package/dist/features/debug/components/{pipeline-flow → workflow-flow}/StateNode.js +0 -0
  104. /package/dist/features/debug/components/{pipeline-flow → workflow-flow}/WorkflowTransitionEdge.js +0 -0
  105. /package/dist/features/workspaces/components/{pipeline-form → workflow-form}/HeaderSection.js +0 -0
@@ -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 };
@@ -1,5 +1,5 @@
1
- import { usePipelineConfig, useWorkspaceConfig } from "../../../hooks/useConfig.js";
2
- import { useCreatePipeline } from "../../../hooks/usePipelines.js";
1
+ import { useWorkflowConfig, useWorkspaceConfig } from "../../../hooks/useConfig.js";
2
+ import { useCreateWorkflow } from "../../../hooks/useWorkflows.js";
3
3
  import { useFilterWorkspaces } from "../../../hooks/useWorkspaces.js";
4
4
  import { useComponentOverrides } from "../../../providers/ComponentOverridesProvider.js";
5
5
  import { Button } from "../../../components/ui/button.js";
@@ -9,7 +9,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from ".
9
9
  import ErrorSnackbar_default from "../../../components/feedback/ErrorSnackbar.js";
10
10
  import CreateWorkspace_default from "../../workspaces/components/CreateWorkspace.js";
11
11
  import Form_default from "../../../components/dynamic-form/Form.js";
12
- import { useRunPipeline } from "../../../hooks/useProcessor.js";
12
+ import { useRunWorkflow } from "../../../hooks/useProcessor.js";
13
13
  import "../../workspaces/index.js";
14
14
  import { c } from "react/compiler-runtime";
15
15
  import { useCallback, useEffect, useMemo, useState } from "react";
@@ -45,9 +45,9 @@ function NewRunDialogContent(o) {
45
45
  let e;
46
46
  s[6] === v ? e = s[7] : (e = (e) => e.id === v, s[6] = v, s[7] = e), xe = C.find(e), s[3] = v, s[4] = C, s[5] = xe;
47
47
  } else xe = s[5];
48
- let Se = xe, w = usePipelineConfig(Se?.blockName), Ce;
48
+ let Se = xe, w = useWorkflowConfig(Se?.className), Ce;
49
49
  s[8] === w.data ? Ce = s[9] : (Ce = w.data ?? [], s[8] = w.data, s[9] = Ce);
50
- let T = Ce, E = useCreatePipeline(), D = useRunPipeline(), O = E.isPending || D.isPending, k;
50
+ let T = Ce, E = useCreateWorkflow(), D = useRunWorkflow(), O = E.isPending || D.isPending, k;
51
51
  s[10] === Symbol.for("react.memo_cache_sentinel") ? (k = {
52
52
  defaultValues: {},
53
53
  mode: "onChange"
@@ -59,9 +59,9 @@ function NewRunDialogContent(o) {
59
59
  break bb0;
60
60
  }
61
61
  let e;
62
- if (s[11] !== T || s[12] !== y) {
62
+ if (s[11] !== y || s[12] !== T) {
63
63
  let t;
64
- s[14] === y ? t = s[15] : (t = (e) => e.blockName === y, s[14] = y, s[15] = t), e = T.find(t), s[11] = T, s[12] = y, s[13] = e;
64
+ s[14] === y ? t = s[15] : (t = (e) => e.alias === y, s[14] = y, s[15] = t), e = T.find(t), s[11] = y, s[12] = T, s[13] = e;
65
65
  } else e = s[13];
66
66
  we = e;
67
67
  }
@@ -72,9 +72,9 @@ function NewRunDialogContent(o) {
72
72
  let P;
73
73
  s[20] !== v || s[21] !== C ? (P = [C, v], s[20] = v, s[21] = C, s[22] = P) : P = s[22], useEffect(N, P);
74
74
  let F, Te;
75
- s[23] !== T || s[24] !== y ? (Te = () => {
76
- T.length > 0 && !T.find((e) => e.blockName === y) && he(T[0].blockName);
77
- }, F = [T, y], s[23] = T, s[24] = y, s[25] = F, s[26] = Te) : (F = s[25], Te = s[26]), useEffect(Te, F);
75
+ s[23] !== y || s[24] !== T ? (Te = () => {
76
+ T.length > 0 && !T.find((e) => e.alias === y) && he(T[0].alias);
77
+ }, F = [T, y], s[23] = y, s[24] = T, s[25] = F, s[26] = Te) : (F = s[25], Te = s[26]), useEffect(Te, F);
78
78
  let Ee;
79
79
  s[27] !== E || s[28] !== A || s[29] !== l || s[30] !== D ? (Ee = () => {
80
80
  l || (f("workspace"), g(!1), me(""), he(""), A.reset({}), E.reset(), D.reset());
@@ -99,16 +99,16 @@ function NewRunDialogContent(o) {
99
99
  ], s[37] = M, s[38] = y, s[39] = j, s[40] = Me, s[41] = I) : (Me = s[40], I = s[41]), useEffect(Me, I);
100
100
  let Ne;
101
101
  s[42] !== E || s[43] !== u || s[44] !== D || s[45] !== y || s[46] !== v ? (Ne = (e, t) => {
102
- !v || !y || E.mutate({ pipelineCreateDto: {
103
- blockName: y,
102
+ !v || !y || E.mutate({ workflowCreateDto: {
103
+ alias: y,
104
104
  title: null,
105
105
  workspaceId: v,
106
106
  transition: e ?? null,
107
107
  args: t ?? {}
108
108
  } }, { onSuccess: (e) => {
109
109
  D.mutate({
110
- pipelineId: e.id,
111
- runPipelinePayloadDto: {},
110
+ workflowId: e.id,
111
+ runWorkflowPayloadDto: {},
112
112
  force: !0
113
113
  }, { onSuccess: () => u(e.id) });
114
114
  } });
@@ -167,7 +167,7 @@ function NewRunDialogContent(o) {
167
167
  children: V
168
168
  }), s[64] = S.isLoading, s[65] = He, s[66] = Ue, s[67] = We, s[68] = V, s[69] = H) : H = s[69];
169
169
  let U;
170
- s[70] !== L || s[71] !== T || s[72] !== y ? (U = L ? T.find((e) => e.blockName === y)?.title ?? y : void 0, s[70] = L, s[71] = T, s[72] = y, s[73] = U) : U = s[73];
170
+ s[70] !== L || s[71] !== y || s[72] !== T ? (U = L ? T.find((e) => e.alias === y)?.title ?? y : void 0, s[70] = L, s[71] = y, s[72] = T, s[73] = U) : U = s[73];
171
171
  let Ke = d === "automation", qe = L && d !== "automation", Je = w.isLoading, W;
172
172
  s[74] === R ? W = s[75] : (W = () => R && ze("automation"), s[74] = R, s[75] = W);
173
173
  let Ye;
@@ -257,20 +257,20 @@ function NewRunDialogContent(o) {
257
257
  }
258
258
  function _temp2(e) {
259
259
  return /* @__PURE__ */ jsxs(SelectPrimitive.Item, {
260
- value: e.blockName,
260
+ value: e.alias,
261
261
  className: "focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-pointer flex-col gap-0.5 rounded-sm py-2 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
262
262
  children: [
263
263
  /* @__PURE__ */ jsx("span", {
264
264
  className: "absolute right-2 top-2.5 flex size-3.5 items-center justify-center",
265
265
  children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
266
266
  }),
267
- /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children: e.title ?? e.blockName }),
267
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children: e.title ?? e.alias }),
268
268
  e.description && /* @__PURE__ */ jsx("span", {
269
269
  className: "text-muted-foreground text-xs leading-snug",
270
270
  children: e.description
271
271
  })
272
272
  ]
273
- }, e.blockName);
273
+ }, e.alias);
274
274
  }
275
275
  function _temp(e) {
276
276
  return /* @__PURE__ */ jsx(SelectItem, {
@@ -1,9 +1,9 @@
1
1
  import { cn } from "../../../lib/utils.js";
2
2
  import { Button } from "../../../components/ui/button.js";
3
- import { useWorkbenchLayout } from "../providers/WorkbenchLayoutProvider.js";
4
3
  import { FileContentViewer } from "../../code-explorer/components/FileContentViewer.js";
5
4
  import "../../code-explorer/index.js";
6
5
  import { useOptionalRemoteFileExplorer } from "../providers/RemoteFileExplorerProvider.js";
6
+ import { useWorkbenchLayout } from "../providers/WorkbenchLayoutProvider.js";
7
7
  import { RemoteFileTabsBar } from "./RemoteFileTabsBar.js";
8
8
  import RemoteFileTree_default from "./RemoteFileTree.js";
9
9
  import { c } from "react/compiler-runtime";