@axiom-lattice/react-sdk 2.1.94 → 2.1.96
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/index.js +348 -276
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +589 -517
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -97,8 +97,8 @@ var AuthProvider = ({
|
|
|
97
97
|
onLoginSuccess?.(userData, tenantList || []);
|
|
98
98
|
return { requiresTenantSelection, hasTenants };
|
|
99
99
|
} catch (err) {
|
|
100
|
-
const
|
|
101
|
-
setError(
|
|
100
|
+
const message28 = err instanceof Error ? err.message : "Login failed";
|
|
101
|
+
setError(message28);
|
|
102
102
|
throw err;
|
|
103
103
|
} finally {
|
|
104
104
|
setIsLoading(false);
|
|
@@ -122,8 +122,8 @@ var AuthProvider = ({
|
|
|
122
122
|
}
|
|
123
123
|
return { message: data.message || "Registration successful!", token: data.data?.token };
|
|
124
124
|
} catch (err) {
|
|
125
|
-
const
|
|
126
|
-
setError(
|
|
125
|
+
const message28 = err instanceof Error ? err.message : "Registration failed";
|
|
126
|
+
setError(message28);
|
|
127
127
|
throw err;
|
|
128
128
|
} finally {
|
|
129
129
|
setIsLoading(false);
|
|
@@ -182,8 +182,8 @@ var AuthProvider = ({
|
|
|
182
182
|
}
|
|
183
183
|
onTenantSelected?.(tenantData);
|
|
184
184
|
} catch (err) {
|
|
185
|
-
const
|
|
186
|
-
setError(
|
|
185
|
+
const message28 = err instanceof Error ? err.message : "Failed to select tenant";
|
|
186
|
+
setError(message28);
|
|
187
187
|
throw err;
|
|
188
188
|
} finally {
|
|
189
189
|
setIsLoading(false);
|
|
@@ -222,8 +222,8 @@ var AuthProvider = ({
|
|
|
222
222
|
setTenants(tenantList);
|
|
223
223
|
sessionStorage.setItem("lattice_tenants", JSON.stringify(tenantList));
|
|
224
224
|
} catch (err) {
|
|
225
|
-
const
|
|
226
|
-
setError(
|
|
225
|
+
const message28 = err instanceof Error ? err.message : "Failed to fetch tenants";
|
|
226
|
+
setError(message28);
|
|
227
227
|
} finally {
|
|
228
228
|
setIsLoading(false);
|
|
229
229
|
}
|
|
@@ -253,8 +253,8 @@ var AuthProvider = ({
|
|
|
253
253
|
setUser(data);
|
|
254
254
|
sessionStorage.setItem("lattice_user", JSON.stringify(data));
|
|
255
255
|
} catch (err) {
|
|
256
|
-
const
|
|
257
|
-
setError(
|
|
256
|
+
const message28 = err instanceof Error ? err.message : "Failed to refresh user";
|
|
257
|
+
setError(message28);
|
|
258
258
|
} finally {
|
|
259
259
|
setIsLoading(false);
|
|
260
260
|
}
|
|
@@ -290,8 +290,8 @@ var AuthProvider = ({
|
|
|
290
290
|
const result = await response.json();
|
|
291
291
|
return result;
|
|
292
292
|
} catch (err) {
|
|
293
|
-
const
|
|
294
|
-
setError(
|
|
293
|
+
const message28 = err instanceof Error ? err.message : "Failed to change password";
|
|
294
|
+
setError(message28);
|
|
295
295
|
throw err;
|
|
296
296
|
} finally {
|
|
297
297
|
setIsLoading(false);
|
|
@@ -510,7 +510,7 @@ function useChat(threadId, assistantId, options = {}) {
|
|
|
510
510
|
throw new Error("Thread ID is required to send messages");
|
|
511
511
|
}
|
|
512
512
|
const { input, command, streaming = true } = data;
|
|
513
|
-
const { message:
|
|
513
|
+
const { message: message28, files, ...rest } = input || {};
|
|
514
514
|
setState((prev) => ({
|
|
515
515
|
...prev,
|
|
516
516
|
isLoading: true,
|
|
@@ -519,7 +519,7 @@ function useChat(threadId, assistantId, options = {}) {
|
|
|
519
519
|
}));
|
|
520
520
|
const userMessage = {
|
|
521
521
|
id: uuidv4(),
|
|
522
|
-
content:
|
|
522
|
+
content: message28 || command?.resume?.message || "",
|
|
523
523
|
files,
|
|
524
524
|
role: "human"
|
|
525
525
|
};
|
|
@@ -1555,8 +1555,8 @@ function convertThreadToConversationThread(thread, label) {
|
|
|
1555
1555
|
function getThreadMetadata(label) {
|
|
1556
1556
|
return label ? { label } : {};
|
|
1557
1557
|
}
|
|
1558
|
-
function generateLabelFromMessage(
|
|
1559
|
-
const cleanMessage =
|
|
1558
|
+
function generateLabelFromMessage(message28) {
|
|
1559
|
+
const cleanMessage = message28.replace(/```attachments[\s\S]*?```/g, "").trim();
|
|
1560
1560
|
if (!cleanMessage) {
|
|
1561
1561
|
return "";
|
|
1562
1562
|
}
|
|
@@ -2029,7 +2029,7 @@ function AgentThreadProvider({
|
|
|
2029
2029
|
throw new Error("Thread ID is required to send messages");
|
|
2030
2030
|
}
|
|
2031
2031
|
const { input, command, streaming = true, mode } = data;
|
|
2032
|
-
const { message:
|
|
2032
|
+
const { message: message28, files, ...rest } = input || {};
|
|
2033
2033
|
setState((prev) => ({
|
|
2034
2034
|
...prev,
|
|
2035
2035
|
isLoading: true,
|
|
@@ -2038,7 +2038,7 @@ function AgentThreadProvider({
|
|
|
2038
2038
|
}));
|
|
2039
2039
|
const userMessage = {
|
|
2040
2040
|
id: uuidv42(),
|
|
2041
|
-
content:
|
|
2041
|
+
content: message28 || command?.resume?.message || "",
|
|
2042
2042
|
files,
|
|
2043
2043
|
role: "human"
|
|
2044
2044
|
};
|
|
@@ -2056,8 +2056,8 @@ function AgentThreadProvider({
|
|
|
2056
2056
|
]
|
|
2057
2057
|
}));
|
|
2058
2058
|
const isFirstMessage = messageCountRef.current === 0;
|
|
2059
|
-
if (isFirstMessage &&
|
|
2060
|
-
const label = generateLabelFromMessage(
|
|
2059
|
+
if (isFirstMessage && message28 && conversationContext) {
|
|
2060
|
+
const label = generateLabelFromMessage(message28);
|
|
2061
2061
|
if (label) {
|
|
2062
2062
|
conversationContext.updateThread({
|
|
2063
2063
|
id: threadId,
|
|
@@ -3954,8 +3954,8 @@ function useTenants(options) {
|
|
|
3954
3954
|
const { data } = await response.json();
|
|
3955
3955
|
setTenants(data || []);
|
|
3956
3956
|
} catch (err) {
|
|
3957
|
-
const
|
|
3958
|
-
setError(
|
|
3957
|
+
const message28 = err instanceof Error ? err.message : "Failed to fetch tenants";
|
|
3958
|
+
setError(message28);
|
|
3959
3959
|
} finally {
|
|
3960
3960
|
setIsLoading(false);
|
|
3961
3961
|
}
|
|
@@ -3997,8 +3997,8 @@ function useUsers(options) {
|
|
|
3997
3997
|
const { data } = await response.json();
|
|
3998
3998
|
setUsers(data || []);
|
|
3999
3999
|
} catch (err) {
|
|
4000
|
-
const
|
|
4001
|
-
setError(
|
|
4000
|
+
const message28 = err instanceof Error ? err.message : "Failed to fetch users";
|
|
4001
|
+
setError(message28);
|
|
4002
4002
|
} finally {
|
|
4003
4003
|
setIsLoading(false);
|
|
4004
4004
|
}
|
|
@@ -4235,7 +4235,7 @@ var FilePanelToggle = () => {
|
|
|
4235
4235
|
};
|
|
4236
4236
|
|
|
4237
4237
|
// src/components/Chat/PinToMenuButton.tsx
|
|
4238
|
-
import React74, { useState as useState82, useEffect as
|
|
4238
|
+
import React74, { useState as useState82, useEffect as useEffect57, useCallback as useCallback42 } from "react";
|
|
4239
4239
|
import { Button as Button60, Input as Input19, Modal as Modal24, Tooltip as Tooltip26, message as message22 } from "antd";
|
|
4240
4240
|
import { Pin } from "lucide-react";
|
|
4241
4241
|
|
|
@@ -4245,13 +4245,13 @@ import React73, {
|
|
|
4245
4245
|
useContext as useContext11,
|
|
4246
4246
|
useState as useState81,
|
|
4247
4247
|
useCallback as useCallback41,
|
|
4248
|
-
useEffect as
|
|
4248
|
+
useEffect as useEffect56,
|
|
4249
4249
|
useRef as useRef30
|
|
4250
4250
|
} from "react";
|
|
4251
4251
|
import { WorkspaceClient, Client as Client3 } from "@axiom-lattice/client-sdk";
|
|
4252
4252
|
|
|
4253
4253
|
// src/components/Chat/WorkspaceResourceManager.tsx
|
|
4254
|
-
import { useMemo as useMemo35, useEffect as
|
|
4254
|
+
import { useMemo as useMemo35, useEffect as useEffect55, useRef as useRef29, useState as useState80 } from "react";
|
|
4255
4255
|
import { FolderOpen as FolderOpen3, Activity as Activity4, Database as Database7, Plug as Plug2, Bot as Bot5, Wrench as Wrench2, Zap as Zap2, LogOut as LogOut3, Building2 as Building23, Key, Share2, History, Inbox as Inbox3, FlaskConical as FlaskConical3 } from "lucide-react";
|
|
4256
4256
|
import { Modal as Modal23, Avatar as Avatar12, Popover as Popover3, Button as Button59 } from "antd";
|
|
4257
4257
|
|
|
@@ -13444,18 +13444,18 @@ var ToolsList = ({
|
|
|
13444
13444
|
};
|
|
13445
13445
|
|
|
13446
13446
|
// src/components/Chat/TopologyRuntimeView.tsx
|
|
13447
|
-
import { useEffect as
|
|
13447
|
+
import { useEffect as useEffect46, useState as useState70, useMemo as useMemo27, useCallback as useCallback37, useRef as useRef25 } from "react";
|
|
13448
13448
|
import {
|
|
13449
13449
|
Spin as Spin16,
|
|
13450
13450
|
Empty as Empty14,
|
|
13451
|
-
List as
|
|
13452
|
-
Tag as
|
|
13451
|
+
List as List16,
|
|
13452
|
+
Tag as Tag24,
|
|
13453
13453
|
Typography as Typography51,
|
|
13454
13454
|
Space as Space39,
|
|
13455
13455
|
Drawer as Drawer2,
|
|
13456
13456
|
Tooltip as Tooltip23,
|
|
13457
13457
|
Switch as Switch3,
|
|
13458
|
-
Popconfirm as
|
|
13458
|
+
Popconfirm as Popconfirm6
|
|
13459
13459
|
} from "antd";
|
|
13460
13460
|
import {
|
|
13461
13461
|
ReloadOutlined as ReloadOutlined4,
|
|
@@ -13499,11 +13499,11 @@ var ConfirmFeedback = ({
|
|
|
13499
13499
|
data,
|
|
13500
13500
|
interactive = true
|
|
13501
13501
|
}) => {
|
|
13502
|
-
const { message:
|
|
13502
|
+
const { message: message28, type, config, feedback, options } = data ?? {};
|
|
13503
13503
|
const { sendMessage } = useAgentChat();
|
|
13504
13504
|
const [clicked, setClicked] = useState36(false);
|
|
13505
13505
|
return /* @__PURE__ */ jsxs22(Space9, { direction: "vertical", style: { width: "100%" }, children: [
|
|
13506
|
-
/* @__PURE__ */ jsx31(MDResponse, { content:
|
|
13506
|
+
/* @__PURE__ */ jsx31(MDResponse, { content: message28 }),
|
|
13507
13507
|
options ? /* @__PURE__ */ jsx31(Space9, { style: { justifyContent: "flex-end", width: "100%" }, children: options?.map((option) => /* @__PURE__ */ jsx31(
|
|
13508
13508
|
Button17,
|
|
13509
13509
|
{
|
|
@@ -13826,7 +13826,7 @@ var useSideAppOpener = () => {
|
|
|
13826
13826
|
import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
13827
13827
|
var { Text: Text16 } = Typography16;
|
|
13828
13828
|
var GenericDataTable = ({ data, interactive = true, default_open_in_side_app = true }) => {
|
|
13829
|
-
const { dataSource, message:
|
|
13829
|
+
const { dataSource, message: message28 } = data ?? {};
|
|
13830
13830
|
const [expandedRowKeys, setExpandedRowKeys] = useState38([]);
|
|
13831
13831
|
const openSideApp = useSideAppOpener();
|
|
13832
13832
|
const processedData = dataSource?.map((item, index) => ({
|
|
@@ -13925,7 +13925,7 @@ var GenericDataTable = ({ data, interactive = true, default_open_in_side_app = t
|
|
|
13925
13925
|
type: "text/csv;charset=utf-8;"
|
|
13926
13926
|
});
|
|
13927
13927
|
const link = document.createElement("a");
|
|
13928
|
-
const filename = `${
|
|
13928
|
+
const filename = `${message28 || "data"}_${(/* @__PURE__ */ new Date()).toISOString().split("T")[0]}.csv`;
|
|
13929
13929
|
link.href = URL.createObjectURL(blob);
|
|
13930
13930
|
link.download = filename;
|
|
13931
13931
|
document.body.appendChild(link);
|
|
@@ -13946,7 +13946,7 @@ var GenericDataTable = ({ data, interactive = true, default_open_in_side_app = t
|
|
|
13946
13946
|
tableLayout: "fixed",
|
|
13947
13947
|
style: { width: "100% !important" },
|
|
13948
13948
|
title: () => /* @__PURE__ */ jsxs24(Flex, { justify: "space-between", align: "center", children: [
|
|
13949
|
-
/* @__PURE__ */ jsx33(Space11, { children: /* @__PURE__ */ jsx33(Text16, { strong: true, style: { fontSize: 16 }, children:
|
|
13949
|
+
/* @__PURE__ */ jsx33(Space11, { children: /* @__PURE__ */ jsx33(Text16, { strong: true, style: { fontSize: 16 }, children: message28 || "" }) }),
|
|
13950
13950
|
/* @__PURE__ */ jsxs24(Space11, { children: [
|
|
13951
13951
|
/* @__PURE__ */ jsx33(
|
|
13952
13952
|
Button19,
|
|
@@ -13968,8 +13968,8 @@ var GenericDataTable = ({ data, interactive = true, default_open_in_side_app = t
|
|
|
13968
13968
|
onClick: () => {
|
|
13969
13969
|
openSideApp({
|
|
13970
13970
|
component_key: "generic_data_table",
|
|
13971
|
-
message:
|
|
13972
|
-
data: { dataSource, message:
|
|
13971
|
+
message: message28 || "",
|
|
13972
|
+
data: { dataSource, message: message28 }
|
|
13973
13973
|
});
|
|
13974
13974
|
},
|
|
13975
13975
|
children: /* @__PURE__ */ jsx33(ExpandAltOutlined, {})
|
|
@@ -15573,7 +15573,7 @@ var AttachmentsCard = ({
|
|
|
15573
15573
|
|
|
15574
15574
|
// src/components/GenUI/elements/attachments_viewer_side_app.tsx
|
|
15575
15575
|
import { Button as Button26, Empty as Empty4, Skeleton, Space as Space18 } from "antd";
|
|
15576
|
-
import { useEffect as
|
|
15576
|
+
import { useEffect as useEffect30, useState as useState45 } from "react";
|
|
15577
15577
|
|
|
15578
15578
|
// src/components/GenUI/FileRenderer.tsx
|
|
15579
15579
|
import { useEffect as useEffect28, useState as useState43, useMemo as useMemo10 } from "react";
|
|
@@ -15743,11 +15743,11 @@ var RenderMDFromURL = ({ url, file_id }) => {
|
|
|
15743
15743
|
import { LinkOutlined as LinkOutlined3, DownloadOutlined as DownloadOutlined3 } from "@ant-design/icons";
|
|
15744
15744
|
|
|
15745
15745
|
// src/components/GenUI/ShareModal.tsx
|
|
15746
|
-
import { useState as useState44, useCallback as useCallback23 } from "react";
|
|
15747
|
-
import { Modal as Modal10, Input as Input13, Select as Select6, InputNumber as InputNumber2, Button as Button25, Space as Space17, Typography as Typography22, message as message11 } from "antd";
|
|
15748
|
-
import { CopyOutlined as CopyOutlined3, LinkOutlined as LinkOutlined2 } from "@ant-design/icons";
|
|
15746
|
+
import { useState as useState44, useEffect as useEffect29, useCallback as useCallback23 } from "react";
|
|
15747
|
+
import { Modal as Modal10, Input as Input13, Select as Select6, InputNumber as InputNumber2, Button as Button25, Space as Space17, Typography as Typography22, message as message11, List as List7, Tag as Tag12, Popconfirm as Popconfirm4 } from "antd";
|
|
15748
|
+
import { CopyOutlined as CopyOutlined3, LinkOutlined as LinkOutlined2, StopOutlined, PlusOutlined as PlusOutlined7 } from "@ant-design/icons";
|
|
15749
15749
|
import { jsx as jsx46, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
15750
|
-
var { Text: Text20 } = Typography22;
|
|
15750
|
+
var { Text: Text20, Title: Title5 } = Typography22;
|
|
15751
15751
|
var EXPIRY_OPTIONS = [
|
|
15752
15752
|
{ label: "Never", value: void 0 },
|
|
15753
15753
|
{ label: "1 hour", value: "1h" },
|
|
@@ -15767,32 +15767,60 @@ function expiryToDate(option) {
|
|
|
15767
15767
|
const ms = map[option] ?? 0;
|
|
15768
15768
|
return ms ? new Date(now + ms).toISOString() : void 0;
|
|
15769
15769
|
}
|
|
15770
|
+
function formatExpiry(d) {
|
|
15771
|
+
if (!d) return "Never";
|
|
15772
|
+
return new Date(d).toLocaleDateString();
|
|
15773
|
+
}
|
|
15774
|
+
function filePathMatch(record, filePath) {
|
|
15775
|
+
const normalizedPath = filePath.replace(/^\/?project\//, "");
|
|
15776
|
+
return record.address.resourcePath === normalizedPath;
|
|
15777
|
+
}
|
|
15770
15778
|
var ShareModal = ({
|
|
15771
15779
|
open,
|
|
15772
15780
|
filePath,
|
|
15773
15781
|
assistantId,
|
|
15774
15782
|
fileName,
|
|
15775
|
-
|
|
15776
|
-
existingVisibility,
|
|
15777
|
-
existingTitle,
|
|
15778
|
-
onClose,
|
|
15779
|
-
onUpdated
|
|
15783
|
+
onClose
|
|
15780
15784
|
}) => {
|
|
15781
|
-
const { shareFile } = useWorkspaceContext();
|
|
15782
|
-
const
|
|
15783
|
-
const
|
|
15784
|
-
const [
|
|
15785
|
-
const [
|
|
15786
|
-
const [
|
|
15787
|
-
const [
|
|
15788
|
-
|
|
15789
|
-
);
|
|
15785
|
+
const { shareFile, listShares, unshareFile } = useWorkspaceContext();
|
|
15786
|
+
const { config: shellConfig } = useLatticeChatShellContext();
|
|
15787
|
+
const baseURL = (shellConfig?.baseURL ?? "").replace(/\/$/, "");
|
|
15788
|
+
const [view, setView] = useState44("list");
|
|
15789
|
+
const [shares, setShares] = useState44([]);
|
|
15790
|
+
const [loading, setLoading] = useState44(false);
|
|
15791
|
+
const [title, setTitle] = useState44(fileName ?? "");
|
|
15792
|
+
const [visibility, setVisibility] = useState44("public");
|
|
15790
15793
|
const [password, setPassword] = useState44("");
|
|
15791
15794
|
const [expiry, setExpiry] = useState44(void 0);
|
|
15792
15795
|
const [maxAccess, setMaxAccess] = useState44(void 0);
|
|
15793
15796
|
const [error, setError] = useState44("");
|
|
15797
|
+
const [resultUrl, setResultUrl] = useState44("");
|
|
15798
|
+
const [resultPwd, setResultPwd] = useState44("");
|
|
15799
|
+
const loadShares = useCallback23(async () => {
|
|
15800
|
+
setLoading(true);
|
|
15801
|
+
try {
|
|
15802
|
+
const all = await listShares();
|
|
15803
|
+
setShares(all.filter((r) => filePathMatch(r, filePath) && !r.revoked));
|
|
15804
|
+
} catch {
|
|
15805
|
+
}
|
|
15806
|
+
setLoading(false);
|
|
15807
|
+
}, [listShares, filePath]);
|
|
15808
|
+
useEffect29(() => {
|
|
15809
|
+
if (open) {
|
|
15810
|
+
setView("list");
|
|
15811
|
+
loadShares();
|
|
15812
|
+
}
|
|
15813
|
+
}, [open, loadShares]);
|
|
15814
|
+
const handleCreate = useCallback23(async () => {
|
|
15815
|
+
setView("create");
|
|
15816
|
+
setTitle(fileName ?? "");
|
|
15817
|
+
setVisibility("public");
|
|
15818
|
+
setPassword("");
|
|
15819
|
+
setExpiry(void 0);
|
|
15820
|
+
setMaxAccess(void 0);
|
|
15821
|
+
setError("");
|
|
15822
|
+
}, [fileName]);
|
|
15794
15823
|
const handleShare = useCallback23(async () => {
|
|
15795
|
-
setState("creating");
|
|
15796
15824
|
setError("");
|
|
15797
15825
|
try {
|
|
15798
15826
|
const result = await shareFile(filePath, assistantId, {
|
|
@@ -15802,104 +15830,137 @@ var ShareModal = ({
|
|
|
15802
15830
|
expiresAt: expiryToDate(expiry),
|
|
15803
15831
|
maxAccess: maxAccess ?? void 0
|
|
15804
15832
|
});
|
|
15805
|
-
|
|
15806
|
-
|
|
15807
|
-
|
|
15833
|
+
setResultUrl(`${baseURL}${result.url}`);
|
|
15834
|
+
setResultPwd(password);
|
|
15835
|
+
setView("result");
|
|
15836
|
+
loadShares();
|
|
15808
15837
|
} catch (err) {
|
|
15809
15838
|
setError(err instanceof Error ? err.message : "Failed to create share");
|
|
15810
|
-
|
|
15839
|
+
setView("error");
|
|
15840
|
+
}
|
|
15841
|
+
}, [filePath, assistantId, title, visibility, password, expiry, maxAccess, shareFile, baseURL, loadShares]);
|
|
15842
|
+
const handleCopy = useCallback23((fullUrl, shareTitle, pwd, isProtected) => {
|
|
15843
|
+
const titleText = shareTitle ? `${shareTitle}
|
|
15844
|
+
` : "";
|
|
15845
|
+
const pwdText = pwd ? `Password: ${pwd}
|
|
15846
|
+
` : isProtected ? "Password protected\n" : "";
|
|
15847
|
+
navigator.clipboard.writeText(`${titleText}${fullUrl}
|
|
15848
|
+
${pwdText}`.trim());
|
|
15849
|
+
message11.success("Copied");
|
|
15850
|
+
}, []);
|
|
15851
|
+
const handleRevoke = useCallback23(async (token) => {
|
|
15852
|
+
try {
|
|
15853
|
+
await unshareFile(token);
|
|
15854
|
+
message11.success("Share revoked");
|
|
15855
|
+
loadShares();
|
|
15856
|
+
} catch {
|
|
15857
|
+
message11.error("Failed to revoke");
|
|
15811
15858
|
}
|
|
15812
|
-
}, [
|
|
15813
|
-
|
|
15814
|
-
|
|
15815
|
-
|
|
15816
|
-
visibility,
|
|
15817
|
-
password,
|
|
15818
|
-
expiry,
|
|
15819
|
-
maxAccess,
|
|
15820
|
-
shareFile
|
|
15821
|
-
]);
|
|
15822
|
-
const handleCopy = useCallback23(() => {
|
|
15823
|
-
const fullUrl = `${window.location.origin}${url}`;
|
|
15824
|
-
navigator.clipboard.writeText(fullUrl);
|
|
15825
|
-
message11.success("Copied to clipboard");
|
|
15826
|
-
}, [url]);
|
|
15827
|
-
const handleOpen = useCallback23(() => {
|
|
15828
|
-
window.open(url, "_blank");
|
|
15829
|
-
}, [url]);
|
|
15859
|
+
}, [unshareFile, loadShares]);
|
|
15860
|
+
const handleOpen = useCallback23((fullUrl) => {
|
|
15861
|
+
window.open(fullUrl, "_blank");
|
|
15862
|
+
}, []);
|
|
15830
15863
|
return /* @__PURE__ */ jsxs33(
|
|
15831
15864
|
Modal10,
|
|
15832
15865
|
{
|
|
15833
|
-
title:
|
|
15866
|
+
title: "Share Resource",
|
|
15834
15867
|
open,
|
|
15835
15868
|
onCancel: onClose,
|
|
15836
15869
|
footer: null,
|
|
15837
|
-
width:
|
|
15870
|
+
width: 480,
|
|
15838
15871
|
children: [
|
|
15839
|
-
|
|
15872
|
+
view === "list" && /* @__PURE__ */ jsxs33(Space17, { direction: "vertical", style: { width: "100%" }, size: "middle", children: [
|
|
15873
|
+
shares.length > 0 ? /* @__PURE__ */ jsx46(
|
|
15874
|
+
List7,
|
|
15875
|
+
{
|
|
15876
|
+
loading,
|
|
15877
|
+
dataSource: shares,
|
|
15878
|
+
renderItem: (r) => {
|
|
15879
|
+
const fullUrl = `${baseURL}/s/${r.token}`;
|
|
15880
|
+
return /* @__PURE__ */ jsx46(
|
|
15881
|
+
List7.Item,
|
|
15882
|
+
{
|
|
15883
|
+
actions: [
|
|
15884
|
+
/* @__PURE__ */ jsx46(
|
|
15885
|
+
Button25,
|
|
15886
|
+
{
|
|
15887
|
+
type: "text",
|
|
15888
|
+
size: "small",
|
|
15889
|
+
icon: /* @__PURE__ */ jsx46(CopyOutlined3, {}),
|
|
15890
|
+
onClick: () => handleCopy(fullUrl, r.title ?? void 0, void 0, r.visibility === "password")
|
|
15891
|
+
},
|
|
15892
|
+
"copy"
|
|
15893
|
+
),
|
|
15894
|
+
/* @__PURE__ */ jsx46(
|
|
15895
|
+
Button25,
|
|
15896
|
+
{
|
|
15897
|
+
type: "text",
|
|
15898
|
+
size: "small",
|
|
15899
|
+
icon: /* @__PURE__ */ jsx46(LinkOutlined2, {}),
|
|
15900
|
+
onClick: () => handleOpen(fullUrl)
|
|
15901
|
+
},
|
|
15902
|
+
"open"
|
|
15903
|
+
),
|
|
15904
|
+
/* @__PURE__ */ jsx46(Popconfirm4, { title: "Revoke this share?", onConfirm: () => handleRevoke(r.token), children: /* @__PURE__ */ jsx46(Button25, { type: "text", size: "small", danger: true, icon: /* @__PURE__ */ jsx46(StopOutlined, {}) }) }, "revoke")
|
|
15905
|
+
],
|
|
15906
|
+
children: /* @__PURE__ */ jsx46(
|
|
15907
|
+
List7.Item.Meta,
|
|
15908
|
+
{
|
|
15909
|
+
title: r.title || fileName || r.address.resourcePath.split("/").pop(),
|
|
15910
|
+
description: /* @__PURE__ */ jsxs33(Space17, { size: "small", children: [
|
|
15911
|
+
/* @__PURE__ */ jsx46(Tag12, { color: r.visibility === "password" ? "orange" : "green", children: r.visibility === "password" ? "Password" : "Public" }),
|
|
15912
|
+
/* @__PURE__ */ jsxs33(Text20, { type: "secondary", style: { fontSize: 12 }, children: [
|
|
15913
|
+
"Expires: ",
|
|
15914
|
+
formatExpiry(r.expiresAt)
|
|
15915
|
+
] })
|
|
15916
|
+
] })
|
|
15917
|
+
}
|
|
15918
|
+
)
|
|
15919
|
+
}
|
|
15920
|
+
);
|
|
15921
|
+
}
|
|
15922
|
+
}
|
|
15923
|
+
) : /* @__PURE__ */ jsx46("div", { style: { textAlign: "center", padding: "16px 0" }, children: /* @__PURE__ */ jsx46(Text20, { type: "secondary", children: "No active shares yet" }) }),
|
|
15924
|
+
/* @__PURE__ */ jsx46(Button25, { type: "primary", block: true, icon: /* @__PURE__ */ jsx46(PlusOutlined7, {}), onClick: handleCreate, children: "Create New Share" })
|
|
15925
|
+
] }),
|
|
15926
|
+
view === "create" && /* @__PURE__ */ jsxs33(Space17, { direction: "vertical", style: { width: "100%" }, size: "middle", children: [
|
|
15840
15927
|
/* @__PURE__ */ jsxs33("div", { children: [
|
|
15841
15928
|
/* @__PURE__ */ jsx46(Text20, { type: "secondary", style: { fontSize: 12 }, children: "Title" }),
|
|
15842
15929
|
/* @__PURE__ */ jsx46(Input13, { value: title, onChange: (e) => setTitle(e.target.value) })
|
|
15843
15930
|
] }),
|
|
15844
15931
|
/* @__PURE__ */ jsxs33("div", { children: [
|
|
15845
15932
|
/* @__PURE__ */ jsx46(Text20, { type: "secondary", style: { fontSize: 12 }, children: "Visibility" }),
|
|
15846
|
-
/* @__PURE__ */ jsxs33(
|
|
15847
|
-
Select6,
|
|
15848
|
-
{
|
|
15849
|
-
|
|
15850
|
-
onChange: setVisibility,
|
|
15851
|
-
style: { width: "100%" },
|
|
15852
|
-
children: [
|
|
15853
|
-
/* @__PURE__ */ jsx46(Select6.Option, { value: "public", children: "Public" }),
|
|
15854
|
-
/* @__PURE__ */ jsx46(Select6.Option, { value: "password", children: "Password" })
|
|
15855
|
-
]
|
|
15856
|
-
}
|
|
15857
|
-
)
|
|
15933
|
+
/* @__PURE__ */ jsxs33(Select6, { value: visibility, onChange: setVisibility, style: { width: "100%" }, children: [
|
|
15934
|
+
/* @__PURE__ */ jsx46(Select6.Option, { value: "public", children: "Public" }),
|
|
15935
|
+
/* @__PURE__ */ jsx46(Select6.Option, { value: "password", children: "Password" })
|
|
15936
|
+
] })
|
|
15858
15937
|
] }),
|
|
15859
15938
|
visibility === "password" && /* @__PURE__ */ jsxs33("div", { children: [
|
|
15860
15939
|
/* @__PURE__ */ jsx46(Text20, { type: "secondary", style: { fontSize: 12 }, children: "Password" }),
|
|
15861
|
-
/* @__PURE__ */ jsx46(
|
|
15862
|
-
Input13.Password,
|
|
15863
|
-
{
|
|
15864
|
-
value: password,
|
|
15865
|
-
onChange: (e) => setPassword(e.target.value)
|
|
15866
|
-
}
|
|
15867
|
-
)
|
|
15940
|
+
/* @__PURE__ */ jsx46(Input13.Password, { value: password, onChange: (e) => setPassword(e.target.value) })
|
|
15868
15941
|
] }),
|
|
15869
15942
|
/* @__PURE__ */ jsxs33("div", { children: [
|
|
15870
15943
|
/* @__PURE__ */ jsx46(Text20, { type: "secondary", style: { fontSize: 12 }, children: "Expires" }),
|
|
15871
|
-
/* @__PURE__ */ jsx46(
|
|
15872
|
-
Select6,
|
|
15873
|
-
{
|
|
15874
|
-
value: expiry,
|
|
15875
|
-
onChange: setExpiry,
|
|
15876
|
-
style: { width: "100%" },
|
|
15877
|
-
children: EXPIRY_OPTIONS.map((opt) => /* @__PURE__ */ jsx46(Select6.Option, { value: opt.value, children: opt.label }, opt.label))
|
|
15878
|
-
}
|
|
15879
|
-
)
|
|
15944
|
+
/* @__PURE__ */ jsx46(Select6, { value: expiry, onChange: setExpiry, style: { width: "100%" }, children: EXPIRY_OPTIONS.map((opt) => /* @__PURE__ */ jsx46(Select6.Option, { value: opt.value, children: opt.label }, opt.label)) })
|
|
15880
15945
|
] }),
|
|
15881
15946
|
/* @__PURE__ */ jsxs33("div", { children: [
|
|
15882
15947
|
/* @__PURE__ */ jsx46(Text20, { type: "secondary", style: { fontSize: 12 }, children: "Max accesses (empty = unlimited)" }),
|
|
15883
|
-
/* @__PURE__ */ jsx46(
|
|
15884
|
-
InputNumber2,
|
|
15885
|
-
{
|
|
15886
|
-
value: maxAccess,
|
|
15887
|
-
onChange: (v) => setMaxAccess(v ?? void 0),
|
|
15888
|
-
style: { width: "100%" },
|
|
15889
|
-
min: 1
|
|
15890
|
-
}
|
|
15891
|
-
)
|
|
15948
|
+
/* @__PURE__ */ jsx46(InputNumber2, { value: maxAccess, onChange: (v) => setMaxAccess(v ?? void 0), style: { width: "100%" }, min: 1 })
|
|
15892
15949
|
] }),
|
|
15893
|
-
|
|
15950
|
+
/* @__PURE__ */ jsxs33("div", { style: { display: "flex", gap: 8 }, children: [
|
|
15951
|
+
/* @__PURE__ */ jsx46(Button25, { block: true, onClick: () => setView("list"), children: "Back" }),
|
|
15952
|
+
/* @__PURE__ */ jsx46(Button25, { type: "primary", block: true, onClick: handleShare, children: "Create Share" })
|
|
15953
|
+
] })
|
|
15894
15954
|
] }),
|
|
15895
|
-
|
|
15896
|
-
/* @__PURE__ */ jsx46(Input13, { value:
|
|
15955
|
+
view === "result" && /* @__PURE__ */ jsxs33(Space17, { direction: "vertical", style: { width: "100%" }, size: "middle", children: [
|
|
15956
|
+
/* @__PURE__ */ jsx46(Input13, { value: resultUrl, readOnly: true, style: { fontFamily: "monospace" } }),
|
|
15897
15957
|
/* @__PURE__ */ jsx46("div", { style: { textAlign: "center" }, children: /* @__PURE__ */ jsxs33(Space17, { children: [
|
|
15898
|
-
/* @__PURE__ */ jsx46(Button25, { icon: /* @__PURE__ */ jsx46(CopyOutlined3, {}), onClick: handleCopy, children: "Copy" }),
|
|
15899
|
-
/* @__PURE__ */ jsx46(Button25, { type: "primary", icon: /* @__PURE__ */ jsx46(LinkOutlined2, {}), onClick: handleOpen, children: "Open" })
|
|
15900
|
-
] }) })
|
|
15958
|
+
/* @__PURE__ */ jsx46(Button25, { icon: /* @__PURE__ */ jsx46(CopyOutlined3, {}), onClick: () => handleCopy(resultUrl, title, resultPwd), children: "Copy" }),
|
|
15959
|
+
/* @__PURE__ */ jsx46(Button25, { type: "primary", icon: /* @__PURE__ */ jsx46(LinkOutlined2, {}), onClick: () => handleOpen(resultUrl), children: "Open" })
|
|
15960
|
+
] }) }),
|
|
15961
|
+
/* @__PURE__ */ jsx46(Button25, { block: true, onClick: () => setView("list"), children: "Back to shares" })
|
|
15901
15962
|
] }),
|
|
15902
|
-
|
|
15963
|
+
view === "error" && /* @__PURE__ */ jsxs33("div", { style: { textAlign: "center", padding: "24px 0" }, children: [
|
|
15903
15964
|
/* @__PURE__ */ jsx46(Text20, { type: "danger", children: error }),
|
|
15904
15965
|
/* @__PURE__ */ jsx46("br", {}),
|
|
15905
15966
|
/* @__PURE__ */ jsx46(Button25, { onClick: handleShare, style: { marginTop: 16 }, children: "Retry" })
|
|
@@ -15922,7 +15983,7 @@ function AttachmentsViewerSideApp({
|
|
|
15922
15983
|
url: full_url || "",
|
|
15923
15984
|
fileName: extractFileName(file_id || "")
|
|
15924
15985
|
});
|
|
15925
|
-
|
|
15986
|
+
useEffect30(() => {
|
|
15926
15987
|
setFileUri({
|
|
15927
15988
|
url: full_url || "",
|
|
15928
15989
|
fileName: extractFileName(file_id || "")
|
|
@@ -16002,7 +16063,7 @@ function AttachmentsViewerSideApp({
|
|
|
16002
16063
|
import { Button as Button27, Space as Space19, Typography as Typography23 } from "antd";
|
|
16003
16064
|
|
|
16004
16065
|
// src/components/GenUI/elements/ContentPreviewCollapse.tsx
|
|
16005
|
-
import { useRef as useRef12, useState as useState46, useEffect as
|
|
16066
|
+
import { useRef as useRef12, useState as useState46, useEffect as useEffect31, useCallback as useCallback24 } from "react";
|
|
16006
16067
|
import { Collapse as Collapse5 } from "antd";
|
|
16007
16068
|
import { createStyles as createStyles12 } from "antd-style";
|
|
16008
16069
|
import { DownOutlined as DownOutlined3, UpOutlined as UpOutlined2 } from "@ant-design/icons";
|
|
@@ -16083,7 +16144,7 @@ var ContentPreviewCollapse = ({
|
|
|
16083
16144
|
setIsOverflowing(scrollHeight > collapsedMaxHeight);
|
|
16084
16145
|
}
|
|
16085
16146
|
}, [collapsedMaxHeight]);
|
|
16086
|
-
|
|
16147
|
+
useEffect31(() => {
|
|
16087
16148
|
const element = contentRef.current;
|
|
16088
16149
|
if (!element) return;
|
|
16089
16150
|
checkOverflow();
|
|
@@ -16261,7 +16322,7 @@ var EditFile = ({
|
|
|
16261
16322
|
};
|
|
16262
16323
|
|
|
16263
16324
|
// src/components/GenUI/elements/task_card.tsx
|
|
16264
|
-
import { Card as Card13, Typography as Typography25, Tag as
|
|
16325
|
+
import { Card as Card13, Typography as Typography25, Tag as Tag13, Avatar as Avatar6 } from "antd";
|
|
16265
16326
|
import { createStyles as createStyles13 } from "antd-style";
|
|
16266
16327
|
import {
|
|
16267
16328
|
CheckCircleOutlined as CheckCircleOutlined4,
|
|
@@ -16509,7 +16570,7 @@ var TaskCard = ({
|
|
|
16509
16570
|
/* @__PURE__ */ jsx52(Text23, { className: styles.assigneeName, children: assignee })
|
|
16510
16571
|
] }),
|
|
16511
16572
|
/* @__PURE__ */ jsx52(
|
|
16512
|
-
|
|
16573
|
+
Tag13,
|
|
16513
16574
|
{
|
|
16514
16575
|
icon: statusConfig2.icon,
|
|
16515
16576
|
color: statusConfig2.color,
|
|
@@ -16577,21 +16638,21 @@ import ErrorBoundary from "antd/es/alert/ErrorBoundary";
|
|
|
16577
16638
|
import {
|
|
16578
16639
|
memo,
|
|
16579
16640
|
useCallback as useCallback25,
|
|
16580
|
-
useEffect as
|
|
16641
|
+
useEffect as useEffect32,
|
|
16581
16642
|
useMemo as useMemo11,
|
|
16582
16643
|
useRef as useRef13,
|
|
16583
16644
|
useState as useState47
|
|
16584
16645
|
} from "react";
|
|
16585
16646
|
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
16586
16647
|
var LazyBubble = ({
|
|
16587
|
-
message:
|
|
16648
|
+
message: message28,
|
|
16588
16649
|
renderContent,
|
|
16589
16650
|
autoLoadRightPanel
|
|
16590
16651
|
}) => {
|
|
16591
16652
|
const ref = useRef13(null);
|
|
16592
16653
|
const [isVisible, setIsVisible] = useState47(false);
|
|
16593
16654
|
const [wasEverVisible, setWasEverVisible] = useState47(false);
|
|
16594
|
-
|
|
16655
|
+
useEffect32(() => {
|
|
16595
16656
|
const observer = new IntersectionObserver(
|
|
16596
16657
|
([entry]) => {
|
|
16597
16658
|
const visible = entry.isIntersecting;
|
|
@@ -16611,14 +16672,14 @@ var LazyBubble = ({
|
|
|
16611
16672
|
}
|
|
16612
16673
|
};
|
|
16613
16674
|
}, [wasEverVisible]);
|
|
16614
|
-
|
|
16675
|
+
useEffect32(() => {
|
|
16615
16676
|
autoLoadRightPanel?.();
|
|
16616
16677
|
}, []);
|
|
16617
16678
|
const getPlaceholder = () => {
|
|
16618
|
-
const estimatedHeight =
|
|
16679
|
+
const estimatedHeight = message28.content ? Math.min(100, message28.content.length / 5) : 100;
|
|
16619
16680
|
return /* @__PURE__ */ jsx53("div", { style: { height: `${estimatedHeight}px`, minHeight: "50px" } });
|
|
16620
16681
|
};
|
|
16621
|
-
return /* @__PURE__ */ jsx53(ErrorBoundary, { children: /* @__PURE__ */ jsx53("div", { ref, style: { width: "100%" }, children: isVisible || wasEverVisible ? renderContent(
|
|
16682
|
+
return /* @__PURE__ */ jsx53(ErrorBoundary, { children: /* @__PURE__ */ jsx53("div", { ref, style: { width: "100%" }, children: isVisible || wasEverVisible ? renderContent(message28) : getPlaceholder() }) });
|
|
16622
16683
|
};
|
|
16623
16684
|
var MemoizedBubbleList = memo(
|
|
16624
16685
|
({
|
|
@@ -16644,13 +16705,13 @@ var MessageList = ({
|
|
|
16644
16705
|
const { styles } = useStyle();
|
|
16645
16706
|
const openSideApp = useSideAppOpener();
|
|
16646
16707
|
const messageLengthRef = useRef13(messages?.length ?? 0);
|
|
16647
|
-
|
|
16708
|
+
useEffect32(() => {
|
|
16648
16709
|
if (messages?.length) {
|
|
16649
16710
|
messageLengthRef.current = messages?.length;
|
|
16650
16711
|
}
|
|
16651
16712
|
}, [messages?.length]);
|
|
16652
|
-
const renderContent = useCallback25((
|
|
16653
|
-
const { content } =
|
|
16713
|
+
const renderContent = useCallback25((message28) => {
|
|
16714
|
+
const { content } = message28;
|
|
16654
16715
|
try {
|
|
16655
16716
|
const json = JSON.parse(content);
|
|
16656
16717
|
if (json.action && json.message) {
|
|
@@ -16658,7 +16719,7 @@ var MessageList = ({
|
|
|
16658
16719
|
}
|
|
16659
16720
|
} catch (error) {
|
|
16660
16721
|
}
|
|
16661
|
-
const tool_calls_md =
|
|
16722
|
+
const tool_calls_md = message28.tool_calls?.map((tool_call) => {
|
|
16662
16723
|
return `\`\`\`tool_call
|
|
16663
16724
|
${JSON.stringify(tool_call)}
|
|
16664
16725
|
\`\`\``;
|
|
@@ -16667,17 +16728,17 @@ ${JSON.stringify(tool_call)}
|
|
|
16667
16728
|
return /* @__PURE__ */ jsx53(Space21, { direction: "vertical", style: { width: "100%" }, children: /* @__PURE__ */ jsx53(MDResponse, { content: content_md }) });
|
|
16668
16729
|
}, []);
|
|
16669
16730
|
const items = useMemo11(
|
|
16670
|
-
() => messages.map((
|
|
16671
|
-
key:
|
|
16672
|
-
role:
|
|
16731
|
+
() => messages.map((message28, index) => ({
|
|
16732
|
+
key: message28.id,
|
|
16733
|
+
role: message28.role,
|
|
16673
16734
|
typing: false,
|
|
16674
16735
|
content: /* @__PURE__ */ jsx53(
|
|
16675
16736
|
LazyBubble,
|
|
16676
16737
|
{
|
|
16677
|
-
message:
|
|
16738
|
+
message: message28,
|
|
16678
16739
|
renderContent,
|
|
16679
16740
|
autoLoadRightPanel: () => {
|
|
16680
|
-
const { content, role: role2 } =
|
|
16741
|
+
const { content, role: role2 } = message28;
|
|
16681
16742
|
const isNewAddedMessage = messageLengthRef.current > 1 && messageLengthRef.current + 1 === messages.length;
|
|
16682
16743
|
if (index === messages.length - 1 && isNewAddedMessage && role2 === "ai") {
|
|
16683
16744
|
try {
|
|
@@ -16754,14 +16815,14 @@ import {
|
|
|
16754
16815
|
Space as Space30,
|
|
16755
16816
|
Typography as Typography34
|
|
16756
16817
|
} from "antd";
|
|
16757
|
-
import React39, { useCallback as useCallback29, useContext as useContext10, useEffect as
|
|
16818
|
+
import React39, { useCallback as useCallback29, useContext as useContext10, useEffect as useEffect38, useRef as useRef19, useState as useState57 } from "react";
|
|
16758
16819
|
import { BrainCircuit as BrainCircuit3 } from "lucide-react";
|
|
16759
16820
|
|
|
16760
16821
|
// src/components/GenUI/HITLContainer.tsx
|
|
16761
16822
|
import {
|
|
16762
16823
|
Collapse as Collapse6,
|
|
16763
16824
|
Space as Space22,
|
|
16764
|
-
Tag as
|
|
16825
|
+
Tag as Tag14,
|
|
16765
16826
|
Typography as Typography26
|
|
16766
16827
|
} from "antd";
|
|
16767
16828
|
import { createStyles as createStyles14 } from "antd-style";
|
|
@@ -16802,7 +16863,7 @@ var HITLContainer = () => {
|
|
|
16802
16863
|
{
|
|
16803
16864
|
showArrow: false,
|
|
16804
16865
|
header: /* @__PURE__ */ jsx54(
|
|
16805
|
-
|
|
16866
|
+
Tag14,
|
|
16806
16867
|
{
|
|
16807
16868
|
bordered: false,
|
|
16808
16869
|
color: "orange",
|
|
@@ -17375,7 +17436,7 @@ var FileExplorerButton = (_props) => {
|
|
|
17375
17436
|
};
|
|
17376
17437
|
|
|
17377
17438
|
// src/components/Chat/ScheduleButton.tsx
|
|
17378
|
-
import { useState as useState49, useCallback as useCallback26, useEffect as
|
|
17439
|
+
import { useState as useState49, useCallback as useCallback26, useEffect as useEffect33 } from "react";
|
|
17379
17440
|
import { Tooltip as Tooltip9, Button as Button32, Spin as Spin7 } from "antd";
|
|
17380
17441
|
import { CalendarOutlined } from "@ant-design/icons";
|
|
17381
17442
|
import { ScheduledTaskStatus } from "@axiom-lattice/client-sdk";
|
|
@@ -17407,7 +17468,7 @@ var ScheduleButton = ({
|
|
|
17407
17468
|
setLoading(false);
|
|
17408
17469
|
}
|
|
17409
17470
|
}, [client, threadId]);
|
|
17410
|
-
|
|
17471
|
+
useEffect33(() => {
|
|
17411
17472
|
fetchScheduledTasks();
|
|
17412
17473
|
}, [fetchScheduledTasks]);
|
|
17413
17474
|
if (!threadId) {
|
|
@@ -17703,7 +17764,7 @@ var AgentHeader = ({
|
|
|
17703
17764
|
// src/components/Chat/ThreadManagementButtons.tsx
|
|
17704
17765
|
import { useCallback as useCallback27, useContext as useContext9 } from "react";
|
|
17705
17766
|
import { Tooltip as Tooltip12, Button as Button35, Dropdown } from "antd";
|
|
17706
|
-
import { HistoryOutlined, PlusOutlined as
|
|
17767
|
+
import { HistoryOutlined, PlusOutlined as PlusOutlined8 } from "@ant-design/icons";
|
|
17707
17768
|
import { Fragment as Fragment11, jsx as jsx66, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
17708
17769
|
var CreateThreadButton = () => {
|
|
17709
17770
|
const { createThread, assistantId, isLoading } = useConversationContext();
|
|
@@ -17725,7 +17786,7 @@ var CreateThreadButton = () => {
|
|
|
17725
17786
|
Button35,
|
|
17726
17787
|
{
|
|
17727
17788
|
type: "text",
|
|
17728
|
-
icon: /* @__PURE__ */ jsx66(
|
|
17789
|
+
icon: /* @__PURE__ */ jsx66(PlusOutlined8, {}),
|
|
17729
17790
|
onClick: handleCreateThread,
|
|
17730
17791
|
disabled: isLoading,
|
|
17731
17792
|
loading: isLoading
|
|
@@ -17813,7 +17874,7 @@ var ThreadManagementButtons = () => {
|
|
|
17813
17874
|
|
|
17814
17875
|
// src/components/Chat/DatabasePicker.tsx
|
|
17815
17876
|
import { useRef as useRef14, useState as useState50 } from "react";
|
|
17816
|
-
import { Modal as Modal11, List as
|
|
17877
|
+
import { Modal as Modal11, List as List8, Checkbox as Checkbox5, Spin as Spin8, Empty as Empty5, Typography as Typography28, Button as Button36, Space as Space25, Tooltip as Tooltip13 } from "antd";
|
|
17817
17878
|
import { Database as Database4 } from "lucide-react";
|
|
17818
17879
|
import { Fragment as Fragment12, jsx as jsx67, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
17819
17880
|
var DatabasePicker = ({ senderRef, iconOnly }) => {
|
|
@@ -17909,13 +17970,13 @@ var DatabasePicker = ({ senderRef, iconOnly }) => {
|
|
|
17909
17970
|
image: Empty5.PRESENTED_IMAGE_SIMPLE
|
|
17910
17971
|
}
|
|
17911
17972
|
) : /* @__PURE__ */ jsx67(
|
|
17912
|
-
|
|
17973
|
+
List8,
|
|
17913
17974
|
{
|
|
17914
17975
|
dataSource: databases,
|
|
17915
17976
|
renderItem: (db) => {
|
|
17916
17977
|
const isSelected = selectedDatabases.includes(db.key);
|
|
17917
17978
|
return /* @__PURE__ */ jsx67(
|
|
17918
|
-
|
|
17979
|
+
List8.Item,
|
|
17919
17980
|
{
|
|
17920
17981
|
style: {
|
|
17921
17982
|
padding: "12px 16px",
|
|
@@ -17931,7 +17992,7 @@ var DatabasePicker = ({ senderRef, iconOnly }) => {
|
|
|
17931
17992
|
setSelectedDatabases(newValue);
|
|
17932
17993
|
},
|
|
17933
17994
|
children: /* @__PURE__ */ jsx67(
|
|
17934
|
-
|
|
17995
|
+
List8.Item.Meta,
|
|
17935
17996
|
{
|
|
17936
17997
|
avatar: /* @__PURE__ */ jsx67(
|
|
17937
17998
|
Checkbox5,
|
|
@@ -17963,7 +18024,7 @@ var DatabasePicker = ({ senderRef, iconOnly }) => {
|
|
|
17963
18024
|
|
|
17964
18025
|
// src/components/Chat/SkillPicker.tsx
|
|
17965
18026
|
import { useRef as useRef15, useState as useState51 } from "react";
|
|
17966
|
-
import { Modal as Modal12, List as
|
|
18027
|
+
import { Modal as Modal12, List as List9, Checkbox as Checkbox6, Spin as Spin9, Empty as Empty6, Typography as Typography29, Button as Button37, Space as Space26, Tooltip as Tooltip14 } from "antd";
|
|
17967
18028
|
import { BrainCircuit } from "lucide-react";
|
|
17968
18029
|
import { Fragment as Fragment13, jsx as jsx68, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
17969
18030
|
var SkillPicker = ({ senderRef, iconOnly }) => {
|
|
@@ -18059,13 +18120,13 @@ var SkillPicker = ({ senderRef, iconOnly }) => {
|
|
|
18059
18120
|
image: Empty6.PRESENTED_IMAGE_SIMPLE
|
|
18060
18121
|
}
|
|
18061
18122
|
) : /* @__PURE__ */ jsx68(
|
|
18062
|
-
|
|
18123
|
+
List9,
|
|
18063
18124
|
{
|
|
18064
18125
|
dataSource: skills,
|
|
18065
18126
|
renderItem: (skill) => {
|
|
18066
18127
|
const isSelected = selectedSkills.includes(skill.id);
|
|
18067
18128
|
return /* @__PURE__ */ jsx68(
|
|
18068
|
-
|
|
18129
|
+
List9.Item,
|
|
18069
18130
|
{
|
|
18070
18131
|
style: {
|
|
18071
18132
|
padding: "12px 16px",
|
|
@@ -18081,7 +18142,7 @@ var SkillPicker = ({ senderRef, iconOnly }) => {
|
|
|
18081
18142
|
setSelectedSkills(newValue);
|
|
18082
18143
|
},
|
|
18083
18144
|
children: /* @__PURE__ */ jsx68(
|
|
18084
|
-
|
|
18145
|
+
List9.Item.Meta,
|
|
18085
18146
|
{
|
|
18086
18147
|
avatar: /* @__PURE__ */ jsx68(
|
|
18087
18148
|
Checkbox6,
|
|
@@ -18113,7 +18174,7 @@ var SkillPicker = ({ senderRef, iconOnly }) => {
|
|
|
18113
18174
|
|
|
18114
18175
|
// src/components/Chat/AgentPicker.tsx
|
|
18115
18176
|
import { useRef as useRef16, useState as useState52 } from "react";
|
|
18116
|
-
import { Modal as Modal13, List as
|
|
18177
|
+
import { Modal as Modal13, List as List10, Empty as Empty7, Typography as Typography30, Button as Button38, Tooltip as Tooltip15 } from "antd";
|
|
18117
18178
|
import { Bot as Bot2 } from "lucide-react";
|
|
18118
18179
|
import { Fragment as Fragment14, jsx as jsx69, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
18119
18180
|
var AgentPicker = ({ senderRef, iconOnly }) => {
|
|
@@ -18174,13 +18235,13 @@ var AgentPicker = ({ senderRef, iconOnly }) => {
|
|
|
18174
18235
|
image: Empty7.PRESENTED_IMAGE_SIMPLE
|
|
18175
18236
|
}
|
|
18176
18237
|
) : /* @__PURE__ */ jsx69(
|
|
18177
|
-
|
|
18238
|
+
List10,
|
|
18178
18239
|
{
|
|
18179
18240
|
dataSource: assistants,
|
|
18180
18241
|
renderItem: (agent) => {
|
|
18181
18242
|
const isSelected = selectedAgent === agent.id;
|
|
18182
18243
|
return /* @__PURE__ */ jsx69(
|
|
18183
|
-
|
|
18244
|
+
List10.Item,
|
|
18184
18245
|
{
|
|
18185
18246
|
style: {
|
|
18186
18247
|
padding: "12px 16px",
|
|
@@ -18193,7 +18254,7 @@ var AgentPicker = ({ senderRef, iconOnly }) => {
|
|
|
18193
18254
|
},
|
|
18194
18255
|
onClick: () => handleAgentClick(agent.id),
|
|
18195
18256
|
children: /* @__PURE__ */ jsx69(
|
|
18196
|
-
|
|
18257
|
+
List10.Item.Meta,
|
|
18197
18258
|
{
|
|
18198
18259
|
avatar: /* @__PURE__ */ jsx69(
|
|
18199
18260
|
"div",
|
|
@@ -18228,8 +18289,8 @@ var AgentPicker = ({ senderRef, iconOnly }) => {
|
|
|
18228
18289
|
};
|
|
18229
18290
|
|
|
18230
18291
|
// src/components/Chat/MetricsDataSourcePicker.tsx
|
|
18231
|
-
import { useEffect as
|
|
18232
|
-
import { Modal as Modal14, List as
|
|
18292
|
+
import { useEffect as useEffect35, useState as useState53, useRef as useRef17 } from "react";
|
|
18293
|
+
import { Modal as Modal14, List as List11, Spin as Spin11, Empty as Empty8, Typography as Typography31, Button as Button39, Tag as Tag15, Tooltip as Tooltip16 } from "antd";
|
|
18233
18294
|
import { Database as Database5, Check as Check4, Server as Server2 } from "lucide-react";
|
|
18234
18295
|
import { Fragment as Fragment15, jsx as jsx70, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
18235
18296
|
var SESSION_STORAGE_KEY = "metrics_datasource_selection";
|
|
@@ -18317,7 +18378,7 @@ var MetricsDataSourcePicker = ({
|
|
|
18317
18378
|
console.error("Failed to save datasource to sessionStorage:", error);
|
|
18318
18379
|
}
|
|
18319
18380
|
};
|
|
18320
|
-
|
|
18381
|
+
useEffect35(() => {
|
|
18321
18382
|
if (hasInitializedRef.current) return;
|
|
18322
18383
|
hasInitializedRef.current = true;
|
|
18323
18384
|
loadDataSources().then(() => {
|
|
@@ -18447,19 +18508,19 @@ var MetricsDataSourcePicker = ({
|
|
|
18447
18508
|
children: serverName
|
|
18448
18509
|
}
|
|
18449
18510
|
),
|
|
18450
|
-
/* @__PURE__ */ jsx70(
|
|
18511
|
+
/* @__PURE__ */ jsx70(Tag15, { style: { fontSize: 11, padding: "0 6px", lineHeight: "18px" }, children: sources.length })
|
|
18451
18512
|
]
|
|
18452
18513
|
}
|
|
18453
18514
|
),
|
|
18454
18515
|
/* @__PURE__ */ jsx70(
|
|
18455
|
-
|
|
18516
|
+
List11,
|
|
18456
18517
|
{
|
|
18457
18518
|
dataSource: sources,
|
|
18458
18519
|
renderItem: (dataSource) => {
|
|
18459
18520
|
const isConnected = dataSource.connected;
|
|
18460
18521
|
const selected = isSelected(dataSource);
|
|
18461
18522
|
return /* @__PURE__ */ jsx70(
|
|
18462
|
-
|
|
18523
|
+
List11.Item,
|
|
18463
18524
|
{
|
|
18464
18525
|
style: {
|
|
18465
18526
|
padding: "10px 12px",
|
|
@@ -18540,7 +18601,7 @@ var MetricsDataSourcePicker = ({
|
|
|
18540
18601
|
}
|
|
18541
18602
|
),
|
|
18542
18603
|
selected && /* @__PURE__ */ jsx70(
|
|
18543
|
-
|
|
18604
|
+
Tag15,
|
|
18544
18605
|
{
|
|
18545
18606
|
color: "blue",
|
|
18546
18607
|
style: {
|
|
@@ -18568,7 +18629,7 @@ var MetricsDataSourcePicker = ({
|
|
|
18568
18629
|
};
|
|
18569
18630
|
|
|
18570
18631
|
// src/components/Chat/ModelSelector.tsx
|
|
18571
|
-
import { useState as useState54, useEffect as
|
|
18632
|
+
import { useState as useState54, useEffect as useEffect36, useCallback as useCallback28, useRef as useRef18 } from "react";
|
|
18572
18633
|
import { Select as Select7 } from "antd";
|
|
18573
18634
|
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
18574
18635
|
var STORAGE_KEY = "axiom-lattice:selected-model";
|
|
@@ -18635,7 +18696,7 @@ var ModelSelector = ({
|
|
|
18635
18696
|
setIsLoading(false);
|
|
18636
18697
|
}
|
|
18637
18698
|
}, [get, defaultModelKey]);
|
|
18638
|
-
|
|
18699
|
+
useEffect36(() => {
|
|
18639
18700
|
fetchModels();
|
|
18640
18701
|
}, [fetchModels]);
|
|
18641
18702
|
const handleChange = (modelKey) => {
|
|
@@ -18699,7 +18760,7 @@ import {
|
|
|
18699
18760
|
} from "@ant-design/icons";
|
|
18700
18761
|
import { Prompts } from "@ant-design/x";
|
|
18701
18762
|
import { Space as Space28, Typography as Typography32, Spin as Spin12 } from "antd";
|
|
18702
|
-
import { useEffect as
|
|
18763
|
+
import { useEffect as useEffect37, useState as useState55, useMemo as useMemo12 } from "react";
|
|
18703
18764
|
import { BrainCircuit as BrainCircuit2 } from "lucide-react";
|
|
18704
18765
|
import { jsx as jsx72, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
18705
18766
|
var categoryConfig = {
|
|
@@ -18789,7 +18850,7 @@ var SkillCategoryPrompts = ({
|
|
|
18789
18850
|
const [showAll, setShowAll] = useState55(false);
|
|
18790
18851
|
const { get } = useApi();
|
|
18791
18852
|
const MAX_SIMPLE_ITEMS = 10;
|
|
18792
|
-
|
|
18853
|
+
useEffect37(() => {
|
|
18793
18854
|
const loadSkills = async () => {
|
|
18794
18855
|
setLoading(true);
|
|
18795
18856
|
try {
|
|
@@ -19391,7 +19452,7 @@ var Chating = ({
|
|
|
19391
19452
|
const isInputDisabled = interrupts && interrupts.length > 0;
|
|
19392
19453
|
const typingFrames = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
|
|
19393
19454
|
const [typingFrameIndex, setTypingFrameIndex] = useState57(0);
|
|
19394
|
-
|
|
19455
|
+
useEffect38(() => {
|
|
19395
19456
|
if (!isStreaming) return;
|
|
19396
19457
|
const interval = setInterval(() => {
|
|
19397
19458
|
setTypingFrameIndex((prev) => (prev + 1) % typingFrames.length);
|
|
@@ -19402,13 +19463,13 @@ var Chating = ({
|
|
|
19402
19463
|
const systemContextSentRef = useRef19(false);
|
|
19403
19464
|
const initialMessageSentRef = useRef19(false);
|
|
19404
19465
|
const prevLoadingRef = useRef19(false);
|
|
19405
|
-
|
|
19466
|
+
useEffect38(() => {
|
|
19406
19467
|
systemContextSentRef.current = false;
|
|
19407
19468
|
}, [threadId]);
|
|
19408
|
-
|
|
19469
|
+
useEffect38(() => {
|
|
19409
19470
|
initialMessageSentRef.current = false;
|
|
19410
19471
|
}, [threadId]);
|
|
19411
|
-
|
|
19472
|
+
useEffect38(() => {
|
|
19412
19473
|
const wasLoading = prevLoadingRef.current;
|
|
19413
19474
|
prevLoadingRef.current = isLoading;
|
|
19414
19475
|
if (wasLoading && !isLoading && initialMessage && threadId && !initialMessageSentRef.current) {
|
|
@@ -19429,7 +19490,7 @@ var Chating = ({
|
|
|
19429
19490
|
}, [updateCustomRunConfig]);
|
|
19430
19491
|
const [isEmptyState, setIsEmptyState] = useState57(showEmptyState && messages.length === 0 && !pendingMessages?.length);
|
|
19431
19492
|
const [isTransitioning, setIsTransitioning] = useState57(false);
|
|
19432
|
-
|
|
19493
|
+
useEffect38(() => {
|
|
19433
19494
|
if (!showEmptyState) {
|
|
19434
19495
|
setIsEmptyState(false);
|
|
19435
19496
|
return;
|
|
@@ -19516,7 +19577,7 @@ var Chating = ({
|
|
|
19516
19577
|
setSuggestionsLoading(false);
|
|
19517
19578
|
}
|
|
19518
19579
|
};
|
|
19519
|
-
|
|
19580
|
+
useEffect38(() => {
|
|
19520
19581
|
regsiterElement("action_show_attachments_uploader", {
|
|
19521
19582
|
card_view: () => null,
|
|
19522
19583
|
action: (data) => {
|
|
@@ -19952,7 +20013,7 @@ var TaskDetail = ({ data, component_key, interactive = true }) => {
|
|
|
19952
20013
|
};
|
|
19953
20014
|
|
|
19954
20015
|
// src/components/GenUI/elements/internet_search_card.tsx
|
|
19955
|
-
import { Avatar as Avatar7, Button as Button41, List as
|
|
20016
|
+
import { Avatar as Avatar7, Button as Button41, List as List12, Space as Space31, Typography as Typography36 } from "antd";
|
|
19956
20017
|
import {
|
|
19957
20018
|
SearchOutlined
|
|
19958
20019
|
} from "@ant-design/icons";
|
|
@@ -20083,7 +20144,7 @@ var InternetSearchCard = ({
|
|
|
20083
20144
|
header,
|
|
20084
20145
|
expandIcon: () => /* @__PURE__ */ jsx76(SearchOutlined, {}),
|
|
20085
20146
|
children: /* @__PURE__ */ jsx76(
|
|
20086
|
-
|
|
20147
|
+
List12,
|
|
20087
20148
|
{
|
|
20088
20149
|
size: "small",
|
|
20089
20150
|
dataSource,
|
|
@@ -20092,7 +20153,7 @@ var InternetSearchCard = ({
|
|
|
20092
20153
|
const domain = getDomainFromUrl(url);
|
|
20093
20154
|
const iconText = getIconText(domain);
|
|
20094
20155
|
const iconColor = getIconColor(domain);
|
|
20095
|
-
return /* @__PURE__ */ jsx76(
|
|
20156
|
+
return /* @__PURE__ */ jsx76(List12.Item, { extra: /* @__PURE__ */ jsx76(Text26, { className: styles.source, children: domain }), children: /* @__PURE__ */ jsxs53(Space31, { style: { width: "100%" }, children: [
|
|
20096
20157
|
/* @__PURE__ */ jsx76(Avatar7, { style: { background: iconColor }, children: iconText }),
|
|
20097
20158
|
" ",
|
|
20098
20159
|
/* @__PURE__ */ jsx76(
|
|
@@ -20118,16 +20179,16 @@ var InternetSearchCard = ({
|
|
|
20118
20179
|
};
|
|
20119
20180
|
|
|
20120
20181
|
// src/components/GenUI/elements/schedule_viewer.tsx
|
|
20121
|
-
import { useState as useState58, useEffect as
|
|
20182
|
+
import { useState as useState58, useEffect as useEffect39, useCallback as useCallback30 } from "react";
|
|
20122
20183
|
import {
|
|
20123
|
-
Tag as
|
|
20184
|
+
Tag as Tag16,
|
|
20124
20185
|
Button as Button42,
|
|
20125
20186
|
Empty as Empty10,
|
|
20126
20187
|
Spin as Spin13,
|
|
20127
20188
|
Typography as Typography37,
|
|
20128
20189
|
Space as Space32,
|
|
20129
20190
|
Tooltip as Tooltip17,
|
|
20130
|
-
Popconfirm as
|
|
20191
|
+
Popconfirm as Popconfirm5,
|
|
20131
20192
|
message as message15,
|
|
20132
20193
|
Card as Card15
|
|
20133
20194
|
} from "antd";
|
|
@@ -20135,7 +20196,7 @@ import {
|
|
|
20135
20196
|
ClockCircleOutlined as ClockCircleOutlined3,
|
|
20136
20197
|
PauseCircleOutlined,
|
|
20137
20198
|
PlayCircleOutlined,
|
|
20138
|
-
StopOutlined,
|
|
20199
|
+
StopOutlined as StopOutlined2,
|
|
20139
20200
|
ReloadOutlined as ReloadOutlined3,
|
|
20140
20201
|
CheckCircleOutlined as CheckCircleOutlined6,
|
|
20141
20202
|
CloseCircleOutlined as CloseCircleOutlined2,
|
|
@@ -20152,7 +20213,7 @@ import {
|
|
|
20152
20213
|
} from "@axiom-lattice/client-sdk";
|
|
20153
20214
|
import { jsx as jsx77, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
20154
20215
|
dayjs2.extend(relativeTime);
|
|
20155
|
-
var { Text: Text27, Title:
|
|
20216
|
+
var { Text: Text27, Title: Title6 } = Typography37;
|
|
20156
20217
|
var useStyles7 = createStyles19(({ token, css }) => ({
|
|
20157
20218
|
container: css`
|
|
20158
20219
|
height: 100%;
|
|
@@ -20263,7 +20324,7 @@ var getStatusIcon2 = (status) => {
|
|
|
20263
20324
|
case ScheduledTaskStatus2.FAILED:
|
|
20264
20325
|
return /* @__PURE__ */ jsx77(CloseCircleOutlined2, {});
|
|
20265
20326
|
case ScheduledTaskStatus2.CANCELLED:
|
|
20266
|
-
return /* @__PURE__ */ jsx77(
|
|
20327
|
+
return /* @__PURE__ */ jsx77(StopOutlined2, {});
|
|
20267
20328
|
case ScheduledTaskStatus2.PAUSED:
|
|
20268
20329
|
return /* @__PURE__ */ jsx77(PauseCircleOutlined, {});
|
|
20269
20330
|
default:
|
|
@@ -20347,12 +20408,12 @@ var ScheduleViewer = ({ data }) => {
|
|
|
20347
20408
|
},
|
|
20348
20409
|
[client, handleRefresh]
|
|
20349
20410
|
);
|
|
20350
|
-
|
|
20411
|
+
useEffect39(() => {
|
|
20351
20412
|
if (threadId && (!initialTasks || initialTasks.length === 0)) {
|
|
20352
20413
|
handleRefresh();
|
|
20353
20414
|
}
|
|
20354
20415
|
}, [threadId]);
|
|
20355
|
-
|
|
20416
|
+
useEffect39(() => {
|
|
20356
20417
|
if (initialTasks) {
|
|
20357
20418
|
setTasks(initialTasks);
|
|
20358
20419
|
}
|
|
@@ -20384,7 +20445,7 @@ var ScheduleViewer = ({ data }) => {
|
|
|
20384
20445
|
}
|
|
20385
20446
|
) }),
|
|
20386
20447
|
(isPending || isPaused) && /* @__PURE__ */ jsx77(
|
|
20387
|
-
|
|
20448
|
+
Popconfirm5,
|
|
20388
20449
|
{
|
|
20389
20450
|
title: "Cancel this scheduled task?",
|
|
20390
20451
|
description: "This action cannot be undone.",
|
|
@@ -20397,7 +20458,7 @@ var ScheduleViewer = ({ data }) => {
|
|
|
20397
20458
|
type: "text",
|
|
20398
20459
|
size: "small",
|
|
20399
20460
|
danger: true,
|
|
20400
|
-
icon: /* @__PURE__ */ jsx77(
|
|
20461
|
+
icon: /* @__PURE__ */ jsx77(StopOutlined2, {}),
|
|
20401
20462
|
loading: isLoading
|
|
20402
20463
|
}
|
|
20403
20464
|
) })
|
|
@@ -20420,7 +20481,7 @@ var ScheduleViewer = ({ data }) => {
|
|
|
20420
20481
|
/* @__PURE__ */ jsx77("div", { className: styles.taskId, children: task.taskId }),
|
|
20421
20482
|
task.payload?.message?.content && /* @__PURE__ */ jsx77("div", { className: styles.messageContent, children: /* @__PURE__ */ jsx77(Text27, { type: "secondary", style: { fontSize: 12 }, children: task.payload.message.content }) })
|
|
20422
20483
|
] }),
|
|
20423
|
-
/* @__PURE__ */ jsx77(
|
|
20484
|
+
/* @__PURE__ */ jsx77(Tag16, { color: getStatusColor(task.status), icon: getStatusIcon2(task.status), children: task.status.toUpperCase() })
|
|
20424
20485
|
] }),
|
|
20425
20486
|
/* @__PURE__ */ jsxs54("div", { className: styles.metaRow, children: [
|
|
20426
20487
|
/* @__PURE__ */ jsx77(Tooltip17, { title: "Execution Type", children: /* @__PURE__ */ jsxs54("div", { className: styles.metaItem, children: [
|
|
@@ -20466,7 +20527,7 @@ var ScheduleViewer = ({ data }) => {
|
|
|
20466
20527
|
};
|
|
20467
20528
|
return /* @__PURE__ */ jsxs54("div", { className: styles.container, children: [
|
|
20468
20529
|
/* @__PURE__ */ jsxs54("div", { className: styles.header, children: [
|
|
20469
|
-
/* @__PURE__ */ jsx77(
|
|
20530
|
+
/* @__PURE__ */ jsx77(Title6, { level: 5, style: { margin: 0 }, children: "Scheduled Tasks" }),
|
|
20470
20531
|
/* @__PURE__ */ jsx77(Tooltip17, { title: "Refresh", children: /* @__PURE__ */ jsx77(
|
|
20471
20532
|
Button42,
|
|
20472
20533
|
{
|
|
@@ -20639,7 +20700,7 @@ ${code}
|
|
|
20639
20700
|
};
|
|
20640
20701
|
|
|
20641
20702
|
// src/components/GenUI/elements/TeamGraph.tsx
|
|
20642
|
-
import { Card as Card16, Typography as Typography40, Avatar as Avatar8, Tag as
|
|
20703
|
+
import { Card as Card16, Typography as Typography40, Avatar as Avatar8, Tag as Tag17, List as List14, Space as Space35, Button as Button45, Skeleton as Skeleton2 } from "antd";
|
|
20643
20704
|
import { UserOutlined as UserOutlined5, TeamOutlined as TeamOutlined2 } from "@ant-design/icons";
|
|
20644
20705
|
import { Monitor } from "lucide-react";
|
|
20645
20706
|
import { jsx as jsx80, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
@@ -20758,10 +20819,10 @@ var TeamGraph = ({ data }) => {
|
|
|
20758
20819
|
) : null,
|
|
20759
20820
|
children: [
|
|
20760
20821
|
/* @__PURE__ */ jsx80(
|
|
20761
|
-
|
|
20822
|
+
List14,
|
|
20762
20823
|
{
|
|
20763
20824
|
dataSource: teammates,
|
|
20764
|
-
renderItem: (teammate) => /* @__PURE__ */ jsxs57(
|
|
20825
|
+
renderItem: (teammate) => /* @__PURE__ */ jsxs57(List14.Item, { style: { display: "block" }, children: [
|
|
20765
20826
|
/* @__PURE__ */ jsxs57(Space35, { align: "center", size: 12, children: [
|
|
20766
20827
|
/* @__PURE__ */ jsx80(
|
|
20767
20828
|
Avatar8,
|
|
@@ -20781,7 +20842,7 @@ var TeamGraph = ({ data }) => {
|
|
|
20781
20842
|
/* @__PURE__ */ jsxs57("div", { style: { flex: 1 }, children: [
|
|
20782
20843
|
/* @__PURE__ */ jsx80(Text30, { strong: true, style: { display: "block" }, children: teammate?.name || "Unnamed" }),
|
|
20783
20844
|
/* @__PURE__ */ jsx80(
|
|
20784
|
-
|
|
20845
|
+
Tag17,
|
|
20785
20846
|
{
|
|
20786
20847
|
color: "blue",
|
|
20787
20848
|
style: { margin: 0, marginTop: 4 },
|
|
@@ -20801,11 +20862,11 @@ var TeamGraph = ({ data }) => {
|
|
|
20801
20862
|
")"
|
|
20802
20863
|
] }),
|
|
20803
20864
|
/* @__PURE__ */ jsx80(
|
|
20804
|
-
|
|
20865
|
+
List14,
|
|
20805
20866
|
{
|
|
20806
20867
|
size: "small",
|
|
20807
20868
|
dataSource: tasks.filter((t) => t.status === "pending"),
|
|
20808
|
-
renderItem: (task) => /* @__PURE__ */ jsx80(
|
|
20869
|
+
renderItem: (task) => /* @__PURE__ */ jsx80(List14.Item, { style: { padding: "8px 0" }, children: /* @__PURE__ */ jsxs57("div", { children: [
|
|
20809
20870
|
/* @__PURE__ */ jsx80(Text30, { style: { fontSize: 12, color: "#7A7A7A" }, children: task.id }),
|
|
20810
20871
|
/* @__PURE__ */ jsx80(Text30, { strong: true, style: { display: "block", fontSize: 13 }, children: task.title }),
|
|
20811
20872
|
task.description && /* @__PURE__ */ jsx80(Text30, { type: "secondary", style: { fontSize: 11 }, children: task.description.length > 100 ? task.description.slice(0, 100) + "..." : task.description })
|
|
@@ -21148,7 +21209,7 @@ function useTeamWorkspaceData(threadId, assistantId) {
|
|
|
21148
21209
|
|
|
21149
21210
|
// src/components/GenUI/elements/TeamWorkspace/TeamDashboard.tsx
|
|
21150
21211
|
import { jsx as jsx82, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
21151
|
-
var { Title:
|
|
21212
|
+
var { Title: Title7, Text: Text31 } = Typography41;
|
|
21152
21213
|
var useStyles9 = createStyles21(({ token, css }) => ({
|
|
21153
21214
|
container: css`
|
|
21154
21215
|
padding: ${token.paddingLG}px;
|
|
@@ -21419,7 +21480,7 @@ var TeamDashboard = ({
|
|
|
21419
21480
|
const { styles } = useStyles9();
|
|
21420
21481
|
return /* @__PURE__ */ jsxs59("div", { className: styles.container, children: [
|
|
21421
21482
|
/* @__PURE__ */ jsxs59("div", { className: styles.header, children: [
|
|
21422
|
-
/* @__PURE__ */ jsx82(
|
|
21483
|
+
/* @__PURE__ */ jsx82(Title7, { level: 3, className: styles.title, children: "Team Dashboard" }),
|
|
21423
21484
|
/* @__PURE__ */ jsx82(Text31, { className: styles.subtitle, children: team?.teamId ? `Team ID: ${team.teamId} \u2022 ${stats.totalTasks} tasks \u2022 ${stats.totalActivities} activities` : "Overview of team activities and tasks" })
|
|
21424
21485
|
] }),
|
|
21425
21486
|
/* @__PURE__ */ jsxs59(Row2, { gutter: [16, 16], className: styles.statsRow, children: [
|
|
@@ -21507,13 +21568,13 @@ import {
|
|
|
21507
21568
|
ChevronRight as ChevronRight5,
|
|
21508
21569
|
Circle,
|
|
21509
21570
|
LayoutGrid as LayoutGrid2,
|
|
21510
|
-
List as
|
|
21571
|
+
List as List15
|
|
21511
21572
|
} from "lucide-react";
|
|
21512
21573
|
import { createStyles as createStyles23 } from "antd-style";
|
|
21513
21574
|
|
|
21514
21575
|
// src/components/GenUI/elements/TeamWorkspace/TaskDetailModal.tsx
|
|
21515
21576
|
import { useState as useState60 } from "react";
|
|
21516
|
-
import { Modal as Modal15, Typography as Typography42, Tag as
|
|
21577
|
+
import { Modal as Modal15, Typography as Typography42, Tag as Tag18, Divider as Divider7, Tabs as Tabs2, Timeline } from "antd";
|
|
21517
21578
|
import { createStyles as createStyles22 } from "antd-style";
|
|
21518
21579
|
import {
|
|
21519
21580
|
CheckCircle2 as CheckCircle22,
|
|
@@ -21527,7 +21588,7 @@ import {
|
|
|
21527
21588
|
GitCommit
|
|
21528
21589
|
} from "lucide-react";
|
|
21529
21590
|
import { Fragment as Fragment18, jsx as jsx83, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
21530
|
-
var { Title:
|
|
21591
|
+
var { Title: Title8, Text: Text32, Paragraph } = Typography42;
|
|
21531
21592
|
var useStyles10 = createStyles22(({ token, css }) => ({
|
|
21532
21593
|
modalContent: css`
|
|
21533
21594
|
padding: 0;
|
|
@@ -21989,7 +22050,7 @@ var TaskDetailModal = ({
|
|
|
21989
22050
|
),
|
|
21990
22051
|
/* @__PURE__ */ jsx83(Text32, { className: styles.taskId, children: task.id })
|
|
21991
22052
|
] }),
|
|
21992
|
-
/* @__PURE__ */ jsx83(
|
|
22053
|
+
/* @__PURE__ */ jsx83(Title8, { level: 3, className: styles.title, children: task.title }),
|
|
21993
22054
|
task.description && /* @__PURE__ */ jsx83("div", { className: styles.description, children: /* @__PURE__ */ jsx83(Paragraph, { style: { margin: 0 }, children: task.description }) }),
|
|
21994
22055
|
/* @__PURE__ */ jsxs60("div", { className: styles.metaSection, children: [
|
|
21995
22056
|
/* @__PURE__ */ jsxs60("div", { className: styles.metaItem, children: [
|
|
@@ -22041,7 +22102,7 @@ var TaskDetailModal = ({
|
|
|
22041
22102
|
/* @__PURE__ */ jsx83(Divider7, {}),
|
|
22042
22103
|
task.dependencies?.length > 0 && /* @__PURE__ */ jsxs60("div", { className: styles.dependenciesSection, children: [
|
|
22043
22104
|
/* @__PURE__ */ jsx83(Text32, { className: styles.sectionTitle, children: "Dependencies" }),
|
|
22044
|
-
/* @__PURE__ */ jsx83("div", { className: styles.dependencyList, children: task.dependencies.map((dep) => /* @__PURE__ */ jsxs60(
|
|
22105
|
+
/* @__PURE__ */ jsx83("div", { className: styles.dependencyList, children: task.dependencies.map((dep) => /* @__PURE__ */ jsxs60(Tag18, { className: styles.dependencyTag, children: [
|
|
22045
22106
|
/* @__PURE__ */ jsx83(Link, { size: 12 }),
|
|
22046
22107
|
" ",
|
|
22047
22108
|
dep
|
|
@@ -22062,7 +22123,7 @@ var TaskDetailModal = ({
|
|
|
22062
22123
|
|
|
22063
22124
|
// src/components/GenUI/elements/TeamWorkspace/IssuesView.tsx
|
|
22064
22125
|
import { jsx as jsx84, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
22065
|
-
var { Title:
|
|
22126
|
+
var { Title: Title9, Text: Text33 } = Typography43;
|
|
22066
22127
|
var getInitials4 = (name) => {
|
|
22067
22128
|
return name.split(/[\s_-]/).map((n) => n.charAt(0)).join("").toUpperCase().slice(0, 2);
|
|
22068
22129
|
};
|
|
@@ -22542,7 +22603,7 @@ var IssuesView = ({
|
|
|
22542
22603
|
return /* @__PURE__ */ jsxs61("div", { className: styles.container, children: [
|
|
22543
22604
|
/* @__PURE__ */ jsxs61("div", { className: styles.header, children: [
|
|
22544
22605
|
/* @__PURE__ */ jsxs61("div", { children: [
|
|
22545
|
-
/* @__PURE__ */ jsx84(
|
|
22606
|
+
/* @__PURE__ */ jsx84(Title9, { level: 3, className: styles.title, children: "Issues" }),
|
|
22546
22607
|
/* @__PURE__ */ jsxs61(Text33, { type: "secondary", children: [
|
|
22547
22608
|
tasks?.length || 0,
|
|
22548
22609
|
" tasks \u2022 Team: ",
|
|
@@ -22555,7 +22616,7 @@ var IssuesView = ({
|
|
|
22555
22616
|
{
|
|
22556
22617
|
className: `${styles.viewToggleButton} ${viewMode === "list" ? "active" : ""}`,
|
|
22557
22618
|
onClick: () => setViewMode("list"),
|
|
22558
|
-
children: /* @__PURE__ */ jsx84(
|
|
22619
|
+
children: /* @__PURE__ */ jsx84(List15, { size: 16 })
|
|
22559
22620
|
}
|
|
22560
22621
|
),
|
|
22561
22622
|
/* @__PURE__ */ jsx84(
|
|
@@ -22592,10 +22653,10 @@ import {
|
|
|
22592
22653
|
useReactFlow as useReactFlow2
|
|
22593
22654
|
} from "@xyflow/react";
|
|
22594
22655
|
import "@xyflow/react/dist/style.css";
|
|
22595
|
-
import { Typography as Typography44, Tag as
|
|
22656
|
+
import { Typography as Typography44, Tag as Tag19, Space as Space37 } from "antd";
|
|
22596
22657
|
import { createStyles as createStyles24 } from "antd-style";
|
|
22597
22658
|
import { jsx as jsx85, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
22598
|
-
var { Title:
|
|
22659
|
+
var { Title: Title10, Text: Text34 } = Typography44;
|
|
22599
22660
|
var useStyles12 = createStyles24(({ token, css }) => ({
|
|
22600
22661
|
container: css`
|
|
22601
22662
|
height: 100%;
|
|
@@ -22711,7 +22772,7 @@ var TeamMemberNode = ({ data }) => {
|
|
|
22711
22772
|
/* @__PURE__ */ jsxs62("div", { children: [
|
|
22712
22773
|
/* @__PURE__ */ jsxs62("div", { className: styles.nodeTitle, children: [
|
|
22713
22774
|
name,
|
|
22714
|
-
isLead && /* @__PURE__ */ jsx85(
|
|
22775
|
+
isLead && /* @__PURE__ */ jsx85(Tag19, { color: "blue", style: { marginLeft: 8, fontSize: 10 }, children: "Lead" })
|
|
22715
22776
|
] }),
|
|
22716
22777
|
/* @__PURE__ */ jsx85("div", { className: styles.nodeRole, children: role })
|
|
22717
22778
|
] })
|
|
@@ -22725,15 +22786,15 @@ var TeamMemberNode = ({ data }) => {
|
|
|
22725
22786
|
}
|
|
22726
22787
|
),
|
|
22727
22788
|
taskStats && /* @__PURE__ */ jsxs62("div", { className: styles.nodeStats, children: [
|
|
22728
|
-
taskStats.completed > 0 && /* @__PURE__ */ jsxs62(
|
|
22789
|
+
taskStats.completed > 0 && /* @__PURE__ */ jsxs62(Tag19, { color: "success", className: styles.statTag, children: [
|
|
22729
22790
|
"\u2713 ",
|
|
22730
22791
|
taskStats.completed
|
|
22731
22792
|
] }),
|
|
22732
|
-
taskStats.inProgress > 0 && /* @__PURE__ */ jsxs62(
|
|
22793
|
+
taskStats.inProgress > 0 && /* @__PURE__ */ jsxs62(Tag19, { color: "warning", className: styles.statTag, children: [
|
|
22733
22794
|
"\u27F3 ",
|
|
22734
22795
|
taskStats.inProgress
|
|
22735
22796
|
] }),
|
|
22736
|
-
taskStats.pending > 0 && /* @__PURE__ */ jsxs62(
|
|
22797
|
+
taskStats.pending > 0 && /* @__PURE__ */ jsxs62(Tag19, { className: styles.statTag, children: [
|
|
22737
22798
|
"\u25CB ",
|
|
22738
22799
|
taskStats.pending
|
|
22739
22800
|
] })
|
|
@@ -22832,7 +22893,7 @@ var TeamOrgCanvasInner = ({
|
|
|
22832
22893
|
};
|
|
22833
22894
|
return /* @__PURE__ */ jsxs62("div", { className: styles.container, children: [
|
|
22834
22895
|
/* @__PURE__ */ jsxs62("div", { className: styles.header, children: [
|
|
22835
|
-
/* @__PURE__ */ jsx85(
|
|
22896
|
+
/* @__PURE__ */ jsx85(Title10, { level: 3, className: styles.title, children: "Team Organization" }),
|
|
22836
22897
|
/* @__PURE__ */ jsxs62(Text34, { type: "secondary", children: [
|
|
22837
22898
|
teammates.length + 1,
|
|
22838
22899
|
" members \u2022 ",
|
|
@@ -22896,10 +22957,10 @@ var TeamOrgCanvasInner = ({
|
|
|
22896
22957
|
var TeamOrgCanvas = (props) => /* @__PURE__ */ jsx85(ReactFlowProvider3, { children: /* @__PURE__ */ jsx85(TeamOrgCanvasInner, { ...props }) });
|
|
22897
22958
|
|
|
22898
22959
|
// src/components/GenUI/elements/TeamWorkspace/TeamMemberChat.tsx
|
|
22899
|
-
import { Typography as Typography45, Tag as
|
|
22960
|
+
import { Typography as Typography45, Tag as Tag20 } from "antd";
|
|
22900
22961
|
import { createStyles as createStyles25 } from "antd-style";
|
|
22901
22962
|
import { jsx as jsx86, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
22902
|
-
var { Title:
|
|
22963
|
+
var { Title: Title11, Text: Text35 } = Typography45;
|
|
22903
22964
|
var useStyles13 = createStyles25(({ token, css }) => ({
|
|
22904
22965
|
container: css`
|
|
22905
22966
|
height: 100%;
|
|
@@ -22993,9 +23054,9 @@ var TeamMemberChat = ({
|
|
|
22993
23054
|
}
|
|
22994
23055
|
),
|
|
22995
23056
|
/* @__PURE__ */ jsxs63("div", { className: styles.headerInfo, children: [
|
|
22996
|
-
/* @__PURE__ */ jsx86(
|
|
23057
|
+
/* @__PURE__ */ jsx86(Title11, { level: 4, className: styles.title, children: teammate.name }),
|
|
22997
23058
|
/* @__PURE__ */ jsxs63("div", { children: [
|
|
22998
|
-
/* @__PURE__ */ jsx86(
|
|
23059
|
+
/* @__PURE__ */ jsx86(Tag20, { color: "blue", children: teammate.role }),
|
|
22999
23060
|
teammate.description && /* @__PURE__ */ jsxs63(Text35, { className: styles.role, children: [
|
|
23000
23061
|
"\u2022 ",
|
|
23001
23062
|
teammate.description
|
|
@@ -23030,11 +23091,11 @@ import {
|
|
|
23030
23091
|
} from "lucide-react";
|
|
23031
23092
|
|
|
23032
23093
|
// src/components/GenUI/elements/MailboxDetailModal.tsx
|
|
23033
|
-
import { Modal as Modal16, Typography as Typography46, Tag as
|
|
23094
|
+
import { Modal as Modal16, Typography as Typography46, Tag as Tag21, Divider as Divider8 } from "antd";
|
|
23034
23095
|
import { createStyles as createStyles26 } from "antd-style";
|
|
23035
23096
|
import { Mail as Mail2, Calendar as Calendar2 } from "lucide-react";
|
|
23036
23097
|
import { jsx as jsx87, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
23037
|
-
var { Title:
|
|
23098
|
+
var { Title: Title12, Text: Text36, Paragraph: Paragraph2 } = Typography46;
|
|
23038
23099
|
var useStyles14 = createStyles26(({ token, css }) => ({
|
|
23039
23100
|
modalContent: css`
|
|
23040
23101
|
padding: 0;
|
|
@@ -23164,12 +23225,12 @@ var formatDate3 = (timestamp) => {
|
|
|
23164
23225
|
});
|
|
23165
23226
|
};
|
|
23166
23227
|
var MailboxDetailModal = ({
|
|
23167
|
-
message:
|
|
23228
|
+
message: message28,
|
|
23168
23229
|
visible,
|
|
23169
23230
|
onClose
|
|
23170
23231
|
}) => {
|
|
23171
23232
|
const { styles } = useStyles14();
|
|
23172
|
-
if (!
|
|
23233
|
+
if (!message28) return null;
|
|
23173
23234
|
return /* @__PURE__ */ jsx87(
|
|
23174
23235
|
Modal16,
|
|
23175
23236
|
{
|
|
@@ -23192,12 +23253,12 @@ var MailboxDetailModal = ({
|
|
|
23192
23253
|
children: /* @__PURE__ */ jsxs64("div", { className: styles.modalContent, children: [
|
|
23193
23254
|
/* @__PURE__ */ jsxs64("div", { className: styles.header, children: [
|
|
23194
23255
|
/* @__PURE__ */ jsx87("div", { className: styles.messageIcon, children: /* @__PURE__ */ jsx87(Mail2, { size: 20 }) }),
|
|
23195
|
-
/* @__PURE__ */ jsx87(Text36, { className: styles.messageId, children:
|
|
23196
|
-
!
|
|
23256
|
+
/* @__PURE__ */ jsx87(Text36, { className: styles.messageId, children: message28.id }),
|
|
23257
|
+
!message28.read && /* @__PURE__ */ jsx87(Tag21, { color: "red", children: "Unread" })
|
|
23197
23258
|
] }),
|
|
23198
|
-
/* @__PURE__ */ jsxs64(
|
|
23259
|
+
/* @__PURE__ */ jsxs64(Title12, { level: 4, className: styles.title, children: [
|
|
23199
23260
|
"Message from ",
|
|
23200
|
-
|
|
23261
|
+
message28.from
|
|
23201
23262
|
] }),
|
|
23202
23263
|
/* @__PURE__ */ jsxs64("div", { className: styles.metaSection, children: [
|
|
23203
23264
|
/* @__PURE__ */ jsxs64("div", { className: styles.metaItem, children: [
|
|
@@ -23207,11 +23268,11 @@ var MailboxDetailModal = ({
|
|
|
23207
23268
|
"div",
|
|
23208
23269
|
{
|
|
23209
23270
|
className: styles.avatar,
|
|
23210
|
-
style: { background: getAvatarColor7(
|
|
23211
|
-
children: getInitials7(
|
|
23271
|
+
style: { background: getAvatarColor7(message28.from) },
|
|
23272
|
+
children: getInitials7(message28.from)
|
|
23212
23273
|
}
|
|
23213
23274
|
),
|
|
23214
|
-
/* @__PURE__ */ jsx87("span", { children:
|
|
23275
|
+
/* @__PURE__ */ jsx87("span", { children: message28.from })
|
|
23215
23276
|
] })
|
|
23216
23277
|
] }),
|
|
23217
23278
|
/* @__PURE__ */ jsxs64("div", { className: styles.metaItem, children: [
|
|
@@ -23221,29 +23282,29 @@ var MailboxDetailModal = ({
|
|
|
23221
23282
|
"div",
|
|
23222
23283
|
{
|
|
23223
23284
|
className: styles.avatar,
|
|
23224
|
-
style: { background: getAvatarColor7(
|
|
23225
|
-
children: getInitials7(
|
|
23285
|
+
style: { background: getAvatarColor7(message28.to) },
|
|
23286
|
+
children: getInitials7(message28.to)
|
|
23226
23287
|
}
|
|
23227
23288
|
),
|
|
23228
|
-
/* @__PURE__ */ jsx87("span", { children:
|
|
23289
|
+
/* @__PURE__ */ jsx87("span", { children: message28.to })
|
|
23229
23290
|
] })
|
|
23230
23291
|
] }),
|
|
23231
23292
|
/* @__PURE__ */ jsxs64("div", { className: styles.metaItem, children: [
|
|
23232
23293
|
/* @__PURE__ */ jsx87(Text36, { className: styles.metaLabel, children: "Time" }),
|
|
23233
23294
|
/* @__PURE__ */ jsxs64("div", { className: styles.metaValue, children: [
|
|
23234
23295
|
/* @__PURE__ */ jsx87(Calendar2, { size: 14 }),
|
|
23235
|
-
/* @__PURE__ */ jsx87("span", { children: formatDate3(
|
|
23296
|
+
/* @__PURE__ */ jsx87("span", { children: formatDate3(message28.timestamp) })
|
|
23236
23297
|
] })
|
|
23237
23298
|
] }),
|
|
23238
23299
|
/* @__PURE__ */ jsxs64("div", { className: styles.metaItem, children: [
|
|
23239
23300
|
/* @__PURE__ */ jsx87(Text36, { className: styles.metaLabel, children: "Type" }),
|
|
23240
|
-
/* @__PURE__ */ jsx87("div", { className: styles.metaValue, children: /* @__PURE__ */ jsx87(
|
|
23301
|
+
/* @__PURE__ */ jsx87("div", { className: styles.metaValue, children: /* @__PURE__ */ jsx87(Tag21, { color: message28.type === "broadcast" ? "blue" : "default", children: message28.type }) })
|
|
23241
23302
|
] })
|
|
23242
23303
|
] }),
|
|
23243
23304
|
/* @__PURE__ */ jsx87(Divider8, {}),
|
|
23244
23305
|
/* @__PURE__ */ jsxs64("div", { className: styles.contentSection, children: [
|
|
23245
23306
|
/* @__PURE__ */ jsx87(Text36, { className: styles.contentLabel, children: "Message Content" }),
|
|
23246
|
-
/* @__PURE__ */ jsx87("div", { className: styles.contentBox, children: /* @__PURE__ */ jsx87(Paragraph2, { className: styles.messageContent, children:
|
|
23307
|
+
/* @__PURE__ */ jsx87("div", { className: styles.contentBox, children: /* @__PURE__ */ jsx87(Paragraph2, { className: styles.messageContent, children: message28.content }) })
|
|
23247
23308
|
] })
|
|
23248
23309
|
] })
|
|
23249
23310
|
}
|
|
@@ -23252,7 +23313,7 @@ var MailboxDetailModal = ({
|
|
|
23252
23313
|
|
|
23253
23314
|
// src/components/GenUI/elements/MailboxPanel.tsx
|
|
23254
23315
|
import { jsx as jsx88, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
23255
|
-
var { Title:
|
|
23316
|
+
var { Title: Title13, Text: Text37 } = Typography47;
|
|
23256
23317
|
var useStyles15 = createStyles27(({ token, css }) => ({
|
|
23257
23318
|
container: css`
|
|
23258
23319
|
padding: ${token.paddingLG}px;
|
|
@@ -23472,26 +23533,26 @@ var MessageGroupComponent = ({ group, styles, defaultExpanded = true, onMessageC
|
|
|
23472
23533
|
]
|
|
23473
23534
|
}
|
|
23474
23535
|
),
|
|
23475
|
-
isExpanded && /* @__PURE__ */ jsx88("div", { className: styles.listGroupContent, children: group.messages.map((
|
|
23536
|
+
isExpanded && /* @__PURE__ */ jsx88("div", { className: styles.listGroupContent, children: group.messages.map((message28) => /* @__PURE__ */ jsxs65(
|
|
23476
23537
|
"div",
|
|
23477
23538
|
{
|
|
23478
|
-
className: `${styles.listItem} ${!
|
|
23479
|
-
onClick: () => onMessageClick(
|
|
23539
|
+
className: `${styles.listItem} ${!message28.read ? styles.listItemUnread : ""}`,
|
|
23540
|
+
onClick: () => onMessageClick(message28),
|
|
23480
23541
|
children: [
|
|
23481
|
-
/* @__PURE__ */ jsx88("div", { className: styles.listItemIcon, children: !
|
|
23542
|
+
/* @__PURE__ */ jsx88("div", { className: styles.listItemIcon, children: !message28.read ? /* @__PURE__ */ jsx88("div", { className: styles.unreadBadge }) : /* @__PURE__ */ jsx88(Circle2, { size: 8, style: { color: "#d9d9d9" } }) }),
|
|
23482
23543
|
/* @__PURE__ */ jsxs65("div", { className: styles.listItemContent, children: [
|
|
23483
|
-
/* @__PURE__ */ jsx88("span", { className: styles.listItemPreview, children: getMessagePreview(
|
|
23544
|
+
/* @__PURE__ */ jsx88("span", { className: styles.listItemPreview, children: getMessagePreview(message28.content) }),
|
|
23484
23545
|
/* @__PURE__ */ jsxs65("span", { className: styles.listItemMeta, children: [
|
|
23485
23546
|
"To: ",
|
|
23486
|
-
|
|
23547
|
+
message28.to,
|
|
23487
23548
|
" \u2022 ",
|
|
23488
|
-
|
|
23549
|
+
message28.type
|
|
23489
23550
|
] })
|
|
23490
23551
|
] }),
|
|
23491
|
-
/* @__PURE__ */ jsx88("div", { className: styles.listItemRight, children: /* @__PURE__ */ jsx88("span", { className: styles.listItemDate, children: formatDate4(
|
|
23552
|
+
/* @__PURE__ */ jsx88("div", { className: styles.listItemRight, children: /* @__PURE__ */ jsx88("span", { className: styles.listItemDate, children: formatDate4(message28.timestamp) }) })
|
|
23492
23553
|
]
|
|
23493
23554
|
},
|
|
23494
|
-
|
|
23555
|
+
message28.id
|
|
23495
23556
|
)) })
|
|
23496
23557
|
] });
|
|
23497
23558
|
};
|
|
@@ -23502,12 +23563,12 @@ var MailboxPanel = ({ data }) => {
|
|
|
23502
23563
|
const { teamMailbox = [] } = data || {};
|
|
23503
23564
|
const messageGroups = useMemo17(() => {
|
|
23504
23565
|
const groupsMap = /* @__PURE__ */ new Map();
|
|
23505
|
-
teamMailbox.forEach((
|
|
23506
|
-
const sender =
|
|
23566
|
+
teamMailbox.forEach((message28) => {
|
|
23567
|
+
const sender = message28.from;
|
|
23507
23568
|
if (!groupsMap.has(sender)) {
|
|
23508
23569
|
groupsMap.set(sender, []);
|
|
23509
23570
|
}
|
|
23510
|
-
groupsMap.get(sender).push(
|
|
23571
|
+
groupsMap.get(sender).push(message28);
|
|
23511
23572
|
});
|
|
23512
23573
|
const groups = Array.from(groupsMap.entries()).map(([sender, messages]) => ({
|
|
23513
23574
|
sender,
|
|
@@ -23524,8 +23585,8 @@ var MailboxPanel = ({ data }) => {
|
|
|
23524
23585
|
return groups;
|
|
23525
23586
|
}, [teamMailbox]);
|
|
23526
23587
|
const totalUnread = teamMailbox.filter((m) => !m.read).length;
|
|
23527
|
-
const handleMessageClick = (
|
|
23528
|
-
setSelectedMessage(
|
|
23588
|
+
const handleMessageClick = (message28) => {
|
|
23589
|
+
setSelectedMessage(message28);
|
|
23529
23590
|
setModalVisible(true);
|
|
23530
23591
|
};
|
|
23531
23592
|
const handleCloseModal = () => {
|
|
@@ -23534,7 +23595,7 @@ var MailboxPanel = ({ data }) => {
|
|
|
23534
23595
|
};
|
|
23535
23596
|
return /* @__PURE__ */ jsxs65("div", { className: styles.container, children: [
|
|
23536
23597
|
/* @__PURE__ */ jsx88("div", { className: styles.header, children: /* @__PURE__ */ jsxs65("div", { children: [
|
|
23537
|
-
/* @__PURE__ */ jsxs65(
|
|
23598
|
+
/* @__PURE__ */ jsxs65(Title13, { level: 3, className: styles.title, children: [
|
|
23538
23599
|
/* @__PURE__ */ jsx88(Mail3, { size: 20, style: { marginRight: 8, verticalAlign: "middle" } }),
|
|
23539
23600
|
"Mailbox"
|
|
23540
23601
|
] }),
|
|
@@ -24111,7 +24172,7 @@ var TaskBoard = ({
|
|
|
24111
24172
|
};
|
|
24112
24173
|
|
|
24113
24174
|
// src/components/GenUI/elements/Mailbox.tsx
|
|
24114
|
-
import { useState as useState64, useMemo as useMemo20, useRef as useRef20, useEffect as
|
|
24175
|
+
import { useState as useState64, useMemo as useMemo20, useRef as useRef20, useEffect as useEffect40 } from "react";
|
|
24115
24176
|
import { jsx as jsx92, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
24116
24177
|
var useStyle12 = () => {
|
|
24117
24178
|
return {
|
|
@@ -24407,7 +24468,7 @@ var TeamChat = ({ data }) => {
|
|
|
24407
24468
|
const mentions = useMemo20(() => {
|
|
24408
24469
|
return teammates?.map((t) => t.name) || [];
|
|
24409
24470
|
}, [teammates]);
|
|
24410
|
-
|
|
24471
|
+
useEffect40(() => {
|
|
24411
24472
|
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
24412
24473
|
}, [sortedMessages]);
|
|
24413
24474
|
const handleSend = () => {
|
|
@@ -24581,7 +24642,7 @@ import { Button as Button47, Typography as Typography48 } from "antd";
|
|
|
24581
24642
|
import { ExpandOutlined as ExpandOutlined2 } from "@ant-design/icons";
|
|
24582
24643
|
|
|
24583
24644
|
// src/streaming-html/StreamingHTMLRenderer.tsx
|
|
24584
|
-
import React49, { useEffect as
|
|
24645
|
+
import React49, { useEffect as useEffect41, useRef as useRef21, useCallback as useCallback31, useState as useState65 } from "react";
|
|
24585
24646
|
|
|
24586
24647
|
// src/streaming-html/show-widget-css-generator.ts
|
|
24587
24648
|
function generateShowWidgetCSS(tokens) {
|
|
@@ -25284,10 +25345,10 @@ var StreamingHTMLRenderer = ({
|
|
|
25284
25345
|
const [iframeWidth, setIframeWidth] = React49.useState(void 0);
|
|
25285
25346
|
const [currentMessageIndex, setCurrentMessageIndex] = useState65(0);
|
|
25286
25347
|
const [showLoading, setShowLoading] = useState65(true);
|
|
25287
|
-
|
|
25348
|
+
useEffect41(() => {
|
|
25288
25349
|
isCompleteRef.current = isComplete;
|
|
25289
25350
|
}, [isComplete]);
|
|
25290
|
-
|
|
25351
|
+
useEffect41(() => {
|
|
25291
25352
|
if (iframeHeight > 0) {
|
|
25292
25353
|
setShowLoading(false);
|
|
25293
25354
|
return;
|
|
@@ -25363,17 +25424,17 @@ var StreamingHTMLRenderer = ({
|
|
|
25363
25424
|
onError?.(streamingError);
|
|
25364
25425
|
}
|
|
25365
25426
|
}, [onError]);
|
|
25366
|
-
|
|
25427
|
+
useEffect41(() => {
|
|
25367
25428
|
const handleMessage = (event) => {
|
|
25368
25429
|
const iframe = iframeRef.current;
|
|
25369
25430
|
if (!iframe || event.source !== iframe.contentWindow) {
|
|
25370
25431
|
return;
|
|
25371
25432
|
}
|
|
25372
|
-
const
|
|
25373
|
-
if (!
|
|
25433
|
+
const message28 = event.data;
|
|
25434
|
+
if (!message28 || typeof message28 !== "object") {
|
|
25374
25435
|
return;
|
|
25375
25436
|
}
|
|
25376
|
-
switch (
|
|
25437
|
+
switch (message28.type) {
|
|
25377
25438
|
case "iframe-ready":
|
|
25378
25439
|
console.log("[StreamingHTMLRenderer] Iframe ready");
|
|
25379
25440
|
isReadyRef.current = true;
|
|
@@ -25388,26 +25449,26 @@ var StreamingHTMLRenderer = ({
|
|
|
25388
25449
|
}
|
|
25389
25450
|
break;
|
|
25390
25451
|
case "iframe-height":
|
|
25391
|
-
if (typeof
|
|
25392
|
-
setIframeHeight(
|
|
25452
|
+
if (typeof message28.height === "number" && message28.height > 0) {
|
|
25453
|
+
setIframeHeight(message28.height);
|
|
25393
25454
|
}
|
|
25394
25455
|
break;
|
|
25395
25456
|
case "iframe-error": {
|
|
25396
25457
|
const streamingError = {
|
|
25397
25458
|
type: "RENDER_ERROR",
|
|
25398
|
-
message:
|
|
25459
|
+
message: message28.error || "Unknown iframe error"
|
|
25399
25460
|
};
|
|
25400
25461
|
onError?.(streamingError);
|
|
25401
25462
|
break;
|
|
25402
25463
|
}
|
|
25403
25464
|
case "widget-prompt":
|
|
25404
|
-
if (typeof
|
|
25405
|
-
onPrompt?.(
|
|
25465
|
+
if (typeof message28.text === "string") {
|
|
25466
|
+
onPrompt?.(message28.text);
|
|
25406
25467
|
}
|
|
25407
25468
|
break;
|
|
25408
25469
|
case "widget-open-link":
|
|
25409
|
-
if (typeof
|
|
25410
|
-
window.open(
|
|
25470
|
+
if (typeof message28.url === "string") {
|
|
25471
|
+
window.open(message28.url, "_blank", "noopener,noreferrer");
|
|
25411
25472
|
}
|
|
25412
25473
|
break;
|
|
25413
25474
|
}
|
|
@@ -25417,7 +25478,7 @@ var StreamingHTMLRenderer = ({
|
|
|
25417
25478
|
window.removeEventListener("message", handleMessage);
|
|
25418
25479
|
};
|
|
25419
25480
|
}, [onError, onPrompt, sendChunk, executeScripts]);
|
|
25420
|
-
|
|
25481
|
+
useEffect41(() => {
|
|
25421
25482
|
if (html === prevHTMLRef.current) {
|
|
25422
25483
|
return;
|
|
25423
25484
|
}
|
|
@@ -25428,12 +25489,12 @@ var StreamingHTMLRenderer = ({
|
|
|
25428
25489
|
sendChunk(newChunk);
|
|
25429
25490
|
}
|
|
25430
25491
|
}, [html, sendChunk]);
|
|
25431
|
-
|
|
25492
|
+
useEffect41(() => {
|
|
25432
25493
|
if (isComplete && isReadyRef.current) {
|
|
25433
25494
|
executeScripts();
|
|
25434
25495
|
}
|
|
25435
25496
|
}, [isComplete, executeScripts]);
|
|
25436
|
-
|
|
25497
|
+
useEffect41(() => {
|
|
25437
25498
|
const container = containerRef.current;
|
|
25438
25499
|
if (!container) return;
|
|
25439
25500
|
const antBubble = container.closest(".ant-bubble");
|
|
@@ -25459,7 +25520,7 @@ var StreamingHTMLRenderer = ({
|
|
|
25459
25520
|
resizeObserverRef.current = null;
|
|
25460
25521
|
};
|
|
25461
25522
|
}, []);
|
|
25462
|
-
|
|
25523
|
+
useEffect41(() => {
|
|
25463
25524
|
return () => {
|
|
25464
25525
|
isReadyRef.current = false;
|
|
25465
25526
|
pendingChunksRef.current = [];
|
|
@@ -25774,13 +25835,13 @@ import { CodeHighlighter, Mermaid } from "@ant-design/x";
|
|
|
25774
25835
|
|
|
25775
25836
|
// src/components/GenUI/ReactInfographic.tsx
|
|
25776
25837
|
import { Infographic } from "@antv/infographic";
|
|
25777
|
-
import { useRef as useRef22, useEffect as
|
|
25838
|
+
import { useRef as useRef22, useEffect as useEffect42 } from "react";
|
|
25778
25839
|
import { jsx as jsx96 } from "react/jsx-runtime";
|
|
25779
25840
|
var ReactInfographic = (props) => {
|
|
25780
25841
|
const { children } = props;
|
|
25781
25842
|
const $container = useRef22(null);
|
|
25782
25843
|
const infographicInstance = useRef22(null);
|
|
25783
|
-
|
|
25844
|
+
useEffect42(() => {
|
|
25784
25845
|
if ($container.current) {
|
|
25785
25846
|
infographicInstance.current = new Infographic({
|
|
25786
25847
|
container: $container.current,
|
|
@@ -25795,7 +25856,7 @@ var ReactInfographic = (props) => {
|
|
|
25795
25856
|
infographicInstance.current?.destroy();
|
|
25796
25857
|
};
|
|
25797
25858
|
}, []);
|
|
25798
|
-
|
|
25859
|
+
useEffect42(() => {
|
|
25799
25860
|
const a = `infographic sequence-steps-simple
|
|
25800
25861
|
data
|
|
25801
25862
|
sequences
|
|
@@ -25811,7 +25872,7 @@ data
|
|
|
25811
25872
|
};
|
|
25812
25873
|
|
|
25813
25874
|
// src/components/GenUI/ReactChart.tsx
|
|
25814
|
-
import { useEffect as
|
|
25875
|
+
import { useEffect as useEffect43, useRef as useRef23, useState as useState66 } from "react";
|
|
25815
25876
|
import * as echarts from "echarts";
|
|
25816
25877
|
import { Card as Card22 } from "antd";
|
|
25817
25878
|
import { parse } from "best-effort-json-parser";
|
|
@@ -26128,7 +26189,7 @@ var ReactChart = (props) => {
|
|
|
26128
26189
|
const chartInstance = useRef23(null);
|
|
26129
26190
|
const resizeObserverRef = useRef23(null);
|
|
26130
26191
|
const [tableData, setTableData] = useState66(null);
|
|
26131
|
-
|
|
26192
|
+
useEffect43(() => {
|
|
26132
26193
|
if (!chartRef.current) {
|
|
26133
26194
|
return;
|
|
26134
26195
|
}
|
|
@@ -26201,7 +26262,7 @@ var ReactChart = (props) => {
|
|
|
26201
26262
|
window.removeEventListener("resize", handleResize);
|
|
26202
26263
|
};
|
|
26203
26264
|
}, [children]);
|
|
26204
|
-
|
|
26265
|
+
useEffect43(() => {
|
|
26205
26266
|
return () => {
|
|
26206
26267
|
if (resizeObserverRef.current) {
|
|
26207
26268
|
resizeObserverRef.current.disconnect();
|
|
@@ -26900,7 +26961,7 @@ function normalize(name, steps) {
|
|
|
26900
26961
|
}
|
|
26901
26962
|
|
|
26902
26963
|
// src/components/Chat/WorkflowCanvas.tsx
|
|
26903
|
-
import { useMemo as useMemo25, useEffect as
|
|
26964
|
+
import { useMemo as useMemo25, useEffect as useEffect45, useState as useState69, useCallback as useCallback36 } from "react";
|
|
26904
26965
|
import {
|
|
26905
26966
|
ReactFlowProvider as ReactFlowProvider4,
|
|
26906
26967
|
MarkerType,
|
|
@@ -26910,11 +26971,11 @@ import {
|
|
|
26910
26971
|
useEdgesState as useEdgesState4
|
|
26911
26972
|
} from "@xyflow/react";
|
|
26912
26973
|
import "@xyflow/react/dist/style.css";
|
|
26913
|
-
import { Empty as Empty13, Spin as Spin15, Tag as
|
|
26974
|
+
import { Empty as Empty13, Spin as Spin15, Tag as Tag23, Typography as Typography50, Tabs as Tabs3 } from "antd";
|
|
26914
26975
|
|
|
26915
26976
|
// src/components/Chat/WorkflowNode.tsx
|
|
26916
26977
|
import { Handle as Handle3, Position as Position3 } from "@xyflow/react";
|
|
26917
|
-
import { Tag as
|
|
26978
|
+
import { Tag as Tag22, Typography as Typography49, Tooltip as Tooltip22, Popover as Popover2 } from "antd";
|
|
26918
26979
|
import { Workflow, UserCheck, CheckCircle, XCircle, Circle as Circle3, StopCircle, Loader2 as Loader27, CircleCheckBig, CircleX, CirclePause, Filter, Repeat } from "lucide-react";
|
|
26919
26980
|
import { jsx as jsx104, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
26920
26981
|
if (typeof document !== "undefined") {
|
|
@@ -27006,7 +27067,7 @@ function SchemaView({ schema }) {
|
|
|
27006
27067
|
/* @__PURE__ */ jsx104(Text38, { style: { fontSize: 11, fontWeight: isReq ? 600 : 400, fontFamily: "monospace" }, children: key }),
|
|
27007
27068
|
isReq && /* @__PURE__ */ jsx104("span", { style: { color: "#ef4444", fontSize: 9 }, children: "*" }),
|
|
27008
27069
|
propDesc && !hasNested && /* @__PURE__ */ jsx104(Text38, { type: "secondary", style: { fontSize: 10, flex: 1, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: propDesc }),
|
|
27009
|
-
/* @__PURE__ */ jsx104(
|
|
27070
|
+
/* @__PURE__ */ jsx104(Tag22, { color: typeColor(propType), style: { margin: 0, fontSize: 9, padding: "0 4px", lineHeight: "16px", marginLeft: "auto" }, children: propType })
|
|
27010
27071
|
]
|
|
27011
27072
|
}
|
|
27012
27073
|
)
|
|
@@ -27216,8 +27277,8 @@ var WorkflowNode = ({ data }) => {
|
|
|
27216
27277
|
}
|
|
27217
27278
|
),
|
|
27218
27279
|
/* @__PURE__ */ jsxs74("div", { style: { display: "flex", gap: 4, marginTop: 6, flexWrap: "wrap" }, children: [
|
|
27219
|
-
!hasRuntime && nodeType === "agent" && ref && /* @__PURE__ */ jsx104(
|
|
27220
|
-
!hasRuntime && nodeType === "agent" && !ref && /* @__PURE__ */ jsx104(
|
|
27280
|
+
!hasRuntime && nodeType === "agent" && ref && /* @__PURE__ */ jsx104(Tag22, { color: "purple", style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px" }, children: ref }),
|
|
27281
|
+
!hasRuntime && nodeType === "agent" && !ref && /* @__PURE__ */ jsx104(Tag22, { color: "default", style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px" }, children: "general" }),
|
|
27221
27282
|
ask && /* @__PURE__ */ jsx104(Tooltip22, { title: "This step requires human approval before continuing", children: /* @__PURE__ */ jsx104(
|
|
27222
27283
|
"div",
|
|
27223
27284
|
{
|
|
@@ -27252,9 +27313,9 @@ var WorkflowNode = ({ data }) => {
|
|
|
27252
27313
|
children: /* @__PURE__ */ jsx104(Filter, { size: 12, style: { color: "#2f54eb" } })
|
|
27253
27314
|
}
|
|
27254
27315
|
) }),
|
|
27255
|
-
!hasRuntime && nodeType === "map" && innerRef && /* @__PURE__ */ jsx104(
|
|
27316
|
+
!hasRuntime && nodeType === "map" && innerRef && /* @__PURE__ */ jsx104(Tag22, { color: "purple", style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px" }, children: innerRef }),
|
|
27256
27317
|
!hasRuntime && nodeType === "map" && inputTemplate && /* @__PURE__ */ jsx104(
|
|
27257
|
-
|
|
27318
|
+
Tag22,
|
|
27258
27319
|
{
|
|
27259
27320
|
color: "default",
|
|
27260
27321
|
style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px", maxWidth: 120 },
|
|
@@ -27262,27 +27323,27 @@ var WorkflowNode = ({ data }) => {
|
|
|
27262
27323
|
children: inputTemplate.length > 20 ? inputTemplate.slice(0, 18) + "\u2026" : inputTemplate
|
|
27263
27324
|
}
|
|
27264
27325
|
),
|
|
27265
|
-
!hasRuntime && nodeType === "map" && (batchSize || maxConcurrency || innerConcurrency) && /* @__PURE__ */ jsxs74(
|
|
27326
|
+
!hasRuntime && nodeType === "map" && (batchSize || maxConcurrency || innerConcurrency) && /* @__PURE__ */ jsxs74(Tag22, { color: "cyan", style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px" }, children: [
|
|
27266
27327
|
batchSize ?? 50,
|
|
27267
27328
|
"\xD7",
|
|
27268
27329
|
maxConcurrency ?? 10,
|
|
27269
27330
|
"\xD7",
|
|
27270
27331
|
innerConcurrency ?? 5
|
|
27271
27332
|
] }),
|
|
27272
|
-
!hasRuntime && nodeType === "map" && reduceRef && /* @__PURE__ */ jsxs74(
|
|
27333
|
+
!hasRuntime && nodeType === "map" && reduceRef && /* @__PURE__ */ jsxs74(Tag22, { color: "blue", style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px" }, children: [
|
|
27273
27334
|
"\u2193 ",
|
|
27274
27335
|
reduceRef
|
|
27275
27336
|
] }),
|
|
27276
|
-
!hasRuntime && maxRetries ? /* @__PURE__ */ jsxs74(
|
|
27337
|
+
!hasRuntime && maxRetries ? /* @__PURE__ */ jsxs74(Tag22, { style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px" }, children: [
|
|
27277
27338
|
"\u21BB ",
|
|
27278
27339
|
maxRetries
|
|
27279
27340
|
] }) : null,
|
|
27280
|
-
!hasRuntime && timeout ? /* @__PURE__ */ jsxs74(
|
|
27341
|
+
!hasRuntime && timeout ? /* @__PURE__ */ jsxs74(Tag22, { style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px" }, children: [
|
|
27281
27342
|
"\u23F1 ",
|
|
27282
27343
|
timeout,
|
|
27283
27344
|
"s"
|
|
27284
27345
|
] }) : null,
|
|
27285
|
-
displayDuration && /* @__PURE__ */ jsx104(
|
|
27346
|
+
displayDuration && /* @__PURE__ */ jsx104(Tag22, { color: runState ? "blue" : "default", style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px" }, children: displayDuration }),
|
|
27286
27347
|
outputKey && /* @__PURE__ */ jsx104("span", { style: { marginLeft: "auto" } }),
|
|
27287
27348
|
outputKey && /* @__PURE__ */ jsx104(
|
|
27288
27349
|
Popover2,
|
|
@@ -27295,7 +27356,7 @@ var WorkflowNode = ({ data }) => {
|
|
|
27295
27356
|
/* @__PURE__ */ jsx104(Text38, { style: { fontSize: 11, fontFamily: "monospace", color: "#6366f1" }, children: outputKey })
|
|
27296
27357
|
] }),
|
|
27297
27358
|
content: nodeSchema ? /* @__PURE__ */ jsx104(SchemaView, { schema: nodeSchema }) : /* @__PURE__ */ jsx104(Text38, { type: "secondary", style: { fontSize: 11 }, children: "No schema defined" }),
|
|
27298
|
-
children: /* @__PURE__ */ jsxs74(
|
|
27359
|
+
children: /* @__PURE__ */ jsxs74(Tag22, { style: { margin: 0, fontSize: 10, padding: "0 5px", lineHeight: "16px", flexShrink: 0, cursor: "default" }, children: [
|
|
27299
27360
|
"\u2192 ",
|
|
27300
27361
|
outputKey
|
|
27301
27362
|
] })
|
|
@@ -27481,7 +27542,7 @@ function StepDetailPopover({ step }) {
|
|
|
27481
27542
|
/* @__PURE__ */ jsxs76("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 12 }, children: [
|
|
27482
27543
|
/* @__PURE__ */ jsx106("span", { style: { color: ssc.color, fontSize: 14 }, children: ssc.icon }),
|
|
27483
27544
|
/* @__PURE__ */ jsx106(Text39, { strong: true, style: { fontSize: 14 }, children: step.stepName }),
|
|
27484
|
-
/* @__PURE__ */ jsx106(
|
|
27545
|
+
/* @__PURE__ */ jsx106(Tag23, { color: "purple", style: { fontSize: 11 }, children: step.stepType })
|
|
27485
27546
|
] }),
|
|
27486
27547
|
step.edgePurpose && /* @__PURE__ */ jsx106("div", { style: { marginBottom: 10 }, children: /* @__PURE__ */ jsxs76(Text39, { type: "secondary", style: { fontSize: 11 }, children: [
|
|
27487
27548
|
"Purpose: ",
|
|
@@ -27828,7 +27889,7 @@ var WorkflowCanvas = ({
|
|
|
27828
27889
|
if (!node) return null;
|
|
27829
27890
|
return matchStepByName(steps, node);
|
|
27830
27891
|
}, [dsl.nodes, steps, selectedNodeId, isRuntime]);
|
|
27831
|
-
|
|
27892
|
+
useEffect45(() => {
|
|
27832
27893
|
setNodes(initialNodes);
|
|
27833
27894
|
setEdges(initialEdges);
|
|
27834
27895
|
}, [initialNodes, initialEdges, setNodes, setEdges]);
|
|
@@ -27843,7 +27904,7 @@ var WorkflowCanvas = ({
|
|
|
27843
27904
|
}))
|
|
27844
27905
|
);
|
|
27845
27906
|
}, [setNodes]);
|
|
27846
|
-
|
|
27907
|
+
useEffect45(() => {
|
|
27847
27908
|
if (!isRuntime) return;
|
|
27848
27909
|
setNodes(
|
|
27849
27910
|
(nds) => nds.map((n) => ({
|
|
@@ -27961,7 +28022,7 @@ if (typeof document !== "undefined") {
|
|
|
27961
28022
|
document.head.appendChild(style);
|
|
27962
28023
|
}
|
|
27963
28024
|
}
|
|
27964
|
-
var { Text: Text40, Title:
|
|
28025
|
+
var { Text: Text40, Title: Title14 } = Typography51;
|
|
27965
28026
|
var statusConfig = {
|
|
27966
28027
|
running: { icon: /* @__PURE__ */ jsx108(Loader28, { size: 14, style: { animation: "spin 1s linear infinite", color: "#1677ff" } }), label: "Running" },
|
|
27967
28028
|
completed: { icon: /* @__PURE__ */ jsx108(CircleCheckBig2, { size: 14, style: { color: "#52c41a" } }), label: "Completed" },
|
|
@@ -28067,9 +28128,9 @@ function StepNode({ data, selected }) {
|
|
|
28067
28128
|
) })
|
|
28068
28129
|
] }),
|
|
28069
28130
|
/* @__PURE__ */ jsxs77("div", { style: { display: "flex", gap: 4, alignItems: "center", flexWrap: "wrap" }, children: [
|
|
28070
|
-
/* @__PURE__ */ jsx108(
|
|
28131
|
+
/* @__PURE__ */ jsx108(Tag24, { color: "purple", style: { margin: 0, fontSize: 10, padding: "0 6px", lineHeight: "18px" }, children: step.stepType }),
|
|
28071
28132
|
/* @__PURE__ */ jsx108(
|
|
28072
|
-
|
|
28133
|
+
Tag24,
|
|
28073
28134
|
{
|
|
28074
28135
|
color: "blue",
|
|
28075
28136
|
style: { margin: 0, fontSize: 10, padding: "0 6px", lineHeight: "18px" },
|
|
@@ -28143,7 +28204,7 @@ function StepDetailPopover2({ step }) {
|
|
|
28143
28204
|
/* @__PURE__ */ jsxs77("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 12 }, children: [
|
|
28144
28205
|
/* @__PURE__ */ jsx108("span", { style: { color: ssc.color, fontSize: 14 }, children: ssc.icon }),
|
|
28145
28206
|
/* @__PURE__ */ jsx108(Text40, { strong: true, style: { fontSize: 14 }, children: step.stepName }),
|
|
28146
|
-
/* @__PURE__ */ jsx108(
|
|
28207
|
+
/* @__PURE__ */ jsx108(Tag24, { color: "purple", style: { fontSize: 11 }, children: step.stepType })
|
|
28147
28208
|
] }),
|
|
28148
28209
|
step.edgePurpose && /* @__PURE__ */ jsx108("div", { style: { marginBottom: 10 }, children: /* @__PURE__ */ jsxs77(Text40, { type: "secondary", style: { fontSize: 11 }, children: [
|
|
28149
28210
|
"Purpose: ",
|
|
@@ -28229,11 +28290,11 @@ function FlowCanvas({ steps }) {
|
|
|
28229
28290
|
() => steps.find((s) => s.id === selectedNodeId) || null,
|
|
28230
28291
|
[steps, selectedNodeId]
|
|
28231
28292
|
);
|
|
28232
|
-
|
|
28293
|
+
useEffect46(() => {
|
|
28233
28294
|
setNodes(initialNodes);
|
|
28234
28295
|
setEdges(initialEdges);
|
|
28235
28296
|
}, [initialNodes, initialEdges, setNodes, setEdges]);
|
|
28236
|
-
|
|
28297
|
+
useEffect46(() => {
|
|
28237
28298
|
if (selectedNodeId) {
|
|
28238
28299
|
setNodes(
|
|
28239
28300
|
(nds) => nds.map((n) => ({
|
|
@@ -28459,13 +28520,13 @@ var RunDetail = ({ run, agentName, open, onClose, onRunUpdate, autoRefresh, onAu
|
|
|
28459
28520
|
setGraphLoading(false);
|
|
28460
28521
|
}
|
|
28461
28522
|
}, [get, run.assistantId]);
|
|
28462
|
-
|
|
28523
|
+
useEffect46(() => {
|
|
28463
28524
|
if (!open) return;
|
|
28464
28525
|
setLoading(true);
|
|
28465
28526
|
fetchSteps().finally(() => setLoading(false));
|
|
28466
28527
|
fetchGraphDefinition();
|
|
28467
28528
|
}, [open, run.id, fetchSteps, fetchGraphDefinition]);
|
|
28468
|
-
|
|
28529
|
+
useEffect46(() => {
|
|
28469
28530
|
if (stepsPollTimeoutRef.current) {
|
|
28470
28531
|
clearTimeout(stepsPollTimeoutRef.current);
|
|
28471
28532
|
stepsPollTimeoutRef.current = null;
|
|
@@ -28494,7 +28555,7 @@ var RunDetail = ({ run, agentName, open, onClose, onRunUpdate, autoRefresh, onAu
|
|
|
28494
28555
|
{
|
|
28495
28556
|
title: /* @__PURE__ */ jsxs77(Space39, { children: [
|
|
28496
28557
|
/* @__PURE__ */ jsx108(Text40, { strong: true, children: "Pipeline Execution" }),
|
|
28497
|
-
/* @__PURE__ */ jsx108(
|
|
28558
|
+
/* @__PURE__ */ jsx108(Tag24, { color: "purple", style: { fontSize: 11 }, children: "Flow View" }),
|
|
28498
28559
|
/* @__PURE__ */ jsxs77(Space39, { size: 4, style: { marginLeft: 12 }, children: [
|
|
28499
28560
|
/* @__PURE__ */ jsx108(Text40, { type: "secondary", style: { fontSize: 11 }, children: "Auto-refresh" }),
|
|
28500
28561
|
/* @__PURE__ */ jsx108(Switch3, { size: "small", checked: autoRefresh, onChange: onAutoRefreshChange })
|
|
@@ -28546,8 +28607,8 @@ var TopologyRuntimeView = () => {
|
|
|
28546
28607
|
setRuns((prev) => prev.filter((r) => r.id !== runId));
|
|
28547
28608
|
setSelectedRun((prev) => prev?.id === runId ? null : prev);
|
|
28548
28609
|
} catch (err) {
|
|
28549
|
-
const
|
|
28550
|
-
setError(
|
|
28610
|
+
const message28 = err instanceof Error ? err.message : "Failed to delete run";
|
|
28611
|
+
setError(message28);
|
|
28551
28612
|
}
|
|
28552
28613
|
}, [del]);
|
|
28553
28614
|
const refreshRuns = useCallback37(async () => {
|
|
@@ -28579,7 +28640,7 @@ var TopologyRuntimeView = () => {
|
|
|
28579
28640
|
setLoading(false);
|
|
28580
28641
|
}
|
|
28581
28642
|
}, [get]);
|
|
28582
|
-
|
|
28643
|
+
useEffect46(() => {
|
|
28583
28644
|
let cancelled = false;
|
|
28584
28645
|
const init2 = async () => {
|
|
28585
28646
|
try {
|
|
@@ -28615,7 +28676,7 @@ var TopologyRuntimeView = () => {
|
|
|
28615
28676
|
cancelled = true;
|
|
28616
28677
|
};
|
|
28617
28678
|
}, [get]);
|
|
28618
|
-
|
|
28679
|
+
useEffect46(() => {
|
|
28619
28680
|
return () => {
|
|
28620
28681
|
pollingSessionRef.current = 0;
|
|
28621
28682
|
};
|
|
@@ -28631,7 +28692,7 @@ var TopologyRuntimeView = () => {
|
|
|
28631
28692
|
}
|
|
28632
28693
|
return /* @__PURE__ */ jsxs77("div", { style: { padding: 16, overflow: "auto", height: "100%" }, children: [
|
|
28633
28694
|
/* @__PURE__ */ jsxs77("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", marginBottom: 16 }, children: [
|
|
28634
|
-
/* @__PURE__ */ jsx108(
|
|
28695
|
+
/* @__PURE__ */ jsx108(Title14, { level: 5, style: { marginBottom: 0 }, children: "Workflow Runs" }),
|
|
28635
28696
|
/* @__PURE__ */ jsx108(Tooltip23, { title: "Refresh now", children: /* @__PURE__ */ jsx108(
|
|
28636
28697
|
ReloadOutlined4,
|
|
28637
28698
|
{
|
|
@@ -28641,7 +28702,7 @@ var TopologyRuntimeView = () => {
|
|
|
28641
28702
|
) })
|
|
28642
28703
|
] }),
|
|
28643
28704
|
/* @__PURE__ */ jsx108(
|
|
28644
|
-
|
|
28705
|
+
List16,
|
|
28645
28706
|
{
|
|
28646
28707
|
dataSource: runs,
|
|
28647
28708
|
renderItem: (run) => /* @__PURE__ */ jsx108("div", { style: { marginBottom: 8 }, children: /* @__PURE__ */ jsx108(
|
|
@@ -28651,7 +28712,7 @@ var TopologyRuntimeView = () => {
|
|
|
28651
28712
|
agentName: agentNames[run.assistantId] || run.assistantId,
|
|
28652
28713
|
onClick: () => setSelectedRun(run),
|
|
28653
28714
|
extra: /* @__PURE__ */ jsx108(
|
|
28654
|
-
|
|
28715
|
+
Popconfirm6,
|
|
28655
28716
|
{
|
|
28656
28717
|
title: "Delete run",
|
|
28657
28718
|
description: "Delete this workflow run and all its step records?",
|
|
@@ -28688,11 +28749,11 @@ var TopologyRuntimeView = () => {
|
|
|
28688
28749
|
};
|
|
28689
28750
|
|
|
28690
28751
|
// src/components/Chat/TopologyInboxView.tsx
|
|
28691
|
-
import { useEffect as
|
|
28692
|
-
import { Card as Card23, Typography as Typography52, Spin as Spin17, Empty as Empty15, List as
|
|
28752
|
+
import { useEffect as useEffect47, useState as useState71 } from "react";
|
|
28753
|
+
import { Card as Card23, Typography as Typography52, Spin as Spin17, Empty as Empty15, List as List17, Button as Button50, Space as Space40, Tag as Tag25 } from "antd";
|
|
28693
28754
|
import { InboxOutlined, ReloadOutlined as ReloadOutlined5 } from "@ant-design/icons";
|
|
28694
28755
|
import { jsx as jsx109, jsxs as jsxs78 } from "react/jsx-runtime";
|
|
28695
|
-
var { Text: Text41, Title:
|
|
28756
|
+
var { Text: Text41, Title: Title15 } = Typography52;
|
|
28696
28757
|
var TopologyInboxView = () => {
|
|
28697
28758
|
const { get } = useApi();
|
|
28698
28759
|
const [items, setItems] = useState71([]);
|
|
@@ -28723,7 +28784,7 @@ var TopologyInboxView = () => {
|
|
|
28723
28784
|
setLoading(false);
|
|
28724
28785
|
}
|
|
28725
28786
|
};
|
|
28726
|
-
|
|
28787
|
+
useEffect47(() => {
|
|
28727
28788
|
fetchInbox();
|
|
28728
28789
|
}, [get]);
|
|
28729
28790
|
return /* @__PURE__ */ jsxs78("div", { style: { height: "100%", display: "flex", flexDirection: "column" }, children: [
|
|
@@ -28738,7 +28799,7 @@ var TopologyInboxView = () => {
|
|
|
28738
28799
|
},
|
|
28739
28800
|
children: [
|
|
28740
28801
|
/* @__PURE__ */ jsxs78("div", { children: [
|
|
28741
|
-
/* @__PURE__ */ jsxs78(
|
|
28802
|
+
/* @__PURE__ */ jsxs78(Title15, { level: 4, style: { margin: 0 }, children: [
|
|
28742
28803
|
/* @__PURE__ */ jsx109(InboxOutlined, { style: { marginRight: 8 } }),
|
|
28743
28804
|
"User Inbox"
|
|
28744
28805
|
] }),
|
|
@@ -28769,7 +28830,7 @@ var TopologyInboxView = () => {
|
|
|
28769
28830
|
children: /* @__PURE__ */ jsx109(Spin17, { size: "large" })
|
|
28770
28831
|
}
|
|
28771
28832
|
) : items.length === 0 ? /* @__PURE__ */ jsx109(Empty15, { description: "Inbox is empty" }) : /* @__PURE__ */ jsx109(
|
|
28772
|
-
|
|
28833
|
+
List17,
|
|
28773
28834
|
{
|
|
28774
28835
|
dataSource: items,
|
|
28775
28836
|
renderItem: (item) => /* @__PURE__ */ jsxs78(
|
|
@@ -28783,7 +28844,7 @@ var TopologyInboxView = () => {
|
|
|
28783
28844
|
{
|
|
28784
28845
|
style: { marginBottom: 8, display: "flex", justifyContent: "space-between" },
|
|
28785
28846
|
children: /* @__PURE__ */ jsxs78(Space40, { size: 4, children: [
|
|
28786
|
-
/* @__PURE__ */ jsx109(
|
|
28847
|
+
/* @__PURE__ */ jsx109(Tag25, { color: "blue", children: item.assistantName }),
|
|
28787
28848
|
/* @__PURE__ */ jsx109(Text41, { type: "secondary", style: { fontSize: 11 }, children: new Date(item.startedAt).toLocaleString() })
|
|
28788
28849
|
] })
|
|
28789
28850
|
}
|
|
@@ -28806,14 +28867,14 @@ var TopologyInboxView = () => {
|
|
|
28806
28867
|
};
|
|
28807
28868
|
|
|
28808
28869
|
// src/components/Chat/WorkflowAutomationView.tsx
|
|
28809
|
-
import { useEffect as
|
|
28870
|
+
import { useEffect as useEffect49, useState as useState72, useCallback as useCallback38, useMemo as useMemo30, useRef as useRef26 } from "react";
|
|
28810
28871
|
import {
|
|
28811
28872
|
ReactFlowProvider as ReactFlowProvider6
|
|
28812
28873
|
} from "@xyflow/react";
|
|
28813
28874
|
import "@xyflow/react/dist/style.css";
|
|
28814
|
-
import { Spin as Spin18, Empty as Empty16, Card as Card24, Typography as Typography55, Button as Button52, Input as Input15, Modal as Modal18, Popconfirm as
|
|
28875
|
+
import { Spin as Spin18, Empty as Empty16, Card as Card24, Typography as Typography55, Button as Button52, Input as Input15, Modal as Modal18, Popconfirm as Popconfirm7 } from "antd";
|
|
28815
28876
|
import {
|
|
28816
|
-
PlusOutlined as
|
|
28877
|
+
PlusOutlined as PlusOutlined9,
|
|
28817
28878
|
DeleteOutlined as DeleteOutlined4,
|
|
28818
28879
|
InfoCircleOutlined as InfoCircleOutlined6,
|
|
28819
28880
|
MenuOutlined,
|
|
@@ -28949,7 +29010,7 @@ var CopilotPanel = ({
|
|
|
28949
29010
|
};
|
|
28950
29011
|
|
|
28951
29012
|
// src/components/Chat/CreateWorkflowModal.tsx
|
|
28952
|
-
import { useEffect as
|
|
29013
|
+
import { useEffect as useEffect48 } from "react";
|
|
28953
29014
|
import { Modal as Modal17, Form as Form7, Input as Input14 } from "antd";
|
|
28954
29015
|
import { jsx as jsx111 } from "react/jsx-runtime";
|
|
28955
29016
|
function extractName(purpose) {
|
|
@@ -28975,7 +29036,7 @@ var CreateWorkflowModal = ({
|
|
|
28975
29036
|
}) => {
|
|
28976
29037
|
const { post } = useApi();
|
|
28977
29038
|
const [form] = Form7.useForm();
|
|
28978
|
-
|
|
29039
|
+
useEffect48(() => {
|
|
28979
29040
|
if (open) {
|
|
28980
29041
|
form.resetFields();
|
|
28981
29042
|
}
|
|
@@ -29539,7 +29600,7 @@ function WorkflowFlowInner({
|
|
|
29539
29600
|
(w) => w.name.toLowerCase().includes(q) || w.description.toLowerCase().includes(q)
|
|
29540
29601
|
);
|
|
29541
29602
|
}, [workflows, search]);
|
|
29542
|
-
|
|
29603
|
+
useEffect49(() => {
|
|
29543
29604
|
if (selectedId) {
|
|
29544
29605
|
setListOpen(false);
|
|
29545
29606
|
} else {
|
|
@@ -29618,7 +29679,7 @@ function WorkflowFlowInner({
|
|
|
29618
29679
|
boxShadow: "0 2px 12px rgba(0,0,0,0.08)",
|
|
29619
29680
|
border: "1px solid #f0f0f0"
|
|
29620
29681
|
}, children: /* @__PURE__ */ jsx113(
|
|
29621
|
-
|
|
29682
|
+
Popconfirm7,
|
|
29622
29683
|
{
|
|
29623
29684
|
title: "Delete workflow",
|
|
29624
29685
|
description: "This will permanently delete this workflow agent.",
|
|
@@ -29665,7 +29726,7 @@ function WorkflowFlowInner({
|
|
|
29665
29726
|
{
|
|
29666
29727
|
type: "text",
|
|
29667
29728
|
size: "small",
|
|
29668
|
-
icon: /* @__PURE__ */ jsx113(
|
|
29729
|
+
icon: /* @__PURE__ */ jsx113(PlusOutlined9, {}),
|
|
29669
29730
|
onClick: onCreate,
|
|
29670
29731
|
style: { color: "#6366f1" }
|
|
29671
29732
|
}
|
|
@@ -29887,7 +29948,7 @@ var WorkflowAutomationView = () => {
|
|
|
29887
29948
|
setGraphDef(null);
|
|
29888
29949
|
}
|
|
29889
29950
|
}, [get]);
|
|
29890
|
-
|
|
29951
|
+
useEffect49(() => {
|
|
29891
29952
|
let cancelled = false;
|
|
29892
29953
|
const load2 = async () => {
|
|
29893
29954
|
try {
|
|
@@ -29906,7 +29967,7 @@ var WorkflowAutomationView = () => {
|
|
|
29906
29967
|
cancelled = true;
|
|
29907
29968
|
};
|
|
29908
29969
|
}, [fetchWorkflows]);
|
|
29909
|
-
|
|
29970
|
+
useEffect49(() => {
|
|
29910
29971
|
if (selectedId) {
|
|
29911
29972
|
fetchDSL(selectedId);
|
|
29912
29973
|
} else {
|
|
@@ -29917,7 +29978,7 @@ var WorkflowAutomationView = () => {
|
|
|
29917
29978
|
e.preventDefault();
|
|
29918
29979
|
resizingRef.current = { startX: e.clientX, startWidth: copilotWidth };
|
|
29919
29980
|
}, [copilotWidth]);
|
|
29920
|
-
|
|
29981
|
+
useEffect49(() => {
|
|
29921
29982
|
const handleMouseMove = (e) => {
|
|
29922
29983
|
if (!resizingRef.current) return;
|
|
29923
29984
|
const delta = resizingRef.current.startX - e.clientX;
|
|
@@ -30014,7 +30075,7 @@ var WorkflowAutomationView = () => {
|
|
|
30014
30075
|
Button52,
|
|
30015
30076
|
{
|
|
30016
30077
|
type: "primary",
|
|
30017
|
-
icon: /* @__PURE__ */ jsx113(
|
|
30078
|
+
icon: /* @__PURE__ */ jsx113(PlusOutlined9, {}),
|
|
30018
30079
|
onClick: () => setCreateModalOpen(true),
|
|
30019
30080
|
children: "Create Workflow"
|
|
30020
30081
|
}
|
|
@@ -30126,12 +30187,12 @@ var WorkflowAutomationView = () => {
|
|
|
30126
30187
|
// src/components/Eval/EvalPanel.tsx
|
|
30127
30188
|
import React66, { useState as useState75, useMemo as useMemo31 } from "react";
|
|
30128
30189
|
import { createStyles as createStyles34 } from "antd-style";
|
|
30129
|
-
import { Button as Button55, Card as Card28, Typography as Typography59, Row as Row4, Col as Col4, Tag as
|
|
30190
|
+
import { Button as Button55, Card as Card28, Typography as Typography59, Row as Row4, Col as Col4, Tag as Tag29, theme as theme15, Dropdown as Dropdown2, Popconfirm as Popconfirm11, message as message18 } from "antd";
|
|
30130
30191
|
import { Play as Play2, FlaskConical as FlaskConical2, TestTube2 as TestTube26, TrendingUp, CheckCircle as CheckCircle4, XCircle as XCircle3, ArrowRight as ArrowRight3, ChevronDown as ChevronDown5, Trash2 as Trash27, Clock as Clock5 } from "lucide-react";
|
|
30131
30192
|
|
|
30132
30193
|
// src/components/Eval/EvalSuiteCardList.tsx
|
|
30133
30194
|
import { createStyles as createStyles31 } from "antd-style";
|
|
30134
|
-
import { Card as Card25, Typography as Typography56, Row as Row3, Col as Col3, Empty as Empty17, Popconfirm as
|
|
30195
|
+
import { Card as Card25, Typography as Typography56, Row as Row3, Col as Col3, Empty as Empty17, Popconfirm as Popconfirm8, Spin as Spin19 } from "antd";
|
|
30135
30196
|
import { Trash2 as Trash24, TestTube2 as TestTube24 } from "lucide-react";
|
|
30136
30197
|
import { jsx as jsx114, jsxs as jsxs82 } from "react/jsx-runtime";
|
|
30137
30198
|
var { Text: Text45 } = Typography56;
|
|
@@ -30216,7 +30277,7 @@ var EvalSuiteCardList = ({ projectId, onSelectSuite }) => {
|
|
|
30216
30277
|
/* @__PURE__ */ jsx114("div", { className: styles.subtitle, children: "Server-side agent testing" })
|
|
30217
30278
|
] }),
|
|
30218
30279
|
/* @__PURE__ */ jsx114(
|
|
30219
|
-
|
|
30280
|
+
Popconfirm8,
|
|
30220
30281
|
{
|
|
30221
30282
|
title: "Delete this suite?",
|
|
30222
30283
|
onConfirm: (e) => {
|
|
@@ -30243,7 +30304,7 @@ var EvalSuiteCardList = ({ projectId, onSelectSuite }) => {
|
|
|
30243
30304
|
// src/components/Eval/EvalSuiteDetail.tsx
|
|
30244
30305
|
import { useState as useState73 } from "react";
|
|
30245
30306
|
import { createStyles as createStyles32 } from "antd-style";
|
|
30246
|
-
import { Button as Button53, Card as Card26, Typography as Typography57, Modal as Modal19, Form as Form8, Input as Input16, Select as Select8, Table as Table3, Popconfirm as
|
|
30307
|
+
import { Button as Button53, Card as Card26, Typography as Typography57, Modal as Modal19, Form as Form8, Input as Input16, Select as Select8, Table as Table3, Popconfirm as Popconfirm9, Empty as Empty18 } from "antd";
|
|
30247
30308
|
import { Play, Plus as Plus6, Trash2 as Trash25, Bot as Bot3, MessageSquare as MessageSquare3, FlaskConical } from "lucide-react";
|
|
30248
30309
|
import { jsx as jsx115, jsxs as jsxs83 } from "react/jsx-runtime";
|
|
30249
30310
|
var { Text: Text46 } = Typography57;
|
|
@@ -30403,7 +30464,7 @@ var EvalSuiteDetail = ({ projectId, suiteId, onBack, onRun }) => {
|
|
|
30403
30464
|
title: "",
|
|
30404
30465
|
key: "actions",
|
|
30405
30466
|
width: 40,
|
|
30406
|
-
render: (_, c) => /* @__PURE__ */ jsx115(
|
|
30467
|
+
render: (_, c) => /* @__PURE__ */ jsx115(Popconfirm9, { title: "Delete?", onConfirm: () => removeCase(projectId, suiteId, c.id), children: /* @__PURE__ */ jsx115(Button53, { type: "text", danger: true, size: "small", icon: /* @__PURE__ */ jsx115(Trash25, { size: 14 }) }) })
|
|
30407
30468
|
}
|
|
30408
30469
|
];
|
|
30409
30470
|
return /* @__PURE__ */ jsxs83("div", { className: styles.shell, children: [
|
|
@@ -30480,9 +30541,9 @@ var EvalSuiteDetail = ({ projectId, suiteId, onBack, onRun }) => {
|
|
|
30480
30541
|
};
|
|
30481
30542
|
|
|
30482
30543
|
// src/components/Eval/EvalRunResults.tsx
|
|
30483
|
-
import { useEffect as
|
|
30544
|
+
import { useEffect as useEffect50, useState as useState74 } from "react";
|
|
30484
30545
|
import { createStyles as createStyles33 } from "antd-style";
|
|
30485
|
-
import { Button as Button54, Card as Card27, Typography as Typography58, Progress as Progress3, Tag as
|
|
30546
|
+
import { Button as Button54, Card as Card27, Typography as Typography58, Progress as Progress3, Tag as Tag28, Table as Table4, Empty as Empty19, Popconfirm as Popconfirm10, message as message17 } from "antd";
|
|
30486
30547
|
import { CheckCircle as CheckCircle3, XCircle as XCircle2, Trash2 as Trash26 } from "lucide-react";
|
|
30487
30548
|
import { jsx as jsx116, jsxs as jsxs84 } from "react/jsx-runtime";
|
|
30488
30549
|
var { Text: Text47 } = Typography58;
|
|
@@ -30571,7 +30632,7 @@ var EvalRunResults = ({ runId, onBack }) => {
|
|
|
30571
30632
|
const client = useClient("__GLOBAL__");
|
|
30572
30633
|
const [run, setRun] = useState74(null);
|
|
30573
30634
|
const { status: streamingStatus, progress, connected } = useEvalRunStream(runId);
|
|
30574
|
-
|
|
30635
|
+
useEffect50(() => {
|
|
30575
30636
|
client.eval.runs.get(runId).then(setRun).catch(console.error);
|
|
30576
30637
|
}, [runId, client]);
|
|
30577
30638
|
if (!run) {
|
|
@@ -30588,10 +30649,10 @@ var EvalRunResults = ({ runId, onBack }) => {
|
|
|
30588
30649
|
/* @__PURE__ */ jsxs84("div", { className: styles.topLeft, children: [
|
|
30589
30650
|
/* @__PURE__ */ jsx116("button", { className: styles.breadcrumb, onClick: onBack, children: "\u2190 Back" }),
|
|
30590
30651
|
/* @__PURE__ */ jsx116("span", { className: styles.pageTitle, children: "Run Results" }),
|
|
30591
|
-
/* @__PURE__ */ jsx116(
|
|
30652
|
+
/* @__PURE__ */ jsx116(Tag28, { color: run.status === "completed" ? "success" : run.status === "running" ? "processing" : run.status === "failed" ? "error" : "warning", children: run.status })
|
|
30592
30653
|
] }),
|
|
30593
30654
|
/* @__PURE__ */ jsx116(
|
|
30594
|
-
|
|
30655
|
+
Popconfirm10,
|
|
30595
30656
|
{
|
|
30596
30657
|
title: "Delete this run?",
|
|
30597
30658
|
description: "Run results will be permanently deleted.",
|
|
@@ -30731,7 +30792,7 @@ var EvalRunResults = ({ runId, onBack }) => {
|
|
|
30731
30792
|
align: "center",
|
|
30732
30793
|
render: (_, r) => {
|
|
30733
30794
|
const n = r.dimensionResults?.length || 0;
|
|
30734
|
-
return n > 0 ? /* @__PURE__ */ jsx116(
|
|
30795
|
+
return n > 0 ? /* @__PURE__ */ jsx116(Tag28, { children: n }) : /* @__PURE__ */ jsx116(Text47, { type: "secondary", children: "\u2014" });
|
|
30735
30796
|
}
|
|
30736
30797
|
},
|
|
30737
30798
|
{
|
|
@@ -30740,7 +30801,7 @@ var EvalRunResults = ({ runId, onBack }) => {
|
|
|
30740
30801
|
key: "score",
|
|
30741
30802
|
width: 80,
|
|
30742
30803
|
align: "center",
|
|
30743
|
-
render: (s) => /* @__PURE__ */ jsx116(
|
|
30804
|
+
render: (s) => /* @__PURE__ */ jsx116(Tag28, { color: s >= 80 ? "success" : "error", children: typeof s === "number" ? s.toFixed(1) : "\u2014" })
|
|
30744
30805
|
}
|
|
30745
30806
|
]
|
|
30746
30807
|
}
|
|
@@ -30751,7 +30812,7 @@ var EvalRunResults = ({ runId, onBack }) => {
|
|
|
30751
30812
|
|
|
30752
30813
|
// src/components/Eval/EvalPanel.tsx
|
|
30753
30814
|
import { jsx as jsx117, jsxs as jsxs85 } from "react/jsx-runtime";
|
|
30754
|
-
var { Text: Text48, Title:
|
|
30815
|
+
var { Text: Text48, Title: Title16, Paragraph: Paragraph3 } = Typography59;
|
|
30755
30816
|
var useStyle16 = createStyles34(({ token, css }) => ({
|
|
30756
30817
|
shell: css`
|
|
30757
30818
|
display: flex;
|
|
@@ -31071,17 +31132,17 @@ var EvalPanel = () => {
|
|
|
31071
31132
|
/* @__PURE__ */ jsx117(Text48, { type: "danger", children: r.failedCases }),
|
|
31072
31133
|
/* @__PURE__ */ jsx117(Text48, { type: "secondary", children: " failed" })
|
|
31073
31134
|
] }),
|
|
31074
|
-
passRate !== null && /* @__PURE__ */ jsxs85(
|
|
31135
|
+
passRate !== null && /* @__PURE__ */ jsxs85(Tag29, { color: passRate >= 80 ? "success" : passRate >= 50 ? "warning" : "error", children: [
|
|
31075
31136
|
passRate,
|
|
31076
31137
|
"%"
|
|
31077
31138
|
] })
|
|
31078
31139
|
] }),
|
|
31079
31140
|
/* @__PURE__ */ jsxs85("div", { className: styles.runRowRight, style: { gap: 16 }, children: [
|
|
31080
31141
|
durationMs !== null && /* @__PURE__ */ jsx117(Text48, { type: "secondary", style: { fontSize: 12 }, children: fmtDuration(durationMs) }),
|
|
31081
|
-
/* @__PURE__ */ jsx117(
|
|
31142
|
+
/* @__PURE__ */ jsx117(Tag29, { color: meta.color, style: { margin: 0 }, children: meta.label }),
|
|
31082
31143
|
/* @__PURE__ */ jsx117(Text48, { strong: true, style: { fontSize: 15, minWidth: 40, textAlign: "right" }, children: typeof r.avgScore === "number" ? r.avgScore.toFixed(1) : "\u2014" }),
|
|
31083
31144
|
/* @__PURE__ */ jsx117(
|
|
31084
|
-
|
|
31145
|
+
Popconfirm11,
|
|
31085
31146
|
{
|
|
31086
31147
|
title: "Delete this run?",
|
|
31087
31148
|
description: "Run results will be permanently deleted.",
|
|
@@ -31182,10 +31243,10 @@ var EvalPanel = () => {
|
|
|
31182
31243
|
};
|
|
31183
31244
|
|
|
31184
31245
|
// src/components/Chat/PersonalAssistantPage.tsx
|
|
31185
|
-
import { useEffect as
|
|
31246
|
+
import { useEffect as useEffect52, useState as useState77, useCallback as useCallback40, useRef as useRef28 } from "react";
|
|
31186
31247
|
import { Card as Card29, Button as Button57, Input as Input18, Typography as Typography61, message as message20, Dropdown as Dropdown3, Modal as Modal21 } from "antd";
|
|
31187
31248
|
import { createStyles as createStyles36 } from "antd-style";
|
|
31188
|
-
import { Bot as Bot4, Sparkles as Sparkles3, ArrowRight as ArrowRight4, ArrowLeft as ArrowLeft3, Smile, Zap, Heart, Lightbulb, Edit3, MoreHorizontal,
|
|
31249
|
+
import { Bot as Bot4, Sparkles as Sparkles3, ArrowRight as ArrowRight4, ArrowLeft as ArrowLeft3, Smile, Zap, Heart, Lightbulb, Edit3, MoreHorizontal, MessagesSquare as MessagesSquare2, Trash2 as Trash29 } from "lucide-react";
|
|
31189
31250
|
import { Client as Client2 } from "@axiom-lattice/client-sdk";
|
|
31190
31251
|
|
|
31191
31252
|
// src/components/Chat/LatticeAgentWorkspace.tsx
|
|
@@ -31198,13 +31259,13 @@ var LatticeAgentWorkspace = ({
|
|
|
31198
31259
|
}) => /* @__PURE__ */ jsx118(WorkspaceContextProvider, { workspaceId, projectId, children: /* @__PURE__ */ jsx118(AssistantContextProvider, { autoLoad: true, initialAssistantId: assistant_id, children: /* @__PURE__ */ jsx118(LatticeChat, { showProjectSelector: false, assistant_id, ...chatProps }) }) });
|
|
31199
31260
|
|
|
31200
31261
|
// src/components/Chat/PersonalAssistantChannelModal.tsx
|
|
31201
|
-
import { useEffect as
|
|
31262
|
+
import { useEffect as useEffect51, useState as useState76, useCallback as useCallback39, useMemo as useMemo32, useRef as useRef27 } from "react";
|
|
31202
31263
|
import {
|
|
31203
31264
|
Button as Button56,
|
|
31204
31265
|
Form as Form9,
|
|
31205
31266
|
Input as Input17,
|
|
31206
31267
|
Modal as Modal20,
|
|
31207
|
-
Popconfirm as
|
|
31268
|
+
Popconfirm as Popconfirm12,
|
|
31208
31269
|
Spin as Spin20,
|
|
31209
31270
|
Switch as Switch4,
|
|
31210
31271
|
Typography as Typography60,
|
|
@@ -31213,7 +31274,7 @@ import {
|
|
|
31213
31274
|
QRCode
|
|
31214
31275
|
} from "antd";
|
|
31215
31276
|
import { createStyles as createStyles35 } from "antd-style";
|
|
31216
|
-
import { Trash2 as Trash28, X as X2,
|
|
31277
|
+
import { Trash2 as Trash28, X as X2, MessagesSquare, User as User6, UserPlus } from "lucide-react";
|
|
31217
31278
|
import { Fragment as Fragment23, jsx as jsx119, jsxs as jsxs86 } from "react/jsx-runtime";
|
|
31218
31279
|
var { Text: Text49 } = Typography60;
|
|
31219
31280
|
var AVATAR_COLORS = [
|
|
@@ -31525,7 +31586,7 @@ var PersonalAssistantChannelModal = ({
|
|
|
31525
31586
|
message19.error("Failed to check QR status");
|
|
31526
31587
|
}
|
|
31527
31588
|
}, [get, clearQrCountdown, form]);
|
|
31528
|
-
|
|
31589
|
+
useEffect51(() => {
|
|
31529
31590
|
return () => {
|
|
31530
31591
|
if (qrCountdownRef.current) clearInterval(qrCountdownRef.current);
|
|
31531
31592
|
};
|
|
@@ -31561,7 +31622,7 @@ var PersonalAssistantChannelModal = ({
|
|
|
31561
31622
|
setBindingsLoading(false);
|
|
31562
31623
|
}
|
|
31563
31624
|
}, [get]);
|
|
31564
|
-
|
|
31625
|
+
useEffect51(() => {
|
|
31565
31626
|
if (open) {
|
|
31566
31627
|
loadInstallations();
|
|
31567
31628
|
resetState();
|
|
@@ -31823,7 +31884,7 @@ var PersonalAssistantChannelModal = ({
|
|
|
31823
31884
|
Button56,
|
|
31824
31885
|
{
|
|
31825
31886
|
block: true,
|
|
31826
|
-
icon: /* @__PURE__ */ jsx119(
|
|
31887
|
+
icon: /* @__PURE__ */ jsx119(MessagesSquare, { size: 14 }),
|
|
31827
31888
|
onClick: openCreateForm,
|
|
31828
31889
|
children: "Connect"
|
|
31829
31890
|
}
|
|
@@ -31832,7 +31893,7 @@ var PersonalAssistantChannelModal = ({
|
|
|
31832
31893
|
const renderRightContent = () => {
|
|
31833
31894
|
if (formMode === "view" && !selectedId) {
|
|
31834
31895
|
return /* @__PURE__ */ jsxs86("div", { className: styles.emptyState, children: [
|
|
31835
|
-
/* @__PURE__ */ jsx119(
|
|
31896
|
+
/* @__PURE__ */ jsx119(MessagesSquare, { size: 40, style: { opacity: 0.25, marginBottom: 16 } }),
|
|
31836
31897
|
/* @__PURE__ */ jsx119(Text49, { style: { fontSize: 14, color: "var(--color-text-secondary, #666)" }, children: "Select a channel from the left or add a new one" })
|
|
31837
31898
|
] });
|
|
31838
31899
|
}
|
|
@@ -31894,7 +31955,7 @@ var PersonalAssistantChannelModal = ({
|
|
|
31894
31955
|
Button56,
|
|
31895
31956
|
{
|
|
31896
31957
|
type: "primary",
|
|
31897
|
-
icon: /* @__PURE__ */ jsx119(
|
|
31958
|
+
icon: /* @__PURE__ */ jsx119(MessagesSquare, { size: 14 }),
|
|
31898
31959
|
loading: qrLoading,
|
|
31899
31960
|
onClick: fetchQrCode,
|
|
31900
31961
|
children: "Get QR Code"
|
|
@@ -32083,7 +32144,7 @@ var PersonalAssistantChannelModal = ({
|
|
|
32083
32144
|
const isEdit = formMode === "edit" && selectedId !== null;
|
|
32084
32145
|
return /* @__PURE__ */ jsxs86("div", { className: styles.footer, children: [
|
|
32085
32146
|
/* @__PURE__ */ jsx119("div", { children: isEdit && /* @__PURE__ */ jsx119(
|
|
32086
|
-
|
|
32147
|
+
Popconfirm12,
|
|
32087
32148
|
{
|
|
32088
32149
|
title: "Remove this channel?",
|
|
32089
32150
|
description: "All bindings for this installation will also be lost.",
|
|
@@ -32104,7 +32165,7 @@ var PersonalAssistantChannelModal = ({
|
|
|
32104
32165
|
Modal20,
|
|
32105
32166
|
{
|
|
32106
32167
|
title: /* @__PURE__ */ jsxs86("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
32107
|
-
/* @__PURE__ */ jsx119(
|
|
32168
|
+
/* @__PURE__ */ jsx119(MessagesSquare, { size: 18 }),
|
|
32108
32169
|
/* @__PURE__ */ jsx119("span", { children: "Connect Channels" })
|
|
32109
32170
|
] }),
|
|
32110
32171
|
open,
|
|
@@ -32125,7 +32186,7 @@ var PersonalAssistantChannelModal = ({
|
|
|
32125
32186
|
|
|
32126
32187
|
// src/components/Chat/PersonalAssistantPage.tsx
|
|
32127
32188
|
import { Fragment as Fragment24, jsx as jsx120, jsxs as jsxs87 } from "react/jsx-runtime";
|
|
32128
|
-
var { Title:
|
|
32189
|
+
var { Title: Title17, Text: Text50, Paragraph: Paragraph4 } = Typography61;
|
|
32129
32190
|
var useStyles20 = createStyles36(({ css, token }) => ({
|
|
32130
32191
|
container: css` display: flex; flex-direction: column; height: 100%; padding: 24px; overflow-y: auto; `,
|
|
32131
32192
|
setupWrap: css` max-width: 520px; margin: 30px auto 0; `,
|
|
@@ -32228,7 +32289,7 @@ var PersonalAssistantPage = () => {
|
|
|
32228
32289
|
return created.data.id;
|
|
32229
32290
|
}, [get, post, workspaceId, projectId]);
|
|
32230
32291
|
const lastDate = useRef28("");
|
|
32231
|
-
|
|
32292
|
+
useEffect52(() => {
|
|
32232
32293
|
if (!assistantId) return;
|
|
32233
32294
|
let timer;
|
|
32234
32295
|
const enter = () => {
|
|
@@ -32310,7 +32371,7 @@ var PersonalAssistantPage = () => {
|
|
|
32310
32371
|
HeaderIconButton,
|
|
32311
32372
|
{
|
|
32312
32373
|
ariaLabel: "Channel settings",
|
|
32313
|
-
icon: /* @__PURE__ */ jsx120(
|
|
32374
|
+
icon: /* @__PURE__ */ jsx120(MessagesSquare2, { size: 16 }),
|
|
32314
32375
|
onClick: () => setChannelModalOpen(true)
|
|
32315
32376
|
}
|
|
32316
32377
|
),
|
|
@@ -32335,7 +32396,7 @@ var PersonalAssistantPage = () => {
|
|
|
32335
32396
|
/* @__PURE__ */ jsx120("div", { className: styles.stepIndicator, children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx120("div", { className: `${styles.stepDot} ${i === step ? styles.stepDotActive : i < step ? styles.stepDotDone : styles.stepDotPending}` }, i)) }),
|
|
32336
32397
|
step === 0 && /* @__PURE__ */ jsxs87(Card29, { className: styles.card, children: [
|
|
32337
32398
|
/* @__PURE__ */ jsx120("div", { className: styles.avatar, children: /* @__PURE__ */ jsx120(Sparkles3, { size: 26 }) }),
|
|
32338
|
-
/* @__PURE__ */ jsx120(
|
|
32399
|
+
/* @__PURE__ */ jsx120(Title17, { level: 3, style: { textAlign: "center", margin: "0 0 4px" }, children: "What would you like to call them?" }),
|
|
32339
32400
|
/* @__PURE__ */ jsx120(Paragraph4, { type: "secondary", style: { textAlign: "center", margin: "0 0 24px" }, children: "This is the name you'll use every day \u2014 your go-to nickname for your AI sidekick." }),
|
|
32340
32401
|
/* @__PURE__ */ jsx120(
|
|
32341
32402
|
Input18,
|
|
@@ -32353,7 +32414,7 @@ var PersonalAssistantPage = () => {
|
|
|
32353
32414
|
] }),
|
|
32354
32415
|
step === 1 && /* @__PURE__ */ jsxs87(Card29, { className: styles.card, children: [
|
|
32355
32416
|
/* @__PURE__ */ jsx120("div", { className: styles.avatar, children: /* @__PURE__ */ jsx120(Smile, { size: 26 }) }),
|
|
32356
|
-
/* @__PURE__ */ jsx120(
|
|
32417
|
+
/* @__PURE__ */ jsx120(Title17, { level: 3, style: { textAlign: "center", margin: "0 0 4px" }, children: "What's their vibe?" }),
|
|
32357
32418
|
/* @__PURE__ */ jsx120(Paragraph4, { type: "secondary", style: { textAlign: "center", margin: "0 0 20px" }, children: "Pick the personality that feels right. This shapes how they talk and support you." }),
|
|
32358
32419
|
/* @__PURE__ */ jsx120("div", { className: styles.personalityGrid, children: PERSONALITIES.map((p) => /* @__PURE__ */ jsxs87(
|
|
32359
32420
|
"div",
|
|
@@ -32391,7 +32452,7 @@ var PersonalAssistantPage = () => {
|
|
|
32391
32452
|
] }),
|
|
32392
32453
|
step === 2 && /* @__PURE__ */ jsxs87(Card29, { className: styles.card, children: [
|
|
32393
32454
|
/* @__PURE__ */ jsx120("div", { className: styles.avatar, children: /* @__PURE__ */ jsx120(Bot4, { size: 26 }) }),
|
|
32394
|
-
/* @__PURE__ */ jsx120(
|
|
32455
|
+
/* @__PURE__ */ jsx120(Title17, { level: 3, style: { textAlign: "center", margin: "0 0 4px" }, children: "Almost ready!" }),
|
|
32395
32456
|
/* @__PURE__ */ jsx120(Paragraph4, { type: "secondary", style: { textAlign: "center", margin: "0 0 24px" }, children: "Your assistant will have private memory and learn about you over time." }),
|
|
32396
32457
|
/* @__PURE__ */ jsxs87(Card29, { size: "small", style: { background: "#fafafa", borderRadius: 12, marginBottom: 20 }, children: [
|
|
32397
32458
|
/* @__PURE__ */ jsx120(Text50, { type: "secondary", style: { fontSize: 12, textTransform: "uppercase", letterSpacing: 1 }, children: "Name" }),
|
|
@@ -32500,7 +32561,7 @@ var FileView = ({ parsed }) => {
|
|
|
32500
32561
|
const baseURL = shellConfig?.baseURL ?? "";
|
|
32501
32562
|
const resourcePath = decodeURIComponent(parsed.payload);
|
|
32502
32563
|
const params = new URLSearchParams({
|
|
32503
|
-
path: `/${resourcePath}`
|
|
32564
|
+
path: resourcePath.startsWith("/") ? resourcePath : `/${resourcePath}`
|
|
32504
32565
|
});
|
|
32505
32566
|
if (parsed.assistantId) params.set("assistantId", parsed.assistantId);
|
|
32506
32567
|
const url = `${baseURL}/api/workspaces/${parsed.workspaceId}/projects/${parsed.projectId}/viewfile?${params}`;
|
|
@@ -32568,15 +32629,14 @@ var CustomMenuPage = ({ component_key }) => {
|
|
|
32568
32629
|
};
|
|
32569
32630
|
|
|
32570
32631
|
// src/components/Chat/SharesPage.tsx
|
|
32571
|
-
import { useEffect as
|
|
32572
|
-
import { Table as Table5, Button as Button58, Dropdown as Dropdown4, message as message21, Modal as Modal22, Tag as
|
|
32573
|
-
import { CopyOutlined as CopyOutlined4, StopOutlined as
|
|
32632
|
+
import { useEffect as useEffect53, useState as useState78 } from "react";
|
|
32633
|
+
import { Table as Table5, Button as Button58, Dropdown as Dropdown4, message as message21, Modal as Modal22, Tag as Tag30, Typography as Typography62 } from "antd";
|
|
32634
|
+
import { CopyOutlined as CopyOutlined4, StopOutlined as StopOutlined3, MoreOutlined as MoreOutlined3 } from "@ant-design/icons";
|
|
32574
32635
|
import { jsx as jsx123, jsxs as jsxs89 } from "react/jsx-runtime";
|
|
32575
32636
|
var { Text: Text51 } = Typography62;
|
|
32576
32637
|
var SharesPage = ({ client }) => {
|
|
32577
32638
|
const [shares, setShares] = useState78([]);
|
|
32578
32639
|
const [loading, setLoading] = useState78(true);
|
|
32579
|
-
const [editingShare, setEditingShare] = useState78(null);
|
|
32580
32640
|
const loadShares = async () => {
|
|
32581
32641
|
setLoading(true);
|
|
32582
32642
|
try {
|
|
@@ -32587,11 +32647,18 @@ var SharesPage = ({ client }) => {
|
|
|
32587
32647
|
}
|
|
32588
32648
|
setLoading(false);
|
|
32589
32649
|
};
|
|
32590
|
-
|
|
32650
|
+
useEffect53(() => {
|
|
32591
32651
|
loadShares();
|
|
32592
32652
|
}, []);
|
|
32593
|
-
const handleCopy = (
|
|
32594
|
-
|
|
32653
|
+
const handleCopy = (record) => {
|
|
32654
|
+
const baseURL = client.baseURL ?? "";
|
|
32655
|
+
const fullUrl = `${baseURL.replace(/\/$/, "")}/s/${record.token}`;
|
|
32656
|
+
const titleText = record.title ? `${record.title}
|
|
32657
|
+
` : `${record.address.resourcePath.split("/").pop() || "file"}
|
|
32658
|
+
`;
|
|
32659
|
+
const pwdText = record.visibility === "password" ? "Password protected\n" : "";
|
|
32660
|
+
navigator.clipboard.writeText(`${titleText}${fullUrl}
|
|
32661
|
+
${pwdText}`.trim());
|
|
32595
32662
|
message21.success("Copied");
|
|
32596
32663
|
};
|
|
32597
32664
|
const handleRevoke = async (token) => {
|
|
@@ -32625,9 +32692,9 @@ var SharesPage = ({ client }) => {
|
|
|
32625
32692
|
title: "Status",
|
|
32626
32693
|
key: "status",
|
|
32627
32694
|
render: (_, r) => {
|
|
32628
|
-
if (r.revoked) return /* @__PURE__ */ jsx123(
|
|
32629
|
-
if (r.expiresAt && new Date(r.expiresAt) < /* @__PURE__ */ new Date()) return /* @__PURE__ */ jsx123(
|
|
32630
|
-
return /* @__PURE__ */ jsx123(
|
|
32695
|
+
if (r.revoked) return /* @__PURE__ */ jsx123(Tag30, { color: "red", children: "Revoked" });
|
|
32696
|
+
if (r.expiresAt && new Date(r.expiresAt) < /* @__PURE__ */ new Date()) return /* @__PURE__ */ jsx123(Tag30, { color: "orange", children: "Expired" });
|
|
32697
|
+
return /* @__PURE__ */ jsx123(Tag30, { color: "green", children: "Active" });
|
|
32631
32698
|
}
|
|
32632
32699
|
},
|
|
32633
32700
|
{
|
|
@@ -32644,24 +32711,12 @@ var SharesPage = ({ client }) => {
|
|
|
32644
32711
|
key: "copy",
|
|
32645
32712
|
icon: /* @__PURE__ */ jsx123(CopyOutlined4, {}),
|
|
32646
32713
|
label: "Copy Link",
|
|
32647
|
-
onClick: () => handleCopy(
|
|
32714
|
+
onClick: () => handleCopy(r)
|
|
32648
32715
|
},
|
|
32649
32716
|
...r.revoked ? [] : [
|
|
32650
|
-
{
|
|
32651
|
-
key: "edit",
|
|
32652
|
-
icon: /* @__PURE__ */ jsx123(EditOutlined, {}),
|
|
32653
|
-
label: "Edit",
|
|
32654
|
-
onClick: () => setEditingShare({
|
|
32655
|
-
token: r.token,
|
|
32656
|
-
path: r.address.resourcePath,
|
|
32657
|
-
assistantId: r.assistantId ?? void 0,
|
|
32658
|
-
visibility: r.visibility,
|
|
32659
|
-
title: r.title ?? void 0
|
|
32660
|
-
})
|
|
32661
|
-
},
|
|
32662
32717
|
{
|
|
32663
32718
|
key: "revoke",
|
|
32664
|
-
icon: /* @__PURE__ */ jsx123(
|
|
32719
|
+
icon: /* @__PURE__ */ jsx123(StopOutlined3, {}),
|
|
32665
32720
|
label: "Revoke",
|
|
32666
32721
|
danger: true,
|
|
32667
32722
|
onClick: () => handleRevoke(r.token)
|
|
@@ -32672,20 +32727,7 @@ var SharesPage = ({ client }) => {
|
|
|
32672
32727
|
];
|
|
32673
32728
|
return /* @__PURE__ */ jsxs89("div", { style: { padding: 24 }, children: [
|
|
32674
32729
|
/* @__PURE__ */ jsx123(Typography62.Title, { level: 4, children: "My Shares" }),
|
|
32675
|
-
/* @__PURE__ */ jsx123(Table5, { dataSource: shares, columns, rowKey: "token", loading, pagination: { pageSize: 20 } })
|
|
32676
|
-
editingShare && /* @__PURE__ */ jsx123(
|
|
32677
|
-
ShareModal,
|
|
32678
|
-
{
|
|
32679
|
-
open: true,
|
|
32680
|
-
filePath: editingShare.path,
|
|
32681
|
-
assistantId: editingShare.assistantId,
|
|
32682
|
-
existingToken: editingShare.token,
|
|
32683
|
-
existingVisibility: editingShare.visibility,
|
|
32684
|
-
existingTitle: editingShare.title,
|
|
32685
|
-
onClose: () => setEditingShare(null),
|
|
32686
|
-
onUpdated: () => loadShares()
|
|
32687
|
-
}
|
|
32688
|
-
)
|
|
32730
|
+
/* @__PURE__ */ jsx123(Table5, { dataSource: shares, columns, rowKey: "token", loading, pagination: { pageSize: 20 } })
|
|
32689
32731
|
] });
|
|
32690
32732
|
};
|
|
32691
32733
|
|
|
@@ -32697,7 +32739,7 @@ import {
|
|
|
32697
32739
|
} from "@ant-design/icons";
|
|
32698
32740
|
import { Dropdown as Dropdown5, Tooltip as Tooltip25 } from "antd";
|
|
32699
32741
|
import { createStyles as createStyles37 } from "antd-style";
|
|
32700
|
-
import { useEffect as
|
|
32742
|
+
import { useEffect as useEffect54, useMemo as useMemo34, useState as useState79 } from "react";
|
|
32701
32743
|
import { Fragment as Fragment25, jsx as jsx124, jsxs as jsxs90 } from "react/jsx-runtime";
|
|
32702
32744
|
var useStyle17 = createStyles37(({ token, css }) => {
|
|
32703
32745
|
return {
|
|
@@ -32929,7 +32971,7 @@ var SideAppViewBrowser = ({ region = "side" }) => {
|
|
|
32929
32971
|
const switchTab = (key) => {
|
|
32930
32972
|
setActiveKey(key);
|
|
32931
32973
|
};
|
|
32932
|
-
|
|
32974
|
+
useEffect54(() => {
|
|
32933
32975
|
if (!selectedCard) return;
|
|
32934
32976
|
const key = JSON.stringify(selectedCard);
|
|
32935
32977
|
if (items.find((item) => item.key === key)) {
|
|
@@ -33169,7 +33211,7 @@ var WorkspaceResourceManager = ({
|
|
|
33169
33211
|
const { openContentApp, menuCollapsed, setMenuCollapsed } = useChatUIContext();
|
|
33170
33212
|
const hasOpenedDefault = useRef29(false);
|
|
33171
33213
|
const hasRegistered = useRef29(false);
|
|
33172
|
-
|
|
33214
|
+
useEffect55(() => {
|
|
33173
33215
|
if (!hasRegistered.current) {
|
|
33174
33216
|
hasRegistered.current = true;
|
|
33175
33217
|
regsiterElement("workspace_projects", {
|
|
@@ -33240,7 +33282,7 @@ var WorkspaceResourceManager = ({
|
|
|
33240
33282
|
const [tenantModalOpen, setTenantModalOpen] = useState80(false);
|
|
33241
33283
|
const [changePasswordOpen, setChangePasswordOpen] = useState80(false);
|
|
33242
33284
|
const [fetchedCustomMenuItems, setFetchedCustomMenuItems] = useState80([]);
|
|
33243
|
-
|
|
33285
|
+
useEffect55(() => {
|
|
33244
33286
|
const fetchCustomMenu = async () => {
|
|
33245
33287
|
try {
|
|
33246
33288
|
const json = await get("/api/menu-items?menuTarget=workspace");
|
|
@@ -33253,7 +33295,7 @@ var WorkspaceResourceManager = ({
|
|
|
33253
33295
|
};
|
|
33254
33296
|
fetchCustomMenu();
|
|
33255
33297
|
}, [get]);
|
|
33256
|
-
|
|
33298
|
+
useEffect55(() => {
|
|
33257
33299
|
for (const item of fetchedCustomMenuItems) {
|
|
33258
33300
|
regsiterElement(item.id, {
|
|
33259
33301
|
card_view: () => null,
|
|
@@ -33298,7 +33340,7 @@ var WorkspaceResourceManager = ({
|
|
|
33298
33340
|
});
|
|
33299
33341
|
}
|
|
33300
33342
|
};
|
|
33301
|
-
|
|
33343
|
+
useEffect55(() => {
|
|
33302
33344
|
if (!hasOpenedDefault.current && menuItems.length > 0) {
|
|
33303
33345
|
hasOpenedDefault.current = true;
|
|
33304
33346
|
const firstRoute = menuItems.find((item) => item.type === "route");
|
|
@@ -33522,7 +33564,7 @@ var WorkspaceContextProvider = ({
|
|
|
33522
33564
|
Client3.setWorkspaceContext(wsId || void 0, pjId || void 0);
|
|
33523
33565
|
}
|
|
33524
33566
|
}, []);
|
|
33525
|
-
|
|
33567
|
+
useEffect56(() => {
|
|
33526
33568
|
Client3.setWorkspaceContext(workspaceId || void 0, projectId || void 0);
|
|
33527
33569
|
}, [workspaceId, projectId]);
|
|
33528
33570
|
const [workspaces, setWorkspaces] = useState81([]);
|
|
@@ -33549,7 +33591,7 @@ var WorkspaceContextProvider = ({
|
|
|
33549
33591
|
setWorkspaces([]);
|
|
33550
33592
|
resetSelectedWorkspace();
|
|
33551
33593
|
}, [resetSelectedWorkspace, setWorkspaces]);
|
|
33552
|
-
|
|
33594
|
+
useEffect56(() => {
|
|
33553
33595
|
resetWS();
|
|
33554
33596
|
refreshWorkspaces();
|
|
33555
33597
|
}, [tenantId]);
|
|
@@ -33582,29 +33624,29 @@ var WorkspaceContextProvider = ({
|
|
|
33582
33624
|
setLoading(false);
|
|
33583
33625
|
}
|
|
33584
33626
|
}, [client, workspaceId]);
|
|
33585
|
-
|
|
33627
|
+
useEffect56(() => {
|
|
33586
33628
|
if (workspaceId && typeof window !== "undefined") {
|
|
33587
33629
|
sessionStorage.setItem("workspaceId", workspaceId);
|
|
33588
33630
|
}
|
|
33589
33631
|
}, [workspaceId]);
|
|
33590
|
-
|
|
33632
|
+
useEffect56(() => {
|
|
33591
33633
|
if (projectId && typeof window !== "undefined") {
|
|
33592
33634
|
sessionStorage.setItem("projectId", projectId);
|
|
33593
33635
|
}
|
|
33594
33636
|
}, [projectId]);
|
|
33595
|
-
|
|
33637
|
+
useEffect56(() => {
|
|
33596
33638
|
refreshWorkspaces().catch((err) => {
|
|
33597
33639
|
console.warn("Failed to load workspaces:", err);
|
|
33598
33640
|
});
|
|
33599
33641
|
}, [refreshWorkspaces]);
|
|
33600
|
-
|
|
33642
|
+
useEffect56(() => {
|
|
33601
33643
|
if (workspaces.length > 0 && !workspaceId) {
|
|
33602
33644
|
const firstWorkspace = workspaces[0];
|
|
33603
33645
|
setWorkspaceId(firstWorkspace.id);
|
|
33604
33646
|
}
|
|
33605
33647
|
}, [workspaces, workspaceId]);
|
|
33606
33648
|
const prevWorkspaceId = useRef30(workspaceId);
|
|
33607
|
-
|
|
33649
|
+
useEffect56(() => {
|
|
33608
33650
|
if (workspaceId) {
|
|
33609
33651
|
refreshProjects(workspaceId);
|
|
33610
33652
|
} else {
|
|
@@ -33793,6 +33835,18 @@ var WorkspaceContextProvider = ({
|
|
|
33793
33835
|
},
|
|
33794
33836
|
[client, workspaceId, projectId]
|
|
33795
33837
|
);
|
|
33838
|
+
const listShares = useCallback41(
|
|
33839
|
+
async () => {
|
|
33840
|
+
return client.resources.listShares();
|
|
33841
|
+
},
|
|
33842
|
+
[client]
|
|
33843
|
+
);
|
|
33844
|
+
const unshareFile = useCallback41(
|
|
33845
|
+
async (token) => {
|
|
33846
|
+
await client.resources.unshare(token);
|
|
33847
|
+
},
|
|
33848
|
+
[client]
|
|
33849
|
+
);
|
|
33796
33850
|
const value = {
|
|
33797
33851
|
workspaceId,
|
|
33798
33852
|
projectId,
|
|
@@ -33815,7 +33869,9 @@ var WorkspaceContextProvider = ({
|
|
|
33815
33869
|
uploadFile,
|
|
33816
33870
|
uploadFileToFolder,
|
|
33817
33871
|
getFileViewUrl,
|
|
33818
|
-
shareFile
|
|
33872
|
+
shareFile,
|
|
33873
|
+
listShares,
|
|
33874
|
+
unshareFile
|
|
33819
33875
|
};
|
|
33820
33876
|
const currentWorkspace = workspaces.find((w) => w.id === workspaceId);
|
|
33821
33877
|
const workspaceName = currentWorkspace?.name;
|
|
@@ -33843,7 +33899,15 @@ var MODAL_BODY_STYLE = {
|
|
|
33843
33899
|
flexDirection: "column",
|
|
33844
33900
|
gap: 12
|
|
33845
33901
|
};
|
|
33846
|
-
var PinToMenuButton = ({
|
|
33902
|
+
var PinToMenuButton = ({
|
|
33903
|
+
assistantId,
|
|
33904
|
+
contentType = "agent",
|
|
33905
|
+
contentConfig: externalContentConfig,
|
|
33906
|
+
isMatch,
|
|
33907
|
+
size = "small",
|
|
33908
|
+
label,
|
|
33909
|
+
block
|
|
33910
|
+
}) => {
|
|
33847
33911
|
const workspaceCtx = React74.useContext(WorkspaceContext);
|
|
33848
33912
|
const { config } = useLatticeChatShellContext();
|
|
33849
33913
|
const { post, get, del } = useApi();
|
|
@@ -33854,8 +33918,9 @@ var PinToMenuButton = ({ assistantId }) => {
|
|
|
33854
33918
|
const [isPinned, setIsPinned] = useState82(false);
|
|
33855
33919
|
const [pinnedItemId, setPinnedItemId] = useState82(null);
|
|
33856
33920
|
const [checking, setChecking] = useState82(true);
|
|
33921
|
+
const hasTarget = contentType === "agent" ? !!assistantId : !!externalContentConfig;
|
|
33857
33922
|
const checkPinned = useCallback42(async () => {
|
|
33858
|
-
if (!
|
|
33923
|
+
if (!hasTarget || !config.enableCustomMenu) {
|
|
33859
33924
|
setChecking(false);
|
|
33860
33925
|
return;
|
|
33861
33926
|
}
|
|
@@ -33865,8 +33930,11 @@ var PinToMenuButton = ({ assistantId }) => {
|
|
|
33865
33930
|
"/api/menu-items?menuTarget=workspace"
|
|
33866
33931
|
);
|
|
33867
33932
|
if (json.success && json.data?.records) {
|
|
33933
|
+
const matchFn = isMatch ?? ((cfg) => {
|
|
33934
|
+
return contentType === "agent" && cfg.agentId === assistantId;
|
|
33935
|
+
});
|
|
33868
33936
|
const pinned = json.data.records.find(
|
|
33869
|
-
(item) => item.
|
|
33937
|
+
(item) => item.contentType === contentType && matchFn(item.contentConfig)
|
|
33870
33938
|
);
|
|
33871
33939
|
if (pinned) {
|
|
33872
33940
|
setIsPinned(true);
|
|
@@ -33880,11 +33948,11 @@ var PinToMenuButton = ({ assistantId }) => {
|
|
|
33880
33948
|
} finally {
|
|
33881
33949
|
setChecking(false);
|
|
33882
33950
|
}
|
|
33883
|
-
}, [
|
|
33884
|
-
|
|
33951
|
+
}, [hasTarget, config.enableCustomMenu, get, contentType, assistantId, isMatch]);
|
|
33952
|
+
useEffect57(() => {
|
|
33885
33953
|
checkPinned();
|
|
33886
33954
|
}, [checkPinned]);
|
|
33887
|
-
if (!
|
|
33955
|
+
if (!hasTarget || !config.enableCustomMenu) return null;
|
|
33888
33956
|
const handlePin = async () => {
|
|
33889
33957
|
if (!name.trim()) {
|
|
33890
33958
|
message22.warning("Please enter a menu name");
|
|
@@ -33892,14 +33960,19 @@ var PinToMenuButton = ({ assistantId }) => {
|
|
|
33892
33960
|
}
|
|
33893
33961
|
setLoading(true);
|
|
33894
33962
|
try {
|
|
33963
|
+
const contentConfig = contentType === "agent" ? {
|
|
33964
|
+
agentId: assistantId,
|
|
33965
|
+
workspaceId: workspaceCtx?.workspaceId || void 0,
|
|
33966
|
+
projectId: workspaceCtx?.projectId || void 0
|
|
33967
|
+
} : {
|
|
33968
|
+
...externalContentConfig,
|
|
33969
|
+
workspaceId: workspaceCtx?.workspaceId || void 0,
|
|
33970
|
+
projectId: workspaceCtx?.projectId || void 0
|
|
33971
|
+
};
|
|
33895
33972
|
const body = {
|
|
33896
33973
|
menuTarget: "workspace",
|
|
33897
|
-
contentType
|
|
33898
|
-
contentConfig
|
|
33899
|
-
agentId: assistantId,
|
|
33900
|
-
workspaceId: workspaceCtx?.workspaceId || void 0,
|
|
33901
|
-
projectId: workspaceCtx?.projectId || void 0
|
|
33902
|
-
},
|
|
33974
|
+
contentType,
|
|
33975
|
+
contentConfig,
|
|
33903
33976
|
group: group.trim() || void 0,
|
|
33904
33977
|
name: name.trim(),
|
|
33905
33978
|
sortOrder: 0
|
|
@@ -33946,11 +34019,23 @@ var PinToMenuButton = ({ assistantId }) => {
|
|
|
33946
34019
|
}
|
|
33947
34020
|
};
|
|
33948
34021
|
return /* @__PURE__ */ jsxs92(Fragment26, { children: [
|
|
33949
|
-
/* @__PURE__ */ jsx127(Tooltip26, { title: isPinned ? "Unpin from Menu" : "Pin to Menu", children: /* @__PURE__ */ jsx127(
|
|
34022
|
+
/* @__PURE__ */ jsx127(Tooltip26, { title: isPinned ? "Unpin from Menu" : "Pin to Menu", children: label ? /* @__PURE__ */ jsx127(
|
|
33950
34023
|
Button60,
|
|
33951
34024
|
{
|
|
33952
34025
|
type: "text",
|
|
33953
|
-
size
|
|
34026
|
+
size,
|
|
34027
|
+
block,
|
|
34028
|
+
icon: isPinned ? /* @__PURE__ */ jsx127(Pin, { size: 14, fill: "currentColor" }) : /* @__PURE__ */ jsx127(Pin, { size: 14 }),
|
|
34029
|
+
onClick: handleClick,
|
|
34030
|
+
loading: checking || loading && isPinned,
|
|
34031
|
+
children: label
|
|
34032
|
+
}
|
|
34033
|
+
) : /* @__PURE__ */ jsx127(
|
|
34034
|
+
Button60,
|
|
34035
|
+
{
|
|
34036
|
+
type: "text",
|
|
34037
|
+
size,
|
|
34038
|
+
block,
|
|
33954
34039
|
icon: isPinned ? /* @__PURE__ */ jsx127(Pin, { size: 14, fill: "currentColor" }) : /* @__PURE__ */ jsx127(Pin, { size: 14 }),
|
|
33955
34040
|
onClick: handleClick,
|
|
33956
34041
|
loading: checking || loading && isPinned
|
|
@@ -34403,13 +34488,13 @@ var ProjectSelector = ({
|
|
|
34403
34488
|
};
|
|
34404
34489
|
|
|
34405
34490
|
// src/components/Chat/ToolPanelFiles.tsx
|
|
34406
|
-
import { useCallback as useCallback44, useEffect as
|
|
34407
|
-
import { message as
|
|
34491
|
+
import { useCallback as useCallback44, useEffect as useEffect58, useMemo as useMemo37, useState as useState85 } from "react";
|
|
34492
|
+
import { message as message24 } from "antd";
|
|
34408
34493
|
|
|
34409
34494
|
// src/components/Chat/FileDirectoryPanel.tsx
|
|
34410
34495
|
import React76, { useState as useState84 } from "react";
|
|
34411
|
-
import { Spin as Spin23, Dropdown as Dropdown6, Button as Button62
|
|
34412
|
-
import { ChevronRight as ChevronRight8, FolderOpen as FolderOpen4, Upload
|
|
34496
|
+
import { Spin as Spin23, Dropdown as Dropdown6, Button as Button62 } from "antd";
|
|
34497
|
+
import { ChevronRight as ChevronRight8, FolderOpen as FolderOpen4, Upload } from "lucide-react";
|
|
34413
34498
|
import { createStyles as createStyles39 } from "antd-style";
|
|
34414
34499
|
import { MoreOutlined as MoreOutlined5, LinkOutlined as LinkOutlined5, DownloadOutlined as DownloadOutlined4, EyeOutlined } from "@ant-design/icons";
|
|
34415
34500
|
import { Fragment as Fragment28, jsx as jsx129, jsxs as jsxs94 } from "react/jsx-runtime";
|
|
@@ -34417,6 +34502,7 @@ var useStyles22 = createStyles39(({ token, css }) => ({
|
|
|
34417
34502
|
container: css`
|
|
34418
34503
|
height: 100%;
|
|
34419
34504
|
overflow-y: auto;
|
|
34505
|
+
overflow-x: hidden;
|
|
34420
34506
|
padding: 12px;
|
|
34421
34507
|
font-size: 13px;
|
|
34422
34508
|
background: transparent;
|
|
@@ -34487,7 +34573,8 @@ var useStyles22 = createStyles39(({ token, css }) => ({
|
|
|
34487
34573
|
display: flex;
|
|
34488
34574
|
align-items: center;
|
|
34489
34575
|
gap: 8px;
|
|
34490
|
-
|
|
34576
|
+
flex: 1;
|
|
34577
|
+
min-width: 0;
|
|
34491
34578
|
padding: 5px 8px;
|
|
34492
34579
|
border-radius: 4px;
|
|
34493
34580
|
cursor: pointer;
|
|
@@ -34642,7 +34729,6 @@ var FileDirectoryPanel = ({
|
|
|
34642
34729
|
const { styles } = useStyles22();
|
|
34643
34730
|
const { currentAssistant } = useAssistantContext();
|
|
34644
34731
|
const { getFileViewUrl } = useWorkspaceContext();
|
|
34645
|
-
const { post } = useApi();
|
|
34646
34732
|
const [sharePath, setSharePath] = useState84(null);
|
|
34647
34733
|
const renderEntry = React76.useCallback((entry, depth) => {
|
|
34648
34734
|
const entryName = getEntryName(entry);
|
|
@@ -34701,6 +34787,18 @@ var FileDirectoryPanel = ({
|
|
|
34701
34787
|
]
|
|
34702
34788
|
}
|
|
34703
34789
|
),
|
|
34790
|
+
/* @__PURE__ */ jsx129(
|
|
34791
|
+
PinToMenuButton,
|
|
34792
|
+
{
|
|
34793
|
+
contentType: "file",
|
|
34794
|
+
contentConfig: {
|
|
34795
|
+
resourcePath: entry.path,
|
|
34796
|
+
assistantId: currentAssistant?.id || "",
|
|
34797
|
+
fileName: entry.path.split("/").pop() || entry.path
|
|
34798
|
+
},
|
|
34799
|
+
isMatch: (cfg) => cfg.resourcePath === entry.path
|
|
34800
|
+
}
|
|
34801
|
+
),
|
|
34704
34802
|
/* @__PURE__ */ jsx129(
|
|
34705
34803
|
Dropdown6,
|
|
34706
34804
|
{
|
|
@@ -34730,32 +34828,6 @@ var FileDirectoryPanel = ({
|
|
|
34730
34828
|
icon: /* @__PURE__ */ jsx129(LinkOutlined5, {}),
|
|
34731
34829
|
label: "Share",
|
|
34732
34830
|
onClick: () => setSharePath(entry.path)
|
|
34733
|
-
},
|
|
34734
|
-
{
|
|
34735
|
-
key: "pin",
|
|
34736
|
-
icon: /* @__PURE__ */ jsx129(Pin2, { size: 14 }),
|
|
34737
|
-
label: "Pin to Menu",
|
|
34738
|
-
onClick: async () => {
|
|
34739
|
-
try {
|
|
34740
|
-
const fileName = entry.path.split("/").pop() || entry.path;
|
|
34741
|
-
await post("/api/menu-items", {
|
|
34742
|
-
menuTarget: "workspace",
|
|
34743
|
-
contentType: "file",
|
|
34744
|
-
contentConfig: {
|
|
34745
|
-
resourcePath: entry.path,
|
|
34746
|
-
workspaceId: workspaceId || "",
|
|
34747
|
-
projectId: projectId || "",
|
|
34748
|
-
assistantId: currentAssistant?.id || "",
|
|
34749
|
-
fileName
|
|
34750
|
-
},
|
|
34751
|
-
name: fileName,
|
|
34752
|
-
sortOrder: 0
|
|
34753
|
-
});
|
|
34754
|
-
message24.success(`Pinned "${fileName}" to menu`);
|
|
34755
|
-
} catch {
|
|
34756
|
-
message24.error("Failed to pin to menu");
|
|
34757
|
-
}
|
|
34758
|
-
}
|
|
34759
34831
|
}
|
|
34760
34832
|
]
|
|
34761
34833
|
},
|
|
@@ -34912,7 +34984,7 @@ var ToolPanelFiles = () => {
|
|
|
34912
34984
|
setDirectoryLoading((prev) => ({ ...prev, [path]: false }));
|
|
34913
34985
|
}
|
|
34914
34986
|
}, [directoryExpanded, listPath, currentAssistant?.id]);
|
|
34915
|
-
|
|
34987
|
+
useEffect58(() => {
|
|
34916
34988
|
resourceFolders.forEach((folder) => {
|
|
34917
34989
|
void loadAssetsForFolder(folder, false);
|
|
34918
34990
|
});
|
|
@@ -34920,7 +34992,7 @@ var ToolPanelFiles = () => {
|
|
|
34920
34992
|
const handleAssetClick = useCallback44((asset) => {
|
|
34921
34993
|
const fileUrl = getFileViewUrl(asset.path, currentAssistant?.id);
|
|
34922
34994
|
if (!fileUrl) {
|
|
34923
|
-
|
|
34995
|
+
message24.warning("Please select a workspace and project first.");
|
|
34924
34996
|
return;
|
|
34925
34997
|
}
|
|
34926
34998
|
openSideApp({
|
|
@@ -34935,7 +35007,7 @@ var ToolPanelFiles = () => {
|
|
|
34935
35007
|
}, [getFileViewUrl, openSideApp, currentAssistant?.id]);
|
|
34936
35008
|
const handleUploadFolder = useCallback44(async (folderName) => {
|
|
34937
35009
|
if (!workspaceId || !projectId) {
|
|
34938
|
-
|
|
35010
|
+
message24.warning("Please select a workspace and project before uploading.");
|
|
34939
35011
|
return;
|
|
34940
35012
|
}
|
|
34941
35013
|
const input = document.createElement("input");
|
|
@@ -34949,14 +35021,14 @@ var ToolPanelFiles = () => {
|
|
|
34949
35021
|
setUploadingFolder(folderName);
|
|
34950
35022
|
try {
|
|
34951
35023
|
await uploadFileToFolder(folderName, file, currentAssistant?.id);
|
|
34952
|
-
|
|
35024
|
+
message24.success(`Uploaded "${file.name}" successfully`);
|
|
34953
35025
|
const folder = resourceFolders.find((item) => item.name === folderName);
|
|
34954
35026
|
if (folder) {
|
|
34955
35027
|
await loadAssetsForFolder(folder);
|
|
34956
35028
|
}
|
|
34957
35029
|
} catch (error) {
|
|
34958
35030
|
const errMsg = error instanceof Error ? error.message : "Failed to upload file";
|
|
34959
|
-
|
|
35031
|
+
message24.error(errMsg);
|
|
34960
35032
|
} finally {
|
|
34961
35033
|
setUploadingFolder(null);
|
|
34962
35034
|
input.remove();
|
|
@@ -35073,7 +35145,7 @@ import {
|
|
|
35073
35145
|
import React78, { useCallback as useCallback45 } from "react";
|
|
35074
35146
|
import { createStyles as createStyles41 } from "antd-style";
|
|
35075
35147
|
import { MessageSquare as MessageSquare4, Trash2 as Trash210 } from "lucide-react";
|
|
35076
|
-
import { message as
|
|
35148
|
+
import { message as message25, Modal as Modal26 } from "antd";
|
|
35077
35149
|
import { jsx as jsx132, jsxs as jsxs96 } from "react/jsx-runtime";
|
|
35078
35150
|
var useStyles24 = createStyles41(({ token, css }) => ({
|
|
35079
35151
|
container: css`
|
|
@@ -35196,9 +35268,9 @@ var ThreadHistoryMenuContent = () => {
|
|
|
35196
35268
|
onOk: async () => {
|
|
35197
35269
|
try {
|
|
35198
35270
|
await deleteThread(threadIdToDelete);
|
|
35199
|
-
|
|
35271
|
+
message25.success("Conversation deleted");
|
|
35200
35272
|
} catch (error) {
|
|
35201
|
-
|
|
35273
|
+
message25.error("Failed to delete conversation");
|
|
35202
35274
|
}
|
|
35203
35275
|
}
|
|
35204
35276
|
});
|
|
@@ -35557,12 +35629,12 @@ var LatticeChatView = (props) => {
|
|
|
35557
35629
|
};
|
|
35558
35630
|
|
|
35559
35631
|
// src/components/Chat/SettingsModal.tsx
|
|
35560
|
-
import { useState as useState87, useEffect as
|
|
35632
|
+
import { useState as useState87, useEffect as useEffect59, useRef as useRef32 } from "react";
|
|
35561
35633
|
import {
|
|
35562
35634
|
Modal as Modal27,
|
|
35563
35635
|
Input as Input21,
|
|
35564
35636
|
Button as Button64,
|
|
35565
|
-
message as
|
|
35637
|
+
message as message26,
|
|
35566
35638
|
notification as notification5,
|
|
35567
35639
|
Typography as Typography63,
|
|
35568
35640
|
Alert as Alert9,
|
|
@@ -35580,12 +35652,12 @@ import {
|
|
|
35580
35652
|
LinkOutlined as LinkOutlined6,
|
|
35581
35653
|
CheckCircleFilled,
|
|
35582
35654
|
CloseCircleFilled,
|
|
35583
|
-
PlusOutlined as
|
|
35655
|
+
PlusOutlined as PlusOutlined10,
|
|
35584
35656
|
CloudServerOutlined
|
|
35585
35657
|
} from "@ant-design/icons";
|
|
35586
35658
|
import { createStyles as createStyles42 } from "antd-style";
|
|
35587
35659
|
import { Fragment as Fragment31, jsx as jsx135, jsxs as jsxs98 } from "react/jsx-runtime";
|
|
35588
|
-
var { Text: Text52, Title:
|
|
35660
|
+
var { Text: Text52, Title: Title18 } = Typography63;
|
|
35589
35661
|
var { TextArea: TextArea9 } = Input21;
|
|
35590
35662
|
var useStyles25 = createStyles42(({ token, css }) => ({
|
|
35591
35663
|
// settingsModal: css`
|
|
@@ -35971,7 +36043,7 @@ var SettingsModal = ({
|
|
|
35971
36043
|
});
|
|
35972
36044
|
const [serverConfigs, setServerConfigs] = useState87({});
|
|
35973
36045
|
const connectionsRef = useRef32(connections);
|
|
35974
|
-
|
|
36046
|
+
useEffect59(() => {
|
|
35975
36047
|
connectionsRef.current = connections;
|
|
35976
36048
|
}, [connections]);
|
|
35977
36049
|
const [activeTabKey, setActiveTabKey] = useState87(
|
|
@@ -36122,7 +36194,7 @@ var SettingsModal = ({
|
|
|
36122
36194
|
}
|
|
36123
36195
|
} catch (error) {
|
|
36124
36196
|
console.error("Failed to load configuration:", error);
|
|
36125
|
-
|
|
36197
|
+
message26.error("Failed to load current configuration");
|
|
36126
36198
|
}
|
|
36127
36199
|
};
|
|
36128
36200
|
const loadModelsConfig = async (serverId) => {
|
|
@@ -36173,7 +36245,7 @@ var SettingsModal = ({
|
|
|
36173
36245
|
console.error("Failed to load models configuration:", error);
|
|
36174
36246
|
}
|
|
36175
36247
|
};
|
|
36176
|
-
|
|
36248
|
+
useEffect59(() => {
|
|
36177
36249
|
if (open && activeTabKey) {
|
|
36178
36250
|
initializeServerConfig(activeTabKey);
|
|
36179
36251
|
const connection = connections.find((c) => c.id === activeTabKey);
|
|
@@ -36182,7 +36254,7 @@ var SettingsModal = ({
|
|
|
36182
36254
|
}
|
|
36183
36255
|
}
|
|
36184
36256
|
}, [open, activeTabKey]);
|
|
36185
|
-
|
|
36257
|
+
useEffect59(() => {
|
|
36186
36258
|
if (open && activeTabKey) {
|
|
36187
36259
|
const connection = connections.find((c) => c.id === activeTabKey);
|
|
36188
36260
|
if (connection?.connected) {
|
|
@@ -36196,7 +36268,7 @@ var SettingsModal = ({
|
|
|
36196
36268
|
}, [open, activeTabKey, activeMenu]);
|
|
36197
36269
|
const handleAddServer = async () => {
|
|
36198
36270
|
if (!newServerUrl.trim()) {
|
|
36199
|
-
|
|
36271
|
+
message26.error("Please enter a server URL");
|
|
36200
36272
|
return;
|
|
36201
36273
|
}
|
|
36202
36274
|
let normalizedUrl = newServerUrl.trim();
|
|
@@ -36259,12 +36331,12 @@ var SettingsModal = ({
|
|
|
36259
36331
|
const handleSave = async () => {
|
|
36260
36332
|
const connection = connections.find((c) => c.id === activeTabKey);
|
|
36261
36333
|
if (!connection || !connection.connected) {
|
|
36262
|
-
|
|
36334
|
+
message26.error("Please connect to a server first");
|
|
36263
36335
|
return;
|
|
36264
36336
|
}
|
|
36265
36337
|
const url = connection.url;
|
|
36266
36338
|
if (!url) {
|
|
36267
|
-
|
|
36339
|
+
message26.error("Please connect to a server first");
|
|
36268
36340
|
return;
|
|
36269
36341
|
}
|
|
36270
36342
|
try {
|
|
@@ -36328,7 +36400,7 @@ var SettingsModal = ({
|
|
|
36328
36400
|
const data = await response.json();
|
|
36329
36401
|
if (response.ok && data.success) {
|
|
36330
36402
|
if (data.requiresRestart && data.requiresRestart.length > 0) {
|
|
36331
|
-
|
|
36403
|
+
message26.warning(
|
|
36332
36404
|
`Configuration saved. Please restart the server for ${data.requiresRestart.join(
|
|
36333
36405
|
", "
|
|
36334
36406
|
)} to take effect.`,
|
|
@@ -36342,12 +36414,12 @@ var SettingsModal = ({
|
|
|
36342
36414
|
}
|
|
36343
36415
|
if (data.warnings && data.warnings.length > 0) {
|
|
36344
36416
|
data.warnings.forEach((warning) => {
|
|
36345
|
-
|
|
36417
|
+
message26.warning(warning, 5);
|
|
36346
36418
|
});
|
|
36347
36419
|
}
|
|
36348
36420
|
onClose();
|
|
36349
36421
|
} else {
|
|
36350
|
-
|
|
36422
|
+
message26.error(data.error || "Failed to save configuration");
|
|
36351
36423
|
}
|
|
36352
36424
|
} else if (activeMenu === "models") {
|
|
36353
36425
|
const validModels = config.models.filter(
|
|
@@ -36372,12 +36444,12 @@ var SettingsModal = ({
|
|
|
36372
36444
|
});
|
|
36373
36445
|
onClose();
|
|
36374
36446
|
} else {
|
|
36375
|
-
|
|
36447
|
+
message26.error(data.error || "Failed to save model configuration");
|
|
36376
36448
|
}
|
|
36377
36449
|
}
|
|
36378
36450
|
} catch (error) {
|
|
36379
36451
|
console.error("Failed to save configuration:", error);
|
|
36380
|
-
|
|
36452
|
+
message26.error(error.message || "Failed to save configuration");
|
|
36381
36453
|
} finally {
|
|
36382
36454
|
setLoading(false);
|
|
36383
36455
|
}
|
|
@@ -36739,7 +36811,7 @@ QUEUE_NAME=tasks`,
|
|
|
36739
36811
|
/* @__PURE__ */ jsxs98("div", { className: styles.content, children: [
|
|
36740
36812
|
/* @__PURE__ */ jsxs98("div", { className: styles.contentHeader, children: [
|
|
36741
36813
|
/* @__PURE__ */ jsxs98("div", { className: styles.contentHeaderLeft, children: [
|
|
36742
|
-
/* @__PURE__ */ jsx135(
|
|
36814
|
+
/* @__PURE__ */ jsx135(Title18, { level: 3, className: styles.contentTitle, children: activeMenuItem?.label }),
|
|
36743
36815
|
/* @__PURE__ */ jsxs98(Text52, { className: styles.contentDescription, children: [
|
|
36744
36816
|
activeMenu === "environment" && "Manage environment variables for the gateway server",
|
|
36745
36817
|
activeMenu === "models" && "Configure and register model lattices for use by agents"
|
|
@@ -36775,14 +36847,14 @@ QUEUE_NAME=tasks`,
|
|
|
36775
36847
|
},
|
|
36776
36848
|
children: connection.connecting ? /* @__PURE__ */ jsxs98(Fragment31, { children: [
|
|
36777
36849
|
/* @__PURE__ */ jsx135(LinkOutlined6, { style: { fontSize: 64, color: "#1890ff" }, spin: true }),
|
|
36778
|
-
/* @__PURE__ */ jsx135(
|
|
36850
|
+
/* @__PURE__ */ jsx135(Title18, { level: 4, children: "Connecting..." }),
|
|
36779
36851
|
/* @__PURE__ */ jsxs98(Text52, { type: "secondary", style: { textAlign: "center" }, children: [
|
|
36780
36852
|
"Connecting to ",
|
|
36781
36853
|
connection.url
|
|
36782
36854
|
] })
|
|
36783
36855
|
] }) : /* @__PURE__ */ jsxs98(Fragment31, { children: [
|
|
36784
36856
|
/* @__PURE__ */ jsx135(LinkOutlined6, { style: { fontSize: 64, color: "#d9d9d9" } }),
|
|
36785
|
-
/* @__PURE__ */ jsx135(
|
|
36857
|
+
/* @__PURE__ */ jsx135(Title18, { level: 4, type: "secondary", children: connection.error || "Not Connected" }),
|
|
36786
36858
|
/* @__PURE__ */ jsx135(
|
|
36787
36859
|
Text52,
|
|
36788
36860
|
{
|
|
@@ -36841,7 +36913,7 @@ QUEUE_NAME=tasks`,
|
|
|
36841
36913
|
padding: "4px 8px"
|
|
36842
36914
|
},
|
|
36843
36915
|
children: [
|
|
36844
|
-
/* @__PURE__ */ jsx135(
|
|
36916
|
+
/* @__PURE__ */ jsx135(PlusOutlined10, {}),
|
|
36845
36917
|
/* @__PURE__ */ jsx135("span", { children: "Add Server" })
|
|
36846
36918
|
]
|
|
36847
36919
|
}
|
|
@@ -36962,22 +37034,22 @@ var LatticeChatShell = (props) => {
|
|
|
36962
37034
|
};
|
|
36963
37035
|
|
|
36964
37036
|
// src/components/Chat/ChannelInstallationsDrawerContent.tsx
|
|
36965
|
-
import { useEffect as
|
|
37037
|
+
import { useEffect as useEffect60, useState as useState88 } from "react";
|
|
36966
37038
|
import {
|
|
36967
37039
|
Button as Button65,
|
|
36968
37040
|
Card as Card30,
|
|
36969
37041
|
Form as Form10,
|
|
36970
37042
|
Input as Input22,
|
|
36971
37043
|
Modal as Modal28,
|
|
36972
|
-
Popconfirm as
|
|
37044
|
+
Popconfirm as Popconfirm14,
|
|
36973
37045
|
Spin as Spin24,
|
|
36974
|
-
Tag as
|
|
37046
|
+
Tag as Tag32,
|
|
36975
37047
|
Typography as Typography64,
|
|
36976
|
-
message as
|
|
37048
|
+
message as message27
|
|
36977
37049
|
} from "antd";
|
|
36978
37050
|
import { Edit2 as Edit24, Plus as Plus10, RadioTower, Trash2 as Trash211 } from "lucide-react";
|
|
36979
37051
|
import { jsx as jsx138, jsxs as jsxs100 } from "react/jsx-runtime";
|
|
36980
|
-
var { Text: Text53, Title:
|
|
37052
|
+
var { Text: Text53, Title: Title19 } = Typography64;
|
|
36981
37053
|
var ChannelInstallationsDrawerContent = () => {
|
|
36982
37054
|
const { get, post, put, del } = useApi();
|
|
36983
37055
|
const [installations, setInstallations] = useState88([]);
|
|
@@ -36994,17 +37066,17 @@ var ChannelInstallationsDrawerContent = () => {
|
|
|
36994
37066
|
setInstallations(result.data?.records ?? []);
|
|
36995
37067
|
} else {
|
|
36996
37068
|
setInstallations([]);
|
|
36997
|
-
|
|
37069
|
+
message27.error(result.message || "Failed to load channel installations");
|
|
36998
37070
|
}
|
|
36999
37071
|
} catch (error) {
|
|
37000
37072
|
console.error("Failed to load channel installations:", error);
|
|
37001
37073
|
setInstallations([]);
|
|
37002
|
-
|
|
37074
|
+
message27.error("Failed to load channel installations");
|
|
37003
37075
|
} finally {
|
|
37004
37076
|
setLoading(false);
|
|
37005
37077
|
}
|
|
37006
37078
|
};
|
|
37007
|
-
|
|
37079
|
+
useEffect60(() => {
|
|
37008
37080
|
loadInstallations();
|
|
37009
37081
|
}, []);
|
|
37010
37082
|
const handleDelete = async (installation) => {
|
|
@@ -37016,13 +37088,13 @@ var ChannelInstallationsDrawerContent = () => {
|
|
|
37016
37088
|
setInstallations(
|
|
37017
37089
|
(current) => current.filter((item) => item.id !== installation.id)
|
|
37018
37090
|
);
|
|
37019
|
-
|
|
37091
|
+
message27.success("Installation deleted");
|
|
37020
37092
|
} else {
|
|
37021
|
-
|
|
37093
|
+
message27.error(result.message || "Failed to delete installation");
|
|
37022
37094
|
}
|
|
37023
37095
|
} catch (error) {
|
|
37024
37096
|
console.error("Failed to delete channel installation:", error);
|
|
37025
|
-
|
|
37097
|
+
message27.error("Failed to delete installation");
|
|
37026
37098
|
}
|
|
37027
37099
|
};
|
|
37028
37100
|
return /* @__PURE__ */ jsxs100("div", { style: { height: "100%", display: "flex", flexDirection: "column" }, children: [
|
|
@@ -37035,7 +37107,7 @@ var ChannelInstallationsDrawerContent = () => {
|
|
|
37035
37107
|
alignItems: "center"
|
|
37036
37108
|
},
|
|
37037
37109
|
children: [
|
|
37038
|
-
/* @__PURE__ */ jsx138(
|
|
37110
|
+
/* @__PURE__ */ jsx138(Title19, { level: 5, style: { margin: 0 }, children: "Channel Installations" }),
|
|
37039
37111
|
/* @__PURE__ */ jsx138(
|
|
37040
37112
|
Button65,
|
|
37041
37113
|
{
|
|
@@ -37081,7 +37153,7 @@ var ChannelInstallationsDrawerContent = () => {
|
|
|
37081
37153
|
},
|
|
37082
37154
|
children: [
|
|
37083
37155
|
/* @__PURE__ */ jsx138(Text53, { strong: true, style: { fontSize: 15 }, children: installation.name || installation.id }),
|
|
37084
|
-
/* @__PURE__ */ jsx138(
|
|
37156
|
+
/* @__PURE__ */ jsx138(Tag32, { color: "blue", children: installation.channel })
|
|
37085
37157
|
]
|
|
37086
37158
|
}
|
|
37087
37159
|
),
|
|
@@ -37116,7 +37188,7 @@ var ChannelInstallationsDrawerContent = () => {
|
|
|
37116
37188
|
}
|
|
37117
37189
|
),
|
|
37118
37190
|
/* @__PURE__ */ jsx138(
|
|
37119
|
-
|
|
37191
|
+
Popconfirm14,
|
|
37120
37192
|
{
|
|
37121
37193
|
title: "Delete Channel Installation",
|
|
37122
37194
|
description: `Are you sure you want to delete "${installation.name || installation.id}"?`,
|
|
@@ -37152,7 +37224,7 @@ var ChannelInstallationsDrawerContent = () => {
|
|
|
37152
37224
|
};
|
|
37153
37225
|
var LarkChannelInstallationFormModal = ({ installation, open, post, put, onCancel, onSave }) => {
|
|
37154
37226
|
const [form] = Form10.useForm();
|
|
37155
|
-
|
|
37227
|
+
useEffect60(() => {
|
|
37156
37228
|
if (installation) {
|
|
37157
37229
|
const config = installation.config;
|
|
37158
37230
|
form.setFieldsValue({
|
|
@@ -37185,10 +37257,10 @@ var LarkChannelInstallationFormModal = ({ installation, open, post, put, onCance
|
|
|
37185
37257
|
payload2
|
|
37186
37258
|
);
|
|
37187
37259
|
if (result2.success) {
|
|
37188
|
-
|
|
37260
|
+
message27.success("Installation updated");
|
|
37189
37261
|
onSave();
|
|
37190
37262
|
} else {
|
|
37191
|
-
|
|
37263
|
+
message27.error(result2.message || "Failed to update installation");
|
|
37192
37264
|
}
|
|
37193
37265
|
return;
|
|
37194
37266
|
}
|
|
@@ -37202,14 +37274,14 @@ var LarkChannelInstallationFormModal = ({ installation, open, post, put, onCance
|
|
|
37202
37274
|
payload
|
|
37203
37275
|
);
|
|
37204
37276
|
if (result.success) {
|
|
37205
|
-
|
|
37277
|
+
message27.success("Installation created");
|
|
37206
37278
|
onSave();
|
|
37207
37279
|
} else {
|
|
37208
|
-
|
|
37280
|
+
message27.error(result.message || "Failed to create installation");
|
|
37209
37281
|
}
|
|
37210
37282
|
} catch (error) {
|
|
37211
37283
|
console.error("Failed to save channel installation:", error);
|
|
37212
|
-
|
|
37284
|
+
message27.error(
|
|
37213
37285
|
installation ? "Failed to update installation" : "Failed to create installation"
|
|
37214
37286
|
);
|
|
37215
37287
|
}
|