@lobehub/lobehub 2.0.0-next.361 → 2.0.0-next.362
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/CHANGELOG.md +25 -0
- package/Dockerfile +2 -1
- package/changelog/v1.json +9 -0
- package/locales/en-US/chat.json +3 -1
- package/locales/zh-CN/chat.json +2 -0
- package/package.json +1 -1
- package/packages/context-engine/src/base/BaseEveryUserContentProvider.ts +204 -0
- package/packages/context-engine/src/base/BaseLastUserContentProvider.ts +1 -8
- package/packages/context-engine/src/base/__tests__/BaseEveryUserContentProvider.test.ts +354 -0
- package/packages/context-engine/src/base/constants.ts +20 -0
- package/packages/context-engine/src/engine/messages/MessagesEngine.ts +27 -23
- package/packages/context-engine/src/engine/messages/__tests__/MessagesEngine.test.ts +364 -0
- package/packages/context-engine/src/providers/PageEditorContextInjector.ts +17 -13
- package/packages/context-engine/src/providers/PageSelectionsInjector.ts +65 -0
- package/packages/context-engine/src/providers/__tests__/PageSelectionsInjector.test.ts +333 -0
- package/packages/context-engine/src/providers/index.ts +3 -1
- package/packages/prompts/src/agents/index.ts +1 -0
- package/packages/prompts/src/agents/pageSelectionContext.ts +28 -0
- package/packages/types/src/aiChat.ts +4 -0
- package/packages/types/src/message/common/index.ts +1 -0
- package/packages/types/src/message/common/metadata.ts +8 -0
- package/packages/types/src/message/common/pageSelection.ts +36 -0
- package/packages/types/src/message/ui/params.ts +16 -0
- package/scripts/prebuild.mts +1 -0
- package/src/features/ChatInput/Desktop/ContextContainer/ContextList.tsx +1 -1
- package/src/features/Conversation/ChatInput/index.tsx +9 -1
- package/src/features/Conversation/Messages/User/components/MessageContent.tsx +7 -1
- package/src/features/Conversation/Messages/User/components/PageSelections.tsx +62 -0
- package/src/features/PageEditor/EditorCanvas/useAskCopilotItem.tsx +5 -1
- package/src/locales/default/chat.ts +3 -2
- package/src/server/routers/lambda/aiChat.ts +7 -0
- package/src/store/chat/slices/aiChat/actions/conversationLifecycle.ts +5 -19
|
@@ -234,8 +234,9 @@ export default {
|
|
|
234
234
|
'operation.sendMessage': 'Sending message',
|
|
235
235
|
'owner': 'Group owner',
|
|
236
236
|
'pageCopilot.title': 'Page Agent',
|
|
237
|
-
'pageCopilot.welcome':
|
|
238
|
-
|
|
237
|
+
'pageCopilot.welcome': `**Clearer, sharper writing**\n\nDraft, rewrite, or polish—tell me your intent and I'll refine the rest.`,
|
|
238
|
+
'pageSelection.lines': 'Lines {{start}}-{{end}}',
|
|
239
|
+
'pageSelection.reference': 'Selected Text',
|
|
239
240
|
'pin': 'Pin',
|
|
240
241
|
'pinOff': 'Unpin',
|
|
241
242
|
'prompts.summaryExpert':
|
|
@@ -123,11 +123,18 @@ export const aiChatRouter = router({
|
|
|
123
123
|
|
|
124
124
|
// create user message
|
|
125
125
|
log('creating user message with content length: %d', input.newUserMessage.content.length);
|
|
126
|
+
|
|
127
|
+
// Build user message metadata with pageSelections if present
|
|
128
|
+
const userMessageMetadata = input.newUserMessage.pageSelections?.length
|
|
129
|
+
? { pageSelections: input.newUserMessage.pageSelections }
|
|
130
|
+
: undefined;
|
|
131
|
+
|
|
126
132
|
const userMessageItem = await ctx.messageModel.create({
|
|
127
133
|
agentId: input.agentId,
|
|
128
134
|
content: input.newUserMessage.content,
|
|
129
135
|
files: input.newUserMessage.files,
|
|
130
136
|
groupId: input.groupId,
|
|
137
|
+
metadata: userMessageMetadata,
|
|
131
138
|
parentId: input.newUserMessage.parentId,
|
|
132
139
|
role: 'user',
|
|
133
140
|
sessionId,
|
|
@@ -77,11 +77,11 @@ export const conversationLifecycle: StateCreator<
|
|
|
77
77
|
sendMessage: async ({
|
|
78
78
|
message,
|
|
79
79
|
files,
|
|
80
|
-
contexts,
|
|
81
80
|
onlyAddUserMessage,
|
|
82
81
|
context,
|
|
83
82
|
messages: inputMessages,
|
|
84
83
|
parentId: inputParentId,
|
|
84
|
+
pageSelections,
|
|
85
85
|
}) => {
|
|
86
86
|
const { internal_execAgentRuntime, mainInputEditor } = get();
|
|
87
87
|
|
|
@@ -186,6 +186,8 @@ export const conversationLifecycle: StateCreator<
|
|
|
186
186
|
threadId: operationContext.threadId ?? undefined,
|
|
187
187
|
imageList: tempImages.length > 0 ? tempImages : undefined,
|
|
188
188
|
videoList: tempVideos.length > 0 ? tempVideos : undefined,
|
|
189
|
+
// Pass pageSelections metadata for immediate display
|
|
190
|
+
metadata: pageSelections?.length ? { pageSelections } : undefined,
|
|
189
191
|
},
|
|
190
192
|
{ operationId, tempMessageId: tempId },
|
|
191
193
|
);
|
|
@@ -222,7 +224,7 @@ export const conversationLifecycle: StateCreator<
|
|
|
222
224
|
const topicId = operationContext.topicId;
|
|
223
225
|
data = await aiChatService.sendMessageInServer(
|
|
224
226
|
{
|
|
225
|
-
newUserMessage: { content: message, files: fileIdList, parentId },
|
|
227
|
+
newUserMessage: { content: message, files: fileIdList, pageSelections, parentId },
|
|
226
228
|
// if there is topicId,then add topicId to message
|
|
227
229
|
topicId: topicId ?? undefined,
|
|
228
230
|
threadId: operationContext.threadId ?? undefined,
|
|
@@ -372,26 +374,10 @@ export const conversationLifecycle: StateCreator<
|
|
|
372
374
|
messageMapKey(execContext),
|
|
373
375
|
)(get());
|
|
374
376
|
|
|
375
|
-
const contextMessages =
|
|
376
|
-
contexts?.map((item, index) => {
|
|
377
|
-
const now = Date.now();
|
|
378
|
-
const title = item.title ? `${item.title}\n` : '';
|
|
379
|
-
return {
|
|
380
|
-
content: `Context ${index + 1}:\n${title}${item.content}`,
|
|
381
|
-
createdAt: now,
|
|
382
|
-
id: `ctx_${tempId}_${index}`,
|
|
383
|
-
role: 'system' as const,
|
|
384
|
-
updatedAt: now,
|
|
385
|
-
};
|
|
386
|
-
}) ?? [];
|
|
387
|
-
|
|
388
|
-
const runtimeMessages =
|
|
389
|
-
contextMessages.length > 0 ? [...displayMessages, ...contextMessages] : displayMessages;
|
|
390
|
-
|
|
391
377
|
try {
|
|
392
378
|
await internal_execAgentRuntime({
|
|
393
379
|
context: execContext,
|
|
394
|
-
messages:
|
|
380
|
+
messages: displayMessages,
|
|
395
381
|
parentMessageId: data.assistantMessageId,
|
|
396
382
|
parentMessageType: 'assistant',
|
|
397
383
|
parentOperationId: operationId, // Pass as parent operation
|