@loopstack/loopstack-studio 0.29.5 → 0.31.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 (122) hide show
  1. package/dist/_virtual/rolldown_runtime.js +3 -1
  2. package/dist/api/config.js +5 -4
  3. package/dist/api/environments.js +5 -1
  4. package/dist/api/processor.js +4 -1
  5. package/dist/app/EnvironmentEmbedRoot.js +22 -30
  6. package/dist/components/ai-elements/code-block.js +4 -4
  7. package/dist/components/dynamic-form/CodeContent.js +1 -1
  8. package/dist/components/dynamic-form/FormBody.js +1 -1
  9. package/dist/components/layout/StudioSidebar.js +116 -131
  10. package/dist/components/lists/ListView.js +46 -46
  11. package/dist/components/motion/FadeIn.js +72 -0
  12. package/dist/components/motion/StreamingText.js +49 -0
  13. package/dist/components/ui/accordion.js +2 -2
  14. package/dist/components/ui-widgets/UiWidget.js +11 -10
  15. package/dist/components/ui-widgets/widgets/AiPromptInput.js +31 -28
  16. package/dist/events/sse-client-events.js +7 -1
  17. package/dist/features/code-explorer/components/FileContentViewer.js +2 -2
  18. package/dist/features/dashboard/AppLauncher.js +84 -0
  19. package/dist/features/debug/components/WorkflowFlowViewer.js +49 -51
  20. package/dist/features/documents/DocumentRenderer.js +18 -17
  21. package/dist/features/documents/components/DocumentItem.js +42 -20
  22. package/dist/features/documents/components/DocumentList.js +34 -36
  23. package/dist/features/documents/components/DocumentMetadataPills.js +102 -49
  24. package/dist/features/documents/document-details/DocumentDetails.js +577 -377
  25. package/dist/features/documents/document-details/PromptDetails.js +118 -130
  26. package/dist/features/documents/document-details/document-debug-utils.js +100 -0
  27. package/dist/features/documents/renderers/ChoicesRenderer.js +41 -38
  28. package/dist/features/documents/renderers/ConfirmPromptRenderer.js +31 -28
  29. package/dist/features/documents/renderers/DocumentFormRenderer.js +62 -70
  30. package/dist/features/documents/renderers/LlmMessage.js +52 -47
  31. package/dist/features/documents/renderers/TextPromptRenderer.js +32 -29
  32. package/dist/features/documents/renderers/useDocumentTransition.js +4 -4
  33. package/dist/features/feature-registry/FeatureRegistryProvider.js +32 -10
  34. package/dist/features/feature-registry/available-features.js +12 -0
  35. package/dist/features/feature-registry/index.js +2 -1
  36. package/dist/features/file-explorer/components/FileExplorerPanel.js +55 -51
  37. package/dist/features/git/components/GitBranchBadge.js +31 -0
  38. package/dist/features/git/components/GitCommitList.js +46 -0
  39. package/dist/features/git/components/GitRemoteStatus.js +84 -0
  40. package/dist/features/git/components/WorkbenchGitPanel.js +81 -0
  41. package/dist/features/git/git-feature.js +12 -0
  42. package/dist/features/git/hooks/useGit.js +78 -0
  43. package/dist/features/git/index.js +1 -0
  44. package/dist/features/oauth/OAuthPromptRenderer.js +137 -142
  45. package/dist/features/runs/Runs.js +73 -73
  46. package/dist/features/secrets/components/WorkbenchSecretsPanel.js +1 -1
  47. package/dist/features/secrets/renderers/SecretInputRenderer.js +30 -29
  48. package/dist/features/workbench/Workbench.js +25 -33
  49. package/dist/features/workbench/WorkflowItem.js +9 -9
  50. package/dist/features/workbench/WorkflowList.js +61 -62
  51. package/dist/features/workbench/components/NewRunDialog.js +237 -209
  52. package/dist/features/workbench/components/RecentRunItem.js +3 -3
  53. package/dist/features/workbench/components/WorkbenchEnvironmentPanel.js +8 -8
  54. package/dist/features/workbench/components/WorkbenchIconSidebar.js +74 -109
  55. package/dist/features/workbench/components/WorkbenchSidebarShell.js +3 -3
  56. package/dist/features/workbench/components/WorkflowForms.js +11 -10
  57. package/dist/features/workbench/components/WorkflowHistoryItem.js +16 -36
  58. package/dist/features/workbench/components/WorkflowHistoryList.js +19 -17
  59. package/dist/features/workbench/components/buttons/WorkflowButtons.js +3 -3
  60. package/dist/features/workbench/hooks/useLlmStreamingDocuments.js +159 -0
  61. package/dist/features/workbench/hooks/useWorkflowData.js +58 -31
  62. package/dist/features/workbench/index.js +2 -2
  63. package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +53 -53
  64. package/dist/features/workspaces/Workspaces.js +166 -136
  65. package/dist/features/workspaces/components/CreateWorkspace.js +115 -107
  66. package/dist/features/workspaces/components/ExecutionTimeline.js +2 -2
  67. package/dist/features/workspaces/components/WorkflowRunForm.js +127 -104
  68. package/dist/features/workspaces/components/WorkspaceHomePage.js +6 -89
  69. package/dist/features/workspaces/components/workflow-form/ArgumentsView.js +1 -1
  70. package/dist/features/workspaces/components/workflow-form/SelectionView.js +15 -15
  71. package/dist/hooks/index.js +3 -2
  72. package/dist/hooks/query-keys.js +43 -30
  73. package/dist/hooks/useConfig.js +28 -22
  74. package/dist/hooks/useEnvironments.js +27 -2
  75. package/dist/hooks/useProcessor.js +14 -1
  76. package/dist/hooks/useWorkflows.js +4 -4
  77. package/dist/index.d.ts +119 -18
  78. package/dist/index.js +10 -9
  79. package/dist/node_modules/d3/src/index.js +13 -13
  80. package/dist/node_modules/d3-scale/src/continuous.js +16 -16
  81. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-3BPJPVTR.js +43 -43
  82. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-GPEHLZMM.js +270 -270
  83. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/c4Diagram-AAUBKEIU.js +90 -90
  84. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-3OPIFGDE.js +458 -458
  85. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-55IACEB6.js +3 -3
  86. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-5ZQYHXKU.js +37 -37
  87. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-727SXJPM.js +208 -208
  88. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-KSCS5N6A.js +145 -145
  89. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ND2GUHAM.js +7 -7
  90. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-O5CBEL6O.js +41 -41
  91. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-WU5MYG2G.js +3 -3
  92. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/cose-bilkent-S5V4N54A.js +6 -6
  93. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-KO2AKTUF.js +30 -30
  94. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-OG6HWLK6.js +82 -82
  95. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/erDiagram-TEJ5UH35.js +65 -65
  96. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/flowDiagram-I6XJVG4X.js +227 -227
  97. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/ganttDiagram-6RSMTGT7.js +104 -104
  98. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-PVQCEYII.js +104 -104
  99. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/journeyDiagram-JHISSGLW.js +49 -49
  100. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/quadrantDiagram-W4KKPZXB.js +101 -101
  101. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sankeyDiagram-5OEKKPKP.js +20 -20
  102. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-3UESZ5HK.js +354 -354
  103. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-AJRCARHV.js +53 -53
  104. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-PNZ67QCA.js +113 -113
  105. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/vennDiagram-CIIHVFJN.js +90 -90
  106. package/dist/node_modules/mermaid/dist/mermaid.core.js +156 -156
  107. package/dist/node_modules/motion/dist/es/react.js +9 -2
  108. package/dist/pages/DashboardPage.js +20 -74
  109. package/dist/pages/DebugWorkflowDetailsPage.js +2 -2
  110. package/dist/pages/DebugWorkflowsPage.js +76 -106
  111. package/dist/pages/EmbedWorkbenchPage.js +1 -1
  112. package/dist/pages/PreviewWorkbenchPage.js +6 -6
  113. package/dist/pages/WorkbenchPage.js +43 -47
  114. package/dist/pages/WorkflowDebugPage.js +6 -12
  115. package/dist/pages/WorkspacePage.js +40 -66
  116. package/dist/pages/WorkspaceRunsPage.js +24 -31
  117. package/dist/routing/LocalRouter.js +1 -1
  118. package/package.json +2 -2
  119. package/dist/features/dashboard/Dashboard.js +0 -125
  120. package/dist/features/dashboard/RunItem.js +0 -78
  121. package/dist/features/dashboard/RunList.js +0 -32
  122. package/dist/hooks/useDashboard.js +0 -16
@@ -2,78 +2,78 @@ import { DataTable } from "../data-table/DataTable.js";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import React, { useCallback } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
- var ListView_default = (t) => {
6
- let n = c(61), { loading: r, error: i, items: a, totalItems: o, columns: s, filterConfig: l, deleteItem: u, onClick: d, handleNew: f, handleEdit: p, setPage: m, setRowsPerPage: h, setOrderBy: g, setOrder: _, setSearchTerm: v, setFilters: ae, orderBy: oe, order: se, searchTerm: ce, filters: y, page: b, rowsPerPage: x, batchActions: S, batchDelete: C, enableBatchActions: le, rowActions: w, deleteConfirmTitle: T, deleteConfirmDescription: E, newButtonLabel: D } = t, O = ce === void 0 ? "" : ce, k;
7
- n[0] === S ? k = n[1] : (k = S === void 0 ? [] : S, n[0] = S, n[1] = k);
5
+ var ListView_default = (ae) => {
6
+ let t = c(61), { loading: n, error: r, items: i, totalItems: a, columns: o, filterConfig: s, deleteItem: l, onClick: u, handleNew: d, handleEdit: f, setPage: p, setRowsPerPage: m, setOrderBy: h, setOrder: g, setSearchTerm: _, setFilters: oe, orderBy: se, order: v, searchTerm: ce, filters: y, page: b, rowsPerPage: x, batchActions: S, batchDelete: C, enableBatchActions: le, rowActions: w, deleteConfirmTitle: T, deleteConfirmDescription: E, newButtonLabel: D } = ae, O = ce === void 0 ? "" : ce, k;
7
+ t[0] === S ? k = t[1] : (k = S === void 0 ? [] : S, t[0] = S, t[1] = k);
8
8
  let A = k, j = le === void 0 ? !0 : le, M;
9
- n[2] === w ? M = n[3] : (M = w === void 0 ? [] : w, n[2] = w, n[3] = M);
9
+ t[2] === w ? M = t[3] : (M = w === void 0 ? [] : w, t[2] = w, t[3] = M);
10
10
  let N = M, P;
11
- n[4] === s ? P = n[5] : (P = s.map(_temp), n[4] = s, n[5] = P);
11
+ t[4] === o ? P = t[5] : (P = o.map(_temp), t[4] = o, t[5] = P);
12
12
  let F = P, I;
13
- n[6] === A ? I = n[7] : (I = A.map(_temp2), n[6] = A, n[7] = I);
13
+ t[6] === A ? I = t[7] : (I = A.map(_temp2), t[6] = A, t[7] = I);
14
14
  let ue = I, L;
15
- n[8] === N ? L = n[9] : (L = N.map(_temp3), n[8] = N, n[9] = L);
15
+ t[8] === N ? L = t[9] : (L = N.map(_temp3), t[8] = N, t[9] = L);
16
16
  let R = L, z;
17
- n[10] === m ? z = n[11] : (z = (e) => {
18
- m(e);
19
- }, n[10] = m, n[11] = z);
17
+ t[10] === p ? z = t[11] : (z = (e) => {
18
+ p(e);
19
+ }, t[10] = p, t[11] = z);
20
20
  let B = z, V;
21
- n[12] !== m || n[13] !== h ? (V = (e) => {
22
- h(e), m(0);
23
- }, n[12] = m, n[13] = h, n[14] = V) : V = n[14];
21
+ t[12] !== p || t[13] !== m ? (V = (e) => {
22
+ m(e), p(0);
23
+ }, t[12] = p, t[13] = m, t[14] = V) : V = t[14];
24
24
  let H = V, U;
25
- n[15] !== _ || n[16] !== g ? (U = (e, ie) => {
26
- g(e), _(ie);
27
- }, n[15] = _, n[16] = g, n[17] = U) : U = n[17];
25
+ t[15] !== g || t[16] !== h ? (U = (e, ie) => {
26
+ h(e), g(ie);
27
+ }, t[15] = g, t[16] = h, t[17] = U) : U = t[17];
28
28
  let W = U, G;
29
- n[18] !== m || n[19] !== v ? (G = (e) => {
30
- v(e), m(0);
31
- }, n[18] = m, n[19] = v, n[20] = G) : G = n[20];
29
+ t[18] !== p || t[19] !== _ ? (G = (e) => {
30
+ _(e), p(0);
31
+ }, t[18] = p, t[19] = _, t[20] = G) : G = t[20];
32
32
  let K = G, q;
33
- n[21] !== ae || n[22] !== m ? (q = (e) => {
34
- ae(e), m(0);
35
- }, n[21] = ae, n[22] = m, n[23] = q) : q = n[23];
33
+ t[21] !== oe || t[22] !== p ? (q = (e) => {
34
+ oe(e), p(0);
35
+ }, t[21] = oe, t[22] = p, t[23] = q) : q = t[23];
36
36
  let J = q, Y;
37
- n[24] === d ? Y = n[25] : (Y = (e) => {
38
- d?.(e.id);
39
- }, n[24] = d, n[25] = Y);
37
+ t[24] === u ? Y = t[25] : (Y = (e) => {
38
+ u?.(e.id);
39
+ }, t[24] = u, t[25] = Y);
40
40
  let de = Y, X;
41
- n[26] === p ? X = n[27] : (X = (e) => {
42
- p?.(e);
43
- }, n[26] = p, n[27] = X);
41
+ t[26] === f ? X = t[27] : (X = (e) => {
42
+ f?.(e);
43
+ }, t[26] = f, t[27] = X);
44
44
  let fe = X, Z;
45
- n[28] === u ? Z = n[29] : (Z = (e) => {
46
- u?.(e);
47
- }, n[28] = u, n[29] = Z);
45
+ t[28] === l ? Z = t[29] : (Z = (e) => {
46
+ l?.(e);
47
+ }, t[28] = l, t[29] = Z);
48
48
  let pe = Z, Q;
49
- n[30] === C ? Q = n[31] : (Q = async (e) => {
49
+ t[30] === C ? Q = t[31] : (Q = async (e) => {
50
50
  C && await C(e);
51
- }, n[30] = C, n[31] = Q);
52
- let me = Q, he = d ? de : void 0, ge = p ? fe : void 0, _e = u ? pe : void 0, $;
53
- return n[32] !== E || n[33] !== T || n[34] !== j || n[35] !== i || n[36] !== l || n[37] !== y || n[38] !== me || n[39] !== J || n[40] !== f || n[41] !== B || n[42] !== H || n[43] !== K || n[44] !== W || n[45] !== a || n[46] !== r || n[47] !== D || n[48] !== se || n[49] !== oe || n[50] !== b || n[51] !== x || n[52] !== O || n[53] !== he || n[54] !== ge || n[55] !== _e || n[56] !== o || n[57] !== ue || n[58] !== F || n[59] !== R ? ($ = /* @__PURE__ */ jsx("div", {
51
+ }, t[30] = C, t[31] = Q);
52
+ let me = Q, he = u ? de : void 0, ge = f ? fe : void 0, _e = l ? pe : void 0, $;
53
+ return t[32] !== E || t[33] !== T || t[34] !== j || t[35] !== r || t[36] !== s || t[37] !== y || t[38] !== me || t[39] !== J || t[40] !== d || t[41] !== B || t[42] !== H || t[43] !== K || t[44] !== W || t[45] !== i || t[46] !== n || t[47] !== D || t[48] !== v || t[49] !== se || t[50] !== b || t[51] !== x || t[52] !== O || t[53] !== he || t[54] !== ge || t[55] !== _e || t[56] !== a || t[57] !== ue || t[58] !== F || t[59] !== R ? ($ = /* @__PURE__ */ jsx("div", {
54
54
  className: "w-full",
55
55
  children: /* @__PURE__ */ jsx(DataTable, {
56
- data: a,
56
+ data: i,
57
57
  columns: F,
58
- totalItems: o,
59
- loading: r,
60
- error: i,
58
+ totalItems: a,
59
+ loading: n,
60
+ error: r,
61
61
  page: b,
62
62
  pageSize: x,
63
63
  onPageChange: B,
64
64
  onPageSizeChange: H,
65
- sortBy: oe,
66
- sortOrder: se,
65
+ sortBy: se,
66
+ sortOrder: v,
67
67
  onSortChange: W,
68
68
  searchTerm: O,
69
69
  onSearchChange: K,
70
70
  filters: y,
71
- filterConfig: l,
71
+ filterConfig: s,
72
72
  onFiltersChange: J,
73
73
  onRowClick: he,
74
74
  onEdit: ge,
75
75
  onDelete: _e,
76
- onNew: f,
76
+ onNew: d,
77
77
  newButtonLabel: D,
78
78
  enableBatchActions: j,
79
79
  batchActions: ue,
@@ -82,7 +82,7 @@ var ListView_default = (t) => {
82
82
  deleteConfirmTitle: T,
83
83
  deleteConfirmDescription: E
84
84
  })
85
- }), n[32] = E, n[33] = T, n[34] = j, n[35] = i, n[36] = l, n[37] = y, n[38] = me, n[39] = J, n[40] = f, n[41] = B, n[42] = H, n[43] = K, n[44] = W, n[45] = a, n[46] = r, n[47] = D, n[48] = se, n[49] = oe, n[50] = b, n[51] = x, n[52] = O, n[53] = he, n[54] = ge, n[55] = _e, n[56] = o, n[57] = ue, n[58] = F, n[59] = R, n[60] = $) : $ = n[60], $;
85
+ }), t[32] = E, t[33] = T, t[34] = j, t[35] = r, t[36] = s, t[37] = y, t[38] = me, t[39] = J, t[40] = d, t[41] = B, t[42] = H, t[43] = K, t[44] = W, t[45] = i, t[46] = n, t[47] = D, t[48] = v, t[49] = se, t[50] = b, t[51] = x, t[52] = O, t[53] = he, t[54] = ge, t[55] = _e, t[56] = a, t[57] = ue, t[58] = F, t[59] = R, t[60] = $) : $ = t[60], $;
86
86
  };
87
87
  function _temp(e) {
88
88
  return {
@@ -91,8 +91,8 @@ function _temp(e) {
91
91
  minWidth: e.minWidth,
92
92
  align: e.align,
93
93
  sortable: !0,
94
- format: e.format ? (ie) => {
95
- let t = e.format(ie);
94
+ format: e.format ? (ie, ae) => {
95
+ let t = e.format(ie, ae);
96
96
  return typeof t == "string" && t.includes("<") ? /* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: { __html: t } }) : t;
97
97
  } : void 0
98
98
  };
@@ -0,0 +1,72 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { motion, react_exports } from "../../node_modules/motion/dist/es/react.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function FadeIn(a) {
6
+ let o = c(16), { children: s, className: l, delay: u, y: d, duration: f } = a, p = u === void 0 ? 0 : u, m = d === void 0 ? 6 : d, h = f === void 0 ? .22 : f;
7
+ if ((0, react_exports.useReducedMotion)()) {
8
+ let e;
9
+ return o[0] !== s || o[1] !== l ? (e = /* @__PURE__ */ jsx("div", {
10
+ className: l,
11
+ children: s
12
+ }), o[0] = s, o[1] = l, o[2] = e) : e = o[2], e;
13
+ }
14
+ let g;
15
+ o[3] === l ? g = o[4] : (g = cn(l), o[3] = l, o[4] = g);
16
+ let _;
17
+ o[5] === m ? _ = o[6] : (_ = {
18
+ opacity: 0,
19
+ y: m
20
+ }, o[5] = m, o[6] = _);
21
+ let v;
22
+ o[7] === Symbol.for("react.memo_cache_sentinel") ? (v = {
23
+ opacity: 1,
24
+ y: 0
25
+ }, o[7] = v) : v = o[7];
26
+ let y;
27
+ o[8] !== p || o[9] !== h ? (y = {
28
+ duration: h,
29
+ delay: p,
30
+ ease: "easeOut"
31
+ }, o[8] = p, o[9] = h, o[10] = y) : y = o[10];
32
+ let b;
33
+ return o[11] !== s || o[12] !== g || o[13] !== _ || o[14] !== y ? (b = /* @__PURE__ */ jsx(motion.div, {
34
+ className: g,
35
+ initial: _,
36
+ animate: v,
37
+ transition: y,
38
+ children: s
39
+ }), o[11] = s, o[12] = g, o[13] = _, o[14] = y, o[15] = b) : b = o[15], b;
40
+ }
41
+ function FadeInBlock(a) {
42
+ let o = c(11), { children: s, className: l } = a;
43
+ if ((0, react_exports.useReducedMotion)()) {
44
+ let e;
45
+ return o[0] !== s || o[1] !== l ? (e = /* @__PURE__ */ jsx("div", {
46
+ className: l,
47
+ children: s
48
+ }), o[0] = s, o[1] = l, o[2] = e) : e = o[2], e;
49
+ }
50
+ let u;
51
+ o[3] === l ? u = o[4] : (u = cn(l), o[3] = l, o[4] = u);
52
+ let d, f, p;
53
+ o[5] === Symbol.for("react.memo_cache_sentinel") ? (d = {
54
+ opacity: 0,
55
+ y: 4
56
+ }, f = {
57
+ opacity: 1,
58
+ y: 0
59
+ }, p = {
60
+ duration: .18,
61
+ ease: "easeOut"
62
+ }, o[5] = d, o[6] = f, o[7] = p) : (d = o[5], f = o[6], p = o[7]);
63
+ let m;
64
+ return o[8] !== s || o[9] !== u ? (m = /* @__PURE__ */ jsx(motion.div, {
65
+ className: u,
66
+ initial: d,
67
+ animate: f,
68
+ transition: p,
69
+ children: s
70
+ }), o[8] = s, o[9] = u, o[10] = m) : m = o[10], m;
71
+ }
72
+ export { FadeIn, FadeInBlock };
@@ -0,0 +1,49 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { motion, react_exports } from "../../node_modules/motion/dist/es/react.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import { useMemo } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ function StreamingText(a) {
7
+ let o = c(16), { text: s, className: l } = a, u = (0, react_exports.useReducedMotion)(), d;
8
+ o[0] === s ? d = o[1] : (d = s.match(/\S+\s*|\s+/g) ?? (s ? [s] : []), o[0] = s, o[1] = d);
9
+ let f = d;
10
+ if (u) {
11
+ let n;
12
+ o[2] === l ? n = o[3] : (n = cn("whitespace-pre-wrap", l), o[2] = l, o[3] = n);
13
+ let r;
14
+ return o[4] !== n || o[5] !== s ? (r = /* @__PURE__ */ jsx("span", {
15
+ className: n,
16
+ children: s
17
+ }), o[4] = n, o[5] = s, o[6] = r) : r = o[6], r;
18
+ }
19
+ let p;
20
+ o[7] === l ? p = o[8] : (p = cn("whitespace-pre-wrap", l), o[7] = l, o[8] = p);
21
+ let m;
22
+ if (o[9] !== f) {
23
+ let e;
24
+ o[11] === f.length ? e = o[12] : (e = (e, r) => {
25
+ let i = r === f.length - 1;
26
+ return /* @__PURE__ */ jsx(motion.span, {
27
+ initial: i ? {
28
+ opacity: 0,
29
+ y: 2
30
+ } : !1,
31
+ animate: {
32
+ opacity: 1,
33
+ y: 0
34
+ },
35
+ transition: {
36
+ duration: .18,
37
+ ease: "easeOut"
38
+ },
39
+ children: e
40
+ }, r);
41
+ }, o[11] = f.length, o[12] = e), m = f.map(e), o[9] = f, o[10] = m;
42
+ } else m = o[10];
43
+ let h;
44
+ return o[13] !== p || o[14] !== m ? (h = /* @__PURE__ */ jsx("span", {
45
+ className: p,
46
+ children: m
47
+ }), o[13] = p, o[14] = m, o[15] = h) : h = o[15], h;
48
+ }
49
+ export { StreamingText };
@@ -47,7 +47,7 @@ function AccordionContent(i) {
47
47
  let a = c(12), o, s, l;
48
48
  a[0] === i ? (o = a[1], s = a[2], l = a[3]) : ({className: s, children: o, ...l} = i, a[0] = i, a[1] = o, a[2] = s, a[3] = l);
49
49
  let u;
50
- a[4] === s ? u = a[5] : (u = cn("pt-0 pb-4", s), a[4] = s, a[5] = u);
50
+ a[4] === s ? u = a[5] : (u = cn("min-w-0 pt-0 pb-4", s), a[4] = s, a[5] = u);
51
51
  let d;
52
52
  a[6] !== o || a[7] !== u ? (d = /* @__PURE__ */ jsx("div", {
53
53
  className: u,
@@ -56,7 +56,7 @@ function AccordionContent(i) {
56
56
  let f;
57
57
  return a[9] !== l || a[10] !== d ? (f = /* @__PURE__ */ jsx(AccordionPrimitive.Content, {
58
58
  "data-slot": "accordion-content",
59
- className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
59
+ className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm data-[state=open]:overflow-visible",
60
60
  ...l,
61
61
  children: d
62
62
  }), a[9] = l, a[10] = d, a[11] = f) : f = a[11], f;
@@ -6,43 +6,44 @@ import { c } from "react/compiler-runtime";
6
6
  import React from "react";
7
7
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
8
8
  var UiWidget_default = (s) => {
9
- let l = c(18), { config: u, onSubmit: d, disabled: f, isLoading: p } = s, m = u.options;
9
+ let l = c(19), { config: u, onSubmit: d, disabled: f, isLoading: p } = s, m = u.options;
10
10
  switch (u.widget) {
11
11
  case "prompt-input": {
12
12
  let a;
13
- return l[0] !== f || l[1] !== d || l[2] !== m ? (a = /* @__PURE__ */ jsx(AiPromptInput_default, {
13
+ return l[0] !== f || l[1] !== p || l[2] !== d || l[3] !== m ? (a = /* @__PURE__ */ jsx(AiPromptInput_default, {
14
14
  disabled: f,
15
+ isLoading: p,
15
16
  onSubmit: d,
16
17
  ui: m
17
- }), l[0] = f, l[1] = d, l[2] = m, l[3] = a) : a = l[3], a;
18
+ }), l[0] = f, l[1] = p, l[2] = d, l[3] = m, l[4] = a) : a = l[4], a;
18
19
  }
19
20
  case "button": {
20
21
  let e = m, a;
21
- return l[4] !== f || l[5] !== p || l[6] !== d || l[7] !== e ? (a = /* @__PURE__ */ jsx(SubmitButton, {
22
+ return l[5] !== f || l[6] !== p || l[7] !== d || l[8] !== e ? (a = /* @__PURE__ */ jsx(SubmitButton, {
22
23
  ui: e,
23
24
  disabled: f,
24
25
  onClick: d,
25
26
  isLoading: p
26
- }), l[4] = f, l[5] = p, l[6] = d, l[7] = e, l[8] = a) : a = l[8], a;
27
+ }), l[5] = f, l[6] = p, l[7] = d, l[8] = e, l[9] = a) : a = l[9], a;
27
28
  }
28
29
  case "button-full-w": {
29
30
  let e = m, o;
30
- return l[9] !== f || l[10] !== p || l[11] !== d || l[12] !== e ? (o = /* @__PURE__ */ jsx(ButtonFullWidth, {
31
+ return l[10] !== f || l[11] !== p || l[12] !== d || l[13] !== e ? (o = /* @__PURE__ */ jsx(ButtonFullWidth, {
31
32
  ui: e,
32
33
  disabled: f,
33
34
  onClick: d,
34
35
  isLoading: p
35
- }), l[9] = f, l[10] = p, l[11] = d, l[12] = e, l[13] = o) : o = l[13], o;
36
+ }), l[10] = f, l[11] = p, l[12] = d, l[13] = e, l[14] = o) : o = l[14], o;
36
37
  }
37
38
  case "sandbox-run": {
38
39
  let e = m, a;
39
- return l[14] !== f || l[15] !== e ? (a = /* @__PURE__ */ jsx(SandboxRun, {
40
+ return l[15] !== f || l[16] !== e ? (a = /* @__PURE__ */ jsx(SandboxRun, {
40
41
  ui: e,
41
42
  disabled: f
42
- }), l[14] = f, l[15] = e, l[16] = a) : a = l[16], a;
43
+ }), l[15] = f, l[16] = e, l[17] = a) : a = l[17], a;
43
44
  }
44
45
  }
45
46
  let h;
46
- return l[17] === Symbol.for("react.memo_cache_sentinel") ? (h = /* @__PURE__ */ jsx(Fragment$1, {}), l[17] = h) : h = l[17], h;
47
+ return l[18] === Symbol.for("react.memo_cache_sentinel") ? (h = /* @__PURE__ */ jsx(Fragment$1, {}), l[18] = h) : h = l[18], h;
47
48
  };
48
49
  export { UiWidget_default as default };
@@ -4,40 +4,43 @@ import { useState } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { Pill } from "lucide-react";
6
6
  function AiPromptInput(d) {
7
- let f = c(18), { onSubmit: p, disabled: m, ui: h } = d, [g, _] = useState(""), v = h?.label ?? "Submit", y;
8
- f[0] === p ? y = f[1] : (y = (e, u) => {
9
- u.preventDefault(), e.text && (p(e.text), _(""));
10
- }, f[0] = p, f[1] = y);
11
- let b;
12
- f[2] === Symbol.for("react.memo_cache_sentinel") ? (b = (e) => _(e.target.value), f[2] = b) : b = f[2];
13
- let x = m || !1, S;
14
- f[3] !== g || f[4] !== x ? (S = /* @__PURE__ */ jsx(PromptInputBody, { children: /* @__PURE__ */ jsx(PromptInputTextarea, {
15
- value: g,
16
- onChange: b,
7
+ let f = c(19), { onSubmit: p, disabled: m, isLoading: h, ui: g } = d, _ = h === void 0 ? !1 : h, [v, y] = useState(""), b = g?.label ?? "Submit", x;
8
+ f[0] === p ? x = f[1] : (x = (e, u) => {
9
+ u.preventDefault(), e.text && (p(e.text), y(""));
10
+ }, f[0] = p, f[1] = x);
11
+ let S;
12
+ f[2] === Symbol.for("react.memo_cache_sentinel") ? (S = (e) => y(e.target.value), f[2] = S) : S = f[2];
13
+ let C = m || _, w;
14
+ f[3] !== v || f[4] !== C ? (w = /* @__PURE__ */ jsx(PromptInputBody, { children: /* @__PURE__ */ jsx(PromptInputTextarea, {
15
+ value: v,
16
+ onChange: S,
17
17
  placeholder: "Type your message...",
18
- disabled: x,
18
+ disabled: C,
19
19
  rows: 1,
20
20
  className: "flex-1"
21
- }) }), f[3] = g, f[4] = x, f[5] = S) : S = f[5];
22
- let C;
23
- f[6] === Symbol.for("react.memo_cache_sentinel") ? (C = /* @__PURE__ */ jsx(Pill, {
21
+ }) }), f[3] = v, f[4] = C, f[5] = w) : w = f[5];
22
+ let T;
23
+ f[6] === Symbol.for("react.memo_cache_sentinel") ? (T = /* @__PURE__ */ jsx(Pill, {
24
24
  size: "16",
25
25
  className: "mr-2"
26
- }), f[6] = C) : C = f[6];
27
- let w;
28
- f[7] === v ? w = f[8] : (w = /* @__PURE__ */ jsxs("div", {
26
+ }), f[6] = T) : T = f[6];
27
+ let E;
28
+ f[7] === b ? E = f[8] : (E = /* @__PURE__ */ jsxs("div", {
29
29
  className: "mr-4 flex items-center",
30
- children: [C, v]
31
- }), f[7] = v, f[8] = w);
32
- let T = m || !1, E;
33
- f[9] === T ? E = f[10] : (E = /* @__PURE__ */ jsx(PromptInputSubmit, { disabled: T }), f[9] = T, f[10] = E);
34
- let D;
35
- f[11] !== w || f[12] !== E ? (D = /* @__PURE__ */ jsxs(PromptInputFooter, { children: [w, E] }), f[11] = w, f[12] = E, f[13] = D) : D = f[13];
36
- let O;
37
- return f[14] !== y || f[15] !== S || f[16] !== D ? (O = /* @__PURE__ */ jsxs(PromptInput, {
38
- onSubmit: y,
39
- children: [S, D]
40
- }), f[14] = y, f[15] = S, f[16] = D, f[17] = O) : O = f[17], O;
30
+ children: [T, b]
31
+ }), f[7] = b, f[8] = E);
32
+ let D = m || _, O = _ ? "streaming" : "ready", k;
33
+ f[9] !== D || f[10] !== O ? (k = /* @__PURE__ */ jsx(PromptInputSubmit, {
34
+ disabled: D,
35
+ status: O
36
+ }), f[9] = D, f[10] = O, f[11] = k) : k = f[11];
37
+ let A;
38
+ f[12] !== k || f[13] !== E ? (A = /* @__PURE__ */ jsxs(PromptInputFooter, { children: [E, k] }), f[12] = k, f[13] = E, f[14] = A) : A = f[14];
39
+ let j;
40
+ return f[15] !== A || f[16] !== x || f[17] !== w ? (j = /* @__PURE__ */ jsxs(PromptInput, {
41
+ onSubmit: x,
42
+ children: [w, A]
43
+ }), f[15] = A, f[16] = x, f[17] = w, f[18] = j) : j = f[18], j;
41
44
  }
42
45
  var AiPromptInput_default = AiPromptInput;
43
46
  export { AiPromptInput_default as default };
@@ -2,6 +2,12 @@ const SseClientEvents = {
2
2
  WORKFLOW_CREATED: "workflow.created",
3
3
  WORKFLOW_UPDATED: "workflow.updated",
4
4
  DOCUMENT_CREATED: "document.created",
5
- SSE_CONNECTED: "sse.connected"
5
+ SSE_CONNECTED: "sse.connected",
6
+ LLM_RESPONSE_START: "llm.response.start",
7
+ LLM_RESPONSE_TEXT_DELTA: "llm.response.text_delta",
8
+ LLM_RESPONSE_THINKING_DELTA: "llm.response.thinking_delta",
9
+ LLM_RESPONSE_TOOL_CALL: "llm.response.tool_call",
10
+ LLM_RESPONSE_DONE: "llm.response.done",
11
+ LLM_RESPONSE_ERROR: "llm.response.error"
6
12
  };
7
13
  export { SseClientEvents };
@@ -1,10 +1,10 @@
1
1
  import { cn } from "../../../lib/utils.js";
2
2
  import { ScrollArea, ScrollBar } from "../../../components/ui/scroll-area.js";
3
- import MarkdownContent_default from "../../../components/dynamic-form/MarkdownContent.js";
4
3
  import { ReactFlowProvider } from "../../../node_modules/@xyflow/react/dist/esm/index.js";
4
+ import MarkdownContent_default from "../../../components/dynamic-form/MarkdownContent.js";
5
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "../../../components/ui/tabs.js";
5
6
  import ConfigFlowViewer_default from "../../debug/components/ConfigFlowViewer.js";
6
7
  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";
@@ -0,0 +1,84 @@
1
+ import { useStudio } from "../../providers/StudioProvider.js";
2
+ import { useComponentOverrides } from "../../providers/ComponentOverridesProvider.js";
3
+ import { Button } from "../../components/ui/button.js";
4
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../../components/ui/card.js";
5
+ import { Dialog, DialogContent } from "../../components/ui/dialog.js";
6
+ import CreateWorkspace_default from "../workspaces/components/CreateWorkspace.js";
7
+ import { c } from "react/compiler-runtime";
8
+ import { useMemo, useState } from "react";
9
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
+ import { Link } from "react-router-dom";
11
+ import { Boxes, FolderOpen, Plus } from "lucide-react";
12
+ function AppLauncher(x) {
13
+ let S = c(25), { apps: C } = x, { CreateWorkspace: w } = useComponentOverrides(), T = w ?? CreateWorkspace_default, { router: E } = useStudio(), [D, O] = useState(null), k;
14
+ S[0] === D ? k = S[1] : (k = D ? [{
15
+ appName: D.appName,
16
+ title: D.title,
17
+ environments: D.extensions?.environments ?? []
18
+ }] : [], S[0] = D, S[1] = k);
19
+ let A = k, j;
20
+ S[2] === E ? j = S[3] : (j = (e) => {
21
+ O(null), e && E.navigateToWorkspace(e.id);
22
+ }, S[2] = E, S[3] = j);
23
+ let M = j, N;
24
+ if (S[4] !== C || S[5] !== E) {
25
+ let e;
26
+ S[7] === E ? e = S[8] : (e = (e) => /* @__PURE__ */ jsxs(Card, {
27
+ className: "flex flex-col",
28
+ children: [/* @__PURE__ */ jsxs(CardHeader, { children: [/* @__PURE__ */ jsxs("div", {
29
+ className: "flex items-center gap-2",
30
+ children: [/* @__PURE__ */ jsx(Boxes, { className: "text-muted-foreground h-5 w-5" }), /* @__PURE__ */ jsx(CardTitle, {
31
+ className: "text-base",
32
+ children: e.title
33
+ })]
34
+ }), e.description && /* @__PURE__ */ jsx(CardDescription, { children: e.description })] }), /* @__PURE__ */ jsxs(CardContent, {
35
+ className: "mt-auto flex gap-2",
36
+ children: [/* @__PURE__ */ jsx(Button, {
37
+ variant: "ghost",
38
+ size: "sm",
39
+ className: "flex-1",
40
+ asChild: !0,
41
+ children: /* @__PURE__ */ jsxs(Link, {
42
+ to: `${E.getWorkspaces()}?appName=${encodeURIComponent(e.appName)}`,
43
+ children: [/* @__PURE__ */ jsx(FolderOpen, { className: "mr-1 h-4 w-4" }), "View Workspaces"]
44
+ })
45
+ }), /* @__PURE__ */ jsxs(Button, {
46
+ variant: "outline",
47
+ size: "sm",
48
+ className: "flex-1",
49
+ onClick: () => O(e),
50
+ children: [/* @__PURE__ */ jsx(Plus, { className: "mr-1 h-4 w-4" }), "Create Workspace"]
51
+ })]
52
+ })]
53
+ }, e.appName), S[7] = E, S[8] = e), N = C.map(e), S[4] = C, S[5] = E, S[6] = N;
54
+ } else N = S[6];
55
+ let P;
56
+ S[9] === N ? P = S[10] : (P = /* @__PURE__ */ jsx("div", {
57
+ className: "mb-8",
58
+ children: /* @__PURE__ */ jsx("div", {
59
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
60
+ children: N
61
+ })
62
+ }), S[9] = N, S[10] = P);
63
+ let F = !!D, I;
64
+ S[11] === Symbol.for("react.memo_cache_sentinel") ? (I = (e) => !e && O(null), S[11] = I) : I = S[11];
65
+ let L;
66
+ S[12] !== T || S[13] !== A || S[14] !== M || S[15] !== D ? (L = D && /* @__PURE__ */ jsx(T, {
67
+ types: A,
68
+ onSuccess: M
69
+ }), S[12] = T, S[13] = A, S[14] = M, S[15] = D, S[16] = L) : L = S[16];
70
+ let R;
71
+ S[17] === L ? R = S[18] : (R = /* @__PURE__ */ jsx(DialogContent, {
72
+ className: "max-w-2xl",
73
+ children: L
74
+ }), S[17] = L, S[18] = R);
75
+ let z;
76
+ S[19] !== F || S[20] !== R ? (z = /* @__PURE__ */ jsx(Dialog, {
77
+ open: F,
78
+ onOpenChange: I,
79
+ children: R
80
+ }), S[19] = F, S[20] = R, S[21] = z) : z = S[21];
81
+ let B;
82
+ return S[22] !== P || S[23] !== z ? (B = /* @__PURE__ */ jsxs(Fragment$1, { children: [P, z] }), S[22] = P, S[23] = z, S[24] = B) : B = S[24], B;
83
+ }
84
+ export { AppLauncher as default };