Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

add search, fetch tools to MCP server for better ChatGPT compatibility#917

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
kosmoz wants to merge4 commits intostack-auth:dev
base:dev
Choose a base branch
Loading
fromkosmoz:mcp-search-fetch

Conversation

@kosmoz
Copy link

@kosmozkosmoz commentedSep 25, 2025
edited by coderabbitaibot
Loading

This PR addssearch andfetch tools to the MCP server, which should make it compatible with ChatGPT Deep Research (https://platform.openai.com/docs/mcp).

Thesearch tool makes a naive substring search for all page contents and returns the matching pages.

Thefetch tool is identical to the existingget_docs_by_id tool. The tool callback function of theget_docs_by_id tool was extracted in order to make it reusable.

High-level PR Summary

This PR adds two new tools (search andfetch) to the MCP (Model Context Protocol) server to improve compatibility with ChatGPT Deep Research. Thesearch tool performs a basic substring search across page contents and returns matching pages, while thefetch tool serves as an alias for the existingget_docs_by_id tool. The implementation extracts the callback function fromget_docs_by_id to a separate reusable function that can be used by both tools. The PR also includes the necessary OpenAPI specification updates to document these new tools.

⏱️ Estimated Review Time: 15-30 minutes

💡 Review Order Suggestion
OrderFile Path
1docs/src/app/api/internal/[transport]/route.ts

Need help? Join our Discord


Important

Addsearch andfetch tools to MCP server for enhanced ChatGPT compatibility, withfetch reusingget_docs_by_id functionality.

  • Tools:
    • Addsearch tool to perform substring search on documentation pages.
    • Addfetch tool, identical toget_docs_by_id, for retrieving documentation by ID.
  • Functions:
    • ExtractgetDocsById function for reuse byfetch tool.
  • Integration:
    • Integratesearch andfetch tools into MCP server handler inroute.ts.

This description was created byEllipsis forb1dd548. You cancustomize this summary. It will automatically update as commits are pushed.

Summary by CodeRabbit

  • New Features

    • Added a search tool to find documentation by title, description, or content, returning structured results.
    • Added a fetch tool to retrieve documentation by ID via the new retrieval flow.
  • Improvements

    • More resilient content loading with multiple fallback paths.
    • Enhanced API page summaries with extracted OpenAPI details when available.
    • Clearer error responses and consistent behavior even when some reads fail.
    • Unified listing and fetching for more reliable results.

greptile-apps[bot] reacted with confused emojirecurseml[bot] reacted with heart emojiellipsis-dev[bot] reacted with rocket emoji
@vercel
Copy link

vercelbot commentedSep 25, 2025

@kosmoz is attempting to deploy a commit to theStack Team onVercel.

A member of the Team first needs toauthorize it.

@coderabbitai
Copy link
Contributor

coderabbitaibot commentedSep 25, 2025
edited
Loading

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Implements a new exported functiongetDocsById({ id }) with multi-path content resolution and OpenAPI extraction; refactors MCP handlers to use this function, addssearch andfetch tools, and adds runtime fallbacks and structured success/errorCallToolResult responses.

Changes

Cohort / File(s)Summary
Docs API tools and routing
docs/src/app/api/internal/[transport]/route.ts
Added exportedgetDocsById({ id }) : Promise<CallToolResult> with multi-path reads (content/{path},content/docs/{path},content/api/{path}) and try/catch fallbacks; introducedextractOpenApiDetails(content, page) usage for EnhancedAPIPage; refactored MCP handler to delegateget_docs_by_id togetDocsById, wiredlist_available_docs to new flow; added MCP toolssearch (title/description/content scan) andfetch (delegates togetDocsById) and extended capabilities descriptor with parameter schemas.

Sequence Diagram(s)

sequenceDiagram  autonumber  actor Client  participant Route as Internal Route  participant Tools as MCP Tools  participant Loader as getDocsById  participant FS as FileSystem  participant Parser as OpenAPI Parser  Client->>Route: call tool "fetch" with { id }  Route->>Tools: dispatch fetch  Tools->>Loader: getDocsById({ id })  rect rgba(220,235,255,0.35)    note over Loader,FS: Multi-path resolution (primary + fallbacks)    Loader->>FS: read content/{path}    alt Not found / error      Loader->>FS: read content/docs/{path}      alt Not found / error        Loader->>FS: read content/api/{path}      end    end  end  alt API page with EnhancedAPIPage    Loader->>Parser: extractOpenApiDetails(content, page)    alt Parse success      Parser-->>Loader: OpenAPI summary      Loader-->>Tools: formatted OpenAPI result    else Parse fails      Loader-->>Tools: formatted fallback API text    end  else Non-API page    Loader-->>Tools: title + description + content  end  Tools-->>Route: CallToolResult  Route-->>Client: response (success or isError)
Loading
sequenceDiagram  autonumber  actor Client  participant Route  participant Tools as MCP Tools  participant Index as Page Index  Client->>Route: call tool "search" with query  Route->>Tools: dispatch search  Tools->>Index: match by title/description/content  Index-->>Tools: results[]  Tools-->>Route: structured results[]  Route-->>Client: results[]
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

I hop through folders, sniff the trail,
Three paths to check when one should fail,
I fetch the spec, and parse with care,
I surface text when parsers err.
Carrots, docs, and cozy code 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 50.00% which is insufficient. The required threshold is 80.00%.You can run@coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title Check✅ PassedThe title clearly and concisely summarizes the primary change of adding search and fetch tools to the MCP server for improved ChatGPT compatibility, which aligns with the changes in the pull request.
Description Check✅ PassedThe pull request description includes the required CONTRIBUTING.md comment and provides a clear summary of the changes, tool implementations, and integration details, including a high-level summary and optional details, meeting the repository’s template requirements.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between4ad88a5 andf397470.

📒 Files selected for processing (1)
  • docs/src/app/api/internal/[transport]/route.ts (5 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

Prefer ES6 Map over Record when representing key–value collections

Files:

  • docs/src/app/api/internal/[transport]/route.ts
🧬 Code graph analysis (1)
docs/src/app/api/internal/[transport]/route.ts (1)
apps/dashboard/src/app/(main)/wizard-congrats/posthog.tsx (1)
  • PostHog (8-32)
🪛 Biome (2.1.2)
docs/src/app/api/internal/[transport]/route.ts

[error] 227-227: Unexpected empty object pattern.

(lint/correctness/noEmptyPattern)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: check_prisma_migrations (22.x)
  • GitHub Check: lint_and_build (latest)
  • GitHub Check: docker
  • GitHub Check: all-good
  • GitHub Check: setup-tests
  • GitHub Check: build (22.x)
  • GitHub Check: build (22.x)
  • GitHub Check: Vercel Agent Review
  • GitHub Check: Security Check
🔇 Additional comments (5)
docs/src/app/api/internal/[transport]/route.ts (5)

7-7:LGTM!

The import is correctly typed and necessary for the newCallToolResult return types throughout the file.


14-96:LGTM!

The refactored signature withPromise<CallToolResult> return type and the comprehensive error handling provide proper structure for the MCP tool responses.


238-243:LGTM!

The refactoring to delegate to the extractedgetDocsById function improves code reusability and maintainability.


314-319:LGTM!

Thefetch tool correctly delegates togetDocsById, providing the alias functionality needed for ChatGPT Deep Research compatibility.


351-378:LGTM!

The capabilities descriptor properly documents the newsearch andfetch tools with correct parameter schemas and descriptions.


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

Comment@coderabbitai help to get the list of available commands and usage tips.

Copy link

@recursemlrecursemlbot left a comment
edited
Loading

Choose a reason for hiding this comment

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

Review by RecurseML

🔍 Review performed on6bf092a..b1dd548

  Severity    Location    Issue    Delete  
Lowdocs/src/app/api/internal/[transport]/route.ts:296Single-word API field 'url' technically conforms to both camelCase and snake_case conventions

)
.map((page)=>({
id:page.url,
title:page.data.title,

Choose a reason for hiding this comment

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

According to the naming convention rule 'naming.mdc', REST API response body fields should use snake_case. In the search tool implementation, the field 'url' is being returned as part of a REST API response. Since this is a direct field in an API response that could be consumed externally, it should follow the snake_case convention.

However, in this case 'url' is a single word without any compound words, so the snake_case and camelCase representations are identical. No change is needed for this specific property, but it's important to maintain snake_case convention for API response fields.

🔍 This comment matches yournaming.mdc rule.


React with 👍 to tell me that this comment was useful, or 👎 if not (and I'll stop posting more comments like this in the future)

// Check if this is an API page and handle OpenAPI spec extraction
constisApiPage=page.url.startsWith("/api/");

// Try primary path first, then fallback to docs/ prefix or api/ prefix
Copy link
Contributor

Choose a reason for hiding this comment

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

Consider refactoring the duplicate logic for handling API pages in both the primary and alternative file path attempts to reduce code duplication.

@zeropath-ai
Copy link

Some new issue(s) might be present. Please use the following link(s) to view them:

Additionally, the following low severity issue(s) were found:

https://zeropath.com/app/issues/2bd9a525-5fa1-49df-9722-9996bf21882f

Reply to this PR with@zeropath-ai followed by a description of what change you want and we'll auto-submit a change to this PR to implement it.

Copy link
Contributor

@coderabbitaicoderabbitaibot 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: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/src/app/api/internal/[transport]/route.ts (1)

248-279:Fix Biome error: Unexpected empty object pattern in handler arg (second occurrence).
Same as above.

-      async ({}) => {+      async () => {
🧹 Nitpick comments (9)
docs/src/app/api/internal/[transport]/route.ts (9)

7-7:Type import is appropriate. Consider typing helper returns explicitly.
Import looks good. Recommend annotating extractOpenApiDetails to return Promise for consistency with getDocsById.

Apply this diff to the function signature at Lines 14-17:

-async function extractOpenApiDetails(+async function extractOpenApiDetails(   content: string,   page: { data: { title: string, description?: string } },-) {+): Promise<CallToolResult> {

14-96:Harden OpenAPI helper and path handling (optional).

  • Consider resolving specFile relative to a known root to avoid brittle relative paths.
  • Regex parsing of JSX props is brittle; OK as a stopgap, but document or add TODO to replace with a proper parser.

124-128:Avoid potential unhandled promise rejections from PostHog capture.
Prefix with void (or .catch(() => {})) since posthog-node v4 methods are async.

-  nodeClient?.capture({+  void nodeClient?.capture({     event: "get_docs_by_id",     properties: { id },     distinctId: "mcp-handler",   });

130-133:Mark not-found as error and include the requested id.
Improves client handling and observability.

-  if (!page) {-    return { content: [{ type: "text", text: "Page not found." }] };-  }+  if (!page) {+    return {+      content: [{ type: "text", text: `Page not found: ${id}` }],+      isError: true,+    };+  }

168-171:Deduplicate fallback paths to avoid content/docs/docs/...
If page.file.path already contains a docs/api prefix, this prevents broken double-prefixed attempts.

-    const altPaths = [-      `content/docs/${page.file.path}`,-      `content/api/${page.file.path}`,-    ];+    const altPaths = [+      `content/docs/${page.file.path}`,+      `content/api/${page.file.path}`,+    ].filter((p) => p !== filePath);

349-376:Capabilities: add search/fetch looks good; consider aligning existing tool names.
Your newly added capability entries for search/fetch match the tool names. For consistency and discoverability, consider aligning earlier capability keys (listAvailableDocs, getDocById, getStackAuthSetupInstructions) to the actual registered tool names (list_available_docs, get_docs_by_id, get_stack_auth_setup_instructions).

If you decide to align, update the keys above accordingly (outside this hunk):

// In capabilities.tools:list_available_docs:{/* ... */},get_docs_by_id:{/* ... */},get_stack_auth_setup_instructions:{/* ... */},

Note: Verify @vercel/mcp-adapter and client expectations; some clients may use capabilities to resolve tools by key.


123-219:Minor content formatting consistency.
In several places, description may be undefined; consider using nullish coalescing to avoid “undefined” appearing in output.

Example change:

- text: `Title: ${page.data.title}\nDescription: ${page.data.description}\nContent:\n${content}`,+ text: `Title: ${page.data.title}\nDescription: ${page.data.description ?? ''}\nContent:\n${content}`,

9-11:PostHog SDK best practices (non-blocking analytics).
Current usage is fine; optionally add a process-exit hook to flush/shutdown in long-lived processes, or use captureImmediate in serverless. Not blocking for this PR.


281-309:Use structuredContent for JSON results
MCP SDK doesn’t define a “json” content type. WhenCallToolResult supportsstructuredContent, return your{ results } via astructuredContent field instead of embedding JSON in a text item; otherwise fall back to the existingcontent: [{ type: 'text', text: JSON.stringify({ results }) }].

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between6bf092a andb1dd548.

📒 Files selected for processing (1)
  • docs/src/app/api/internal/[transport]/route.ts (5 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

Prefer ES6 Map over Record when representing key–value collections

Files:

  • docs/src/app/api/internal/[transport]/route.ts
🪛 Biome (2.1.2)
docs/src/app/api/internal/[transport]/route.ts

[error] 227-227: Unexpected empty object pattern.

(lint/correctness/noEmptyPattern)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Security Check

@CLAassistant
Copy link

CLAassistant commentedSep 25, 2025
edited
Loading

CLA assistant check
All committers have signed the CLA.

Copy link
Contributor

@coderabbitaicoderabbitaibot 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: 0

🧹 Nitpick comments (3)
docs/src/app/api/internal/[transport]/route.ts (3)

73-81:Mark OpenAPI spec read failure as an error.

Return includes error text but lacks isError:true, making it harder for clients to detect failures.

Apply this diff:

         return {           content: [             {               type: "text" as const,               text: errorText,             },           ],+          isError: true,         };

148-165:Avoid 'undefined' in responses: normalize description field.

Some responses interpolate page.data.description without a fallback; template strings will print “undefined”.

Apply this diff:

-              text: `Title: ${page.data.title}\nDescription: ${page.data.description}\nContent:\n${content}`,+              text: `Title: ${page.data.title}\nDescription: ${page.data.description ?? ""}\nContent:\n${content}`,
-            text: `Title: ${page.data.title}\nDescription: ${page.data.description}\nContent:\n${content}`,+            text: `Title: ${page.data.title}\nDescription: ${page.data.description ?? ""}\nContent:\n${content}`,
-                text: `Title: ${page.data.title}\nDescription: ${page.data.description}\nContent:\n${content}`,+                text: `Title: ${page.data.title}\nDescription: ${page.data.description ?? ""}\nContent:\n${content}`,
-                text: `Title: ${page.data.title}\nDescription: ${page.data.description}\nContent:\n${content}`,+                text: `Title: ${page.data.title}\nDescription: ${page.data.description ?? ""}\nContent:\n${content}`,
-          text: `Title: ${page.data.title}\nDescription: ${page.data.description}\nError: Could not read file at any of the attempted paths: ${filePath}, ${altPaths.join(", ")}`,+          text: `Title: ${page.data.title}\nDescription: ${page.data.description ?? ""}\nError: Could not read file at any of the attempted paths: ${filePath}, ${altPaths.join(", ")}`,

Also applies to: 183-201, 209-217


112-113:Use strict inequality.

Minor style/consistency improvement.

Apply this diff:

-    return !(v.slugs[0] == "API-Reference");+    return v.slugs[0] !== "API-Reference";
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and betweenb1dd548 and4ad88a5.

📒 Files selected for processing (1)
  • docs/src/app/api/internal/[transport]/route.ts (5 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

Prefer ES6 Map over Record when representing key–value collections

Files:

  • docs/src/app/api/internal/[transport]/route.ts
🪛 Biome (2.1.2)
docs/src/app/api/internal/[transport]/route.ts

[error] 227-227: Unexpected empty object pattern.

(lint/correctness/noEmptyPattern)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Security Check
🔇 Additional comments (4)
docs/src/app/api/internal/[transport]/route.ts (4)

7-7:Type import for CallToolResult is correct.

Good: aligns return types for tool handlers.


315-319:Fetch tool delegation looks good.

Delegating to getDocsById keeps behavior consistent and reuses logic.


227-227:Fix Biome error: replace empty object pattern parameter.

This triggers lint/correctness/noEmptyPattern and will fail CI.

Apply this diff:

-      async ({}) => {+      async () => {

288-300:Prevent runtime TypeError in search (optional chaining misuse, missing fields).

description and content may be undefined; current chaining still calls .includes on undefined.

Apply this diff for robust, case‑insensitive search:

-      async ({ query }) => {-        const q = query.toLowerCase();-        const results = allPages-          .filter(-            (page) =>-              page.data.title.toLowerCase().includes(q) ||-              page.data.description?.toLowerCase().includes(q) ||-              page.data.content.toLowerCase().includes(q),-          )-          .map((page) => ({-            id: page.url,-            title: page.data.title,-            url: page.url,-          }));+      async ({ query }) => {+        const q = query.toLowerCase();+        const results = allPages+          .filter((page) => {+            const title = (page.data.title ?? "").toLowerCase();+            const description = (page.data.description ?? "").toLowerCase();+            const content = (page.data.content ?? "").toLowerCase();+            return title.includes(q) || description.includes(q) || content.includes(q);+          })+          .map((page) => ({+            id: page.url,+            title: page.data.title ?? "",+            url: page.url,+          }));

Optional (nice-to-have):

  • Limit results (e.g.,.slice(0, 50)) to keep responses small.
  • Capture telemetry:nodeClient?.capture({ event: "search", properties: { q }, distinctId: "mcp-handler" });

@N2D4N2D4 requested a review frommadster456October 8, 2025 23:11
@N2D4
Copy link
Contributor

N2D4 commentedOct 8, 2025

Thanks so much! Can you review this@madster456 ?

@vercel
Copy link

vercelbot commentedOct 10, 2025
edited
Loading

The latest updates on your projects. Learn more aboutVercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
stack-docsReadyReadyPreviewCommentOct 10, 2025 9:19pm

@N2D4N2D4enabled auto-merge (squash)October 10, 2025 21:11
Copy link

@cursorcursorbot left a comment

Choose a reason for hiding this comment

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

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit theCursor dashboard to activate Pro and start your 14-day free trial.

(page)=>
page.data.title.toLowerCase().includes(q)||
page.data.description?.toLowerCase().includes(q)||
page.data.content.toLowerCase().includes(q),
Copy link

Choose a reason for hiding this comment

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

Bug: Search Tool Fails Due to Missing Content

Thesearch tool tries to filter pages usingpage.data.content, butpage.data objects don't include the page's content. Content is loaded separately from files, so attempting to accesspage.data.content will result in a runtime error when.toLowerCase() is called onundefined.

Fix in Cursor Fix in Web

Comment on lines +287 to +309
async({ query})=>{
constq=query.toLowerCase();
constresults=allPages
.filter(
(page)=>
page.data.title.toLowerCase().includes(q)||
page.data.description?.toLowerCase().includes(q)||
page.data.content.toLowerCase().includes(q),
)
.map((page)=>({
id:page.url,
title:page.data.title,
url:page.url,
}));
return{
content:[
{
type:"text",
text:JSON.stringify({ results}),
},
],
};
},
Copy link

Choose a reason for hiding this comment

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

The newsearch tool is missing PostHog analytics tracking, unlike all other tools in the handler.

View Details
📝 Patch Details
diff --git a/docs/src/app/api/internal/[transport]/route.ts b/docs/src/app/api/internal/[transport]/route.tsindex 07742661..14b10f3a 100644--- a/docs/src/app/api/internal/[transport]/route.ts+++ b/docs/src/app/api/internal/[transport]/route.ts@@ -285,6 +285,11 @@ const handler = createMcpHandler(       "Search for Stack Auth documentation pages.\n\nUse this tool to find documentation pages that contain a specific keyword or phrase.",       { query: z.string() },       async ({ query }) => {+        nodeClient?.capture({+          event: "search",+          properties: { query },+          distinctId: "mcp-handler",+        });         const q = query.toLowerCase();         const results = allPages           .filter(

Analysis

Missing PostHog analytics tracking in search tool

What fails: Thesearch tool indocs/src/app/api/internal/[transport]/route.ts lacks PostHog analytics tracking vianodeClient?.capture(), while all other MCP tools (list_available_docs,get_docs_by_id,get_stack_auth_setup_instructions) include this tracking.

How to reproduce:

  1. Compare tool implementations indocs/src/app/api/internal/[transport]/route.ts
  2. Search tool (lines 287-309) missingnodeClient?.capture() call
  3. Other tools have tracking:list_available_docs (line 124),getDocsById function (line 228),get_stack_auth_setup_instructions (line 249)

Result: Inconsistent analytics collection - search tool usage not captured in PostHog metrics

Expected: All MCP tools should have consistent PostHog event tracking for usage analytics per established codebase pattern

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@vercelvercel[bot]vercel[bot] left review comments

@ellipsis-devellipsis-dev[bot]ellipsis-dev[bot] left review comments

@coderabbitaicoderabbitai[bot]coderabbitai[bot] left review comments

@cursorcursor[bot]cursor[bot] left review comments

@madster456madster456Awaiting requested review from madster456

+1 more reviewer

@recursemlrecurseml[bot]recurseml[bot] left review comments

Reviewers whose approvals may not affect merge requirements

At least 1 approving review is required to merge this pull request.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

4 participants

@kosmoz@CLAassistant@N2D4@madster456

[8]ページ先頭

©2009-2025 Movatter.jp