From 44ef06de361c5903bec48f05eb005ca27650a3cb Mon Sep 17 00:00:00 2001 From: Cats Juice Date: Wed, 6 Aug 2025 12:01:07 +0800 Subject: [PATCH] feat(core): peek doc in ai doc-read tool result (#13424) ## Summary by CodeRabbit * **New Features** * Enhanced document read results with clickable cards that open a peek view of the referenced document. * Added support for displaying document identifiers in document read results. * **Bug Fixes** * Improved compatibility with older document read results that may lack a document identifier. --- .../src/plugins/copilot/tools/doc-read.ts | 1 + .../ai-message-content/stream-objects.ts | 2 ++ .../ai/components/ai-tools/doc-read-result.ts | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+) 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); + }, }, ]} >`;