Releases: vcoderun/acpkit
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
v0.8.1_2026-04-18
- Improve README file
v0.8.0_2026-04-18
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-acptopydantic-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:
ThreadExecutorBridgeSetToolMetadataBridgeIncludeToolReturnSchemasBridgeWebSearchBridgeWebFetchBridgeImageGenerationBridgeMcpCapabilityBridgeToolsetBridgePrefixToolsBridgeOpenAICompactionBridgeAnthropicCompactionBridge
- Re-exported the new bridges from the public
pydantic_acppackage surface.
ACP Projection And UX
- Added
WebToolProjectionMapandBuiltinToolProjectionMap. - 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 AnthropicCompactionPartprojection. - Fixed builtin tool result projection from
ModelResponsehistory. - Expanded the default tool classifier to recognize common web, image, and
mcp_server:*builtin
tool names.
Native Plan Mode
- Added
TaskPlanas the structured native-plan output surface for ACP plan mode. - Added a session-local
plan_generation_typeconfig option forPrepareToolsBridgewith
structuredandtoolsmodes. - Made
structuredthe default plan-mode behavior so native plan mode can require structured plan
generation without exposingacp_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=Trueexecution 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.pydelegation 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 throughAgentPlanUpdateplusacp_get_plan. - Clarified
FileSessionStorerecovery 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
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