ACP Test- und Support-Matrix

ACP ist bidirektional. Ein nützlicher Interoperabilitätstest muss eine Verbindung offen halten, während Benachrichtigungen und verschachtelte Anfragen eintreffen; eine Reihe getrennter JSON-Zeilen kann das Sitzungsverhalten nicht beweisen.

Verifizierte Tests

Die adk-acp-Suite verbindet die offizielle SDK Client mit der ADK-Rust SDK Agent über einen In-Memory-Transport und testet:

initialize
  → session/new
  → session/prompt
  ← session/update
  ← PromptResponse(end_turn)
  → session/close
  → session/list
  → session/resume
  → session/close
  → session/delete

Separate Tests decken das Abbrechen von Sitzungen, das Abbrechen und Wiederherstellen von JSON-RPC-Anfragen, Ereigniszuordnung, Menüs mit Ablehnung-voran, undurchsichtige Options-IDs, simulierte Auswahlen, wartende menschliche Entscheidungen, exaktes Allow-Once-Verhalten, MCP-Konfigurationsvalidierung und geheimnisbereinigte Debug-Ausgabe ab. Phase 2 fügt session/load-Tests zur Wiedergabe-Reihenfolge hinzu (die wiedergegebenen session/updates stimmen mit der chronologischen Reihenfolge der gespeicherten Ereignisse überein), multimodale Prompt-Zuordnung und Ablehnungstests (Bild und Audio akzeptiert; nicht angekündigte Inhalte abgelehnt), Tests für approve/deny/cancel des Server-Permission-Bridges (Abbruch wird auf deny abgebildet, korreliert über die Function-Call-ID), sowie Client-Treue-Tests, die nachweisen, dass die ToolCallUpdate- und UsageUpdate-Oberflächen erscheinen, ohne die Agenten-Textoberfläche zu beeinträchtigen. Phase 3 fügt Tests für Sitzungsmodus und Konfigurationsoptionen hinzu (set_mode / set_config_option zeichnen angekündigte Werte auf und lehnen unbekannte ab, und die Auswahl bleibt über session/load erhalten), ein session/fork- Isolierungstest (die Historie des Forks entspricht der Quelle und die Quelle bleibt unverändert), Aktivierungstests für verfügbare Befehle und Sitzungsinformationen (Updates werden nur ausgegeben, wenn der Agent Befehle deklariert oder einen Titel erfasst), sowie einen Capability-Accuracy-Test, der bestätigt, dass die angekündigten Fähigkeiten exakt den registrierten Handlern und aktivierten Inhaltszuordnungen entsprechen — einschließlich, dass Modi und Konfigurationsoptionen nur angekündigt werden, wenn ein SessionControls-Provider vorhanden ist.

Das Live-MCP-Lebenszyklus-Gate startet einen echten stdio-MCP-Kindprozess, schließt das Handshake ab und entdeckt dessen Tools über denselben McpToolset, der von ACP- Sitzungen verwendet wird.

Gates ausführen

cargo test -p adk-acp --all-features
cargo test -p adk-agent --test tool_confirmation_tests
cargo test -p adk-tool --features mcp --test mcp_server_lifecycle_integration_tests test_tool_aggregation -- --ignored --exact

cargo test --manifest-path examples/acp_client_host/Cargo.toml
cargo check --manifest-path examples/acp_kiro/Cargo.toml
cargo check --manifest-path examples/acp_server/Cargo.toml
cargo test --manifest-path examples/acp_full_protocol/Cargo.toml

Das acp_full_protocol-Gate ist das ausführbare Phase-2-Sicherheitsnetz: ein ohne API-Schlüssel, Runner-gestützter AcpServer, der über den offiziellen SDK durch einen In-Process- Kanal gesteuert wird und die vollständige serverseitige Phase-2-Oberfläche validiert (eingebettete Ressourcen sowie Bild-/Audio-Prompts, die Permission Bridge, session/load-Wiedergabe-Reihenfolge und UsageUpdate / ToolCallUpdate-Darstellung) ohne Unterprozess oder Modell- Anmeldedaten.

Aktueller Support

BereichStatusHinweise
Stabiles Wire-Protokoll v1ImplementiertOffizielles Rust SDK 1.2; Protokollversion wird separat ausgehandelt
Lokaler stdio-Client-TransportImplementiertEinmalige, Streaming- und persistente Sitzungen
Client-BerechtigungenImplementiertStandardmäßig verweigern, semantisches Matching, undurchsichtige IDs, synchrone oder asynchrone Richtlinie
Client-Dateisystem-CallbacksImplementiert APILesen und Schreiben unabhängig angekündigt
Client-Terminal-CallbacksImplementiert APIVollständiges Trait für create/output/wait/kill/release
Vom Client bereitgestellte MCPImplementiertstdio erforderlich; HTTP/SSE durch Fähigkeiten begrenzt
ADK-Rust ACP ServerImplementiertNeu, Prompt, Laden, Aktualisieren, Abbrechen, Schließen, Auflisten, Fortsetzen, Abspalten, set_mode, set_config_option, Löschen
Laden + Wiedergabe der Server-SessionImplementiertReaktiviert eine persistierte Session und spielt gespeicherte Ereignisse in chronologischer Reihenfolge ab; load_session angekündigt
Abzweigung der Server-SessionImplementiertKopiert Historie und relevanten Zustand in eine neue Session-ID und lässt die Quelle unverändert; fork angekündigt
Modi + Konfigurationsoptionen der Server-SessionImplementiertDurch SessionControls auf Provider-Ebene gesteuert; set_mode / set_config_option validiert und über Laden/Fortsetzen/Abzweigen hinweg beibehalten; nur angekündigt, wenn deklariert
Server verfügbare Befehle + SitzungsinfosImplementiertWird bei Aktivierung ausgegeben, wenn der Agent Befehle deklariert oder einen Titel erfasst; andernfalls nicht
Server-PlanaktualisierungenRuhendPlan SessionUpdate-Zuordnung vorhanden, aber inaktiv, bis ein ADK-Planprimitive Plan-Einträge offenlegt
Server-Sitzung MCPImplementiertstdio, pro Sitzung, begrenzter Start und Abschluss
Text- und Ressourcenlink-PromptsImplementiertÜber das gemeinsame Inhaltsmodul abgebildet
Multimodale Prompts (Bild, Audio)ImplementiertZugeordnet zu Part::InlineData; image/audio angekündigt; nicht angekündigter Inhalt wird abgelehnt
Eingebettete Ressourcen-PromptsImplementiertZugeordnet zu Part::EmbeddedResource; embedded_context angekündigt
Server-ADK-Tool-Genehmigung zu ACPImplementiertToolConfirmationRequest zu session/request_permission überbrückt; allow → approve, deny/cancel → deny, korreliert über function-call id
Client-Tool-Aktualisierungs- und NutzungstreueImplementiertOutputChunk::ToolUpdate und OutputChunk::Usage stellen die External_Agent's ToolCallUpdate/UsageUpdate bereit; agent text unchanged
Client-Rich-Prompt-InhaltImplementiertprompt_agent_content_with_policy überträgt nicht-textuelle ADK-Inhalte als den passenden ACP-Block
Entfernte ACP HTTP/WebSocketNicht angekündigtDie stabile Implementierung ist lokales stdio
Experimentelle ProtokollfunktionenNicht angekündigtNur nach Implementierung und Interoperabilitätstests hinzufügen

Manueller Editor-Test

Erstelle examples/acp_server und konfiguriere dann einen ACP-Client, um dieses Binary mit einem absoluten Manifestpfad und Modell-Anmeldedaten zu starten. Überprüfe:

  1. Die Initialisierungsantwort meldet Protokollversion 1;
  2. eine neue Session akzeptiert das beabsichtigte absolute Projektverzeichnis;
  3. Text erscheint als Live-Updates vor der endgültigen Antwort;
  4. das Lesen-Tool startet und Abschlüsse erscheinen im Client;
  5. die Kündigung schließt den Turn, ohne die Verbindung zu schließen;
  6. eine spätere Eingabe ist in derselben Session erfolgreich;
  7. Schließen und Fortsetzen bewahren den Verlauf, wenn der Session-Dienst dauerhaft ist.

Verwende für diesen Test nicht echo | cargo run. Jede Pipe startet einen anderen Prozess und kann die Verbindung oder Session nicht beibehalten.