Skip to content

Releases

1.0.0

Choose a tag to compare

@frostming frostming released this 09 Nov 00:33
9853d8b

Agent Client Protocol Python SDK 1.0.0 is the first stable 1.x release.

Highlights

  • Stable ACP v1 bindings now track schema-v1.23.0, with the missing v1 protocol methods, stable session/resume and session/close routing, and request cancellation via $/cancel_request.
  • Experimental ACP v2 bindings and runtime track schema-v2.0.0-alpha.5, with protocol negotiation and support over stdio, Streamable HTTP, and WebSocket.
  • More robust transport handling: malformed and non-object JSON-RPC frames, invalid response IDs, SSE UTF-8 boundaries, and error responses are handled consistently.
  • Session snapshots isolate raw tool payloads, explicitly empty permission options are rejected, and subprocess shutdown bounds stdin closure.
  • Package support extends to Python 3.15 (Python requirement: >=3.10,<3.16), with dependency security updates.

Upgrading from 0.12.x

This is a major release with API changes. Review these before upgrading:

  • The acp.helpers module and its top-level builder exports have been removed. Construct generated models from acp.schema directly; discriminator fields have defaults. For example, replace text_block("Hello") with TextContentBlock(text="Hello") imported from acp.schema.
  • Review v1 schema changes, including session notice capabilities, the stable tool-call name field, TerminalAuthMethod replacing EnvVarAuthMethod, and stricter accepted elicitation content. See the quickstart.
  • Experimental v2 connection methods and handlers use expanded snake-case parameters, for example connection.new_session(cwd="/workspace"). See the v2 guide.
  • Web transports use Starlette and httpx2[http2]. Install agent-client-protocol[http] for those optional dependencies. See the web transport guide.

The stable SDK version does not change the experimental status of protocol v2 or the web transports.

pip install --upgrade agent-client-protocol==1.0.0

What's Changed

  • fix: handle UTF-8 split across SSE chunks by @Excelius-Wang in #135
  • refactor(codegen): generate schema bindings directly by @PsiACE in #136
  • refactor: remove schema helper API by @PsiACE in #137
  • feat(schema): update to 1.21.0 by @PsiACE in #138
  • refactor(codegen): separate v1 schema semantics by @PsiACE in #140
  • feat(codegen): generate experimental v2 bindings by @PsiACE in #141
  • feat(v2): add experimental runtime and negotiation by @PsiACE in #139
  • refactor: simplify web transports with Starlette by @frostming in #142
  • chore: migrate HTTP client dependency from httpx to httpx2 by @frostming in #143
  • chore(deps): bump anyio from 4.14.1 to 4.14.2 in the uv group across 1 directory by @dependabot[bot] in #145
  • feat(schema)!: bump ACP v1 schema to 1.23.0 by @PsiACE in #146
  • feat(v2)!: bump ACP draft schema to 2.0.0-alpha.5 by @PsiACE in #147
  • feat: complete missing v1 protocol methods by @frostming in #148
  • refactor: derive routers from protocol metadata by @frostming in #149
  • refactor(v2)!: expand parameters and derive routes from protocols by @frostming in #150
  • chore(deps): bump urllib3 from 2.7.0 to 2.8.0 in the uv group across 1 directory by @dependabot[bot] in #164
  • chore(deps): bump virtualenv from 20.36.1 to 21.7.13 in the uv group across 1 directory by @dependabot[bot] in #165
  • fix: make the schema codegen host-independent by @PerryLink in #151
  • fix: bound stdin closure during subprocess shutdown by @Oscar-Williams in #152
  • fix: align AgentSideConnection.to_agent type with AgentFactory by @extreme-structure in #157
  • fix: route stable session/resume and session/close by @monody0007 in #159
  • fix(contrib): reject explicitly empty permission options by @monody0007 in #156
  • fix(connection): support $/cancel_request request cancellation by @monody0007 in #158
  • fix(ws): warn when the server ignores binary frames by @frostming in #166
  • feat(http): serve v2 over Streamable HTTP and WebSocket by @odellus in #163
  • fix(transport): ignore JSON-RPC frames that are not objects by @PerryLink in #153
  • fix: isolate raw tool payloads in session snapshots by @ningyixi in #171
  • fix(ws): ignore non-object JSON frames in client transport by @CHLIN0 in #169
  • fix(connection): ignore responses whose id is not a RequestId by @PerryLink in #167
  • fix(http): skip non-object JSON in SSE streams by @ningyixi in #172
  • feat: support Python 3.15 by @daeho-ro in #173
  • chore(deps): bump dev tooling for security advisories by @benbrandt in #178
  • fix: align JSON-RPC error handling across transports by @PsiACE in #174
  • chore(deps): bump the uv group across 1 directory with 2 updates by @dependabot[bot] in #180
  • chore(deps): bump virtualenv from 21.14.12 to 21.14.13 in the uv group across 1 directory by @dependabot[bot] in #181

New Contributors

Full Changelog: 0.12.1...1.0.0

1.0.0rc3

1.0.0rc3 Pre-release
Pre-release

Choose a tag to compare

@frostming frostming released this 12 Oct 09:38
bdb9ac7

What's Changed

  • chore(deps): bump urllib3 from 2.7.0 to 2.8.0 in the uv group across 1 directory by @dependabot[bot] in #164
  • chore(deps): bump virtualenv from 20.36.1 to 21.7.13 in the uv group across 1 directory by @dependabot[bot] in #165
  • fix: make the schema codegen host-independent by @PerryLink in #151
  • fix: bound stdin closure during subprocess shutdown by @Oscar-Williams in #152
  • fix: align AgentSideConnection.to_agent type with AgentFactory by @extreme-structure in #157
  • fix: route stable session/resume and session/close by @monody0007 in #159
  • fix(contrib): reject explicitly empty permission options by @monody0007 in #156
  • fix(connection): support $/cancel_request request cancellation by @monody0007 in #158
  • fix(ws): warn when the server ignores binary frames by @frostming in #166
  • feat(http): serve v2 over Streamable HTTP and WebSocket by @odellus in #163
  • fix(transport): ignore JSON-RPC frames that are not objects by @PerryLink in #153

New Contributors

Full Changelog: 1.0.0rc2...1.0.0rc3

v1.0.0rc2

v1.0.0rc2 Pre-release
Pre-release

Choose a tag to compare

@frostming frostming released this 21 Sep 09:17
9d07d78

What's Changed

  • chore: migrate HTTP client dependency from httpx to httpx2 by @frostming in #143
  • chore(deps): bump anyio from 4.14.1 to 4.14.2 in the uv group across 1 directory by @dependabot[bot] in #145
  • feat(schema)!: bump ACP v1 schema to 1.23.0 by @PsiACE in #146
  • feat(v2)!: bump ACP draft schema to 2.0.0-alpha.5 by @PsiACE in #147
  • feat: complete missing v1 protocol methods by @frostming in #148
  • refactor: derive routers from protocol metadata by @frostming in #149
  • refactor(v2)!: expand parameters and derive routes from protocols by @frostming in #150

Full Changelog: 1.0.0rc1...1.0.0rc2

v1.0.0 RC1

v1.0.0 RC1 Pre-release
Pre-release

Choose a tag to compare

@frostming frostming released this 11 Sep 03:41
c1004f8

What's Changed

  • fix: handle UTF-8 split across SSE chunks by @Excelius-Wang in #135
  • refactor(codegen): generate schema bindings directly by @PsiACE in #136
  • refactor: remove schema helper API by @PsiACE in #137
  • feat(schema): update to 1.21.0 by @PsiACE in #138
  • refactor(codegen): separate v1 schema semantics by @PsiACE in #140
  • feat(codegen): generate experimental v2 bindings by @PsiACE in #141
  • feat(v2): add experimental runtime and negotiation by @PsiACE in #139
  • refactor: simplify web transports with Starlette by @frostming in #142

New Contributors

Full Changelog: 0.12.1...1.0.0rc1

0.12.1

Choose a tag to compare

@frostming frostming released this 16 Aug 14:08
e668ed9

What's Changed

  • fix(codegen): support datamodel-code-generator 0.71 by @PsiACE in #127
  • chore(deps): bump h2 from 4.3.0 to 4.4.1 in the uv group across 1 directory by @dependabot[bot] in #131
  • refactor(connection): simplify connection handling and remove unused components by @frostming in #132
  • chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 in the uv group across 1 directory by @dependabot[bot] in #133
  • fix(connection): preserve notification response ordering by @hallerite in #129

New Contributors

Full Changelog: 0.12.0...0.12.1

0.12.0

Choose a tag to compare

@PsiACE PsiACE released this 01 Aug 15:58
750c6ee

What's Changed

  • feat(schema): bump ACP schema to v1.19.0 (extensible unions + lenient deserialization) by @michelTho in #117
  • RFD-based ACP HTTP and WS web transport implementation by @federicociner in #118
  • chore(deps-dev): bump datamodel-code-generator from 0.35.0 to 0.64.0 in the uv group across 1 directory by @dependabot[bot] in #123
  • release: 0.12.0 by @PsiACE in #124

New Contributors

Full Changelog: 0.11.1...0.12.0

0.11.1

Choose a tag to compare

@PsiACE PsiACE released this 27 Jul 18:46
02b6f87

What's Changed

  • fix(connection): log unhandled RPC handler exceptions by @michelTho in #116
  • package scritps/ directory as well by @mcepl in #120
  • chore(deps): bump pymdown-extensions from 10.21.3 to 11.0 in the uv group across 1 directory by @dependabot[bot] in #121
  • chore: bump version to 0.11.1 by @PsiACE in #122

New Contributors

Full Changelog: 0.11.0...0.11.1

0.11.0

Choose a tag to compare

@PsiACE PsiACE released this 05 Jul 17:07

What's Changed

  • chore(deps): bump uv from 0.11.6 to 0.11.15 in the uv group across 1 directory by @dependabot[bot] in #107
  • feat: update ACP schema to v0.13.3 by @PsiACE in #106
  • feat: update ACP schema to v0.13.6 by @PsiACE in #110
  • fix: recover from oversized JSON-RPC frames by @PsiACE in #111
  • fix: close run_agent connection on cancellation by @PsiACE in #113
  • feat(schema): bump ACP schema to v1.16.0 by @PsiACE in #114

Full Changelog: 0.10.1...0.11.0

0.10.1

Choose a tag to compare

@PsiACE PsiACE released this 24 May 18:46
8cd8391

What's Changed

  • chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in the uv group across 1 directory by @dependabot[bot] in #96
  • chore(deps): bump pymdown-extensions from 10.16.1 to 10.21.3 in the uv group across 1 directory by @dependabot[bot] in #99
  • chore(deps): bump idna from 3.11 to 3.15 in the uv group across 1 directory by @dependabot[bot] in #100
  • fix(examples): improve gemini.py CLI experience by @whhe in #103
  • fix: assign receive-loop attributes before spawning recv task by @SAY-5 in #102
  • release: 0.10.1 by @PsiACE in #104

New Contributors

Full Changelog: 0.10.0...0.10.1

0.10.0

Choose a tag to compare

@PsiACE PsiACE released this 07 May 19:11
c864d7d

What's Changed

  • chore(deps): bump uv from 0.9.7 to 0.11.6 in the uv group across 1 directory by @dependabot[bot] in #88
  • chore(deps-dev): bump pytest from 8.4.2 to 9.0.3 in the uv group across 1 directory by @dependabot[bot] in #89
  • fix: reject pending requests on EOF to prevent infinite hang by @simonrosenberg in #86
  • chore(deps-dev): bump python-dotenv from 1.2.1 to 1.2.2 in the uv group across 1 directory by @dependabot[bot] in #90
  • feat: bump acp protocol to 0.12.2 by @PsiACE in #93
  • fix(schema): coerce string protocolVersion in InitializeRequest by @WeeeeeKdY in #92
  • fix: skip blank/whitespace lines in receive loop by @aorumbayev in #87
  • feat: add receive_timeout parameter to Connection class by @birdg0 in #84

New Contributors

Full Changelog: 0.9.0...0.10.0