Skip to content

Releases: vcoderun/acpkit

v0.9.5_2026-05-08

08 May 19:59

Choose a tag to compare

v0.9.4_2026-05-08

08 May 16:30

Choose a tag to compare

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

01 May 17:19

Choose a tag to compare

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

01 May 11:34

Choose a tag to compare

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

29 Apr 22:30

Choose a tag to compare

v0.9.0_2026-04-21

21 Apr 00:09

Choose a tag to compare

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

18 Apr 01:30

Choose a tag to compare

  • Fix skill installation command

v0.8.1_2026-04-18

18 Apr 01:19

Choose a tag to compare

  • Improve README file

v0.8.0_2026-04-18

18 Apr 00:58

Choose a tag to compare

Release Summary — 2026-04-18

This release upgrades pydantic-acp to pydantic-ai-slim==1.83.0, expands the upstream
capability bridge surface, improves ACP-native plan mode behavior, and tightens documentation,
projection coverage, and runtime compatibility seams.

Highlights

  • Upgraded pydantic-acp to pydantic-ai-slim==1.83.0.
  • Hardened hook observation and introspection against upstream private API drift.
  • Added a generic bridge capability seam through CapabilityBridge.build_agent_capabilities(...).
  • Expanded the built-in capability bridge surface to cover:
    • ThreadExecutorBridge
    • SetToolMetadataBridge
    • IncludeToolReturnSchemasBridge
    • WebSearchBridge
    • WebFetchBridge
    • ImageGenerationBridge
    • McpCapabilityBridge
    • ToolsetBridge
    • PrefixToolsBridge
    • OpenAICompactionBridge
    • AnthropicCompactionBridge
  • Re-exported the new bridges from the public pydantic_acp package surface.

ACP Projection And UX

  • Added WebToolProjectionMap and BuiltinToolProjectionMap.
  • Added richer ACP tool-card projection for:
    • web search starts and results
    • web fetch starts, previews, and binary fetch fallbacks
    • image generation starts and summaries
    • upstream MCP capability calls and tool-list responses
  • Added visible transcript updates for provider-owned compaction, including OpenAI preflight
    compaction visibility and Anthropic CompactionPart projection.
  • Fixed builtin tool result projection from ModelResponse history.
  • Expanded the default tool classifier to recognize common web, image, and mcp_server:* builtin
    tool names.

Native Plan Mode

  • Added TaskPlan as the structured native-plan output surface for ACP plan mode.
  • Added a session-local plan_generation_type config option for PrepareToolsBridge with
    structured and tools modes.
  • Made structured the default plan-mode behavior so native plan mode can require structured plan
    generation without exposing acp_set_plan.
  • Restored tool-based native plan recording behind plan_generation_type="tools".
  • Kept plan progress tools (acp_update_plan_entry, acp_mark_plan_done) tied to
    plan_tools=True execution flows.

Runtime And Maintainability

  • Moved remaining private and semi-private hook access behind a dedicated compatibility layer.
  • Preserved hook ordering when wrapping Hooks(...) capabilities.
  • Split the large runtime/adapter.py delegation surface into dedicated runtime mixins.
  • Added focused inline docstrings on the public ACP-facing adapter methods and runtime mixins.

Docs And Examples

  • Extended the maintained bridges example to cover the new bridge and projection surfaces.
  • Updated API and bridge docs to reflect the generic capability seam and the current bridge set.
  • Clarified CLI ownership boundaries between acpkit run ..., run_acp(...), and
    create_acp_agent(...).
  • Expanded the factory example docs with explicit session-derived input handling and fallback
    guidance.
  • Documented native plan persistence wiring and clarified how ACP-native plan rendering already
    works through AgentPlanUpdate plus acp_get_plan.
  • Clarified FileSessionStore recovery guarantees versus host-owned recovery metrics.

Verification

  • Added regression coverage for the new capability bridges, hook compatibility paths, projection
    updates, native plan generation modes, and adapter runtime mixin delegation paths.
  • Added helper-path tests to keep coverage above the repository thresholds.

v0.7.0_2026-04-15

15 Apr 19:47

Choose a tag to compare

What's Changed

  • Bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #6

Full Changelog: v0.6.0_2026-04-11...v0.7.0_2026-04-15