@loopstack/loopstack-studio 0.26.1 → 0.27.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.
@@ -7,25 +7,27 @@ var UiActions_default = (i) => {
7
7
  if (a[0] !== o || a[1] !== s || a[2] !== l || a[3] !== u || a[4] !== f || a[5] !== d) {
8
8
  let r;
9
9
  a[7] !== s || a[8] !== l || a[9] !== u || a[10] !== f || a[11] !== d ? (r = (r, i) => {
10
- let { enabledWhen: a } = r, o = r.options?.transition, p = u || a !== void 0 && (!l || !a.includes(l)) || o !== void 0 && !s.includes(o);
10
+ let { enabledWhen: a, showWhen: o } = r, p = r.options?.transition;
11
+ if (o !== void 0 && (!l || !o.includes(l))) return null;
12
+ let m = u || a !== void 0 && (!l || !a.includes(l)) || p !== void 0 && !s.includes(p);
11
13
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(UiWidget_default, {
12
14
  config: r,
13
15
  onSubmit: (e) => {
14
16
  if (console.log("[UiActions] handleSubmit called", {
15
- transition: o,
17
+ transition: p,
16
18
  data: e,
17
- isDisabled: p,
19
+ isDisabled: m,
18
20
  currentPlace: l,
19
21
  availableTransitions: s
20
- }), !o) {
22
+ }), !p) {
21
23
  console.error(`[UiActions] Widget "${r.widget}" has no transition configured.`);
22
24
  return;
23
25
  }
24
- d(o, e);
26
+ d(p, e);
25
27
  },
26
- disabled: p,
28
+ disabled: m,
27
29
  isLoading: f
28
- }) }, `ui-widget-${i}-${o ?? r.widget}`);
30
+ }) }, `ui-widget-${i}-${p ?? r.widget}`);
29
31
  }, a[7] = s, a[8] = l, a[9] = u, a[10] = f, a[11] = d, a[12] = r) : r = a[12], p = o.map(r), a[0] = o, a[1] = s, a[2] = l, a[3] = u, a[4] = f, a[5] = d, a[6] = p;
30
32
  } else p = a[6];
31
33
  let m;
@@ -1,55 +1,56 @@
1
+ import MarkdownContent_default from "../../../components/dynamic-form/MarkdownContent.js";
1
2
  import { c } from "react/compiler-runtime";
2
3
  import React from "react";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
- var getDataUrl = (e, n) => e instanceof URL ? e.toString() : typeof e == "string" ? `data:${n || "application/octet-stream"};base64,${e}` : "#", TextPartRenderer = (n) => {
5
- let r = c(2), { part: i } = n, a;
6
- return r[0] === i.text ? a = r[1] : (a = /* @__PURE__ */ jsx("div", {
5
+ var getDataUrl = (e, r) => e instanceof URL ? e.toString() : typeof e == "string" ? `data:${r || "application/octet-stream"};base64,${e}` : "#", TextPartRenderer = (e) => {
6
+ let i = c(2), { part: a } = e, o;
7
+ return i[0] === a.text ? o = i[1] : (o = /* @__PURE__ */ jsx("div", {
7
8
  className: "text-sm leading-relaxed whitespace-pre-wrap",
8
- children: i.text
9
- }), r[0] = i.text, r[1] = a), a;
10
- }, ImagePartRenderer = (n) => {
11
- let a = c(11), { part: o } = n, s;
12
- a[0] !== o.image || a[1] !== o.mediaType ? (s = getDataUrl(o.image, o.mediaType), a[0] = o.image, a[1] = o.mediaType, a[2] = s) : s = a[2];
13
- let l;
14
- a[3] === Symbol.for("react.memo_cache_sentinel") ? (l = { maxHeight: "400px" }, a[3] = l) : l = a[3];
9
+ children: a.text
10
+ }), i[0] = a.text, i[1] = o), o;
11
+ }, ImagePartRenderer = (e) => {
12
+ let i = c(11), { part: s } = e, l;
13
+ i[0] !== s.image || i[1] !== s.mediaType ? (l = getDataUrl(s.image, s.mediaType), i[0] = s.image, i[1] = s.mediaType, i[2] = l) : l = i[2];
15
14
  let u;
16
- a[4] === s ? u = a[5] : (u = /* @__PURE__ */ jsx("img", {
17
- src: s,
15
+ i[3] === Symbol.for("react.memo_cache_sentinel") ? (u = { maxHeight: "400px" }, i[3] = u) : u = i[3];
16
+ let d;
17
+ i[4] === l ? d = i[5] : (d = /* @__PURE__ */ jsx("img", {
18
+ src: l,
18
19
  alt: "Uploaded image",
19
20
  className: "h-auto max-w-full rounded-lg border shadow-sm",
20
- style: l
21
- }), a[4] = s, a[5] = u);
22
- let d;
23
- a[6] === o.mediaType ? d = a[7] : (d = o.mediaType && /* @__PURE__ */ jsxs("div", {
24
- className: "mt-1 text-xs text-gray-500",
25
- children: ["Type: ", o.mediaType]
26
- }), a[6] = o.mediaType, a[7] = d);
21
+ style: u
22
+ }), i[4] = l, i[5] = d);
27
23
  let f;
28
- return a[8] !== u || a[9] !== d ? (f = /* @__PURE__ */ jsxs("div", { children: [u, d] }), a[8] = u, a[9] = d, a[10] = f) : f = a[10], f;
29
- }, FilePartRenderer = (n) => {
30
- let i = c(8), { part: a } = n, o;
31
- i[0] === Symbol.for("react.memo_cache_sentinel") ? (o = /* @__PURE__ */ jsx("div", {
24
+ i[6] === s.mediaType ? f = i[7] : (f = s.mediaType && /* @__PURE__ */ jsxs("div", {
25
+ className: "mt-1 text-xs text-gray-500",
26
+ children: ["Type: ", s.mediaType]
27
+ }), i[6] = s.mediaType, i[7] = f);
28
+ let p;
29
+ return i[8] !== d || i[9] !== f ? (p = /* @__PURE__ */ jsxs("div", { children: [d, f] }), i[8] = d, i[9] = f, i[10] = p) : p = i[10], p;
30
+ }, FilePartRenderer = (e) => {
31
+ let i = c(8), { part: o } = e, s;
32
+ i[0] === Symbol.for("react.memo_cache_sentinel") ? (s = /* @__PURE__ */ jsx("div", {
32
33
  className: "text-2xl",
33
34
  children: "📎"
34
- }), i[0] = o) : o = i[0];
35
- let s = a.filename || "Unnamed file", l;
36
- i[1] === s ? l = i[2] : (l = /* @__PURE__ */ jsx("div", {
35
+ }), i[0] = s) : s = i[0];
36
+ let l = o.filename || "Unnamed file", u;
37
+ i[1] === l ? u = i[2] : (u = /* @__PURE__ */ jsx("div", {
37
38
  className: "text-sm font-medium",
38
- children: s
39
- }), i[1] = s, i[2] = l);
40
- let u;
41
- i[3] === a.mediaType ? u = i[4] : (u = /* @__PURE__ */ jsx("div", {
42
- className: "text-xs text-gray-500",
43
- children: a.mediaType
44
- }), i[3] = a.mediaType, i[4] = u);
39
+ children: l
40
+ }), i[1] = l, i[2] = u);
45
41
  let d;
46
- return i[5] !== l || i[6] !== u ? (d = /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", {
42
+ i[3] === o.mediaType ? d = i[4] : (d = /* @__PURE__ */ jsx("div", {
43
+ className: "text-xs text-gray-500",
44
+ children: o.mediaType
45
+ }), i[3] = o.mediaType, i[4] = d);
46
+ let f;
47
+ return i[5] !== u || i[6] !== d ? (f = /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", {
47
48
  className: "flex items-center space-x-2",
48
- children: [o, /* @__PURE__ */ jsxs("div", { children: [l, u] })]
49
- }) }), i[5] = l, i[6] = u, i[7] = d) : d = i[7], d;
50
- }, ReasoningPartRenderer = (n) => {
51
- let i = c(2), { part: a } = n, o;
52
- return i[0] === a.text ? o = i[1] : (o = a.text ? /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
49
+ children: [s, /* @__PURE__ */ jsxs("div", { children: [u, d] })]
50
+ }) }), i[5] = u, i[6] = d, i[7] = f) : f = i[7], f;
51
+ }, ReasoningPartRenderer = (e) => {
52
+ let i = c(2), { part: o } = e, s;
53
+ return i[0] === o.text ? s = i[1] : (s = o.text ? /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
53
54
  className: "mb-2 flex items-center space-x-2",
54
55
  children: /* @__PURE__ */ jsx("div", {
55
56
  className: "text-sm font-medium text-purple-600",
@@ -57,118 +58,115 @@ var getDataUrl = (e, n) => e instanceof URL ? e.toString() : typeof e == "string
57
58
  })
58
59
  }), /* @__PURE__ */ jsx("div", {
59
60
  className: "text-sm whitespace-pre-wrap text-purple-800",
60
- children: a.text
61
- })] }) : "", i[0] = a.text, i[1] = o), o;
62
- }, ToolCallPartRenderer = (n) => {
63
- let i = c(17), { part: a } = n, o;
64
- i[0] === a.toolName ? o = i[1] : (o = /* @__PURE__ */ jsx("div", {
61
+ children: o.text
62
+ })] }) : "", i[0] = o.text, i[1] = s), s;
63
+ }, ToolCallPartRenderer = (e) => {
64
+ let i = c(17), { part: o } = e, s;
65
+ i[0] === o.toolName ? s = i[1] : (s = /* @__PURE__ */ jsx("div", {
65
66
  className: "text-sm font-medium",
66
- children: a.toolName
67
- }), i[0] = a.toolName, i[1] = o);
68
- let s;
69
- i[2] === a.providerExecuted ? s = i[3] : (s = a.providerExecuted && /* @__PURE__ */ jsx("span", {
67
+ children: o.toolName
68
+ }), i[0] = o.toolName, i[1] = s);
69
+ let l;
70
+ i[2] === o.providerExecuted ? l = i[3] : (l = o.providerExecuted && /* @__PURE__ */ jsx("span", {
70
71
  className: "rounded bg-green-100 px-2 py-1 text-xs text-green-800",
71
72
  children: "Executed"
72
- }), i[2] = a.providerExecuted, i[3] = s);
73
- let l;
74
- i[4] !== o || i[5] !== s ? (l = /* @__PURE__ */ jsxs("div", {
75
- className: "flex items-center space-x-2",
76
- children: [o, s]
77
- }), i[4] = o, i[5] = s, i[6] = l) : l = i[6];
73
+ }), i[2] = o.providerExecuted, i[3] = l);
78
74
  let u;
79
- i[7] === a.toolCallId ? u = i[8] : (u = /* @__PURE__ */ jsxs("div", {
80
- className: "ml-5 font-mono text-xs text-gray-500",
81
- children: ["ID: ", a.toolCallId]
82
- }), i[7] = a.toolCallId, i[8] = u);
75
+ i[4] !== s || i[5] !== l ? (u = /* @__PURE__ */ jsxs("div", {
76
+ className: "flex items-center space-x-2",
77
+ children: [s, l]
78
+ }), i[4] = s, i[5] = l, i[6] = u) : u = i[6];
83
79
  let d;
84
- i[9] !== l || i[10] !== u ? (d = /* @__PURE__ */ jsxs("div", {
85
- className: "mb-2 flex items-center justify-between",
86
- children: [l, u]
87
- }), i[9] = l, i[10] = u, i[11] = d) : d = i[11];
80
+ i[7] === o.toolCallId ? d = i[8] : (d = /* @__PURE__ */ jsxs("div", {
81
+ className: "ml-5 font-mono text-xs text-gray-500",
82
+ children: ["ID: ", o.toolCallId]
83
+ }), i[7] = o.toolCallId, i[8] = d);
88
84
  let f;
89
- i[12] === a.input ? f = i[13] : (f = a.input ? /* @__PURE__ */ jsxs("div", {
85
+ i[9] !== u || i[10] !== d ? (f = /* @__PURE__ */ jsxs("div", {
86
+ className: "mb-2 flex items-center justify-between",
87
+ children: [u, d]
88
+ }), i[9] = u, i[10] = d, i[11] = f) : f = i[11];
89
+ let p;
90
+ i[12] === o.input ? p = i[13] : (p = o.input ? /* @__PURE__ */ jsxs("div", {
90
91
  className: "rounded border bg-white p-2 text-xs",
91
92
  children: [/* @__PURE__ */ jsx("div", {
92
93
  className: "mb-1 text-gray-600",
93
94
  children: "Input:"
94
95
  }), /* @__PURE__ */ jsx("pre", {
95
96
  className: "overflow-x-auto whitespace-pre-wrap",
96
- children: JSON.stringify(a.input, null, 2)
97
+ children: JSON.stringify(o.input, null, 2)
97
98
  })]
98
- }) : "", i[12] = a.input, i[13] = f);
99
- let p;
100
- return i[14] !== d || i[15] !== f ? (p = /* @__PURE__ */ jsxs("div", { children: [d, f] }), i[14] = d, i[15] = f, i[16] = p) : p = i[16], p;
101
- }, ToolResultPartRenderer = (n) => {
102
- let i = c(14), { part: a } = n, o;
103
- i[0] === a.toolName ? o = i[1] : (o = /* @__PURE__ */ jsxs("div", {
99
+ }) : "", i[12] = o.input, i[13] = p);
100
+ let m;
101
+ return i[14] !== f || i[15] !== p ? (m = /* @__PURE__ */ jsxs("div", { children: [f, p] }), i[14] = f, i[15] = p, i[16] = m) : m = i[16], m;
102
+ }, ToolResultPartRenderer = (e) => {
103
+ let i = c(14), { part: o } = e, s;
104
+ i[0] === o.toolName ? s = i[1] : (s = /* @__PURE__ */ jsxs("div", {
104
105
  className: "text-sm font-medium",
105
- children: [a.toolName, " Result"]
106
- }), i[0] = a.toolName, i[1] = o);
107
- let s;
108
- i[2] === a.toolCallId ? s = i[3] : (s = /* @__PURE__ */ jsxs("div", {
109
- className: "ml-5 font-mono text-xs text-gray-500",
110
- children: ["ID: ", a.toolCallId]
111
- }), i[2] = a.toolCallId, i[3] = s);
106
+ children: [o.toolName, " Result"]
107
+ }), i[0] = o.toolName, i[1] = s);
112
108
  let l;
113
- i[4] !== o || i[5] !== s ? (l = /* @__PURE__ */ jsxs("div", {
114
- className: "mb-2 flex items-center justify-between",
115
- children: [o, s]
116
- }), i[4] = o, i[5] = s, i[6] = l) : l = i[6];
109
+ i[2] === o.toolCallId ? l = i[3] : (l = /* @__PURE__ */ jsxs("div", {
110
+ className: "ml-5 font-mono text-xs text-gray-500",
111
+ children: ["ID: ", o.toolCallId]
112
+ }), i[2] = o.toolCallId, i[3] = l);
117
113
  let u;
118
- i[7] === a.output ? u = i[8] : (u = JSON.stringify(a.output, null, 2), i[7] = a.output, i[8] = u);
114
+ i[4] !== s || i[5] !== l ? (u = /* @__PURE__ */ jsxs("div", {
115
+ className: "mb-2 flex items-center justify-between",
116
+ children: [s, l]
117
+ }), i[4] = s, i[5] = l, i[6] = u) : u = i[6];
119
118
  let d;
120
- i[9] === u ? d = i[10] : (d = /* @__PURE__ */ jsx("div", {
119
+ i[7] === o.output ? d = i[8] : (d = JSON.stringify(o.output, null, 2), i[7] = o.output, i[8] = d);
120
+ let f;
121
+ i[9] === d ? f = i[10] : (f = /* @__PURE__ */ jsx("div", {
121
122
  className: "rounded border bg-white p-2 text-xs",
122
123
  children: /* @__PURE__ */ jsx("pre", {
123
124
  className: "overflow-x-auto whitespace-pre-wrap",
124
- children: u
125
+ children: d
125
126
  })
126
- }), i[9] = u, i[10] = d);
127
- let f;
128
- return i[11] !== l || i[12] !== d ? (f = /* @__PURE__ */ jsxs("div", { children: [l, d] }), i[11] = l, i[12] = d, i[13] = f) : f = i[13], f;
129
- }, AiMessageContent_default = (n) => {
130
- let i = c(4), { message: o } = n, s = _temp, l;
131
- i[0] === o ? l = i[1] : (l = () => {
132
- if (o.role === "system") return /* @__PURE__ */ jsxs("div", {
127
+ }), i[9] = d, i[10] = f);
128
+ let p;
129
+ return i[11] !== u || i[12] !== f ? (p = /* @__PURE__ */ jsxs("div", { children: [u, f] }), i[11] = u, i[12] = f, i[13] = p) : p = i[13], p;
130
+ }, AiMessageContent_default = (i) => {
131
+ let o = c(4), { message: s } = i, l = _temp, u;
132
+ o[0] === s ? u = o[1] : (u = () => {
133
+ if (s.role === "system") return /* @__PURE__ */ jsxs("div", {
133
134
  className: "rounded-lg border-l-4 border-gray-400 bg-gray-50 p-3 text-sm text-gray-600 italic",
134
135
  children: [/* @__PURE__ */ jsx("div", {
135
136
  className: "mb-1 font-medium",
136
137
  children: "System"
137
138
  }), /* @__PURE__ */ jsx("div", {
138
139
  className: "whitespace-pre-wrap",
139
- children: o.content
140
+ children: s.content
140
141
  })]
141
142
  });
142
- let { content: e } = o;
143
- return typeof e == "string" ? /* @__PURE__ */ jsx(TextPartRenderer, { part: {
144
- type: "text",
145
- text: e
146
- } }) : Array.isArray(e) ? /* @__PURE__ */ jsx("div", {
143
+ let { content: r } = s;
144
+ return typeof r == "string" ? /* @__PURE__ */ jsx(MarkdownContent_default, { content: r }) : Array.isArray(r) ? /* @__PURE__ */ jsx("div", {
147
145
  className: "space-y-2",
148
- children: e.map((e, n) => s(e, n))
146
+ children: r.map((e, r) => l(e, r))
149
147
  }) : /* @__PURE__ */ jsx("div", {
150
148
  className: "text-sm text-red-600",
151
149
  children: "Invalid content format"
152
150
  });
153
- }, i[0] = o, i[1] = l);
154
- let u = l, d;
155
- return i[2] === u ? d = i[3] : (d = /* @__PURE__ */ jsx("div", {
151
+ }, o[0] = s, o[1] = u);
152
+ let d = u, f;
153
+ return o[2] === d ? f = o[3] : (f = /* @__PURE__ */ jsx("div", {
156
154
  className: "message-content",
157
- children: u()
158
- }), i[2] = u, i[3] = d), d;
155
+ children: d()
156
+ }), o[2] = d, o[3] = f), f;
159
157
  };
160
- function _temp(e, n) {
158
+ function _temp(e, r) {
161
159
  switch (e.type) {
162
- case "text": return /* @__PURE__ */ jsx(TextPartRenderer, { part: e }, n);
163
- case "image": return /* @__PURE__ */ jsx(ImagePartRenderer, { part: e }, n);
164
- case "file": return /* @__PURE__ */ jsx(FilePartRenderer, { part: e }, n);
165
- case "reasoning": return /* @__PURE__ */ jsx(ReasoningPartRenderer, { part: e }, n);
166
- case "tool-call": return /* @__PURE__ */ jsx(ToolCallPartRenderer, { part: e }, n);
167
- case "tool-result": return /* @__PURE__ */ jsx(ToolResultPartRenderer, { part: e }, n);
160
+ case "text": return /* @__PURE__ */ jsx(TextPartRenderer, { part: e }, r);
161
+ case "image": return /* @__PURE__ */ jsx(ImagePartRenderer, { part: e }, r);
162
+ case "file": return /* @__PURE__ */ jsx(FilePartRenderer, { part: e }, r);
163
+ case "reasoning": return /* @__PURE__ */ jsx(ReasoningPartRenderer, { part: e }, r);
164
+ case "tool-call": return /* @__PURE__ */ jsx(ToolCallPartRenderer, { part: e }, r);
165
+ case "tool-result": return /* @__PURE__ */ jsx(ToolResultPartRenderer, { part: e }, r);
168
166
  default: return /* @__PURE__ */ jsxs("div", {
169
167
  className: "rounded bg-gray-100 p-2 text-sm",
170
168
  children: ["Unknown content type: ", e.type]
171
- }, n);
169
+ }, r);
172
170
  }
173
171
  }
174
172
  export { AiMessageContent_default as default };
@@ -1,7 +1,9 @@
1
1
  import { cn } from "../../lib/utils.js";
2
+ import { Button } from "../../components/ui/button.js";
2
3
  import LoadingCentered_default from "../../components/feedback/LoadingCentered.js";
3
4
  import ErrorSnackbar_default from "../../components/feedback/ErrorSnackbar.js";
4
- import ErrorAlert_default from "../../components/feedback/ErrorAlert.js";
5
+ import { require_enums } from "../../packages/contracts/dist/enums/index.js";
6
+ import { useRunWorkflow } from "../../hooks/useProcessor.js";
5
7
  import DocumentList_default from "../documents/components/DocumentList.js";
6
8
  import "../documents/index.js";
7
9
  import WorkflowForms_default from "./components/WorkflowForms.js";
@@ -10,64 +12,94 @@ import { c } from "react/compiler-runtime";
10
12
  import React, { useEffect } from "react";
11
13
  import { jsx, jsxs } from "react/jsx-runtime";
12
14
  import { useParams } from "react-router-dom";
13
- var WorkflowItem_default = (p) => {
14
- let m = c(46), { workflow: h, workflowId: g, scrollTo: _, settings: v, embed: y } = p, { workflowId: b, clickId: x } = useParams(), S;
15
- m[0] !== v.showFullMessageHistory || m[1] !== g ? (S = {
16
- workflowId: g,
17
- showFullMessageHistory: v.showFullMessageHistory
18
- }, m[0] = v.showFullMessageHistory, m[1] = g, m[2] = S) : S = m[2];
19
- let { workflow: C, workflowLoading: w, workflowReady: T, workflowError: E, documents: D, documentsLoading: O, documentsReady: k, documentsError: A, isLoading: j, handleRun: M } = useWorkflowData(S), N;
20
- m[3] !== k || m[4] !== b || m[5] !== _ || m[6] !== g || m[7] !== T ? (N = () => {
21
- b === g && T && k && _(g);
22
- }, m[3] = k, m[4] = b, m[5] = _, m[6] = g, m[7] = T, m[8] = N) : N = m[8];
23
- let P;
24
- m[9] !== x || m[10] !== k || m[11] !== b || m[12] !== _ || m[13] !== g || m[14] !== T ? (P = [
25
- T,
26
- k,
27
- g,
28
- b,
29
- x,
30
- _
31
- ], m[9] = x, m[10] = k, m[11] = b, m[12] = _, m[13] = g, m[14] = T, m[15] = P) : P = m[15], useEffect(N, P);
32
- let F = y ? "p-0" : "p-4", I;
33
- m[16] === F ? I = m[17] : (I = cn("flex flex-col", F), m[16] = F, m[17] = I);
34
- let L = w || O, R;
35
- m[18] === L ? R = m[19] : (R = /* @__PURE__ */ jsx(LoadingCentered_default, { loading: L }), m[18] = L, m[19] = R);
36
- let z;
37
- m[20] === A ? z = m[21] : (z = /* @__PURE__ */ jsx(ErrorSnackbar_default, { error: A }), m[20] = A, m[21] = z);
38
- let B;
39
- m[22] === E ? B = m[23] : (B = /* @__PURE__ */ jsx(ErrorAlert_default, { error: E }), m[22] = E, m[23] = B);
40
- let V;
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
- documents: D,
45
- scrollTo: _,
46
- settings: v,
47
- isLoading: j
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
- let H;
50
- m[32] === j ? H = m[33] : (H = /* @__PURE__ */ jsx(LoadingCentered_default, { loading: j }), m[32] = j, m[33] = H);
51
- let U;
52
- m[34] !== C || m[35] !== M || m[36] !== h ? (U = !!C && /* @__PURE__ */ jsx("div", {
15
+ import { AlertCircle, RefreshCw } from "lucide-react";
16
+ var import_enums = require_enums(), WorkflowItem_default = (h) => {
17
+ let g = c(55), { workflow: _, workflowId: v, scrollTo: y, settings: b, embed: x } = h, { workflowId: S, clickId: C } = useParams(), w = useRunWorkflow(), T;
18
+ g[0] !== b.showFullMessageHistory || g[1] !== v ? (T = {
19
+ workflowId: v,
20
+ showFullMessageHistory: b.showFullMessageHistory
21
+ }, g[0] = b.showFullMessageHistory, g[1] = v, g[2] = T) : T = g[2];
22
+ let { workflow: E, workflowLoading: D, workflowReady: O, workflowError: k, documents: A, documentsLoading: j, documentsReady: M, documentsError: N, isLoading: P, handleRun: F } = useWorkflowData(T), I;
23
+ g[3] !== M || g[4] !== S || g[5] !== y || g[6] !== v || g[7] !== O ? (I = () => {
24
+ S === v && O && M && y(v);
25
+ }, g[3] = M, g[4] = S, g[5] = y, g[6] = v, g[7] = O, g[8] = I) : I = g[8];
26
+ let L;
27
+ g[9] !== C || g[10] !== M || g[11] !== S || g[12] !== y || g[13] !== v || g[14] !== O ? (L = [
28
+ O,
29
+ M,
30
+ v,
31
+ S,
32
+ C,
33
+ y
34
+ ], g[9] = C, g[10] = M, g[11] = S, g[12] = y, g[13] = v, g[14] = O, g[15] = L) : L = g[15], useEffect(I, L);
35
+ let R;
36
+ g[16] === E?.availableTransitions ? R = g[17] : (R = E?.availableTransitions?.some(_temp), g[16] = E?.availableTransitions, g[17] = R);
37
+ let z = R, B = E?.hasError && E.status === import_enums.WorkflowState.Waiting, V = E?.hasError && !B && z !== !1, H;
38
+ g[18] !== w || g[19] !== v ? (H = () => {
39
+ w.mutate({
40
+ workflowId: v,
41
+ runWorkflowPayloadDto: {},
42
+ force: !0
43
+ });
44
+ }, g[18] = w, g[19] = v, g[20] = H) : H = g[20];
45
+ let U = H, W = x ? "p-0" : "p-4", G;
46
+ g[21] === W ? G = g[22] : (G = cn("flex flex-col", W), g[21] = W, g[22] = G);
47
+ let K = D || j, q;
48
+ g[23] === K ? q = g[24] : (q = /* @__PURE__ */ jsx(LoadingCentered_default, { loading: K }), g[23] = K, g[24] = q);
49
+ let J;
50
+ g[25] === N ? J = g[26] : (J = /* @__PURE__ */ jsx(ErrorSnackbar_default, { error: N }), g[25] = N, g[26] = J);
51
+ let Y;
52
+ g[27] !== E || g[28] !== A || g[29] !== P || g[30] !== y || g[31] !== b || g[32] !== _ || g[33] !== O ? (Y = O && E && /* @__PURE__ */ jsx(DocumentList_default, {
53
+ workflow: _,
54
+ childWorkflow: E,
55
+ documents: A,
56
+ scrollTo: y,
57
+ settings: b,
58
+ isLoading: P
59
+ }), g[27] = E, g[28] = A, g[29] = P, g[30] = y, g[31] = b, g[32] = _, g[33] = O, g[34] = Y) : Y = g[34];
60
+ let X;
61
+ g[35] === P ? X = g[36] : (X = /* @__PURE__ */ jsx(LoadingCentered_default, { loading: P }), g[35] = P, g[36] = X);
62
+ let Z;
63
+ g[37] !== V || g[38] !== E?.hasError || g[39] !== U || g[40] !== w.isPending || g[41] !== k ? (Z = k && E?.hasError && /* @__PURE__ */ jsxs("div", {
64
+ className: "mt-3 flex items-center gap-2 px-1",
65
+ children: [
66
+ /* @__PURE__ */ jsx(AlertCircle, { className: "text-destructive h-4 w-4 shrink-0" }),
67
+ /* @__PURE__ */ jsx("span", {
68
+ className: "text-destructive flex-1 text-sm",
69
+ children: k
70
+ }),
71
+ V && /* @__PURE__ */ jsxs(Button, {
72
+ variant: "outline",
73
+ size: "sm",
74
+ disabled: w.isPending,
75
+ onClick: U,
76
+ children: [w.isPending ? /* @__PURE__ */ jsx("div", { className: "mr-1 h-3.5 w-3.5 animate-spin rounded-full border-2 border-current border-t-transparent" }) : /* @__PURE__ */ jsx(RefreshCw, { className: "mr-1 h-3.5 w-3.5" }), "Retry"]
77
+ })
78
+ ]
79
+ }), g[37] = V, g[38] = E?.hasError, g[39] = U, g[40] = w.isPending, g[41] = k, g[42] = Z) : Z = g[42];
80
+ let Q;
81
+ g[43] !== E || g[44] !== F || g[45] !== _ ? (Q = !!E && /* @__PURE__ */ jsx("div", {
53
82
  className: "mt-6",
54
83
  children: /* @__PURE__ */ jsx(WorkflowForms_default, {
55
- workflow: C,
56
- parentWorkflow: h,
57
- onSubmit: M
84
+ workflow: E,
85
+ parentWorkflow: _,
86
+ onSubmit: F
58
87
  })
59
- }), m[34] = C, m[35] = M, m[36] = h, m[37] = U) : U = m[37];
60
- let W;
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", {
62
- className: I,
88
+ }), g[43] = E, g[44] = F, g[45] = _, g[46] = Q) : Q = g[46];
89
+ let $;
90
+ return g[47] !== J || g[48] !== Y || g[49] !== X || g[50] !== Z || g[51] !== Q || g[52] !== G || g[53] !== q ? ($ = /* @__PURE__ */ jsxs("div", {
91
+ className: G,
63
92
  children: [
64
- R,
65
- z,
66
- B,
67
- V,
68
- H,
69
- U
93
+ q,
94
+ J,
95
+ Y,
96
+ X,
97
+ Z,
98
+ Q
70
99
  ]
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;
100
+ }), g[47] = J, g[48] = Y, g[49] = X, g[50] = Z, g[51] = Q, g[52] = G, g[53] = q, g[54] = $) : $ = g[54], $;
72
101
  };
102
+ function _temp(t) {
103
+ return t.trigger !== "manual";
104
+ }
73
105
  export { WorkflowItem_default as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loopstack/loopstack-studio",
3
- "version": "0.26.1",
3
+ "version": "0.27.0",
4
4
  "repository": "loopstack-ai/loopstack-studio",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -26,7 +26,7 @@
26
26
  "dependencies": {
27
27
  "@fontsource/roboto": "^5.2.10",
28
28
  "@hookform/resolvers": "^5.2.2",
29
- "@loopstack/contracts": "^0.27.0",
29
+ "@loopstack/contracts": "^0.28.0",
30
30
  "@radix-ui/react-accordion": "^1.2.12",
31
31
  "@radix-ui/react-alert-dialog": "^1.1.15",
32
32
  "@radix-ui/react-avatar": "^1.1.11",