## Summary - republish unfinished Task* plan snapshots when a follow-up prompt starts - avoid resurfacing fully completed historical plans on unrelated prompts - clear stale task state when Claude starts a fresh conversation - reconcile task state from authoritative TaskList results after resume or history compaction - consume structured Task* outputs during live sessions and parse Claude Code textual output when replaying history - reject logically failed TaskUpdate results instead of persisting the requested mutation - keep scanning structured tool output past unrelated JSON blocks - use Claude activeForm for in-progress TodoWrite and Task* entries This keeps ACP clients from losing an unfinished task list at prompt boundaries, restores state when incremental history is unavailable, and prevents plans from leaking across conversation resets. ## Tests - npm run test:run (713 passed, 20 skipped) - npm run check - npm run build - git diff --check
ACP adapter for the Claude Agent SDK
Use Claude Agent SDK from ACP-compatible clients!
This tool implements an ACP agent by using the official Claude Agent SDK, supporting:
- Context @-mentions
- Images
- Tool calls (with permission requests)
- Following
- Edit review
- TODO lists
- Nested subagent transcripts
- Interactive (and background) terminals
- Custom Slash commands
- Client MCP servers
- Session-scoped long-running goals through the provider-neutral goal extension
Learn more about the Agent Client Protocol.
Nested subagent transcripts
ACP 1.2 has no standard subagent tool kind or nested-message relationship. Clients that can render
nested transcripts can opt in with clientCapabilities._meta["subagent-transcript"] = true.
The agent then forwards subagent text, thinking, and tool calls, relating nested updates to the
launching Agent/Task call through _meta.claudeCode.parentToolUseId. Agent/Task calls are marked
with _meta.claudeCode.subagent = true.
Clients that do not advertise the capability retain the legacy flattened behavior. In both modes, the normal Agent/Task tool result is preserved as the protocol-compatible fallback.
Contribution Policy
This project does not require a Contributor License Agreement (CLA). Instead, contributions are accepted under the following terms:
By contributing to this project, you agree that your contributions will be licensed under the Apache License, Version 2.0. You affirm that you have the legal right to submit your work, that you are not including code you do not have rights to, and that you understand contributions are made without requiring a Contributor License Agreement (CLA).