Releases: vcoderun/acpkit
Release list
v1.0.0_2026-07-04
ACP Kit V1 Stable Release #7
v0.9.7_2026-06-18
pydantic-acp 0.9.7 Harness Integration Changelog
This changelog covers the harness-specific changes for pydantic-acp 0.9.7.
Added
- Added
HarnessFileSystemBridgefor exposingpydantic-ai-harnessfilesystem tools through ACP. - Added
HarnessShellBridgefor attaching bounded harness shell execution to Pydantic ACP agents. - Added
HarnessCodeModeBridgefor runs that intentionally expose harness CodeMode execution. - Added
HarnessFileSystemProjectionMap,HarnessShellProjectionMap, and
HarnessCodeModeProjectionMapso 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-harnessfilesystem 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_filenow renders as a read-specific card with a numbered text preview.read_fileno 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
--codemodebehavior. - Added the harness guide to the MkDocs navigation.
v0.9.6_2026-06-09
Full Changelog: v0.9.0_2026-04-21...v0.9.6_2026-06-09
v0.9.5_2026-05-08
Full Changelog: v0.9.4_2026-05-08...v0.9.5_2026-05-08
v0.9.4_2026-05-08
Pydantic AI 1.92.0 Integration
Added
- Added
PrepareOutputToolsBridgeandPrepareOutputToolsModeto expose Pydantic AI'sPrepareOutputToolscapability 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_idand runmetadata.
Changed
- Updated
pydantic-acpto pinpydantic-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-BasedandStructuredtoTool PlansandStructured 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.0compatibility 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
PrepareOutputToolsBridgeandPrepareOutputToolsMode. - Updated project skill context for pydantic-acp and acpkit-sdk routing with the new bridge and hook surface.
- Updated
docs/llms-full.txtso generated LLM context matches the maintained pydantic-acp docs.
v0.9.3_2026-05-02
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:
AdapterConfigcontinues to own adapter-level runtime knobs.NativeApprovalBridgeowns approval persistence and ACP permission presentation.LangChainAcpAgentowns 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:
AdapterPromptCapabilitiesAdapterConfig.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:
ApprovalPolicyApprovalPolicyStoreSessionMetadataApprovalPolicyStorePermissionOptionSetPermissionRequestContextPermissionToolCallBuilderDefaultPermissionToolCallBuilderProjectionAwareApprovalBridgeNativeApprovalBridge.enable_persistent_choicesNativeApprovalBridge.policy_storeNativeApprovalBridge.option_setNativeApprovalBridge.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:
SlashCommandRequestSlashCommandResultSlashCommandProviderSlashCommandHandlerStaticSlashCommandStaticSlashCommandProviderAdapterConfig.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:
HookEventHookProjectionMapEventEmissionModeExternalHookEventBridge
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_namesFileSystemProjectionMap.default_search_toolFileSystemProjectionMap.search_path_argFileSystemProjectionMap.search_pattern_argFileSystemProjectionMap.render_search_results_as_treeFileSystemProjectionMap.hide_dot_directories_in_treeFileSystemProjectionMap.tree_root_labelProjectionAwareToolClassifier
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. ProjectionAwareToolClassifierpreservesraw_inputwhen 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:
AdapterPromptCapabilitiesApprovalPolicyApprovalPolicyStoreSessionMetadataApprovalPolicyStorePermissionOptionSetPermissionRequestContextPermissionToolCallBuilderDefaultPermissionToolCallBuilderProjectionAwareApprovalBridgesupports_projection_aware_approval_bridge(...)SlashCommandRequestSlashCommandResultSlashCommandProviderSlashCommandHandlerStaticSlashCommandStaticSlashCommandProviderHookEventHookProjectionMapEventEmissionModeExternalHookEventBridgeProjectionAwareToolClassifier
Documentation and examples
Documentation was expanded across the LangChain adapter docs:
docs/langchain-acp.mddocs/langchain-acp/adapter-config.mddocs/langchain-acp/runtime-controls.mddocs/langchain-acp/plans-thinking-approvals.mddocs/langchain-acp/bridges.mddocs/langchain-acp/projections.mddocs/langchain-acp/providers.mddocs/getting-started/langchain-quickstart.mdpackages/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: passedgit diff --check: passed
Changed files
Primary implementation areas:
packages/adapters/langchain-acp/src/langchain_acp/config.pypackages/adapters/langchain-acp/src/langchain_acp/prompt_capabilities.pypackages/adapters/langchain-acp/src/langchain_acp/approval_store.pypackages/adapters/langchain-acp/src/langchain_acp/permission_presentation.pypackages/adapters/langchain-acp/src/langchain_acp/approvals.pypackages/adapters/langchain-acp/src/langchain_acp/slash.pypackages/adapters/langchain-acp/src/langchain_acp/_slash_commands.pypackages/adapters/langchain-acp/src/langchain_acp/runtime/slash_commands.pypackages/adapters/langchain-acp/src/langchain_acp/hook_projection.pypackages/adapters/langchain-acp/src/langchain_acp/bridges/external_hooks.pypackages/adapters/langchain-acp/src/langchain_acp/projection.pypackages/adapters/langchain-acp/src/langchain_acp/runtime/adapter.pypackages/adapters/langchain-acp/src/langchain_acp/runtime/server.pypackages/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
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:
AdapterConfigcontinues to own adapter-level runtime knobs.NativeApprovalBridgeowns native approval behavior and permission presentation._PromptExecutionowns prompt execution and deferred approval continuation._AdapterPromptHandlerowns 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:
AdapterPromptCapabilitiesAdapterConfig.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:
PermissionRequestContextPermissionToolCallBuilderDefaultPermissionToolCallBuilderNativeApprovalBridge.tool_call_builderApprovalPolicyApprovalPolicyStoreSessionMetadataApprovalPolicyStorePermissionOptionSetNativeApprovalBridge.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:
SlashCommandRequestSlashCommandResultSlashCommandProviderSlashCommandHandlerStaticSlashCommandStaticSlashCommandProviderAdapterConfig.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:
EventEmissionModeExternalHookEventBridge
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_namesFileSystemProjectionMap.default_search_toolFileSystemProjectionMap.search_path_argFileSystemProjectionMap.search_pattern_argFileSystemProjectionMap.render_search_results_as_treeFileSystemProjectionMap.hide_dot_directories_in_treeFileSystemProjectionMap.tree_root_labelProjectionAwareToolClassifier
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
ApprovalBridgeprotocol remains the legacy no-projection_mapcontract. ProjectionAwareApprovalBridgeis 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. ProjectionAwareToolClassifierpreservesraw_inputwhen 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:
AdapterPromptCapabilitiesApprovalPolicyApprovalPolicyStoreSessionMetadataApprovalPolicyStorePermissionOptionSetPermissionRequestContextPermissionToolCallBuilderDefaultPermissionToolCallBuilderProjectionAwareApprovalBridgesupports_projection_aware_approval_bridge(...)SlashCommandRequestSlashCommandResultSlashCommandProviderSlashCommandHandlerStaticSlashCommandStaticSlashCommandProviderEventEmissionModeExternalHookEventBridgeProjectionAwareToolClassifier
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: passeduv 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.pypackages/adapters/pydantic-acp/src/pydantic_acp/approval_store.pypackages/adapters/pydantic-acp/src/pydantic_acp/permission_presentation.pypackages/adapters/pydantic-acp/src/pydantic_acp/prompt_capabilities.pypackages/adapters/pydantic-acp/src/pydantic_acp/slash.pypackages/adapters/pydantic-acp/src/pydantic_acp/bridges/external_hooks.pypackages/adapters/pydantic-acp/src/pydantic_acp/projection.pypackages/adapters/pydantic-acp/src/pydantic_acp/runtime/_adapter_prompt.pypackages/adapters/pydantic-acp/src/pydantic_acp/runtime/_prompt_execution.pypackages/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
Full Changelog: v0.9.0_2026-04-21...v0.9.1_2026-04-30
v0.9.0_2026-04-21
Highlights
- Added
langchain-acpas 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-helperso Codex auth state can now back LangChain through a maintainedChatOpenAIfactory, making it possible to build Codex-backed LangChain graphs without hand-rolling token refresh or OpenAI client wiring. - Added
acpremoteas 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(...)andacpremote.serve_stdio_command(...), including metadata, health, auth, and remote working-directory propagation. - Added root
acpkittransport entry points and re-exports for remote usage, includingacpkit serve,acpkit run --addr ...,acpkit.connect_acp(...), andacpkit.serve_acp(...). - Added maintained examples for LangChain graphs, DeepAgents compatibility, and ACP Remote Codex transport flows.
Improvements
- Expanded
langchain-acpprojections 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
acpremotecommand environment handling so explicitenv={...}overrides preserve inherited variables such asPATH. - 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
- Fix skill installation command