@loopstack/loopstack-studio 0.29.4 → 0.30.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 (114) 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/Form.js +31 -51
  9. package/dist/components/dynamic-form/FormBody.js +1 -1
  10. package/dist/components/motion/FadeIn.js +72 -0
  11. package/dist/components/motion/StreamingText.js +49 -0
  12. package/dist/components/ui/accordion.js +2 -2
  13. package/dist/components/ui-widgets/UiWidget.js +11 -10
  14. package/dist/components/ui-widgets/widgets/AiPromptInput.js +31 -28
  15. package/dist/events/sse-client-events.js +7 -1
  16. package/dist/features/code-explorer/components/FileContentViewer.js +2 -2
  17. package/dist/features/debug/components/WorkflowFlowViewer.js +49 -51
  18. package/dist/features/documents/DocumentRenderer.js +18 -17
  19. package/dist/features/documents/components/DocumentItem.js +42 -20
  20. package/dist/features/documents/components/DocumentList.js +34 -36
  21. package/dist/features/documents/components/DocumentMetadataPills.js +102 -49
  22. package/dist/features/documents/document-details/DocumentDetails.js +577 -377
  23. package/dist/features/documents/document-details/PromptDetails.js +118 -130
  24. package/dist/features/documents/document-details/document-debug-utils.js +100 -0
  25. package/dist/features/documents/renderers/ChoicesRenderer.js +41 -38
  26. package/dist/features/documents/renderers/ConfirmPromptRenderer.js +31 -28
  27. package/dist/features/documents/renderers/DocumentFormRenderer.js +62 -70
  28. package/dist/features/documents/renderers/LlmMessage.js +52 -47
  29. package/dist/features/documents/renderers/TextPromptRenderer.js +32 -29
  30. package/dist/features/documents/renderers/useDocumentTransition.js +4 -4
  31. package/dist/features/feature-registry/FeatureRegistryProvider.js +32 -10
  32. package/dist/features/feature-registry/available-features.js +12 -0
  33. package/dist/features/feature-registry/index.js +2 -1
  34. package/dist/features/file-explorer/components/FileExplorerPanel.js +55 -51
  35. package/dist/features/git/components/GitBranchBadge.js +31 -0
  36. package/dist/features/git/components/GitCommitList.js +46 -0
  37. package/dist/features/git/components/GitRemoteStatus.js +84 -0
  38. package/dist/features/git/components/WorkbenchGitPanel.js +81 -0
  39. package/dist/features/git/git-feature.js +12 -0
  40. package/dist/features/git/hooks/useGit.js +78 -0
  41. package/dist/features/git/index.js +1 -0
  42. package/dist/features/oauth/OAuthPromptRenderer.js +137 -142
  43. package/dist/features/runs/Runs.js +4 -4
  44. package/dist/features/secrets/components/WorkbenchSecretsPanel.js +1 -1
  45. package/dist/features/secrets/renderers/SecretInputRenderer.js +30 -29
  46. package/dist/features/workbench/Workbench.js +25 -33
  47. package/dist/features/workbench/WorkflowItem.js +9 -9
  48. package/dist/features/workbench/WorkflowList.js +61 -62
  49. package/dist/features/workbench/components/NewRunDialog.js +237 -209
  50. package/dist/features/workbench/components/RecentRunItem.js +3 -3
  51. package/dist/features/workbench/components/WorkbenchEnvironmentPanel.js +8 -8
  52. package/dist/features/workbench/components/WorkbenchIconSidebar.js +1 -1
  53. package/dist/features/workbench/components/WorkbenchSidebarShell.js +3 -3
  54. package/dist/features/workbench/components/WorkflowForms.js +11 -10
  55. package/dist/features/workbench/components/WorkflowHistoryItem.js +16 -36
  56. package/dist/features/workbench/components/WorkflowHistoryList.js +19 -17
  57. package/dist/features/workbench/components/buttons/WorkflowButtons.js +3 -3
  58. package/dist/features/workbench/hooks/useLlmStreamingDocuments.js +159 -0
  59. package/dist/features/workbench/hooks/useWorkflowData.js +58 -31
  60. package/dist/features/workbench/index.js +2 -2
  61. package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +53 -53
  62. package/dist/features/workspaces/Workspaces.js +134 -125
  63. package/dist/features/workspaces/components/CreateWorkspace.js +115 -107
  64. package/dist/features/workspaces/components/ExecutionTimeline.js +2 -2
  65. package/dist/features/workspaces/components/WorkflowRunForm.js +127 -104
  66. package/dist/features/workspaces/components/WorkspaceHomePage.js +6 -89
  67. package/dist/features/workspaces/components/workflow-form/ArgumentsView.js +1 -1
  68. package/dist/features/workspaces/components/workflow-form/SelectionView.js +15 -15
  69. package/dist/hooks/index.js +3 -2
  70. package/dist/hooks/query-keys.js +43 -30
  71. package/dist/hooks/useConfig.js +28 -22
  72. package/dist/hooks/useEnvironments.js +27 -2
  73. package/dist/hooks/useProcessor.js +14 -1
  74. package/dist/hooks/useWorkflows.js +4 -4
  75. package/dist/index.d.ts +116 -15
  76. package/dist/index.js +9 -8
  77. package/dist/node_modules/d3/src/index.js +13 -13
  78. package/dist/node_modules/d3-scale/src/continuous.js +16 -16
  79. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-3BPJPVTR.js +43 -43
  80. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-GPEHLZMM.js +270 -270
  81. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/c4Diagram-AAUBKEIU.js +90 -90
  82. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-3OPIFGDE.js +458 -458
  83. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-55IACEB6.js +3 -3
  84. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-5ZQYHXKU.js +37 -37
  85. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-727SXJPM.js +208 -208
  86. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-KSCS5N6A.js +145 -145
  87. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ND2GUHAM.js +7 -7
  88. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-O5CBEL6O.js +41 -41
  89. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-WU5MYG2G.js +3 -3
  90. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/cose-bilkent-S5V4N54A.js +6 -6
  91. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-KO2AKTUF.js +30 -30
  92. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-OG6HWLK6.js +82 -82
  93. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/erDiagram-TEJ5UH35.js +65 -65
  94. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/flowDiagram-I6XJVG4X.js +227 -227
  95. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/ganttDiagram-6RSMTGT7.js +104 -104
  96. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-PVQCEYII.js +104 -104
  97. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/journeyDiagram-JHISSGLW.js +49 -49
  98. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/quadrantDiagram-W4KKPZXB.js +101 -101
  99. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sankeyDiagram-5OEKKPKP.js +20 -20
  100. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-3UESZ5HK.js +354 -354
  101. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-AJRCARHV.js +53 -53
  102. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-PNZ67QCA.js +113 -113
  103. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/vennDiagram-CIIHVFJN.js +90 -90
  104. package/dist/node_modules/mermaid/dist/mermaid.core.js +156 -156
  105. package/dist/node_modules/motion/dist/es/react.js +9 -2
  106. package/dist/pages/DebugWorkflowDetailsPage.js +2 -2
  107. package/dist/pages/DebugWorkflowsPage.js +76 -106
  108. package/dist/pages/EmbedWorkbenchPage.js +1 -1
  109. package/dist/pages/PreviewWorkbenchPage.js +6 -6
  110. package/dist/pages/WorkbenchPage.js +43 -47
  111. package/dist/pages/WorkflowDebugPage.js +6 -12
  112. package/dist/pages/WorkspacePage.js +40 -66
  113. package/dist/pages/WorkspaceRunsPage.js +24 -31
  114. package/package.json +2 -2
@@ -8,79 +8,77 @@ import { c } from "react/compiler-runtime";
8
8
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import { Loader2 } from "lucide-react";
11
- var nodeTypes = { stateNode: StateNode_default }, edgeTypes = { workflowTransition: WorkflowTransitionEdge_default }, WorkflowFlowViewer_default = (p) => {
12
- let m = c(43), { workflowId: h, workflows: g, workflowConfig: _, direction: v } = p, y = v === void 0 ? "LR" : v, { data: b, isPending: x, isLoading: S } = useWorkflow(h), C;
13
- m[0] === Symbol.for("react.memo_cache_sentinel") ? (C = [], m[0] = C) : C = m[0];
14
- let [w, T, E] = useNodesState(C), D;
15
- m[1] === Symbol.for("react.memo_cache_sentinel") ? (D = [], m[1] = D) : D = m[1];
16
- let [O, k, A] = useEdgesState(D), { fitView: j } = useReactFlow(), M = useRef(!1), N;
17
- m[2] === Symbol.for("react.memo_cache_sentinel") ? (N = {}, m[2] = N) : N = m[2];
18
- let [P, F] = useState(N), [I, L] = useState(!0), R = b, z;
19
- if (m[3] !== h || m[4] !== g) {
11
+ var nodeTypes = { stateNode: StateNode_default }, edgeTypes = { workflowTransition: WorkflowTransitionEdge_default }, WorkflowFlowViewer_default = (f) => {
12
+ let p = c(41), { workflowId: m, workflows: h, workflowConfig: g, direction: _ } = f, v = _ === void 0 ? "LR" : _, { data: y, isPending: b, isLoading: x } = useWorkflow(m), S;
13
+ p[0] === Symbol.for("react.memo_cache_sentinel") ? (S = [], p[0] = S) : S = p[0];
14
+ let [C, w, T] = useNodesState(S), E;
15
+ p[1] === Symbol.for("react.memo_cache_sentinel") ? (E = [], p[1] = E) : E = p[1];
16
+ let [D, O, k] = useEdgesState(E), { fitView: A } = useReactFlow(), j = useRef(!1), M = useRef(m), N;
17
+ p[2] === Symbol.for("react.memo_cache_sentinel") ? (N = {}, p[2] = N) : N = p[2];
18
+ let [P, F] = useState(N), [I, L] = useState(!0), R = y, z;
19
+ if (p[3] !== m || p[4] !== h) {
20
20
  let t;
21
- m[6] === h ? t = m[7] : (t = (t) => t.id !== h, m[6] = h, m[7] = t), z = g.filter(t), m[3] = h, m[4] = g, m[5] = z;
22
- } else z = m[5];
23
- let B = z, V = Object.values(P).some(_temp), H = !!h && !b && (x || S) || V, U;
24
- m[8] === Symbol.for("react.memo_cache_sentinel") ? (U = (t, d) => {
25
- F((f) => f[t] === d ? f : {
26
- ...f,
27
- [t]: d
21
+ p[6] === m ? t = p[7] : (t = (t) => t.id !== m, p[6] = m, p[7] = t), z = h.filter(t), p[3] = m, p[4] = h, p[5] = z;
22
+ } else z = p[5];
23
+ let B = z, V = Object.values(P).some(_temp), H = !!m && !y && (b || x) || V, U;
24
+ p[8] === Symbol.for("react.memo_cache_sentinel") ? (U = (t, u) => {
25
+ F((d) => d[t] === u ? d : {
26
+ ...d,
27
+ [t]: u
28
28
  });
29
- }, m[8] = U) : U = m[8];
29
+ }, p[8] = U) : U = p[8];
30
30
  let W = U, G;
31
- m[9] !== k || m[10] !== T ? (G = (t, d, f) => {
32
- T(d), k(f);
33
- }, m[9] = k, m[10] = T, m[11] = G) : G = m[11];
34
- let K = G, q;
35
- m[12] !== k || m[13] !== T ? (q = () => {
36
- M.current = !1, T([]), k([]);
37
- }, m[12] = k, m[13] = T, m[14] = q) : q = m[14];
38
- let J;
39
- m[15] !== k || m[16] !== T || m[17] !== h ? (J = [
40
- h,
41
- T,
42
- k
43
- ], m[15] = k, m[16] = T, m[17] = h, m[18] = J) : J = m[18], useLayoutEffect(q, J);
31
+ p[9] !== O || p[10] !== w ? (G = (t, u, d) => {
32
+ w(u), O(d);
33
+ }, p[9] = O, p[10] = w, p[11] = G) : G = p[11];
34
+ let K = G, q, J;
35
+ p[12] !== O || p[13] !== w || p[14] !== m ? (q = () => {
36
+ M.current !== m && (M.current = m, j.current = !1, w([]), O([]));
37
+ }, J = [
38
+ m,
39
+ w,
40
+ O
41
+ ], p[12] = O, p[13] = w, p[14] = m, p[15] = q, p[16] = J) : (q = p[15], J = p[16]), useLayoutEffect(q, J);
44
42
  let Y, X;
45
- m[19] !== j || m[20] !== H || m[21] !== w.length ? (Y = () => {
46
- if (!H && w.length > 0 && !M.current) {
47
- M.current = !0;
43
+ p[17] !== A || p[18] !== H || p[19] !== C.length ? (Y = () => {
44
+ if (!H && C.length > 0 && !j.current) {
45
+ j.current = !0;
48
46
  let t = setTimeout(() => {
49
- j({ padding: .2 });
47
+ A({ padding: .2 });
50
48
  }, 150);
51
49
  return () => clearTimeout(t);
52
50
  }
53
51
  }, X = [
54
52
  H,
55
- w.length,
56
- j
57
- ], m[19] = j, m[20] = H, m[21] = w.length, m[22] = Y, m[23] = X) : (Y = m[22], X = m[23]), useEffect(Y, X);
53
+ C.length,
54
+ A
55
+ ], p[17] = A, p[18] = H, p[19] = C.length, p[20] = Y, p[21] = X) : (Y = p[20], X = p[21]), useEffect(Y, X);
58
56
  let Z;
59
- m[24] !== y || m[25] !== B || m[26] !== K || m[27] !== b || m[28] !== R || m[29] !== I || m[30] !== _ || m[31] !== h ? (Z = R && /* @__PURE__ */ jsx(WorkflowGraph_default, {
60
- parentWorkflow: b,
57
+ p[22] !== v || p[23] !== B || p[24] !== K || p[25] !== y || p[26] !== R || p[27] !== I || p[28] !== g || p[29] !== m ? (Z = R && /* @__PURE__ */ jsx(WorkflowGraph_default, {
58
+ parentWorkflow: y,
61
59
  workflow: R,
62
- workflowConfig: _,
60
+ workflowConfig: g,
63
61
  extraTransitionSources: B,
64
62
  onGraphReady: K,
65
63
  onLoadingChange: W,
66
- direction: y,
64
+ direction: v,
67
65
  hideSameStateTransitions: !I
68
- }, h), m[24] = y, m[25] = B, m[26] = K, m[27] = b, m[28] = R, m[29] = I, m[30] = _, m[31] = h, m[32] = Z) : Z = m[32];
66
+ }, m), p[22] = v, p[23] = B, p[24] = K, p[25] = y, p[26] = R, p[27] = I, p[28] = g, p[29] = m, p[30] = Z) : Z = p[30];
69
67
  let Q;
70
- m[33] !== O || m[34] !== H || m[35] !== w || m[36] !== A || m[37] !== E || m[38] !== I ? (Q = H && w.length === 0 ? /* @__PURE__ */ jsx("div", {
68
+ p[31] !== D || p[32] !== H || p[33] !== C || p[34] !== k || p[35] !== T || p[36] !== I ? (Q = H && C.length === 0 ? /* @__PURE__ */ jsx("div", {
71
69
  className: "flex h-full items-center justify-center",
72
70
  children: /* @__PURE__ */ jsx(Loader2, { className: "text-muted-foreground h-8 w-8 animate-spin" })
73
- }) : w.length === 0 ? /* @__PURE__ */ jsx("div", {
71
+ }) : C.length === 0 ? /* @__PURE__ */ jsx("div", {
74
72
  className: "text-muted-foreground flex h-full items-center justify-center",
75
73
  children: /* @__PURE__ */ jsx("p", {
76
74
  className: "font-medium",
77
75
  children: "No workflow transitions available"
78
76
  })
79
77
  }) : /* @__PURE__ */ jsxs(index, {
80
- nodes: w,
81
- edges: O,
82
- onNodesChange: E,
83
- onEdgesChange: A,
78
+ nodes: C,
79
+ edges: D,
80
+ onNodesChange: T,
81
+ onEdgesChange: k,
84
82
  nodeTypes,
85
83
  edgeTypes,
86
84
  fitView: !0,
@@ -110,12 +108,12 @@ var nodeTypes = { stateNode: StateNode_default }, edgeTypes = { workflowTransiti
110
108
  }),
111
109
  /* @__PURE__ */ jsx(Controls, { className: "bg-card border-border rounded-lg border shadow-md" })
112
110
  ]
113
- }), m[33] = O, m[34] = H, m[35] = w, m[36] = A, m[37] = E, m[38] = I, m[39] = Q) : Q = m[39];
111
+ }), p[31] = D, p[32] = H, p[33] = C, p[34] = k, p[35] = T, p[36] = I, p[37] = Q) : Q = p[37];
114
112
  let $;
115
- return m[40] !== Z || m[41] !== Q ? ($ = /* @__PURE__ */ jsxs("div", {
113
+ return p[38] !== Z || p[39] !== Q ? ($ = /* @__PURE__ */ jsxs("div", {
116
114
  className: "h-full w-full",
117
115
  children: [Z, Q]
118
- }), m[40] = Z, m[41] = Q, m[42] = $) : $ = m[42], $;
116
+ }), p[38] = Z, p[39] = Q, p[40] = $) : $ = p[40], $;
119
117
  };
120
118
  function _temp(t) {
121
119
  return t;
@@ -1,6 +1,5 @@
1
+ import { useDocumentConfigs } from "../../hooks/useConfig.js";
1
2
  import CompletionMessagePaper_default from "../../components/messages/CompletionMessagePaper.js";
2
- import { useFeatureRegistry } from "../feature-registry/FeatureRegistryProvider.js";
3
- import "../feature-registry/index.js";
4
3
  import OAuthPromptRenderer_default from "../oauth/OAuthPromptRenderer.js";
5
4
  import "../oauth/index.js";
6
5
  import AiMessage_default from "./renderers/AiMessage.js";
@@ -15,6 +14,8 @@ import LlmMessage_default from "./renderers/LlmMessage.js";
15
14
  import MarkdownMessageRenderer_default from "./renderers/MarkdownMessageRenderer.js";
16
15
  import PlainMessageRenderer_default from "./renderers/PlainMessageRenderer.js";
17
16
  import TextPromptRenderer_default from "./renderers/TextPromptRenderer.js";
17
+ import { useFeatureRegistry } from "../feature-registry/FeatureRegistryProvider.js";
18
+ import "../feature-registry/index.js";
18
19
  import { c } from "react/compiler-runtime";
19
20
  import React, { useMemo } from "react";
20
21
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
@@ -31,12 +32,12 @@ var coreRendererRegistry = new Map([
31
32
  className: "mb-4 flex",
32
33
  children: /* @__PURE__ */ jsx(DocumentDebugRenderer_default, { document: e })
33
34
  })],
34
- ["form", ({ parentWorkflow: _, workflow: v, document: y, isActive: b }) => /* @__PURE__ */ jsx(CompletionMessagePaper_default, {
35
+ ["form", ({ parentWorkflow: e, workflow: v, document: y, isActive: b }) => /* @__PURE__ */ jsx(CompletionMessagePaper_default, {
35
36
  role: "document",
36
37
  fullWidth: !0,
37
38
  timestamp: new Date(y.createdAt),
38
39
  children: /* @__PURE__ */ jsx(DocumentFormRenderer_default, {
39
- parentWorkflow: _,
40
+ parentWorkflow: e,
40
41
  workflow: v,
41
42
  document: y,
42
43
  enabled: b,
@@ -73,23 +74,23 @@ var coreRendererRegistry = new Map([
73
74
  isActive: y
74
75
  })]
75
76
  ]);
76
- function resolveDocumentWidget(e) {
77
+ function resolveWidgetName(e) {
77
78
  let _ = e;
78
79
  return _?.widgets?.[0]?.widget ? _.widgets[0].widget : _?.form?.widget ? _.form.widget : "form";
79
80
  }
80
- var DocumentRenderer_default = (e) => {
81
- let v = c(8), y = useFeatureRegistry(), b = e.document, x;
82
- if (v[0] !== b.ui || v[1] !== y) {
83
- let e = resolveDocumentWidget(b.ui), _;
84
- if (v[3] !== y) {
81
+ var DocumentRenderer_default = (_) => {
82
+ let v = c(9), y = useFeatureRegistry(), b = useDocumentConfigs(), x = _.document, S;
83
+ if (v[0] !== x.documentName || v[1] !== b || v[2] !== y) {
84
+ let e = resolveWidgetName(b.get(x.documentName)?.ui), _;
85
+ if (v[4] !== y) {
85
86
  _ = /* @__PURE__ */ new Map();
86
87
  for (let e of y) if (e.documentRenderers) for (let [v, y] of Object.entries(e.documentRenderers)) _.set(v, y);
87
- v[3] = y, v[4] = _;
88
- } else _ = v[4];
89
- let S = _;
90
- x = coreRendererRegistry.get(e) ?? S.get(e), v[0] = b.ui, v[1] = y, v[2] = x;
91
- } else x = v[2];
92
- let S = x, C;
93
- return v[5] !== S || v[6] !== e ? (C = /* @__PURE__ */ jsx("div", { children: S ? /* @__PURE__ */ jsx(S, { ...e }) : /* @__PURE__ */ jsx(Fragment$1, { children: "unknown document type" }) }), v[5] = S, v[6] = e, v[7] = C) : C = v[7], C;
88
+ v[4] = y, v[5] = _;
89
+ } else _ = v[5];
90
+ let C = _;
91
+ S = coreRendererRegistry.get(e) ?? C.get(e), v[0] = x.documentName, v[1] = b, v[2] = y, v[3] = S;
92
+ } else S = v[3];
93
+ let C = S, w;
94
+ return v[6] !== C || v[7] !== _ ? (w = /* @__PURE__ */ jsx("div", { children: C ? /* @__PURE__ */ jsx(C, { ..._ }) : /* @__PURE__ */ jsx(Fragment$1, { children: "unknown document type" }) }), v[6] = C, v[7] = _, v[8] = w) : w = v[8], w;
94
95
  };
95
96
  export { DocumentRenderer_default as default };
@@ -1,27 +1,49 @@
1
+ import { useDocumentConfigs } from "../../../hooks/useConfig.js";
2
+ import { FadeIn } from "../../../components/motion/FadeIn.js";
1
3
  import DocumentRenderer_default from "../DocumentRenderer.js";
2
4
  import DocumentMetadataPills_default from "./DocumentMetadataPills.js";
3
5
  import { c } from "react/compiler-runtime";
4
6
  import React from "react";
5
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
6
8
  import { omit } from "lodash";
7
- var DocumentItem_default = (s) => {
8
- let l = c(13), { document: u, workflow: d, parentWorkflow: f, isActive: p, isLastItem: m, settings: h } = s, g = u.meta, _;
9
- l[0] !== u || l[1] !== p || l[2] !== m || l[3] !== f || l[4] !== d ? (_ = /* @__PURE__ */ jsx(DocumentRenderer_default, {
10
- document: u,
11
- workflow: d,
12
- parentWorkflow: f,
13
- isActive: p,
14
- isLastItem: m
15
- }), l[0] = u, l[1] = p, l[2] = m, l[3] = f, l[4] = d, l[5] = _) : _ = l[5];
16
- let v;
17
- l[6] !== u || l[7] !== g || l[8] !== h.enableDebugMode ? (v = h.enableDebugMode ? /* @__PURE__ */ jsx(DocumentMetadataPills_default, { metaData: {
18
- ...g?.data ?? {},
19
- document: {
20
- ...u,
21
- meta: omit(g ?? {}, ["data"])
22
- }
23
- } }) : /* @__PURE__ */ jsx(Fragment$1, {}), l[6] = u, l[7] = g, l[8] = h.enableDebugMode, l[9] = v) : v = l[9];
24
- let y;
25
- return l[10] !== _ || l[11] !== v ? (y = /* @__PURE__ */ jsxs(Fragment$1, { children: [_, v] }), l[10] = _, l[11] = v, l[12] = y) : y = l[12], y;
9
+ var DocumentItem_default = (l) => {
10
+ let u = c(27), { document: d, workflow: f, parentWorkflow: p, isActive: m, isLastItem: h, settings: g } = l, _ = useDocumentConfigs(), v;
11
+ if (u[0] !== d || u[1] !== _ || u[2] !== m || u[3] !== h || u[4] !== p || u[5] !== g.enableDebugMode || u[6] !== f) {
12
+ let e = _.get(d.documentName)?.meta, s = d.meta, l = d.place === f.place || !!e?.enableAtPlaces?.includes(f.place), y;
13
+ u[8] !== p.id || u[9] !== p.title || u[10] !== f.id ? (y = p.id === f.id ? {} : {
14
+ parentWorkflowId: p.id,
15
+ parentTitle: p.title
16
+ }, u[8] = p.id, u[9] = p.title, u[10] = f.id, u[11] = y) : y = u[11];
17
+ let b;
18
+ u[12] !== m || u[13] !== l || u[14] !== y || u[15] !== f.id || u[16] !== f.place || u[17] !== f.status || u[18] !== f.title || u[19] !== f.workflowName ? (b = {
19
+ workflowId: f.id,
20
+ workflowName: f.workflowName,
21
+ title: f.title,
22
+ status: f.status,
23
+ place: f.place,
24
+ isActive: m,
25
+ isDocumentActive: l,
26
+ ...y
27
+ }, u[12] = m, u[13] = l, u[14] = y, u[15] = f.id, u[16] = f.place, u[17] = f.status, u[18] = f.title, u[19] = f.workflowName, u[20] = b) : b = u[20];
28
+ let x = b, S;
29
+ u[21] !== d || u[22] !== m || u[23] !== h || u[24] !== p || u[25] !== f ? (S = /* @__PURE__ */ jsx(DocumentRenderer_default, {
30
+ document: d,
31
+ workflow: f,
32
+ parentWorkflow: p,
33
+ isActive: m,
34
+ isLastItem: h
35
+ }), u[21] = d, u[22] = m, u[23] = h, u[24] = p, u[25] = f, u[26] = S) : S = u[26], v = /* @__PURE__ */ jsxs(FadeIn, { children: [S, g.enableDebugMode ? /* @__PURE__ */ jsx(DocumentMetadataPills_default, { metaData: {
36
+ ...s?.data ?? {},
37
+ document: {
38
+ data: Object.assign({}, omit(d, ["content"]), {
39
+ meta: d.meta,
40
+ staticMeta: e
41
+ }),
42
+ content: d.content,
43
+ workflowContext: x
44
+ }
45
+ } }) : null] }), u[0] = d, u[1] = _, u[2] = m, u[3] = h, u[4] = p, u[5] = g.enableDebugMode, u[6] = f, u[7] = v;
46
+ } else v = u[7];
47
+ return v;
26
48
  };
27
49
  export { DocumentItem_default as default };
@@ -1,3 +1,4 @@
1
+ import { useDocumentConfigs } from "../../../hooks/useConfig.js";
1
2
  import { WorkflowState } from "../../../packages/contracts/dist/enums/workflow-state.enum.js";
2
3
  import "../../../packages/contracts/dist/enums/index.js";
3
4
  import DocumentItem_default from "./DocumentItem.js";
@@ -5,44 +6,41 @@ import { c } from "react/compiler-runtime";
5
6
  import React, { useEffect } from "react";
6
7
  import { jsx } from "react/jsx-runtime";
7
8
  import { useParams } from "react-router-dom";
8
- var DocumentList_default = (a) => {
9
- let s = c(23), { workflow: l, childWorkflow: u, documents: d, scrollTo: f, settings: p } = a, { workflowId: m, clickId: h } = useParams(), g;
10
- s[0] !== u.id || s[1] !== m || s[2] !== f ? (g = () => {
11
- m === u.id && f(u.id);
12
- }, s[0] = u.id, s[1] = m, s[2] = f, s[3] = g) : g = s[3];
13
- let _;
14
- s[4] !== u.id || s[5] !== h || s[6] !== m || s[7] !== f ? (_ = [
15
- u.id,
16
- m,
17
- h,
18
- f
19
- ], s[4] = u.id, s[5] = h, s[6] = m, s[7] = f, s[8] = _) : _ = s[8], useEffect(g, _);
20
- let v = u.status === WorkflowState.Waiting, y;
21
- if (s[9] !== u || s[10] !== d || s[11] !== v || s[12] !== p || s[13] !== l) {
9
+ function getDocumentKey(e) {
10
+ let o = e.content;
11
+ return e.documentName === "llm_message" && typeof o?.id == "string" ? `llm-message-${o.id}` : e.id;
12
+ }
13
+ var DocumentList_default = (l) => {
14
+ let u = c(25), { workflow: d, childWorkflow: f, documents: p, scrollTo: m, settings: h } = l, { workflowId: g, clickId: _ } = useParams(), v = useDocumentConfigs(), y;
15
+ u[0] !== f.id || u[1] !== g || u[2] !== m ? (y = () => {
16
+ g === f.id && m(f.id);
17
+ }, u[0] = f.id, u[1] = g, u[2] = m, u[3] = y) : y = u[3];
18
+ let b;
19
+ u[4] !== f.id || u[5] !== _ || u[6] !== g || u[7] !== m ? (b = [
20
+ f.id,
21
+ g,
22
+ _,
23
+ m
24
+ ], u[4] = f.id, u[5] = _, u[6] = g, u[7] = m, u[8] = b) : b = u[8], useEffect(y, b);
25
+ let x = f.status === WorkflowState.Waiting, S;
26
+ if (u[9] !== f || u[10] !== v || u[11] !== p || u[12] !== x || u[13] !== h || u[14] !== d) {
22
27
  let e;
23
- s[15] !== u || s[16] !== d.length || s[17] !== v || s[18] !== p || s[19] !== l ? (e = (e, i) => {
24
- let a = e, o = e.place === u.place || !!a.meta?.enableAtPlaces?.includes(u.place);
25
- return console.log({
26
- isDocumentActive: o,
27
- isWorkflowActive: v,
28
- status: u.status,
29
- place: u.place,
30
- documentPlace: e.place,
31
- availableTransitions: u.availableTransitions
32
- }), /* @__PURE__ */ jsx(DocumentItem_default, {
28
+ u[16] !== f || u[17] !== v || u[18] !== p.length || u[19] !== x || u[20] !== h || u[21] !== d ? (e = (e, o) => {
29
+ let s = v.get(e.documentName), l = e.place === f.place || !!s?.meta?.enableAtPlaces?.includes(f.place);
30
+ return /* @__PURE__ */ jsx(DocumentItem_default, {
33
31
  document: e,
34
- workflow: u,
35
- parentWorkflow: l,
36
- isActive: v && o,
37
- isLastItem: i === d.length - 1,
38
- settings: p
39
- }, e.id);
40
- }, s[15] = u, s[16] = d.length, s[17] = v, s[18] = p, s[19] = l, s[20] = e) : e = s[20], y = d.map(e), s[9] = u, s[10] = d, s[11] = v, s[12] = p, s[13] = l, s[14] = y;
41
- } else y = s[14];
42
- let b;
43
- return s[21] === y ? b = s[22] : (b = /* @__PURE__ */ jsx("div", {
32
+ workflow: f,
33
+ parentWorkflow: d,
34
+ isActive: x && l,
35
+ isLastItem: o === p.length - 1,
36
+ settings: h
37
+ }, getDocumentKey(e));
38
+ }, u[16] = f, u[17] = v, u[18] = p.length, u[19] = x, u[20] = h, u[21] = d, u[22] = e) : e = u[22], S = p.map(e), u[9] = f, u[10] = v, u[11] = p, u[12] = x, u[13] = h, u[14] = d, u[15] = S;
39
+ } else S = u[15];
40
+ let C;
41
+ return u[23] === S ? C = u[24] : (C = /* @__PURE__ */ jsx("div", {
44
42
  className: "flex flex-col gap-3",
45
- children: y
46
- }), s[21] = y, s[22] = b), b;
43
+ children: S
44
+ }), u[23] = S, u[24] = C), C;
47
45
  };
48
46
  export { DocumentList_default as default };
@@ -5,59 +5,112 @@ import PromptDetails_default from "../document-details/PromptDetails.js";
5
5
  import { c } from "react/compiler-runtime";
6
6
  import { useState } from "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
- var DefaultMetadataRenderer = (e) => {
9
- let s = c(4), { data: l } = e, u;
10
- s[0] === l ? u = s[1] : (u = JSON.stringify(l, null, 2), s[0] = l, s[1] = u);
8
+ var PILL_LABELS = {
9
+ document: "Document",
10
+ prompt: "LLM prompt"
11
+ };
12
+ function formatPillLabel(e) {
13
+ return PILL_LABELS[e] ? PILL_LABELS[e] : e.replace(/([A-Z])/g, " $1").replace(/^./, (e) => e.toUpperCase());
14
+ }
15
+ function isDocumentDebugPayload(e) {
16
+ return typeof e == "object" && !!e && "data" in e && "workflowContext" in e;
17
+ }
18
+ var StructuredMetadataRenderer = (e) => {
19
+ let l = c(2), { data: u } = e, d;
20
+ return l[0] === u ? d = l[1] : (d = /* @__PURE__ */ jsx("div", {
21
+ className: "min-w-0 space-y-2",
22
+ children: Object.entries(u).map(_temp)
23
+ }), l[0] = u, l[1] = d), d;
24
+ }, DefaultMetadataRenderer = (e) => {
25
+ let l = c(6), { data: u } = e;
26
+ if (u && typeof u == "object" && !Array.isArray(u)) {
27
+ let e = u, d;
28
+ return l[0] === e ? d = l[1] : (d = /* @__PURE__ */ jsx(StructuredMetadataRenderer, { data: e }), l[0] = e, l[1] = d), d;
29
+ }
11
30
  let d;
12
- return s[2] === u ? d = s[3] : (d = /* @__PURE__ */ jsx("div", {
13
- className: "bg-muted max-h-96 overflow-auto rounded-md p-4 font-mono whitespace-pre-wrap",
14
- children: u
15
- }), s[2] = u, s[3] = d), d;
31
+ l[2] === u ? d = l[3] : (d = JSON.stringify(u, null, 2), l[2] = u, l[3] = d);
32
+ let f;
33
+ return l[4] === d ? f = l[5] : (f = /* @__PURE__ */ jsx("pre", {
34
+ className: "bg-muted max-h-96 min-w-0 max-w-full overflow-x-auto overflow-y-auto rounded-md p-4 font-mono text-xs whitespace-pre-wrap",
35
+ children: d
36
+ }), l[4] = d, l[5] = f), f;
16
37
  }, metadataRenderers = {
17
38
  prompt: (e) => /* @__PURE__ */ jsx(PromptDetails_default, { promptData: e }),
18
- document: (e) => /* @__PURE__ */ jsx(DocumentDetails_default, { data: e })
19
- }, DocumentMetadataPills_default = (f) => {
20
- let p = c(13), { metaData: m } = f, [h, g] = useState(null), [_, v] = useState(null), [y, b] = useState(!1), x;
21
- p[0] === Symbol.for("react.memo_cache_sentinel") ? (x = (e, s) => {
22
- g(e), v(s), b(!0);
23
- }, p[0] = x) : x = p[0];
24
- let S = x, C;
25
- p[1] === h ? C = p[2] : (C = (e) => e && metadataRenderers[e] ? metadataRenderers[e](h) : /* @__PURE__ */ jsx(DefaultMetadataRenderer, { data: h }), p[1] = h, p[2] = C);
26
- let w = C, T;
27
- p[3] === m ? T = p[4] : (T = /* @__PURE__ */ jsx("div", {
28
- className: "mb-8 flex flex-wrap gap-2",
29
- children: Object.entries(m).map((s) => {
30
- let [l, u] = s;
31
- return /* @__PURE__ */ jsx(Badge, {
32
- variant: "outline",
33
- className: "hover:bg-accent hover:text-accent-foreground cursor-pointer rounded-full px-3 py-1 transition-colors",
34
- onClick: () => S(u, l),
35
- children: l
36
- }, l);
37
- })
38
- }), p[3] = m, p[4] = T);
39
+ document: (e) => isDocumentDebugPayload(e) ? /* @__PURE__ */ jsx(DocumentDetails_default, {
40
+ data: e.data,
41
+ content: e.content,
42
+ workflowContext: e.workflowContext
43
+ }) : /* @__PURE__ */ jsx(DefaultMetadataRenderer, { data: e })
44
+ }, DocumentMetadataPills_default = (p) => {
45
+ let m = c(29), { metaData: h } = p, [g, _] = useState(null), [v, y] = useState(null), [b, x] = useState(!1), S, C, w, T;
46
+ if (m[0] !== h || m[1] !== g) {
47
+ T = Symbol.for("react.early_return_sentinel");
48
+ bb0: {
49
+ let l = Object.entries(h);
50
+ if (l.length === 0) {
51
+ T = null;
52
+ break bb0;
53
+ }
54
+ let u = (e, l) => {
55
+ _(e), y(l), x(!0);
56
+ }, d;
57
+ m[6] === g ? d = m[7] : (d = (e) => e && metadataRenderers[e] ? metadataRenderers[e](g) : /* @__PURE__ */ jsx(DefaultMetadataRenderer, { data: g }), m[6] = g, m[7] = d), S = d, C = "mb-8 flex flex-wrap items-center gap-2", w = l.map((l) => {
58
+ let [d, f] = l;
59
+ return /* @__PURE__ */ jsx(Badge, {
60
+ variant: "outline",
61
+ className: "hover:bg-accent hover:text-accent-foreground cursor-pointer rounded-full px-3 py-1 transition-colors",
62
+ onClick: () => u(f, d),
63
+ children: formatPillLabel(d)
64
+ }, d);
65
+ });
66
+ }
67
+ m[0] = h, m[1] = g, m[2] = S, m[3] = C, m[4] = w, m[5] = T;
68
+ } else S = m[2], C = m[3], w = m[4], T = m[5];
69
+ if (T !== Symbol.for("react.early_return_sentinel")) return T;
39
70
  let E;
40
- p[5] !== w || p[6] !== y || p[7] !== h || p[8] !== _ ? (E = h && /* @__PURE__ */ jsx(Dialog, {
41
- open: y,
42
- onOpenChange: b,
43
- children: /* @__PURE__ */ jsxs(DialogContent, {
44
- className: "max-h-3/4 max-w-2xl overflow-auto",
45
- children: [/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsxs(DialogTitle, {
46
- className: "flex items-center gap-2",
47
- children: [_, /* @__PURE__ */ jsx("span", {
48
- className: "text-muted-foreground text-xs font-normal",
49
- children: "Metadata"
50
- })]
51
- }) }), /* @__PURE__ */ jsx("div", {
52
- className: "mt-4",
53
- children: w(_)
54
- })]
55
- })
56
- }), p[5] = w, p[6] = y, p[7] = h, p[8] = _, p[9] = E) : E = p[9];
71
+ m[8] !== C || m[9] !== w ? (E = /* @__PURE__ */ jsx("div", {
72
+ className: C,
73
+ children: w
74
+ }), m[8] = C, m[9] = w, m[10] = E) : E = m[10];
57
75
  let D;
58
- return p[10] !== T || p[11] !== E ? (D = /* @__PURE__ */ jsxs("div", {
59
- className: "px-6",
60
- children: [T, E]
61
- }), p[10] = T, p[11] = E, p[12] = D) : D = p[12], D;
76
+ m[11] === v ? D = m[12] : (D = v ? formatPillLabel(v) : "Debug", m[11] = v, m[12] = D);
77
+ let O;
78
+ m[13] === D ? O = m[14] : (O = /* @__PURE__ */ jsx(DialogHeader, {
79
+ className: "shrink-0",
80
+ children: /* @__PURE__ */ jsx(DialogTitle, { children: D })
81
+ }), m[13] = D, m[14] = O);
82
+ let k;
83
+ m[15] !== S || m[16] !== v ? (k = v && S(v), m[15] = S, m[16] = v, m[17] = k) : k = m[17];
84
+ let A;
85
+ m[18] === k ? A = m[19] : (A = /* @__PURE__ */ jsx("div", {
86
+ className: "min-h-0 min-w-0 flex-1 overflow-x-hidden overflow-y-auto",
87
+ children: k
88
+ }), m[18] = k, m[19] = A);
89
+ let j;
90
+ m[20] !== O || m[21] !== A ? (j = /* @__PURE__ */ jsxs(DialogContent, {
91
+ className: "flex max-h-[85vh] w-full max-w-2xl flex-col overflow-hidden",
92
+ children: [O, A]
93
+ }), m[20] = O, m[21] = A, m[22] = j) : j = m[22];
94
+ let M;
95
+ m[23] !== b || m[24] !== j ? (M = /* @__PURE__ */ jsx(Dialog, {
96
+ open: b,
97
+ onOpenChange: x,
98
+ children: j
99
+ }), m[23] = b, m[24] = j, m[25] = M) : M = m[25];
100
+ let N;
101
+ return m[26] !== M || m[27] !== E ? (N = /* @__PURE__ */ jsxs("div", { children: [E, M] }), m[26] = M, m[27] = E, m[28] = N) : N = m[28], N;
62
102
  };
103
+ function _temp(e) {
104
+ let [l, u] = e;
105
+ return /* @__PURE__ */ jsxs("div", {
106
+ className: "grid min-w-0 grid-cols-[7.5rem_1fr] gap-x-3 text-sm",
107
+ children: [/* @__PURE__ */ jsx("span", {
108
+ className: "text-muted-foreground font-medium",
109
+ children: formatPillLabel(l)
110
+ }), /* @__PURE__ */ jsx("span", {
111
+ className: "min-w-0 overflow-x-auto font-mono text-xs wrap-break-word",
112
+ children: typeof u == "object" ? JSON.stringify(u, null, 2) : String(u)
113
+ })]
114
+ }, l);
115
+ }
63
116
  export { DocumentMetadataPills_default as default };