ACP matriz de testes e suporte

ACP é bidirecional. Um teste útil de interoperabilidade deve manter uma conexão aberta enquanto notificações e requisições aninhadas chegam; uma série de linhas JSON desconectadas não pode provar o comportamento da sessão.

Testes verificados

A suíte adk-acp conecta o SDK Client oficial ao ADK-Rust SDK Agent por meio de um transporte em memória e exercita:

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

Testes separados cobrem cancelamento de sessão, cancelamento e recuperação de requisições JSON-RPC, mapeamento de eventos, menus de permissão que rejeitam primeiro, IDs opacos de opções, seleções fabricadas, decisões humanas aguardadas, comportamento allow-once de chamada exata, validação de configuração MCP e saída de depuração com segredos mascarados. A Fase 2 adiciona testes de ordenação de replay session/load (os session/updates reproduzidos correspondem à ordem cronológica dos eventos armazenados), testes de mapeamento e rejeição de prompts multimodais (imagem e áudio aceitos; conteúdo não anunciado rejeitado), testes de aprovar/negar/cancelar da ponte de permissões do servidor (o cancelamento é mapeado para negar, correlacionado por ID de chamada de função), e testes de fidelidade do cliente que comprovam que as superfícies ToolCallUpdate e UsageUpdate aparecem sem regredir a superfície de texto do agente. A Fase 3 adiciona testes de modo de sessão e opção de configuração (set_mode / set_config_option registram valores anunciados e rejeitam os desconhecidos, e a seleção persiste entre session/load), um teste de isolamento de session/fork (o histórico do fork é igual ao da origem e a origem permanece inalterada), testes de ativação de comandos disponíveis e informações da sessão (atualizações emitidas somente quando o agente declara comandos ou registra um título), e um teste de precisão de capacidades afirmando que as capacidades anunciadas correspondem exatamente aos manipuladores registrados e aos mapeamentos de conteúdo habilitados — incluindo que modos e opções de configuração são anunciados somente quando um provedor de SessionControls está presente.

A gate de ciclo de vida do MCP ao vivo inicia um processo filho real de stdio MCP, conclui o handshake e descobre suas ferramentas pelo mesmo McpToolset usado por sessões ACP.

Executar as gates

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

A gate acp_full_protocol é a rede de segurança executável da Fase 2: um Runner-backed AcpServer sem chave API, acionado pelo SDK oficial por meio de um canal no processo, validando a superfície completa da Fase 2 no sentido servidor (prompts de recurso incorporado e de imagem/áudio, a ponte de permissões, a ordem de replay de session/load, e a exposição de UsageUpdate / ToolCallUpdate) sem subprocesso ou credenciais de modelo.

Suporte atual

ÁreaStatusNotas
Protocolo de fio estável v1ImplementadoRust oficial SDK 1.2; a versão do protocolo é negociada separadamente
Transporte de cliente stdio localImplementadoSessões pontuais, em streaming e persistentes
Permissões do clienteImplementadoNegar por padrão, correspondência semântica, IDs opacos, política síncrona ou assíncrona
Callbacks do sistema de arquivos do clienteImplementado APILeitura e gravação anunciadas independentemente
Callbacks de terminal do clienteImplementado APITrait completo de create/output/wait/kill/release
MCP fornecido pelo clienteImplementadostdio obrigatório; capacidade de HTTP/SSE controlada por capacidade
ADK-Rust ACP servidorImplementadoNovo, prompt, carregar, atualizar, cancelar, fechar, listar, retomar, fork, set_mode, set_config_option, excluir
Carregamento + reprodução da sessão do servidorImplementadoReativa uma sessão persistida e reproduz os eventos armazenados em ordem cronológica; load_session anunciado
Fork da sessão do servidorImplementadoCopia o histórico e o estado relevante para um novo id de sessão, deixando a origem inalterada; fork anunciado
Modos da sessão do servidor + opções de configuraçãoImplementadoControlado pelo provedor via SessionControls; set_mode / set_config_option validados e persistidos em carregamento/retomada/fork; anunciado somente quando declarado
Comandos disponíveis do servidor + session-infoImplementadoEmitido na ativação quando o agente declara comandos ou registra um título; caso contrário, nenhum
Atualizações de plano do servidorInativoO mapeamento Plan SessionUpdate existe, mas fica inerte até que uma primitive de plano ADK exponha entradas do plano
Session MCP do servidorImplementadostdio, por sessão, inicialização e limpeza limitadas
Prompts de texto e de link de recursoImplementadoMapeados pelo módulo de conteúdo compartilhado
Prompts multimodais (imagem, áudio)ImplementadoMapeado para Part::InlineData; image/audio anunciados; conteúdo não anunciado rejeitado
Prompts de recurso incorporadoImplementadoMapeado para Part::EmbeddedResource; embedded_context anunciados
Aprovação de ferramenta do servidor ADK para ACPImplementadoToolConfirmationRequest interligado a session/request_permission; allow → aprovar, deny/cancel → negar, correlacionado pelo id da chamada de função
Fidelidade de atualização e uso de ferramenta do clienteImplementadoOutputChunk::ToolUpdate e OutputChunk::Usage expõem External_Agent de ToolCallUpdate/UsageUpdate; texto do agent inalterado
Conteúdo rico do prompt do clienteImplementadoprompt_agent_content_with_policy transmite conteúdo ADK não textual como o bloco ACP correspondente
ACP remoto HTTP/WebSocketNão anunciadoA implementação estável é stdio local
Recursos experimentais do protocoloNão anunciadoAdicione somente após testes de implementação e interoperabilidade

Teste manual do editor

Compile examples/acp_server e, em seguida, configure um cliente ACP para iniciar esse binário com um caminho absoluto do manifesto e credenciais do modelo. Verifique:

  1. a resposta de inicialização informa a versão do protocolo 1;
  2. uma nova sessão aceita o diretório absoluto do projeto pretendido;
  3. o texto aparece como atualizações em tempo real antes da resposta final;
  4. a ferramenta de leitura inicia e as conclusões aparecem no cliente;
  5. o cancelamento encerra a rodada sem fechar a conexão;
  6. um prompt posterior é concluído com sucesso na mesma sessão;
  7. fechar e retomar preserva o histórico quando o serviço de sessão é durável.

Não use echo | cargo run para este teste. Cada pipe inicia um processo diferente e não consegue preservar a conexão ou a sessão.