Skip to content

Releases: vcoderun/acpkit

v1.0.0_2026-07-04

Choose a tag to compare

@fswair fswair released this 03 Jul 23:52
937aead
ACP Kit V1 Stable Release #7

v0.9.7_2026-06-18

Choose a tag to compare

@fswair fswair released this 18 Jun 12:58

pydantic-acp 0.9.7 Harness Integration Changelog

This changelog covers the harness-specific changes for pydantic-acp 0.9.7.

Added

  • Added HarnessFileSystemBridge for exposing pydantic-ai-harness filesystem tools through ACP.
  • Added HarnessShellBridge for attaching bounded harness shell execution to Pydantic ACP agents.
  • Added HarnessCodeModeBridge for runs that intentionally expose harness CodeMode execution.
  • Added HarnessFileSystemProjectionMap, HarnessShellProjectionMap, and
    HarnessCodeModeProjectionMap so harness tool calls render as structured ACP transcript updates.
  • Added a maintained harness example at
    mock_harness_agent.py.
  • Added dedicated harness capability documentation at
    Harness-backed Capabilities.

Changed

  • The maintained harness example now uses real pydantic-ai-harness filesystem and shell
    capabilities instead of mock tool behavior.

  • The native ACP target exposes filesystem and shell by default:

    uv run acpkit run examples.pydantic.mock_harness_agent:acp_agent
  • CodeMode is opt-in and only enabled by the script entrypoint:

    uv run python -m examples.pydantic.mock_harness_agent --codemode
  • The harness example supports provider override through ACP_HARNESS_MODEL.

  • The harness example supports Codex-backed construction through ACP_HARNESS_CODEX_MODEL.

  • The Codex-backed path passes explicit instructions= into the Codex model factory and still uses
    Agent(instructions=...) for agent-owned behavior.

Projection Improvements

  • read_file now renders as a read-specific card with a numbered text preview.
  • read_file no longer appears as a fake diff.
  • File write and edit tools keep write-oriented projection.
  • Shell tools render command status and bounded output previews.
  • CodeMode tools render execution-oriented transcript cards instead of raw payloads.

Documentation

  • Updated the Pydantic ACP overview with harness bridge and projection guidance.
  • Updated the package README with installable usage examples.
  • Updated the examples README with default versus --codemode behavior.
  • Added the harness guide to the MkDocs navigation.

v0.9.6_2026-06-09

Choose a tag to compare

@fswair fswair released this 09 Jun 19:39

v0.9.5_2026-05-08

Choose a tag to compare

@fswair fswair released this 08 May 19:59

v0.9.4_2026-05-08

Choose a tag to compare

@fswair fswair released this 08 May 16:30

Pydantic AI 1.92.0 Integration

Added

  • Added PrepareOutputToolsBridge and PrepareOutputToolsMode to expose Pydantic AI's PrepareOutputTools capability through ACP session configuration.
  • Added ACP-visible updates for output-tool preparation, including completed and failed preparation events.
  • Added HookBridge support for the current Pydantic AI hook surface: output validation, output processing, output-tool preparation, and deferred tool-call observation.
  • Added hook projection labels and event-kind defaults for the new output and deferred-tool-call hook events.
  • Added runtime propagation of ACP session identity through Pydantic AI conversation_id and run metadata.

Changed

  • Updated pydantic-acp to pin pydantic-ai-slim==1.92.0.
  • Updated stream execution to consume the Pydantic AI 1.92 run_stream_events() async context-manager return while preserving compatibility with direct async iterables used by tests and fakes.
  • Renamed plan-preparation mode labels shown to ACP clients from Tool-Based and Structured to Tool Plans and Structured Plans.
  • Kept Pydantic AI integration points behind ACP Kit bridge and runtime seams instead of scattering upstream compatibility logic through callers.

Fixed

  • Removed deprecated OpenAICompaction(instructions=...) construction while preserving ACP Kit's own compaction metadata and event payloads.
  • Ensured docs no longer reference the old pydantic-ai-slim==1.83.0 compatibility pin.
  • Covered the new pydantic-acp compatibility surface with tests for output-tool preparation, hook events, hook introspection, run kwargs, and deprecation-warning regressions.

Documentation

  • Documented the 1.92.0 compatibility surface in the pydantic-acp README and docs.
  • Added API documentation entries for PrepareOutputToolsBridge and PrepareOutputToolsMode.
  • Updated project skill context for pydantic-acp and acpkit-sdk routing with the new bridge and hook surface.
  • Updated docs/llms-full.txt so generated LLM context matches the maintained pydantic-acp docs.

v0.9.3_2026-05-02

Choose a tag to compare

@fswair fswair released this 01 May 17:19

Summary

0.9.3 brings the extension-seam surface from the Pydantic adapter into langchain-acp, but
mapped onto graph ownership and LangChain runtime truth instead of Pydantic agent internals.

This release keeps the LangChain adapter architecture intact:

  • AdapterConfig continues to own adapter-level runtime knobs.
  • NativeApprovalBridge owns approval persistence and ACP permission presentation.
  • LangChainAcpAgent owns slash-command interception, prompt execution, and session-surface
    refresh.
  • Projection maps continue to own ACP-visible rendering, not graph execution semantics.

Highlights

Prompt capability configuration

langchain-acp now exposes ACP prompt capability advertisement through adapter config:

  • AdapterPromptCapabilities
  • AdapterConfig.prompt_capabilities

This allows hosts to truthfully narrow ACP-visible audio, image, and embedded-context support even
when the underlying graph remains more permissive internally.

Approval presentation and remembered policy

Approval handling now has first-class seams parallel to the Pydantic path:

  • ApprovalPolicy
  • ApprovalPolicyStore
  • SessionMetadataApprovalPolicyStore
  • PermissionOptionSet
  • PermissionRequestContext
  • PermissionToolCallBuilder
  • DefaultPermissionToolCallBuilder
  • ProjectionAwareApprovalBridge
  • NativeApprovalBridge.enable_persistent_choices
  • NativeApprovalBridge.policy_store
  • NativeApprovalBridge.option_set
  • NativeApprovalBridge.tool_call_builder

ACP permission cards can now reuse projection-aware file, command, or search context, and
remembered allow/reject choices can be stored outside session metadata when the host needs custom
policy persistence.

ACP-owned slash commands

The adapter now owns a small ACP-native slash-command layer instead of leaving the entire surface to
the graph:

  • mode commands from configured session modes
  • /model
  • /tools
  • /mcp-servers
  • custom host commands through SlashCommandProvider

New public seams:

  • SlashCommandRequest
  • SlashCommandResult
  • SlashCommandProvider
  • SlashCommandHandler
  • StaticSlashCommand
  • StaticSlashCommandProvider
  • AdapterConfig.slash_command_provider

Custom commands can emit transcript updates, plain text, and optional session-surface refreshes
without invoking the graph.

External hook and runtime event projection

External runtimes can now push hook-style lifecycle events into ACP without depending on graph-owned
callbacks:

  • HookEvent
  • HookProjectionMap
  • EventEmissionMode
  • ExternalHookEventBridge

The bridge supports paired start/progress emission, start-only emission, hidden progress variants,
and bridge-owned metadata export.

Filesystem search projection and tool classification

Filesystem projection now supports search/list-specific rendering on the LangChain path:

  • FileSystemProjectionMap.search_tool_names
  • FileSystemProjectionMap.default_search_tool
  • FileSystemProjectionMap.search_path_arg
  • FileSystemProjectionMap.search_pattern_arg
  • FileSystemProjectionMap.render_search_results_as_tree
  • FileSystemProjectionMap.hide_dot_directories_in_tree
  • FileSystemProjectionMap.tree_root_label
  • ProjectionAwareToolClassifier

This lets search-style tool output render as deterministic ACP tree progress without touching the
filesystem, and gives approval rendering a better tool-kind classifier for projected tools.

Compatibility and behavior

  • Existing approval bridges keep working through the legacy compatibility path.
  • Projection-aware approval behavior is opt-in through ProjectionAwareApprovalBridge.
  • Remembered approval lookup is live runtime behavior through ApprovalPolicyStore.get_policy(...),
    not metadata export.
  • ProjectionAwareToolClassifier preserves raw_input when it falls back to the wrapped
    classifier, so arg-sensitive custom classifiers continue to behave correctly.
  • Custom slash command ids must already be normalized lowercase slash ids before they are advertised
    to ACP clients.
  • Built-in slash commands still run before host-defined commands.
  • Search/list projection remains opt-in; existing projection maps keep default behavior unless the
    new fields are configured.

Public API additions

New or newly-exported public seams in this release include:

  • AdapterPromptCapabilities
  • ApprovalPolicy
  • ApprovalPolicyStore
  • SessionMetadataApprovalPolicyStore
  • PermissionOptionSet
  • PermissionRequestContext
  • PermissionToolCallBuilder
  • DefaultPermissionToolCallBuilder
  • ProjectionAwareApprovalBridge
  • supports_projection_aware_approval_bridge(...)
  • SlashCommandRequest
  • SlashCommandResult
  • SlashCommandProvider
  • SlashCommandHandler
  • StaticSlashCommand
  • StaticSlashCommandProvider
  • HookEvent
  • HookProjectionMap
  • EventEmissionMode
  • ExternalHookEventBridge
  • ProjectionAwareToolClassifier

Documentation and examples

Documentation was expanded across the LangChain adapter docs:

  • docs/langchain-acp.md
  • docs/langchain-acp/adapter-config.md
  • docs/langchain-acp/runtime-controls.md
  • docs/langchain-acp/plans-thinking-approvals.md
  • docs/langchain-acp/bridges.md
  • docs/langchain-acp/projections.md
  • docs/langchain-acp/providers.md
  • docs/getting-started/langchain-quickstart.md
  • packages/adapters/langchain-acp/README.md

The docs now cover:

  • explicit prompt_capabilities
  • ACP-owned slash commands and custom providers
  • persistent approval choices on NativeApprovalBridge
  • projection-aware permission rendering
  • external hook-event projection
  • search/list tree rendering
  • Codex helper usage with required instructions=...

Validation

Validation for this release:

  • uv run pytest --cov=.: 469 passed
  • Line & Branch coverage: 100.00%
  • make prod: passed
  • git diff --check: passed

Changed files

Primary implementation areas:

  • packages/adapters/langchain-acp/src/langchain_acp/config.py
  • packages/adapters/langchain-acp/src/langchain_acp/prompt_capabilities.py
  • packages/adapters/langchain-acp/src/langchain_acp/approval_store.py
  • packages/adapters/langchain-acp/src/langchain_acp/permission_presentation.py
  • packages/adapters/langchain-acp/src/langchain_acp/approvals.py
  • packages/adapters/langchain-acp/src/langchain_acp/slash.py
  • packages/adapters/langchain-acp/src/langchain_acp/_slash_commands.py
  • packages/adapters/langchain-acp/src/langchain_acp/runtime/slash_commands.py
  • packages/adapters/langchain-acp/src/langchain_acp/hook_projection.py
  • packages/adapters/langchain-acp/src/langchain_acp/bridges/external_hooks.py
  • packages/adapters/langchain-acp/src/langchain_acp/projection.py
  • packages/adapters/langchain-acp/src/langchain_acp/runtime/adapter.py
  • packages/adapters/langchain-acp/src/langchain_acp/runtime/server.py
  • packages/adapters/langchain-acp/src/langchain_acp/__init__.py

Full Changelog: v0.9.0_2026-04-21...v0.9.3_2026-05-01

Full Changelog: v0.9.0_2026-04-21...v0.9.3_2026-05-01

v0.9.2_2026-05-01

Choose a tag to compare

@fswair fswair released this 01 May 11:34

Summary

0.9.2 adds the extension seams for runtime around approvals, slash commands, projection, and external event integration.

This release keeps the existing adapter ownership model intact:

  • AdapterConfig continues to own adapter-level runtime knobs.
  • NativeApprovalBridge owns native approval behavior and permission presentation.
  • _PromptExecution owns prompt execution and deferred approval continuation.
  • _AdapterPromptHandler owns slash command interception and fallback.
  • Projection maps continue to own ACP-visible rendering only.

Highlights

Prompt capability configuration

pydantic-acp now exposes prompt capability advertisement as adapter configuration:

  • AdapterPromptCapabilities
  • AdapterConfig.prompt_capabilities

This lets integrations truthfully narrow or preserve ACP prompt input visibility for audio, image,
and embedded context.

Approval presentation and policy storage

Native approvals now have first-class extension seams for permission rendering and remembered policy:

  • PermissionRequestContext
  • PermissionToolCallBuilder
  • DefaultPermissionToolCallBuilder
  • NativeApprovalBridge.tool_call_builder
  • ApprovalPolicy
  • ApprovalPolicyStore
  • SessionMetadataApprovalPolicyStore
  • PermissionOptionSet
  • NativeApprovalBridge.policy_store

Permission cards can reuse projection-aware file or command context, and remembered approval policy
can live outside session metadata when the host needs custom storage.

Custom slash commands

Hosts can now publish and handle custom slash commands through the adapter:

  • SlashCommandRequest
  • SlashCommandResult
  • SlashCommandProvider
  • SlashCommandHandler
  • StaticSlashCommand
  • StaticSlashCommandProvider
  • AdapterConfig.slash_command_provider

Custom commands run after built-in adapter commands and can emit transcript updates, text, and an
optional session-surface refresh.

External hook event projection

External runtimes can now push hook-like lifecycle events into ACP without installing Pydantic AI
hooks:

  • EventEmissionMode
  • ExternalHookEventBridge

The bridge supports paired start/progress emission, start-only emission, and bridge-owned metadata.

Filesystem search projection and tool classification

Filesystem projection now supports search/list rendering and classification:

  • FileSystemProjectionMap.search_tool_names
  • FileSystemProjectionMap.default_search_tool
  • FileSystemProjectionMap.search_path_arg
  • FileSystemProjectionMap.search_pattern_arg
  • FileSystemProjectionMap.render_search_results_as_tree
  • FileSystemProjectionMap.hide_dot_directories_in_tree
  • FileSystemProjectionMap.tree_root_label
  • ProjectionAwareToolClassifier

Search output can render as a deterministic tree without touching the filesystem.

Compatibility and behavior

  • Existing third-party approval bridges that implement the legacy
    resolve_deferred_approvals(...) contract continue to work.
  • The public ApprovalBridge protocol remains the legacy no-projection_map contract.
  • ProjectionAwareApprovalBridge is the opt-in bridge contract for projection-aware approval
    presentation.
  • Live remembered approval decisions now use ApprovalPolicyStore.get_policy(...) directly.
    export_state(...) remains a metadata and snapshot seam.
  • ProjectionAwareToolClassifier preserves raw_input when falling back to the base classifier, so
    arg-sensitive custom classifiers continue to work correctly.
  • Custom slash command names must already be normalized lowercase ids before they are emitted to ACP
    clients.
  • Built-in slash command ordering and fallback behavior remain stable.
  • Existing projection maps keep their default behavior unless search/list rendering is explicitly
    enabled.

Public API additions

New or newly-exported public seams in this release include:

  • AdapterPromptCapabilities
  • ApprovalPolicy
  • ApprovalPolicyStore
  • SessionMetadataApprovalPolicyStore
  • PermissionOptionSet
  • PermissionRequestContext
  • PermissionToolCallBuilder
  • DefaultPermissionToolCallBuilder
  • ProjectionAwareApprovalBridge
  • supports_projection_aware_approval_bridge(...)
  • SlashCommandRequest
  • SlashCommandResult
  • SlashCommandProvider
  • SlashCommandHandler
  • StaticSlashCommand
  • StaticSlashCommandProvider
  • EventEmissionMode
  • ExternalHookEventBridge
  • ProjectionAwareToolClassifier

Documentation and testing

Documentation was updated across the adapter docs, API docs, projection cookbook, providers,
bridges, and generated LLM context files. Skill context files were also updated so internal routing
matches the new public seams.

Validation for this release:

  • make prod: passed
  • uv run pytest --cov=.: 455 passed
  • Full repo line coverage: 100.00%
  • Adapter package branch coverage: 100.00%
  • git diff --check: passed

Changed files

Primary implementation areas:

  • packages/adapters/pydantic-acp/src/pydantic_acp/approvals.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/approval_store.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/permission_presentation.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/prompt_capabilities.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/slash.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/bridges/external_hooks.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/projection.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_prompt.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.py
  • packages/adapters/pydantic-acp/src/pydantic_acp/runtime/_session_surface_runtime.py

Full Changelog: v0.9.1_2026-04-30...v0.9.2_2026-05-01

v0.9.1_2026-04-30

Choose a tag to compare

@fswair fswair released this 29 Apr 22:30

v0.9.0_2026-04-21

Choose a tag to compare

@fswair fswair released this 21 Apr 00:09

Highlights

  • Added langchain-acp as a first-class ACP Kit adapter for LangChain and LangGraph runtimes, including session-aware graph factories, provider seams, bridge-based capability wiring, native ACP plan support, event projection, and DeepAgents compatibility helpers.
  • Expanded codex-auth-helper so Codex auth state can now back LangChain through a maintained ChatOpenAI factory, making it possible to build Codex-backed LangChain graphs without hand-rolling token refresh or OpenAI client wiring.
  • Added acpremote as a transport/helper package for exposing any existing ACP server over WebSocket and mirroring remote ACP endpoints back into a local stdio ACP boundary.
  • Added command-backed remote serving through acpremote.serve_command(...) and acpremote.serve_stdio_command(...), including metadata, health, auth, and remote working-directory propagation.
  • Added root acpkit transport entry points and re-exports for remote usage, including acpkit serve, acpkit run --addr ..., acpkit.connect_acp(...), and acpkit.serve_acp(...).
  • Added maintained examples for LangChain graphs, DeepAgents compatibility, and ACP Remote Codex transport flows.

Improvements

  • Expanded langchain-acp projections to cover search, HTTP request, browser, terminal, community file-management, and finance tool families with truthful ACP rendering.
  • Added first-class docs, skills, and maintained examples for the Codex-backed LangChain path so the helper, adapter, and example surfaces describe the same integration story.
  • Reworked remote-host ownership defaults so mirrored ACP clients no longer leak local host-backed capabilities or local working directories into remote Codex and command-backed ACP servers.
  • Rebalanced the public documentation so top-level product messaging is adapter-neutral, with parallel Pydantic and LangChain quickstarts and stronger helper positioning.

Fixed

  • Fixed mirrored remote session behavior so remote ACP servers stay authoritative for cwd, filesystem ownership, and terminal ownership.
  • Fixed acpremote command environment handling so explicit env={...} overrides preserve inherited variables such as PATH.
  • Fixed ACP Remote client and stream handling for large ACP lines by making the reader limit configurable and wiring it through both client and server transport paths.
  • Fixed documentation drift between package exports and API docs, including missing public exports and stale generated docs content.
  • Fixed release-facing docs examples that previously contained machine-specific absolute paths and stray conversational artifacts.

v0.8.2_2026-04-18

Choose a tag to compare

@fswair fswair released this 18 Apr 01:30
  • Fix skill installation command