From 77d62bf5cc8765fbb9986fdac854b934152beca6 Mon Sep 17 00:00:00 2001 From: Alec Flett Date: Tue, 19 Aug 2025 18:14:06 -0700 Subject: [PATCH 1/2] refactor: move copilot stuff to its own file --- .../integrations/mastra/src/copilotkit.ts | 56 ++++++++++++++++++ .../integrations/mastra/src/utils.ts | 59 +------------------ 2 files changed, 58 insertions(+), 57 deletions(-) create mode 100644 typescript-sdk/integrations/mastra/src/copilotkit.ts diff --git a/typescript-sdk/integrations/mastra/src/copilotkit.ts b/typescript-sdk/integrations/mastra/src/copilotkit.ts new file mode 100644 index 000000000..31b8ad8d8 --- /dev/null +++ b/typescript-sdk/integrations/mastra/src/copilotkit.ts @@ -0,0 +1,56 @@ +import { AbstractAgent } from "@ag-ui/client"; +import { + CopilotRuntime, + copilotRuntimeNodeHttpEndpoint, + CopilotServiceAdapter, + ExperimentalEmptyAdapter, +} from "@copilotkit/runtime"; +import { RuntimeContext } from "@mastra/core/runtime-context"; +import { registerApiRoute } from "@mastra/core/server"; +import { MastraAgent } from "./mastra"; +export function registerCopilotKit | unknown = unknown>({ + path, + resourceId, + serviceAdapter = new ExperimentalEmptyAdapter(), + agents, + setContext, +}: { + path: string; + resourceId: string; + serviceAdapter?: CopilotServiceAdapter; + agents?: Record; + setContext?: (c: any, runtimeContext: RuntimeContext) => void | Promise; +}) { + return registerApiRoute(path, { + method: `ALL`, + handler: async (c) => { + const mastra = c.get("mastra"); + + const runtimeContext = new RuntimeContext(); + + if (setContext) { + await setContext(c, runtimeContext); + } + + const aguiAgents = + agents || + MastraAgent.getLocalAgents({ + resourceId, + mastra, + runtimeContext, + }); + + const runtime = new CopilotRuntime({ + agents: aguiAgents, + }); + + const handler = copilotRuntimeNodeHttpEndpoint({ + endpoint: path, + runtime, + serviceAdapter, + }); + + return handler.handle(c.req.raw, {}); + }, + }); +} diff --git a/typescript-sdk/integrations/mastra/src/utils.ts b/typescript-sdk/integrations/mastra/src/utils.ts index 598e27d88..17385c21d 100644 --- a/typescript-sdk/integrations/mastra/src/utils.ts +++ b/typescript-sdk/integrations/mastra/src/utils.ts @@ -1,17 +1,9 @@ import type { Message } from "@ag-ui/client"; import { AbstractAgent } from "@ag-ui/client"; -import { - CopilotRuntime, - copilotRuntimeNodeHttpEndpoint, - CopilotServiceAdapter, - ExperimentalEmptyAdapter, -} from "@copilotkit/runtime"; -import type { CoreMessage } from "@mastra/core"; -import { registerApiRoute } from "@mastra/core/server"; -import type { Mastra } from "@mastra/core"; +import { MastraClient } from "@mastra/client-js"; +import type { CoreMessage, Mastra } from "@mastra/core"; import { Agent as LocalMastraAgent } from "@mastra/core/agent"; import { RuntimeContext } from "@mastra/core/runtime-context"; -import { MastraClient } from "@mastra/client-js"; import { MastraAgent } from "./mastra"; export function convertAGUIMessagesToMastra(messages: Message[]): CoreMessage[] { @@ -66,53 +58,6 @@ export function convertAGUIMessagesToMastra(messages: Message[]): CoreMessage[] return result; } -export function registerCopilotKit | unknown = unknown>({ - path, - resourceId, - serviceAdapter = new ExperimentalEmptyAdapter(), - agents, - setContext, -}: { - path: string; - resourceId: string; - serviceAdapter?: CopilotServiceAdapter; - agents?: Record; - setContext?: (c: any, runtimeContext: RuntimeContext) => void | Promise; -}) { - return registerApiRoute(path, { - method: `ALL`, - handler: async (c) => { - const mastra = c.get("mastra"); - - const runtimeContext = new RuntimeContext(); - - if (setContext) { - await setContext(c, runtimeContext); - } - - const aguiAgents = - agents || - MastraAgent.getLocalAgents({ - resourceId, - mastra, - runtimeContext, - }); - - const runtime = new CopilotRuntime({ - agents: aguiAgents, - }); - - const handler = copilotRuntimeNodeHttpEndpoint({ - endpoint: path, - runtime, - serviceAdapter, - }); - - return handler.handle(c.req.raw, {}); - }, - }); -} - export interface GetRemoteAgentsOptions { mastraClient: MastraClient; resourceId?: string; From a177cf485409971d22247a6a20a0a39b08c3ddc1 Mon Sep 17 00:00:00 2001 From: Alec Flett Date: Tue, 19 Aug 2025 18:14:20 -0700 Subject: [PATCH 2/2] update package.json to accomodate separate import --- .../integrations/mastra/package.json | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/typescript-sdk/integrations/mastra/package.json b/typescript-sdk/integrations/mastra/package.json index 24b0c8e40..5f29c218d 100644 --- a/typescript-sdk/integrations/mastra/package.json +++ b/typescript-sdk/integrations/mastra/package.json @@ -14,6 +14,25 @@ "dist/**", "README.md" ], + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./copilotkit": { + "types": "./dist/copilotkit.d.ts", + "import": "./dist/copilotkit.mjs", + "require": "./dist/copilotkit.js" + } + }, + "typesVersions": { + "*": { + "copilotkit": [ + "dist/copilotkit.d.ts" + ] + } + }, "scripts": { "build": "tsup", "dev": "tsup --watch", @@ -23,6 +42,20 @@ "link:global": "pnpm link --global", "unlink:global": "pnpm unlink --global" }, + "tsup": { + "entry": { + "index": "src/index.ts", + "copilotkit": "src/copilotkit.ts" + }, + "dts": true, + "format": [ + "cjs", + "esm" + ], + "splitting": false, + "sourcemap": true, + "clean": true + }, "dependencies": { "@ag-ui/client": "workspace:*", "@ai-sdk/ui-utils": "^1.1.19",