Skip to content

feat(server): add doc keyword search tool #12837

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: canary
Choose a base branch
from

Conversation

fengmk2
Copy link
Member

@fengmk2 fengmk2 commented Jun 17, 2025

close AI-185

PR Dependency Tree

This tree was auto-generated by Charcoal

Summary by CodeRabbit

  • New Features
    • Introduced a keyword-based document search tool, allowing users to search for relevant documents within their workspace using keywords.
    • Search results include document titles, summaries, and direct links, enhancing document discovery and navigation.
  • Bug Fixes
    • None.
  • Tests
    • Added new tests to verify document search by IDs and by keywords, ensuring accurate and reliable search functionality.
  • Documentation
    • None.
  • Chores
    • Updated configuration file organization for improved clarity; no changes to functionality.

Copy link

coderabbitai bot commented Jun 17, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This change introduces a new "docKeywordSearch" tool that enables full-text keyword-based document search within a workspace, integrating with the indexer service and enforcing access control. The update includes backend service methods, tool construction, parser integration, and corresponding test cases to support and validate document keyword search functionality.

Changes

File(s) Change Summary
packages/backend/server/src/plugins/copilot/providers/provider.ts Added support for "docKeywordSearch" in getTools, integrating with IndexerService and logging requested tools.
packages/backend/server/src/plugins/copilot/providers/utils.ts Extended CustomAITools and TextStreamParser to handle doc_keyword_search, with logging and formatting logic.
packages/backend/server/src/plugins/copilot/tools/doc-keyword-search.ts New module implementing keyword-based document search tool with access checks and error handling.
packages/backend/server/src/plugins/copilot/tools/index.ts Re-exported all exports from ./keyword-search for public API extension.
packages/backend/server/src/plugins/indexer/service.ts Added SearchDocResult interface and methods: searchDocsByDocIds, searchDocsByKeyword in IndexerService.
packages/backend/server/src/plugins/indexer/index.ts Exported IndexerService and type SearchDocResult.
packages/backend/server/src/plugins/indexer/tests/service.spec.ts Added tests for searchDocsByDocIds and searchDocsByKeyword methods.
packages/backend/server/src/plugins/indexer/tests/snapshots/service.spec.ts.md Added snapshots for new indexer service tests.
.docker/selfhost/schema.json
packages/frontend/admin/src/config.json
Reordered "customerIo" configuration block; no functional change.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CopilotProvider
    participant AccessController
    participant IndexerService

    User->>CopilotProvider: Request docKeywordSearch tool
    CopilotProvider->>AccessController: Check workspace read access
    AccessController-->>CopilotProvider: Access granted/denied
    CopilotProvider->>IndexerService: searchDocsByKeyword(workspaceId, query)
    IndexerService-->>CopilotProvider: [SearchDocResult[]]
    CopilotProvider-->>User: Return filtered document search results
Loading

Assessment against linked issues

Objective (Issue) Addressed Explanation
Implement keyword_search tool for full-text search of documents (AI-185)
Integrate with indexer for document search (AI-185)
Enforce access control for workspace document search (AI-185)
Provide query parameter for keyword search (AI-185)

Possibly related PRs

  • toeverything/AFFiNE#12838: Related by the general area of document search tools, focusing on renaming and replacing existing search tools.
  • toeverything/AFFiNE#12459: Related as it introduces the TextStreamParser class, which is extended in this PR for doc_keyword_search.

Suggested reviewers

  • yoyoyohamapi

Poem

In the warren, search is new,
Rabbits find docs with a keyword or two.
With access in check and results in tow,
The indexer hops where queries go.
Snapshots and tests, all in a row—
A fluffy leap for Copilot, onward we go! 🐇✨


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added app:server test Related to test cases labels Jun 17, 2025
@fengmk2 fengmk2 requested review from Copilot and darkskygit June 17, 2025 06:13
@fengmk2 fengmk2 marked this pull request as ready for review June 17, 2025 06:13
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Introduce keyword-based full-text search for documents within a workspace, including service methods, API exports, Copilot integration, and tests.

  • Add SearchDocResult interface and implement searchDocsByDocIds and searchDocsByKeyword in IndexerService.
  • Export SearchDocResult in the indexer plugin and integrate keyword search into Copilot tools and provider.
  • Add tests and update snapshots for the new search methods.

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/backend/server/src/plugins/indexer/service.ts Define SearchDocResult and new search methods in service
packages/backend/server/src/plugins/indexer/index.ts Export SearchDocResult from index
packages/backend/server/src/plugins/indexer/tests/service.spec.ts Add tests for searchDocsByDocIds and searchDocsByKeyword
packages/backend/server/src/plugins/indexer/tests/snapshots/service.spec.ts.md Update snapshots for new search tests
packages/backend/server/src/plugins/copilot/tools/keyword-search.ts Implement Copilot keyword-search tool builder
packages/backend/server/src/plugins/copilot/tools/index.ts Export keyword-search tool
packages/backend/server/src/plugins/copilot/providers/utils.ts Import SearchDocResult for text parsing
packages/backend/server/src/plugins/copilot/providers/provider.ts Register keywordSearch tool in Copilot provider
Comments suppressed due to low confidence (1)

packages/backend/server/src/plugins/copilot/providers/provider.ts:154

  • [nitpick] The tool option key 'keywordSearch' uses camelCase, while the tool is registered under snake_case 'keyword_search'. Consider aligning naming for consistency.
case 'keywordSearch': {

Copy link

codecov bot commented Jun 17, 2025

Codecov Report

Attention: Patch coverage is 82.45614% with 40 lines in your changes missing coverage. Please review.

Project coverage is 56.00%. Comparing base (ba718b9) to head (733375d).
Report is 2 commits behind head on canary.

Files with missing lines Patch % Lines
...er/src/plugins/copilot/tools/doc-keyword-search.ts 54.71% 24 Missing ⚠️
...kend/server/src/plugins/copilot/providers/utils.ts 44.82% 16 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           canary   #12837      +/-   ##
==========================================
+ Coverage   55.95%   56.00%   +0.05%     
==========================================
  Files        2653     2654       +1     
  Lines      125676   125902     +226     
  Branches    19961    19970       +9     
==========================================
+ Hits        70326    70516     +190     
- Misses      53044    53079      +35     
- Partials     2306     2307       +1     
Flag Coverage Δ
server-test 79.69% <82.45%> (+0.01%) ⬆️
unittest 31.60% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (5)
packages/backend/server/src/plugins/indexer/index.ts (2)

12-13: Extraneous runtime symbol in imports statement

SearchDocResult is a compile-time type, so importing it with type is correct; however, adding it to the value-space imports list slightly increases bundle size (tsc will erase it but Babel may not). You could drop it from the default import list and rely solely on the re-export below.

-import { IndexerService, type SearchDocResult } from './service';
+import { IndexerService } from './service';

28-29: Consider re-exporting only types via export type

Re-exporting the runtime IndexerService twice is harmless but noisy. A cleaner option:

-export { IndexerService, type SearchDocResult };
+export { type SearchDocResult };

IndexerService is already re-exported through the Nest module on line 24.

packages/backend/server/src/plugins/copilot/providers/provider.ts (1)

154-163: Duplicate provider look-ups inside tight loop

moduleRef.get(AccessController …) and moduleRef.get(IndexerService …) are invoked every time the “keywordSearch” tool is requested, even though the provider instances are singletons. Move these calls outside the switch (or cache them per–method) to avoid unnecessary DI look-ups:

- case 'keywordSearch': {
-   const ac = this.moduleRef.get(AccessController, { strict: false });
-   const indexerService = this.moduleRef.get(IndexerService, { strict: false });
+ case 'keywordSearch': {
+   const ac = this.moduleRef.get(AccessController, { strict: false });
+   const indexerService = this.moduleRef.get(IndexerService, { strict: false });

(illustrative – refactor by hoisting both calls above the for loop).

packages/backend/server/src/plugins/copilot/providers/utils.ts (1)

515-520: Links use bare docId; prepend a routable URI

Down-stream renderers will treat [title](id) as a relative link, which is
probably not what you want. Prefix with the canonical document route or a
custom scheme (e.g. affine://doc/{id}) so that the front-end can recognise
and open the link unambiguously.

-return acc + `\n\n[${result.title}](${result.docId})\n\n`;
+return acc + `\n\n[${result.title}](/workspace/doc/${result.docId})\n\n`;
packages/backend/server/src/plugins/indexer/service.ts (1)

442-467: Consider using must + terms for docId filtering

Wrapping a should array inside a must works, but a simpler and more
efficient query is available:

{
  type: SearchQueryType.match,
  field: 'docId',
  match: docIds,          // ← array
}

or translate directly to an ES terms query. This avoids executing N
individual match clauses.
Not blocking, but worth revisiting for large workspaces.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a4d929b and f4d2d10.

⛔ Files ignored due to path filters (1)
  • packages/backend/server/src/plugins/indexer/__tests__/__snapshots__/service.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (8)
  • packages/backend/server/src/plugins/copilot/providers/provider.ts (3 hunks)
  • packages/backend/server/src/plugins/copilot/providers/utils.ts (7 hunks)
  • packages/backend/server/src/plugins/copilot/tools/index.ts (1 hunks)
  • packages/backend/server/src/plugins/copilot/tools/keyword-search.ts (1 hunks)
  • packages/backend/server/src/plugins/indexer/__tests__/__snapshots__/service.spec.ts.md (1 hunks)
  • packages/backend/server/src/plugins/indexer/__tests__/service.spec.ts (1 hunks)
  • packages/backend/server/src/plugins/indexer/index.ts (2 hunks)
  • packages/backend/server/src/plugins/indexer/service.ts (2 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (3)
packages/backend/server/src/plugins/copilot/providers/provider.ts (2)
packages/backend/server/src/plugins/indexer/index.ts (1)
  • IndexerService (28-28)
packages/backend/server/src/plugins/copilot/tools/keyword-search.ts (2)
  • buildKeywordSearchGetter (8-28)
  • createKeywordSearchTool (30-47)
packages/backend/server/src/plugins/copilot/tools/keyword-search.ts (3)
packages/backend/server/src/plugins/indexer/index.ts (2)
  • IndexerService (28-28)
  • SearchDocResult (28-28)
packages/backend/server/src/plugins/copilot/providers/types.ts (1)
  • CopilotChatOptions (150-150)
packages/backend/server/src/plugins/indexer/service.ts (1)
  • SearchDocResult (105-109)
packages/backend/server/src/plugins/indexer/service.ts (1)
packages/backend/server/src/plugins/copilot/context/session.ts (1)
  • docIds (58-66)
⏰ Context from checks skipped due to timeout of 90000ms (782)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: Run native tests
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, firefox)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, firefox)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Desktop Test (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Desktop bundle check (windows-latest, windows, x64, x86_64-pc-windows-msvc, true)
  • GitHub Check: Desktop Test (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop Test (macos-latest, macos, arm64, aarch64-apple-darwin, true)
  • GitHub Check: Desktop bundle check (ubuntu-latest, linux, x64, x86_64-unknown-linux-gnu, true)
  • GitHub Check: Desktop bundle check (macos-latest, macos, x64, x86_64-apple-darwin, false)
  • GitHub Check: Server Test (4, 8)
  • GitHub Check: Cloud E2E Test 3/6
  • GitHub Check: Cloud E2E Test 2/6
  • GitHub Check: Cloud E2E Test 4/6
  • GitHub Check: Frontend Copilot E2E Test (7, 8)
  • GitHub Check: Cloud E2E Test 1/6
  • GitHub Check: Frontend Copilot E2E Test (8, 8)
  • GitHub Check: Cloud Desktop E2E Test
  • GitHub Check: Cloud E2E Test 6/6
  • GitHub Check: Frontend Copilot E2E Test (6, 8)
  • GitHub Check: Server Test (5, 8)
  • GitHub Check: Frontend Copilot E2E Test (4, 8)
  • GitHub Check: Server Test (7, 8)
  • GitHub Check: Cloud E2E Test 5/6
  • GitHub Check: Frontend Copilot E2E Test (5, 8)
  • GitHub Check: Server Test (3, 8)
  • GitHub Check: Frontend Copilot E2E Test (3, 8)
  • GitHub Check: Server Test (6, 8)
  • GitHub Check: Frontend Copilot E2E Test (2, 8)
  • GitHub Check: Server Copilot Api Test
  • GitHub Check: Server Test (0, 8)
  • GitHub Check: Server Test (1, 8)
  • GitHub Check: Server E2E Test
  • GitHub Check: Server Test (2, 8)
  • GitHub Check: Server Test with Elasticsearch
  • GitHub Check: Check Git Status
  • GitHub Check: Unit Test (1)
  • GitHub Check: Unit Test (2)
  • GitHub Check: Unit Test (3)
  • GitHub Check: Unit Test (5)
  • GitHub Check: Unit Test (4)
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E Test (3)
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (8)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: loom thread test
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: fuzzing
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, blocksuite)
🔇 Additional comments (4)
packages/backend/server/src/plugins/copilot/tools/index.ts (1)

1-1: LGTM – new tool exposed

Re-exporting the keyword-search tool makes it discoverable to callers; no further action needed.

packages/backend/server/src/plugins/copilot/providers/provider.ts (1)

154-163: buildKeywordSearchGetter signature mismatch risk

buildKeywordSearchGetter returns
(options: CopilotChatOptions, query?: string) => Promise<…>.

Here you bind options (searchDocs.bind(null, options)), yielding
(query?: string) => …, which matches createKeywordSearchTool’s expectation.

Fine for now, but if the builder’s signature ever changes, this implicit contract will silently break. Consider declaring an explicit type alias shared by both builder and creator to lock the API.

packages/backend/server/src/plugins/indexer/__tests__/__snapshots__/service.spec.ts.md (1)

525-558: Snapshot chunk acknowledged

New snapshots reflect the added doc-ID & keyword search APIs. No concerns.

packages/backend/server/src/plugins/indexer/__tests__/service.spec.ts (1)

2303-2346: Potential false-positive in keyword search test

doc3 is written only to the block table yet searchDocsByKeyword does not expect it in results. If implementation ever switches to block-only lookup, the test will wrongly pass. Explicitly assert that doc3 is absent to make the intention clear:

t.false(result.some(d => d.docId === docId3));

@fengmk2 fengmk2 force-pushed the search-doc-from-indexer-tool branch from 6071569 to 96e2e56 Compare June 17, 2025 07:18
@fengmk2 fengmk2 marked this pull request as draft June 17, 2025 07:19
@fengmk2 fengmk2 changed the title feat(server): add keyword search tool feat(server): add doc keyword search tool Jun 17, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
packages/backend/server/src/plugins/copilot/tools/doc-keyword-search.ts (2)

41-44: Consider stricter query validation

A blank string passes Zod but is immediately rejected by searchDocs. Add a .min(1) (or .trim()) to the schema to fail fast and simplify downstream checks.


46-50: Do not swallow search errors silently

catch { return 'Failed to search documents.' } hides useful debugging info.
Log the error (or re-throw) so operators can trace failures, and return an empty array instead of a string to keep the return type consistent.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6071569 and 96e2e56.

⛔ Files ignored due to path filters (1)
  • packages/backend/server/src/plugins/indexer/__tests__/__snapshots__/service.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (10)
  • .docker/selfhost/schema.json (1 hunks)
  • packages/backend/server/src/plugins/copilot/providers/provider.ts (3 hunks)
  • packages/backend/server/src/plugins/copilot/providers/utils.ts (7 hunks)
  • packages/backend/server/src/plugins/copilot/tools/doc-keyword-search.ts (1 hunks)
  • packages/backend/server/src/plugins/copilot/tools/index.ts (1 hunks)
  • packages/backend/server/src/plugins/indexer/__tests__/__snapshots__/service.spec.ts.md (1 hunks)
  • packages/backend/server/src/plugins/indexer/__tests__/service.spec.ts (1 hunks)
  • packages/backend/server/src/plugins/indexer/index.ts (2 hunks)
  • packages/backend/server/src/plugins/indexer/service.ts (2 hunks)
  • packages/frontend/admin/src/config.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (9)
  • packages/frontend/admin/src/config.json
  • packages/backend/server/src/plugins/indexer/tests/snapshots/service.spec.ts.md
  • .docker/selfhost/schema.json
  • packages/backend/server/src/plugins/indexer/index.ts
  • packages/backend/server/src/plugins/indexer/tests/service.spec.ts
  • packages/backend/server/src/plugins/copilot/providers/provider.ts
  • packages/backend/server/src/plugins/copilot/tools/index.ts
  • packages/backend/server/src/plugins/indexer/service.ts
  • packages/backend/server/src/plugins/copilot/providers/utils.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
packages/backend/server/src/plugins/copilot/tools/doc-keyword-search.ts (3)
packages/backend/server/src/plugins/indexer/index.ts (2)
  • IndexerService (28-28)
  • SearchDocResult (28-28)
packages/backend/server/src/plugins/copilot/providers/types.ts (1)
  • CopilotChatOptions (150-150)
packages/backend/server/src/plugins/indexer/service.ts (1)
  • SearchDocResult (105-109)
⏰ Context from checks skipped due to timeout of 90000ms (49)
  • GitHub Check: test-build-mobile-app / build-android-web
  • GitHub Check: test-build-mobile-app / build-ios-web
  • GitHub Check: y-octo binding test on aarch64-pc-windows-msvc
  • GitHub Check: y-octo binding test on x86_64-pc-windows-msvc
  • GitHub Check: loom thread test
  • GitHub Check: Build AFFiNE native (aarch64-pc-windows-msvc)
  • GitHub Check: y-octo binding test on x86_64-apple-darwin
  • GitHub Check: E2E Mobile Test (5)
  • GitHub Check: E2E Mobile Test (4)
  • GitHub Check: E2E Mobile Test (2)
  • GitHub Check: fuzzing
  • GitHub Check: Build AFFiNE native (x86_64-pc-windows-msvc)
  • GitHub Check: E2E Mobile Test (3)
  • GitHub Check: E2E Mobile Test (1)
  • GitHub Check: Build Server native
  • GitHub Check: Build @affine/electron renderer
  • GitHub Check: E2E Test (7)
  • GitHub Check: E2E Test (3)
  • GitHub Check: E2E Test (10)
  • GitHub Check: E2E Test (9)
  • GitHub Check: E2E Test (8)
  • GitHub Check: Run native tests
  • GitHub Check: E2E Test (4)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, firefox)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, webkit)
  • GitHub Check: E2E Test (5)
  • GitHub Check: E2E Test (2)
  • GitHub Check: E2E Test (6)
  • GitHub Check: E2E BlockSuite Cross Browser Test (2, chromium)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, webkit)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, firefox)
  • GitHub Check: E2E BlockSuite Test (10)
  • GitHub Check: E2E Test (1)
  • GitHub Check: E2E BlockSuite Test (9)
  • GitHub Check: E2E BlockSuite Cross Browser Test (1, chromium)
  • GitHub Check: E2E BlockSuite Test (5)
  • GitHub Check: E2E BlockSuite Test (8)
  • GitHub Check: E2E BlockSuite Test (3)
  • GitHub Check: E2E BlockSuite Test (6)
  • GitHub Check: E2E BlockSuite Test (7)
  • GitHub Check: E2E BlockSuite Test (4)
  • GitHub Check: E2E BlockSuite Test (1)
  • GitHub Check: E2E BlockSuite Test (2)
  • GitHub Check: Analyze (typescript, blocksuite)
  • GitHub Check: Analyze (javascript, affine)
  • GitHub Check: Analyze (typescript, affine)
  • GitHub Check: Analyze (javascript, blocksuite)
  • GitHub Check: Typecheck
  • GitHub Check: Lint
🔇 Additional comments (1)
packages/backend/server/src/plugins/copilot/tools/doc-keyword-search.ts (1)

26-32: Verify that permission filtering preserves result shape

ac.docs(docs, 'Doc.Read') is fed an array of SearchDocResult; ensure it returns the same objects (incl. title, summary).
If it instead returns only IDs, the tool will violate its declared return type and the caller will lose metadata.

@fengmk2 fengmk2 force-pushed the search-doc-from-indexer-tool branch 2 times, most recently from b0f4193 to ea4a630 Compare June 17, 2025 07:31
@fengmk2 fengmk2 force-pushed the search-doc-from-indexer-tool branch from ea4a630 to 733375d Compare June 17, 2025 07:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
app:server test Related to test cases
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

2 participants