@loopstack/loopstack-studio 0.22.0 → 0.23.1
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.
- package/dist/app/EnvironmentEmbedRoot.js +20 -18
- package/dist/components/dynamic-form/Form.js +50 -27
- package/dist/components/dynamic-form/InputController.js +3 -1
- package/dist/components/dynamic-form/fields/MarkdownViewField.js +20 -0
- package/dist/components/feedback/ErrorBoundary.js +43 -0
- package/dist/components/{LoadingCentered.js → feedback/LoadingCentered.js} +1 -1
- package/dist/components/feedback/index.js +5 -0
- package/dist/components/index.js +6 -3
- package/dist/components/layout/MainLayout.js +32 -16
- package/dist/components/layout/StudioSidebar.js +165 -0
- package/dist/components/ui-widgets/widgets/SandboxRun.js +1 -0
- package/dist/features/code-explorer/CodeExplorer.js +6 -0
- package/dist/features/code-explorer/components/CodeExplorerTree.js +5 -0
- package/dist/features/code-explorer/components/CodeExplorerTreeNode.js +82 -0
- package/dist/features/code-explorer/components/FileContentViewer.js +1 -0
- package/dist/features/code-explorer/components/FileTabsBar.js +3 -190
- package/dist/features/code-explorer/components/FileTabsBarBase.js +190 -0
- package/dist/features/code-explorer/index.js +4 -0
- package/dist/features/code-explorer/providers/CodeExplorerProvider.js +2 -162
- package/dist/features/code-explorer/utils/fileIcons.js +7 -4
- package/dist/features/debug/components/ConfigFlowViewer.js +1 -1
- package/dist/features/debug/components/PipelineFlowViewer.js +47 -46
- package/dist/features/debug/components/pipeline-flow/WorkflowGraph.js +19 -19
- package/dist/features/debug/index.js +3 -0
- package/dist/features/documents/DocumentRenderer.js +58 -0
- package/dist/features/{workbench → documents}/components/DocumentItem.js +1 -1
- package/dist/features/{workbench → documents}/components/DocumentMetadataPills.js +2 -2
- package/dist/features/{workbench/components → documents}/document-details/DocumentDetails.js +3 -3
- package/dist/features/{workbench/components → documents}/document-details/PromptDetails.js +3 -3
- package/dist/features/documents/index.js +4 -0
- package/dist/features/{workbench/components/document-renderer → documents/renderers}/AiMessage.js +5 -5
- package/dist/features/documents/renderers/ClaudeMessage.js +96 -0
- package/dist/features/{workbench/components/document-renderer → documents/renderers}/DocumentDebugRenderer.js +1 -1
- package/dist/features/{workbench/components/document-renderer → documents/renderers}/DocumentFormRenderer.js +3 -3
- package/dist/features/{workbench/components/document-renderer → documents/renderers}/DocumentMessageRenderer.js +1 -1
- package/dist/features/{workbench/components/document-renderer → documents/renderers}/ErrorMessageRenderer.js +1 -1
- package/dist/features/{workbench/components/document-renderer → documents/renderers}/LinkMessageRenderer.js +1 -1
- package/dist/features/{workbench/components/document-renderer → documents/renderers}/MarkdownMessageRenderer.js +2 -2
- package/dist/features/{workbench/components/document-renderer → documents/renderers}/PlainMessageRenderer.js +1 -1
- package/dist/features/health/index.js +1 -0
- package/dist/features/workbench/NavigationItems.js +29 -29
- package/dist/features/workbench/Workbench.js +71 -99
- package/dist/features/workbench/WorkflowItem.js +63 -55
- package/dist/features/workbench/WorkflowList.js +52 -81
- package/dist/features/workbench/components/NewRunDialog.js +2 -1
- package/dist/features/workbench/components/RemoteFileTabsBar.js +18 -0
- package/dist/features/workbench/components/RemoteFileTree.js +90 -0
- package/dist/features/workbench/components/WorkbenchFilesPanel.js +60 -0
- package/dist/features/workbench/components/WorkbenchFlowPanel.js +4 -3
- package/dist/features/workbench/components/WorkbenchIconSidebar.js +37 -29
- package/dist/features/workbench/components/WorkflowHistoryItem.js +11 -11
- package/dist/features/workbench/components/buttons/WorkflowButtons.js +49 -50
- package/dist/features/workbench/hooks/useWorkflowData.js +49 -0
- package/dist/features/workbench/hooks/useWorkflowListState.js +50 -0
- package/dist/features/workbench/index.js +8 -0
- package/dist/features/workbench/providers/RemoteFileExplorerProvider.js +145 -0
- package/dist/features/workbench/providers/WorkbenchLayoutProvider.js +47 -45
- package/dist/features/workspaces/components/CreateWorkspace.js +1 -1
- package/dist/features/workspaces/components/ExecutionTimeline.js +1 -1
- package/dist/features/workspaces/components/PipelineForm.js +2 -2
- package/dist/features/workspaces/components/WorkspaceHomePage.js +93 -0
- package/dist/features/workspaces/index.js +3 -0
- package/dist/hooks/index.js +3 -2
- package/dist/hooks/query-keys.js +138 -0
- package/dist/hooks/useAuth.js +43 -42
- package/dist/hooks/useConfig.js +31 -35
- package/dist/hooks/useDashboard.js +9 -13
- package/dist/hooks/useDebounce.js +8 -17
- package/dist/hooks/useDocuments.js +4 -9
- package/dist/hooks/useFiles.js +1 -51
- package/dist/hooks/useNamespaces.js +2 -8
- package/dist/hooks/usePipelines.js +132 -155
- package/dist/hooks/useProcessor.js +11 -14
- package/dist/hooks/useWorkflows.js +40 -62
- package/dist/hooks/useWorkspaces.js +105 -110
- package/dist/index.d.ts +105 -3
- package/dist/index.js +15 -7
- package/dist/node_modules/@xyflow/react/dist/esm/index.js +1 -1
- package/dist/pages/DashboardPage.js +1 -1
- package/dist/pages/DebugWorkflowDetailsPage.js +2 -2
- package/dist/pages/EmbedWorkbenchPage.js +4 -3
- package/dist/pages/PipelineDebugPage.js +6 -5
- package/dist/pages/PreviewWorkbenchPage.js +228 -128
- package/dist/pages/RunsListPage.js +52 -24
- package/dist/pages/StudioLandingPage.js +1 -0
- package/dist/pages/WorkbenchPage.js +3 -2
- package/dist/pages/WorkspacePage.js +103 -51
- package/dist/pages/WorkspaceRunsPage.js +71 -0
- package/dist/providers/InvalidationEventsProvider.js +9 -11
- package/dist/providers/StudioProvider.js +2 -2
- package/dist/routing/LocalRouter.js +18 -8
- package/package.json +2 -2
- package/dist/features/workbench/components/DocumentRenderer.js +0 -54
- /package/dist/components/{content → feedback}/ErrorAlert.js +0 -0
- /package/dist/components/{snackbars → feedback}/ErrorSnackbar.js +0 -0
- /package/dist/components/{snackbars → feedback}/Snackbar.js +0 -0
- /package/dist/features/{workbench → documents}/components/DocumentList.js +0 -0
- /package/dist/features/{workbench/components/document-renderer → documents/renderers}/AiMessageContent.js +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { c } from "react/compiler-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useMemo, useState } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
5
|
+
var RemoteFileExplorerContext = createContext(null);
|
|
6
|
+
function RemoteFileExplorerProvider(s) {
|
|
7
|
+
let l = c(45), { children: u } = s, d = useQueryClient(), f;
|
|
8
|
+
l[0] === Symbol.for("react.memo_cache_sentinel") ? (f = /* @__PURE__ */ new Set(), l[0] = f) : f = l[0];
|
|
9
|
+
let [p, m] = useState(f), h;
|
|
10
|
+
l[1] === Symbol.for("react.memo_cache_sentinel") ? (h = [], l[1] = h) : h = l[1];
|
|
11
|
+
let [g, _] = useState(h), [v, y] = useState(null), b;
|
|
12
|
+
l[2] === Symbol.for("react.memo_cache_sentinel") ? (b = {
|
|
13
|
+
queryKey: ["remote-agent-file-tree"],
|
|
14
|
+
queryFn: _temp,
|
|
15
|
+
staleTime: 3e4
|
|
16
|
+
}, l[2] = b) : b = l[2];
|
|
17
|
+
let x = useQuery(b), S = v?.path, C;
|
|
18
|
+
l[3] === S ? C = l[4] : (C = ["remote-agent-file-content", S], l[3] = S, l[4] = C);
|
|
19
|
+
let w;
|
|
20
|
+
l[5] === v ? w = l[6] : (w = async () => {
|
|
21
|
+
let e = new URL("http://localhost:8000/api/v1/files/read");
|
|
22
|
+
e.searchParams.set("path", v.path);
|
|
23
|
+
let s = await fetch(e.toString(), { credentials: "include" });
|
|
24
|
+
if (!s.ok) {
|
|
25
|
+
let e = await s.text();
|
|
26
|
+
throw Error(`Failed to read file (${s.status}): ${e}`);
|
|
27
|
+
}
|
|
28
|
+
return (await s.json()).content;
|
|
29
|
+
}, l[5] = v, l[6] = w);
|
|
30
|
+
let T = !!v && v.type === "file", E;
|
|
31
|
+
l[7] !== C || l[8] !== w || l[9] !== T ? (E = {
|
|
32
|
+
queryKey: C,
|
|
33
|
+
queryFn: w,
|
|
34
|
+
enabled: T,
|
|
35
|
+
staleTime: 15e3
|
|
36
|
+
}, l[7] = C, l[8] = w, l[9] = T, l[10] = E) : E = l[10];
|
|
37
|
+
let D = useQuery(E), O;
|
|
38
|
+
l[11] === Symbol.for("react.memo_cache_sentinel") ? (O = (e) => {
|
|
39
|
+
m((s) => {
|
|
40
|
+
let l = new Set(s);
|
|
41
|
+
return l.has(e) ? l.delete(e) : l.add(e), l;
|
|
42
|
+
});
|
|
43
|
+
}, l[11] = O) : O = l[11];
|
|
44
|
+
let k = O, A;
|
|
45
|
+
l[12] === Symbol.for("react.memo_cache_sentinel") ? (A = (e) => {
|
|
46
|
+
e.type === "file" && (y(e), _((s) => s.some((s) => s.path === e.path) ? s : [...s, e]));
|
|
47
|
+
}, l[12] = A) : A = l[12];
|
|
48
|
+
let j = A, M;
|
|
49
|
+
l[13] === v?.path ? M = l[14] : (M = (e) => {
|
|
50
|
+
_((s) => {
|
|
51
|
+
let l = s.filter((s) => s.path !== e.path);
|
|
52
|
+
if (v?.path === e.path) if (l.length > 0) {
|
|
53
|
+
let u = s.findIndex((s) => s.path === e.path);
|
|
54
|
+
y(l[Math.max(0, u - 1)]);
|
|
55
|
+
} else y(null);
|
|
56
|
+
return l;
|
|
57
|
+
});
|
|
58
|
+
}, l[13] = v?.path, l[14] = M);
|
|
59
|
+
let N = M, P;
|
|
60
|
+
l[15] === v ? P = l[16] : (P = () => {
|
|
61
|
+
v && _((e) => {
|
|
62
|
+
let s = e.filter((e) => e.path !== v.path);
|
|
63
|
+
if (s.length > 0) {
|
|
64
|
+
let l = e.findIndex((e) => e.path === v.path);
|
|
65
|
+
y(s[Math.max(0, l - 1)]);
|
|
66
|
+
} else y(null);
|
|
67
|
+
return s;
|
|
68
|
+
});
|
|
69
|
+
}, l[15] = v, l[16] = P);
|
|
70
|
+
let F = P, I;
|
|
71
|
+
l[17] === Symbol.for("react.memo_cache_sentinel") ? (I = () => {
|
|
72
|
+
_([]), y(null);
|
|
73
|
+
}, l[17] = I) : I = l[17];
|
|
74
|
+
let L = I, R;
|
|
75
|
+
l[18] === Symbol.for("react.memo_cache_sentinel") ? (R = (e) => {
|
|
76
|
+
_([e]), y(e);
|
|
77
|
+
}, l[18] = R) : R = l[18];
|
|
78
|
+
let z = R, B;
|
|
79
|
+
l[19] === v ? B = l[20] : (B = (e) => {
|
|
80
|
+
_((s) => {
|
|
81
|
+
let l = s.findIndex((s) => s.path === e.path);
|
|
82
|
+
if (l <= 0) return s;
|
|
83
|
+
let u = s.slice(l);
|
|
84
|
+
return v && s.findIndex((e) => e.path === v.path) < l && y(e), u;
|
|
85
|
+
});
|
|
86
|
+
}, l[19] = v, l[20] = B);
|
|
87
|
+
let V = B, H;
|
|
88
|
+
l[21] === v ? H = l[22] : (H = (e) => {
|
|
89
|
+
_((s) => {
|
|
90
|
+
let l = s.findIndex((s) => s.path === e.path);
|
|
91
|
+
if (l < 0 || l >= s.length - 1) return s;
|
|
92
|
+
let u = s.slice(0, l + 1);
|
|
93
|
+
return v && s.findIndex((e) => e.path === v.path) > l && y(e), u;
|
|
94
|
+
});
|
|
95
|
+
}, l[21] = v, l[22] = H);
|
|
96
|
+
let U = H, W;
|
|
97
|
+
l[23] === d ? W = l[24] : (W = () => {
|
|
98
|
+
d.invalidateQueries({ queryKey: ["remote-agent-file-tree"] });
|
|
99
|
+
}, l[23] = d, l[24] = W);
|
|
100
|
+
let G = W, K;
|
|
101
|
+
l[25] === x.data ? K = l[26] : (K = x.data ?? [], l[25] = x.data, l[26] = K);
|
|
102
|
+
let q = x.isLoading && !x.data, J = D.data ?? null, Y = D.isLoading && !!v, X;
|
|
103
|
+
l[27] !== F || l[28] !== N || l[29] !== V || l[30] !== U || l[31] !== p || l[32] !== g || l[33] !== G || l[34] !== v || l[35] !== K || l[36] !== q || l[37] !== J || l[38] !== Y || l[39] !== x.error || l[40] !== x.isFetching ? (X = {
|
|
104
|
+
nodes: K,
|
|
105
|
+
isTreeLoading: q,
|
|
106
|
+
treeError: x.error,
|
|
107
|
+
openFiles: g,
|
|
108
|
+
selectedFile: v,
|
|
109
|
+
fileContent: J,
|
|
110
|
+
isContentLoading: Y,
|
|
111
|
+
expandedFolders: p,
|
|
112
|
+
toggleFolder: k,
|
|
113
|
+
selectFile: j,
|
|
114
|
+
closeFile: N,
|
|
115
|
+
closeAll: L,
|
|
116
|
+
closeOthers: z,
|
|
117
|
+
closeToLeft: V,
|
|
118
|
+
closeToRight: U,
|
|
119
|
+
clearSelection: F,
|
|
120
|
+
refreshTree: G,
|
|
121
|
+
isFetchingTree: x.isFetching
|
|
122
|
+
}, l[27] = F, l[28] = N, l[29] = V, l[30] = U, l[31] = p, l[32] = g, l[33] = G, l[34] = v, l[35] = K, l[36] = q, l[37] = J, l[38] = Y, l[39] = x.error, l[40] = x.isFetching, l[41] = X) : X = l[41];
|
|
123
|
+
let Z = X, Q;
|
|
124
|
+
return l[42] !== u || l[43] !== Z ? (Q = /* @__PURE__ */ jsx(RemoteFileExplorerContext.Provider, {
|
|
125
|
+
value: Z,
|
|
126
|
+
children: u
|
|
127
|
+
}), l[42] = u, l[43] = Z, l[44] = Q) : Q = l[44], Q;
|
|
128
|
+
}
|
|
129
|
+
async function _temp() {
|
|
130
|
+
let e = await fetch("http://localhost:8000/api/v1/files/tree?path=./src", { credentials: "include" });
|
|
131
|
+
if (!e.ok) {
|
|
132
|
+
let s = await e.text();
|
|
133
|
+
throw Error(`Failed to load file tree (${e.status}): ${s}`);
|
|
134
|
+
}
|
|
135
|
+
return await e.json();
|
|
136
|
+
}
|
|
137
|
+
function useRemoteFileExplorer() {
|
|
138
|
+
let e = useContext(RemoteFileExplorerContext);
|
|
139
|
+
if (!e) throw Error("useRemoteFileExplorer must be used within RemoteFileExplorerProvider");
|
|
140
|
+
return e;
|
|
141
|
+
}
|
|
142
|
+
function useOptionalRemoteFileExplorer() {
|
|
143
|
+
return useContext(RemoteFileExplorerContext);
|
|
144
|
+
}
|
|
145
|
+
export { RemoteFileExplorerProvider, useOptionalRemoteFileExplorer, useRemoteFileExplorer };
|
|
@@ -3,75 +3,77 @@ import { createContext, useCallback, useContext, useMemo, useState } from "react
|
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
var WorkbenchLayoutContext = createContext(null);
|
|
5
5
|
function WorkbenchLayoutProvider(a) {
|
|
6
|
-
let o = c(
|
|
6
|
+
let o = c(44), { children: s, pipeline: l, isDeveloperMode: u, workspaceConfig: d, getPreviewUrl: f, getEnvironmentPreviewUrl: p, environments: m, previewPanelOpen: h, onPreviewPanelOpenChange: g } = a, _ = u === void 0 ? !1 : u, [v, y] = useState(null), [b, x] = useState(null), [S, C] = useState("preview"), [w, T] = useState(null), [E, D] = useState(""), O = h !== void 0, k = O ? h ? b ?? "preview" : null : b, A = d?.features?.previewPanel?.enabled ?? !1, j;
|
|
7
7
|
o[0] === m ? j = o[1] : (j = m === void 0 || m.some(_temp), o[0] = m, o[1] = j);
|
|
8
|
-
let M = A && j, N
|
|
9
|
-
o[2] !==
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
o[
|
|
14
|
-
y((a) => a === t ? null : t), F(null);
|
|
15
|
-
}, o[5] = F, o[6] = I);
|
|
8
|
+
let M = A && j, N;
|
|
9
|
+
o[2] !== m?.[0]?.slotId || o[3] !== d?.features?.fileExplorer?.enabled || o[4] !== d?.features?.fileExplorer?.environments ? (N = d?.features?.fileExplorer?.enabled && d?.features?.fileExplorer?.environments?.includes(m?.[0]?.slotId ?? ""), o[2] = m?.[0]?.slotId, o[3] = d?.features?.fileExplorer?.enabled, o[4] = d?.features?.fileExplorer?.environments, o[5] = N) : N = o[5];
|
|
10
|
+
let P = N, F = k !== null, I;
|
|
11
|
+
o[6] !== O || o[7] !== g ? (I = (e) => {
|
|
12
|
+
O && g?.(e !== null), x(e);
|
|
13
|
+
}, o[6] = O, o[7] = g, o[8] = I) : I = o[8];
|
|
16
14
|
let L = I, R;
|
|
17
|
-
o[
|
|
18
|
-
y(null);
|
|
19
|
-
}, o[
|
|
15
|
+
o[9] === L ? R = o[10] : (R = (e) => {
|
|
16
|
+
y((a) => a === e ? null : e), L(null);
|
|
17
|
+
}, o[9] = L, o[10] = R);
|
|
20
18
|
let z = R, B;
|
|
21
|
-
o[
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}, o[8] = k, o[9] = F, o[10] = B) : B = o[10];
|
|
19
|
+
o[11] === Symbol.for("react.memo_cache_sentinel") ? (B = () => {
|
|
20
|
+
y(null);
|
|
21
|
+
}, o[11] = B) : B = o[11];
|
|
25
22
|
let V = B, H;
|
|
26
|
-
o[
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
o[12] !== k || o[13] !== L ? (H = (e) => {
|
|
24
|
+
let a = k === e ? null : e;
|
|
25
|
+
L(a), a && y(null);
|
|
26
|
+
}, o[12] = k, o[13] = L, o[14] = H) : H = o[14];
|
|
29
27
|
let U = H, W;
|
|
30
|
-
o[
|
|
31
|
-
|
|
32
|
-
}, o[
|
|
28
|
+
o[15] === L ? W = o[16] : (W = () => {
|
|
29
|
+
L(null);
|
|
30
|
+
}, o[15] = L, o[16] = W);
|
|
33
31
|
let G = W, K;
|
|
34
|
-
o[
|
|
35
|
-
|
|
36
|
-
}, o[
|
|
32
|
+
o[17] === L ? K = o[18] : (K = (e) => {
|
|
33
|
+
D(e), L("preview"), y(null);
|
|
34
|
+
}, o[17] = L, o[18] = K);
|
|
37
35
|
let q = K, J;
|
|
38
|
-
o[
|
|
36
|
+
o[19] === U ? J = o[20] : (J = () => {
|
|
37
|
+
U("preview");
|
|
38
|
+
}, o[19] = U, o[20] = J);
|
|
39
|
+
let Y = J, X = P ?? !1, Z;
|
|
40
|
+
o[21] !== v || o[22] !== S || o[23] !== w || o[24] !== k || o[25] !== G || o[26] !== m || o[27] !== p || o[28] !== f || o[29] !== _ || o[30] !== q || o[31] !== l || o[32] !== M || o[33] !== F || o[34] !== E || o[35] !== X || o[36] !== z || o[37] !== Y || o[38] !== U || o[39] !== d ? (Z = {
|
|
39
41
|
pipeline: l,
|
|
40
42
|
previewPanelEnabled: M,
|
|
43
|
+
fileExplorerEnabled: X,
|
|
41
44
|
isDeveloperMode: _,
|
|
42
45
|
workspaceConfig: d,
|
|
43
46
|
getPreviewUrl: f,
|
|
44
47
|
getEnvironmentPreviewUrl: p,
|
|
45
48
|
environments: m,
|
|
46
49
|
activeFloatingPanel: v,
|
|
47
|
-
toggleFloatingPanel:
|
|
48
|
-
closeFloatingPanel:
|
|
50
|
+
toggleFloatingPanel: z,
|
|
51
|
+
closeFloatingPanel: V,
|
|
49
52
|
activeSidePanel: k,
|
|
50
|
-
toggleSidePanel:
|
|
51
|
-
closeSidePanel:
|
|
53
|
+
toggleSidePanel: U,
|
|
54
|
+
closeSidePanel: G,
|
|
52
55
|
selectedSlotId: E,
|
|
53
56
|
setSelectedSlotId: D,
|
|
54
|
-
openPreviewWithEnvironment:
|
|
55
|
-
previewPanelOpen:
|
|
56
|
-
togglePreviewPanel:
|
|
57
|
+
openPreviewWithEnvironment: q,
|
|
58
|
+
previewPanelOpen: F,
|
|
59
|
+
togglePreviewPanel: Y,
|
|
57
60
|
activePreviewTab: S,
|
|
58
61
|
setActivePreviewTab: C,
|
|
59
62
|
activeSectionId: w,
|
|
60
63
|
setActiveSectionId: T
|
|
61
|
-
}, o[
|
|
62
|
-
let
|
|
63
|
-
return o[
|
|
64
|
-
value:
|
|
64
|
+
}, o[21] = v, o[22] = S, o[23] = w, o[24] = k, o[25] = G, o[26] = m, o[27] = p, o[28] = f, o[29] = _, o[30] = q, o[31] = l, o[32] = M, o[33] = F, o[34] = E, o[35] = X, o[36] = z, o[37] = Y, o[38] = U, o[39] = d, o[40] = Z) : Z = o[40];
|
|
65
|
+
let Q = Z, $;
|
|
66
|
+
return o[41] !== s || o[42] !== Q ? ($ = /* @__PURE__ */ jsx(WorkbenchLayoutContext.Provider, {
|
|
67
|
+
value: Q,
|
|
65
68
|
children: s
|
|
66
|
-
}), o[
|
|
69
|
+
}), o[41] = s, o[42] = Q, o[43] = $) : $ = o[43], $;
|
|
67
70
|
}
|
|
68
|
-
function _temp(
|
|
69
|
-
return !!
|
|
71
|
+
function _temp(e) {
|
|
72
|
+
return !!e.connectionUrl && (!!e.workerId || e.local);
|
|
70
73
|
}
|
|
71
74
|
function useWorkbenchLayout() {
|
|
72
|
-
let
|
|
73
|
-
if (!
|
|
74
|
-
return
|
|
75
|
+
let e = useContext(WorkbenchLayoutContext);
|
|
76
|
+
if (!e) throw Error("useWorkbenchLayout must be used within a WorkbenchLayoutProvider");
|
|
77
|
+
return e;
|
|
75
78
|
}
|
|
76
|
-
|
|
77
|
-
export { WorkbenchContextProvider, WorkbenchLayoutProvider, useWorkbenchLayout };
|
|
79
|
+
export { WorkbenchLayoutProvider, useWorkbenchLayout };
|
|
@@ -5,7 +5,7 @@ import { DialogHeader } from "../../../components/ui/dialog.js";
|
|
|
5
5
|
import { Input } from "../../../components/ui/input.js";
|
|
6
6
|
import { Label } from "../../../components/ui/label.js";
|
|
7
7
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../../../components/ui/select.js";
|
|
8
|
-
import ErrorSnackbar_default from "../../../components/
|
|
8
|
+
import ErrorSnackbar_default from "../../../components/feedback/ErrorSnackbar.js";
|
|
9
9
|
import { EnvironmentSlotSelector } from "./EnvironmentSlotSelector.js";
|
|
10
10
|
import { c } from "react/compiler-runtime";
|
|
11
11
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
@@ -2,7 +2,7 @@ import { useStudio } from "../../../providers/StudioProvider.js";
|
|
|
2
2
|
import { useBatchDeletePipeline, useChildPipelines, useFilterPipelines } from "../../../hooks/usePipelines.js";
|
|
3
3
|
import { Badge } from "../../../components/ui/badge.js";
|
|
4
4
|
import CustomListView_default from "../../../components/lists/CustomListView.js";
|
|
5
|
-
import ErrorSnackbar_default from "../../../components/
|
|
5
|
+
import ErrorSnackbar_default from "../../../components/feedback/ErrorSnackbar.js";
|
|
6
6
|
import { require_enums } from "../../../packages/contracts/dist/enums/index.js";
|
|
7
7
|
import NewPipelineRunDialog_default from "./NewPipelineRunDialog.js";
|
|
8
8
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useStudio } from "../../../providers/StudioProvider.js";
|
|
2
2
|
import { usePipelineConfig } from "../../../hooks/useConfig.js";
|
|
3
3
|
import { useCreatePipeline } from "../../../hooks/usePipelines.js";
|
|
4
|
-
import ErrorSnackbar_default from "../../../components/
|
|
4
|
+
import ErrorSnackbar_default from "../../../components/feedback/ErrorSnackbar.js";
|
|
5
|
+
import { useRunPipeline } from "../../../hooks/useProcessor.js";
|
|
5
6
|
import ArgumentsView_default from "./pipeline-form/ArgumentsView.js";
|
|
6
7
|
import SelectionView_default from "./pipeline-form/SelectionView.js";
|
|
7
|
-
import { useRunPipeline } from "../../../hooks/useProcessor.js";
|
|
8
8
|
import { c } from "react/compiler-runtime";
|
|
9
9
|
import { useEffect, useMemo, useState } from "react";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { useStudio } from "../../../providers/StudioProvider.js";
|
|
2
|
+
import { useCreatePipeline } from "../../../hooks/usePipelines.js";
|
|
3
|
+
import { Button } from "../../../components/ui/button.js";
|
|
4
|
+
import ErrorSnackbar_default from "../../../components/feedback/ErrorSnackbar.js";
|
|
5
|
+
import Form_default from "../../../components/dynamic-form/Form.js";
|
|
6
|
+
import { useRunPipeline } from "../../../hooks/useProcessor.js";
|
|
7
|
+
import { c } from "react/compiler-runtime";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { Loader2, Play } from "lucide-react";
|
|
10
|
+
import { useForm } from "react-hook-form";
|
|
11
|
+
var WorkspaceHomePage_default = (p) => {
|
|
12
|
+
let m = c(39), { workspace: h, action: g } = p, { router: _ } = useStudio(), v = useCreatePipeline(), y = useRunPipeline(), b;
|
|
13
|
+
m[0] === g.options ? b = m[1] : (b = g.options ?? {}, m[0] = g.options, m[1] = b);
|
|
14
|
+
let x = b, S = x.workflow, C = x.title, w = x.subtitle, T = x.schema, E = x.pipelineUi, D;
|
|
15
|
+
m[2] === Symbol.for("react.memo_cache_sentinel") ? (D = {
|
|
16
|
+
defaultValues: {},
|
|
17
|
+
mode: "onChange"
|
|
18
|
+
}, m[2] = D) : D = m[2];
|
|
19
|
+
let O = useForm(D), k = v.isPending || y.isPending, A = !!T, j;
|
|
20
|
+
m[3] !== v || m[4] !== A || m[5] !== _ || m[6] !== y || m[7] !== S || m[8] !== h ? (j = (t) => {
|
|
21
|
+
v.mutate({ pipelineCreateDto: {
|
|
22
|
+
blockName: S,
|
|
23
|
+
title: null,
|
|
24
|
+
workspaceId: h.id,
|
|
25
|
+
transition: null,
|
|
26
|
+
args: A ? t : void 0
|
|
27
|
+
} }, { onSuccess: (t) => {
|
|
28
|
+
y.mutate({
|
|
29
|
+
pipelineId: t.id,
|
|
30
|
+
runPipelinePayloadDto: {},
|
|
31
|
+
force: !0
|
|
32
|
+
}, { onSuccess: () => {
|
|
33
|
+
_.navigateToPipeline(t.id);
|
|
34
|
+
} });
|
|
35
|
+
} });
|
|
36
|
+
}, m[3] = v, m[4] = A, m[5] = _, m[6] = y, m[7] = S, m[8] = h, m[9] = j) : j = m[9];
|
|
37
|
+
let M = j, N;
|
|
38
|
+
m[10] !== O || m[11] !== M ? (N = () => {
|
|
39
|
+
O.handleSubmit(M)();
|
|
40
|
+
}, m[10] = O, m[11] = M, m[12] = N) : N = m[12];
|
|
41
|
+
let P = N, F;
|
|
42
|
+
m[13] === v.error ? F = m[14] : (F = /* @__PURE__ */ jsx(ErrorSnackbar_default, { error: v.error }), m[13] = v.error, m[14] = F);
|
|
43
|
+
let I;
|
|
44
|
+
m[15] === y.error ? I = m[16] : (I = /* @__PURE__ */ jsx(ErrorSnackbar_default, { error: y.error }), m[15] = y.error, m[16] = I);
|
|
45
|
+
let L;
|
|
46
|
+
m[17] === C ? L = m[18] : (L = C && /* @__PURE__ */ jsx("h2", {
|
|
47
|
+
className: "mb-2 text-center text-3xl font-bold tracking-tight",
|
|
48
|
+
children: C
|
|
49
|
+
}), m[17] = C, m[18] = L);
|
|
50
|
+
let R;
|
|
51
|
+
m[19] === w ? R = m[20] : (R = w && /* @__PURE__ */ jsx("p", {
|
|
52
|
+
className: "text-muted-foreground mb-8 text-center text-sm",
|
|
53
|
+
children: w
|
|
54
|
+
}), m[19] = w, m[20] = R);
|
|
55
|
+
let z;
|
|
56
|
+
m[21] !== O || m[22] !== A || m[23] !== E || m[24] !== T ? (z = A ? /* @__PURE__ */ jsx("div", {
|
|
57
|
+
className: "mb-6 w-full",
|
|
58
|
+
children: /* @__PURE__ */ jsx(Form_default, {
|
|
59
|
+
form: O,
|
|
60
|
+
schema: T,
|
|
61
|
+
ui: E,
|
|
62
|
+
disabled: !1,
|
|
63
|
+
viewOnly: !1
|
|
64
|
+
})
|
|
65
|
+
}) : null, m[21] = O, m[22] = A, m[23] = E, m[24] = T, m[25] = z) : z = m[25];
|
|
66
|
+
let B;
|
|
67
|
+
m[26] === k ? B = m[27] : (B = k ? /* @__PURE__ */ jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx(Play, { className: "mr-2 h-4 w-4" }), m[26] = k, m[27] = B);
|
|
68
|
+
let V;
|
|
69
|
+
m[28] !== k || m[29] !== P || m[30] !== B ? (V = /* @__PURE__ */ jsx("div", {
|
|
70
|
+
className: "flex w-full justify-end",
|
|
71
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
72
|
+
variant: "default",
|
|
73
|
+
disabled: k,
|
|
74
|
+
onClick: P,
|
|
75
|
+
size: "lg",
|
|
76
|
+
className: "font-medium",
|
|
77
|
+
children: [B, "Run"]
|
|
78
|
+
})
|
|
79
|
+
}), m[28] = k, m[29] = P, m[30] = B, m[31] = V) : V = m[31];
|
|
80
|
+
let H;
|
|
81
|
+
return m[32] !== V || m[33] !== F || m[34] !== I || m[35] !== L || m[36] !== R || m[37] !== z ? (H = /* @__PURE__ */ jsxs("div", {
|
|
82
|
+
className: "mx-auto flex min-h-[60vh] max-w-2xl flex-col items-center justify-center",
|
|
83
|
+
children: [
|
|
84
|
+
F,
|
|
85
|
+
I,
|
|
86
|
+
L,
|
|
87
|
+
R,
|
|
88
|
+
z,
|
|
89
|
+
V
|
|
90
|
+
]
|
|
91
|
+
}), m[32] = V, m[33] = F, m[34] = I, m[35] = L, m[36] = R, m[37] = z, m[38] = H) : H = m[38], H;
|
|
92
|
+
};
|
|
93
|
+
export { WorkspaceHomePage_default as default };
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { getAllWorkflowsCacheKey, getAvailableEnvironmentsCacheKey, getDashboardStatsCacheKey, getDocumentCacheKey, getDocumentsCacheKey, getFileContentCacheKey, getFileTreeCacheKey, getHealthCacheKey, getMeCacheKey, getNamespaceCacheKey, getNamespacesByPipelineCacheKey, getPipelineCacheKey, getPipelineConfigCacheKey, getPipelineSourceCacheKey, getPipelineTypesCacheKey, getPipelinesCacheKey, getPipelinesChildrenCacheKey, getWorkflowCacheKey, getWorkflowsByPipelineCacheKey, getWorkflowsCacheKey, getWorkspaceCacheKey, getWorkspaceTypesCacheKey, getWorkspacesCacheKey } from "./query-keys.js";
|
|
1
2
|
import { useApiClient } from "./useApi.js";
|
|
2
3
|
import { useIsMobile } from "./use-mobile.js";
|
|
3
|
-
import { useAvailableEnvironments, useWorkspaceConfig } from "./useConfig.js";
|
|
4
|
-
import { useBatchDeletePipeline, useChildPipelines, useCreatePipeline, useDeletePipeline, useFilterPipelines, usePipeline,
|
|
4
|
+
import { useAvailableEnvironments, usePipelineConfig, useWorkspaceConfig } from "./useConfig.js";
|
|
5
|
+
import { useBatchDeletePipeline, useChildPipelines, useCreatePipeline, useDeletePipeline, useFilterPipelines, usePipeline, usePipelineConfigByName, usePipelineSource, useUpdatePipeline } from "./usePipelines.js";
|
|
5
6
|
import { useBatchDeleteWorkspaces, useCreateWorkspace, useDeleteWorkspace, useFilterWorkspaces, useSetFavouriteWorkspace, useUpdateWorkspace, useWorkspace } from "./useWorkspaces.js";
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
function getMeCacheKey(e) {
|
|
2
|
+
return ["me", e];
|
|
3
|
+
}
|
|
4
|
+
function getHealthCacheKey(e) {
|
|
5
|
+
return ["health", e];
|
|
6
|
+
}
|
|
7
|
+
function getWorkspaceTypesCacheKey(e) {
|
|
8
|
+
return ["workspace-types", e];
|
|
9
|
+
}
|
|
10
|
+
function getPipelineTypesCacheKey(e, x) {
|
|
11
|
+
return [
|
|
12
|
+
"pipeline-types",
|
|
13
|
+
e,
|
|
14
|
+
x
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
function getAvailableEnvironmentsCacheKey(e) {
|
|
18
|
+
return ["available-environments", e];
|
|
19
|
+
}
|
|
20
|
+
function getDashboardStatsCacheKey(e) {
|
|
21
|
+
return [
|
|
22
|
+
"dashboard",
|
|
23
|
+
"stats",
|
|
24
|
+
e
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
function getPipelineCacheKey(e, x) {
|
|
28
|
+
return [
|
|
29
|
+
"pipeline",
|
|
30
|
+
e,
|
|
31
|
+
x
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
function getPipelinesCacheKey(e) {
|
|
35
|
+
return ["pipelines", e];
|
|
36
|
+
}
|
|
37
|
+
function getPipelinesChildrenCacheKey(e, x) {
|
|
38
|
+
return [
|
|
39
|
+
"pipelines",
|
|
40
|
+
"children",
|
|
41
|
+
e,
|
|
42
|
+
x
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
function getPipelineConfigCacheKey(e, x, S) {
|
|
46
|
+
return [
|
|
47
|
+
"pipelineConfig",
|
|
48
|
+
e,
|
|
49
|
+
x,
|
|
50
|
+
S
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
function getPipelineSourceCacheKey(e, x, S) {
|
|
54
|
+
return [
|
|
55
|
+
"pipelineSource",
|
|
56
|
+
e,
|
|
57
|
+
x,
|
|
58
|
+
S
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
function getWorkspaceCacheKey(e, x) {
|
|
62
|
+
return [
|
|
63
|
+
"workspace",
|
|
64
|
+
e,
|
|
65
|
+
x
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
function getWorkspacesCacheKey(e) {
|
|
69
|
+
return ["workspaces", e];
|
|
70
|
+
}
|
|
71
|
+
function getWorkflowCacheKey(e, x) {
|
|
72
|
+
return [
|
|
73
|
+
"workflow",
|
|
74
|
+
e,
|
|
75
|
+
x
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
function getWorkflowsCacheKey(e, x) {
|
|
79
|
+
return [
|
|
80
|
+
"workflows",
|
|
81
|
+
e,
|
|
82
|
+
x
|
|
83
|
+
];
|
|
84
|
+
}
|
|
85
|
+
function getWorkflowsByPipelineCacheKey(e, x) {
|
|
86
|
+
return [
|
|
87
|
+
"workflows-by-pipeline",
|
|
88
|
+
e,
|
|
89
|
+
x
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
function getAllWorkflowsCacheKey(e) {
|
|
93
|
+
return ["all-workflows", e];
|
|
94
|
+
}
|
|
95
|
+
function getNamespaceCacheKey(e, x) {
|
|
96
|
+
return [
|
|
97
|
+
"namespace",
|
|
98
|
+
e,
|
|
99
|
+
x
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
function getNamespacesByPipelineCacheKey(e, x) {
|
|
103
|
+
return [
|
|
104
|
+
"namespaces",
|
|
105
|
+
e,
|
|
106
|
+
x
|
|
107
|
+
];
|
|
108
|
+
}
|
|
109
|
+
function getDocumentCacheKey(e, x) {
|
|
110
|
+
return [
|
|
111
|
+
"document",
|
|
112
|
+
e,
|
|
113
|
+
x
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
function getDocumentsCacheKey(e, x) {
|
|
117
|
+
return [
|
|
118
|
+
"documents",
|
|
119
|
+
e,
|
|
120
|
+
x
|
|
121
|
+
];
|
|
122
|
+
}
|
|
123
|
+
function getFileTreeCacheKey(e, x) {
|
|
124
|
+
return [
|
|
125
|
+
"fileTree",
|
|
126
|
+
e,
|
|
127
|
+
x
|
|
128
|
+
];
|
|
129
|
+
}
|
|
130
|
+
function getFileContentCacheKey(e, x, S) {
|
|
131
|
+
return [
|
|
132
|
+
"fileContent",
|
|
133
|
+
e,
|
|
134
|
+
x,
|
|
135
|
+
S
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
export { getAllWorkflowsCacheKey, getAvailableEnvironmentsCacheKey, getDashboardStatsCacheKey, getDocumentCacheKey, getDocumentsCacheKey, getFileContentCacheKey, getFileTreeCacheKey, getHealthCacheKey, getMeCacheKey, getNamespaceCacheKey, getNamespacesByPipelineCacheKey, getPipelineCacheKey, getPipelineConfigCacheKey, getPipelineSourceCacheKey, getPipelineTypesCacheKey, getPipelinesCacheKey, getPipelinesChildrenCacheKey, getWorkflowCacheKey, getWorkflowsByPipelineCacheKey, getWorkflowsCacheKey, getWorkspaceCacheKey, getWorkspaceTypesCacheKey, getWorkspacesCacheKey };
|
package/dist/hooks/useAuth.js
CHANGED
|
@@ -1,57 +1,58 @@
|
|
|
1
|
+
import { getHealthCacheKey, getMeCacheKey } from "./query-keys.js";
|
|
1
2
|
import { useApiClient } from "./useApi.js";
|
|
2
3
|
import { c } from "react/compiler-runtime";
|
|
3
4
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
4
|
-
function useMe(
|
|
5
|
-
let i = c(8),
|
|
6
|
-
i[0] ===
|
|
7
|
-
let u;
|
|
8
|
-
i[2] === s ? u = i[3] : (u = () => s.auth.me(), i[2] = s, i[3] = u);
|
|
5
|
+
function useMe(e) {
|
|
6
|
+
let i = c(8), o = e === void 0 ? !0 : e, { envKey: s, api: l } = useApiClient(), u;
|
|
7
|
+
i[0] === s ? u = i[1] : (u = getMeCacheKey(s), i[0] = s, i[1] = u);
|
|
9
8
|
let d;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
i[2] === l ? d = i[3] : (d = () => l.auth.me(), i[2] = l, i[3] = d);
|
|
10
|
+
let f;
|
|
11
|
+
return i[4] !== o || i[5] !== u || i[6] !== d ? (f = {
|
|
12
|
+
queryKey: u,
|
|
13
|
+
queryFn: d,
|
|
13
14
|
retry: !1,
|
|
14
15
|
staleTime: 3e5,
|
|
15
|
-
enabled:
|
|
16
|
-
}, i[4] =
|
|
16
|
+
enabled: o
|
|
17
|
+
}, i[4] = o, i[5] = u, i[6] = d, i[7] = f) : f = i[7], useQuery(f);
|
|
17
18
|
}
|
|
18
|
-
function useGetHealthInfo(
|
|
19
|
-
let i = c(8),
|
|
20
|
-
i[0] ===
|
|
21
|
-
let u;
|
|
22
|
-
i[2] === s ? u = i[3] : (u = () => s.auth.getInfo(), i[2] = s, i[3] = u);
|
|
19
|
+
function useGetHealthInfo(r) {
|
|
20
|
+
let i = c(8), o = r === void 0 ? !0 : r, { envKey: s, api: l } = useApiClient(), u;
|
|
21
|
+
i[0] === s ? u = i[1] : (u = getHealthCacheKey(s), i[0] = s, i[1] = u);
|
|
23
22
|
let d;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
i[2] === l ? d = i[3] : (d = () => l.auth.getInfo(), i[2] = l, i[3] = d);
|
|
24
|
+
let f;
|
|
25
|
+
return i[4] !== o || i[5] !== u || i[6] !== d ? (f = {
|
|
26
|
+
queryKey: u,
|
|
27
|
+
queryFn: d,
|
|
27
28
|
staleTime: 3e5,
|
|
28
|
-
enabled:
|
|
29
|
-
}, i[4] =
|
|
29
|
+
enabled: o
|
|
30
|
+
}, i[4] = o, i[5] = u, i[6] = d, i[7] = f) : f = i[7], useQuery(f);
|
|
30
31
|
}
|
|
31
32
|
function useWorkerAuth() {
|
|
32
|
-
let
|
|
33
|
-
|
|
34
|
-
let
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
let
|
|
39
|
-
return
|
|
40
|
-
mutationFn:
|
|
41
|
-
onSuccess:
|
|
42
|
-
},
|
|
33
|
+
let a = c(8), { envKey: s, api: l } = useApiClient(), u = useQueryClient(), d;
|
|
34
|
+
a[0] === l ? d = a[1] : (d = (e) => l.auth.hubLogin(e), a[0] = l, a[1] = d);
|
|
35
|
+
let f;
|
|
36
|
+
a[2] !== s || a[3] !== u ? (f = () => {
|
|
37
|
+
u.invalidateQueries({ queryKey: getMeCacheKey(s) }), u.invalidateQueries({ queryKey: getHealthCacheKey(s) });
|
|
38
|
+
}, a[2] = s, a[3] = u, a[4] = f) : f = a[4];
|
|
39
|
+
let p;
|
|
40
|
+
return a[5] !== d || a[6] !== f ? (p = {
|
|
41
|
+
mutationFn: d,
|
|
42
|
+
onSuccess: f
|
|
43
|
+
}, a[5] = d, a[6] = f, a[7] = p) : p = a[7], useMutation(p);
|
|
43
44
|
}
|
|
44
45
|
function useWorkerAuthTokenRefresh() {
|
|
45
|
-
let
|
|
46
|
-
|
|
47
|
-
let
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
let
|
|
52
|
-
return
|
|
53
|
-
mutationFn:
|
|
54
|
-
onSuccess:
|
|
55
|
-
},
|
|
46
|
+
let a = c(8), { envKey: s, api: l } = useApiClient(), u = useQueryClient(), d;
|
|
47
|
+
a[0] === l ? d = a[1] : (d = () => l.auth.refresh(), a[0] = l, a[1] = d);
|
|
48
|
+
let f;
|
|
49
|
+
a[2] !== s || a[3] !== u ? (f = () => {
|
|
50
|
+
u.invalidateQueries({ queryKey: getMeCacheKey(s) }), u.invalidateQueries({ queryKey: getHealthCacheKey(s) });
|
|
51
|
+
}, a[2] = s, a[3] = u, a[4] = f) : f = a[4];
|
|
52
|
+
let p;
|
|
53
|
+
return a[5] !== d || a[6] !== f ? (p = {
|
|
54
|
+
mutationFn: d,
|
|
55
|
+
onSuccess: f
|
|
56
|
+
}, a[5] = d, a[6] = f, a[7] = p) : p = a[7], useMutation(p);
|
|
56
57
|
}
|
|
57
58
|
export { useGetHealthInfo, useMe, useWorkerAuth, useWorkerAuthTokenRefresh };
|