diff --git a/packages/backend/server/src/plugins/copilot/tools/doc-read.ts b/packages/backend/server/src/plugins/copilot/tools/doc-read.ts index dacf30e215..0c3f444db2 100644 --- a/packages/backend/server/src/plugins/copilot/tools/doc-read.ts +++ b/packages/backend/server/src/plugins/copilot/tools/doc-read.ts @@ -57,6 +57,7 @@ export const buildDocContentGetter = ( } return { + docId, title: content.title, markdown: content.markdown, createdAt: docMeta.createdAt, diff --git a/packages/frontend/core/src/blocksuite/ai/components/ai-message-content/stream-objects.ts b/packages/frontend/core/src/blocksuite/ai/components/ai-message-content/stream-objects.ts index e367ecb9ea..3db5beb9e3 100644 --- a/packages/frontend/core/src/blocksuite/ai/components/ai-message-content/stream-objects.ts +++ b/packages/frontend/core/src/blocksuite/ai/components/ai-message-content/stream-objects.ts @@ -220,6 +220,8 @@ export class ChatContentStreamObjects extends WithDisposable( return html``; case 'section_edit': return html` diff --git a/packages/frontend/core/src/blocksuite/ai/components/ai-tools/doc-read-result.ts b/packages/frontend/core/src/blocksuite/ai/components/ai-tools/doc-read-result.ts index 09834d006c..92f2cb4d23 100644 --- a/packages/frontend/core/src/blocksuite/ai/components/ai-tools/doc-read-result.ts +++ b/packages/frontend/core/src/blocksuite/ai/components/ai-tools/doc-read-result.ts @@ -1,3 +1,4 @@ +import type { PeekViewService } from '@affine/core/modules/peek-view'; import { WithDisposable } from '@blocksuite/global/lit'; import { PageIcon, ViewIcon } from '@blocksuite/icons/lit'; import { ShadowlessElement } from '@blocksuite/std'; @@ -18,6 +19,8 @@ interface DocReadToolResult { toolName: string; args: { doc_id: string }; result: { + /** Old result may not have docId */ + docId?: string; title: string; markdown: string; }; @@ -30,6 +33,9 @@ export class DocReadResult extends WithDisposable(ShadowlessElement) { @property({ attribute: false }) accessor width: Signal | undefined; + @property({ attribute: false }) + accessor peekViewService!: PeekViewService; + renderToolCall() { // TODO: get document name by doc_id return html` { + const docId = (this.data as DocReadToolResult).result.docId; + if (!docId) { + return; + } + this.peekViewService.peekView + .open({ + type: 'doc', + docRef: { docId }, + }) + .catch(console.error); + }, }, ]} >`;