ACP परीक्षण और समर्थन मैट्रिक्स

ACP द्विदिशात्मक है। एक उपयोगी इंटरऑपरेबिलिटी परीक्षण में एक कनेक्शन खुला रखना चाहिए जबकि सूचनाएँ और नेस्टेड अनुरोध आते रहें; डिस्कनेक्टेड JSON पंक्तियों की एक श्रृंखला सत्र के व्यवहार को साबित नहीं कर सकती।

सत्यापित परीक्षण

adk-acp सूट आधिकारिक SDK Client को ADK-Rust SDK Agent से इन-मेमोरी ट्रांसपोर्ट के माध्यम से जोड़ता है और निम्न का परीक्षण करता है:

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

अलग-अलग परीक्षण सत्र रद्दीकरण, JSON-RPC अनुरोध रद्दीकरण और पुनर्प्राप्ति, इवेंट मैपिंग, reject-first अनुमति मेनू, अपारदर्शी option IDs, fabricated selections, awaited human decisions, exact-call allow-once व्यवहार, MCP कॉन्फ़िगरेशन वैधता, और secret-redacted debug output को कवर करते हैं। Phase 2 जोड़ता है session/load replay-ordering परीक्षण (replayed session/updates संग्रहीत इवेंट्स के कालानुक्रमिक क्रम से मेल खाते हैं), multimodal prompt mapping और rejection परीक्षण (image और audio स्वीकार किए जाते हैं; unadvertised content अस्वीकार किया जाता है), server permission-bridge approve/deny/cancel परीक्षण (cancellation deny से मैप होती है, function-call id के आधार पर correlated), और client-fidelity परीक्षण जो साबित करते हैं कि ToolCallUpdate और UsageUpdate सतहें एजेंट text surface को regress किए बिना दिखाई देती हैं। Phase 3 जोड़ता है session-mode और configuration-option परीक्षण (set_mode / set_config_option advertised values रिकॉर्ड करते हैं और अज्ञात मानों को अस्वीकार करते हैं, और चयन session/load के बीच बना रहता है), एक session/fork isolation परीक्षण (fork का history source के बराबर है और source अपरिवर्तित रहता है), available-commands और session-info activation परीक्षण (updates केवल तभी emitted होते हैं जब agent commands घोषित करता है या कोई title रिकॉर्ड करता है), और एक capability-accuracy परीक्षण जो यह दावा करता है कि advertised capabilities बिल्कुल मेल खाती हैं registered handlers और enabled content mappings से — जिसमें यह भी शामिल है कि modes और config options केवल तभी advertised होते हैं जब एक SessionControls provider मौजूद हो।

Live MCP lifecycle gate एक वास्तविक stdio MCP child शुरू करता है, handshake पूरा करता है, और उसके tools को उसी McpToolset के माध्यम से खोजता है जिसका उपयोग ACP sessions द्वारा किया जाता है।

गेट्स चलाएँ

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

acp_full_protocol gate runnable Phase 2 safety net है: एक no-API-key, Runner-backed AcpServer जिसे official SDK के माध्यम से in-process channel पर चलाया जाता है, जो subprocess या model credentials के बिना full server-direction Phase 2 surface (embedded-resource और image/audio prompts, permission bridge, session/load replay ordering, और UsageUpdate / ToolCallUpdate surfacing) को मान्य करता है।

वर्तमान समर्थन

क्षेत्रस्थितिनोट्स
स्थिर वायर प्रोटोकॉल v1लागू किया गयाआधिकारिक Rust SDK 1.2; प्रोटोकॉल संस्करण अलग से negotiated किया जाता है
स्थानीय stdio client transportलागू किया गयाone-shot, streaming, और persistent sessions
क्लाइंट अनुमतियाँलागूडिफ़ॉल्ट रूप से अस्वीकार, semantic matching, opaque IDs, sync या async policy
क्लाइंट filesystem callbacksलागू APIRead और write को अलग-अलग advertised किया जाता है
क्लाइंट terminal callbacksलागू APIcreate/output/wait/kill/release trait पूरा
क्लाइंट-प्रदानित MCPलागूstdio आवश्यक; HTTP/SSE capability-gated
ADK-Rust ACP सर्वरकार्यान्वितनया, प्रॉम्प्ट, लोड, अपडेट, कैंसल, क्लोज, लिस्ट, रिज़्यूम, फोर्क, set_mode, set_config_option, डिलीट
सर्वर सेशन लोड + रीप्लेकार्यान्वितएक स्थायी सेशन को पुनः सक्रिय करता है और संग्रहीत इवेंट्स को कालानुक्रमिक क्रम में रीप्ले करता है; load_session विज्ञापित
सर्वर सेशन फोर्ककार्यान्वितइतिहास और संबंधित स्टेट को एक नए सेशन आईडी में कॉपी करता है, स्रोत को अपरिवर्तित छोड़ते हुए; fork विज्ञापित
सर्वर सेशन मोड्स + कॉन्फ़िग विकल्पकार्यान्वितSessionControls के माध्यम से प्रदाता-गेटेड; set_mode / set_config_option सत्यापित और लोड/रिज़्यूम/फोर्क के दौरान स्थायी; केवल घोषित होने पर विज्ञापित
सर्वर उपलब्ध-commands + session-infoकार्यान्वितएजेंट द्वारा commands घोषित करने या title रिकॉर्ड करने पर activation के समय emitted; अन्यथा none
सर्वर plan updatesDormantPlan SessionUpdate mapping मौजूद है, लेकिन तब तक inert रहती है जब तक ADK plan primitive plan entries surface नहीं करता
Server session MCPकार्यान्वितstdio, प्रति session, bounded startup और cleanup
टेक्स्ट और resource-link promptsकार्यान्वितshared content module के माध्यम से mapped
बहु-माध्यमीय प्रॉम्प्ट (छवि, ऑडियो)लागूPart::InlineData पर मैप किया गया; image/audio विज्ञापित; अविज्ञापित सामग्री अस्वीकृत
एम्बेडेड-संसाधन प्रॉम्प्टलागूPart::EmbeddedResource पर मैप किया गया; embedded_context विज्ञापित
सर्वर ADK टूल अनुमोदन से ACP तकलागूToolConfirmationRequest को session/request_permission से जोड़ा गया; allow → approve, deny/cancel → deny, function-call id द्वारा सहसंबद्ध
क्लाइंट टूल-अद्यतन और उपयोग निष्ठालागूOutputChunk::ToolUpdate और OutputChunk::Usage एक External_Agent के ToolCallUpdate/UsageUpdate को प्रदर्शित करते हैं; एजेंट पाठ अपरिवर्तित
क्लाइंट समृद्ध प्रॉम्प्ट सामग्रीकार्यान्वितprompt_agent_content_with_policy गैर-पाठ्य ADK सामग्री को मिलते-जुलते ACP ब्लॉक के रूप में प्रसारित करता है
दूरस्थ ACP HTTP/WebSocketप्रचारित नहींस्थिर कार्यान्वयन स्थानीय stdio है
प्रायोगिक प्रोटोकॉल सुविधाएँप्रचारित नहींकार्यान्वयन और अंतःसंचालन परीक्षणों के बाद ही जोड़ें

मैन्युअल संपादक परीक्षण

examples/acp_server बनाएं, फिर उस बाइनरी को एक पूर्ण manifest पथ और मॉडल क्रेडेंशियल्स के साथ शुरू करने के लिए एक ACP क्लाइंट कॉन्फ़िगर करें। सत्यापित करें:

  1. initialization response protocol version 1 रिपोर्ट करती है;
  2. एक नया session इच्छित पूर्ण project directory स्वीकार करता है;
  3. final response से पहले text live updates के रूप में दिखाई देता है;
  4. read tool client में शुरू और पूर्णता के रूप में दिखाई देता है;
  5. cancellation connection बंद किए बिना turn को बंद करती है;
  6. बाद का prompt उसी session में सफल होता है;
  7. session service durable होने पर close और resume history को preserve करते हैं।

इस परीक्षण के लिए echo | cargo run का उपयोग न करें। प्रत्येक pipe एक अलग process शुरू करता है और connection या session को preserve नहीं कर सकता।