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 | लागू API | Read और write को अलग-अलग advertised किया जाता है |
| क्लाइंट terminal callbacks | लागू API | create/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 updates | Dormant | Plan 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 क्लाइंट कॉन्फ़िगर करें। सत्यापित करें:
- initialization response protocol version 1 रिपोर्ट करती है;
- एक नया session इच्छित पूर्ण project directory स्वीकार करता है;
- final response से पहले text live updates के रूप में दिखाई देता है;
- read tool client में शुरू और पूर्णता के रूप में दिखाई देता है;
- cancellation connection बंद किए बिना turn को बंद करती है;
- बाद का prompt उसी session में सफल होता है;
- session service durable होने पर close और resume history को preserve करते हैं।
इस परीक्षण के लिए echo | cargo run का उपयोग न करें। प्रत्येक pipe एक अलग process शुरू करता है और connection या session को preserve नहीं कर सकता।
संबंधित उदाहरण
acp_client_hostacp_kiroacp_serveracp_full_protocol— no-API-key,Runner-समर्थित Phase 2 server-direction संदर्भ, एक end-to-end सत्यापन परीक्षण के साथ