{"meta":{"title":"Serveur ACP de Copilot CLI","intro":"En savoir plus sur le serveur du Protocole Client Agent CLI GitHub Copilot.","product":"GitHub Copilot","breadcrumbs":[{"href":"/fr/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/fr/enterprise-cloud@latest/copilot/reference","title":"Informations de référence"},{"href":"/fr/enterprise-cloud@latest/copilot/reference/copilot-cli-reference","title":"\n              Copilot pour CLI référence"},{"href":"/fr/enterprise-cloud@latest/copilot/reference/copilot-cli-reference/acp-server","title":"Serveur ACP"}],"documentType":"article"},"body":"# Serveur ACP de Copilot CLI\n\nEn savoir plus sur le serveur du Protocole Client Agent CLI GitHub Copilot.\n\n> [!NOTE]\n> Le support ACP dans CLI GitHub Copilot est en préversion publique et est susceptible de changer.\n\n## Aperçu\n\nLe protocole ACP (Agent Client Protocol) est un protocole qui normalise la communication entre les clients (tels que les éditeurs de code et les IDE) et les agents (par Copilot pour CLIexemple). Pour plus d’informations sur ce protocole, consultez [l’introduction officielle](https://agentclientprotocol.com/get-started/introduction).\n\n## Cas d’utilisation\n\n* **Intégrations d’IDE :** Intégrez la Copilot prise en charge dans n’importe quel éditeur ou environnement de développement.\n* **CI/CD pipelines :** Orchestrer des tâches de codage agentiques dans des flux de travail automatisés.\n* **Frontends personnalisés :** Créez des interfaces spécialisées pour des flux de travail de développement spécifiques.\n* **Systèmes multi-agents :** Coordonnez-vous Copilot avec d’autres agents IA à l’aide d’un protocole standard.\n\n## Démarrage du serveur ACP\n\n              CLI GitHub Copilot peut être démarré en tant que serveur ACP à l’aide de l’indicateur `--acp` . Le serveur prend en charge deux modes, `stdio` et `TCP`.\n\n### mode stdio (recommandé pour l’intégration de l’IDE)\n\nPar défaut, en fournissant l'indicateur `--acp`, le mode `stdio` est déduit. L’indicateur `--stdio` peut également être fourni pour la désambiguation.\n\n```bash\ncopilot --acp --stdio\n```\n\n### Mode TCP\n\nSi l’indicateur `--port` est fourni en combinaison avec l’indicateur `--acp` , le serveur est démarré en mode TCP.\n\n```bash\ncopilot --acp --port 3000\n```\n\n## Intégration au serveur ACP\n\nIl existe un écosystème croissant de bibliothèques pour interagir par programmation avec les serveurs ACP. Étant donné que CLI GitHub Copilot est correctement installé et authentifié, l'exemple suivant illustre l'utilisation du client [typescript](https://agentclientprotocol.com/libraries/typescript) pour envoyer une invite unique et afficher la réponse IA.\n\n```typescript\nimport * as acp from \"@agentclientprotocol/sdk\";\nimport { spawn } from \"node:child_process\";\nimport { Readable, Writable } from \"node:stream\";\n\nasync function main() {\n  const executable = process.env.COPILOT_CLI_PATH ?? \"copilot\";\n\n  // ACP uses standard input/output (stdin/stdout) for transport; we pipe these for the NDJSON stream.\n  const copilotProcess = spawn(executable, [\"--acp\", \"--stdio\"], {\n    stdio: [\"pipe\", \"pipe\", \"inherit\"],\n  });\n\n  if (!copilotProcess.stdin || !copilotProcess.stdout) {\n    throw new Error(\"Failed to start Copilot ACP process with piped stdio.\");\n  }\n\n  // Create ACP streams (NDJSON over stdio)\n  const output = Writable.toWeb(copilotProcess.stdin) as WritableStream<Uint8Array>;\n  const input = Readable.toWeb(copilotProcess.stdout) as ReadableStream<Uint8Array>;\n  const stream = acp.ndJsonStream(output, input);\n\n  const client: acp.Client = {\n    async requestPermission(params) {\n      // This example should not trigger tool calls; if it does, refuse.\n      return { outcome: { outcome: \"cancelled\" } };\n    },\n\n    async sessionUpdate(params) {\n      const update = params.update;\n\n      if (update.sessionUpdate === \"agent_message_chunk\" && update.content.type === \"text\") {\n        process.stdout.write(update.content.text);\n      }\n    },\n  };\n\n  const connection = new acp.ClientSideConnection((_agent) => client, stream);\n\n  await connection.initialize({\n    protocolVersion: acp.PROTOCOL_VERSION,\n    clientCapabilities: {},\n  });\n\n  const sessionResult = await connection.newSession({\n    cwd: process.cwd(),\n    mcpServers: [],\n  });\n\n  process.stdout.write(\"Session started!\\n\");\n  const promptText = \"Hello ACP Server!\";\n  process.stdout.write(`Sending prompt: '${promptText}'\\n`);\n\n  const promptResult = await connection.prompt({\n    sessionId: sessionResult.sessionId,\n    prompt: [{ type: \"text\", text: promptText }],\n  });\n\n  process.stdout.write(\"\\n\");\n\n  if (promptResult.stopReason !== \"end_turn\") {\n    process.stderr.write(`Prompt finished with stopReason=${promptResult.stopReason}\\n`);\n  }\n\n  // Best-effort cleanup\n  copilotProcess.stdin.end();\n  copilotProcess.kill(\"SIGTERM\");\n  await new Promise<void>((resolve) => {\n    copilotProcess.once(\"exit\", () => resolve());\n    setTimeout(() => resolve(), 2000);\n  });\n}\n\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n```\n\n## Lectures complémentaires\n\n* [Documentation ACP officielle](https://agentclientprotocol.com/protocol/overview)"}