From 092d11064cb482775afa28bf84905b47d3af1334 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 25 Mar 2026 13:06:07 +0000 Subject: [PATCH 1/2] fix node-unit MCP type imports Co-authored-by: Kent C. Dodds --- packages/worker/src/mcp/mcp-registration-agent.ts | 9 +++++++++ packages/worker/src/mcp/register-resources.ts | 4 ++-- packages/worker/src/mcp/register-tools.ts | 4 ++-- .../src/mcp/resources/generated-ui-app-resource.ts | 6 ++++-- packages/worker/src/mcp/tools/execute.ts | 4 ++-- packages/worker/src/mcp/tools/open-generated-ui.ts | 4 ++-- packages/worker/src/mcp/tools/search.ts | 4 ++-- 7 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 packages/worker/src/mcp/mcp-registration-agent.ts diff --git a/packages/worker/src/mcp/mcp-registration-agent.ts b/packages/worker/src/mcp/mcp-registration-agent.ts new file mode 100644 index 0000000000..88745116b7 --- /dev/null +++ b/packages/worker/src/mcp/mcp-registration-agent.ts @@ -0,0 +1,9 @@ +import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' +import { type McpCallerContext } from '@kody-internal/shared/chat.ts' + +export type McpRegistrationAgent = { + server: McpServer + getEnv(): Env + getCallerContext(): McpCallerContext + requireDomain(): string +} diff --git a/packages/worker/src/mcp/register-resources.ts b/packages/worker/src/mcp/register-resources.ts index 855ebb59f1..744cc6554c 100644 --- a/packages/worker/src/mcp/register-resources.ts +++ b/packages/worker/src/mcp/register-resources.ts @@ -1,6 +1,6 @@ -import { type MCP } from './index.ts' +import { type McpRegistrationAgent } from './mcp-registration-agent.ts' import { registerGeneratedUiAppResource } from './resources/generated-ui-app-resource.ts' -export async function registerResources(agent: MCP) { +export async function registerResources(agent: McpRegistrationAgent) { await registerGeneratedUiAppResource(agent) } diff --git a/packages/worker/src/mcp/register-tools.ts b/packages/worker/src/mcp/register-tools.ts index 46aa543a7a..315c13ffa7 100644 --- a/packages/worker/src/mcp/register-tools.ts +++ b/packages/worker/src/mcp/register-tools.ts @@ -1,9 +1,9 @@ -import { type MCP } from './index.ts' +import { type McpRegistrationAgent } from './mcp-registration-agent.ts' import { registerExecuteTool } from './tools/execute.ts' import { registerOpenGeneratedUiTool } from './tools/open-generated-ui.ts' import { registerSearchTool } from './tools/search.ts' -export async function registerTools(agent: MCP) { +export async function registerTools(agent: McpRegistrationAgent) { await registerSearchTool(agent) await registerExecuteTool(agent) await registerOpenGeneratedUiTool(agent) diff --git a/packages/worker/src/mcp/resources/generated-ui-app-resource.ts b/packages/worker/src/mcp/resources/generated-ui-app-resource.ts index f062795f0e..097be8ad08 100644 --- a/packages/worker/src/mcp/resources/generated-ui-app-resource.ts +++ b/packages/worker/src/mcp/resources/generated-ui-app-resource.ts @@ -10,7 +10,7 @@ import { generatedUiShellResourceUri, renderGeneratedUiShellEntryPoint, } from '#mcp/apps/generated-ui-shell-entry-point.ts' -import { type MCP } from '#mcp/index.ts' +import { type McpRegistrationAgent } from '#mcp/mcp-registration-agent.ts' import { mcpResourcePath } from '../../mcp-auth.ts' const generatedUiAppResource = { @@ -20,7 +20,9 @@ const generatedUiAppResource = { 'Generic MCP App shell for rendering generated UI artifacts in MCP App compatible hosts.', } as const -export async function registerGeneratedUiAppResource(agent: MCP) { +export async function registerGeneratedUiAppResource( + agent: McpRegistrationAgent, +) { const requestBaseUrl = agent.requireDomain() const appEnv = getEnv(agent.getEnv()) const appBaseUrl = getAppBaseUrl({ diff --git a/packages/worker/src/mcp/tools/execute.ts b/packages/worker/src/mcp/tools/execute.ts index da291156f7..98eed26d68 100644 --- a/packages/worker/src/mcp/tools/execute.ts +++ b/packages/worker/src/mcp/tools/execute.ts @@ -3,7 +3,7 @@ import { type ToolAnnotations } from '@modelcontextprotocol/sdk/types.js' import { z } from 'zod' import { formatExecutionOutput } from '#mcp/executor.ts' import { runCodemodeWithRegistry } from '#mcp/run-codemode-registry.ts' -import { type MCP } from '#mcp/index.ts' +import { type McpRegistrationAgent } from '#mcp/mcp-registration-agent.ts' import { callerContextFields, errorFields, @@ -62,7 +62,7 @@ Examples: } satisfies ToolAnnotations, } as const -export async function registerExecuteTool(agent: MCP) { +export async function registerExecuteTool(agent: McpRegistrationAgent) { agent.server.registerTool( executeTool.name, { diff --git a/packages/worker/src/mcp/tools/open-generated-ui.ts b/packages/worker/src/mcp/tools/open-generated-ui.ts index 925c49947c..012d0904e5 100644 --- a/packages/worker/src/mcp/tools/open-generated-ui.ts +++ b/packages/worker/src/mcp/tools/open-generated-ui.ts @@ -2,7 +2,7 @@ import { registerAppTool } from '@modelcontextprotocol/ext-apps/server' import { type ToolAnnotations } from '@modelcontextprotocol/sdk/types.js' import { z } from 'zod' import { generatedUiShellResourceUri } from '#mcp/apps/generated-ui-shell-entry-point.ts' -import { type MCP } from '#mcp/index.ts' +import { type McpRegistrationAgent } from '#mcp/mcp-registration-agent.ts' const openGeneratedUiTool = { name: 'open_generated_ui', @@ -100,7 +100,7 @@ const inputSchema = z path: ['code'], }) -export async function registerOpenGeneratedUiTool(agent: MCP) { +export async function registerOpenGeneratedUiTool(agent: McpRegistrationAgent) { void agent registerAppTool( agent.server, diff --git a/packages/worker/src/mcp/tools/search.ts b/packages/worker/src/mcp/tools/search.ts index 1b3e0299cf..312716d39a 100644 --- a/packages/worker/src/mcp/tools/search.ts +++ b/packages/worker/src/mcp/tools/search.ts @@ -7,7 +7,7 @@ import { listMcpSkillsByUserId } from '#mcp/skills/mcp-skills-repo.ts' import { type McpSkillRow } from '#mcp/skills/mcp-skills-types.ts' import { listUiArtifactsByUserId } from '#mcp/ui-artifacts-repo.ts' import { type UiArtifactRow } from '#mcp/ui-artifacts-types.ts' -import type { MCP } from '#mcp/index.ts' +import { type McpRegistrationAgent } from '#mcp/mcp-registration-agent.ts' import { getHomeConnectorStatus, type HomeConnectorStatus, @@ -130,7 +130,7 @@ export async function loadOptionalSearchRows(input: { } } -export async function registerSearchTool(agent: MCP) { +export async function registerSearchTool(agent: McpRegistrationAgent) { agent.server.registerTool( searchTool.name, { From 42e2f1e7a9d739142bb3e036ad50c86b81a5d2ae Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 25 Mar 2026 13:13:20 +0000 Subject: [PATCH 2/2] fix vitest codemode cloudflare resolution Co-authored-by: Kent C. Dodds --- packages/worker/src/test-support/cloudflare-workers-stub.ts | 2 ++ vitest.node.config.ts | 3 +++ 2 files changed, 5 insertions(+) diff --git a/packages/worker/src/test-support/cloudflare-workers-stub.ts b/packages/worker/src/test-support/cloudflare-workers-stub.ts index 918f8a81bb..08b9ba6677 100644 --- a/packages/worker/src/test-support/cloudflare-workers-stub.ts +++ b/packages/worker/src/test-support/cloudflare-workers-stub.ts @@ -7,3 +7,5 @@ export class DurableObject { this.env = env } } + +export class RpcTarget {} diff --git a/vitest.node.config.ts b/vitest.node.config.ts index 98d7a2e10e..b86e0d29bb 100644 --- a/vitest.node.config.ts +++ b/vitest.node.config.ts @@ -5,6 +5,9 @@ import { rootDir, sharedProjectConfig } from './vitest-shared.ts' export default mergeConfig( sharedProjectConfig, defineProject({ + ssr: { + noExternal: ['@cloudflare/codemode'], + }, resolve: { alias: [ {