@blocklet/pages-kit 0.2.340 → 0.2.342
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/lib/cjs/builtin/async/ai-runtime/api/agent.js +3 -5
- package/lib/cjs/builtin/async/ai-runtime/api/message.js +2 -4
- package/lib/cjs/builtin/async/ai-runtime/api/request.js +5 -1
- package/lib/cjs/builtin/async/ai-runtime/api/{subscription.js → secret.js} +7 -15
- package/lib/cjs/builtin/async/ai-runtime/api/session.js +9 -10
- package/lib/cjs/builtin/async/ai-runtime/components/AgentErrorBoundary.js +27 -0
- package/lib/cjs/builtin/async/ai-runtime/components/AgentSettings/AgentSettingsDialog.js +80 -0
- package/lib/cjs/builtin/async/ai-runtime/components/PopperMenuButton/LoadingMenuItem.js +1 -1
- package/lib/cjs/builtin/async/ai-runtime/components/ShareActions/index.js +10 -10
- package/lib/cjs/builtin/async/ai-runtime/constants.js +2 -1
- package/lib/cjs/builtin/async/ai-runtime/contexts/CurrentAgent.js +2 -2
- package/lib/cjs/builtin/async/ai-runtime/contexts/Runtime.js +4 -3
- package/lib/cjs/builtin/async/ai-runtime/hooks/use-agent-admin.js +11 -0
- package/lib/cjs/builtin/async/ai-runtime/hooks/use-header-menu.js +10 -2
- package/lib/cjs/builtin/async/ai-runtime/locales/index.js +4 -0
- package/lib/cjs/builtin/async/ai-runtime/runtime/Runtime/index.js +5 -4
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/AutoForm/index.js +26 -57
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/ChatOutput/MessageItemView.js +10 -19
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/ChatOutput/index.js +2 -2
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/GoogleSearch/GoogleSearchRelatedQuestionsView.js +1 -1
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/PhotoGallery/index.js +3 -3
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/PhotoGalleryItem/index.js +5 -5
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimpleChat/MessageView.js +5 -4
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimpleChat/MessagesView.js +1 -1
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimpleChat/UserMessageView.js +2 -2
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimpleOutput/index.js +5 -4
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimplePage/index.js +2 -2
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/SuggestedQuestionsView/index.js +2 -2
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/V0/Input.js +1 -1
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/V0/Output.js +5 -5
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/V0/Page.js +7 -7
- package/lib/cjs/builtin/async/ai-runtime/runtime-components/V0/components/CodePreview.js +8 -8
- package/lib/cjs/builtin/async/ai-runtime/state/agent.js +7 -8
- package/lib/cjs/builtin/async/ai-runtime/state/runtime.js +5 -5
- package/lib/cjs/builtin/async/ai-runtime/state/session.js +15 -17
- package/lib/cjs/builtin/page/header.js +3 -3
- package/lib/cjs/components/CustomComponentRenderer/index.js +1 -1
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/builtin/async/ai-runtime/api/agent.js +4 -6
- package/lib/esm/builtin/async/ai-runtime/api/message.js +3 -5
- package/lib/esm/builtin/async/ai-runtime/api/request.js +3 -0
- package/lib/esm/builtin/async/ai-runtime/api/{subscription.js → secret.js} +7 -14
- package/lib/esm/builtin/async/ai-runtime/api/session.js +10 -11
- package/lib/esm/builtin/async/ai-runtime/components/AgentErrorBoundary.js +22 -0
- package/lib/esm/builtin/async/ai-runtime/components/AgentSettings/AgentSettingsDialog.js +76 -0
- package/lib/esm/builtin/async/ai-runtime/components/PopperMenuButton/LoadingMenuItem.js +1 -1
- package/lib/esm/builtin/async/ai-runtime/components/ShareActions/index.js +10 -10
- package/lib/esm/builtin/async/ai-runtime/constants.js +1 -0
- package/lib/esm/builtin/async/ai-runtime/contexts/CurrentAgent.js +2 -2
- package/lib/esm/builtin/async/ai-runtime/contexts/Runtime.js +4 -3
- package/lib/esm/builtin/async/ai-runtime/hooks/use-agent-admin.js +7 -0
- package/lib/esm/builtin/async/ai-runtime/hooks/use-header-menu.js +11 -3
- package/lib/esm/builtin/async/ai-runtime/locales/index.js +4 -0
- package/lib/esm/builtin/async/ai-runtime/runtime/Runtime/index.js +5 -4
- package/lib/esm/builtin/async/ai-runtime/runtime-components/AutoForm/index.js +27 -58
- package/lib/esm/builtin/async/ai-runtime/runtime-components/ChatOutput/MessageItemView.js +10 -19
- package/lib/esm/builtin/async/ai-runtime/runtime-components/ChatOutput/index.js +2 -2
- package/lib/esm/builtin/async/ai-runtime/runtime-components/GoogleSearch/GoogleSearchRelatedQuestionsView.js +1 -1
- package/lib/esm/builtin/async/ai-runtime/runtime-components/PhotoGallery/index.js +3 -3
- package/lib/esm/builtin/async/ai-runtime/runtime-components/PhotoGalleryItem/index.js +5 -5
- package/lib/esm/builtin/async/ai-runtime/runtime-components/SimpleChat/MessageView.js +5 -4
- package/lib/esm/builtin/async/ai-runtime/runtime-components/SimpleChat/MessagesView.js +1 -1
- package/lib/esm/builtin/async/ai-runtime/runtime-components/SimpleChat/UserMessageView.js +2 -2
- package/lib/esm/builtin/async/ai-runtime/runtime-components/SimpleOutput/index.js +5 -4
- package/lib/esm/builtin/async/ai-runtime/runtime-components/SimplePage/index.js +2 -2
- package/lib/esm/builtin/async/ai-runtime/runtime-components/SuggestedQuestionsView/index.js +2 -2
- package/lib/esm/builtin/async/ai-runtime/runtime-components/V0/Input.js +1 -1
- package/lib/esm/builtin/async/ai-runtime/runtime-components/V0/Output.js +5 -5
- package/lib/esm/builtin/async/ai-runtime/runtime-components/V0/Page.js +7 -7
- package/lib/esm/builtin/async/ai-runtime/runtime-components/V0/components/CodePreview.js +8 -8
- package/lib/esm/builtin/async/ai-runtime/state/agent.js +6 -6
- package/lib/esm/builtin/async/ai-runtime/state/runtime.js +5 -5
- package/lib/esm/builtin/async/ai-runtime/state/session.js +15 -17
- package/lib/esm/builtin/page/header.js +3 -3
- package/lib/esm/components/CustomComponentRenderer/BlockletReactComponentRenderer.js +1 -1
- package/lib/esm/components/CustomComponentRenderer/index.js +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/types/builtin/async/ai-runtime/api/agent.d.ts +10 -1
- package/lib/types/builtin/async/ai-runtime/api/message.d.ts +4 -15
- package/lib/types/builtin/async/ai-runtime/api/request.d.ts +1 -0
- package/lib/types/builtin/async/ai-runtime/api/secret.d.ts +12 -0
- package/lib/types/builtin/async/ai-runtime/api/session.d.ts +5 -8
- package/lib/types/builtin/async/ai-runtime/components/AgentErrorBoundary.d.ts +4 -0
- package/lib/types/builtin/async/ai-runtime/components/AgentSettings/AgentSettingsDialog.d.ts +10 -0
- package/lib/types/builtin/async/ai-runtime/constants.d.ts +1 -0
- package/lib/types/builtin/async/ai-runtime/contexts/Runtime.d.ts +3 -1
- package/lib/types/builtin/async/ai-runtime/hooks/use-agent-admin.d.ts +2 -0
- package/lib/types/builtin/async/ai-runtime/locales/index.d.ts +4 -0
- package/lib/types/builtin/async/ai-runtime/runtime/Runtime/index.d.ts +2 -1
- package/lib/types/builtin/async/ai-runtime/state/agent.d.ts +2 -6
- package/lib/types/builtin/async/ai-runtime/state/runtime.d.ts +2 -0
- package/lib/types/builtin/async/ai-runtime/state/session.d.ts +1 -0
- package/lib/types/builtin/page/header.d.ts +2 -2
- package/lib/types/components/CustomComponentRenderer/index.d.ts +3 -0
- package/lib/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/lib/types/builtin/async/ai-runtime/api/subscription.d.ts +0 -15
|
@@ -10,7 +10,6 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
import ImagePreview from '@blocklet/ai-kit/components/image-preview';
|
|
14
13
|
import { cx } from '@emotion/css';
|
|
15
14
|
import { Box, Skeleton, Stack, Tooltip, Typography, styled, useMediaQuery, useTheme } from '@mui/material';
|
|
16
15
|
import dayjs from 'dayjs';
|
|
@@ -27,8 +26,8 @@ import MessageMetadataRenderer from './MessageMetadataRenderer';
|
|
|
27
26
|
const MessageItemView = memo((_a) => {
|
|
28
27
|
var _b;
|
|
29
28
|
var { message, hideAvatar } = _a, props = __rest(_a, ["message", "hideAvatar"]);
|
|
30
|
-
const showUserMessage = !!((_b = message.
|
|
31
|
-
return (_jsxs(MessageItemContainer, Object.assign({}, props, { className: cx('ai-chat-message-item', hideAvatar && 'hide-avatar', props.className), children: [showUserMessage && !isEmpty(message.
|
|
29
|
+
const showUserMessage = !!((_b = message.inputs) === null || _b === void 0 ? void 0 : _b.question);
|
|
30
|
+
return (_jsxs(MessageItemContainer, Object.assign({}, props, { className: cx('ai-chat-message-item', hideAvatar && 'hide-avatar', props.className), children: [showUserMessage && !isEmpty(message.inputs) && _jsx(UserMessage, { message: message, hideAvatar: hideAvatar }), !isEmpty(message.outputs) && _jsx(AgentMessage, { message: message, hideAvatar: hideAvatar })] })));
|
|
32
31
|
});
|
|
33
32
|
export default MessageItemView;
|
|
34
33
|
const MessageItemContainer = styled(Stack) `
|
|
@@ -80,17 +79,17 @@ function UserMessage({ message, hideAvatar }) {
|
|
|
80
79
|
display: 'flex',
|
|
81
80
|
flexDirection: 'column',
|
|
82
81
|
alignItems: 'flex-end',
|
|
83
|
-
}, children: [!hideAvatar && (_jsxs(MessageUserName, { children: [(_c = authSession.user) === null || _c === void 0 ? void 0 : _c.fullName, _jsx(MessageTime, { time: message.createdAt })] })), _jsx(Box, { className: "message-question", sx: { whiteSpace: 'pre-wrap', wordBreak: 'break-word', textAlign: 'left' }, children: (_d = message.
|
|
82
|
+
}, children: [!hideAvatar && (_jsxs(MessageUserName, { children: [(_c = authSession.user) === null || _c === void 0 ? void 0 : _c.fullName, _jsx(MessageTime, { time: message.createdAt })] })), _jsx(Box, { className: "message-question", sx: { whiteSpace: 'pre-wrap', wordBreak: 'break-word', textAlign: 'left' }, children: (_d = message.inputs) === null || _d === void 0 ? void 0 : _d.question })] })] }));
|
|
84
83
|
}
|
|
85
84
|
function AgentMessage({ message, hideAvatar }) {
|
|
86
|
-
var _a, _b, _c, _d, _e, _f
|
|
85
|
+
var _a, _b, _c, _d, _e, _f;
|
|
87
86
|
const { aid } = useRuntimeState();
|
|
88
87
|
const profile = useProfile({ aid });
|
|
89
|
-
const showMainMessage = !!((
|
|
90
|
-
const isMessageLoading = (message.loading || !message.
|
|
88
|
+
const showMainMessage = !!((_a = message.outputs) === null || _a === void 0 ? void 0 : _a.content);
|
|
89
|
+
const isMessageLoading = (message.loading || !message.outputs) && !message.error;
|
|
91
90
|
const theme = useTheme();
|
|
92
91
|
const isMobile = useMediaQuery(theme.breakpoints.down('sm'));
|
|
93
|
-
return (_jsxs(Stack, { className: "ai-chat-message-ai", direction: "row", gap: 1.5, children: [!hideAvatar && (_jsx(Box, { children: _jsx(Avatar, { size: 40, did: (
|
|
92
|
+
return (_jsxs(Stack, { className: "ai-chat-message-ai", direction: "row", gap: 1.5, children: [!hideAvatar && (_jsx(Box, { children: _jsx(Avatar, { size: 40, did: (_b = globalThis.blocklet) === null || _b === void 0 ? void 0 : _b.appId, variant: "circle", shape: "circle", src: profile.avatar }) })), _jsxs(Box, { flex: 1, width: 0, children: [!hideAvatar && (_jsxs(MessageUserName, { children: [profile.name, _jsx(MessageTime, { time: message.createdAt })] })), _jsxs(React.Suspense, { children: [showMainMessage ? (_jsx(Tooltip, { placement: "right-start", slotProps: {
|
|
94
93
|
popper: {
|
|
95
94
|
disablePortal: true,
|
|
96
95
|
modifiers: [
|
|
@@ -106,23 +105,15 @@ function AgentMessage({ message, hideAvatar }) {
|
|
|
106
105
|
sx: { p: 0, bgcolor: 'white' },
|
|
107
106
|
},
|
|
108
107
|
}, title: !isMessageLoading &&
|
|
109
|
-
((
|
|
108
|
+
((_c = message.outputs) === null || _c === void 0 ? void 0 : _c.content) && (_jsx(ShareActions, { sx: {
|
|
110
109
|
fontSize: '1rem',
|
|
111
110
|
boxShadow: '0px 4px 8px 0px rgba(3, 7, 18, 0.08)',
|
|
112
111
|
border: '1px solid rgba(229, 231, 235, 1)',
|
|
113
112
|
borderRadius: 1,
|
|
114
113
|
p: 0.25,
|
|
115
|
-
} })), children:
|
|
116
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
117
|
-
return ((_a = childMsg.result) === null || _a === void 0 ? void 0 : _a.content) ? (_jsx(MarkdownRenderer, { className: isMessageLoading &&
|
|
118
|
-
!((_b = message.result) === null || _b === void 0 ? void 0 : _b.content) &&
|
|
119
|
-
!((_d = (_c = message.result) === null || _c === void 0 ? void 0 : _c.images) === null || _d === void 0 ? void 0 : _d.length) &&
|
|
120
|
-
message.result.messages.length - 1 === index
|
|
121
|
-
? 'writing'
|
|
122
|
-
: '', sx: childMsg.respondAs === 'systemMessage' ? { color: 'text.secondary' } : {}, children: (_e = childMsg.result) === null || _e === void 0 ? void 0 : _e.content }, childMsg.taskId)) : ((_g = (_f = childMsg.result) === null || _f === void 0 ? void 0 : _f.images) === null || _g === void 0 ? void 0 : _g.length) ? (_jsx(ImagePreview, { itemWidth: 100, spacing: 1, dataSource: childMsg.result.images.map((i) => ({ src: i.url })) }, childMsg.taskId)) : null;
|
|
123
|
-
}), ((_h = message.result) === null || _h === void 0 ? void 0 : _h.content) && (_jsx(MarkdownRenderer, { className: isMessageLoading ? 'writing' : '', children: message.result.content }))] }) })) : (isMessageLoading && (_jsx(Skeleton, { variant: "rectangular", height: 24 + 8 + 8,
|
|
114
|
+
} })), children: _jsx(Stack, { gap: 1, className: "message-response", children: ((_d = message.outputs) === null || _d === void 0 ? void 0 : _d.content) && (_jsx(MarkdownRenderer, { className: isMessageLoading ? 'writing' : '', children: message.outputs.content })) }) })) : (isMessageLoading && (_jsx(Skeleton, { variant: "rectangular", height: 24 + 8 + 8,
|
|
124
115
|
// only response with loading
|
|
125
|
-
className: "message-response" }))), (
|
|
116
|
+
className: "message-response" }))), (_f = (_e = message.outputs) === null || _e === void 0 ? void 0 : _e.objects) === null || _f === void 0 ? void 0 : _f.map((object) => (_jsx(MessageMetadataRenderer, { object: object.data }, object.taskId))), message.error && _jsx(MessageErrorView, { error: message.error })] })] })] }));
|
|
126
117
|
}
|
|
127
118
|
export function MessageItemWrapper(_a) {
|
|
128
119
|
var _b;
|
|
@@ -8,8 +8,8 @@ export default function ChatOutput({ hideAvatar = true, renderType, }) {
|
|
|
8
8
|
const formattedMessage = useMemo(() => {
|
|
9
9
|
if (renderType) {
|
|
10
10
|
return Object.assign({}, message, {
|
|
11
|
-
result: renderType === 'parameters' ? {} : message.
|
|
12
|
-
parameters: renderType === 'result' ? {} : message.
|
|
11
|
+
result: renderType === 'parameters' ? {} : message.outputs,
|
|
12
|
+
parameters: renderType === 'result' ? {} : message.inputs,
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
return message;
|
|
@@ -29,7 +29,7 @@ export default function GoogleSearchRelatedView({ output, outputValue, onlyLastM
|
|
|
29
29
|
const { aid } = useCurrentAgent();
|
|
30
30
|
const { message } = (_a = useCurrentMessage({ optional: true })) !== null && _a !== void 0 ? _a : {};
|
|
31
31
|
const lastMessage = useCurrentSessionState((s) => { var _a; return (_a = s === null || s === void 0 ? void 0 : s.messages) === null || _a === void 0 ? void 0 : _a.at(-1); });
|
|
32
|
-
const isLastMessage = !!message && (message === null || message === void 0 ? void 0 : message.
|
|
32
|
+
const isLastMessage = !!message && (message === null || message === void 0 ? void 0 : message.id) === (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.id);
|
|
33
33
|
const [submitting, setSubmitting] = useState(false);
|
|
34
34
|
const { execute } = useRuntimeState();
|
|
35
35
|
const result = useMemo(() => {
|
|
@@ -49,11 +49,11 @@ function OutputView(_a) {
|
|
|
49
49
|
return (_jsxs(Stack, Object.assign({ width: "100%", alignItems: "center", px: { xs: 2, sm: 3 }, mt: { xs: 2, sm: 3 } }, props, { children: [resultTitle && (_jsx(Typography, { width: "100%", component: "h2", fontSize: 36, fontWeight: 700, textAlign: "center", children: _jsx(Balancer, { children: resultTitle }) })), loaded && !messages.length && _jsx(NoOutputs, {}), _jsxs(Masonry, { ref: ref, columns: { xs: 2, sm: 3, md: 4, lg: 5 }, spacing: 1, sequential: true, sx: { width: '100%', overflow: 'hidden', '> *': { borderRadius: 1 } }, children: [running && (_jsx(Skeleton, { variant: "rectangular", sx: {
|
|
50
50
|
// FIXME: default using history height
|
|
51
51
|
height: (_e = (_d = (_c = ref.current) === null || _c === void 0 ? void 0 : _c.querySelector('*')) === null || _d === void 0 ? void 0 : _d.clientHeight) !== null && _e !== void 0 ? _e : 200,
|
|
52
|
-
} })), mapRight(messages, (message) => (_jsx(OutputItemView, { message: message }, message.
|
|
52
|
+
} })), mapRight(messages, (message) => (_jsx(OutputItemView, { message: message }, message.id)))] }), _jsx(Box, { my: 4, children: !!messages.length && !noMoreMessage && (_jsx(LoadingButton, { variant: "outlined", onClick: () => loadMoreMessages(), children: t('loadMore') })) })] })));
|
|
53
53
|
}
|
|
54
54
|
const OutputItemView = memo(({ message }) => {
|
|
55
|
-
const { appearanceOutput } = useAppearances({ agentId: message.
|
|
55
|
+
const { appearanceOutput } = useAppearances({ agentId: message.agentId });
|
|
56
56
|
if (!(appearanceOutput === null || appearanceOutput === void 0 ? void 0 : appearanceOutput.componentId))
|
|
57
57
|
return null;
|
|
58
|
-
return (_jsx(CurrentAgentProvider, { agentId: message.
|
|
58
|
+
return (_jsx(CurrentAgentProvider, { agentId: message.agentId, children: _jsx(CurrentMessageProvider, { message: message, children: _jsx(Suspense, { children: _jsx(CustomComponentRenderer, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties }) }) }) }, message.id));
|
|
59
59
|
});
|
|
@@ -36,7 +36,7 @@ export default function PhotoGalleryItem() {
|
|
|
36
36
|
var _a, _b;
|
|
37
37
|
const { message } = useCurrentMessage();
|
|
38
38
|
const [openDialog, setOpenDialog] = useState(false);
|
|
39
|
-
const objects = (_b = (_a = message.
|
|
39
|
+
const objects = (_b = (_a = message.outputs) === null || _a === void 0 ? void 0 : _a.objects) !== null && _b !== void 0 ? _b : [];
|
|
40
40
|
const images = objects.flatMap((i) => { var _a; return (_a = i.data[RuntimeOutputVariable.images]) !== null && _a !== void 0 ? _a : []; });
|
|
41
41
|
if (!images.length && message.error) {
|
|
42
42
|
return (_jsx(Stack, { alignItems: "center", justifyContent: "center", sx: {
|
|
@@ -78,7 +78,7 @@ export default function PhotoGalleryItem() {
|
|
|
78
78
|
background: 'linear-gradient(to bottom, rgba(2, 7, 19, 0) 0%, rgba(2, 7, 19, 0.8) 100%)',
|
|
79
79
|
opacity: 0,
|
|
80
80
|
transition: 'opacity 0.3s',
|
|
81
|
-
}, children: _jsx(Box, { sx: Object.assign({ lineHeight: 1.5 }, getLineClamp(3)), children: (_a = message.
|
|
81
|
+
}, children: _jsx(Box, { sx: Object.assign({ lineHeight: 1.5 }, getLineClamp(3)), children: (_a = message.inputs) === null || _a === void 0 ? void 0 : _a.question }) }), openDialog && (_jsx(PromptDialog, { open: true, url: url, onClose: (e) => {
|
|
82
82
|
e.stopPropagation();
|
|
83
83
|
e.preventDefault();
|
|
84
84
|
setOpenDialog(false);
|
|
@@ -94,8 +94,8 @@ function PromptView() {
|
|
|
94
94
|
const { agent } = useCurrentAgent();
|
|
95
95
|
const params = useMemo(() => {
|
|
96
96
|
var _a;
|
|
97
|
-
return (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.filter(isValidInput).map((i) => { var _a, _b; return [((_a = i.label) === null || _a === void 0 ? void 0 : _a.trim()) || i.key, (_b = message.
|
|
98
|
-
}, [agent.parameters, message.
|
|
97
|
+
return (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.filter(isValidInput).map((i) => { var _a, _b; return [((_a = i.label) === null || _a === void 0 ? void 0 : _a.trim()) || i.key, (_b = message.inputs) === null || _b === void 0 ? void 0 : _b[i.key]]; }).filter((i) => i[1]);
|
|
98
|
+
}, [agent.parameters, message.inputs]);
|
|
99
99
|
if ((params === null || params === void 0 ? void 0 : params.length) === 1) {
|
|
100
100
|
return (_a = params[0]) === null || _a === void 0 ? void 0 : _a[1];
|
|
101
101
|
}
|
|
@@ -105,7 +105,7 @@ function PromptDialog(_a) {
|
|
|
105
105
|
var _b, _c, _d;
|
|
106
106
|
var { url } = _a, props = __rest(_a, ["url"]);
|
|
107
107
|
const { message } = useCurrentMessage();
|
|
108
|
-
const { parameters } = message;
|
|
108
|
+
const { inputs: parameters } = message;
|
|
109
109
|
const { t } = useLocaleContext();
|
|
110
110
|
const { session: authSession } = useSessionContext();
|
|
111
111
|
const borderRadius = 1;
|
|
@@ -14,6 +14,7 @@ import { Box, Stack } from '@mui/material';
|
|
|
14
14
|
import { memo } from 'react';
|
|
15
15
|
import CustomComponentRenderer from '../../../../../components/CustomComponentRenderer';
|
|
16
16
|
import { useSessionContext } from '../../../../session';
|
|
17
|
+
import { AgentErrorView } from '../../components/AgentErrorBoundary';
|
|
17
18
|
import UserInfo from '../../components/UserInfo';
|
|
18
19
|
import { useComponentPreferences } from '../../contexts/ComponentPreferences';
|
|
19
20
|
import CurrentAgentProvider from '../../contexts/CurrentAgent';
|
|
@@ -25,13 +26,13 @@ const MessageView = memo(({ message }) => {
|
|
|
25
26
|
const preferences = useComponentPreferences();
|
|
26
27
|
const hasBg = !!((_a = preferences === null || preferences === void 0 ? void 0 : preferences.backgroundImage) === null || _a === void 0 ? void 0 : _a.url);
|
|
27
28
|
const { session: authSession } = useSessionContext();
|
|
28
|
-
const { appearanceOutput } = useAppearances({ agentId: message.
|
|
29
|
-
const profile = useProfile({ agentId: message.
|
|
29
|
+
const { appearanceOutput } = useAppearances({ agentId: message.agentId });
|
|
30
|
+
const profile = useProfile({ agentId: message.agentId });
|
|
30
31
|
const { hideAgentAvatar, hideUserInputs } = (_b = useComponentPreferences()) !== null && _b !== void 0 ? _b : {};
|
|
31
32
|
if (!(appearanceOutput === null || appearanceOutput === void 0 ? void 0 : appearanceOutput.componentId))
|
|
32
33
|
return null;
|
|
33
|
-
const agentMessage = (_jsx(MessageBodyContainer, { messageRole: "assistant", children: _jsx(CustomComponentRenderer, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties }) }));
|
|
34
|
-
return (_jsx(CurrentAgentProvider, { agentId: message.
|
|
34
|
+
const agentMessage = (_jsx(MessageBodyContainer, { messageRole: "assistant", children: _jsx(CustomComponentRenderer, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties, fallbackRender: AgentErrorView }) }));
|
|
35
|
+
return (_jsx(CurrentAgentProvider, { agentId: message.agentId, children: _jsx(CurrentMessageProvider, { message: message, children: _jsxs(Stack, { gap: 2, children: [!hideUserInputs && (_jsx(Box, { children: _jsx(UserInfo, { name: (_c = authSession.user) === null || _c === void 0 ? void 0 : _c.fullName, did: (_d = authSession.user) === null || _d === void 0 ? void 0 : _d.did, avatar: (_e = authSession.user) === null || _e === void 0 ? void 0 : _e.avatar, time: message.createdAt, reverse: true, alignItems: "flex-start", UserNameProps: { sx: { color: hasBg ? 'white' : undefined } }, children: _jsx(Stack, { sx: { alignItems: 'flex-end' }, children: _jsx(MessageBodyContainer, { messageRole: "user", children: _jsx(UserMessageView, {}) }) }) }) })), _jsx(Box, { children: !hideAgentAvatar ? (_jsx(UserInfo, { name: profile.name, did: (_f = globalThis.blocklet) === null || _f === void 0 ? void 0 : _f.appId, avatar: profile.avatar, time: message.createdAt, alignItems: "flex-start", UserNameProps: { sx: { color: hasBg ? 'white' : undefined } }, children: agentMessage })) : (agentMessage) })] }) }) }));
|
|
35
36
|
});
|
|
36
37
|
export default MessageView;
|
|
37
38
|
export function MessageBodyContainer(_a) {
|
|
@@ -22,5 +22,5 @@ export default function MessagesView(_a) {
|
|
|
22
22
|
const loaded = useSessionState((s) => s.loaded);
|
|
23
23
|
const showOpening = useCurrentSessionState((s) => !s || (s === null || s === void 0 ? void 0 : s.loaded)) && loaded;
|
|
24
24
|
const divider = (_b = useComponentPreferences()) === null || _b === void 0 ? void 0 : _b.divider;
|
|
25
|
-
return (_jsxs(Stack, Object.assign({ gap: 2 }, props, { children: [showOpening && _jsx(OpeningMessageView, { isMessagesEmpty: !(messages === null || messages === void 0 ? void 0 : messages.length) }), messages === null || messages === void 0 ? void 0 : messages.map((message, index) => (_jsxs(_Fragment, { children: [_jsx(MessageView, { message: message }, message.
|
|
25
|
+
return (_jsxs(Stack, Object.assign({ gap: 2 }, props, { children: [showOpening && _jsx(OpeningMessageView, { isMessagesEmpty: !(messages === null || messages === void 0 ? void 0 : messages.length) }), messages === null || messages === void 0 ? void 0 : messages.map((message, index) => (_jsxs(_Fragment, { children: [_jsx(MessageView, { message: message }, message.id), divider && index !== messages.length - 1 ? _jsx(Divider, { sx: { my: 2 } }) : undefined] })))] })));
|
|
26
26
|
}
|
|
@@ -11,10 +11,10 @@ export default function UserMessageView() {
|
|
|
11
11
|
const { agent } = useCurrentAgent();
|
|
12
12
|
const params = useMemo(() => {
|
|
13
13
|
var _a;
|
|
14
|
-
const inputs = (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.filter(isValidInput).map((i) => { var _a, _b; return [((_a = i.label) === null || _a === void 0 ? void 0 : _a.trim()) || i.key, (_b = message.
|
|
14
|
+
const inputs = (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.filter(isValidInput).map((i) => { var _a, _b; return [((_a = i.label) === null || _a === void 0 ? void 0 : _a.trim()) || i.key, (_b = message.inputs) === null || _b === void 0 ? void 0 : _b[i.key]]; }).filter((i) => i[1]);
|
|
15
15
|
const q = inputs === null || inputs === void 0 ? void 0 : inputs.find((i) => i[0] === 'question');
|
|
16
16
|
return q ? [q] : inputs;
|
|
17
|
-
}, [agent.parameters, message.
|
|
17
|
+
}, [agent.parameters, message.inputs]);
|
|
18
18
|
if ((params === null || params === void 0 ? void 0 : params.length) === 1) {
|
|
19
19
|
return _jsx(MarkdownRenderer, { children: (_a = params[0]) === null || _a === void 0 ? void 0 : _a[1] });
|
|
20
20
|
}
|
|
@@ -28,10 +28,11 @@ export default function SimpleOutput() {
|
|
|
28
28
|
if (!(outputs === null || outputs === void 0 ? void 0 : outputs.length))
|
|
29
29
|
return null;
|
|
30
30
|
return (_jsx(Stack, { gap: 2, children: outputs.map((output) => {
|
|
31
|
-
var _a, _b, _c, _d, _e, _f;
|
|
31
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
32
32
|
const value = output.name === RuntimeOutputVariable.text
|
|
33
|
-
? (_a = message.
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
? ((_a = message.outputs) === null || _a === void 0 ? void 0 : _a.content) ||
|
|
34
|
+
((_d = (_c = (_b = message.outputs) === null || _b === void 0 ? void 0 : _b.objects) === null || _c === void 0 ? void 0 : _c.find((i) => i === null || i === void 0 ? void 0 : i[RuntimeOutputVariable.text])) === null || _d === void 0 ? void 0 : _d[RuntimeOutputVariable.text])
|
|
35
|
+
: (_g = (_f = (_e = message.outputs) === null || _e === void 0 ? void 0 : _e.objects) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g[output.name];
|
|
36
|
+
return (_jsx(CustomComponentRenderer, { instanceId: output.id, componentId: output.appearance.componentId, properties: output.appearance.componentProperties, props: Object.assign({ output, outputValue: value, writing: output.name === RuntimeOutputVariable.text && message.loading }, (((_h = output === null || output === void 0 ? void 0 : output.appearance) === null || _h === void 0 ? void 0 : _h.componentProps) || {})) }, output.id));
|
|
36
37
|
}) }));
|
|
37
38
|
}
|
|
@@ -39,8 +39,8 @@ function OutputView(_a) {
|
|
|
39
39
|
return (_jsx(Stack, Object.assign({ gap: 2, mt: 4 }, props, { children: lastMessage && (_jsxs(_Fragment, { children: [resultTitle && (_jsx(Typography, { width: "100%", component: "h5", fontSize: 36, fontWeight: 700, textAlign: "center", children: _jsx(Balancer, { children: resultTitle }) })), _jsx(Stack, { children: _jsx(OutputItemView, { message: lastMessage }) })] })) })));
|
|
40
40
|
}
|
|
41
41
|
const OutputItemView = memo(({ message }) => {
|
|
42
|
-
const { appearanceOutput } = useAppearances({ agentId: message.
|
|
42
|
+
const { appearanceOutput } = useAppearances({ agentId: message.agentId });
|
|
43
43
|
if (!(appearanceOutput === null || appearanceOutput === void 0 ? void 0 : appearanceOutput.componentId))
|
|
44
44
|
return null;
|
|
45
|
-
return (_jsx(CurrentAgentProvider, { agentId: message.
|
|
45
|
+
return (_jsx(CurrentAgentProvider, { agentId: message.agentId, children: _jsx(CurrentMessageProvider, { message: message, children: _jsx(Suspense, { children: _jsx(CustomComponentRenderer, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties }) }) }) }));
|
|
46
46
|
});
|
|
@@ -25,7 +25,7 @@ export default function SuggestedQuestionsView({ output, outputValue, onlyLastMe
|
|
|
25
25
|
var _a;
|
|
26
26
|
const { message } = (_a = useCurrentMessage({ optional: true })) !== null && _a !== void 0 ? _a : {};
|
|
27
27
|
const lastMessage = useCurrentSessionState((s) => { var _a; return (_a = s === null || s === void 0 ? void 0 : s.messages) === null || _a === void 0 ? void 0 : _a.at(-1); });
|
|
28
|
-
const isLastMessage = !!message && message.
|
|
28
|
+
const isLastMessage = !!message && message.id === (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.id);
|
|
29
29
|
const questions = useMemo(() => {
|
|
30
30
|
const result = suggestedQuestionsSchema.validate(outputValue, { allowUnknown: true });
|
|
31
31
|
if (result.error)
|
|
@@ -37,7 +37,7 @@ export default function SuggestedQuestionsView({ output, outputValue, onlyLastMe
|
|
|
37
37
|
if (!message || (!isLastMessage && onlyLastMessage) || !(questions === null || questions === void 0 ? void 0 : questions.length))
|
|
38
38
|
return null;
|
|
39
39
|
return (_jsx(OutputFieldContainer, { output: output, children: _jsx(Stack, { gap: 1, children: questions.map((item) => (_jsx(MessageSuggestedQuestion, { onClick: () => {
|
|
40
|
-
execute({ aid, parameters: Object.assign(Object.assign({}, message.
|
|
40
|
+
execute({ aid, parameters: Object.assign(Object.assign({}, message.inputs), { question: item.question }) });
|
|
41
41
|
}, children: item.question }, item.question))) }) }));
|
|
42
42
|
}
|
|
43
43
|
function MessageSuggestedQuestion(_a) {
|
|
@@ -120,7 +120,7 @@ function useInitialFormValues() {
|
|
|
120
120
|
const [lastInputs, setLastInputs] = useState();
|
|
121
121
|
useEffect(() => {
|
|
122
122
|
if (autoSetLastParameters && !lastInputs) {
|
|
123
|
-
const lastParameters = lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.
|
|
123
|
+
const lastParameters = lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.inputs;
|
|
124
124
|
if (!isEmpty(lastParameters))
|
|
125
125
|
setLastInputs(lastParameters);
|
|
126
126
|
}
|
|
@@ -39,9 +39,9 @@ export default function V0Output() {
|
|
|
39
39
|
sx: DEFAULT_DESKTOP_SX,
|
|
40
40
|
key: 'Desktop',
|
|
41
41
|
});
|
|
42
|
-
const objects = (_a = message.
|
|
43
|
-
const { taskId,
|
|
44
|
-
const isMessageLoading = (message.loading || !message.
|
|
42
|
+
const objects = (_a = message.outputs) === null || _a === void 0 ? void 0 : _a.objects;
|
|
43
|
+
const { id: taskId, inputs } = message;
|
|
44
|
+
const isMessageLoading = (message.loading || !message.outputs) && !message.error;
|
|
45
45
|
const disabled = isMessageLoading || !(objects === null || objects === void 0 ? void 0 : objects.length) || message.error;
|
|
46
46
|
const responsiveSx = {
|
|
47
47
|
backgroundColor: 'white',
|
|
@@ -208,7 +208,7 @@ export default function V0Output() {
|
|
|
208
208
|
border: 1,
|
|
209
209
|
borderColor: 'rgba(0, 0, 0, 0.1) !important',
|
|
210
210
|
},
|
|
211
|
-
}, children: [_jsx(UserQuestion, { question:
|
|
211
|
+
}, children: [_jsx(UserQuestion, { question: inputs === null || inputs === void 0 ? void 0 : inputs.question }), _jsx(Box, { sx: {
|
|
212
212
|
display: 'flex',
|
|
213
213
|
alignItems: 'center',
|
|
214
214
|
gap: 1,
|
|
@@ -225,7 +225,7 @@ export default function V0Output() {
|
|
|
225
225
|
overflowY: 'auto',
|
|
226
226
|
scrollbarWidth: 'thin',
|
|
227
227
|
scrollbarColor: 'grey transparent',
|
|
228
|
-
}, propertiesValueMap: propertiesValueMap }) }), objects === null || objects === void 0 ? void 0 : objects.map((item, index) => _jsx(MessageMetadataRenderer, { object: item.data }, index)), !isMessageLoading && ((_b = message.
|
|
228
|
+
}, propertiesValueMap: propertiesValueMap }) }), objects === null || objects === void 0 ? void 0 : objects.map((item, index) => _jsx(MessageMetadataRenderer, { object: item.data }, index)), !isMessageLoading && ((_b = message.outputs) === null || _b === void 0 ? void 0 : _b.content) && (_jsx(ShareActions, { direction: "row", justifyContent: "flex-end", sx: { mt: 2 } })), _jsxs(Suspense, { fallback: _jsx(Loading, {}), children: [_jsx(Drawer, { anchor: isMobile ? 'bottom' : 'right', open: !!code, onClose: onCloseCode, children: _jsxs(Box, { sx: Object.assign({ p: 2, pt: 0 }, (isMobile ? { maxHeight: '70vh' } : { maxWidth: '70vw' })), children: [_jsxs(Box, { sx: {
|
|
229
229
|
py: 2,
|
|
230
230
|
position: 'sticky',
|
|
231
231
|
top: 0,
|
|
@@ -180,18 +180,18 @@ function V0DetailRender() {
|
|
|
180
180
|
// FIXME: 现在临时把 error 的消息隐藏了,后续需要优化
|
|
181
181
|
const messagesList = messagesListOriginal === null || messagesListOriginal === void 0 ? void 0 : messagesListOriginal.filter((message, index) => {
|
|
182
182
|
var _a, _b;
|
|
183
|
-
return (!(message === null || message === void 0 ? void 0 : message.error) && ((_b = (_a = message === null || message === void 0 ? void 0 : message.
|
|
184
|
-
message.
|
|
183
|
+
return (!(message === null || message === void 0 ? void 0 : message.error) && ((_b = (_a = message === null || message === void 0 ? void 0 : message.outputs) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.length)) ||
|
|
184
|
+
message.id === currentMessageTaskId ||
|
|
185
185
|
index === messagesListOriginal.length - 1;
|
|
186
186
|
});
|
|
187
|
-
const currentMessage = messagesList === null || messagesList === void 0 ? void 0 : messagesList.find((message) => message.
|
|
187
|
+
const currentMessage = messagesList === null || messagesList === void 0 ? void 0 : messagesList.find((message) => message.id === currentMessageTaskId);
|
|
188
188
|
useEffect(() => {
|
|
189
189
|
if (messagesList === null || messagesList === void 0 ? void 0 : messagesList.length) {
|
|
190
190
|
const latestMessage = messagesList === null || messagesList === void 0 ? void 0 : messagesList.at(-1);
|
|
191
191
|
// no currentMessageTaskId or has new message
|
|
192
|
-
if (!currentMessageTaskId || (currentMessageTaskId === (latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.
|
|
192
|
+
if (!currentMessageTaskId || (currentMessageTaskId === (latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.id) && (messagesList === null || messagesList === void 0 ? void 0 : messagesList.length) > 1)) {
|
|
193
193
|
// @ts-ignore
|
|
194
|
-
setCurrentMessageTaskId(latestMessage.
|
|
194
|
+
setCurrentMessageTaskId(latestMessage.id);
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
}, [messagesList, currentMessageTaskId]);
|
|
@@ -237,7 +237,7 @@ function V0DetailRender() {
|
|
|
237
237
|
'&::-webkit-scrollbar': {
|
|
238
238
|
display: 'none',
|
|
239
239
|
} }), children: messagesList === null || messagesList === void 0 ? void 0 : messagesList.map((item, i) => {
|
|
240
|
-
const { parameters, taskId, updatedAt } = item;
|
|
240
|
+
const { inputs: parameters, id: taskId, updatedAt } = item;
|
|
241
241
|
const isCurrent = taskId === (currentMessageTaskId || undefined);
|
|
242
242
|
return (_jsx(Box, { sx: {
|
|
243
243
|
display: 'flex',
|
|
@@ -246,7 +246,7 @@ function V0DetailRender() {
|
|
|
246
246
|
gap: 1,
|
|
247
247
|
}, children: _jsxs(Box, { id: taskId, onClick: () => {
|
|
248
248
|
// @ts-ignore
|
|
249
|
-
setCurrentMessageTaskId(item.
|
|
249
|
+
setCurrentMessageTaskId(item.id);
|
|
250
250
|
}, sx: Object.assign({ cursor: 'pointer', color: 'textColor', borderRadius: 1, border: 1, borderColor: isCurrent ? 'primary.main' : 'background.block', backgroundColor: 'white', position: 'relative', transition: 'all 0.3s', '&:hover': {
|
|
251
251
|
borderColor: 'primary.main',
|
|
252
252
|
} }, (isMobile
|
|
@@ -60,9 +60,9 @@ function RetryComponent({ message, tip }) {
|
|
|
60
60
|
} }) })] }), _jsx(LoadingButton, { variant: "contained", loading: loading, color: "primary", onClick: () => __awaiter(this, void 0, void 0, function* () {
|
|
61
61
|
setLoading(true);
|
|
62
62
|
try {
|
|
63
|
-
const {
|
|
63
|
+
const { inputs } = message || {};
|
|
64
64
|
// remove $ starting parameters object
|
|
65
|
-
const canUseParameters = Object.fromEntries(Object.entries(
|
|
65
|
+
const canUseParameters = Object.fromEntries(Object.entries(inputs || {}).filter(([key]) => !key.startsWith('$')));
|
|
66
66
|
yield execute({
|
|
67
67
|
aid,
|
|
68
68
|
parameters: canUseParameters,
|
|
@@ -112,7 +112,7 @@ export function CodeRenderByMessage({ zoom, message, minHeight = 200, sx, proper
|
|
|
112
112
|
minHeight,
|
|
113
113
|
},
|
|
114
114
|
};
|
|
115
|
-
const isMessageLoading = ((message === null || message === void 0 ? void 0 : message.loading) || !(message === null || message === void 0 ? void 0 : message.
|
|
115
|
+
const isMessageLoading = ((message === null || message === void 0 ? void 0 : message.loading) || !(message === null || message === void 0 ? void 0 : message.outputs)) && !(message === null || message === void 0 ? void 0 : message.error);
|
|
116
116
|
const ContentRender = useCallback(() => {
|
|
117
117
|
var _a, _b, _c, _d;
|
|
118
118
|
if (isMessageLoading) {
|
|
@@ -123,10 +123,10 @@ export function CodeRenderByMessage({ zoom, message, minHeight = 200, sx, proper
|
|
|
123
123
|
alignItems: 'center',
|
|
124
124
|
}, children: _jsx(AIRunningLoading, {}) }));
|
|
125
125
|
}
|
|
126
|
-
if ((message === null || message === void 0 ? void 0 : message.error) || !((_b = (_a = message === null || message === void 0 ? void 0 : message.
|
|
126
|
+
if ((message === null || message === void 0 ? void 0 : message.error) || !((_b = (_a = message === null || message === void 0 ? void 0 : message.outputs) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
127
127
|
return _jsx(RetryComponent, { message: message });
|
|
128
128
|
}
|
|
129
|
-
return (_d = (_c = message === null || message === void 0 ? void 0 : message.
|
|
129
|
+
return (_d = (_c = message === null || message === void 0 ? void 0 : message.outputs) === null || _c === void 0 ? void 0 : _c.objects) === null || _d === void 0 ? void 0 : _d.map((item) => {
|
|
130
130
|
var _a, _b, _c;
|
|
131
131
|
const { taskId } = item;
|
|
132
132
|
// @ts-ignore
|
|
@@ -134,14 +134,14 @@ export function CodeRenderByMessage({ zoom, message, minHeight = 200, sx, proper
|
|
|
134
134
|
return (_jsx(CodePreviewMemo, { componentId: `code-preview-${taskId}`, code: code, propertiesValue: ((_b = propertiesValueMap === null || propertiesValueMap === void 0 ? void 0 : propertiesValueMap[taskId]) === null || _b === void 0 ? void 0 : _b[locale]) || ((_c = propertiesValueMap === null || propertiesValueMap === void 0 ? void 0 : propertiesValueMap[taskId]) === null || _c === void 0 ? void 0 : _c.en) || {}, message: message }, item.taskId));
|
|
135
135
|
});
|
|
136
136
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
137
|
-
}, [isMessageLoading, (_a = message === null || message === void 0 ? void 0 : message.
|
|
137
|
+
}, [isMessageLoading, (_a = message === null || message === void 0 ? void 0 : message.outputs) === null || _a === void 0 ? void 0 : _a.objects, propertiesValueMap, locale]);
|
|
138
138
|
return (_jsx(Box, { sx: Object.assign(Object.assign(Object.assign({ transition: 'all 0.3s', overflow: 'hidden', borderRadius: 1, width: '100%', height: '100%', backgroundColor: 'white' }, zoomSx), sx), { '.code-preview-wrapper': {
|
|
139
139
|
// p: 2,
|
|
140
|
-
} }), children: _jsx(ContentRender, {}) }, message === null || message === void 0 ? void 0 : message.
|
|
140
|
+
} }), children: _jsx(ContentRender, {}) }, message === null || message === void 0 ? void 0 : message.id));
|
|
141
141
|
}
|
|
142
142
|
export const CodeRenderByMessageMemo = memo(CodeRenderByMessage);
|
|
143
143
|
export function getCurrentCodeByTaskId(message, taskId) {
|
|
144
144
|
var _a, _b, _c, _d;
|
|
145
145
|
// @ts-ignore
|
|
146
|
-
return (_d = (_c = (_b = (_a = message === null || message === void 0 ? void 0 : message.
|
|
146
|
+
return (_d = (_c = (_b = (_a = message === null || message === void 0 ? void 0 : message.outputs) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.find((item) => item.taskId === taskId)) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d[codeField];
|
|
147
147
|
}
|
|
@@ -12,15 +12,15 @@ import { immer } from 'zustand/middleware/immer';
|
|
|
12
12
|
import { getAgent } from '../api/agent';
|
|
13
13
|
import { useRuntimeContext } from '../contexts/Runtime';
|
|
14
14
|
import { createCachedStore } from '../utils/zustand';
|
|
15
|
-
|
|
16
|
-
return createCachedStore(`agent-state-${aid}-${working}`, () => create()(immer((set) => ({
|
|
15
|
+
const createAgentState = ({ blockletDid, aid, working, agent, }) => {
|
|
16
|
+
return createCachedStore(`agent-state-${blockletDid}-${aid}-${working}`, () => create()(immer((set) => ({
|
|
17
17
|
agent,
|
|
18
18
|
load: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
19
|
set((state) => {
|
|
20
20
|
state.loading = true;
|
|
21
21
|
});
|
|
22
22
|
try {
|
|
23
|
-
const agent = yield getAgent({ aid, working });
|
|
23
|
+
const agent = yield getAgent({ blockletDid, aid, working });
|
|
24
24
|
set((state) => {
|
|
25
25
|
state.agent = agent;
|
|
26
26
|
});
|
|
@@ -40,14 +40,14 @@ export const createAgentState = ({ aid, working, agent }) => {
|
|
|
40
40
|
}))));
|
|
41
41
|
};
|
|
42
42
|
const LOADING_TASKS = {};
|
|
43
|
-
export function useAgentState({ aid, working }) {
|
|
43
|
+
export function useAgentState({ blockletDid, aid, working, }) {
|
|
44
44
|
var _a;
|
|
45
45
|
const runtimeState = useRuntimeContext();
|
|
46
|
-
const state = createAgentState({ aid, working: working !== null && working !== void 0 ? working : runtimeState.working })();
|
|
46
|
+
const state = createAgentState({ blockletDid, aid, working: working !== null && working !== void 0 ? working : runtimeState.working })();
|
|
47
47
|
if (!state.agent) {
|
|
48
48
|
if (state.error)
|
|
49
49
|
throw state.error;
|
|
50
|
-
const key = `agent-loading-${aid}-${working}`;
|
|
50
|
+
const key = `agent-loading-${blockletDid}-${aid}-${working}`;
|
|
51
51
|
(_a = LOADING_TASKS[key]) !== null && _a !== void 0 ? _a : (LOADING_TASKS[key] = state.load());
|
|
52
52
|
throw LOADING_TASKS[key];
|
|
53
53
|
}
|
|
@@ -13,8 +13,8 @@ import { useRuntimeContext } from '../contexts/Runtime';
|
|
|
13
13
|
import { useAgentState } from './agent';
|
|
14
14
|
import { createSessionState } from './session';
|
|
15
15
|
export function useRuntimeState() {
|
|
16
|
-
const { aid, working } = useRuntimeContext();
|
|
17
|
-
const [agent] = useAgentState({ aid, working });
|
|
16
|
+
const { blockletDid, aid, working } = useRuntimeContext();
|
|
17
|
+
const [agent] = useAgentState({ blockletDid, aid, working });
|
|
18
18
|
const { session: authSession, events } = useSessionContext();
|
|
19
19
|
const sessionState = useMemo(() => createSessionState({ aid }), [aid]);
|
|
20
20
|
const exec = sessionState((s) => s.execute);
|
|
@@ -38,7 +38,7 @@ export function useRuntimeState() {
|
|
|
38
38
|
if (!authSession.user) {
|
|
39
39
|
yield login();
|
|
40
40
|
}
|
|
41
|
-
return exec(Object.assign(Object.assign({}, args), { working }));
|
|
42
|
-
}), [authSession.user, exec, working, login]);
|
|
43
|
-
return { aid, working, agent, execute };
|
|
41
|
+
return exec(Object.assign(Object.assign({}, args), { blockletDid, working }));
|
|
42
|
+
}), [authSession.user, exec, blockletDid, working, login]);
|
|
43
|
+
return { blockletDid, aid, working, agent, execute };
|
|
44
44
|
}
|
|
@@ -243,7 +243,7 @@ export const createSessionState = ({ aid }) => {
|
|
|
243
243
|
}),
|
|
244
244
|
execute: (_g) => __awaiter(void 0, void 0, void 0, function* () {
|
|
245
245
|
var _h, e_1, _j, _k;
|
|
246
|
-
var { aid, working, parameters, onResponseStart } = _g, args = __rest(_g, ["aid", "working", "parameters", "onResponseStart"]);
|
|
246
|
+
var { blockletDid, aid, working, parameters, onResponseStart } = _g, args = __rest(_g, ["blockletDid", "aid", "working", "parameters", "onResponseStart"]);
|
|
247
247
|
const sessionId = args.sessionId ||
|
|
248
248
|
get().currentSessionId ||
|
|
249
249
|
(yield get().createSession({
|
|
@@ -261,6 +261,7 @@ export const createSessionState = ({ aid }) => {
|
|
|
261
261
|
});
|
|
262
262
|
try {
|
|
263
263
|
const stream = runAgent({
|
|
264
|
+
blockletDid,
|
|
264
265
|
aid,
|
|
265
266
|
sessionId,
|
|
266
267
|
working,
|
|
@@ -279,10 +280,10 @@ export const createSessionState = ({ aid }) => {
|
|
|
279
280
|
if ((value === null || value === void 0 ? void 0 : value.type) === 'CHUNK') {
|
|
280
281
|
if (!message) {
|
|
281
282
|
message = {
|
|
282
|
-
|
|
283
|
-
|
|
283
|
+
id: value.taskId,
|
|
284
|
+
agentId: identity.assistantId,
|
|
284
285
|
sessionId,
|
|
285
|
-
parameters,
|
|
286
|
+
inputs: parameters,
|
|
286
287
|
createdAt: new Date().toISOString(),
|
|
287
288
|
updatedAt: new Date().toISOString(),
|
|
288
289
|
loading: true,
|
|
@@ -296,25 +297,22 @@ export const createSessionState = ({ aid }) => {
|
|
|
296
297
|
s.messages.push(message);
|
|
297
298
|
});
|
|
298
299
|
}
|
|
299
|
-
if (message.
|
|
300
|
+
if (message.id === value.taskId) {
|
|
300
301
|
requestAnimationFrame(() => {
|
|
301
302
|
set((state) => {
|
|
302
|
-
var _a, _b, _c, _d
|
|
303
|
-
var
|
|
303
|
+
var _a, _b, _c, _d;
|
|
304
|
+
var _e;
|
|
304
305
|
const s = (_a = state.sessionMap) === null || _a === void 0 ? void 0 : _a[sessionId];
|
|
305
306
|
if (!s)
|
|
306
307
|
return;
|
|
307
|
-
const msg = (_b = s.messages) === null || _b === void 0 ? void 0 : _b.findLast((i) => i.
|
|
308
|
+
const msg = (_b = s.messages) === null || _b === void 0 ? void 0 : _b.findLast((i) => i.id === message.id);
|
|
308
309
|
if (!msg)
|
|
309
310
|
return;
|
|
310
|
-
(_c = msg.
|
|
311
|
-
msg.
|
|
312
|
-
if ((_e = (_d = value.delta) === null || _d === void 0 ? void 0 : _d.images) === null || _e === void 0 ? void 0 : _e.length) {
|
|
313
|
-
msg.result.images = ((_f = msg.result.images) !== null && _f !== void 0 ? _f : []).concat(value.delta.images);
|
|
314
|
-
}
|
|
311
|
+
(_c = msg.outputs) !== null && _c !== void 0 ? _c : (msg.outputs = {});
|
|
312
|
+
msg.outputs.content = (msg.outputs.content || '') + (value.delta.content || '');
|
|
315
313
|
if (value.delta.object) {
|
|
316
|
-
(
|
|
317
|
-
msg.
|
|
314
|
+
(_d = (_e = msg.outputs).objects) !== null && _d !== void 0 ? _d : (_e.objects = []);
|
|
315
|
+
msg.outputs.objects.push(value.delta.object);
|
|
318
316
|
}
|
|
319
317
|
});
|
|
320
318
|
});
|
|
@@ -326,7 +324,7 @@ export const createSessionState = ({ aid }) => {
|
|
|
326
324
|
const s = (_a = state.sessionMap) === null || _a === void 0 ? void 0 : _a[sessionId];
|
|
327
325
|
if (!s)
|
|
328
326
|
return;
|
|
329
|
-
const msg = (_b = s.messages) === null || _b === void 0 ? void 0 : _b.findLast((i) => i.
|
|
327
|
+
const msg = (_b = s.messages) === null || _b === void 0 ? void 0 : _b.findLast((i) => i.id === message.id);
|
|
330
328
|
if (msg)
|
|
331
329
|
msg.error = value.error;
|
|
332
330
|
else
|
|
@@ -360,7 +358,7 @@ export const createSessionState = ({ aid }) => {
|
|
|
360
358
|
return;
|
|
361
359
|
s.running = false;
|
|
362
360
|
if (message) {
|
|
363
|
-
const msg = (_b = s.messages) === null || _b === void 0 ? void 0 : _b.findLast((i) => i.
|
|
361
|
+
const msg = (_b = s.messages) === null || _b === void 0 ? void 0 : _b.findLast((i) => i.id === message.id);
|
|
364
362
|
if (msg)
|
|
365
363
|
msg.loading = false;
|
|
366
364
|
}
|
|
@@ -22,10 +22,10 @@ export const useHeaderState = create()(immer((set, get) => ({
|
|
|
22
22
|
for (const i of get().stack) {
|
|
23
23
|
widgets.push(i());
|
|
24
24
|
}
|
|
25
|
-
const r = widgets.reduce((res, i) => (Object.assign(Object.assign(Object.assign({}, res), i), { addons: (
|
|
25
|
+
const r = widgets.reduce((res, i) => (Object.assign(Object.assign(Object.assign({}, res), i), { addons: (exists) => {
|
|
26
26
|
var _a, _b, _c, _d;
|
|
27
|
-
const a = (_b = (_a = res.addons) === null || _a === void 0 ? void 0 : _a.call(res,
|
|
28
|
-
const b = (_d = (_c = i.addons) === null || _c === void 0 ? void 0 : _c.call(i,
|
|
27
|
+
const a = (_b = (_a = res.addons) === null || _a === void 0 ? void 0 : _a.call(res, exists)) !== null && _b !== void 0 ? _b : exists;
|
|
28
|
+
const b = (_d = (_c = i.addons) === null || _c === void 0 ? void 0 : _c.call(i, a)) !== null && _d !== void 0 ? _d : a;
|
|
29
29
|
return b;
|
|
30
30
|
} })), {});
|
|
31
31
|
set((state) => {
|
|
@@ -31,6 +31,6 @@ export default function BlockletReactComponentRenderer(_a) {
|
|
|
31
31
|
const COMPONENTS_CACHE = {};
|
|
32
32
|
function loadComponent(url) {
|
|
33
33
|
var _a;
|
|
34
|
-
(_a = COMPONENTS_CACHE[url]) !== null && _a !== void 0 ? _a : (COMPONENTS_CACHE[url] = React.lazy(() => import(url)));
|
|
34
|
+
(_a = COMPONENTS_CACHE[url]) !== null && _a !== void 0 ? _a : (COMPONENTS_CACHE[url] = React.lazy(() => import(/* @vite-ignore */ url)));
|
|
35
35
|
return COMPONENTS_CACHE[url];
|
|
36
36
|
}
|
|
@@ -23,7 +23,7 @@ export default function CustomComponentRenderer(_a) {
|
|
|
23
23
|
var { dev } = _a, props = __rest(_a, ["dev"]);
|
|
24
24
|
const inheritedDev = useDev();
|
|
25
25
|
const BuiltinComponent = BuiltinComponents[props.componentId];
|
|
26
|
-
return (_jsx(ErrorBoundary, {
|
|
26
|
+
return (_jsx(ErrorBoundary, { FallbackComponent: (props === null || props === void 0 ? void 0 : props.fallbackRender) || ErrorView, children: _jsx(DevProvider, { dev: dev !== null && dev !== void 0 ? dev : inheritedDev, children: BuiltinComponent ? (_jsx(BuiltinComponent, Object.assign({}, props))) : (_jsx(ComponentRenderer, Object.assign({}, props, { instanceId: (_b = props.instanceId) !== null && _b !== void 0 ? _b : props.componentId }))) }) }));
|
|
27
27
|
}
|
|
28
28
|
const BuiltinComponents = {
|
|
29
29
|
'blocklet-react-component': BlockletReactComponentRenderer,
|