createACPTool()
La fonction createACPTool() crée un Tool Mastra qui envoie une chaîne task à un Agent de programmation compatible avec l'Agent Client Protocol (ACP) et renvoie la réponse ACP finale sous la forme output. Utilisez-la lorsqu'un Agent parent doit décider à quel moment appeler l'Agent ACP en tant que Tool.
Si vous souhaitez plutôt enregistrer l'Agent ACP en tant que sous-Agent Mastra, utilisez la classe AcpAgent.
Exemple d'utilisationLien direct vers Exemple d'utilisation
Créez un Tool de modification de code et enregistrez-le auprès d'un Agent parent :
import { createACPTool } from '@mastra/acp'
import { Agent } from '@mastra/core/agent'
const codeAgentTool = createACPTool({
id: 'code-agent',
description: 'Use an ACP-compatible coding agent to inspect and edit code',
command: 'acp-agent',
args: ['--stdio'],
cwd: process.cwd(),
})
export const codeSupervisor = new Agent({
id: 'code-supervisor',
name: 'Code Supervisor',
instructions: 'Use the code-agent tool when a task requires repository inspection or code edits.',
model: 'openai/gpt-5.6-sol',
tools: {
codeAgentTool,
},
})
ParamètresLien direct vers Paramètres
id:
description:
command:
args?:
env?:
cwd?:
session?:
cwd ou process.cwd(), ainsi qu’une liste vide de serveurs MCP.initialize?:
authMethodId?:
persistSession?:
false pour arrêter le processus à la fin de chaque prompt.onPermissionRequest?:
createClient?:
extMethod et extNotification.workspace?:
createACPTool() transmet le Workspace Mastra actuel issu du contexte d'exécution lorsqu'il est disponible ; sinon, la connexion ACP utilise un Workspace de système de fichiers local. Utilisez AcpAgent lorsque vous devez fournir une instance de Workspace explicite.model?:
session/set_model.Schéma d'entréeLien direct vers Schéma d'entrée
task:
Schéma de sortieLien direct vers Schéma de sortie
output:
Schéma de suspension et de repriseLien direct vers Schéma de suspension et de reprise
createACPTool() définit des schémas de suspension et de reprise pour les payloads de demandes d'autorisation. Les décisions d'autorisation sont renvoyées par l'intermédiaire de onPermissionRequest ; par défaut, @mastra/acp sélectionne la première option renvoyée par l'Agent ACP ou annule la demande si aucune option n'est disponible.
Payload de suspensionLien direct vers Payload de suspension
permissionRequest:
Payload de repriseLien direct vers Payload de reprise
optionId?:
outcome: "selected".outcome?:
Cycle de vie de la sessionLien direct vers Cycle de vie de la session
Chaque exécution du Tool crée une connexion ACP et démarre la command configurée. Elle initialise le client ACP et crée une session ACP avant d'envoyer la task au moyen de la méthode ACP session/prompt.
Par défaut, persistSession vaut true pour la connexion ACP créée pendant l'exécution du Tool. Définissez persistSession: false lorsque le processus ACP doit s'arrêter dès que ce prompt est terminé.
Utilisez AcpAgent lorsque vous avez besoin d'une instance de sous-Agent ACP réutilisable offrant un contrôle explicite du cycle de vie de la session entre les appels.
Gestion des autorisationsLien direct vers Gestion des autorisations
Les Agents ACP peuvent demander au client de choisir une option d'autorisation avant de poursuivre. Par défaut, @mastra/acp sélectionne la première option renvoyée par l'Agent ACP ou annule la demande si aucune option n'est disponible.
Transmettez onPermissionRequest pour examiner la requête et renvoyer votre propre réponse d'autorisation :
import { createACPTool } from '@mastra/acp'
export const codeAgentTool = createACPTool({
id: 'code-agent',
description: 'Use an ACP-compatible coding agent',
command: 'acp-agent',
args: ['--stdio'],
async onPermissionRequest(request) {
const allowOption = request.options.find(option => option.name === 'Allow')
if (!allowOption) {
return { outcome: { outcome: 'cancelled' } }
}
return {
outcome: {
outcome: 'selected',
optionId: allowOption.optionId,
},
}
},
})
Utilisez ce callback pour appliquer une politique locale ou examiner le titre de l'autorisation. Il peut également acheminer la décision vers votre propre processus d'approbation.
Méthodes d'extensionLien direct vers Méthodes d'extension
Certains Agents ACP appellent des méthodes d'extension personnalisées sur le client, en dehors de l'ensemble standard des requêtes ACP. Le client par défaut rejette les méthodes inconnues avec une erreur « Method not found », ce qui peut interrompre le tour de l'Agent.
Transmettez createClient pour étendre ou remplacer le client par défaut. Le callback reçoit le client par défaut et renvoie le client utilisé pour la connexion :
import { createACPTool } from '@mastra/acp'
export const codeAgentTool = createACPTool({
id: 'code-agent',
description: 'Use an ACP-compatible coding agent',
command: 'acp-agent',
args: ['--stdio'],
createClient: defaultClient =>
Object.assign(defaultClient, {
async extMethod(method: string, params: Record<string, unknown>) {
return {}
},
async extNotification(method: string, params: Record<string, unknown>) {},
}),
})
Renvoyez une implémentation Client entièrement personnalisée lorsque vous devez également modifier les gestionnaires standard. Le type Client est réexporté depuis @mastra/acp.