Skip to content

Releases: agentclientprotocol/python-sdk

0.7.0

04 Dec 16:17

Choose a tag to compare

Highlights

  • First official release after joining the agentclientprotocol org.
  • Major Pythonic refactor and API polish with help from @frostming; snake_case
    naming and schema-driven method generation across the SDK.

What's Changed

  • fix: not support 3.14 yet by @yihong0618 in #23
  • chore: try to support py314 by @PsiACE in #24
  • docs: fix all the broken links after the repo migration by @kemingy in #25
  • chore: pin ci with commit hash by @PsiACE in #26
  • fix(issue #27): added an optional limit parameter by @PsiACE in #28
  • *: polish docs with real use case and add a maker file for typing hint by @PsiACE in #29
  • feat: change field names to snake case by @frostming in #31
  • chore: switch to using prek by @frostming in #32
  • docs: fix a dead link and format md by @yihong0618 in #33
  • fix: better make help do not use uv by @yihong0618 in #34
  • chore: check the links in ci by @kemingy in #35
  • feat: Auto-generate agent/client methods based on the schema by @frostming in #36
  • feat: Redesign the APIs to be more intuitive, and make them backward-compatible by @frostming in #37
  • fix: backward compatibility for the default behavior of AgentSideConnection by @frostming in #38
  • feat: major Python-style refactoring underway, preparing to release version 0.7.x. by @PsiACE in #39
  • fix: use classmethod for error factory methods by @frostming in #40
  • fix: exclude unneeded files from sdist build by @frostming in #41
  • feat: update to unstable schema and metadata by @frostming in #42
  • feat: upgrade schema to 0.8.0 by @frostming in #43
  • feat: upgrade schema to 0.9.1 by @PsiACE in #44

New Contributors

Full Changelog: 0.6.3...0.7.0

0.6.3

03 Nov 20:08
e203729

Choose a tag to compare

What's Changed

  • feat: improve type annotations in RequestError methods by @2725244134 in #17
  • fix: preserve _meta during ACP serialization by @PsiACE in #20
  • feat: follow agent-client-protocol 0.6.3 by @PsiACE in #21

New Contributors

Full Changelog: 0.6.2...0.6.3

0.6.2

25 Oct 18:28
61bc0d7

Choose a tag to compare

  • follow the agent-client-protocol 0.6.x -> 0.6..2
    • Add ability for agents and clients to provide information about their implementation
  • minor update for examples

0.5.0

25 Oct 17:13
fa891d2

Choose a tag to compare

Breaking changes

  • acp.helpers.embedded_text_resource and embedded_blob_resource now
    return TextResourceContents / BlobResourceContents rather than the
    wrapper class. Wrap those results with helpers.resource_block(...)
    when emitting embedded resources.

Highlights

  • Track upstream agent-client-protocol v0.5.0, including support for
    AvailableCommandsUpdate, CurrentModeUpdate, session mode metadata,
    and raw tool-call rawInput / rawOutput fields across the schema.
  • Introduce the experimental acp.contrib package with
    SessionAccumulator for stateful UI aggregation, ToolCallTracker for
    agent-side tool stream management, and PermissionBroker to standardise
    permission prompts. Extensive contrib test coverage ships under tests/ contrib/.
  • Extend acp.helpers with update_available_commands,
    update_current_mode, and richer tool-call builders
    (start_read_tool_call, start_edit_tool_call) that populate locations
    and raw payloads automatically.
  • Document the contrib surface in the new docs/contrib.md guide and
    surface it in the MkDocs navigation.
  • Improve schema generation tooling with additional rename overrides so
    the generated models line up with the Rust/TypeScript SDK naming.

0.4.9

14 Oct 05:29
927f558

Choose a tag to compare

This release brings the SDK close to production readiness — rebuilt with stronger foundations and a clearer developer experience.

Highlights

  • Supervised queue/state store for deterministic IO and concurrency.
  • Dedicated message routers with Pydantic validation.
  • Optional telemetry via Logfire / OpenTelemetry integration.
  • New helper builders and subprocess spawners for clean embedding.
  • Improved documentation, examples, and test coverage.

Upstream Spec: Regenerated against refs/tags/v0.4.9

What's Changed

  • refactor: make routing/sending pipeline better and add optional telemetry by @PsiACE in #9
  • refactor: align spec to optimize the development experience by @PsiACE in #10
  • chore: bump to 0.4.9 by @PsiACE in #11

Full Changelog: 0.4.5...0.4.9

0.4.5

09 Oct 19:26
f65295a

Choose a tag to compare

What's Changed

  • Ergonomic type generation with well-planned naming mappings
  • Schema type generation accepts version input
  • Tracked upstream changes up to 0.4.5
  • Prevented receive-loop blocking on callback-dependent requests

Full Changelog: 0.3.0...0.4.5

0.3.0

30 Sep 04:01
ae5e795

Choose a tag to compare

What's Changed

image

New Contributors

  • @PsiACE made their first contribution in #4

Full Changelog: 0.0.1...0.3.0

Agent Client Protocol (Python) - v0.0.1

06 Sep 10:26

Choose a tag to compare

A minimal Python SDK for the Agent Client Protocol (ACP). Build agents that talk to ACP clients (e.g. Zed) over stdio.

Install

pip install agent-client-protocol

Minimal agent

import asyncio
from acp import Agent, AgentSideConnection, Client, InitializeRequest, InitializeResponse, PromptRequest, PromptResponse, SessionNotification, stdio_streams, PROTOCOL_VERSION
from acp.schema import ContentBlock1, SessionUpdate2

class EchoAgent(Agent):
    def __init__(self, client: Client):
        self.client = client
    async def initialize(self, _p: InitializeRequest) -> InitializeResponse:
        return InitializeResponse(protocolVersion=PROTOCOL_VERSION)
    async def prompt(self, p: PromptRequest) -> PromptResponse:
        await self.client.sessionUpdate(SessionNotification(
            sessionId=p.sessionId,
            update=SessionUpdate2(sessionUpdate="agent_message_chunk", content=ContentBlock1(type="text", text="Hello from ACP")),
        ))
        return PromptResponse(stopReason="end_turn")

async def main() -> None:
    reader, writer = await stdio_streams()
    AgentSideConnection(lambda c: EchoAgent(c), writer, reader)
    await asyncio.Event().wait()

if __name__ == "__main__":
    asyncio.run(main())

Use this executable from your ACP client.

More