Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion md/testy.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,19 @@
`testy` is a deterministic ACP agent binary for exercising clients against the stable ACP v1 surface.
It is built from the `agent-client-protocol-test` crate and communicates over stdio like a normal agent.

The default build enables `agent-client-protocol-test`'s `unstable` cargo feature, which forwards
to the SDK's `unstable` feature:

```bash
cargo build -p agent-client-protocol-test --bin testy
```

To build stable-only coverage:

```bash
cargo build -p agent-client-protocol-test --bin testy --no-default-features
```

The binary lands at `target/debug/testy`. Integration tests that need to spawn it should use
`agent_client_protocol_test::test_binaries::testy()` after prebuilding test binaries.

Expand All @@ -22,13 +31,16 @@ Plain-text commands:
- `content` emits prompt/content-focused updates, including every stable `ContentBlock` variant.
- `tool_calls` emits tool call create and update flows.
- `callbacks` sends every stable agent-to-client request.
- `elicitations` sends only unstable elicitation requests when built with default features.
- `cancel_status` reports whether `session/cancel` has been received.
- `full` runs all stable scenarios in deterministic order.

With default features, `callbacks` and `full` also run unstable protocol coverage.

JSON command form:

```json
{"command":"run_scenario","scenario":"full"}
{"command":"run_scenario","scenario":"elicitations"}
```

## Coverage
Expand All @@ -43,3 +55,8 @@ The `full` scenario sends every stable agent-to-client callback request:
`terminal/output`, `terminal/wait_for_exit`, `terminal/kill`, and `terminal/release`.
It also emits the stable session update variants, including message chunks, tool calls, plans,
available commands, mode/config/session info, and usage.

With default features, `elicitations`, `callbacks`, and `full` cover `elicitation/create` form mode,
URL mode, session scope, request scope, accept, decline, cancel, and `elicitation/complete`.
If the client advertises form elicitation but not URL elicitation, the URL part returns a
`UrlElicitationRequired` prompt error with deterministic error data.
1 change: 1 addition & 0 deletions src/agent-client-protocol-test/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added

- Expand the `testy` binary into a deterministic ACP test agent that can exercise stable v1 agent methods, notifications, session updates, and client callbacks.
- Add default `testy` coverage through the `unstable` cargo feature for elicitation form/URL requests, session/request scopes, response actions, completion notifications, URL-required prompt errors, and a direct `elicitations` prompt trigger.
4 changes: 4 additions & 0 deletions src/agent-client-protocol-test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ homepage.workspace = true
description = "Test utilities and mock implementations for the Agent Client Protocol"
publish = false

[features]
default = ["unstable"]
unstable = ["agent-client-protocol/unstable"]

[[bin]]
name = "mcp-echo-server"
path = "src/bin/mcp_echo_server.rs"
Expand Down
Loading