## Summary - negotiate native ACP subagent sessions and AIR async task support - map Claude Agent/Task lifecycle to independent child session streams - publish background workflow, monitor, MCP, and backgrounded shell work as async tasks - attach background shell tasks to their originating tool calls so clients can update one command card and open its output log - stream task progress and preserve running, paused, completed, failed, and stopped states - keep synchronous shell work, generic tools, and task notifications out of user message chunks - preserve typed session failures and root permission/elicitation requests - preserve the legacy generic Agent/Task representation and flattened transcript opt-ins for clients without native subagent capability ## Compatibility The published ACP SDK does not yet contain PR #1992 types, so the change isolates the temporary structural cast in `src/acp-subagents.ts`. Clients that do not negotiate native subagent sessions retain the existing generic tool-call fallback, including the historical `_meta["subagent-transcript"]` capability and `forwardSubagentText` session option. Async tasks use the negotiated `asyncTasks` AIR capability and remain invisible to clients that do not advertise it. Claude does not expose a safe targeted child-cancel primitive, therefore child `cancel` and `close` capabilities remain disabled. ## Validation - `npm run check` - `npm run build` - `env -u ANTHROPIC_BASE_URL npm run test:run` (830 passed, 20 skipped) - `npm run test:run -- src/tests/async-tasks.test.ts` (5 passed) --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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
- Structured errors, recovery, and warnings through the opt-in session failure extension
- Tool permission presentation, editable choices, and durable effects through the permission extension
Learn more about the Agent Client Protocol.
Subagent sessions
Subagents are exposed only after bilateral capability negotiation. Until the released ACP SDKs
preserve the draft clientCapabilities.subagents field, a supporting client may advertise
nativeSubagentSessions in _meta.jetbrains.air.capabilities; the adapter mirrors the capability
in its initialize response. The canonical field remains supported and takes precedence once it is
available. Without either client signal, Agent/Task lifecycle keeps its legacy ordinary ACP
tool-call representation and child interactions stay on the root session. Clients that use the
historical _meta["subagent-transcript"] capability or forwardSubagentText session option retain
the flattened child transcript behavior.
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).