## Release Summary — 2026-04-17

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.
