From 92548f043547b0ddac95921ece020e69f7c12c5f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 20 Jul 2026 11:02:00 +0000
Subject: [PATCH] feat(deps): Update to claude-agent-sdk 0.3.215 (#890)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the minor group with 7 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
|
[@anthropic-ai/claude-agent-sdk](https://github.com/anthropics/claude-agent-sdk-typescript)
| `0.3.207` | `0.3.212` |
|
[@anthropic-ai/sdk](https://github.com/anthropics/anthropic-sdk-typescript)
| `0.111.0` | `0.112.1` |
|
[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)
| `8.63.0` | `8.64.0` |
|
[@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)
| `8.63.0` | `8.64.0` |
|
[express-rate-limit](https://github.com/express-rate-limit/express-rate-limit)
| `8.5.2` | `8.6.0` |
| [obug](https://github.com/sxzz/obug) | `2.1.3` | `2.1.4` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) |
`8.1.4` | `8.1.5` |
Updates `@anthropic-ai/claude-agent-sdk` from 0.3.207 to 0.3.212
Release notes
Sourced from @anthropic-ai/claude-agent-sdk's
releases.
v0.3.212
What's changed
- Fixed dash-leading
resumeSessionAt and
sessionId values being passed to the CLI as separate argv
tokens; both now use equals-form (--flag=value)
- Agent tool output now includes the resolved model when a mid-turn
model swap changed the subagent's model
Update
npm install @anthropic-ai/claude-agent-sdk@0.3.212
# or
yarn add @anthropic-ai/claude-agent-sdk@0.3.212
# or
pnpm add @anthropic-ai/claude-agent-sdk@0.3.212
# or
bun add @anthropic-ai/claude-agent-sdk@0.3.212
v0.3.211
What's changed
- Fixed
--replay-user-messages with
--include-partial-messages emitting the turn-start user
replay after the first content block instead of before the turn's
content events
- Added
SDKAssistantMessage.timestamp (ISO-8601) to the
live stream, matching SDKUserMessage; older emitters omit
it, consumers should fall back to receive time
- Added rate-limit message prefix buckets
(
USAGE_LIMIT_ERROR_PREFIXES and siblings) as
@alpha exports for classifying rate-limit messages without
hand-mirrored lists
- Improved process-exit errors to include the CLI's stderr output, so
a failed child reports its actual cause instead of only an exit
code
Update
npm install @anthropic-ai/claude-agent-sdk@0.3.211
# or
yarn add @anthropic-ai/claude-agent-sdk@0.3.211
# or
pnpm add @anthropic-ai/claude-agent-sdk@0.3.211
# or
bun add @anthropic-ai/claude-agent-sdk@0.3.211
v0.3.210
What's changed
- Added
timedOutAfterMs to BashToolOutput,
set when a command is auto-backgrounded on timeout
Update
npm install @anthropic-ai/claude-agent-sdk@0.3.210
# or
yarn add @anthropic-ai/claude-agent-sdk@0.3.210
# or
</tr></table>
... (truncated)
Changelog
Sourced from @anthropic-ai/claude-agent-sdk's
changelog.
0.3.212
- Fixed dash-leading
resumeSessionAt and
sessionId values being passed to the CLI as separate argv
tokens; both now use equals-form (--flag=value)
- Agent tool output now includes the resolved model when a mid-turn
model swap changed the subagent's model
0.3.211
- Fixed
--replay-user-messages with
--include-partial-messages emitting the turn-start user
replay after the first content block instead of before the turn's
content events
- Added
SDKAssistantMessage.timestamp (ISO-8601) to the
live stream, matching SDKUserMessage; older emitters omit
it, consumers should fall back to receive time
- Added rate-limit message prefix buckets
(
USAGE_LIMIT_ERROR_PREFIXES and siblings) as
@alpha exports for classifying rate-limit messages without
hand-mirrored lists
- Improved process-exit errors to include the CLI's stderr output, so
a failed child reports its actual cause instead of only an exit
code
0.3.210
- Added
timedOutAfterMs to BashToolOutput,
set when a command is auto-backgrounded on timeout
0.3.209
- Updated to parity with Claude Code v2.1.209
0.3.208
- Fixed a caller abort during a pending SDK hook callback being
converted into hook success, which let PreToolUse-gated tools execute
after the abort
- Fixed a per-query resource leak in the SDK's process tracking when
spawning the CLI fails (nonexistent or inaccessible executable
path)
- Fixed an SDK
UserPromptSubmit hook callback exceeding
its timeout killing the entire query with an empty error; it now blocks
the prompt with a clear timeout message and the session continues
- Fixed
extraArgs values that look like flags (e.g.
resume: '--version') being parsed as their own CLI flags;
dash-leading values are now bound with equals-form argv
- Fixed an abort-listener leak: streaming queries sharing one
AbortController no longer accumulate abort
listeners on its signal after each completed query
- Fixed
createSdkMcpServer docs pointing at a nonexistent
env var; the MCP tool-call timeout knob is
MCP_TOOL_TIMEOUT
- Fixed an uncaught exception when writing to stdin after the Claude
Code subprocess has exited
Commits
Updates `@anthropic-ai/sdk` from 0.111.0 to 0.112.1
Release notes
Sourced from @anthropic-ai/sdk's
releases.
sdk: v0.112.1
0.112.1 (2026-07-16)
Full Changelog: sdk-v0.112.0...sdk-v0.112.1
sdk: v0.112.0
0.112.0 (2026-07-16)
Full Changelog: sdk-v0.111.0...sdk-v0.112.0
Features
- api: add support for MCP Tunnels (597ac41)
Changelog
Sourced from @anthropic-ai/sdk's
changelog.
0.112.1 (2026-07-16)
Full Changelog: sdk-v0.112.0...sdk-v0.112.1
0.112.0 (2026-07-16)
Full Changelog: sdk-v0.111.0...sdk-v0.112.0
Features
- api: add support for MCP Tunnels (597ac41)
Commits
Updates `@typescript-eslint/eslint-plugin` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/eslint-plugin's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/eslint-plugin's
changelog.
8.64.0 (2026-07-13)
🚀 Features
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
414d9ab
chore(release): publish 8.64.0
bcfe16f
feat(eslint-plugin): [no-loop-func] support using /
await using declarati...
5b5bfde
fix(eslint-plugin): [require-array-sort-compare] handle constrained
arrays (#...
321856c
chore: cleanup cspell config (#12526)
b418cf5
feat(typescript-estree): throw for invalid definite assignment in class
prope...
737de2b
docs: align unified-signatures correct example parameter (#12506)
a63c17a
docs: fix shadowed parameter name in unified-signatures example (#12502)
- See full diff in compare
view
Updates `@typescript-eslint/parser` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/parser's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/parser's
changelog.
8.64.0 (2026-07-13)
This was a version bump only for parser to align it with other
projects, there were no code changes.
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
Updates `@anthropic-ai/claude-agent-sdk-darwin-arm64` from 0.3.207 to
0.3.212
Updates `@anthropic-ai/claude-agent-sdk-darwin-x64` from 0.3.207 to
0.3.212
Updates `@anthropic-ai/claude-agent-sdk-linux-arm64` from 0.3.207 to
0.3.212
Updates `@anthropic-ai/claude-agent-sdk-linux-arm64-musl` from 0.3.207
to 0.3.212
Updates `@anthropic-ai/claude-agent-sdk-linux-x64` from 0.3.207 to
0.3.212
Updates `@anthropic-ai/claude-agent-sdk-linux-x64-musl` from 0.3.207 to
0.3.212
Updates `@anthropic-ai/claude-agent-sdk-win32-arm64` from 0.3.207 to
0.3.212
Updates `@anthropic-ai/claude-agent-sdk-win32-x64` from 0.3.207 to
0.3.212
Updates `@typescript-eslint/project-service` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/project-service's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/project-service's
changelog.
8.64.0 (2026-07-13)
This was a version bump only for project-service to align it with
other projects, there were no code changes.
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
Updates `@typescript-eslint/scope-manager` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/scope-manager's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/scope-manager's
changelog.
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
Updates `@typescript-eslint/tsconfig-utils` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/tsconfig-utils's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/tsconfig-utils's
changelog.
8.64.0 (2026-07-13)
This was a version bump only for tsconfig-utils to align it with
other projects, there were no code changes.
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
Updates `@typescript-eslint/type-utils` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/type-utils's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/type-utils's
changelog.
8.64.0 (2026-07-13)
This was a version bump only for type-utils to align it with other
projects, there were no code changes.
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
Updates `@typescript-eslint/types` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/types's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/types's
changelog.
8.64.0 (2026-07-13)
This was a version bump only for types to align it with other
projects, there were no code changes.
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
Updates `@typescript-eslint/typescript-estree` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/typescript-estree's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/typescript-estree's
changelog.
8.64.0 (2026-07-13)
🚀 Features
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
- support parsing
import defer (#12513)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
414d9ab
chore(release): publish 8.64.0
b418cf5
feat(typescript-estree): throw for invalid definite assignment in class
prope...
07af21b
feat: support parsing import defer (#12513)
- See full diff in compare
view
Updates `@typescript-eslint/utils` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/utils's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/utils's
changelog.
8.64.0 (2026-07-13)
This was a version bump only for utils to align it with other
projects, there were no code changes.
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
Updates `@typescript-eslint/visitor-keys` from 8.63.0 to 8.64.0
Release notes
Sourced from @typescript-eslint/visitor-keys's
releases.
v8.64.0
8.64.0 (2026-07-13)
🚀 Features
- support parsing
import defer (#12513)
- eslint-plugin: [no-loop-func] support
using / await using declarations and deprecate
the rule (#12500)
- typescript-estree: throw for invalid definite
assignment in class properties (#12543)
🩹 Fixes
- eslint-plugin: [require-array-sort-compare] handle
constrained arrays (#12512)
❤️ Thank You
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Changelog
Sourced from @typescript-eslint/visitor-keys's
changelog.
8.64.0 (2026-07-13)
This was a version bump only for visitor-keys to align it with other
projects, there were no code changes.
See GitHub
Releases for more information.
You can read about our versioning
strategy and releases on our
website.
Commits
Updates `express-rate-limit` from 8.5.2 to 8.6.0
Release notes
Sourced from express-rate-limit's
releases.
v8.6.0
You can view the changelog here.
Commits
fffb3c4
8.6.0
f366b2d
docs: debugging guide, time constants, & v8.6.0 changelog (#652)
593ddd2
fix: make debug output easier to read (#653)
ef8c129
fix: Pin safe version of @asyncapi/specs dev dep (#659)
7b05e0d
feat: add time constants to support more readable values for windowMs
(#655)
863e730
chore(deps-dev): bump the development-dependencies group with 3 updates
(#657)
e0e711e
fix: correct wording in usage documentation for express-rate-limit (#656)
fcd3aa7
chore(deps-dev): bump the development-dependencies group with 3 updates
(#651)
99d4298
feat: use debug for debug logging (#641)
23e4dde
feat: Run validations once each (#650)
- Additional commits viewable in compare
view
Updates `obug` from 2.1.3 to 2.1.4
Release notes
Sourced from obug's
releases.
v2.1.4
🐞 Bug Fixes
Commits
Updates `vite` from 8.1.4 to 8.1.5
Release notes
Sourced from vite's
releases.
v8.1.5
Please refer to CHANGELOG.md
for details.
Changelog
Sourced from vite's
changelog.
8.1.5
(2026-07-16)
Bug Fixes
- bundled-dev: avoid duplicated
buildEnd
(#22931)
(8100320)
- client: overlay error message format align rolldown
(#22869)
(5a72b87)
- deps: update all non-major dependencies (#22921)
(fef682d)
- deps: update rolldown-related dependencies (#22922)
(3c345e4)
- module-runner: don't crash stack-trace source
mapping when globalThis.Buffer is absent (#22945)
(f8b38e3)
- optimizer: respect importer module format for
dynamic import interop with CJS deps (#22951)
(6c08c39)
- ssr: scope switch-case declarations to the switch,
not the function (#22893)
(b59a73f)
Documentation
- build: fix incorrect
@default for
build.cssMinify (#22948)
(c88c236)
- build: fix incorrect
@default for
build.lib.formats (#22911)
(369ed60)
Tests
- avoid scanner scanning all files under
__tests__ (#22912)
(c961cae)
Commits
5e7fe12
release: v8.1.5
6c08c39
fix(optimizer): respect importer module format for dynamic import
interop wit...
5a72b87
fix(client): overlay error message format align rolldown (#22869)
f8b38e3
fix(module-runner): don't crash stack-trace source mapping when
globalThis.Bu...
8100320
fix(bundled-dev): avoid duplicated buildEnd (#22931)
c88c236
docs(build): fix incorrect @default for build.cssMinify (#22948)
b59a73f
fix(ssr): scope switch-case declarations to the switch, not the function
(#22...
fef682d
fix(deps): update all non-major dependencies (#22921)
3c345e4
fix(deps): update rolldown-related dependencies (#22922)
369ed60
docs(build): fix incorrect @default for build.lib.formats
(#22911)
- Additional commits viewable in compare
view
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ben Brandt
---
package-lock.json | 335 ++++++++++++++++++------------------
package.json | 8 +-
src/acp-agent.ts | 49 +++++-
src/tests/acp-agent.test.ts | 57 ++++++
4 files changed, 270 insertions(+), 179 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1ffbc038..6fbfaedd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,19 +10,19 @@
"license": "Apache-2.0",
"dependencies": {
"@agentclientprotocol/sdk": "1.2.1",
- "@anthropic-ai/claude-agent-sdk": "0.3.207",
+ "@anthropic-ai/claude-agent-sdk": "0.3.215",
"zod": "^3.25.0 || ^4.0.0"
},
"bin": {
"claude-agent-acp": "dist/index.js"
},
"devDependencies": {
- "@anthropic-ai/sdk": "0.111.0",
+ "@anthropic-ai/sdk": "0.112.3",
"@eslint/js": "10.0.1",
"@tsconfig/node22": "22.0.5",
"@types/node": "26.1.1",
- "@typescript-eslint/eslint-plugin": "8.63.0",
- "@typescript-eslint/parser": "8.63.0",
+ "@typescript-eslint/eslint-plugin": "8.64.0",
+ "@typescript-eslint/parser": "8.64.0",
"eslint": "10.7.0",
"eslint-config-prettier": "10.1.8",
"globals": "17.7.0",
@@ -45,22 +45,22 @@
}
},
"node_modules/@anthropic-ai/claude-agent-sdk": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.207.tgz",
- "integrity": "sha512-y0PkQRmQBi96MHiN5Xzfq+GaddxCZCqI/cXEQBLYBLXGa4i1nDSlulQqkMBj2RorrrSGQJ6Wdw+uhu6OfHNPzA==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.215.tgz",
+ "integrity": "sha512-fBktJCwfu8ZeOSnnSLcWVkIHyp/pjouJsGVGtRnQ0HkcRuOReIbRcB/6n2O5dYV331Ok+MfdGHiPaTORj7pCtQ==",
"license": "SEE LICENSE IN README.md",
"engines": {
"node": ">=18.0.0"
},
"optionalDependencies": {
- "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.207",
- "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.207",
- "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.207",
- "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.207",
- "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.207",
- "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.207",
- "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.207",
- "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.207"
+ "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.215",
+ "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.215",
+ "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.215",
+ "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.215",
+ "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.215",
+ "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.215",
+ "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.215",
+ "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.215"
},
"peerDependencies": {
"@anthropic-ai/sdk": ">=0.93.0",
@@ -69,9 +69,9 @@
}
},
"node_modules/@anthropic-ai/claude-agent-sdk-darwin-arm64": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.207.tgz",
- "integrity": "sha512-08xSo1FDx8h0aLhL5tvcRxa2SMmcUV3aDWeZiEJVTclyiDAs61BgTjAxCg+SZcu1CndjJO8cfO0yM5dhamxz3g==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.215.tgz",
+ "integrity": "sha512-KIOe3N/ypVIdsI7fnJUHT0Djei1RH01TbxK6LI2mgoHKZ6NVDt/Q9kQ1+On3b/l899RhE6C1SMAiQ0iB4sbkjA==",
"cpu": [
"arm64"
],
@@ -82,9 +82,9 @@
]
},
"node_modules/@anthropic-ai/claude-agent-sdk-darwin-x64": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.207.tgz",
- "integrity": "sha512-1o7K4EYqyCixZ/oeOZSh7AzSy6TM86xoOuf4VuORjPSS31hBnoqY0NGZd27+2VDs9LGtsdksmsTqcNGx9xd1hA==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.215.tgz",
+ "integrity": "sha512-cyjfQgkgF/zZbSJP6uJpPXoIJE/gYFOgz+u/SjklvakcO56BpEnsbdl/oHVu5G8GCw69V11hKFZ8T8YsVOiv2w==",
"cpu": [
"x64"
],
@@ -95,9 +95,9 @@
]
},
"node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.207.tgz",
- "integrity": "sha512-X4uezYOifDiNTTmmugfRCdg3nNamrr1LFRY9hg30vWYTShL+bbN+nfC3KaFfSYCl4GTtsEEUbYdOTC2F3bBpcA==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.215.tgz",
+ "integrity": "sha512-lb7ayxZeWLiEhlOjzF8oX+DdJHrVgR1hvwkwRdYo+LgTT3hSxv6h43sheS3hZ1I9LYvOTKWa2E0O1EnffOzyCg==",
"cpu": [
"arm64"
],
@@ -111,9 +111,9 @@
]
},
"node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64-musl": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.207.tgz",
- "integrity": "sha512-oPj+g2DslhH4Y9nCTs7al4t9wZv78FZwLFQwOCg99BXuz1o0ZOpKmxyvR7J9eBR+GPszeMMS8gYplQTiZC9o2w==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.215.tgz",
+ "integrity": "sha512-dXMR8afbZCFWUKQGyvn9swDYYvMtZWGqqbZ994ahS7HvGN4AgF63uvojHVErW1Xxn2601Bm+eCYQt+BSLk6iZQ==",
"cpu": [
"arm64"
],
@@ -127,9 +127,9 @@
]
},
"node_modules/@anthropic-ai/claude-agent-sdk-linux-x64": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.207.tgz",
- "integrity": "sha512-Kg6BPH8Ee0ny/oEUWJmvT1jCRBne4jVpRSOMsJcYp1Fav1rMEgpU219oJJs+LWwx4ifuuLtNWedqJNnVw7mnKg==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.215.tgz",
+ "integrity": "sha512-Iivu3oq7hIEc81dpTu1W0GJ/kCE8TRtj9tb+wdZCp1grsuGEJiS3Bh1tLxCrhLOTDxPggK6xZGVN/RPJh84ywA==",
"cpu": [
"x64"
],
@@ -143,9 +143,9 @@
]
},
"node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.207.tgz",
- "integrity": "sha512-uRv+D5oG/7EYr41FAJ9IPo2pZYBe2ZMaA6nSHCeizsgPxCSMtl5bNppmU21+jZJvo4hivObEgkGFERAhdGqygg==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.215.tgz",
+ "integrity": "sha512-jSmrjSupnWtw8/I1Wmr32J6lB02gFXytmNbse4kcLEgH6UGtdZckKnDVnh/ejHma4QE9WGSn54xLsSFnjHVrRg==",
"cpu": [
"x64"
],
@@ -159,9 +159,9 @@
]
},
"node_modules/@anthropic-ai/claude-agent-sdk-win32-arm64": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.207.tgz",
- "integrity": "sha512-9fWpUzfkXlPAg2tf8JpQe7w9avFaomAUbfAwyAmykQgSIf66LwaJjvI5hNqhNqczRKyfsXPn3ei2S5HKlmFP+Q==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.215.tgz",
+ "integrity": "sha512-9Xtpwd4DzfObOycDkfYfQ7clhWoFu2fmRqmMZWyQRyk2mEHWR3gLBwUgpfjYb6m4Fke9eTmIx2lXDG2i1OaBzA==",
"cpu": [
"arm64"
],
@@ -172,9 +172,9 @@
]
},
"node_modules/@anthropic-ai/claude-agent-sdk-win32-x64": {
- "version": "0.3.207",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.207.tgz",
- "integrity": "sha512-YPjVT0q6aXEM2MgN4CI6/9fqiTXwETji+4NoPOzCYuqAkhXZqp30Jsk7/NHqYGNNSfURKrsuAoliKB0rsbpbjg==",
+ "version": "0.3.215",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.215.tgz",
+ "integrity": "sha512-DkPwdc1zS6KIf6YNKXhlqAw95wnjG8Uh5bSXRrFA+MxsaWedlVFeja6zFM5uZ84ouGrcHEeU3PGUcGaKR1U4cQ==",
"cpu": [
"x64"
],
@@ -185,9 +185,9 @@
]
},
"node_modules/@anthropic-ai/sdk": {
- "version": "0.111.0",
- "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.111.0.tgz",
- "integrity": "sha512-1hUqKi+uJQoS5X90+InwHbFAXMvgq0DnsC5hVLEeSRaODiU5WvmqDAcVCmGS2wC0pN9Z8jtWCbWw7JLzeDdm/Q==",
+ "version": "0.112.3",
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.112.3.tgz",
+ "integrity": "sha512-wjcozJlitVIuBEw9cj/xBuRznwkhcLmXmNzlFoeHbh4AvrDG3HGZrdvEOTTmobcbhjGkfOpKbmDTCQ4s9LQvCg==",
"license": "MIT",
"dependencies": {
"json-schema-to-ts": "^3.1.1",
@@ -944,17 +944,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.63.0.tgz",
- "integrity": "sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.64.0.tgz",
+ "integrity": "sha512-CGvQPBxN3wZLu6Rz2kFUpZeoCm78xUic92ck39KPePkO1NPOwjCqdQnm5Q87tpWw9vcBvW8XLrDXjH9PWYtJ3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.63.0",
- "@typescript-eslint/type-utils": "8.63.0",
- "@typescript-eslint/utils": "8.63.0",
- "@typescript-eslint/visitor-keys": "8.63.0",
+ "@typescript-eslint/scope-manager": "8.64.0",
+ "@typescript-eslint/type-utils": "8.64.0",
+ "@typescript-eslint/utils": "8.64.0",
+ "@typescript-eslint/visitor-keys": "8.64.0",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.5.0"
@@ -967,22 +967,22 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.63.0",
+ "@typescript-eslint/parser": "^8.64.0",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.0"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.63.0.tgz",
- "integrity": "sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.64.0.tgz",
+ "integrity": "sha512-KA0OshtlcCCXmbfqyZkM5pV3/WNraJf7DkJRLpyrmwPtud57H5BDX7C3k0LPSPxpprfRL+cJDGabF10mvNCoCw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.63.0",
- "@typescript-eslint/types": "8.63.0",
- "@typescript-eslint/typescript-estree": "8.63.0",
- "@typescript-eslint/visitor-keys": "8.63.0",
+ "@typescript-eslint/scope-manager": "8.64.0",
+ "@typescript-eslint/types": "8.64.0",
+ "@typescript-eslint/typescript-estree": "8.64.0",
+ "@typescript-eslint/visitor-keys": "8.64.0",
"debug": "^4.4.3"
},
"engines": {
@@ -998,14 +998,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.63.0.tgz",
- "integrity": "sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.64.0.tgz",
+ "integrity": "sha512-tk4WpOJ6IEbGrVHaNmM0YRrwAD3exZlIK3iadQNAxh4YKk6jvUQ4ecq18n+v7+meh+cJ3j+D8nbk8sRKhlwLQg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.63.0",
- "@typescript-eslint/types": "^8.63.0",
+ "@typescript-eslint/tsconfig-utils": "^8.64.0",
+ "@typescript-eslint/types": "^8.64.0",
"debug": "^4.4.3"
},
"engines": {
@@ -1020,14 +1020,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.63.0.tgz",
- "integrity": "sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.64.0.tgz",
+ "integrity": "sha512-CXEaFdYXjSTgKhisNkwCcJwTP8Pl+fmRrEQrri4nm3vU743bALrxzLmq7fHG/7e6a5xO0lDYeURpZmBuhHk54w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.63.0",
- "@typescript-eslint/visitor-keys": "8.63.0"
+ "@typescript-eslint/types": "8.64.0",
+ "@typescript-eslint/visitor-keys": "8.64.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1038,9 +1038,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.63.0.tgz",
- "integrity": "sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.64.0.tgz",
+ "integrity": "sha512-2yo8rRNKuzbVWQp5kslhANqZ2uDAeROQHBRZNPu8JDsHmeFNj/XJJhX/FhNUWmkHHvoNsKa6+tHJiig87EzsQw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1055,15 +1055,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.63.0.tgz",
- "integrity": "sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.64.0.tgz",
+ "integrity": "sha512-XWG4Fmmv/6SvyS9nH8jWrKs6terwJvE8cyRt1CzYYqzp9OrPhCT4cMc/f7C6RZCwG+qMmiffJS1/qJP8G1URtg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.63.0",
- "@typescript-eslint/typescript-estree": "8.63.0",
- "@typescript-eslint/utils": "8.63.0",
+ "@typescript-eslint/types": "8.64.0",
+ "@typescript-eslint/typescript-estree": "8.64.0",
+ "@typescript-eslint/utils": "8.64.0",
"debug": "^4.4.3",
"ts-api-utils": "^2.5.0"
},
@@ -1080,9 +1080,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.63.0.tgz",
- "integrity": "sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.64.0.tgz",
+ "integrity": "sha512-qjhfuTfLXjA4IOzXvz0rTjT01BqEiIgPoUeMwiEjnaHKJMTNo8rH5pYW1a2L/0Dnux2fPC85AeyJoWaGa8WxTA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1094,16 +1094,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.63.0.tgz",
- "integrity": "sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.64.0.tgz",
+ "integrity": "sha512-Pztpsn1aCE1oWDvDEfUk31nngvvF7vUB5SwHFEaZIFpvw7WJtqUHHL4plBZDA9HfWJJjL13BdG0YrJInTUvoVA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.63.0",
- "@typescript-eslint/tsconfig-utils": "8.63.0",
- "@typescript-eslint/types": "8.63.0",
- "@typescript-eslint/visitor-keys": "8.63.0",
+ "@typescript-eslint/project-service": "8.64.0",
+ "@typescript-eslint/tsconfig-utils": "8.64.0",
+ "@typescript-eslint/types": "8.64.0",
+ "@typescript-eslint/visitor-keys": "8.64.0",
"debug": "^4.4.3",
"minimatch": "^10.2.2",
"semver": "^7.7.3",
@@ -1122,16 +1122,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.63.0.tgz",
- "integrity": "sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.64.0.tgz",
+ "integrity": "sha512-aJUGVB3+U0htrrCjoA8qukw8cm8fNCGAxK/tVoS70k8aeb7DETKeFozRiVFIwEeN9WJLsjaP3ph8I60tY2XZoQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.63.0",
- "@typescript-eslint/types": "8.63.0",
- "@typescript-eslint/typescript-estree": "8.63.0"
+ "@typescript-eslint/scope-manager": "8.64.0",
+ "@typescript-eslint/types": "8.64.0",
+ "@typescript-eslint/typescript-estree": "8.64.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1146,13 +1146,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.63.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.63.0.tgz",
- "integrity": "sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==",
+ "version": "8.64.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.64.0.tgz",
+ "integrity": "sha512-mrtuL8Nsn6gi2H4mo5KMTp823M+3Q19Ew/i+Zlikq20tIMm99C3Ez0dCmkWWnxut20esQvTg8aUSEhMcAOXhEw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.63.0",
+ "@typescript-eslint/types": "8.64.0",
"eslint-visitor-keys": "^5.0.0"
},
"engines": {
@@ -2069,12 +2069,13 @@
}
},
"node_modules/express-rate-limit": {
- "version": "8.5.2",
- "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz",
- "integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.0.tgz",
+ "integrity": "sha512-XKJXDsASUOo0LLtFwW5hCcQGH0N4WQc/Rn8/Pvoia+TJFOkkFPvrtW9lZOeeNcxQJspvOIERMwiRLsVFlhHEkA==",
"license": "MIT",
"peer": true,
"dependencies": {
+ "debug": "^4.4.3",
"ip-address": "^10.2.0"
},
"engines": {
@@ -2114,9 +2115,9 @@
"license": "Unlicense"
},
"node_modules/fast-uri": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz",
- "integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz",
+ "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==",
"funding": [
{
"type": "github",
@@ -2371,9 +2372,9 @@
}
},
"node_modules/hono": {
- "version": "4.12.30",
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.30.tgz",
- "integrity": "sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog==",
+ "version": "4.12.31",
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.31.tgz",
+ "integrity": "sha512-zJIHFrl6bq3RDd2YusFNCDlM8qUprxKswyi/OPzPyzKDdyBXDqWx8bZlZ7R+saTdSTatUmb3O7K4SspGPaEOQg==",
"license": "MIT",
"peer": true,
"engines": {
@@ -2419,9 +2420,9 @@
}
},
"node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
+ "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2577,9 +2578,9 @@
}
},
"node_modules/lightningcss": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
- "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
+ "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==",
"dev": true,
"license": "MPL-2.0",
"dependencies": {
@@ -2593,23 +2594,23 @@
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
- "lightningcss-android-arm64": "1.32.0",
- "lightningcss-darwin-arm64": "1.32.0",
- "lightningcss-darwin-x64": "1.32.0",
- "lightningcss-freebsd-x64": "1.32.0",
- "lightningcss-linux-arm-gnueabihf": "1.32.0",
- "lightningcss-linux-arm64-gnu": "1.32.0",
- "lightningcss-linux-arm64-musl": "1.32.0",
- "lightningcss-linux-x64-gnu": "1.32.0",
- "lightningcss-linux-x64-musl": "1.32.0",
- "lightningcss-win32-arm64-msvc": "1.32.0",
- "lightningcss-win32-x64-msvc": "1.32.0"
+ "lightningcss-android-arm64": "1.33.0",
+ "lightningcss-darwin-arm64": "1.33.0",
+ "lightningcss-darwin-x64": "1.33.0",
+ "lightningcss-freebsd-x64": "1.33.0",
+ "lightningcss-linux-arm-gnueabihf": "1.33.0",
+ "lightningcss-linux-arm64-gnu": "1.33.0",
+ "lightningcss-linux-arm64-musl": "1.33.0",
+ "lightningcss-linux-x64-gnu": "1.33.0",
+ "lightningcss-linux-x64-musl": "1.33.0",
+ "lightningcss-win32-arm64-msvc": "1.33.0",
+ "lightningcss-win32-x64-msvc": "1.33.0"
}
},
"node_modules/lightningcss-android-arm64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
- "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz",
+ "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==",
"cpu": [
"arm64"
],
@@ -2628,9 +2629,9 @@
}
},
"node_modules/lightningcss-darwin-arm64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
- "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz",
+ "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==",
"cpu": [
"arm64"
],
@@ -2649,9 +2650,9 @@
}
},
"node_modules/lightningcss-darwin-x64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
- "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz",
+ "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==",
"cpu": [
"x64"
],
@@ -2670,9 +2671,9 @@
}
},
"node_modules/lightningcss-freebsd-x64": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
- "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz",
+ "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==",
"cpu": [
"x64"
],
@@ -2691,9 +2692,9 @@
}
},
"node_modules/lightningcss-linux-arm-gnueabihf": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
- "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz",
+ "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==",
"cpu": [
"arm"
],
@@ -2712,9 +2713,9 @@
}
},
"node_modules/lightningcss-linux-arm64-gnu": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
- "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz",
+ "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==",
"cpu": [
"arm64"
],
@@ -2736,9 +2737,9 @@
}
},
"node_modules/lightningcss-linux-arm64-musl": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
- "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz",
+ "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==",
"cpu": [
"arm64"
],
@@ -2760,9 +2761,9 @@
}
},
"node_modules/lightningcss-linux-x64-gnu": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
- "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz",
+ "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==",
"cpu": [
"x64"
],
@@ -2784,9 +2785,9 @@
}
},
"node_modules/lightningcss-linux-x64-musl": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
- "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz",
+ "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==",
"cpu": [
"x64"
],
@@ -2808,9 +2809,9 @@
}
},
"node_modules/lightningcss-win32-arm64-msvc": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
- "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz",
+ "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==",
"cpu": [
"arm64"
],
@@ -2829,9 +2830,9 @@
}
},
"node_modules/lightningcss-win32-x64-msvc": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
- "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz",
+ "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==",
"cpu": [
"x64"
],
@@ -3024,9 +3025,9 @@
}
},
"node_modules/obug": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz",
- "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz",
+ "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==",
"dev": true,
"funding": [
"https://github.com/sponsors/sxzz",
@@ -3188,9 +3189,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.19",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.19.tgz",
- "integrity": "sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==",
+ "version": "8.5.20",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.20.tgz",
+ "integrity": "sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug==",
"dev": true,
"funding": [
{
@@ -3208,7 +3209,7 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.12",
+ "nanoid": "^3.3.16",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -3826,16 +3827,16 @@
}
},
"node_modules/vite": {
- "version": "8.1.4",
- "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.4.tgz",
- "integrity": "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==",
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.5.tgz",
+ "integrity": "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==",
"dev": true,
"license": "MIT",
"dependencies": {
"lightningcss": "^1.32.0",
"picomatch": "^4.0.5",
- "postcss": "^8.5.16",
- "rolldown": "~1.1.4",
+ "postcss": "^8.5.17",
+ "rolldown": "~1.1.5",
"tinyglobby": "^0.2.17"
},
"bin": {
diff --git a/package.json b/package.json
index f94c28b4..a84c512b 100644
--- a/package.json
+++ b/package.json
@@ -64,16 +64,16 @@
},
"dependencies": {
"@agentclientprotocol/sdk": "1.2.1",
- "@anthropic-ai/claude-agent-sdk": "0.3.207",
+ "@anthropic-ai/claude-agent-sdk": "0.3.215",
"zod": "^3.25.0 || ^4.0.0"
},
"devDependencies": {
- "@anthropic-ai/sdk": "0.111.0",
+ "@anthropic-ai/sdk": "0.112.3",
"@eslint/js": "10.0.1",
"@tsconfig/node22": "22.0.5",
"@types/node": "26.1.1",
- "@typescript-eslint/eslint-plugin": "8.63.0",
- "@typescript-eslint/parser": "8.63.0",
+ "@typescript-eslint/eslint-plugin": "8.64.0",
+ "@typescript-eslint/parser": "8.64.0",
"eslint": "10.7.0",
"eslint-config-prettier": "10.1.8",
"globals": "17.7.0",
diff --git a/src/acp-agent.ts b/src/acp-agent.ts
index dc9e6d44..bec6c011 100644
--- a/src/acp-agent.ts
+++ b/src/acp-agent.ts
@@ -59,6 +59,7 @@ import {
AgentInfo,
CanUseTool,
deleteSession,
+ EffortLevel,
FastModeState,
getSessionInfo,
getSessionMessages,
@@ -74,7 +75,6 @@ import {
PermissionUpdate,
Query,
query,
- Settings,
SDKAssistantMessageError,
SDKMessage,
SDKMessageOrigin,
@@ -3503,7 +3503,20 @@ export class ClaudeAcpAgent {
_meta: {
claudeCode: {
toolName: message.tool_name,
- toolResponse: { elapsedTimeSeconds: message.elapsed_time_seconds },
+ toolResponse: {
+ elapsedTimeSeconds: message.elapsed_time_seconds,
+ // For Agent/Task calls: the subagent's type, and — when
+ // the subagent is waiting out an API rate-limit retry —
+ // the SDK's retry counters (attempt, max_retries,
+ // retry_delay_ms, …), forwarded verbatim so clients can
+ // show why a spawn looks stalled.
+ ...(message.subagent_type !== undefined && {
+ subagentType: message.subagent_type,
+ }),
+ ...(message.subagent_retry !== undefined && {
+ subagentRetry: message.subagent_retry,
+ }),
+ },
},
} satisfies ToolUpdateMeta,
},
@@ -4185,7 +4198,11 @@ export class ClaudeAcpAgent {
}
canUseTool(sessionId: string): CanUseTool {
- return async (toolName, toolInput, { signal, suggestions, toolUseID, agentID }) => {
+ return async (
+ toolName,
+ toolInput,
+ { signal, suggestions, toolUseID, agentID, matchedAskRule },
+ ) => {
const alwaysAllowLabel = describeAlwaysAllow(suggestions, toolName);
const supportsTerminalOutput = this.clientCapabilities?._meta?.["terminal_output"] === true;
const session = this.sessions[sessionId];
@@ -4321,7 +4338,14 @@ export class ClaudeAcpAgent {
}
}
- if (session.modes.currentModeId === "bypassPermissions") {
+ // In bypass mode the CLI skips permission checks itself; the asks that
+ // still reach canUseTool are the ones it insists on prompting for even
+ // under --dangerously-skip-permissions. Keep auto-allowing those —
+ // bypass means bypass — EXCEPT rule-forced asks (`matchedAskRule`): the
+ // user explicitly configured a permissions.ask rule for this tool, and
+ // the SDK's guidance is that hosts running auto-approval must treat such
+ // asks as a human prompt. Fall through to the normal request below.
+ if (session.modes.currentModeId === "bypassPermissions" && !matchedAskRule) {
return {
behavior: "allow",
updatedInput: toolInput,
@@ -5306,7 +5330,7 @@ export class ClaudeAcpAgent {
initialEffort.currentValue !== "default"
) {
await q.applyFlagSettings({
- effortLevel: initialEffort.currentValue as Settings["effortLevel"],
+ effortLevel: toSdkEffortLevel(initialEffort.currentValue),
});
}
// Seed the context window from the SDK's authoritative report. Text
@@ -5590,9 +5614,12 @@ function buildAvailableModes(modelInfo: ModelInfo | undefined): SessionModeState
// and only clears a key when an explicit `null` is sent — see
// `applyFlagSettings` in @anthropic-ai/claude-agent-sdk. Mapping both the
// `"default"` sentinel and `undefined` (effort option absent for the model) to
-// `null` ensures any previously-applied flag is actually cleared.
-function toSdkEffortLevel(value: string | undefined): Settings["effortLevel"] | null {
- return value === undefined || value === "default" ? null : (value as Settings["effortLevel"]);
+// `null` ensures any previously-applied flag is actually cleared. Typed as
+// `EffortLevel` (not `Settings["effortLevel"]`): the picker offers whatever
+// `supportedEffortLevels` reports, which includes the session-scoped `"max"`
+// that the persisted Settings shape deliberately excludes.
+function toSdkEffortLevel(value: string | undefined): EffortLevel | null {
+ return value === undefined || value === "default" ? null : (value as EffortLevel);
}
// `supportedAgents()` always returns Claude Code's built-in subagents — the
@@ -6349,6 +6376,12 @@ export function promptToClaude(prompt: PromptRequest): SDKUserMessage {
},
session_id: prompt.sessionId,
parent_tool_use_id: null,
+ // ACP prompts are the user's own input relayed by the client. Stamp the
+ // provenance explicitly: per the SDK, a host wrapping keyboard input must
+ // send `{kind: "human"}` — an absent `origin` is treated as unattributed
+ // and fails closed at the CLI's strict isHuman() trust gates (e.g. the
+ // ultracode keyword opt-in honors only human-originated turns).
+ origin: { kind: "human" },
};
}
diff --git a/src/tests/acp-agent.test.ts b/src/tests/acp-agent.test.ts
index 8ac9fdcb..8fca5796 100644
--- a/src/tests/acp-agent.test.ts
+++ b/src/tests/acp-agent.test.ts
@@ -2300,6 +2300,63 @@ describe("tool_call emitted before permission request", () => {
});
});
+describe("canUseTool in bypassPermissions mode", () => {
+ function setup() {
+ const events: string[] = [];
+ const mockClient = {
+ sessionUpdate: async () => {},
+ requestPermission: async () => {
+ events.push("permission");
+ return { outcome: { outcome: "selected", optionId: "allow" } };
+ },
+ } as unknown as AcpClient;
+ const agent = new ClaudeAcpAgent(mockClient, { log: () => {}, error: () => {} });
+ agent.sessions["session-1"] = mockSessionState({
+ modes: { currentModeId: "bypassPermissions", availableModes: [] },
+ });
+ // The tool_call was already surfaced by the streamed tool_use chunk, so
+ // the permission flow (when taken) goes straight to requestPermission.
+ agent.sessions["session-1"]!.emittedToolCalls.add("tool-1");
+ return { agent, events };
+ }
+
+ it("auto-allows asks that carry no matchedAskRule", async () => {
+ const { agent, events } = setup();
+
+ const result = await agent.canUseTool("session-1")("Bash", { command: "ls" }, {
+ signal: new AbortController().signal,
+ suggestions: [],
+ toolUseID: "tool-1",
+ } as any);
+
+ expect(events).toEqual([]);
+ expect(result).toMatchObject({ behavior: "allow" });
+ });
+
+ // The asks that still reach canUseTool in bypass mode are the ones the CLI
+ // insists on prompting for even under --dangerously-skip-permissions. When
+ // one was forced by the user's own permissions.ask rule (matchedAskRule),
+ // honoring that rule beats bypass: it must go to the client instead of
+ // being silently auto-allowed.
+ it("prompts the client when the ask was forced by a permissions.ask rule", async () => {
+ const { agent, events } = setup();
+
+ const result = await agent.canUseTool("session-1")("Bash", { command: "terraform destroy" }, {
+ signal: new AbortController().signal,
+ suggestions: [],
+ toolUseID: "tool-1",
+ matchedAskRule: {
+ source: "projectSettings",
+ toolName: "Bash",
+ ruleContent: "Bash(terraform:*)",
+ },
+ } as any);
+
+ expect(events).toEqual(["permission"]);
+ expect(result).toMatchObject({ behavior: "allow" });
+ });
+});
+
describe("subagent permission attribution (issue #851)", () => {
// A background subagent's permission requests reach canUseTool with only an
// `agentID`; the streamed subagent messages carry `parent_tool_use_id`