@blocklet/pages-kit 0.2.341 → 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 +3 -3
- package/lib/types/builtin/async/ai-runtime/api/subscription.d.ts +0 -15
|
@@ -39,7 +39,6 @@ function AutoForm({ submitText, inlineLabel, autoFillLastForm = true, submitInQu
|
|
|
39
39
|
});
|
|
40
40
|
}, [agent.parameters]);
|
|
41
41
|
const defaultForm = useInitialFormValues();
|
|
42
|
-
const theme = useFormTheme();
|
|
43
42
|
const form = (0, react_hook_form_1.useForm)({ defaultValues: defaultForm });
|
|
44
43
|
(0, react_1.useEffect)(() => {
|
|
45
44
|
if (autoFillLastForm && !form.formState.isSubmitted && !form.formState.isSubmitting) {
|
|
@@ -56,31 +55,31 @@ function AutoForm({ submitText, inlineLabel, autoFillLastForm = true, submitInQu
|
|
|
56
55
|
},
|
|
57
56
|
});
|
|
58
57
|
});
|
|
59
|
-
return ((0, jsx_runtime_1.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
58
|
+
return ((0, jsx_runtime_1.jsxs)(Form, { component: "form", className: (0, css_1.cx)('form', `label-position-${inlineLabel ? 'start' : 'top'}`), onSubmit: form.handleSubmit(onSubmit), children: [parameters === null || parameters === void 0 ? void 0 : parameters.map((parameter, index) => {
|
|
59
|
+
const { key, required } = parameter !== null && parameter !== void 0 ? parameter : {};
|
|
60
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(react_hook_form_1.Controller, { control: form.control, name: key, rules: {
|
|
61
|
+
required,
|
|
62
|
+
min: parameter.type === 'number' && typeof parameter.min === 'number'
|
|
63
|
+
? { value: parameter.min, message: '' }
|
|
64
|
+
: undefined,
|
|
65
|
+
max: parameter.type === 'number' && typeof parameter.max === 'number'
|
|
66
|
+
? { value: parameter.max, message: '' }
|
|
67
|
+
: undefined,
|
|
68
|
+
minLength: parameter.type === 'string' && typeof parameter.minLength === 'number'
|
|
69
|
+
? { value: parameter.minLength, message: '' }
|
|
70
|
+
: undefined,
|
|
71
|
+
maxLength: parameter.type === 'string' && typeof parameter.maxLength === 'number'
|
|
72
|
+
? { value: parameter.maxLength, message: '' }
|
|
73
|
+
: undefined,
|
|
74
|
+
}, render: ({ field, fieldState }) => {
|
|
75
|
+
var _a;
|
|
76
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Stack, { className: "form-item", children: [parameter.label && (0, jsx_runtime_1.jsx)(material_1.FormLabel, { children: parameter.label }), (0, jsx_runtime_1.jsx)(AgentInputField_1.default, { inputRef: field.ref, autoFocus: index === 0, size: "small", hiddenLabel: true, fullWidth: true, label: undefined, parameter: parameter, maxRows: !(parameter === null || parameter === void 0 ? void 0 : parameter.type) || (parameter === null || parameter === void 0 ? void 0 : parameter.type) === 'string' ? 5 : undefined, value: field.value || '', onChange: (value) => field.onChange({ target: { value } }), error: Boolean(fieldState.error), helperText: ((_a = fieldState.error) === null || _a === void 0 ? void 0 : _a.message) || (parameter === null || parameter === void 0 ? void 0 : parameter.helper), InputProps: parameter.key === 'question' && submitInQuestionField
|
|
77
|
+
? {
|
|
78
|
+
endAdornment: ((0, jsx_runtime_1.jsx)(material_1.InputAdornment, { position: "end", sx: { py: 3, mr: -0.75, alignSelf: 'flex-end' }, children: (0, jsx_runtime_1.jsx)(LoadingButton_1.default, { type: "submit", variant: "contained", loading: running, sx: { borderRadius: 1.5 }, children: submitText }) })),
|
|
79
|
+
}
|
|
80
|
+
: undefined })] }));
|
|
81
|
+
} }) }, parameter.id));
|
|
82
|
+
}), !(submitInQuestionField && (parameters === null || parameters === void 0 ? void 0 : parameters.some((i) => i.key === 'question'))) && ((0, jsx_runtime_1.jsx)(LoadingButton_1.default, { type: "submit", variant: "contained", loading: running, sx: { height: 40 }, children: submitText || t('generate') }))] }));
|
|
84
83
|
}
|
|
85
84
|
exports.default = AutoForm;
|
|
86
85
|
function useInitialFormValues() {
|
|
@@ -89,7 +88,7 @@ function useInitialFormValues() {
|
|
|
89
88
|
const [lastInputs, setLastInputs] = (0, react_1.useState)();
|
|
90
89
|
(0, react_1.useEffect)(() => {
|
|
91
90
|
if (!lastInputs) {
|
|
92
|
-
const lastParameters = lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.
|
|
91
|
+
const lastParameters = lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.inputs;
|
|
93
92
|
if (!(0, isEmpty_1.default)(lastParameters))
|
|
94
93
|
setLastInputs(lastParameters);
|
|
95
94
|
}
|
|
@@ -102,36 +101,6 @@ function useInitialFormValues() {
|
|
|
102
101
|
return Object.fromEntries((_b = (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.map((parameter) => [parameter.key, parameter.defaultValue])) !== null && _b !== void 0 ? _b : []);
|
|
103
102
|
}, [lastInputs, agent]);
|
|
104
103
|
}
|
|
105
|
-
function useFormTheme() {
|
|
106
|
-
const theme = (0, material_1.useTheme)();
|
|
107
|
-
return (0, react_1.useMemo)(() => {
|
|
108
|
-
const themeOptions = {
|
|
109
|
-
shape: {
|
|
110
|
-
borderRadius: 8,
|
|
111
|
-
},
|
|
112
|
-
components: {
|
|
113
|
-
MuiTextField: {
|
|
114
|
-
styleOverrides: {
|
|
115
|
-
root: ({ theme }) => theme.unstable_sx({
|
|
116
|
-
[`.${material_1.outlinedInputClasses.root}`]: {
|
|
117
|
-
[`.${material_1.outlinedInputClasses.notchedOutline}`]: {
|
|
118
|
-
borderWidth: 2,
|
|
119
|
-
borderColor: 'primary.light',
|
|
120
|
-
},
|
|
121
|
-
':hover': {
|
|
122
|
-
[`.${material_1.outlinedInputClasses.notchedOutline}`]: {
|
|
123
|
-
borderColor: 'primary.main',
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
}),
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
return (0, material_1.createTheme)(theme, themeOptions);
|
|
133
|
-
}, [theme]);
|
|
134
|
-
}
|
|
135
104
|
const Form = (0, material_1.styled)(material_1.Stack)(({ theme }) => theme.unstable_sx({
|
|
136
105
|
gap: 2,
|
|
137
106
|
'.form-item': {
|
|
@@ -39,7 +39,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
exports.MessageItemWrapper = void 0;
|
|
41
41
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
42
|
-
const image_preview_1 = __importDefault(require("@blocklet/ai-kit/components/image-preview"));
|
|
43
42
|
const css_1 = require("@emotion/css");
|
|
44
43
|
const material_1 = require("@mui/material");
|
|
45
44
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
@@ -56,8 +55,8 @@ const MessageMetadataRenderer_1 = __importDefault(require("./MessageMetadataRend
|
|
|
56
55
|
const MessageItemView = (0, react_1.memo)((_a) => {
|
|
57
56
|
var _b;
|
|
58
57
|
var { message, hideAvatar } = _a, props = __rest(_a, ["message", "hideAvatar"]);
|
|
59
|
-
const showUserMessage = !!((_b = message.
|
|
60
|
-
return ((0, jsx_runtime_1.jsxs)(MessageItemContainer, Object.assign({}, props, { className: (0, css_1.cx)('ai-chat-message-item', hideAvatar && 'hide-avatar', props.className), children: [showUserMessage && !(0, isEmpty_1.default)(message.
|
|
58
|
+
const showUserMessage = !!((_b = message.inputs) === null || _b === void 0 ? void 0 : _b.question);
|
|
59
|
+
return ((0, jsx_runtime_1.jsxs)(MessageItemContainer, Object.assign({}, props, { className: (0, css_1.cx)('ai-chat-message-item', hideAvatar && 'hide-avatar', props.className), children: [showUserMessage && !(0, isEmpty_1.default)(message.inputs) && (0, jsx_runtime_1.jsx)(UserMessage, { message: message, hideAvatar: hideAvatar }), !(0, isEmpty_1.default)(message.outputs) && (0, jsx_runtime_1.jsx)(AgentMessage, { message: message, hideAvatar: hideAvatar })] })));
|
|
61
60
|
});
|
|
62
61
|
exports.default = MessageItemView;
|
|
63
62
|
const MessageItemContainer = (0, material_1.styled)(material_1.Stack) `
|
|
@@ -109,17 +108,17 @@ function UserMessage({ message, hideAvatar }) {
|
|
|
109
108
|
display: 'flex',
|
|
110
109
|
flexDirection: 'column',
|
|
111
110
|
alignItems: 'flex-end',
|
|
112
|
-
}, children: [!hideAvatar && ((0, jsx_runtime_1.jsxs)(MessageUserName, { children: [(_c = authSession.user) === null || _c === void 0 ? void 0 : _c.fullName, (0, jsx_runtime_1.jsx)(MessageTime, { time: message.createdAt })] })), (0, jsx_runtime_1.jsx)(material_1.Box, { className: "message-question", sx: { whiteSpace: 'pre-wrap', wordBreak: 'break-word', textAlign: 'left' }, children: (_d = message.
|
|
111
|
+
}, children: [!hideAvatar && ((0, jsx_runtime_1.jsxs)(MessageUserName, { children: [(_c = authSession.user) === null || _c === void 0 ? void 0 : _c.fullName, (0, jsx_runtime_1.jsx)(MessageTime, { time: message.createdAt })] })), (0, jsx_runtime_1.jsx)(material_1.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 })] })] }));
|
|
113
112
|
}
|
|
114
113
|
function AgentMessage({ message, hideAvatar }) {
|
|
115
|
-
var _a, _b, _c, _d, _e, _f
|
|
114
|
+
var _a, _b, _c, _d, _e, _f;
|
|
116
115
|
const { aid } = (0, runtime_1.useRuntimeState)();
|
|
117
116
|
const profile = (0, use_appearances_1.useProfile)({ aid });
|
|
118
|
-
const showMainMessage = !!((
|
|
119
|
-
const isMessageLoading = (message.loading || !message.
|
|
117
|
+
const showMainMessage = !!((_a = message.outputs) === null || _a === void 0 ? void 0 : _a.content);
|
|
118
|
+
const isMessageLoading = (message.loading || !message.outputs) && !message.error;
|
|
120
119
|
const theme = (0, material_1.useTheme)();
|
|
121
120
|
const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('sm'));
|
|
122
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Stack, { className: "ai-chat-message-ai", direction: "row", gap: 1.5, children: [!hideAvatar && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(ux_1.Avatar, { size: 40, did: (
|
|
121
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Stack, { className: "ai-chat-message-ai", direction: "row", gap: 1.5, children: [!hideAvatar && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(ux_1.Avatar, { size: 40, did: (_b = globalThis.blocklet) === null || _b === void 0 ? void 0 : _b.appId, variant: "circle", shape: "circle", src: profile.avatar }) })), (0, jsx_runtime_1.jsxs)(material_1.Box, { flex: 1, width: 0, children: [!hideAvatar && ((0, jsx_runtime_1.jsxs)(MessageUserName, { children: [profile.name, (0, jsx_runtime_1.jsx)(MessageTime, { time: message.createdAt })] })), (0, jsx_runtime_1.jsxs)(react_1.default.Suspense, { children: [showMainMessage ? ((0, jsx_runtime_1.jsx)(material_1.Tooltip, { placement: "right-start", slotProps: {
|
|
123
122
|
popper: {
|
|
124
123
|
disablePortal: true,
|
|
125
124
|
modifiers: [
|
|
@@ -135,23 +134,15 @@ function AgentMessage({ message, hideAvatar }) {
|
|
|
135
134
|
sx: { p: 0, bgcolor: 'white' },
|
|
136
135
|
},
|
|
137
136
|
}, title: !isMessageLoading &&
|
|
138
|
-
((
|
|
137
|
+
((_c = message.outputs) === null || _c === void 0 ? void 0 : _c.content) && ((0, jsx_runtime_1.jsx)(ShareActions_1.default, { sx: {
|
|
139
138
|
fontSize: '1rem',
|
|
140
139
|
boxShadow: '0px 4px 8px 0px rgba(3, 7, 18, 0.08)',
|
|
141
140
|
border: '1px solid rgba(229, 231, 235, 1)',
|
|
142
141
|
borderRadius: 1,
|
|
143
142
|
p: 0.25,
|
|
144
|
-
} })), children: (0, jsx_runtime_1.
|
|
145
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
146
|
-
return ((_a = childMsg.result) === null || _a === void 0 ? void 0 : _a.content) ? ((0, jsx_runtime_1.jsx)(MarkdownRenderer_1.default, { className: isMessageLoading &&
|
|
147
|
-
!((_b = message.result) === null || _b === void 0 ? void 0 : _b.content) &&
|
|
148
|
-
!((_d = (_c = message.result) === null || _c === void 0 ? void 0 : _c.images) === null || _d === void 0 ? void 0 : _d.length) &&
|
|
149
|
-
message.result.messages.length - 1 === index
|
|
150
|
-
? 'writing'
|
|
151
|
-
: '', 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) ? ((0, jsx_runtime_1.jsx)(image_preview_1.default, { itemWidth: 100, spacing: 1, dataSource: childMsg.result.images.map((i) => ({ src: i.url })) }, childMsg.taskId)) : null;
|
|
152
|
-
}), ((_h = message.result) === null || _h === void 0 ? void 0 : _h.content) && ((0, jsx_runtime_1.jsx)(MarkdownRenderer_1.default, { className: isMessageLoading ? 'writing' : '', children: message.result.content }))] }) })) : (isMessageLoading && ((0, jsx_runtime_1.jsx)(material_1.Skeleton, { variant: "rectangular", height: 24 + 8 + 8,
|
|
143
|
+
} })), children: (0, jsx_runtime_1.jsx)(material_1.Stack, { gap: 1, className: "message-response", children: ((_d = message.outputs) === null || _d === void 0 ? void 0 : _d.content) && ((0, jsx_runtime_1.jsx)(MarkdownRenderer_1.default, { className: isMessageLoading ? 'writing' : '', children: message.outputs.content })) }) })) : (isMessageLoading && ((0, jsx_runtime_1.jsx)(material_1.Skeleton, { variant: "rectangular", height: 24 + 8 + 8,
|
|
153
144
|
// only response with loading
|
|
154
|
-
className: "message-response" }))), (
|
|
145
|
+
className: "message-response" }))), (_f = (_e = message.outputs) === null || _e === void 0 ? void 0 : _e.objects) === null || _f === void 0 ? void 0 : _f.map((object) => ((0, jsx_runtime_1.jsx)(MessageMetadataRenderer_1.default, { object: object.data }, object.taskId))), message.error && (0, jsx_runtime_1.jsx)(MessageErrorView_1.default, { error: message.error })] })] })] }));
|
|
155
146
|
}
|
|
156
147
|
function MessageItemWrapper(_a) {
|
|
157
148
|
var _b;
|
|
@@ -13,8 +13,8 @@ function ChatOutput({ hideAvatar = true, renderType, }) {
|
|
|
13
13
|
const formattedMessage = (0, react_1.useMemo)(() => {
|
|
14
14
|
if (renderType) {
|
|
15
15
|
return Object.assign({}, message, {
|
|
16
|
-
result: renderType === 'parameters' ? {} : message.
|
|
17
|
-
parameters: renderType === 'result' ? {} : message.
|
|
16
|
+
result: renderType === 'parameters' ? {} : message.outputs,
|
|
17
|
+
parameters: renderType === 'result' ? {} : message.inputs,
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
return message;
|
|
@@ -34,7 +34,7 @@ function GoogleSearchRelatedView({ output, outputValue, onlyLastMessage, }) {
|
|
|
34
34
|
const { aid } = (0, CurrentAgent_1.useCurrentAgent)();
|
|
35
35
|
const { message } = (_a = (0, CurrentMessage_1.useCurrentMessage)({ optional: true })) !== null && _a !== void 0 ? _a : {};
|
|
36
36
|
const lastMessage = (0, session_1.useCurrentSessionState)((s) => { var _a; return (_a = s === null || s === void 0 ? void 0 : s.messages) === null || _a === void 0 ? void 0 : _a.at(-1); });
|
|
37
|
-
const isLastMessage = !!message && (message === null || message === void 0 ? void 0 : message.
|
|
37
|
+
const isLastMessage = !!message && (message === null || message === void 0 ? void 0 : message.id) === (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.id);
|
|
38
38
|
const [submitting, setSubmitting] = (0, react_1.useState)(false);
|
|
39
39
|
const { execute } = (0, runtime_1.useRuntimeState)();
|
|
40
40
|
const result = (0, react_1.useMemo)(() => {
|
|
@@ -55,11 +55,11 @@ function OutputView(_a) {
|
|
|
55
55
|
return ((0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ width: "100%", alignItems: "center", px: { xs: 2, sm: 3 }, mt: { xs: 2, sm: 3 } }, props, { children: [resultTitle && ((0, jsx_runtime_1.jsx)(material_1.Typography, { width: "100%", component: "h2", fontSize: 36, fontWeight: 700, textAlign: "center", children: (0, jsx_runtime_1.jsx)(react_wrap_balancer_1.default, { children: resultTitle }) })), loaded && !messages.length && (0, jsx_runtime_1.jsx)(NoOutputs, {}), (0, jsx_runtime_1.jsxs)(lab_1.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 && ((0, jsx_runtime_1.jsx)(material_1.Skeleton, { variant: "rectangular", sx: {
|
|
56
56
|
// FIXME: default using history height
|
|
57
57
|
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,
|
|
58
|
-
} })), (0, map_right_1.default)(messages, (message) => ((0, jsx_runtime_1.jsx)(OutputItemView, { message: message }, message.
|
|
58
|
+
} })), (0, map_right_1.default)(messages, (message) => ((0, jsx_runtime_1.jsx)(OutputItemView, { message: message }, message.id)))] }), (0, jsx_runtime_1.jsx)(material_1.Box, { my: 4, children: !!messages.length && !noMoreMessage && ((0, jsx_runtime_1.jsx)(LoadingButton_1.default, { variant: "outlined", onClick: () => loadMoreMessages(), children: t('loadMore') })) })] })));
|
|
59
59
|
}
|
|
60
60
|
const OutputItemView = (0, react_1.memo)(({ message }) => {
|
|
61
|
-
const { appearanceOutput } = (0, use_appearances_1.default)({ agentId: message.
|
|
61
|
+
const { appearanceOutput } = (0, use_appearances_1.default)({ agentId: message.agentId });
|
|
62
62
|
if (!(appearanceOutput === null || appearanceOutput === void 0 ? void 0 : appearanceOutput.componentId))
|
|
63
63
|
return null;
|
|
64
|
-
return ((0, jsx_runtime_1.jsx)(CurrentAgent_1.default, { agentId: message.
|
|
64
|
+
return ((0, jsx_runtime_1.jsx)(CurrentAgent_1.default, { agentId: message.agentId, children: (0, jsx_runtime_1.jsx)(CurrentMessage_1.default, { message: message, children: (0, jsx_runtime_1.jsx)(react_1.Suspense, { children: (0, jsx_runtime_1.jsx)(CustomComponentRenderer_1.default, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties }) }) }) }, message.id));
|
|
65
65
|
});
|
|
@@ -41,7 +41,7 @@ function PhotoGalleryItem() {
|
|
|
41
41
|
var _a, _b;
|
|
42
42
|
const { message } = (0, CurrentMessage_1.useCurrentMessage)();
|
|
43
43
|
const [openDialog, setOpenDialog] = (0, react_2.useState)(false);
|
|
44
|
-
const objects = (_b = (_a = message.
|
|
44
|
+
const objects = (_b = (_a = message.outputs) === null || _a === void 0 ? void 0 : _a.objects) !== null && _b !== void 0 ? _b : [];
|
|
45
45
|
const images = objects.flatMap((i) => { var _a; return (_a = i.data[types_1.RuntimeOutputVariable.images]) !== null && _a !== void 0 ? _a : []; });
|
|
46
46
|
if (!images.length && message.error) {
|
|
47
47
|
return ((0, jsx_runtime_1.jsx)(material_1.Stack, { alignItems: "center", justifyContent: "center", sx: {
|
|
@@ -83,7 +83,7 @@ function PhotoGalleryItem() {
|
|
|
83
83
|
background: 'linear-gradient(to bottom, rgba(2, 7, 19, 0) 0%, rgba(2, 7, 19, 0.8) 100%)',
|
|
84
84
|
opacity: 0,
|
|
85
85
|
transition: 'opacity 0.3s',
|
|
86
|
-
}, children: (0, jsx_runtime_1.jsx)(material_1.Box, { sx: Object.assign({ lineHeight: 1.5 }, getLineClamp(3)), children: (_a = message.
|
|
86
|
+
}, children: (0, jsx_runtime_1.jsx)(material_1.Box, { sx: Object.assign({ lineHeight: 1.5 }, getLineClamp(3)), children: (_a = message.inputs) === null || _a === void 0 ? void 0 : _a.question }) }), openDialog && ((0, jsx_runtime_1.jsx)(PromptDialog, { open: true, url: url, onClose: (e) => {
|
|
87
87
|
e.stopPropagation();
|
|
88
88
|
e.preventDefault();
|
|
89
89
|
setOpenDialog(false);
|
|
@@ -100,8 +100,8 @@ function PromptView() {
|
|
|
100
100
|
const { agent } = (0, CurrentAgent_1.useCurrentAgent)();
|
|
101
101
|
const params = (0, react_2.useMemo)(() => {
|
|
102
102
|
var _a;
|
|
103
|
-
return (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.filter(agent_inputs_1.isValidInput).map((i) => { var _a, _b; return [((_a = i.label) === null || _a === void 0 ? void 0 : _a.trim()) || i.key, (_b = message.
|
|
104
|
-
}, [agent.parameters, message.
|
|
103
|
+
return (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.filter(agent_inputs_1.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]);
|
|
104
|
+
}, [agent.parameters, message.inputs]);
|
|
105
105
|
if ((params === null || params === void 0 ? void 0 : params.length) === 1) {
|
|
106
106
|
return (_a = params[0]) === null || _a === void 0 ? void 0 : _a[1];
|
|
107
107
|
}
|
|
@@ -111,7 +111,7 @@ function PromptDialog(_a) {
|
|
|
111
111
|
var _b, _c, _d;
|
|
112
112
|
var { url } = _a, props = __rest(_a, ["url"]);
|
|
113
113
|
const { message } = (0, CurrentMessage_1.useCurrentMessage)();
|
|
114
|
-
const { parameters } = message;
|
|
114
|
+
const { inputs: parameters } = message;
|
|
115
115
|
const { t } = (0, locale_1.useLocaleContext)();
|
|
116
116
|
const { session: authSession } = (0, session_1.useSessionContext)();
|
|
117
117
|
const borderRadius = 1;
|
|
@@ -43,6 +43,7 @@ const material_1 = require("@mui/material");
|
|
|
43
43
|
const react_1 = require("react");
|
|
44
44
|
const CustomComponentRenderer_1 = __importDefault(require("../../../../../components/CustomComponentRenderer"));
|
|
45
45
|
const session_1 = require("../../../../session");
|
|
46
|
+
const AgentErrorBoundary_1 = require("../../components/AgentErrorBoundary");
|
|
46
47
|
const UserInfo_1 = __importDefault(require("../../components/UserInfo"));
|
|
47
48
|
const ComponentPreferences_1 = require("../../contexts/ComponentPreferences");
|
|
48
49
|
const CurrentAgent_1 = __importDefault(require("../../contexts/CurrentAgent"));
|
|
@@ -54,13 +55,13 @@ const MessageView = (0, react_1.memo)(({ message }) => {
|
|
|
54
55
|
const preferences = (0, ComponentPreferences_1.useComponentPreferences)();
|
|
55
56
|
const hasBg = !!((_a = preferences === null || preferences === void 0 ? void 0 : preferences.backgroundImage) === null || _a === void 0 ? void 0 : _a.url);
|
|
56
57
|
const { session: authSession } = (0, session_1.useSessionContext)();
|
|
57
|
-
const { appearanceOutput } = (0, use_appearances_1.default)({ agentId: message.
|
|
58
|
-
const profile = (0, use_appearances_1.useProfile)({ agentId: message.
|
|
58
|
+
const { appearanceOutput } = (0, use_appearances_1.default)({ agentId: message.agentId });
|
|
59
|
+
const profile = (0, use_appearances_1.useProfile)({ agentId: message.agentId });
|
|
59
60
|
const { hideAgentAvatar, hideUserInputs } = (_b = (0, ComponentPreferences_1.useComponentPreferences)()) !== null && _b !== void 0 ? _b : {};
|
|
60
61
|
if (!(appearanceOutput === null || appearanceOutput === void 0 ? void 0 : appearanceOutput.componentId))
|
|
61
62
|
return null;
|
|
62
|
-
const agentMessage = ((0, jsx_runtime_1.jsx)(MessageBodyContainer, { messageRole: "assistant", children: (0, jsx_runtime_1.jsx)(CustomComponentRenderer_1.default, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties }) }));
|
|
63
|
-
return ((0, jsx_runtime_1.jsx)(CurrentAgent_1.default, { agentId: message.
|
|
63
|
+
const agentMessage = ((0, jsx_runtime_1.jsx)(MessageBodyContainer, { messageRole: "assistant", children: (0, jsx_runtime_1.jsx)(CustomComponentRenderer_1.default, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties, fallbackRender: AgentErrorBoundary_1.AgentErrorView }) }));
|
|
64
|
+
return ((0, jsx_runtime_1.jsx)(CurrentAgent_1.default, { agentId: message.agentId, children: (0, jsx_runtime_1.jsx)(CurrentMessage_1.default, { message: message, children: (0, jsx_runtime_1.jsxs)(material_1.Stack, { gap: 2, children: [!hideUserInputs && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(UserInfo_1.default, { 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: (0, jsx_runtime_1.jsx)(material_1.Stack, { sx: { alignItems: 'flex-end' }, children: (0, jsx_runtime_1.jsx)(MessageBodyContainer, { messageRole: "user", children: (0, jsx_runtime_1.jsx)(UserMessageView_1.default, {}) }) }) }) })), (0, jsx_runtime_1.jsx)(material_1.Box, { children: !hideAgentAvatar ? ((0, jsx_runtime_1.jsx)(UserInfo_1.default, { 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) })] }) }) }));
|
|
64
65
|
});
|
|
65
66
|
exports.default = MessageView;
|
|
66
67
|
function MessageBodyContainer(_a) {
|
|
@@ -27,6 +27,6 @@ function MessagesView(_a) {
|
|
|
27
27
|
const loaded = (0, session_1.useSessionState)((s) => s.loaded);
|
|
28
28
|
const showOpening = (0, session_1.useCurrentSessionState)((s) => !s || (s === null || s === void 0 ? void 0 : s.loaded)) && loaded;
|
|
29
29
|
const divider = (_b = (0, ComponentPreferences_1.useComponentPreferences)()) === null || _b === void 0 ? void 0 : _b.divider;
|
|
30
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ gap: 2 }, props, { children: [showOpening && (0, jsx_runtime_1.jsx)(OpeningMessageView_1.default, { isMessagesEmpty: !(messages === null || messages === void 0 ? void 0 : messages.length) }), messages === null || messages === void 0 ? void 0 : messages.map((message, index) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(MessageView_1.default, { message: message }, message.
|
|
30
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ gap: 2 }, props, { children: [showOpening && (0, jsx_runtime_1.jsx)(OpeningMessageView_1.default, { isMessagesEmpty: !(messages === null || messages === void 0 ? void 0 : messages.length) }), messages === null || messages === void 0 ? void 0 : messages.map((message, index) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(MessageView_1.default, { message: message }, message.id), divider && index !== messages.length - 1 ? (0, jsx_runtime_1.jsx)(material_1.Divider, { sx: { my: 2 } }) : undefined] })))] })));
|
|
31
31
|
}
|
|
32
32
|
exports.default = MessagesView;
|
|
@@ -16,10 +16,10 @@ function UserMessageView() {
|
|
|
16
16
|
const { agent } = (0, CurrentAgent_1.useCurrentAgent)();
|
|
17
17
|
const params = (0, react_1.useMemo)(() => {
|
|
18
18
|
var _a;
|
|
19
|
-
const inputs = (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.filter(agent_inputs_1.isValidInput).map((i) => { var _a, _b; return [((_a = i.label) === null || _a === void 0 ? void 0 : _a.trim()) || i.key, (_b = message.
|
|
19
|
+
const inputs = (_a = agent.parameters) === null || _a === void 0 ? void 0 : _a.filter(agent_inputs_1.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]);
|
|
20
20
|
const q = inputs === null || inputs === void 0 ? void 0 : inputs.find((i) => i[0] === 'question');
|
|
21
21
|
return q ? [q] : inputs;
|
|
22
|
-
}, [agent.parameters, message.
|
|
22
|
+
}, [agent.parameters, message.inputs]);
|
|
23
23
|
if ((params === null || params === void 0 ? void 0 : params.length) === 1) {
|
|
24
24
|
return (0, jsx_runtime_1.jsx)(MarkdownRenderer_1.default, { children: (_a = params[0]) === null || _a === void 0 ? void 0 : _a[1] });
|
|
25
25
|
}
|
|
@@ -33,11 +33,12 @@ function SimpleOutput() {
|
|
|
33
33
|
if (!(outputs === null || outputs === void 0 ? void 0 : outputs.length))
|
|
34
34
|
return null;
|
|
35
35
|
return ((0, jsx_runtime_1.jsx)(material_1.Stack, { gap: 2, children: outputs.map((output) => {
|
|
36
|
-
var _a, _b, _c, _d, _e, _f;
|
|
36
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
37
37
|
const value = output.name === types_1.RuntimeOutputVariable.text
|
|
38
|
-
? (_a = message.
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
? ((_a = message.outputs) === null || _a === void 0 ? void 0 : _a.content) ||
|
|
39
|
+
((_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[types_1.RuntimeOutputVariable.text])) === null || _d === void 0 ? void 0 : _d[types_1.RuntimeOutputVariable.text])
|
|
40
|
+
: (_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];
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)(CustomComponentRenderer_1.default, { instanceId: output.id, componentId: output.appearance.componentId, properties: output.appearance.componentProperties, props: Object.assign({ output, outputValue: value, writing: output.name === types_1.RuntimeOutputVariable.text && message.loading }, (((_h = output === null || output === void 0 ? void 0 : output.appearance) === null || _h === void 0 ? void 0 : _h.componentProps) || {})) }, output.id));
|
|
41
42
|
}) }));
|
|
42
43
|
}
|
|
43
44
|
exports.default = SimpleOutput;
|
|
@@ -45,8 +45,8 @@ function OutputView(_a) {
|
|
|
45
45
|
return ((0, jsx_runtime_1.jsx)(material_1.Stack, Object.assign({ gap: 2, mt: 4 }, props, { children: lastMessage && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [resultTitle && ((0, jsx_runtime_1.jsx)(material_1.Typography, { width: "100%", component: "h5", fontSize: 36, fontWeight: 700, textAlign: "center", children: (0, jsx_runtime_1.jsx)(react_wrap_balancer_1.default, { children: resultTitle }) })), (0, jsx_runtime_1.jsx)(material_1.Stack, { children: (0, jsx_runtime_1.jsx)(OutputItemView, { message: lastMessage }) })] })) })));
|
|
46
46
|
}
|
|
47
47
|
const OutputItemView = (0, react_1.memo)(({ message }) => {
|
|
48
|
-
const { appearanceOutput } = (0, use_appearances_1.default)({ agentId: message.
|
|
48
|
+
const { appearanceOutput } = (0, use_appearances_1.default)({ agentId: message.agentId });
|
|
49
49
|
if (!(appearanceOutput === null || appearanceOutput === void 0 ? void 0 : appearanceOutput.componentId))
|
|
50
50
|
return null;
|
|
51
|
-
return ((0, jsx_runtime_1.jsx)(CurrentAgent_1.default, { agentId: message.
|
|
51
|
+
return ((0, jsx_runtime_1.jsx)(CurrentAgent_1.default, { agentId: message.agentId, children: (0, jsx_runtime_1.jsx)(CurrentMessage_1.default, { message: message, children: (0, jsx_runtime_1.jsx)(react_1.Suspense, { children: (0, jsx_runtime_1.jsx)(CustomComponentRenderer_1.default, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties }) }) }) }));
|
|
52
52
|
});
|
|
@@ -30,7 +30,7 @@ function SuggestedQuestionsView({ output, outputValue, onlyLastMessage, }) {
|
|
|
30
30
|
var _a;
|
|
31
31
|
const { message } = (_a = (0, CurrentMessage_1.useCurrentMessage)({ optional: true })) !== null && _a !== void 0 ? _a : {};
|
|
32
32
|
const lastMessage = (0, session_1.useCurrentSessionState)((s) => { var _a; return (_a = s === null || s === void 0 ? void 0 : s.messages) === null || _a === void 0 ? void 0 : _a.at(-1); });
|
|
33
|
-
const isLastMessage = !!message && message.
|
|
33
|
+
const isLastMessage = !!message && message.id === (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.id);
|
|
34
34
|
const questions = (0, react_1.useMemo)(() => {
|
|
35
35
|
const result = suggestedQuestionsSchema.validate(outputValue, { allowUnknown: true });
|
|
36
36
|
if (result.error)
|
|
@@ -42,7 +42,7 @@ function SuggestedQuestionsView({ output, outputValue, onlyLastMessage, }) {
|
|
|
42
42
|
if (!message || (!isLastMessage && onlyLastMessage) || !(questions === null || questions === void 0 ? void 0 : questions.length))
|
|
43
43
|
return null;
|
|
44
44
|
return ((0, jsx_runtime_1.jsx)(OutputFieldContainer_1.default, { output: output, children: (0, jsx_runtime_1.jsx)(material_1.Stack, { gap: 1, children: questions.map((item) => ((0, jsx_runtime_1.jsx)(MessageSuggestedQuestion, { onClick: () => {
|
|
45
|
-
execute({ aid, parameters: Object.assign(Object.assign({}, message.
|
|
45
|
+
execute({ aid, parameters: Object.assign(Object.assign({}, message.inputs), { question: item.question }) });
|
|
46
46
|
}, children: item.question }, item.question))) }) }));
|
|
47
47
|
}
|
|
48
48
|
exports.default = SuggestedQuestionsView;
|
|
@@ -126,7 +126,7 @@ function useInitialFormValues() {
|
|
|
126
126
|
const [lastInputs, setLastInputs] = (0, react_2.useState)();
|
|
127
127
|
(0, react_2.useEffect)(() => {
|
|
128
128
|
if (autoSetLastParameters && !lastInputs) {
|
|
129
|
-
const lastParameters = lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.
|
|
129
|
+
const lastParameters = lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.inputs;
|
|
130
130
|
if (!(0, isEmpty_1.default)(lastParameters))
|
|
131
131
|
setLastInputs(lastParameters);
|
|
132
132
|
}
|
|
@@ -44,9 +44,9 @@ function V0Output() {
|
|
|
44
44
|
sx: DEFAULT_DESKTOP_SX,
|
|
45
45
|
key: 'Desktop',
|
|
46
46
|
});
|
|
47
|
-
const objects = (_a = message.
|
|
48
|
-
const { taskId,
|
|
49
|
-
const isMessageLoading = (message.loading || !message.
|
|
47
|
+
const objects = (_a = message.outputs) === null || _a === void 0 ? void 0 : _a.objects;
|
|
48
|
+
const { id: taskId, inputs } = message;
|
|
49
|
+
const isMessageLoading = (message.loading || !message.outputs) && !message.error;
|
|
50
50
|
const disabled = isMessageLoading || !(objects === null || objects === void 0 ? void 0 : objects.length) || message.error;
|
|
51
51
|
const responsiveSx = {
|
|
52
52
|
backgroundColor: 'white',
|
|
@@ -213,7 +213,7 @@ function V0Output() {
|
|
|
213
213
|
border: 1,
|
|
214
214
|
borderColor: 'rgba(0, 0, 0, 0.1) !important',
|
|
215
215
|
},
|
|
216
|
-
}, children: [(0, jsx_runtime_1.jsx)(UserQuestion_1.default, { question:
|
|
216
|
+
}, children: [(0, jsx_runtime_1.jsx)(UserQuestion_1.default, { question: inputs === null || inputs === void 0 ? void 0 : inputs.question }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
217
217
|
display: 'flex',
|
|
218
218
|
alignItems: 'center',
|
|
219
219
|
gap: 1,
|
|
@@ -230,7 +230,7 @@ function V0Output() {
|
|
|
230
230
|
overflowY: 'auto',
|
|
231
231
|
scrollbarWidth: 'thin',
|
|
232
232
|
scrollbarColor: 'grey transparent',
|
|
233
|
-
}, propertiesValueMap: propertiesValueMap }) }), objects === null || objects === void 0 ? void 0 : objects.map((item, index) => (0, jsx_runtime_1.jsx)(MessageMetadataRenderer_1.default, { object: item.data }, index)), !isMessageLoading && ((_b = message.
|
|
233
|
+
}, propertiesValueMap: propertiesValueMap }) }), objects === null || objects === void 0 ? void 0 : objects.map((item, index) => (0, jsx_runtime_1.jsx)(MessageMetadataRenderer_1.default, { object: item.data }, index)), !isMessageLoading && ((_b = message.outputs) === null || _b === void 0 ? void 0 : _b.content) && ((0, jsx_runtime_1.jsx)(ShareActions_1.default, { direction: "row", justifyContent: "flex-end", sx: { mt: 2 } })), (0, jsx_runtime_1.jsxs)(react_2.Suspense, { fallback: (0, jsx_runtime_1.jsx)(Loading_1.default, {}), children: [(0, jsx_runtime_1.jsx)(material_1.Drawer, { anchor: isMobile ? 'bottom' : 'right', open: !!code, onClose: onCloseCode, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: Object.assign({ p: 2, pt: 0 }, (isMobile ? { maxHeight: '70vh' } : { maxWidth: '70vw' })), children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: {
|
|
234
234
|
py: 2,
|
|
235
235
|
position: 'sticky',
|
|
236
236
|
top: 0,
|
|
@@ -186,18 +186,18 @@ function V0DetailRender() {
|
|
|
186
186
|
// FIXME: 现在临时把 error 的消息隐藏了,后续需要优化
|
|
187
187
|
const messagesList = messagesListOriginal === null || messagesListOriginal === void 0 ? void 0 : messagesListOriginal.filter((message, index) => {
|
|
188
188
|
var _a, _b;
|
|
189
|
-
return (!(message === null || message === void 0 ? void 0 : message.error) && ((_b = (_a = message === null || message === void 0 ? void 0 : message.
|
|
190
|
-
message.
|
|
189
|
+
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)) ||
|
|
190
|
+
message.id === currentMessageTaskId ||
|
|
191
191
|
index === messagesListOriginal.length - 1;
|
|
192
192
|
});
|
|
193
|
-
const currentMessage = messagesList === null || messagesList === void 0 ? void 0 : messagesList.find((message) => message.
|
|
193
|
+
const currentMessage = messagesList === null || messagesList === void 0 ? void 0 : messagesList.find((message) => message.id === currentMessageTaskId);
|
|
194
194
|
(0, react_2.useEffect)(() => {
|
|
195
195
|
if (messagesList === null || messagesList === void 0 ? void 0 : messagesList.length) {
|
|
196
196
|
const latestMessage = messagesList === null || messagesList === void 0 ? void 0 : messagesList.at(-1);
|
|
197
197
|
// no currentMessageTaskId or has new message
|
|
198
|
-
if (!currentMessageTaskId || (currentMessageTaskId === (latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.
|
|
198
|
+
if (!currentMessageTaskId || (currentMessageTaskId === (latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.id) && (messagesList === null || messagesList === void 0 ? void 0 : messagesList.length) > 1)) {
|
|
199
199
|
// @ts-ignore
|
|
200
|
-
setCurrentMessageTaskId(latestMessage.
|
|
200
|
+
setCurrentMessageTaskId(latestMessage.id);
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
}, [messagesList, currentMessageTaskId]);
|
|
@@ -243,7 +243,7 @@ function V0DetailRender() {
|
|
|
243
243
|
'&::-webkit-scrollbar': {
|
|
244
244
|
display: 'none',
|
|
245
245
|
} }), children: messagesList === null || messagesList === void 0 ? void 0 : messagesList.map((item, i) => {
|
|
246
|
-
const { parameters, taskId, updatedAt } = item;
|
|
246
|
+
const { inputs: parameters, id: taskId, updatedAt } = item;
|
|
247
247
|
const isCurrent = taskId === (currentMessageTaskId || undefined);
|
|
248
248
|
return ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
249
249
|
display: 'flex',
|
|
@@ -252,7 +252,7 @@ function V0DetailRender() {
|
|
|
252
252
|
gap: 1,
|
|
253
253
|
}, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { id: taskId, onClick: () => {
|
|
254
254
|
// @ts-ignore
|
|
255
|
-
setCurrentMessageTaskId(item.
|
|
255
|
+
setCurrentMessageTaskId(item.id);
|
|
256
256
|
}, 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': {
|
|
257
257
|
borderColor: 'primary.main',
|
|
258
258
|
} }, (isMobile
|
|
@@ -66,9 +66,9 @@ function RetryComponent({ message, tip }) {
|
|
|
66
66
|
} }) })] }), (0, jsx_runtime_1.jsx)(LoadingButton_1.default, { variant: "contained", loading: loading, color: "primary", onClick: () => __awaiter(this, void 0, void 0, function* () {
|
|
67
67
|
setLoading(true);
|
|
68
68
|
try {
|
|
69
|
-
const {
|
|
69
|
+
const { inputs } = message || {};
|
|
70
70
|
// remove $ starting parameters object
|
|
71
|
-
const canUseParameters = Object.fromEntries(Object.entries(
|
|
71
|
+
const canUseParameters = Object.fromEntries(Object.entries(inputs || {}).filter(([key]) => !key.startsWith('$')));
|
|
72
72
|
yield execute({
|
|
73
73
|
aid,
|
|
74
74
|
parameters: canUseParameters,
|
|
@@ -119,7 +119,7 @@ function CodeRenderByMessage({ zoom, message, minHeight = 200, sx, propertiesVal
|
|
|
119
119
|
minHeight,
|
|
120
120
|
},
|
|
121
121
|
};
|
|
122
|
-
const isMessageLoading = ((message === null || message === void 0 ? void 0 : message.loading) || !(message === null || message === void 0 ? void 0 : message.
|
|
122
|
+
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);
|
|
123
123
|
const ContentRender = (0, react_2.useCallback)(() => {
|
|
124
124
|
var _a, _b, _c, _d;
|
|
125
125
|
if (isMessageLoading) {
|
|
@@ -130,10 +130,10 @@ function CodeRenderByMessage({ zoom, message, minHeight = 200, sx, propertiesVal
|
|
|
130
130
|
alignItems: 'center',
|
|
131
131
|
}, children: (0, jsx_runtime_1.jsx)(Loading_1.AIRunningLoading, {}) }));
|
|
132
132
|
}
|
|
133
|
-
if ((message === null || message === void 0 ? void 0 : message.error) || !((_b = (_a = message === null || message === void 0 ? void 0 : message.
|
|
133
|
+
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)) {
|
|
134
134
|
return (0, jsx_runtime_1.jsx)(RetryComponent, { message: message });
|
|
135
135
|
}
|
|
136
|
-
return (_d = (_c = message === null || message === void 0 ? void 0 : message.
|
|
136
|
+
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) => {
|
|
137
137
|
var _a, _b, _c;
|
|
138
138
|
const { taskId } = item;
|
|
139
139
|
// @ts-ignore
|
|
@@ -141,16 +141,16 @@ function CodeRenderByMessage({ zoom, message, minHeight = 200, sx, propertiesVal
|
|
|
141
141
|
return ((0, jsx_runtime_1.jsx)(exports.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));
|
|
142
142
|
});
|
|
143
143
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
144
|
-
}, [isMessageLoading, (_a = message === null || message === void 0 ? void 0 : message.
|
|
144
|
+
}, [isMessageLoading, (_a = message === null || message === void 0 ? void 0 : message.outputs) === null || _a === void 0 ? void 0 : _a.objects, propertiesValueMap, locale]);
|
|
145
145
|
return ((0, jsx_runtime_1.jsx)(material_1.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': {
|
|
146
146
|
// p: 2,
|
|
147
|
-
} }), children: (0, jsx_runtime_1.jsx)(ContentRender, {}) }, message === null || message === void 0 ? void 0 : message.
|
|
147
|
+
} }), children: (0, jsx_runtime_1.jsx)(ContentRender, {}) }, message === null || message === void 0 ? void 0 : message.id));
|
|
148
148
|
}
|
|
149
149
|
exports.CodeRenderByMessage = CodeRenderByMessage;
|
|
150
150
|
exports.CodeRenderByMessageMemo = (0, react_2.memo)(CodeRenderByMessage);
|
|
151
151
|
function getCurrentCodeByTaskId(message, taskId) {
|
|
152
152
|
var _a, _b, _c, _d;
|
|
153
153
|
// @ts-ignore
|
|
154
|
-
return (_d = (_c = (_b = (_a = message === null || message === void 0 ? void 0 : message.
|
|
154
|
+
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];
|
|
155
155
|
}
|
|
156
156
|
exports.getCurrentCodeByTaskId = getCurrentCodeByTaskId;
|
|
@@ -9,21 +9,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.useAgentState =
|
|
12
|
+
exports.useAgentState = void 0;
|
|
13
13
|
const zustand_1 = require("zustand");
|
|
14
14
|
const immer_1 = require("zustand/middleware/immer");
|
|
15
15
|
const agent_1 = require("../api/agent");
|
|
16
16
|
const Runtime_1 = require("../contexts/Runtime");
|
|
17
17
|
const zustand_2 = require("../utils/zustand");
|
|
18
|
-
const createAgentState = ({ aid, working, agent }) => {
|
|
19
|
-
return (0, zustand_2.createCachedStore)(`agent-state-${aid}-${working}`, () => (0, zustand_1.create)()((0, immer_1.immer)((set) => ({
|
|
18
|
+
const createAgentState = ({ blockletDid, aid, working, agent, }) => {
|
|
19
|
+
return (0, zustand_2.createCachedStore)(`agent-state-${blockletDid}-${aid}-${working}`, () => (0, zustand_1.create)()((0, immer_1.immer)((set) => ({
|
|
20
20
|
agent,
|
|
21
21
|
load: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
22
|
set((state) => {
|
|
23
23
|
state.loading = true;
|
|
24
24
|
});
|
|
25
25
|
try {
|
|
26
|
-
const agent = yield (0, agent_1.getAgent)({ aid, working });
|
|
26
|
+
const agent = yield (0, agent_1.getAgent)({ blockletDid, aid, working });
|
|
27
27
|
set((state) => {
|
|
28
28
|
state.agent = agent;
|
|
29
29
|
});
|
|
@@ -42,16 +42,15 @@ const createAgentState = ({ aid, working, agent }) => {
|
|
|
42
42
|
}),
|
|
43
43
|
}))));
|
|
44
44
|
};
|
|
45
|
-
exports.createAgentState = createAgentState;
|
|
46
45
|
const LOADING_TASKS = {};
|
|
47
|
-
function useAgentState({ aid, working }) {
|
|
46
|
+
function useAgentState({ blockletDid, aid, working, }) {
|
|
48
47
|
var _a;
|
|
49
48
|
const runtimeState = (0, Runtime_1.useRuntimeContext)();
|
|
50
|
-
const state =
|
|
49
|
+
const state = createAgentState({ blockletDid, aid, working: working !== null && working !== void 0 ? working : runtimeState.working })();
|
|
51
50
|
if (!state.agent) {
|
|
52
51
|
if (state.error)
|
|
53
52
|
throw state.error;
|
|
54
|
-
const key = `agent-loading-${aid}-${working}`;
|
|
53
|
+
const key = `agent-loading-${blockletDid}-${aid}-${working}`;
|
|
55
54
|
(_a = LOADING_TASKS[key]) !== null && _a !== void 0 ? _a : (LOADING_TASKS[key] = state.load());
|
|
56
55
|
throw LOADING_TASKS[key];
|
|
57
56
|
}
|