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);
+ },
},
]}
>`;