Skip to content

1.0.0

Latest

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