@mastra/acp 0.4.0 → 0.4.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connection.ts","../src/agent.ts","../src/session.ts","../src/tool.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { spawn } from 'node:child_process';\nimport type { ChildProcessWithoutNullStreams } from 'node:child_process';\nimport process from 'node:process';\nimport { Readable, Writable } from 'node:stream';\nimport { ClientSideConnection, ndJsonStream, PROTOCOL_VERSION } from '@agentclientprotocol/sdk';\nimport type {\n Client,\n InitializeRequest,\n ModelInfo,\n NewSessionRequest,\n NewSessionResponse,\n PermissionOption,\n PromptResponse,\n ReadTextFileRequest,\n ReadTextFileResponse,\n RequestPermissionRequest,\n RequestPermissionResponse,\n SessionNotification,\n SessionUpdate,\n WriteTextFileRequest,\n WriteTextFileResponse,\n} from '@agentclientprotocol/sdk';\n\nimport { LocalFilesystem, Workspace } from '@mastra/core/workspace';\nimport type { CreateACPToolOptions } from './types';\n\nexport type ACPStreamEvent = { type: 'text'; text: string } | { type: 'session-update'; update: SessionUpdate };\n\ntype PromptState = {\n sessionId: string;\n onEvent?: (event: ACPStreamEvent) => void;\n};\n\nclass ACPClient implements Client {\n constructor(\n private readonly getPromptState: () => PromptState | undefined,\n private readonly workspace: Workspace,\n private readonly onPermissionRequest?: CreateACPToolOptions['onPermissionRequest'],\n ) {}\n\n async sessionUpdate(notification: SessionNotification): Promise<void> {\n const state = this.getPromptState();\n\n if (!state || notification.sessionId !== state.sessionId) {\n return;\n }\n\n const update = notification.update;\n\n if (update.sessionUpdate === 'agent_message_chunk') {\n if (update.content.type === 'text') {\n state.onEvent?.({ type: 'text', text: update.content.text });\n }\n } else {\n state.onEvent?.({ type: 'session-update', update });\n }\n }\n\n async requestPermission(request: RequestPermissionRequest): Promise<RequestPermissionResponse> {\n if (this.onPermissionRequest) {\n return this.onPermissionRequest(request);\n }\n\n const option = request.options[0];\n\n if (!option) {\n return { outcome: { outcome: 'cancelled' } };\n }\n\n return { outcome: selectedPermissionOutcome(option) };\n }\n\n async readTextFile(params: ReadTextFileRequest): Promise<ReadTextFileResponse> {\n let content = await this.workspace.filesystem?.readFile(params.path);\n\n if (!(typeof content === 'string')) {\n const decoder = new TextDecoder('utf-8');\n content = decoder.decode(content);\n }\n\n if (params.line != null || params.limit != null) {\n const lines = content.split('\\n');\n const start = (params.line ?? 1) - 1;\n const end = params.limit != null ? start + params.limit : lines.length;\n return { content: lines.slice(start, end).join('\\n') };\n }\n\n return { content };\n }\n\n async writeTextFile(params: WriteTextFileRequest): Promise<WriteTextFileResponse> {\n await this.workspace.filesystem?.writeFile(params.path, params.content);\n\n return {};\n }\n}\n\nexport class ACPConnection {\n readonly options: CreateACPToolOptions;\n\n private agentProcess?: ChildProcessWithoutNullStreams;\n private connection?: ClientSideConnection;\n private session?: NewSessionResponse;\n private initializePromise?: Promise<void>;\n private currentPrompt?: PromptState;\n private stderr = '';\n\n constructor(options: CreateACPToolOptions) {\n this.options = options;\n }\n\n get sessionId(): string | undefined {\n return this.session?.sessionId;\n }\n\n async getAvailableModels(): Promise<ModelInfo[]> {\n await this.ensureConnected();\n return this.session?.models?.availableModels ?? [];\n }\n\n async setModel(modelId: string): Promise<void> {\n await this.ensureConnected();\n\n const available = this.session?.models?.availableModels;\n\n if (available && !available.some(m => m.modelId === modelId)) {\n const ids = available.map(m => m.modelId).join(', ') || '(none)';\n throw new Error(`Model \"${modelId}\" is not available. Available models: ${ids}`);\n }\n\n await this.connection!.unstable_setSessionModel({\n sessionId: this.session!.sessionId,\n modelId,\n });\n }\n\n async prompt(task: string, signal?: AbortSignal): Promise<string> {\n const parts: string[] = [];\n\n for await (const event of this.promptStream(task, signal)) {\n if (event.type === 'text') {\n parts.push(event.text);\n }\n }\n\n return parts.join('');\n }\n\n async *promptStream(task: string, signal?: AbortSignal): AsyncGenerator<ACPStreamEvent> {\n await this.ensureConnected();\n\n const sessionId = this.session?.sessionId;\n\n if (!this.connection || !sessionId) {\n throw new Error('ACP connection is not initialized');\n }\n\n if (signal?.aborted) {\n await this.cancel();\n throw signal.reason ?? new Error('ACP prompt aborted');\n }\n\n const queue = createAsyncQueue<ACPStreamEvent>();\n const state: PromptState = {\n sessionId,\n onEvent: event => queue.push(event),\n };\n this.currentPrompt = state;\n\n const abortHandler = () => {\n void this.cancel();\n queue.throw(signal?.reason ?? new Error('ACP prompt aborted'));\n };\n\n signal?.addEventListener('abort', abortHandler, { once: true });\n\n const responsePromise = this.connection\n .prompt({\n sessionId,\n prompt: [{ type: 'text', text: task }],\n })\n .then(\n response => {\n this.throwIfPromptDidNotComplete(response);\n queue.close();\n },\n error => {\n queue.throw(this.withStderr(error));\n },\n );\n\n try {\n for await (const chunk of queue) {\n yield chunk;\n }\n\n await responsePromise;\n } catch (error) {\n await responsePromise.catch(() => undefined);\n throw error;\n } finally {\n signal?.removeEventListener('abort', abortHandler);\n if (this.currentPrompt === state) {\n this.currentPrompt = undefined;\n }\n\n if (this.options.persistSession === false) {\n this.disconnect();\n }\n }\n }\n\n async cancel(): Promise<void> {\n const sessionId = this.session?.sessionId;\n\n if (!this.connection || !sessionId) {\n return;\n }\n\n await this.connection.cancel({ sessionId });\n }\n\n disconnect(): void {\n this.connection = undefined;\n this.session = undefined;\n this.initializePromise = undefined;\n this.currentPrompt = undefined;\n\n if (this.agentProcess && !this.agentProcess.killed) {\n this.agentProcess.kill();\n }\n\n this.agentProcess = undefined;\n }\n\n private async ensureConnected(): Promise<void> {\n if (this.connection && this.session) {\n return;\n }\n\n this.initializePromise ??= this.initialize();\n await this.initializePromise;\n }\n\n private async initialize(): Promise<void> {\n this.stderr = '';\n this.agentProcess = spawn(this.options.command, this.options.args ?? [], {\n cwd: this.options.cwd,\n env: { ...process.env, ...this.options.env },\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n // Keep an 'error' listener attached for the lifetime of the process so a\n // failed spawn (e.g. ENOENT) rejects initialization instead of crashing\n // the host process with an unhandled 'error' event.\n const processFailure = new Promise<never>((_, reject) => {\n this.agentProcess!.on('error', error => {\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n this.agentProcess!.on('exit', (code, signal) => {\n reject(new Error(`ACP agent process exited during initialization (code: ${code}, signal: ${signal})`));\n });\n });\n processFailure.catch(() => undefined);\n\n this.agentProcess.stderr.on('data', chunk => {\n this.stderr += String(chunk);\n });\n\n const stream = ndJsonStream(\n Writable.toWeb(this.agentProcess.stdin) as WritableStream<Uint8Array>,\n Readable.toWeb(this.agentProcess.stdout) as ReadableStream<Uint8Array>,\n );\n\n const workspace =\n this.options.workspace ??\n new Workspace({\n filesystem: new LocalFilesystem({ basePath: this.options.cwd ?? process.cwd() }),\n });\n\n try {\n this.connection = new ClientSideConnection(() => {\n const defaultClient = new ACPClient(() => this.currentPrompt, workspace, this.options.onPermissionRequest);\n return this.options.createClient?.(defaultClient) ?? defaultClient;\n }, stream);\n\n await Promise.race([processFailure, this.initializeSession()]);\n } catch (error) {\n this.disconnect();\n throw this.withStderr(error);\n }\n }\n\n private async initializeSession(): Promise<void> {\n await this.connection!.initialize(this.getInitializeRequest());\n\n if (this.options.authMethodId) {\n await this.connection!.authenticate({ methodId: this.options.authMethodId });\n }\n\n this.session = await this.connection!.newSession(this.getNewSessionRequest());\n\n if (this.options.model) {\n const available = this.session.models?.availableModels;\n\n if (available && !available.some(m => m.modelId === this.options.model)) {\n const ids = available.map(m => m.modelId).join(', ') || '(none)';\n throw new Error(`Model \"${this.options.model}\" is not available. Available models: ${ids}`);\n }\n\n await this.connection!.unstable_setSessionModel({\n sessionId: this.session.sessionId,\n modelId: this.options.model,\n });\n }\n }\n\n private getInitializeRequest(): InitializeRequest {\n return {\n protocolVersion: PROTOCOL_VERSION,\n clientCapabilities: {\n fs: { readTextFile: true, writeTextFile: true },\n },\n clientInfo: {\n name: '@mastra/acp',\n version: '0.1.0',\n },\n ...this.options.initialize,\n };\n }\n\n private getNewSessionRequest(): NewSessionRequest {\n return {\n cwd: this.options.cwd ?? process.cwd(),\n mcpServers: [],\n ...this.options.session,\n };\n }\n\n private throwIfPromptDidNotComplete(response: PromptResponse): void {\n if (response.stopReason === 'end_turn') {\n return;\n }\n\n throw new Error(`ACP prompt stopped before completing: ${response.stopReason}`);\n }\n\n private withStderr(error: unknown): Error {\n const stderr = this.stderr.trim();\n\n if (error instanceof Error) {\n if (stderr && !error.message.includes(stderr)) {\n error.message = `${error.message}\\n\\nACP agent stderr:\\n${stderr}`;\n }\n\n return error;\n }\n\n return new Error(stderr ? `${String(error)}\\n\\nACP agent stderr:\\n${stderr}` : String(error));\n }\n}\n\ntype AsyncQueue<T> = AsyncIterable<T> & {\n close: () => void;\n push: (value: T) => void;\n throw: (error: unknown) => void;\n};\n\nfunction createAsyncQueue<T>(): AsyncQueue<T> {\n const values: T[] = [];\n const waiters: Array<{\n resolve: (value: IteratorResult<T>) => void;\n reject: (error: unknown) => void;\n }> = [];\n let closed = false;\n let error: unknown;\n\n const next = (): Promise<IteratorResult<T>> => {\n if (values.length > 0) {\n return Promise.resolve({ value: values.shift()!, done: false });\n }\n\n if (error) {\n return Promise.reject(error);\n }\n\n if (closed) {\n return Promise.resolve({ value: undefined, done: true });\n }\n\n return new Promise((resolve, reject) => {\n waiters.push({ resolve, reject });\n });\n };\n\n return {\n push(value) {\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve({ value, done: false });\n return;\n }\n\n values.push(value);\n },\n close() {\n closed = true;\n for (const waiter of waiters.splice(0)) {\n waiter.resolve({ value: undefined, done: true });\n }\n },\n throw(queueError) {\n error = queueError;\n for (const waiter of waiters.splice(0)) {\n waiter.reject(queueError);\n }\n },\n [Symbol.asyncIterator]() {\n return { next };\n },\n };\n}\n\nfunction selectedPermissionOutcome(option: PermissionOption): RequestPermissionResponse['outcome'] {\n return { outcome: 'selected', optionId: option.optionId };\n}\n","import { randomUUID } from 'node:crypto';\nimport { ReadableStream } from 'node:stream/web';\n\nimport type { ModelInfo, SessionUpdate } from '@agentclientprotocol/sdk';\nimport type {\n AgentGenerateOptions,\n AgentInstructions,\n AgentStreamOptions,\n MastraLanguageModel,\n SubAgent,\n SubAgentGenerateResult,\n SubAgentStreamResult,\n} from '@mastra/core/agent';\nimport { MessageList, coreContentToString } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { ChunkType } from '@mastra/core/stream';\nimport type { DynamicArgument } from '@mastra/core/types';\n\nimport { ACPConnection } from './connection';\nimport type { CreateACPToolOptions } from './types';\n\nconst CHUNK_FROM_AGENT = 'AGENT' as ChunkType['from'];\ntype AcpToolResult = Extract<NonNullable<SubAgentStreamResult['toolResults']>, unknown[]>[number];\n\nconst model = {\n modelId: 'acp-agent',\n provider: '@mastra/acp',\n specificationVersion: 'v3',\n supportedUrls: {},\n doGenerate: async () => ({\n stream: new ReadableStream({\n start: async controller => {\n controller.close();\n },\n }),\n }),\n doStream: async () => ({\n stream: new ReadableStream({\n start: async controller => {\n controller.close();\n },\n }),\n }),\n} as const satisfies MastraLanguageModel;\n\nexport type AcpAgentOptions = CreateACPToolOptions & {\n name?: string;\n};\n\nexport class AcpAgent<\n TId extends string = string,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> implements SubAgent<TId, TRequestContext> {\n readonly id: TId;\n readonly name: string;\n readonly connection: ACPConnection;\n readonly description: string;\n\n constructor(options: AcpAgentOptions) {\n this.id = options.id as TId;\n this.name = options.name ?? options.id;\n this.description = options.description;\n this.connection = new ACPConnection(options);\n }\n\n __registerMastra(_mastra: Mastra): void {}\n\n getDescription(): string {\n return this.description;\n }\n\n getModel(): ReturnType<SubAgent<TId, TRequestContext>['getModel']> {\n return model;\n }\n\n hasOwnMemory(): boolean {\n return false;\n }\n\n __setMemory(_memory: DynamicArgument<any, any>): void {}\n\n getMemory(): undefined {\n return undefined;\n }\n\n getInstructions(): string {\n return '';\n }\n\n async getAvailableModels(): Promise<ModelInfo[]> {\n return this.connection.getAvailableModels();\n }\n\n async setModel(modelId: string): Promise<void> {\n return this.connection.setModel(modelId);\n }\n\n async generate(messages: MessageListInput, options?: AgentGenerateOptions): Promise<SubAgentGenerateResult> {\n const prompt = this.getPrompt(messages, options?.instructions);\n const text = await this.connection.prompt(\n prompt,\n (options as { abortSignal?: AbortSignal } | undefined)?.abortSignal,\n );\n const messageList = this.createMessageList(messages, text);\n\n return {\n text,\n response: {\n dbMessages: messageList.get.response.db(),\n },\n toolResults: [],\n finishReason: 'stop',\n runId: options?.runId ?? randomUUID(),\n };\n }\n\n async resumeGenerate(): Promise<SubAgentGenerateResult> {\n throw new Error('AcpAgent does not support resuming suspended generate calls');\n }\n\n async resumeStream(): Promise<SubAgentStreamResult> {\n throw new Error('AcpAgent does not support resuming suspended stream calls');\n }\n\n async stream(messages: MessageListInput, options?: AgentStreamOptions): Promise<SubAgentStreamResult> {\n const runId = options?.runId ?? randomUUID();\n const prompt = this.getPrompt(messages, options?.instructions);\n const signal = (options as { abortSignal?: AbortSignal } | undefined)?.abortSignal;\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n\n let resolveText!: (text: string) => void;\n let rejectText!: (error: unknown) => void;\n const textPromise = new Promise<string>((resolve, reject) => {\n resolveText = resolve;\n rejectText = reject;\n });\n\n const fullStream = new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = randomUUID();\n const chunks: string[] = [];\n const toolNames = new Map<string, string>();\n const toolResults: AcpToolResult[] = [];\n\n try {\n controller.enqueue({ type: 'text-start', runId, from: CHUNK_FROM_AGENT, payload: { id: textId } });\n\n for await (const event of this.connection.promptStream(prompt, signal)) {\n if (event.type === 'text') {\n chunks.push(event.text);\n controller.enqueue({\n type: 'text-delta',\n runId,\n from: CHUNK_FROM_AGENT,\n payload: { id: textId, text: event.text },\n });\n } else if (event.type === 'session-update') {\n for (const chunk of getMastraChunksFromACPUpdate(event.update, runId, toolNames)) {\n if (chunk.type === 'tool-result') {\n toolResults.push({ payload: chunk.payload });\n }\n controller.enqueue(chunk);\n }\n }\n }\n\n const text = chunks.join('');\n messageList.add([{ role: 'assistant', content: text }], 'response');\n\n controller.enqueue({ type: 'text-end', runId, from: CHUNK_FROM_AGENT, payload: { id: textId } });\n controller.enqueue(createFinishChunk('step-finish', runId));\n controller.enqueue(createFinishChunk('finish', runId));\n await options?.onFinish?.(createOnFinishResult({ text, runId, messageList, toolResults }) as any);\n resolveText(text);\n controller.close();\n } catch (error) {\n const text = chunks.join('');\n await options?.onFinish?.(createOnFinishResult({ text, runId, messageList, toolResults, error }) as any);\n rejectText(error);\n controller.error(error);\n }\n },\n });\n\n return {\n fullStream,\n text: textPromise,\n messageList,\n toolResults: [],\n runId,\n };\n }\n\n private getPrompt(messages: MessageListInput, instructions?: AgentInstructions): string {\n const prompt = extractText(messages);\n const instructionText = instructions ? extractInstructions(instructions) : '';\n\n if (!instructionText) {\n return prompt;\n }\n\n return `${instructionText}\\n\\n${prompt}`;\n }\n\n private createMessageList(messages: MessageListInput, text: string): MessageList {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: text }], 'response');\n return messageList;\n }\n}\n\nfunction extractText(messages: MessageListInput): string {\n if (typeof messages === 'string') {\n return messages;\n }\n\n if (Array.isArray(messages) && messages.every(message => typeof message === 'string')) {\n return messages.join('\\n');\n }\n\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n\n return messageList.get.all\n .core()\n .map(message => coreContentToString(message.content))\n .filter(Boolean)\n .join('\\n');\n}\n\nfunction extractInstructions(instructions: AgentInstructions): string {\n if (typeof instructions === 'string') {\n return instructions;\n }\n\n if (Array.isArray(instructions)) {\n return instructions.map(instruction => extractInstructions(instruction)).join('\\n');\n }\n\n return coreContentToString(instructions.content);\n}\n\nfunction getMastraChunksFromACPUpdate(\n update: SessionUpdate,\n runId: string,\n toolNames: Map<string, string>,\n): ChunkType[] {\n switch (update.sessionUpdate) {\n case 'tool_call': {\n const toolName = getToolName(update, toolNames);\n toolNames.set(update.toolCallId, toolName);\n\n return [\n {\n type: 'tool-call',\n runId,\n from: CHUNK_FROM_AGENT,\n payload: {\n toolCallId: update.toolCallId,\n toolName,\n args: toRecord(update.rawInput),\n },\n },\n ];\n }\n case 'tool_call_update': {\n const toolName = getToolName(update, toolNames);\n\n if (update.status === 'completed' || update.status === 'failed') {\n return [\n {\n type: 'tool-result',\n runId,\n from: CHUNK_FROM_AGENT,\n payload: {\n toolCallId: update.toolCallId,\n toolName,\n result: update.rawOutput ?? update.content ?? { status: update.status, title: update.title },\n isError: update.status === 'failed',\n },\n },\n ];\n }\n\n return [\n {\n type: 'tool-call-delta',\n runId,\n from: CHUNK_FROM_AGENT,\n payload: {\n toolCallId: update.toolCallId,\n toolName,\n argsTextDelta: update.title ?? update.status ?? '',\n },\n },\n ];\n }\n default:\n return [];\n }\n}\n\nfunction getToolName(\n update: Extract<SessionUpdate, { sessionUpdate: 'tool_call' | 'tool_call_update' }>,\n toolNames: Map<string, string>,\n): string {\n return update.title ?? toolNames.get(update.toolCallId) ?? update.kind ?? 'acp_tool';\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return value as Record<string, unknown>;\n }\n\n if (value === undefined) {\n return {};\n }\n\n return { input: value };\n}\n\nfunction createOnFinishResult({\n text,\n runId,\n messageList,\n toolResults,\n error,\n}: {\n text: string;\n runId: string;\n messageList: MessageList;\n toolResults: AcpToolResult[];\n error?: unknown;\n}) {\n const usage = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };\n\n return {\n text,\n finishReason: 'stop',\n usage,\n totalUsage: usage,\n warnings: [],\n response: {\n messages: messageList.get.response.aiV5.model(),\n },\n steps: [],\n toolResults,\n runId,\n ...(error === undefined ? {} : { error }),\n };\n}\n\nfunction createFinishChunk(type: 'step-finish' | 'finish', runId: string): ChunkType {\n return {\n type,\n runId,\n from: CHUNK_FROM_AGENT,\n payload: {\n id: randomUUID(),\n output: {\n steps: [],\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n },\n stepResult: {\n reason: 'stop',\n warnings: [],\n isContinued: false,\n },\n metadata: {},\n messages: { nonUser: [], all: [] },\n },\n } as unknown as ChunkType;\n}\n","import { ACPConnection } from './connection';\nimport type { CreateACPToolOptions } from './types';\n\nexport class ACPToolSession {\n private connection?: ACPConnection;\n\n constructor(private readonly options: CreateACPToolOptions) {}\n\n getConnection(workspace: CreateACPToolOptions['workspace']): ACPConnection {\n if (this.options.persistSession === false) {\n return this.createConnection(workspace);\n }\n\n this.connection ??= this.createConnection(workspace);\n return this.connection;\n }\n\n private createConnection(workspace: CreateACPToolOptions['workspace']): ACPConnection {\n return new ACPConnection({\n ...this.options,\n workspace: workspace ?? this.options.workspace,\n });\n }\n}\n","\nimport { createTool } from '@mastra/core/tools';\nimport { z } from 'zod/v4';\n\nimport { ACPToolSession } from './session';\nimport type { CreateACPToolOptions } from './types';\n\nexport function createACPTool(options: CreateACPToolOptions) {\n const session = new ACPToolSession(options);\n\n return createTool({\n id: options.id,\n description: options.description,\n inputSchema: {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"type\": \"object\",\n \"properties\": {\n \"task\": {\n \"type\": \"string\",\n \"description\": \"The task to send to the ACP agent\"\n }\n },\n \"required\": [\n \"task\"\n ]\n},\n outputSchema: {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"type\": \"object\",\n \"properties\": {\n \"output\": {\n \"type\": \"string\",\n \"description\": \"The output of the ACP agent\"\n }\n },\n \"required\": [\n \"output\"\n ]\n},\n suspendSchema: {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"type\": \"object\",\n \"properties\": {\n \"permissionRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\",\n \"description\": \"The title of the permission request\"\n },\n \"options\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"optionId\": {\n \"type\": \"string\",\n \"description\": \"The option id to select\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The title of the permission request\"\n }\n },\n \"required\": [\n \"optionId\",\n \"name\"\n ]\n }\n }\n },\n \"required\": [\n \"title\",\n \"options\"\n ]\n }\n },\n \"required\": [\n \"permissionRequest\"\n ]\n},\n resumeSchema: {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"optionId\": {\n \"description\": \"The option id to select\",\n \"type\": \"string\"\n },\n \"outcome\": {\n \"description\": \"The outcome of the permission request\",\n \"type\": \"string\",\n \"const\": \"selected\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"outcome\": {\n \"description\": \"The outcome of the permission request\",\n \"type\": \"string\",\n \"const\": \"cancelled\"\n }\n }\n }\n ]\n},\n execute: async ({ task }, context) => {\n const workspace = await context?.mastra?.getWorkspace();\n const connection = session.getConnection(workspace);\n const output = await connection.prompt(task, context?.abortSignal);\n\n return { output };\n },\n });\n}\n"]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/connection.ts","../src/agent.ts","../src/session.ts","../src/tool.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\nimport type { ChildProcessWithoutNullStreams } from 'node:child_process';\nimport process from 'node:process';\nimport { Readable, Writable } from 'node:stream';\nimport { ClientSideConnection, ndJsonStream, PROTOCOL_VERSION } from '@agentclientprotocol/sdk';\nimport type {\n Client,\n InitializeRequest,\n ModelInfo,\n NewSessionRequest,\n NewSessionResponse,\n PermissionOption,\n PromptResponse,\n ReadTextFileRequest,\n ReadTextFileResponse,\n RequestPermissionRequest,\n RequestPermissionResponse,\n SessionNotification,\n SessionUpdate,\n WriteTextFileRequest,\n WriteTextFileResponse,\n} from '@agentclientprotocol/sdk';\n\nimport { LocalFilesystem, Workspace } from '@mastra/core/workspace';\nimport type { CreateACPToolOptions } from './types';\n\nexport type ACPStreamEvent = { type: 'text'; text: string } | { type: 'session-update'; update: SessionUpdate };\n\ntype PromptState = {\n sessionId: string;\n onEvent?: (event: ACPStreamEvent) => void;\n};\n\nclass ACPClient implements Client {\n constructor(\n private readonly getPromptState: () => PromptState | undefined,\n private readonly workspace: Workspace,\n private readonly onPermissionRequest?: CreateACPToolOptions['onPermissionRequest'],\n ) {}\n\n async sessionUpdate(notification: SessionNotification): Promise<void> {\n const state = this.getPromptState();\n\n if (!state || notification.sessionId !== state.sessionId) {\n return;\n }\n\n const update = notification.update;\n\n if (update.sessionUpdate === 'agent_message_chunk') {\n if (update.content.type === 'text') {\n state.onEvent?.({ type: 'text', text: update.content.text });\n }\n } else {\n state.onEvent?.({ type: 'session-update', update });\n }\n }\n\n async requestPermission(request: RequestPermissionRequest): Promise<RequestPermissionResponse> {\n if (this.onPermissionRequest) {\n return this.onPermissionRequest(request);\n }\n\n const option = request.options[0];\n\n if (!option) {\n return { outcome: { outcome: 'cancelled' } };\n }\n\n return { outcome: selectedPermissionOutcome(option) };\n }\n\n async readTextFile(params: ReadTextFileRequest): Promise<ReadTextFileResponse> {\n let content = await this.workspace.filesystem?.readFile(params.path);\n\n if (!(typeof content === 'string')) {\n const decoder = new TextDecoder('utf-8');\n content = decoder.decode(content);\n }\n\n if (params.line != null || params.limit != null) {\n const lines = content.split('\\n');\n const start = (params.line ?? 1) - 1;\n const end = params.limit != null ? start + params.limit : lines.length;\n return { content: lines.slice(start, end).join('\\n') };\n }\n\n return { content };\n }\n\n async writeTextFile(params: WriteTextFileRequest): Promise<WriteTextFileResponse> {\n await this.workspace.filesystem?.writeFile(params.path, params.content);\n\n return {};\n }\n}\n\nexport class ACPConnection {\n readonly options: CreateACPToolOptions;\n\n private agentProcess?: ChildProcessWithoutNullStreams;\n private connection?: ClientSideConnection;\n private session?: NewSessionResponse;\n private initializePromise?: Promise<void>;\n private currentPrompt?: PromptState;\n private stderr = '';\n\n constructor(options: CreateACPToolOptions) {\n this.options = options;\n }\n\n get sessionId(): string | undefined {\n return this.session?.sessionId;\n }\n\n async getAvailableModels(): Promise<ModelInfo[]> {\n await this.ensureConnected();\n return this.session?.models?.availableModels ?? [];\n }\n\n async setModel(modelId: string): Promise<void> {\n await this.ensureConnected();\n\n const available = this.session?.models?.availableModels;\n\n if (available && !available.some(m => m.modelId === modelId)) {\n const ids = available.map(m => m.modelId).join(', ') || '(none)';\n throw new Error(`Model \"${modelId}\" is not available. Available models: ${ids}`);\n }\n\n await this.connection!.unstable_setSessionModel({\n sessionId: this.session!.sessionId,\n modelId,\n });\n }\n\n async prompt(task: string, signal?: AbortSignal): Promise<string> {\n const parts: string[] = [];\n\n for await (const event of this.promptStream(task, signal)) {\n if (event.type === 'text') {\n parts.push(event.text);\n }\n }\n\n return parts.join('');\n }\n\n async *promptStream(task: string, signal?: AbortSignal): AsyncGenerator<ACPStreamEvent> {\n await this.ensureConnected();\n\n const sessionId = this.session?.sessionId;\n\n if (!this.connection || !sessionId) {\n throw new Error('ACP connection is not initialized');\n }\n\n if (signal?.aborted) {\n await this.cancel();\n throw signal.reason ?? new Error('ACP prompt aborted');\n }\n\n const queue = createAsyncQueue<ACPStreamEvent>();\n const state: PromptState = {\n sessionId,\n onEvent: event => queue.push(event),\n };\n this.currentPrompt = state;\n\n const abortHandler = () => {\n void this.cancel();\n queue.throw(signal?.reason ?? new Error('ACP prompt aborted'));\n };\n\n signal?.addEventListener('abort', abortHandler, { once: true });\n\n const responsePromise = this.connection\n .prompt({\n sessionId,\n prompt: [{ type: 'text', text: task }],\n })\n .then(\n response => {\n this.throwIfPromptDidNotComplete(response);\n queue.close();\n },\n error => {\n queue.throw(this.withStderr(error));\n },\n );\n\n try {\n for await (const chunk of queue) {\n yield chunk;\n }\n\n await responsePromise;\n } catch (error) {\n await responsePromise.catch(() => undefined);\n throw error;\n } finally {\n signal?.removeEventListener('abort', abortHandler);\n if (this.currentPrompt === state) {\n this.currentPrompt = undefined;\n }\n\n if (this.options.persistSession === false) {\n this.disconnect();\n }\n }\n }\n\n async cancel(): Promise<void> {\n const sessionId = this.session?.sessionId;\n\n if (!this.connection || !sessionId) {\n return;\n }\n\n await this.connection.cancel({ sessionId });\n }\n\n disconnect(): void {\n this.connection = undefined;\n this.session = undefined;\n this.initializePromise = undefined;\n this.currentPrompt = undefined;\n\n if (this.agentProcess && !this.agentProcess.killed) {\n this.agentProcess.kill();\n }\n\n this.agentProcess = undefined;\n }\n\n private async ensureConnected(): Promise<void> {\n if (this.connection && this.session) {\n return;\n }\n\n this.initializePromise ??= this.initialize();\n await this.initializePromise;\n }\n\n private async initialize(): Promise<void> {\n this.stderr = '';\n this.agentProcess = spawn(this.options.command, this.options.args ?? [], {\n cwd: this.options.cwd,\n env: { ...process.env, ...this.options.env },\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n // Keep an 'error' listener attached for the lifetime of the process so a\n // failed spawn (e.g. ENOENT) rejects initialization instead of crashing\n // the host process with an unhandled 'error' event.\n const processFailure = new Promise<never>((_, reject) => {\n this.agentProcess!.on('error', error => {\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n this.agentProcess!.on('exit', (code, signal) => {\n reject(new Error(`ACP agent process exited during initialization (code: ${code}, signal: ${signal})`));\n });\n });\n processFailure.catch(() => undefined);\n\n this.agentProcess.stderr.on('data', chunk => {\n this.stderr += String(chunk);\n });\n\n const stream = ndJsonStream(\n Writable.toWeb(this.agentProcess.stdin) as WritableStream<Uint8Array>,\n Readable.toWeb(this.agentProcess.stdout) as ReadableStream<Uint8Array>,\n );\n\n const workspace =\n this.options.workspace ??\n new Workspace({\n filesystem: new LocalFilesystem({ basePath: this.options.cwd ?? process.cwd() }),\n });\n\n try {\n this.connection = new ClientSideConnection(() => {\n const defaultClient = new ACPClient(() => this.currentPrompt, workspace, this.options.onPermissionRequest);\n return this.options.createClient?.(defaultClient) ?? defaultClient;\n }, stream);\n\n await Promise.race([processFailure, this.initializeSession()]);\n } catch (error) {\n this.disconnect();\n throw this.withStderr(error);\n }\n }\n\n private async initializeSession(): Promise<void> {\n await this.connection!.initialize(this.getInitializeRequest());\n\n if (this.options.authMethodId) {\n await this.connection!.authenticate({ methodId: this.options.authMethodId });\n }\n\n this.session = await this.connection!.newSession(this.getNewSessionRequest());\n\n if (this.options.model) {\n const available = this.session.models?.availableModels;\n\n if (available && !available.some(m => m.modelId === this.options.model)) {\n const ids = available.map(m => m.modelId).join(', ') || '(none)';\n throw new Error(`Model \"${this.options.model}\" is not available. Available models: ${ids}`);\n }\n\n await this.connection!.unstable_setSessionModel({\n sessionId: this.session.sessionId,\n modelId: this.options.model,\n });\n }\n }\n\n private getInitializeRequest(): InitializeRequest {\n return {\n protocolVersion: PROTOCOL_VERSION,\n clientCapabilities: {\n fs: { readTextFile: true, writeTextFile: true },\n },\n clientInfo: {\n name: '@mastra/acp',\n version: '0.1.0',\n },\n ...this.options.initialize,\n };\n }\n\n private getNewSessionRequest(): NewSessionRequest {\n return {\n cwd: this.options.cwd ?? process.cwd(),\n mcpServers: [],\n ...this.options.session,\n };\n }\n\n private throwIfPromptDidNotComplete(response: PromptResponse): void {\n if (response.stopReason === 'end_turn') {\n return;\n }\n\n throw new Error(`ACP prompt stopped before completing: ${response.stopReason}`);\n }\n\n private withStderr(error: unknown): Error {\n const stderr = this.stderr.trim();\n\n if (error instanceof Error) {\n if (stderr && !error.message.includes(stderr)) {\n error.message = `${error.message}\\n\\nACP agent stderr:\\n${stderr}`;\n }\n\n return error;\n }\n\n return new Error(stderr ? `${String(error)}\\n\\nACP agent stderr:\\n${stderr}` : String(error));\n }\n}\n\ntype AsyncQueue<T> = AsyncIterable<T> & {\n close: () => void;\n push: (value: T) => void;\n throw: (error: unknown) => void;\n};\n\nfunction createAsyncQueue<T>(): AsyncQueue<T> {\n const values: T[] = [];\n const waiters: Array<{\n resolve: (value: IteratorResult<T>) => void;\n reject: (error: unknown) => void;\n }> = [];\n let closed = false;\n let error: unknown;\n\n const next = (): Promise<IteratorResult<T>> => {\n if (values.length > 0) {\n return Promise.resolve({ value: values.shift()!, done: false });\n }\n\n if (error) {\n return Promise.reject(error);\n }\n\n if (closed) {\n return Promise.resolve({ value: undefined, done: true });\n }\n\n return new Promise((resolve, reject) => {\n waiters.push({ resolve, reject });\n });\n };\n\n return {\n push(value) {\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve({ value, done: false });\n return;\n }\n\n values.push(value);\n },\n close() {\n closed = true;\n for (const waiter of waiters.splice(0)) {\n waiter.resolve({ value: undefined, done: true });\n }\n },\n throw(queueError) {\n error = queueError;\n for (const waiter of waiters.splice(0)) {\n waiter.reject(queueError);\n }\n },\n [Symbol.asyncIterator]() {\n return { next };\n },\n };\n}\n\nfunction selectedPermissionOutcome(option: PermissionOption): RequestPermissionResponse['outcome'] {\n return { outcome: 'selected', optionId: option.optionId };\n}\n","import { randomUUID } from 'node:crypto';\nimport { ReadableStream } from 'node:stream/web';\n\nimport type { ModelInfo, SessionUpdate } from '@agentclientprotocol/sdk';\nimport type {\n AgentGenerateOptions,\n AgentInstructions,\n AgentStreamOptions,\n MastraLanguageModel,\n SubAgent,\n SubAgentGenerateResult,\n SubAgentStreamResult,\n} from '@mastra/core/agent';\nimport { MessageList, coreContentToString } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { ChunkType } from '@mastra/core/stream';\nimport type { DynamicArgument } from '@mastra/core/types';\n\nimport { ACPConnection } from './connection';\nimport type { CreateACPToolOptions } from './types';\n\nconst CHUNK_FROM_AGENT = 'AGENT' as ChunkType['from'];\ntype AcpToolResult = Extract<NonNullable<SubAgentStreamResult['toolResults']>, unknown[]>[number];\n\nconst model = {\n modelId: 'acp-agent',\n provider: '@mastra/acp',\n specificationVersion: 'v3',\n supportedUrls: {},\n doGenerate: async () => ({\n stream: new ReadableStream({\n start: async controller => {\n controller.close();\n },\n }),\n }),\n doStream: async () => ({\n stream: new ReadableStream({\n start: async controller => {\n controller.close();\n },\n }),\n }),\n} as const satisfies MastraLanguageModel;\n\nexport type AcpAgentOptions = CreateACPToolOptions & {\n name?: string;\n};\n\nexport class AcpAgent<\n TId extends string = string,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> implements SubAgent<TId, TRequestContext> {\n readonly id: TId;\n readonly name: string;\n readonly connection: ACPConnection;\n readonly description: string;\n\n constructor(options: AcpAgentOptions) {\n this.id = options.id as TId;\n this.name = options.name ?? options.id;\n this.description = options.description;\n this.connection = new ACPConnection(options);\n }\n\n __registerMastra(_mastra: Mastra): void {}\n\n getDescription(): string {\n return this.description;\n }\n\n getModel(): ReturnType<SubAgent<TId, TRequestContext>['getModel']> {\n return model;\n }\n\n hasOwnMemory(): boolean {\n return false;\n }\n\n __setMemory(_memory: DynamicArgument<any, any>): void {}\n\n getMemory(): undefined {\n return undefined;\n }\n\n getInstructions(): string {\n return '';\n }\n\n async getAvailableModels(): Promise<ModelInfo[]> {\n return this.connection.getAvailableModels();\n }\n\n async setModel(modelId: string): Promise<void> {\n return this.connection.setModel(modelId);\n }\n\n async generate(messages: MessageListInput, options?: AgentGenerateOptions): Promise<SubAgentGenerateResult> {\n const prompt = this.getPrompt(messages, options?.instructions);\n const text = await this.connection.prompt(\n prompt,\n (options as { abortSignal?: AbortSignal } | undefined)?.abortSignal,\n );\n const messageList = this.createMessageList(messages, text);\n\n return {\n text,\n response: {\n dbMessages: messageList.get.response.db(),\n },\n toolResults: [],\n finishReason: 'stop',\n runId: options?.runId ?? randomUUID(),\n };\n }\n\n async resumeGenerate(): Promise<SubAgentGenerateResult> {\n throw new Error('AcpAgent does not support resuming suspended generate calls');\n }\n\n async resumeStream(): Promise<SubAgentStreamResult> {\n throw new Error('AcpAgent does not support resuming suspended stream calls');\n }\n\n async stream(messages: MessageListInput, options?: AgentStreamOptions): Promise<SubAgentStreamResult> {\n const runId = options?.runId ?? randomUUID();\n const prompt = this.getPrompt(messages, options?.instructions);\n const signal = (options as { abortSignal?: AbortSignal } | undefined)?.abortSignal;\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n\n let resolveText!: (text: string) => void;\n let rejectText!: (error: unknown) => void;\n const textPromise = new Promise<string>((resolve, reject) => {\n resolveText = resolve;\n rejectText = reject;\n });\n\n const fullStream = new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = randomUUID();\n const chunks: string[] = [];\n const toolNames = new Map<string, string>();\n const toolResults: AcpToolResult[] = [];\n\n try {\n controller.enqueue({ type: 'text-start', runId, from: CHUNK_FROM_AGENT, payload: { id: textId } });\n\n for await (const event of this.connection.promptStream(prompt, signal)) {\n if (event.type === 'text') {\n chunks.push(event.text);\n controller.enqueue({\n type: 'text-delta',\n runId,\n from: CHUNK_FROM_AGENT,\n payload: { id: textId, text: event.text },\n });\n } else if (event.type === 'session-update') {\n for (const chunk of getMastraChunksFromACPUpdate(event.update, runId, toolNames)) {\n if (chunk.type === 'tool-result') {\n toolResults.push({ payload: chunk.payload });\n }\n controller.enqueue(chunk);\n }\n }\n }\n\n const text = chunks.join('');\n messageList.add([{ role: 'assistant', content: text }], 'response');\n\n controller.enqueue({ type: 'text-end', runId, from: CHUNK_FROM_AGENT, payload: { id: textId } });\n controller.enqueue(createFinishChunk('step-finish', runId));\n controller.enqueue(createFinishChunk('finish', runId));\n await options?.onFinish?.(createOnFinishResult({ text, runId, messageList, toolResults }) as any);\n resolveText(text);\n controller.close();\n } catch (error) {\n const text = chunks.join('');\n await options?.onFinish?.(createOnFinishResult({ text, runId, messageList, toolResults, error }) as any);\n rejectText(error);\n controller.error(error);\n }\n },\n });\n\n return {\n fullStream,\n text: textPromise,\n messageList,\n toolResults: [],\n runId,\n };\n }\n\n private getPrompt(messages: MessageListInput, instructions?: AgentInstructions): string {\n const prompt = extractText(messages);\n const instructionText = instructions ? extractInstructions(instructions) : '';\n\n if (!instructionText) {\n return prompt;\n }\n\n return `${instructionText}\\n\\n${prompt}`;\n }\n\n private createMessageList(messages: MessageListInput, text: string): MessageList {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: text }], 'response');\n return messageList;\n }\n}\n\nfunction extractText(messages: MessageListInput): string {\n if (typeof messages === 'string') {\n return messages;\n }\n\n if (Array.isArray(messages) && messages.every(message => typeof message === 'string')) {\n return messages.join('\\n');\n }\n\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n\n return messageList.get.all\n .core()\n .map(message => coreContentToString(message.content))\n .filter(Boolean)\n .join('\\n');\n}\n\nfunction extractInstructions(instructions: AgentInstructions): string {\n if (typeof instructions === 'string') {\n return instructions;\n }\n\n if (Array.isArray(instructions)) {\n return instructions.map(instruction => extractInstructions(instruction)).join('\\n');\n }\n\n return coreContentToString(instructions.content);\n}\n\nfunction getMastraChunksFromACPUpdate(\n update: SessionUpdate,\n runId: string,\n toolNames: Map<string, string>,\n): ChunkType[] {\n switch (update.sessionUpdate) {\n case 'tool_call': {\n const toolName = getToolName(update, toolNames);\n toolNames.set(update.toolCallId, toolName);\n\n return [\n {\n type: 'tool-call',\n runId,\n from: CHUNK_FROM_AGENT,\n payload: {\n toolCallId: update.toolCallId,\n toolName,\n args: toRecord(update.rawInput),\n },\n },\n ];\n }\n case 'tool_call_update': {\n const toolName = getToolName(update, toolNames);\n\n if (update.status === 'completed' || update.status === 'failed') {\n return [\n {\n type: 'tool-result',\n runId,\n from: CHUNK_FROM_AGENT,\n payload: {\n toolCallId: update.toolCallId,\n toolName,\n result: update.rawOutput ?? update.content ?? { status: update.status, title: update.title },\n isError: update.status === 'failed',\n },\n },\n ];\n }\n\n return [\n {\n type: 'tool-call-delta',\n runId,\n from: CHUNK_FROM_AGENT,\n payload: {\n toolCallId: update.toolCallId,\n toolName,\n argsTextDelta: update.title ?? update.status ?? '',\n },\n },\n ];\n }\n default:\n return [];\n }\n}\n\nfunction getToolName(\n update: Extract<SessionUpdate, { sessionUpdate: 'tool_call' | 'tool_call_update' }>,\n toolNames: Map<string, string>,\n): string {\n return update.title ?? toolNames.get(update.toolCallId) ?? update.kind ?? 'acp_tool';\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return value as Record<string, unknown>;\n }\n\n if (value === undefined) {\n return {};\n }\n\n return { input: value };\n}\n\nfunction createOnFinishResult({\n text,\n runId,\n messageList,\n toolResults,\n error,\n}: {\n text: string;\n runId: string;\n messageList: MessageList;\n toolResults: AcpToolResult[];\n error?: unknown;\n}) {\n const usage = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };\n\n return {\n text,\n finishReason: 'stop',\n usage,\n totalUsage: usage,\n warnings: [],\n response: {\n messages: messageList.get.response.aiV5.model(),\n },\n steps: [],\n toolResults,\n runId,\n ...(error === undefined ? {} : { error }),\n };\n}\n\nfunction createFinishChunk(type: 'step-finish' | 'finish', runId: string): ChunkType {\n return {\n type,\n runId,\n from: CHUNK_FROM_AGENT,\n payload: {\n id: randomUUID(),\n output: {\n steps: [],\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n },\n stepResult: {\n reason: 'stop',\n warnings: [],\n isContinued: false,\n },\n metadata: {},\n messages: { nonUser: [], all: [] },\n },\n } as unknown as ChunkType;\n}\n","import { ACPConnection } from './connection';\nimport type { CreateACPToolOptions } from './types';\n\nexport class ACPToolSession {\n private connection?: ACPConnection;\n\n constructor(private readonly options: CreateACPToolOptions) {}\n\n getConnection(workspace: CreateACPToolOptions['workspace']): ACPConnection {\n if (this.options.persistSession === false) {\n return this.createConnection(workspace);\n }\n\n this.connection ??= this.createConnection(workspace);\n return this.connection;\n }\n\n private createConnection(workspace: CreateACPToolOptions['workspace']): ACPConnection {\n return new ACPConnection({\n ...this.options,\n workspace: workspace ?? this.options.workspace,\n });\n }\n}\n","import { compileSchema } from '@internal/types-builder/compile-zod';\nimport { createTool } from '@mastra/core/tools';\nimport { z } from 'zod/v4';\n\nimport { ACPToolSession } from './session';\nimport type { CreateACPToolOptions } from './types';\n\nexport function createACPTool(options: CreateACPToolOptions) {\n const session = new ACPToolSession(options);\n\n return createTool({\n id: options.id,\n description: options.description,\n inputSchema: compileSchema(\n z.object({\n task: z.string().describe('The task to send to the ACP agent'),\n }),\n ),\n outputSchema: compileSchema(\n z.object({\n output: z.string().describe('The output of the ACP agent'),\n }),\n ),\n suspendSchema: compileSchema(\n z.object({\n permissionRequest: z.object({\n title: z.string().describe('The title of the permission request'),\n options: z.array(\n z.object({\n optionId: z.string().describe('The option id to select'),\n name: z.string().describe('The title of the permission request'),\n }),\n ),\n }),\n }),\n ),\n resumeSchema: compileSchema(\n z.union([\n z.object({\n optionId: z.string().optional().describe('The option id to select'),\n outcome: z.literal('selected').optional().describe('The outcome of the permission request'),\n }),\n z.object({\n outcome: z.literal('cancelled').optional().describe('The outcome of the permission request'),\n }),\n ]),\n ),\n execute: async ({ task }, context) => {\n const workspace = await context?.mastra?.getWorkspace();\n const connection = session.getConnection(workspace);\n const output = await connection.prompt(task, context?.abortSignal);\n\n return { output };\n },\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,UAAU,CAAC,CAAgB;gBAEN,OAAO,EAAE,oBAAoB;IAE1D,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAAG,aAAa;IAS1E,OAAO,CAAC,gBAAgB;CAMzB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,UAAU,CAAC,CAAgB;IAEnC,YAA6B,OAAO,EAAE,oBAAoB,EAAI;IAE9D,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAAG,aAAa,CAOzE;IAED,OAAO,CAAC,gBAAgB;CAMzB"}
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "@mastra/acp",
3
- "version": "0.4.0",
3
+ "version": "0.4.1-alpha.0",
4
4
  "description": "ACP package for Mastra",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "files": [
9
- "dist",
10
- "CHANGELOG.md"
9
+ "dist"
11
10
  ],
12
11
  "exports": {
13
12
  ".": {
@@ -30,15 +29,15 @@
30
29
  "@vitest/coverage-v8": "4.1.10",
31
30
  "@vitest/ui": "4.1.10",
32
31
  "eslint": "^10.7.0",
33
- "tsup": "^8.5.1",
32
+ "tsdown": "0.22.9",
34
33
  "tsx": "^4.23.1",
35
- "typescript": "^6.0.3",
34
+ "typescript": "^7.0.2",
36
35
  "vitest": "4.1.10",
37
36
  "zod": "^4.4.3",
38
- "@internal/ai-sdk-v5": "0.0.62",
39
- "@internal/types-builder": "0.0.90",
40
- "@internal/lint": "0.0.115",
41
- "@mastra/core": "1.52.0"
37
+ "@internal/types-builder": "0.0.104",
38
+ "@internal/ai-sdk-v5": "0.0.76",
39
+ "@mastra/core": "1.64.0-alpha.2",
40
+ "@internal/lint": "0.0.129"
42
41
  },
43
42
  "homepage": "https://mastra.ai",
44
43
  "repository": {
@@ -60,9 +59,10 @@
60
59
  },
61
60
  "scripts": {
62
61
  "build": "pnpm build:lib",
63
- "build:lib": "tsup --silent --config tsup.config.ts",
62
+ "build:lib": "tsdown --silent --config tsdown.config.ts",
64
63
  "build:watch": "pnpm build:lib --watch",
65
64
  "test": "vitest run --passWithNoTests",
66
- "lint": "eslint ."
65
+ "lint": "oxlint . && eslint .",
66
+ "lint:fix": "oxlint --fix . && eslint --fix ."
67
67
  }
68
68
  }
package/CHANGELOG.md DELETED
@@ -1,275 +0,0 @@
1
- # @mastra/acp
2
-
3
- ## 0.4.0
4
-
5
- ### Minor Changes
6
-
7
- - Added a `createClient` option to `createACPTool()` and `AcpAgent` for customizing the ACP client, and fixed a crash when the ACP agent command fails to start. ([#19559](https://github.com/mastra-ai/mastra/pull/19559))
8
-
9
- **Custom ACP client (`createClient`)**
10
-
11
- Some ACP agents call custom extension methods (`extMethod` / `extNotification`) on the client. The built-in client rejected these with a "Method not found" error and could not be replaced, so those agents were unusable without reimplementing the whole connection. The new `createClient` option receives the default client and returns the client used for the connection:
12
-
13
- ```ts
14
- import { createACPTool } from '@mastra/acp';
15
-
16
- const tool = createACPTool({
17
- id: 'grok',
18
- description: 'Dispatch tasks to Grok',
19
- command: 'grok',
20
- createClient: defaultClient =>
21
- Object.assign(defaultClient, {
22
- extMethod: async (method, params) => ({}),
23
- extNotification: async (method, params) => {},
24
- }),
25
- });
26
- ```
27
-
28
- The `Client` type is now re-exported from `@mastra/acp` for fully custom implementations.
29
-
30
- **Spawn failure handling**
31
-
32
- If the configured `command` could not be started (for example the executable does not exist), the child process 'error' event was unhandled and crashed the host process. Tool execution now rejects with the spawn error instead.
33
-
34
- Fixes #19109
35
-
36
- ### Patch Changes
37
-
38
- - Updated dependencies [[`ec857fc`](https://github.com/mastra-ai/mastra/commit/ec857fc79c264b53b38e16478c789b7177f2ad59), [`d7385ad`](https://github.com/mastra-ai/mastra/commit/d7385ad9e88f9e4f33d15c0ec0bfebedde0cbc2e), [`41a5392`](https://github.com/mastra-ai/mastra/commit/41a5392d9f6c5e18d6b227f0fc0ddf49c50774e9), [`3d6e539`](https://github.com/mastra-ai/mastra/commit/3d6e539272eb2ea0407034605ee1906b3be06b39), [`1426af2`](https://github.com/mastra-ai/mastra/commit/1426af24975879c000d13ac75673f630fcc970c1), [`a40adeb`](https://github.com/mastra-ai/mastra/commit/a40adeb222b961a56a58af56a106106525721b74), [`8a0d145`](https://github.com/mastra-ai/mastra/commit/8a0d145aadbdf7278665aceaaec364b35dd9bd94), [`bd2f1d2`](https://github.com/mastra-ai/mastra/commit/bd2f1d274d05e60e2366f005ea0d94d5cea0d5ff), [`e1f2fae`](https://github.com/mastra-ai/mastra/commit/e1f2faebaf048c3d4c2e2c01d293767c195d5794), [`63aa799`](https://github.com/mastra-ai/mastra/commit/63aa799c6b44eacc7806cda6846b7c5bbee06b37), [`b7e79c3`](https://github.com/mastra-ai/mastra/commit/b7e79c3c02ac5cd415db34ba0975ceafc1464333), [`675fbff`](https://github.com/mastra-ai/mastra/commit/675fbff84d3274391b33e852f76083c38a5514e5), [`da009e1`](https://github.com/mastra-ai/mastra/commit/da009e1aacd89ed94b8d1b2af09c9d4fe7c4db49), [`3b77e77`](https://github.com/mastra-ai/mastra/commit/3b77e7704936522e4769d29de1b5ea6901f302bd), [`c7d30cd`](https://github.com/mastra-ai/mastra/commit/c7d30cd86009c407df91105591f03cd6e3d2854d), [`21a0eb8`](https://github.com/mastra-ai/mastra/commit/21a0eb86746ba0b703acea360d4f84c6a5a493f2), [`8b20926`](https://github.com/mastra-ai/mastra/commit/8b20926cd59e2ba3d66458e062fa0e6e2ada3e68), [`975295d`](https://github.com/mastra-ai/mastra/commit/975295d418552f0d46a59edfef4c3ee555f9930a), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`6b1bf3b`](https://github.com/mastra-ai/mastra/commit/6b1bf3b9494bd51aa8f654c68c9355d6046fa2a1), [`35c2181`](https://github.com/mastra-ai/mastra/commit/35c2181e6a50e47c90ba36260db7c9723d54696f), [`0a2c22c`](https://github.com/mastra-ai/mastra/commit/0a2c22c902604439ec490319e14c17f331e0c84c), [`4cfdd64`](https://github.com/mastra-ai/mastra/commit/4cfdd645794feaea0c4ea711e70ecdfbef0c5b8e), [`b75d749`](https://github.com/mastra-ai/mastra/commit/b75d749621ff5d17e86bcb4ee809d301fb4f7cf3), [`821648b`](https://github.com/mastra-ai/mastra/commit/821648bf2871ef840100c7bacbecf676010bd12a), [`de86fd7`](https://github.com/mastra-ai/mastra/commit/de86fd7119f0438381d1a642e3d258143c0b9c29), [`2745031`](https://github.com/mastra-ai/mastra/commit/2745031d1d4a4978f037092da371428c32e2842a), [`b4b7ea8`](https://github.com/mastra-ai/mastra/commit/b4b7ea8733f033fc441ea47ed03f6afb17ec2248), [`3a8024c`](https://github.com/mastra-ai/mastra/commit/3a8024ce615f8aa89479c0d71fe61d10bb0040be), [`35865a5`](https://github.com/mastra-ai/mastra/commit/35865a53e194aa9634d6a70a97010e7a6b9d58b1), [`74faf8b`](https://github.com/mastra-ai/mastra/commit/74faf8bd9c1018f2492653c06b1e25fc8300e9e6), [`ef03fbc`](https://github.com/mastra-ai/mastra/commit/ef03fbcc556bcbc04c9b3d06fab88771ecaa043c), [`675fbff`](https://github.com/mastra-ai/mastra/commit/675fbff84d3274391b33e852f76083c38a5514e5), [`70687f7`](https://github.com/mastra-ai/mastra/commit/70687f7e495a322a02070b4a67cb0c77a5ca91ec), [`1fadac4`](https://github.com/mastra-ai/mastra/commit/1fadac44537caeefe81f9f775ae2f2f3d94e9069), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`76b7181`](https://github.com/mastra-ai/mastra/commit/76b71810366e6d90b9d3973149d1c7ba3659ffb9), [`792ec9a`](https://github.com/mastra-ai/mastra/commit/792ec9a0869bab8274cf5e0ed2840738737a1607), [`712b864`](https://github.com/mastra-ai/mastra/commit/712b864aa1ed12b14c54390ec17b69de163c37f7), [`85e4fb5`](https://github.com/mastra-ai/mastra/commit/85e4fb50087a81c74df3a762f53b56373db0b912), [`0c0e8d7`](https://github.com/mastra-ai/mastra/commit/0c0e8d7becd4d1445c656b78d5d845f606c1ff9d), [`a7bbe77`](https://github.com/mastra-ai/mastra/commit/a7bbe773577f60bc4761b534ef7ec6b476332dad), [`72e437c`](https://github.com/mastra-ai/mastra/commit/72e437c515942c80b9def5b026e0bdee61b469d9), [`8f7a5de`](https://github.com/mastra-ai/mastra/commit/8f7a5dedc246cdc938bb65516703cf9b27b03756), [`a7bbe77`](https://github.com/mastra-ai/mastra/commit/a7bbe773577f60bc4761b534ef7ec6b476332dad), [`11f6cd9`](https://github.com/mastra-ai/mastra/commit/11f6cd96fe42582403416608beb212cc1a2cc79e), [`ef03c0c`](https://github.com/mastra-ai/mastra/commit/ef03c0cfc62367a458e4cc56462e2148b35681c5), [`4fb4d88`](https://github.com/mastra-ai/mastra/commit/4fb4d881bc107acee13890ad4d78661016c510ed), [`4e68363`](https://github.com/mastra-ai/mastra/commit/4e683634f94ebd062d26a3bb6093a8dfc7263d37), [`c328769`](https://github.com/mastra-ai/mastra/commit/c3287698ff8ef98dba86d415faa566fa3e5f4d56), [`9f7c67a`](https://github.com/mastra-ai/mastra/commit/9f7c67abeeb52c41c51a9b5edee60b62afe7cd8d), [`3b65e68`](https://github.com/mastra-ai/mastra/commit/3b65e68d7f1c771c7a70eea42d83fefdd28cad88), [`4eba27a`](https://github.com/mastra-ai/mastra/commit/4eba27adcf60f991df0e62f94b3e75b4e67f3b4b), [`c701be3`](https://github.com/mastra-ai/mastra/commit/c701be32d7d9aa94a66da8c6cc38dcac6856f464), [`db650ce`](https://github.com/mastra-ai/mastra/commit/db650ce490348914e85b93651d83acdf8f2a4c31), [`232fcbc`](https://github.com/mastra-ai/mastra/commit/232fcbc14fce625dd672ba043329c0b732c62be2), [`6354eeb`](https://github.com/mastra-ai/mastra/commit/6354eeb32efa9f5f68f51dda394e90e2ee76f1fb), [`a8799bb`](https://github.com/mastra-ai/mastra/commit/a8799bb8e44f4a60d01e4e2acd3448ff80bf14f8), [`3d6e539`](https://github.com/mastra-ai/mastra/commit/3d6e539272eb2ea0407034605ee1906b3be06b39), [`e3868e2`](https://github.com/mastra-ai/mastra/commit/e3868e22babfffd0133771669ca724501c2dd58e), [`9251370`](https://github.com/mastra-ai/mastra/commit/9251370ad413af464aa22d7566338bec5613e8de), [`3491666`](https://github.com/mastra-ai/mastra/commit/34916663c4fdd43b48c21f4ab2d5fb6dcccc94f9), [`c0bec73`](https://github.com/mastra-ai/mastra/commit/c0bec732c93d1a22ae5e51ed66cf8cacca8bd6a6)]:
39
- - @mastra/core@1.52.0
40
-
41
- ## 0.4.0-alpha.0
42
-
43
- ### Minor Changes
44
-
45
- - Added a `createClient` option to `createACPTool()` and `AcpAgent` for customizing the ACP client, and fixed a crash when the ACP agent command fails to start. ([#19559](https://github.com/mastra-ai/mastra/pull/19559))
46
-
47
- **Custom ACP client (`createClient`)**
48
-
49
- Some ACP agents call custom extension methods (`extMethod` / `extNotification`) on the client. The built-in client rejected these with a "Method not found" error and could not be replaced, so those agents were unusable without reimplementing the whole connection. The new `createClient` option receives the default client and returns the client used for the connection:
50
-
51
- ```ts
52
- import { createACPTool } from '@mastra/acp';
53
-
54
- const tool = createACPTool({
55
- id: 'grok',
56
- description: 'Dispatch tasks to Grok',
57
- command: 'grok',
58
- createClient: defaultClient =>
59
- Object.assign(defaultClient, {
60
- extMethod: async (method, params) => ({}),
61
- extNotification: async (method, params) => {},
62
- }),
63
- });
64
- ```
65
-
66
- The `Client` type is now re-exported from `@mastra/acp` for fully custom implementations.
67
-
68
- **Spawn failure handling**
69
-
70
- If the configured `command` could not be started (for example the executable does not exist), the child process 'error' event was unhandled and crashed the host process. Tool execution now rejects with the spawn error instead.
71
-
72
- Fixes #19109
73
-
74
- ### Patch Changes
75
-
76
- - Updated dependencies [[`1426af2`](https://github.com/mastra-ai/mastra/commit/1426af24975879c000d13ac75673f630fcc970c1), [`975295d`](https://github.com/mastra-ai/mastra/commit/975295d418552f0d46a59edfef4c3ee555f9930a), [`85e4fb5`](https://github.com/mastra-ai/mastra/commit/85e4fb50087a81c74df3a762f53b56373db0b912), [`ef03c0c`](https://github.com/mastra-ai/mastra/commit/ef03c0cfc62367a458e4cc56462e2148b35681c5), [`4fb4d88`](https://github.com/mastra-ai/mastra/commit/4fb4d881bc107acee13890ad4d78661016c510ed), [`4eba27a`](https://github.com/mastra-ai/mastra/commit/4eba27adcf60f991df0e62f94b3e75b4e67f3b4b), [`c701be3`](https://github.com/mastra-ai/mastra/commit/c701be32d7d9aa94a66da8c6cc38dcac6856f464)]:
77
- - @mastra/core@1.52.0-alpha.3
78
-
79
- ## 0.3.0
80
-
81
- ### Minor Changes
82
-
83
- - Random bump ([#18178](https://github.com/mastra-ai/mastra/pull/18178))
84
-
85
- ### Patch Changes
86
-
87
- - Updated dependencies [[`7c0d868`](https://github.com/mastra-ai/mastra/commit/7c0d868d97d0fdbc04c14d0166dbf44d4c5a4a62), [`d9d2273`](https://github.com/mastra-ai/mastra/commit/d9d2273c702690c9a26eab2aebea879701d4355a), [`b04369d`](https://github.com/mastra-ai/mastra/commit/b04369d6b167c698ef103981171a8bf92808e756), [`8f3c262`](https://github.com/mastra-ai/mastra/commit/8f3c262587b335588a02d96b17fd6aca34c885b3)]:
88
- - @mastra/core@1.45.0
89
-
90
- ## 0.3.0-alpha.0
91
-
92
- ### Minor Changes
93
-
94
- - Random bump ([#18178](https://github.com/mastra-ai/mastra/pull/18178))
95
-
96
- ### Patch Changes
97
-
98
- - Updated dependencies [[`7c0d868`](https://github.com/mastra-ai/mastra/commit/7c0d868d97d0fdbc04c14d0166dbf44d4c5a4a62), [`d9d2273`](https://github.com/mastra-ai/mastra/commit/d9d2273c702690c9a26eab2aebea879701d4355a), [`b04369d`](https://github.com/mastra-ai/mastra/commit/b04369d6b167c698ef103981171a8bf92808e756), [`8f3c262`](https://github.com/mastra-ai/mastra/commit/8f3c262587b335588a02d96b17fd6aca34c885b3)]:
99
- - @mastra/core@1.45.0-alpha.0
100
-
101
- ## 0.2.2
102
-
103
- ### Patch Changes
104
-
105
- - Security remediation for the 2026-06-17 "easy-day-js" supply-chain incident. Patch bump to publish clean versions and move the `latest` dist-tag forward, superseding the compromised versions that declared the malicious `easy-day-js` dependency. ([#18056](https://github.com/mastra-ai/mastra/pull/18056))
106
-
107
- - Updated dependencies [[`339c57c`](https://github.com/mastra-ai/mastra/commit/339c57c5b2c6dbe75a125e138228e0556528976f), [`1dd4117`](https://github.com/mastra-ai/mastra/commit/1dd4117dcbd8e031ede9f0489436bfbc6f0315b8), [`2b11d1f`](https://github.com/mastra-ai/mastra/commit/2b11d1f6ac7024c5dd2b2dd12a48a956ac9d63bd), [`77a2351`](https://github.com/mastra-ai/mastra/commit/77a2351ee79296e360bce822cb3391f7cfd6489d), [`b7dff0a`](https://github.com/mastra-ai/mastra/commit/b7dff0a3d1022eb6868f48dc40a2b1febd5c277f), [`02087e1`](https://github.com/mastra-ai/mastra/commit/02087e1fbc54aa07f3071f7a200df1bf5be601a8), [`49af8df`](https://github.com/mastra-ai/mastra/commit/49af8df589c4ff71a5015a4553b377b32704b691), [`30ce559`](https://github.com/mastra-ai/mastra/commit/30ce55902ecf819b8ab8697398dd68b108228063), [`c241b92`](https://github.com/mastra-ai/mastra/commit/c241b929dc8c8d6a7b7219c99ed13ac1f3124a77), [`7d6ff70`](https://github.com/mastra-ai/mastra/commit/7d6ff708727297a0526ca0e26e93eeb5bbaaa187), [`ab975d4`](https://github.com/mastra-ai/mastra/commit/ab975d4dd9488752f05bda7afa03166d207e3e2a), [`9d6aa1b`](https://github.com/mastra-ai/mastra/commit/9d6aa1bae407e2afa6a089abc2a6accbbcb287b8)]:
108
- - @mastra/core@1.44.0
109
-
110
- ## 0.2.2-alpha.0
111
-
112
- ### Patch Changes
113
-
114
- - Security remediation for the 2026-06-17 "easy-day-js" supply-chain incident. Patch bump to publish clean versions and move the `latest` dist-tag forward, superseding the compromised versions that declared the malicious `easy-day-js` dependency. ([#18056](https://github.com/mastra-ai/mastra/pull/18056))
115
-
116
- - Updated dependencies [[`77a2351`](https://github.com/mastra-ai/mastra/commit/77a2351ee79296e360bce822cb3391f7cfd6489d)]:
117
- - @mastra/core@1.43.1-alpha.0
118
-
119
- ## 0.2.1
120
-
121
- ### Patch Changes
122
-
123
- - Fixed ACP tools to keep their default session alive across executions. ([#17516](https://github.com/mastra-ai/mastra/pull/17516))
124
-
125
- - Updated dependencies [[`f82cc72`](https://github.com/mastra-ai/mastra/commit/f82cc72edca0ce636fe18abaf2598d89a0c6bcca), [`fcf6027`](https://github.com/mastra-ai/mastra/commit/fcf602747f6771731dda268ff3493b836f9f0ee9)]:
126
- - @mastra/core@1.41.0
127
-
128
- ## 0.2.1-alpha.0
129
-
130
- ### Patch Changes
131
-
132
- - Fixed ACP tools to keep their default session alive across executions. ([#17516](https://github.com/mastra-ai/mastra/pull/17516))
133
-
134
- - Updated dependencies [[`f82cc72`](https://github.com/mastra-ai/mastra/commit/f82cc72edca0ce636fe18abaf2598d89a0c6bcca), [`fcf6027`](https://github.com/mastra-ai/mastra/commit/fcf602747f6771731dda268ff3493b836f9f0ee9)]:
135
- - @mastra/core@1.41.0-alpha.0
136
-
137
- ## 0.2.0
138
-
139
- ### Minor Changes
140
-
141
- - Added programmatic model selection for ACP agents using the `model` option. ([#17010](https://github.com/mastra-ai/mastra/pull/17010))
142
-
143
- You can now set the model directly when creating `AcpAgent` or `createACPTool`, instead of relying on environment variables.
144
-
145
- ```ts
146
- const codeAgent = new AcpAgent({
147
- id: 'code-agent',
148
- description: 'ACP-compatible coding agent',
149
- command: 'claude',
150
- args: ['--acp'],
151
- model: 'claude-sonnet-4-20250514',
152
- });
153
- ```
154
-
155
- Discover available models with `getAvailableModels()` and change the model at runtime with `setModel()`. Invalid model IDs throw a descriptive error listing valid options.
156
-
157
- ### Patch Changes
158
-
159
- - Removed zod as a required peer dependency. Internal schemas now use plain JSON Schema objects instead of zod runtime. ([#16726](https://github.com/mastra-ai/mastra/pull/16726))
160
-
161
- - Updated dependencies [[`cfa2e3a`](https://github.com/mastra-ai/mastra/commit/cfa2e3a5292322f48bb28b4d257d631da7f9d3cc), [`0cbece9`](https://github.com/mastra-ai/mastra/commit/0cbece9d832cb134a74cdbf3682d390a058215a4), [`2f5f58a`](https://github.com/mastra-ai/mastra/commit/2f5f58a9a8bb13bcdc6789db221eef7c9bf1ff02), [`7dfe1bc`](https://github.com/mastra-ai/mastra/commit/7dfe1bcfe71d261a6fd6bbf29b1dec49d78fb98f), [`ac442a4`](https://github.com/mastra-ai/mastra/commit/ac442a42fda0354ac2bcea772bf6691cb3e9dbb3), [`b7286f4`](https://github.com/mastra-ai/mastra/commit/b7286f4308267f5fd70e6bfee10dba9472640906), [`6096445`](https://github.com/mastra-ai/mastra/commit/60964459733f0ab384584d95e19c36607ffdf7b0), [`d72dc4b`](https://github.com/mastra-ai/mastra/commit/d72dc4b12d832546c05c20255fa96fe4eb515900), [`a481027`](https://github.com/mastra-ai/mastra/commit/a481027b549ba1018414990c8f045eaee7b9f413), [`1e5c067`](https://github.com/mastra-ai/mastra/commit/1e5c067d2e20a781af670578180d1ee249806d41), [`168fa09`](https://github.com/mastra-ai/mastra/commit/168fa09d6b39114cb8c13bd06f1dccb9bc81c6cd), [`df1947a`](https://github.com/mastra-ai/mastra/commit/df1947affa40f742067542251fac7ca759492ef4), [`ee59b74`](https://github.com/mastra-ai/mastra/commit/ee59b743ce73ad11784b4d9c6fbba8568edee1c8), [`a97b1a0`](https://github.com/mastra-ai/mastra/commit/a97b1a0abaed83946c3519d1e0f680d0815b8a67), [`008baaf`](https://github.com/mastra-ai/mastra/commit/008baafd8d851f831407045aebead5a2e3342eff), [`801baa0`](https://github.com/mastra-ai/mastra/commit/801baa07cccdbaec1d00942a92bdc831111744a2), [`8116436`](https://github.com/mastra-ai/mastra/commit/81164363eb225d774e41ff27da6a5ea611406688), [`c35b962`](https://github.com/mastra-ai/mastra/commit/c35b9625c7e854fcfdeee226a3338a750d0ff211), [`c27c4b9`](https://github.com/mastra-ai/mastra/commit/c27c4b9f137df5414fca4e45896aceccff6b0ed5), [`08b3b59`](https://github.com/mastra-ai/mastra/commit/08b3b590dd960dee6c9a6e39272f8927d803db6e), [`b3c3b18`](https://github.com/mastra-ai/mastra/commit/b3c3b189121489a3a51a8fd8204b569be9a89fe5), [`4084113`](https://github.com/mastra-ai/mastra/commit/408411370fc48a822e8b616b3b63f9409774e0e9), [`70cb714`](https://github.com/mastra-ai/mastra/commit/70cb7149c8f16f478e15b58498254a53181750a4), [`91cf0e0`](https://github.com/mastra-ai/mastra/commit/91cf0e027e511b871481a8576b56b7af83b15afd), [`7f9da22`](https://github.com/mastra-ai/mastra/commit/7f9da22efd5aa595e138a31de55a5f0f2f28b33d)]:
162
- - @mastra/core@1.37.0
163
-
164
- ## 0.2.0-alpha.1
165
-
166
- ### Patch Changes
167
-
168
- - Removed zod as a required peer dependency. Internal schemas now use plain JSON Schema objects instead of zod runtime. ([#16726](https://github.com/mastra-ai/mastra/pull/16726))
169
-
170
- - Updated dependencies [[`c35b962`](https://github.com/mastra-ai/mastra/commit/c35b9625c7e854fcfdeee226a3338a750d0ff211), [`4084113`](https://github.com/mastra-ai/mastra/commit/408411370fc48a822e8b616b3b63f9409774e0e9)]:
171
- - @mastra/core@1.37.0-alpha.8
172
-
173
- ## 0.2.0-alpha.0
174
-
175
- ### Minor Changes
176
-
177
- - Added programmatic model selection for ACP agents using the `model` option. ([#17010](https://github.com/mastra-ai/mastra/pull/17010))
178
-
179
- You can now set the model directly when creating `AcpAgent` or `createACPTool`, instead of relying on environment variables.
180
-
181
- ```ts
182
- const codeAgent = new AcpAgent({
183
- id: 'code-agent',
184
- description: 'ACP-compatible coding agent',
185
- command: 'claude',
186
- args: ['--acp'],
187
- model: 'claude-sonnet-4-20250514',
188
- });
189
- ```
190
-
191
- Discover available models with `getAvailableModels()` and change the model at runtime with `setModel()`. Invalid model IDs throw a descriptive error listing valid options.
192
-
193
- ## 0.1.0
194
-
195
- ### Minor Changes
196
-
197
- - You can now run ACP-compatible coding agents as Mastra tools or lightweight subagents. ACP agents support incremental response streaming and can be used anywhere Mastra accepts a `SubAgent`, including supervisor delegation and workflow steps. ([#16423](https://github.com/mastra-ai/mastra/pull/16423))
198
-
199
- ```ts
200
- import { createACPTool, AcpAgent } from '@mastra/acp';
201
-
202
- export const codingTool = createACPTool({
203
- id: 'coding-agent',
204
- command: 'my-acp-agent',
205
- });
206
-
207
- export const codingAgent = new AcpAgent({
208
- id: 'coding-agent',
209
- command: 'my-acp-agent',
210
- });
211
- ```
212
-
213
- You can also wire an `AcpAgent` into a supervisor or workflow as a `SubAgent`-compatible implementation:
214
-
215
- ```ts
216
- import { Agent } from '@mastra/core/agent';
217
-
218
- export const supervisor = new Agent({
219
- name: 'supervisor',
220
- instructions: 'Delegate coding tasks to the ACP agent.',
221
- model,
222
- agents: {
223
- codingAgent,
224
- },
225
- });
226
- ```
227
-
228
- Workflows and the Inngest workflow adapter now recognize `SubAgent`-compatible implementations when creating agent-backed workflow steps.
229
-
230
- ### Patch Changes
231
-
232
- - Updated dependencies [[`20787de`](https://github.com/mastra-ai/mastra/commit/20787de5965234a1af28fe35f49437c537dbfa0d), [`784ad98`](https://github.com/mastra-ai/mastra/commit/784ad989549de91dc5d33ab8ef36caa6f7dcd34e), [`fceae1f`](https://github.com/mastra-ai/mastra/commit/fceae1f5f5db4722cb078a663c6eb4bd22944123), [`090a647`](https://github.com/mastra-ai/mastra/commit/090a647ba5a66d36f203f9f49457e03a1ff4e6fb), [`bf02acb`](https://github.com/mastra-ai/mastra/commit/bf02acbb8a6110f638ac844e89f1ebf04cb7fe74), [`090a647`](https://github.com/mastra-ai/mastra/commit/090a647ba5a66d36f203f9f49457e03a1ff4e6fb), [`bdb4cbf`](https://github.com/mastra-ai/mastra/commit/bdb4cbf8ba4b685d7481f28bb9dc3de6c79c9ed2), [`0fd3fbe`](https://github.com/mastra-ai/mastra/commit/0fd3fbe40fb63657aedd72f6e7b38c8e8ee6940d), [`f84447d`](https://github.com/mastra-ai/mastra/commit/f84447d6c80f3471836a9b300d246b331fb47e0d), [`a1a5b3e`](https://github.com/mastra-ai/mastra/commit/a1a5b3e42ab2ca5161ea21db59ebf28442680fa7), [`af84f57`](https://github.com/mastra-ai/mastra/commit/af84f571ed762e92e8e61c5f9a72363520914274), [`8b3c6f9`](https://github.com/mastra-ai/mastra/commit/8b3c6f90f7879833ba7d1bc70937e1d8f69d0804), [`fed0475`](https://github.com/mastra-ai/mastra/commit/fed0475ccfea31e4fc251469ac05640d0742c1f0), [`0d53730`](https://github.com/mastra-ai/mastra/commit/0d53730c1ed87ef80c87caa5701c4170ea8028e6), [`522f44d`](https://github.com/mastra-ai/mastra/commit/522f44d947214bfc06cff50599bae1ef3494880d)]:
233
- - @mastra/core@1.34.0
234
-
235
- ## 0.1.0-alpha.0
236
-
237
- ### Minor Changes
238
-
239
- - You can now run ACP-compatible coding agents as Mastra tools or lightweight subagents. ACP agents support incremental response streaming and can be used anywhere Mastra accepts a `SubAgent`, including supervisor delegation and workflow steps. ([#16423](https://github.com/mastra-ai/mastra/pull/16423))
240
-
241
- ```ts
242
- import { createACPTool, AcpAgent } from '@mastra/acp';
243
-
244
- export const codingTool = createACPTool({
245
- id: 'coding-agent',
246
- command: 'my-acp-agent',
247
- });
248
-
249
- export const codingAgent = new AcpAgent({
250
- id: 'coding-agent',
251
- command: 'my-acp-agent',
252
- });
253
- ```
254
-
255
- You can also wire an `AcpAgent` into a supervisor or workflow as a `SubAgent`-compatible implementation:
256
-
257
- ```ts
258
- import { Agent } from '@mastra/core/agent';
259
-
260
- export const supervisor = new Agent({
261
- name: 'supervisor',
262
- instructions: 'Delegate coding tasks to the ACP agent.',
263
- model,
264
- agents: {
265
- codingAgent,
266
- },
267
- });
268
- ```
269
-
270
- Workflows and the Inngest workflow adapter now recognize `SubAgent`-compatible implementations when creating agent-backed workflow steps.
271
-
272
- ### Patch Changes
273
-
274
- - Updated dependencies [[`20787de`](https://github.com/mastra-ai/mastra/commit/20787de5965234a1af28fe35f49437c537dbfa0d), [`784ad98`](https://github.com/mastra-ai/mastra/commit/784ad989549de91dc5d33ab8ef36caa6f7dcd34e), [`0d53730`](https://github.com/mastra-ai/mastra/commit/0d53730c1ed87ef80c87caa5701c4170ea8028e6)]:
275
- - @mastra/core@1.34.0-alpha.0