@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.
Files changed (97) hide show
  1. package/lib/cjs/builtin/async/ai-runtime/api/agent.js +3 -5
  2. package/lib/cjs/builtin/async/ai-runtime/api/message.js +2 -4
  3. package/lib/cjs/builtin/async/ai-runtime/api/request.js +5 -1
  4. package/lib/cjs/builtin/async/ai-runtime/api/{subscription.js → secret.js} +7 -15
  5. package/lib/cjs/builtin/async/ai-runtime/api/session.js +9 -10
  6. package/lib/cjs/builtin/async/ai-runtime/components/AgentErrorBoundary.js +27 -0
  7. package/lib/cjs/builtin/async/ai-runtime/components/AgentSettings/AgentSettingsDialog.js +80 -0
  8. package/lib/cjs/builtin/async/ai-runtime/components/PopperMenuButton/LoadingMenuItem.js +1 -1
  9. package/lib/cjs/builtin/async/ai-runtime/components/ShareActions/index.js +10 -10
  10. package/lib/cjs/builtin/async/ai-runtime/constants.js +2 -1
  11. package/lib/cjs/builtin/async/ai-runtime/contexts/CurrentAgent.js +2 -2
  12. package/lib/cjs/builtin/async/ai-runtime/contexts/Runtime.js +4 -3
  13. package/lib/cjs/builtin/async/ai-runtime/hooks/use-agent-admin.js +11 -0
  14. package/lib/cjs/builtin/async/ai-runtime/hooks/use-header-menu.js +10 -2
  15. package/lib/cjs/builtin/async/ai-runtime/locales/index.js +4 -0
  16. package/lib/cjs/builtin/async/ai-runtime/runtime/Runtime/index.js +5 -4
  17. package/lib/cjs/builtin/async/ai-runtime/runtime-components/AutoForm/index.js +26 -57
  18. package/lib/cjs/builtin/async/ai-runtime/runtime-components/ChatOutput/MessageItemView.js +10 -19
  19. package/lib/cjs/builtin/async/ai-runtime/runtime-components/ChatOutput/index.js +2 -2
  20. package/lib/cjs/builtin/async/ai-runtime/runtime-components/GoogleSearch/GoogleSearchRelatedQuestionsView.js +1 -1
  21. package/lib/cjs/builtin/async/ai-runtime/runtime-components/PhotoGallery/index.js +3 -3
  22. package/lib/cjs/builtin/async/ai-runtime/runtime-components/PhotoGalleryItem/index.js +5 -5
  23. package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimpleChat/MessageView.js +5 -4
  24. package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimpleChat/MessagesView.js +1 -1
  25. package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimpleChat/UserMessageView.js +2 -2
  26. package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimpleOutput/index.js +5 -4
  27. package/lib/cjs/builtin/async/ai-runtime/runtime-components/SimplePage/index.js +2 -2
  28. package/lib/cjs/builtin/async/ai-runtime/runtime-components/SuggestedQuestionsView/index.js +2 -2
  29. package/lib/cjs/builtin/async/ai-runtime/runtime-components/V0/Input.js +1 -1
  30. package/lib/cjs/builtin/async/ai-runtime/runtime-components/V0/Output.js +5 -5
  31. package/lib/cjs/builtin/async/ai-runtime/runtime-components/V0/Page.js +7 -7
  32. package/lib/cjs/builtin/async/ai-runtime/runtime-components/V0/components/CodePreview.js +8 -8
  33. package/lib/cjs/builtin/async/ai-runtime/state/agent.js +7 -8
  34. package/lib/cjs/builtin/async/ai-runtime/state/runtime.js +5 -5
  35. package/lib/cjs/builtin/async/ai-runtime/state/session.js +15 -17
  36. package/lib/cjs/builtin/page/header.js +3 -3
  37. package/lib/cjs/components/CustomComponentRenderer/index.js +1 -1
  38. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  39. package/lib/esm/builtin/async/ai-runtime/api/agent.js +4 -6
  40. package/lib/esm/builtin/async/ai-runtime/api/message.js +3 -5
  41. package/lib/esm/builtin/async/ai-runtime/api/request.js +3 -0
  42. package/lib/esm/builtin/async/ai-runtime/api/{subscription.js → secret.js} +7 -14
  43. package/lib/esm/builtin/async/ai-runtime/api/session.js +10 -11
  44. package/lib/esm/builtin/async/ai-runtime/components/AgentErrorBoundary.js +22 -0
  45. package/lib/esm/builtin/async/ai-runtime/components/AgentSettings/AgentSettingsDialog.js +76 -0
  46. package/lib/esm/builtin/async/ai-runtime/components/PopperMenuButton/LoadingMenuItem.js +1 -1
  47. package/lib/esm/builtin/async/ai-runtime/components/ShareActions/index.js +10 -10
  48. package/lib/esm/builtin/async/ai-runtime/constants.js +1 -0
  49. package/lib/esm/builtin/async/ai-runtime/contexts/CurrentAgent.js +2 -2
  50. package/lib/esm/builtin/async/ai-runtime/contexts/Runtime.js +4 -3
  51. package/lib/esm/builtin/async/ai-runtime/hooks/use-agent-admin.js +7 -0
  52. package/lib/esm/builtin/async/ai-runtime/hooks/use-header-menu.js +11 -3
  53. package/lib/esm/builtin/async/ai-runtime/locales/index.js +4 -0
  54. package/lib/esm/builtin/async/ai-runtime/runtime/Runtime/index.js +5 -4
  55. package/lib/esm/builtin/async/ai-runtime/runtime-components/AutoForm/index.js +27 -58
  56. package/lib/esm/builtin/async/ai-runtime/runtime-components/ChatOutput/MessageItemView.js +10 -19
  57. package/lib/esm/builtin/async/ai-runtime/runtime-components/ChatOutput/index.js +2 -2
  58. package/lib/esm/builtin/async/ai-runtime/runtime-components/GoogleSearch/GoogleSearchRelatedQuestionsView.js +1 -1
  59. package/lib/esm/builtin/async/ai-runtime/runtime-components/PhotoGallery/index.js +3 -3
  60. package/lib/esm/builtin/async/ai-runtime/runtime-components/PhotoGalleryItem/index.js +5 -5
  61. package/lib/esm/builtin/async/ai-runtime/runtime-components/SimpleChat/MessageView.js +5 -4
  62. package/lib/esm/builtin/async/ai-runtime/runtime-components/SimpleChat/MessagesView.js +1 -1
  63. package/lib/esm/builtin/async/ai-runtime/runtime-components/SimpleChat/UserMessageView.js +2 -2
  64. package/lib/esm/builtin/async/ai-runtime/runtime-components/SimpleOutput/index.js +5 -4
  65. package/lib/esm/builtin/async/ai-runtime/runtime-components/SimplePage/index.js +2 -2
  66. package/lib/esm/builtin/async/ai-runtime/runtime-components/SuggestedQuestionsView/index.js +2 -2
  67. package/lib/esm/builtin/async/ai-runtime/runtime-components/V0/Input.js +1 -1
  68. package/lib/esm/builtin/async/ai-runtime/runtime-components/V0/Output.js +5 -5
  69. package/lib/esm/builtin/async/ai-runtime/runtime-components/V0/Page.js +7 -7
  70. package/lib/esm/builtin/async/ai-runtime/runtime-components/V0/components/CodePreview.js +8 -8
  71. package/lib/esm/builtin/async/ai-runtime/state/agent.js +6 -6
  72. package/lib/esm/builtin/async/ai-runtime/state/runtime.js +5 -5
  73. package/lib/esm/builtin/async/ai-runtime/state/session.js +15 -17
  74. package/lib/esm/builtin/page/header.js +3 -3
  75. package/lib/esm/components/CustomComponentRenderer/BlockletReactComponentRenderer.js +1 -1
  76. package/lib/esm/components/CustomComponentRenderer/index.js +1 -1
  77. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  78. package/lib/types/builtin/async/ai-runtime/api/agent.d.ts +10 -1
  79. package/lib/types/builtin/async/ai-runtime/api/message.d.ts +4 -15
  80. package/lib/types/builtin/async/ai-runtime/api/request.d.ts +1 -0
  81. package/lib/types/builtin/async/ai-runtime/api/secret.d.ts +12 -0
  82. package/lib/types/builtin/async/ai-runtime/api/session.d.ts +5 -8
  83. package/lib/types/builtin/async/ai-runtime/components/AgentErrorBoundary.d.ts +4 -0
  84. package/lib/types/builtin/async/ai-runtime/components/AgentSettings/AgentSettingsDialog.d.ts +10 -0
  85. package/lib/types/builtin/async/ai-runtime/constants.d.ts +1 -0
  86. package/lib/types/builtin/async/ai-runtime/contexts/Runtime.d.ts +3 -1
  87. package/lib/types/builtin/async/ai-runtime/hooks/use-agent-admin.d.ts +2 -0
  88. package/lib/types/builtin/async/ai-runtime/locales/index.d.ts +4 -0
  89. package/lib/types/builtin/async/ai-runtime/runtime/Runtime/index.d.ts +2 -1
  90. package/lib/types/builtin/async/ai-runtime/state/agent.d.ts +2 -6
  91. package/lib/types/builtin/async/ai-runtime/state/runtime.d.ts +2 -0
  92. package/lib/types/builtin/async/ai-runtime/state/session.d.ts +1 -0
  93. package/lib/types/builtin/page/header.d.ts +2 -2
  94. package/lib/types/components/CustomComponentRenderer/index.d.ts +3 -0
  95. package/lib/types/tsconfig.tsbuildinfo +1 -1
  96. package/package.json +3 -3
  97. 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.jsx)(material_1.ThemeProvider, { theme: theme, children: (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) => {
60
- const { key, required } = parameter !== null && parameter !== void 0 ? parameter : {};
61
- 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: {
62
- required,
63
- min: parameter.type === 'number' && typeof parameter.min === 'number'
64
- ? { value: parameter.min, message: '' }
65
- : undefined,
66
- max: parameter.type === 'number' && typeof parameter.max === 'number'
67
- ? { value: parameter.max, message: '' }
68
- : undefined,
69
- minLength: parameter.type === 'string' && typeof parameter.minLength === 'number'
70
- ? { value: parameter.minLength, message: '' }
71
- : undefined,
72
- maxLength: parameter.type === 'string' && typeof parameter.maxLength === 'number'
73
- ? { value: parameter.maxLength, message: '' }
74
- : undefined,
75
- }, render: ({ field, fieldState }) => {
76
- var _a;
77
- 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
78
- ? {
79
- 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 }) })),
80
- }
81
- : undefined })] }));
82
- } }) }, parameter.id));
83
- }), !(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') }))] }) }));
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.parameters;
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.parameters) === null || _b === void 0 ? void 0 : _b.question);
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.parameters) && (0, jsx_runtime_1.jsx)(UserMessage, { message: message, hideAvatar: hideAvatar }), !(0, isEmpty_1.default)(message.result) && (0, jsx_runtime_1.jsx)(AgentMessage, { message: message, hideAvatar: hideAvatar })] })));
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.parameters) === null || _d === void 0 ? void 0 : _d.question })] })] }));
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, _g, _h, _j, _k;
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 = !!(((_a = message.result) === null || _a === void 0 ? void 0 : _a.content) || ((_c = (_b = message.result) === null || _b === void 0 ? void 0 : _b.messages) === null || _c === void 0 ? void 0 : _c.length));
119
- const isMessageLoading = (message.loading || !message.result) && !message.error;
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: (_d = globalThis.blocklet) === null || _d === void 0 ? void 0 : _d.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: {
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
- ((_e = message.result) === null || _e === void 0 ? void 0 : _e.content) && ((0, jsx_runtime_1.jsx)(ShareActions_1.default, { sx: {
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.jsxs)(material_1.Stack, { gap: 1, className: "message-response", children: [(_g = (_f = message.result) === null || _f === void 0 ? void 0 : _f.messages) === null || _g === void 0 ? void 0 : _g.map((childMsg, index) => {
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" }))), (_k = (_j = message.result) === null || _j === void 0 ? void 0 : _j.objects) === null || _k === void 0 ? void 0 : _k.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 })] })] })] }));
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.result,
17
- parameters: renderType === 'result' ? {} : message.parameters,
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.taskId) === (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.taskId);
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.taskId)))] }), (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') })) })] })));
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.assistantId });
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.assistantId, 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.taskId));
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.result) === null || _a === void 0 ? void 0 : _a.objects) !== null && _b !== void 0 ? _b : [];
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.parameters) === null || _a === void 0 ? void 0 : _a.question }) }), openDialog && ((0, jsx_runtime_1.jsx)(PromptDialog, { open: true, url: url, onClose: (e) => {
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.parameters) === null || _b === void 0 ? void 0 : _b[i.key]]; }).filter((i) => i[1]);
104
- }, [agent.parameters, message.parameters]);
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.assistantId });
58
- const profile = (0, use_appearances_1.useProfile)({ agentId: message.assistantId });
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.assistantId, 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) })] }) }) }));
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.taskId), divider && index !== messages.length - 1 ? (0, jsx_runtime_1.jsx)(material_1.Divider, { sx: { my: 2 } }) : undefined] })))] })));
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.parameters) === null || _b === void 0 ? void 0 : _b[i.key]]; }).filter((i) => i[1]);
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.parameters]);
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.result) === null || _a === void 0 ? void 0 : _a.content
39
- : (_e = (_d = (_c = (_b = message.result) === null || _b === void 0 ? void 0 : _b.objects) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e[output.name];
40
- 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 }, (((_f = output === null || output === void 0 ? void 0 : output.appearance) === null || _f === void 0 ? void 0 : _f.componentProps) || {})) }, output.id));
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.assistantId });
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.assistantId, 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 }) }) }) }));
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.taskId === (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.taskId);
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.parameters), { question: item.question }) });
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.parameters;
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.result) === null || _a === void 0 ? void 0 : _a.objects;
48
- const { taskId, parameters } = message;
49
- const isMessageLoading = (message.loading || !message.result) && !message.error;
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: parameters === null || parameters === void 0 ? void 0 : parameters.question }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
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.result) === 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: {
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.result) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.length)) ||
190
- message.taskId === currentMessageTaskId ||
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.taskId === currentMessageTaskId);
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.taskId) && (messagesList === null || messagesList === void 0 ? void 0 : messagesList.length) > 1)) {
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.taskId);
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.taskId);
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 { parameters } = message || {};
69
+ const { inputs } = message || {};
70
70
  // remove $ starting parameters object
71
- const canUseParameters = Object.fromEntries(Object.entries(parameters || {}).filter(([key]) => !key.startsWith('$')));
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.result)) && !(message === null || message === void 0 ? void 0 : message.error);
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.result) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.length)) {
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.result) === null || _c === void 0 ? void 0 : _c.objects) === null || _d === void 0 ? void 0 : _d.map((item) => {
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.result) === null || _a === void 0 ? void 0 : _a.objects, propertiesValueMap, locale]);
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.taskId));
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.result) === 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];
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 = exports.createAgentState = void 0;
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 = (0, exports.createAgentState)({ aid, working: working !== null && working !== void 0 ? working : runtimeState.working })();
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
  }