Commit Graph

276 Commits

Author SHA1 Message Date
github-actions[bot] 43ef0e695a chore: version packages (#765)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents@1.13.0

### Minor Changes

- [#675](https://github.com/langchain-ai/deepagentsjs/pull/675)
[`ba8d4aa`](https://github.com/langchain-ai/deepagentsjs/commit/ba8d4aa71664c23027e57eee0fcaa2701d60408f)
Thanks [@hntrl](https://github.com/hntrl)! - feat(filesystem): add
recursive delete tool

- [#752](https://github.com/langchain-ai/deepagentsjs/pull/752)
[`b20d6ad`](https://github.com/langchain-ai/deepagentsjs/commit/b20d6adc3dc7caf01281832548a17f381561318c)
Thanks
[@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)!
- feat(deepagents): add `ForkedSubAgent` for subagent conversation
forking

Lets a subagent inherit the parent's conversation history instead of
only seeing the task description.

### Patch Changes

- [#759](https://github.com/langchain-ai/deepagentsjs/pull/759)
[`85a55e1`](https://github.com/langchain-ai/deepagentsjs/commit/85a55e14da6cb19877ddd81d898d78d6ededfe74)
Thanks [@christian-bromann](https://github.com/christian-bromann)! -
fix(deepagents): cap sandbox glob find so root searches cannot OOM the
host

Recursive glob listed every path under the search root (and with `-L`
could loop through `/proc/*/root`). Prune virtual filesystems and
soft-cap find output so a `glob("**/x", "/")` cannot exhaust the runtime
heap.

- [#768](https://github.com/langchain-ai/deepagentsjs/pull/768)
[`f124127`](https://github.com/langchain-ai/deepagentsjs/commit/f124127255fbd4e4b03eb84a4b39c70421a07e35)
Thanks [@casparb](https://github.com/casparb)! - fix(deepagents): accept
permission paths that exactly equal a composite route

A permission path equal to a single-file mount (e.g. `/instructions.md`)
was rejected when the backend supported execution, forcing users to
write `/instructions.md/**`. The route-scoping check now also accepts
the route root itself. Sibling prefixes such as `/workspace2/**` for
route `/workspace` remain rejected.

- [#769](https://github.com/langchain-ai/deepagentsjs/pull/769)
[`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0)
Thanks [@hntrl](https://github.com/hntrl)! - chore(deps): update
langgraph deps to track serialization fix
## deepagents-acp@0.1.26

### Patch Changes

- [#769](https://github.com/langchain-ai/deepagentsjs/pull/769)
[`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0)
Thanks [@hntrl](https://github.com/hntrl)! - chore(deps): update
langgraph deps to track serialization fix

- Updated dependencies
[[`85a55e1`](https://github.com/langchain-ai/deepagentsjs/commit/85a55e14da6cb19877ddd81d898d78d6ededfe74),
[`f124127`](https://github.com/langchain-ai/deepagentsjs/commit/f124127255fbd4e4b03eb84a4b39c70421a07e35),
[`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0),
[`ba8d4aa`](https://github.com/langchain-ai/deepagentsjs/commit/ba8d4aa71664c23027e57eee0fcaa2701d60408f),
[`b20d6ad`](https://github.com/langchain-ai/deepagentsjs/commit/b20d6adc3dc7caf01281832548a17f381561318c)]:
  - deepagents@1.13.0
## @langchain/quickjs@0.6.2

### Patch Changes

- [#769](https://github.com/langchain-ai/deepagentsjs/pull/769)
[`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0)
Thanks [@hntrl](https://github.com/hntrl)! - chore(deps): update
langgraph deps to track serialization fix
## @deepagents/evals@0.0.25

### Patch Changes

- Updated dependencies
[[`85a55e1`](https://github.com/langchain-ai/deepagentsjs/commit/85a55e14da6cb19877ddd81d898d78d6ededfe74),
[`f124127`](https://github.com/langchain-ai/deepagentsjs/commit/f124127255fbd4e4b03eb84a4b39c70421a07e35),
[`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0),
[`ba8d4aa`](https://github.com/langchain-ai/deepagentsjs/commit/ba8d4aa71664c23027e57eee0fcaa2701d60408f),
[`b20d6ad`](https://github.com/langchain-ai/deepagentsjs/commit/b20d6adc3dc7caf01281832548a17f381561318c)]:
  - deepagents@1.13.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-19 20:01:24 -07:00
Thushanth Bengre b20d6adc3d feat(deepagents): introduce ForkedSubAgent type for subagent conversation forking (#752)
## Summary

Replaces the `mode` field on `SubAgent` with a new `ForkedSubAgent` type
for opt-in conversation forking. A `ForkedSubAgent` has no
`systemPrompt` of its own — it always inherits the parent's message
history and exact system prompt, plus mirrored middleware when its model
matches the parent's. `CompiledSubAgent` keeps its existing `mode:
"handoff" | "fork"` field, unchanged.

## Changes

- New `ForkedSubAgent` type — same shape as `SubAgent` minus
`systemPrompt`; always forks.
- `SubAgent` no longer has a `mode` field — always isolated (same as
before this feature existed).
- `CompiledSubAgent.mode` unchanged.
- Mirrored middleware (memory/custom) only added when the model matches
the parent's; the system prompt itself is inherited unconditionally
either way.
- Updated fork test coverage in `subagent.test.ts` for the new type.

---------

Co-authored-by: Hunter Lovell <hunter@hntrl.io>
2026-08-19 19:56:11 -07:00
Hunter Lovell d4045de677 chore(deepagents): update langgraph deps (#769)
patches a ser/de bug for deepagents
2026-08-19 18:48:55 -07:00
Caspar Broekhuizen f124127255 fix(deepagents): accept permission paths equal to a composite route root (#768)
## Description

When filesystem `permissions` are combined with an execution-capable
backend, `createFilesystemMiddleware` requires every permission path to
be scoped to a `CompositeBackend` route. That check required a trailing
separator, so a permission path that exactly equals a single-file mount
(route `/instructions.md`, permission `/instructions.md`) was rejected
and users had to write `/instructions.md/**`. Python deepagents accepts
the exact form; this syncs JS with it by also accepting the route root
itself, mirroring `CompositeBackend.isPathWithinRoute`. It deliberately
does not adopt Python's looser bare `startsWith`, so sibling prefixes
like `/workspace2/**` for route `/workspace` are still rejected.

## Test Plan
- [ ] `npx vitest run src/middleware/fs.permissions.test.ts` in
`libs/deepagents` (new cases: exact file-mount route and exact directory
route root are accepted; sibling-prefix and `/**` rejections unchanged).

Made by [Open
SWE](https://openswe.vercel.app/agents/2758c734-16e9-54c3-b89f-ce698a566e71)

---------

Co-authored-by: Caspar Broekhuizen <25157475+casparb@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Co-authored-by: Hunter Lovell <hunter@hntrl.io>
2026-08-19 10:03:48 -07:00
Christian Bromann 85a55e14da fix(deepagents): cap sandbox glob find so root searches cannot OOM the host (#759)
## Summary

Recursive glob listed every path under the search root, and with -L
could loop through proc pid root symlinks into the host heap.

- Sandbox `glob` listed the whole search tree via `find -L` and buffered
it in the host process, so `glob("**/…", "/")` could OOM the runtime.
Prune virtual filesystems and soft-cap find output; mark `truncated`
when the cap is hit.
2026-08-18 22:03:40 -07:00
Hunter Lovell ba8d4aa716 feat(deepagents): add recursive delete tool (#675)
## Summary

This adds a destructive `delete` filesystem tool backed by the core backend protocol, with recursive deletion for files/directories and write-permission enforcement over the whole target subtree.

## Changes

### Core filesystem backends

- Added `DeleteResult` and optional `delete(filePath)` support to the
backend protocol and adapters.
- Implemented recursive delete behavior for state, store, filesystem,
sandbox, context-hub, and composite backends.
- Preserved filesystem path containment and symlink safety: filesystem
deletes remove symlinks as links and do not follow them.
- Converts unsupported routed deletes in `CompositeBackend` into normal
backend errors.

### Filesystem middleware

- Added the final `delete` tool name with recursive file/directory
semantics.
- Treats `delete` as a write operation for filesystem permissions.
- Refuses recursive deletes if any deny-write permission pattern
overlaps the target subtree, without enumerating filesystem contents
first.
- Filters the `delete` tool out when the resolved backend does not
support deletion.

### Tests, evals, and prompts

- Added backend and middleware coverage for recursive deletes, missing
paths, symlink safety, unsupported backends, and permission denial.
- Added file-operation eval coverage for deleting a file and deleting a
directory recursively.
- Updated core filesystem prompts and sandbox examples to document the
new `delete` tool.
2026-08-18 20:04:11 -07:00
Hunter Lovell c0b3e3a30e test(deepagents): de-flake custom StateGraph subagent interrupt test (#763)
## Summary

De-flakes the integration test `should handle interrupt() in a custom
StateGraph sub-agent` in
`libs/deepagents/src/middleware/subagents-hitl.int.test.ts`, which
intermittently fails in CI with:

```
AssertionError: expected undefined to be defined
 at src/middleware/subagents-hitl.int.test.ts:301:36   // expect(result.__interrupt__).toBeDefined()
```

## Root cause

The test relies on a **live LLM** deciding to call the `task` tool to
delegate to the `document-reviewer` sub-agent. The original prompt only
softly suggested this ("Use the task tool to launch the
document-reviewer sub-agent"). When the model answers directly instead
of delegating, the sub-agent never runs, `interrupt()` never fires, and
`result.__interrupt__` is `undefined`, producing the flaky failure.

This is test-prompt flakiness, not a product regression. The
interrupt-propagation path is unchanged, and the sibling interrupt tests
in the same file (dict-based tools, sequential interrupts) pass in the
same runs. The failure toggles pass/fail across commits on an unrelated
branch (the delete-tool PR #675) that never touched subagent/interrupt
code.

## Changes

- Rewrote the prompt as a strict, imperative instruction: call the
`task` tool exactly once immediately, with the correct `subagent_type`
and `description`, and do not answer directly.
- Added an explicit assertion that the `task` tool was actually called.
If a non-delegating model slips through, the failure now points clearly
at "task tool was not called" instead of a confusing `__interrupt__`
assertion. This mirrors the existing check in the skipped
`CompiledSubAgent` test.

## Testing

- `pnpm typecheck`: no new errors from this file (pre-existing unrelated
errors in backend `*.int.test.ts` about a missing
`@langchain/sandbox-standard-tests` module remain).
- `oxlint`: clean on the edited file.
- This is a live-LLM integration test (`test:int`) requiring API keys,
so it runs in CI's Integration Tests job.
2026-08-18 18:47:25 -07:00
github-actions[bot] 2a01d04faf chore: version packages (#750)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents-acp@0.1.25

### Patch Changes

- Updated dependencies
[[`b2afb8d`](https://github.com/langchain-ai/deepagentsjs/commit/b2afb8d600570b633fd97d4d2f8fd8bdb229ce35),
[`68337fc`](https://github.com/langchain-ai/deepagentsjs/commit/68337fcca19a6d7cc18e8917d575ea9ca3aebcbe),
[`7550c65`](https://github.com/langchain-ai/deepagentsjs/commit/7550c65204bdd9141a88b9b42d46899e05c7bc43)]:
  - deepagents@1.12.4
## deepagents@1.12.4

### Patch Changes

- [#747](https://github.com/langchain-ai/deepagentsjs/pull/747)
[`b2afb8d`](https://github.com/langchain-ai/deepagentsjs/commit/b2afb8d600570b633fd97d4d2f8fd8bdb229ce35)
Thanks [@casparb](https://github.com/casparb)! - fix(deepagents): batch
concurrent Context Hub mutations

- [#751](https://github.com/langchain-ai/deepagentsjs/pull/751)
[`68337fc`](https://github.com/langchain-ai/deepagentsjs/commit/68337fcca19a6d7cc18e8917d575ea9ca3aebcbe)
Thanks
[@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)!
- fix(deepagents): coerce grep tool's max_count to a number

- [#749](https://github.com/langchain-ai/deepagentsjs/pull/749)
[`7550c65`](https://github.com/langchain-ai/deepagentsjs/commit/7550c65204bdd9141a88b9b42d46899e05c7bc43)
Thanks
[@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)!
- fix(deepagents): exclude summarization state from subagent
input/output
## @deepagents/evals@0.0.24

### Patch Changes

- Updated dependencies
[[`b2afb8d`](https://github.com/langchain-ai/deepagentsjs/commit/b2afb8d600570b633fd97d4d2f8fd8bdb229ce35),
[`68337fc`](https://github.com/langchain-ai/deepagentsjs/commit/68337fcca19a6d7cc18e8917d575ea9ca3aebcbe),
[`7550c65`](https://github.com/langchain-ai/deepagentsjs/commit/7550c65204bdd9141a88b9b42d46899e05c7bc43)]:
  - deepagents@1.12.4

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-14 09:43:10 -07:00
Thushanth Bengre 68337fcca1 fix(deepagents): coerce grep tool's max_count to a number (#751)
Fixes #745 

`max_count` was the only numeric grep param without type coercion,
causing ToolInputParsingException on stringified input. Switched to
z.coerce.number().
2026-08-14 12:18:42 -04:00
Thushanth Bengre 7550c65204 fix(deepagents): exclude summarization state from subagent input/output (#749)
Fixes #748 

Excludes `_summarizationEvent`/`_summarizationSessionId` from subagent
state input/output. These weren't in `EXCLUDED_STATE_KEYS`, so a stale
parent cutoffIndex could silently drop a subagent's task description,
and a subagent's own summarization event could overwrite the parent's on
return.
2026-08-14 08:54:08 -04:00
Caspar Broekhuizen b2afb8d600 fix(deepagents): batch concurrent Context Hub mutations (#747)
ContextHubBackend now preserves concurrent file mutations in one durable
commit and retains compatible remote changes during conflict recovery.

---

Concurrent callers previously reused the same parent commit, causing
409s. Retries could also replay stale edit payloads.

Mutations now coalesce for 50 ms into serialized multi-file commits.
Conflict recovery replays ordered edit intent against refreshed state;
explicit writes, uploads, and deletes remain last-writer-wins.

---------

Co-authored-by: Hunter Lovell <hunter@hntrl.io>
2026-08-13 15:54:55 -07:00
github-actions[bot] 44d6d3dfea chore: version packages (#733)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents-acp@0.1.24

### Patch Changes

- Updated dependencies
[[`77e104f`](https://github.com/langchain-ai/deepagentsjs/commit/77e104f26a62ae34afbb1393edf191009d37280c),
[`239be7e`](https://github.com/langchain-ai/deepagentsjs/commit/239be7e883227e463504652bc00272ec947a21a6),
[`1439bbf`](https://github.com/langchain-ai/deepagentsjs/commit/1439bbfb267e92b7a19ce0924399591495976c21)]:
  - deepagents@1.12.3
## deepagents@1.12.3

### Patch Changes

- [#724](https://github.com/langchain-ai/deepagentsjs/pull/724)
[`77e104f`](https://github.com/langchain-ai/deepagentsjs/commit/77e104f26a62ae34afbb1393edf191009d37280c)
Thanks [@gethin-langchain](https://github.com/gethin-langchain)! -
feat(deepagents): add `output_mode` parameter to the `grep` tool
(`files_with_matches` / `content` / `count`)

- [#732](https://github.com/langchain-ai/deepagentsjs/pull/732)
[`239be7e`](https://github.com/langchain-ai/deepagentsjs/commit/239be7e883227e463504652bc00272ec947a21a6)
Thanks [@hntrl](https://github.com/hntrl)! - fix(deepagents): disable
summary-input trimming by default

Match Python DeepAgents by providing the full selected conversation to
the summarizer unless `trimTokensToSummarize` is explicitly configured.
This prevents oversized tool results from producing context-empty
summaries under the default configuration.

- [#739](https://github.com/langchain-ai/deepagentsjs/pull/739)
[`1439bbf`](https://github.com/langchain-ai/deepagentsjs/commit/1439bbfb267e92b7a19ce0924399591495976c21)
Thanks [@taoche](https://github.com/taoche)! - fix(deepagents): extract
text from content blocks when building the summary
## @deepagents/evals@0.0.23

### Patch Changes

- Updated dependencies
[[`77e104f`](https://github.com/langchain-ai/deepagentsjs/commit/77e104f26a62ae34afbb1393edf191009d37280c),
[`239be7e`](https://github.com/langchain-ai/deepagentsjs/commit/239be7e883227e463504652bc00272ec947a21a6),
[`1439bbf`](https://github.com/langchain-ai/deepagentsjs/commit/1439bbfb267e92b7a19ce0924399591495976c21)]:
  - deepagents@1.12.3

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-12 16:02:01 -07:00
Wei Tao 1439bbfb26 fix(deepagents): extract text from content blocks when building the summary (#739)
## Description

`SummarizationMiddleware`'s `createSummary` falls back to
`JSON.stringify(response.content)` when the summarization model's
response content is not a string:

```ts
return typeof response.content === "string"
  ? response.content
  : JSON.stringify(response.content);
```

When the summarization model responds with a content block array, the
raw blocks are stringified verbatim into the summary `HumanMessage`.
This happens in practice when:

- **Thinking/reasoning is enabled** on the summarization model (e.g.
Claude on Bedrock with `thinking`): the content is `[{type: "reasoning",
reasoning: ..., signature: <opaque multi-KB signature>}, {type: "text",
...}]`, and the reasoning signature lands in the summary.
- **`invoke()` takes the internal streaming path** (a `prefersStreaming`
callback handler is attached, e.g. inside `streamEvents`, and
`disableStreaming` is not set): the aggregated `AIMessageChunk` content
is an array of many small text fragments.

Observed in production: a summary message of ~56KB consisting of an ~8KB
opaque reasoning signature plus hundreds of
`{"type":"text","text":"..."}` fragments — the "summary" ended up
bloating the context it was supposed to compact, and subsequent model
calls overflowed.

## Fix

Use the message's `text` accessor for non-string content, which extracts
and joins only the text blocks. String content is returned as-is
(unchanged behavior).

## Testing

Added a unit test where the summarization model returns reasoning +
split text blocks, asserting the summary message contains the joined
text and no reasoning payload. All 33 existing tests pass.

---------

Co-authored-by: Hunter Lovell <hunter@hntrl.io>
2026-08-11 00:15:46 -07:00
gethin-langchain 77e104f26a feat(deepagents): add output_mode parameter to the grep tool (#724)
## Summary
- The grep tool's description mentioned output_mode, but it was never an
actual parameter the tool always returned one hardcoded format.
- Added output_mode (files_with_matches/content/count) as a real schema
parameter, using the existing formatGrepMatches helper.

## Test plan
- Added tests in fs.test.ts for files_with_matches and count modes.
- All tests pass.

Note: default output is now sorted by path with no blank lines between
file groups (minor formatting change, same info).

---------

Co-authored-by: Hunter Lovell <hunter@hntrl.io>
2026-08-06 07:13:21 +00:00
Hunter Lovell 239be7e883 fix(deepagents): disable summary input trimming by default (#732)
## Summary

Prevent default DeepAgents JS summarization from discarding an oversized
message before it reaches the summary model

## Changes

### `deepagents`

- Make `trimTokensToSummarize` opt-in rather than defaulting to 4,000
tokens.
- Preserve existing capped behavior when callers explicitly configure
the option.
- Add coverage confirming oversized summary input reaches the summary
model under default configuration.
- Add a patch changeset for the bug fix.
2026-08-05 14:42:51 -07:00
dependabot[bot] 792c627aec build(deps): bump the minor-deps-updates-main group with 6 updates (#721)
Bumps the minor-deps-updates-main group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [globals](https://github.com/sindresorhus/globals) | `17.7.0` |
`17.8.0` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) |
`0.60.0` | `0.61.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) |
`1.75.0` | `1.76.0` |
| [@daytona/sdk](https://github.com/daytona/clients) | `0.200.1` |
`0.202.0` |
| [acorn](https://github.com/acornjs/acorn) | `8.17.0` | `8.18.0` |
|
[lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)
| `1.26.0` | `1.27.0` |

Updates `globals` from 17.7.0 to 17.8.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sindresorhus/globals/releases">globals's
releases</a>.</em></p>
<blockquote>
<h2>v17.8.0</h2>
<ul>
<li>Update globals (2026-07-01) (<a
href="https://redirect.github.com/sindresorhus/globals/issues/347">#347</a>)
7394811</li>
</ul>
<hr />
<p><a
href="https://github.com/sindresorhus/globals/compare/v17.7.0...v17.8.0">https://github.com/sindresorhus/globals/compare/v17.7.0...v17.8.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/sindresorhus/globals/commit/36c76590583fc1f31d755525862eda1793a7d661"><code>36c7659</code></a>
17.8.0</li>
<li><a
href="https://github.com/sindresorhus/globals/commit/739481186ed54482e29845eff0bc44803c35fde8"><code>7394811</code></a>
Update globals (2026-07-01) (<a
href="https://redirect.github.com/sindresorhus/globals/issues/347">#347</a>)</li>
<li>See full diff in <a
href="https://github.com/sindresorhus/globals/compare/v17.7.0...v17.8.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `oxfmt` from 0.60.0 to 0.61.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/oxc-project/oxc/commit/65fe65d8429e1d1bdf86c517ff08bd119ee87660"><code>65fe65d</code></a>
release(apps): oxlint v1.76.0 &amp;&amp; oxfmt v0.61.0 (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/24976">#24976</a>)</li>
<li>See full diff in <a
href="https://github.com/oxc-project/oxc/commits/oxfmt_v0.61.0/npm/oxfmt">compare
view</a></li>
</ul>
</details>
<br />

Updates `oxlint` from 1.75.0 to 1.76.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/oxc-project/oxc/releases">oxlint's
releases</a>.</em></p>
<blockquote>
<h2>oxlint v1.27.0 &amp;&amp; oxfmt v0.12.0</h2>
<h1>Oxlint v1.27.0</h1>
<h3>🚀 Features</h3>
<ul>
<li>222a8f0 linter/plugins: Implement
<code>SourceCode#isSpaceBetween</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15498">#15498</a>)
(overlookmotel)</li>
<li>2f9735d linter/plugins: Implement
<code>context.languageOptions</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15486">#15486</a>)
(overlookmotel)</li>
<li>bc731ff linter/plugins: Stub out all <code>Context</code> APIs (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15479">#15479</a>)
(overlookmotel)</li>
<li>5822cb4 linter/plugins: Add <code>extend</code> method to
<code>FILE_CONTEXT</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15477">#15477</a>)
(overlookmotel)</li>
<li>7b1e6f3 apps: Add pure rust binaries and release to github (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15469">#15469</a>)
(Boshen)</li>
<li>2a89b43 linter: Introduce debug assertions after fixes to assert
validity (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15389">#15389</a>)
(camc314)</li>
<li>ad3c45a editor: Add <code>oxc.path.node</code> option (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15040">#15040</a>)
(Sysix)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>6f3cd77 linter/no-var: Incorrect warning for blocks (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15504">#15504</a>)
(Hamir Mahal)</li>
<li>6957fb9 linter/plugins: Do not allow access to
<code>Context#id</code> in <code>createOnce</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15489">#15489</a>)
(overlookmotel)</li>
<li>7409630 linter/plugins: Allow access to <code>cwd</code> in
<code>createOnce</code> in ESLint interop mode (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15488">#15488</a>)
(overlookmotel)</li>
<li>732205e parser: Reject <code>using</code> / <code>await using</code>
in a switch <code>case</code> / <code>default</code> clause (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15225">#15225</a>)
(sapphi-red)</li>
<li>a17ca32 linter/plugins: Replace <code>Context</code> class (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15448">#15448</a>)
(overlookmotel)</li>
<li>ecf2f7b language_server: Fail gracefully when tsgolint executable
not found (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15436">#15436</a>)
(camc314)</li>
<li>3c8d3a7 lang-server: Improve logging in failure case for tsgolint
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15299">#15299</a>)
(camc314)</li>
<li>ef71410 linter: Use jsx if source type is JS in fix debug assertion
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15434">#15434</a>)
(camc314)</li>
<li>e32bbf6 linter/no-var: Handle TypeScript declare keyword in fixer
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15426">#15426</a>)
(camc314)</li>
<li>6565dbe linter/switch-case-braces: Skip comments when searching for
<code>:</code> token (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15425">#15425</a>)
(camc314)</li>
<li>85bd19a linter/prefer-class-fields: Insert value after type
annotation in fixer (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15423">#15423</a>)
(camc314)</li>
<li>fde753e linter/plugins: Block access to
<code>context.settings</code> in <code>createOnce</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15394">#15394</a>)
(overlookmotel)</li>
<li>ddd9f9f linter/forward-ref-uses-ref: Dont suggest removing wrapper
in invalid positions (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15388">#15388</a>)
(camc314)</li>
<li>dac2a9c linter/no-template-curly-in-string: Remove fixer (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15387">#15387</a>)
(camc314)</li>
<li>989b8e3 linter/no-var: Only fix to <code>const</code> if the var has
an initializer (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15385">#15385</a>)
(camc314)</li>
<li>cc403f5 linter/plugins: Return empty object for unimplemented
parserServices (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15364">#15364</a>)
(magic-akari)</li>
</ul>
<h3> Performance</h3>
<ul>
<li>25d577e language_server: Start tools in parallel (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15500">#15500</a>)
(Sysix)</li>
<li>3c57291 linter/plugins: Optimize loops (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15449">#15449</a>)
(overlookmotel)</li>
<li>3166233 linter/plugins: Remove <code>Arc</code>s (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15431">#15431</a>)
(overlookmotel)</li>
<li>9de1322 linter/plugins: Lazily deserialize settings JSON (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15395">#15395</a>)
(overlookmotel)</li>
<li>3049ec2 linter/plugins: Optimize <code>deepFreezeSettings</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15392">#15392</a>)
(overlookmotel)</li>
<li>444ebfd linter/plugins: Use single object for
<code>parserServices</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15378">#15378</a>)
(overlookmotel)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>97d2104 linter: Update comment in lint.rs about default value for
tsconfig path (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15530">#15530</a>)
(Connor Shea)</li>
<li>2c6bd9e linter: Always refer as &quot;ES2015&quot; instead of
&quot;ES6&quot; (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15411">#15411</a>)
(sapphi-red)</li>
<li>a0c5203 linter/import/named: Update &quot;ES7&quot; comment in
examples (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15410">#15410</a>)
(sapphi-red)</li>
<li>3dc24b5 linter,minifier: Always refer as &quot;ES Modules&quot;
instead of &quot;ES6 Modules&quot; (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15409">#15409</a>)
(sapphi-red)</li>
<li>2ad77fb linter/no-this-before-super: Correct &quot;Why is this
bad?&quot; section (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15408">#15408</a>)
(sapphi-red)</li>
<li>57f0ce1 linter: Add backquotes where appropriate (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15407">#15407</a>)
(sapphi-red)</li>
</ul>
<h1>Oxfmt v0.12.0</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md">oxlint's
changelog</a>.</em></p>
<blockquote>
<h2>[1.76.0] - 2026-07-27</h2>
<h3>🚀 Features</h3>
<ul>
<li>8d31dfa linter: Verify eslint/no-restricted-globals config schema
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24598">#24598</a>)
(vigneshwar)</li>
<li>7069621 linter: Verify jest/vitest prefer-lowercase-title config
schema (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24724">#24724</a>)
(Bartok)</li>
<li>016cf2a linter/oxc: Add bad-match-all-arg rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24900">#24900</a>)
(camc314)</li>
<li>cdc941e linter/n: Implement <code>exports-style</code> rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24087">#24087</a>)
(Mikhail Baev)</li>
<li>1ad6f6c linter/eslint: Implement <code>id-denylist</code> rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24632">#24632</a>)
(Mikhail Baev)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>3ff2e0e linter: Clarify config extends types (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24936">#24936</a>)
(Boshen)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/oxc-project/oxc/commit/65fe65d8429e1d1bdf86c517ff08bd119ee87660"><code>65fe65d</code></a>
release(apps): oxlint v1.76.0 &amp;&amp; oxfmt v0.61.0 (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24976">#24976</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/3ff2e0e6fa1670d2300b2fb44dddc08c2df50a00"><code>3ff2e0e</code></a>
docs(linter): clarify config extends types (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24936">#24936</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/8d31dfa3934b0c8d276e022ad546836ee6d1dcd7"><code>8d31dfa</code></a>
feat(linter): verify eslint/no-restricted-globals config schema (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24598">#24598</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/7069621199a47158b853743ab6664126ec7b24b4"><code>7069621</code></a>
feat(linter): verify jest/vitest prefer-lowercase-title config schema
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24724">#24724</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/016cf2acd64e4f6d34226aecc84e69d342708858"><code>016cf2a</code></a>
feat(linter/oxc): add bad-match-all-arg rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24900">#24900</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/cdc941e5f81d00dfca63cc17cc39eb6d1462a9ed"><code>cdc941e</code></a>
feat(linter/n): implement <code>exports-style</code> rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24087">#24087</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/1ad6f6c823da92a9b70a9f8c23d355d1b99f9e75"><code>1ad6f6c</code></a>
feat(linter/eslint): implement <code>id-denylist</code> rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24632">#24632</a>)</li>
<li>See full diff in <a
href="https://github.com/oxc-project/oxc/commits/oxlint_v1.76.0/npm/oxlint">compare
view</a></li>
</ul>
</details>
<br />

Updates `@daytona/sdk` from 0.200.1 to 0.202.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/daytona/clients/releases">@​daytona/sdk's
releases</a>.</em></p>
<blockquote>
<h2>v0.202.0</h2>
<h2>0.202.0 (2026-07-29)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>sdk:</strong> promote fork and create-snapshot to stable
API, deprecate experimental aliases (<a
href="https://redirect.github.com/daytona/clients/pull/143">#143</a>)</li>
<li><strong>sdk-typescript:</strong> distinguish client-side argument
validation from server 400s and restore timeout compatibility (<a
href="https://redirect.github.com/daytona/clients/pull/146">#146</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>sync go.sum for v0.201.0 (<a
href="https://redirect.github.com/daytona/clients/pull/138">#138</a>)</li>
<li>batch dependabot 20260727 (<a
href="https://redirect.github.com/daytona/clients/pull/140">#140</a>)</li>
<li><strong>sdk-go:</strong> bump to v0.202.0 (<a
href="https://redirect.github.com/daytona/clients/pull/147">#147</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>daytonaBot</li>
<li>Mirko Džaja <a
href="https://github.com/MDzaja"><code>@​MDzaja</code></a></li>
</ul>
<h2>v0.201.0</h2>
<h2>0.201.0 (2026-07-27)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>sdk:</strong> add autoDestroyAt range filter to sandbox list
(<a
href="https://redirect.github.com/daytona/clients/pull/121">#121</a>)</li>
<li><strong>sdk:</strong> pre-signed sandbox file download/upload URLs
(<a
href="https://redirect.github.com/daytona/clients/pull/23">#23</a>)</li>
<li><strong>sdk:</strong> structured error responses with typed error
codes (<a
href="https://redirect.github.com/daytona/clients/pull/27">#27</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>sdk:</strong> sign S3 requests with the region provided by
the API (<a
href="https://redirect.github.com/daytona/clients/pull/111">#111</a>)</li>
<li><strong>sdk-typescript:</strong> declare tslib and ws as runtime
dependencies (<a
href="https://redirect.github.com/daytona/clients/pull/128">#128</a>)</li>
<li><strong>toolbox-api-client-python:</strong> optional
FileInfo.modifiedAt for old-runner compatibility (<a
href="https://redirect.github.com/daytona/clients/pull/134">#134</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>sync go.sum for v0.200.1 (<a
href="https://redirect.github.com/daytona/clients/pull/118">#118</a>)</li>
<li>batch deps 20260723 (<a
href="https://redirect.github.com/daytona/clients/pull/123">#123</a>)</li>
<li><strong>sdk-go:</strong> bump to v0.201.0 (<a
href="https://redirect.github.com/daytona/clients/pull/137">#137</a>)</li>
</ul>
<h3>Uncategorized changes</h3>
<ul>
<li>Relax dotenv dependency to allow 3.x (<a
href="https://redirect.github.com/daytona/clients/pull/129">#129</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Abdelrahman Alzboon <a
href="https://github.com/a-zboon"><code>@​a-zboon</code></a></li>
<li>daytonaBot</li>
<li>Mirko Džaja <a
href="https://github.com/MDzaja"><code>@​MDzaja</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/daytona/clients/commit/0ab96e5e1cd254abcc2e7f5d86d010f93055ee6f"><code>0ab96e5</code></a>
chore(sdk-go): bump to v0.202.0 (<a
href="https://redirect.github.com/daytona/clients/issues/147">#147</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/acb1e3e939889a7f9028a269debc1a110c4fe1eb"><code>acb1e3e</code></a>
feat(sdk-typescript): distinguish client-side argument validation from
server...</li>
<li><a
href="https://github.com/daytona/clients/commit/90470636897512e5885ec13121908d3b7fcc2a29"><code>9047063</code></a>
feat(sdk): promote fork and create-snapshot to stable API, deprecate
experime...</li>
<li><a
href="https://github.com/daytona/clients/commit/3e3cb92d4b0ce92e8365e12a20bece065ee141b1"><code>3e3cb92</code></a>
chore: batch dependabot 20260727 (<a
href="https://redirect.github.com/daytona/clients/issues/140">#140</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/23da590904f3b83cd51779989627a686eb1cf775"><code>23da590</code></a>
ci(release): gate release workflows behind the release environment (<a
href="https://redirect.github.com/daytona/clients/issues/139">#139</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/a2857d745f594a4310380e176e007b2987c6b0cc"><code>a2857d7</code></a>
ci(publish): gate publish jobs behind the release environment (<a
href="https://redirect.github.com/daytona/clients/issues/127">#127</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/361e6bbf32c3c9a551e480ca8b5c88231b5ca084"><code>361e6bb</code></a>
chore: sync go.sum for v0.201.0 (<a
href="https://redirect.github.com/daytona/clients/issues/138">#138</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/f8f8a932ce25e1000cf9be114bf62110bda94e3b"><code>f8f8a93</code></a>
chore(sdk-go): bump to v0.201.0 (<a
href="https://redirect.github.com/daytona/clients/issues/137">#137</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/03d91a264e14c1a0d311343736746276b9f287a1"><code>03d91a2</code></a>
feat(sdk): structured error responses with typed error codes (<a
href="https://redirect.github.com/daytona/clients/issues/27">#27</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/f261547c38b4128045700ef90ddb94a47bd860e1"><code>f261547</code></a>
Relax dotenv dependency to allow 3.x (<a
href="https://redirect.github.com/daytona/clients/issues/129">#129</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/daytona/clients/compare/v0.200.1...v0.202.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `acorn` from 8.17.0 to 8.18.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/acornjs/acorn/commit/d788421b242ddccb28040f1431438ee5cf474208"><code>d788421</code></a>
Mark version 8.18.0</li>
<li><a
href="https://github.com/acornjs/acorn/commit/b61cb9a4f245c0f7abc8c3ea9f85b5ac8bc5fbce"><code>b61cb9a</code></a>
Add startLocation option</li>
<li><a
href="https://github.com/acornjs/acorn/commit/c8d515c7f9c8baa62bf5ccffba98507b7be46218"><code>c8d515c</code></a>
Don't compute curLine when locations are off</li>
<li><a
href="https://github.com/acornjs/acorn/commit/a7bd3cd15702d28a7c8ef28365b3f04cf00d107c"><code>a7bd3cd</code></a>
Reject an unparenthesized arrow function as the left operand of
<code>**</code></li>
<li><a
href="https://github.com/acornjs/acorn/commit/b7c31b626e135c4ed130ff5063c44c20ea8e231a"><code>b7c31b6</code></a>
Fix mistake in previous patch</li>
<li><a
href="https://github.com/acornjs/acorn/commit/5c4af50af1536f144f0a4f254c50e5e34c0a2415"><code>5c4af50</code></a>
Avoid scanning from start of document in loose parser's resetTo</li>
<li>See full diff in <a
href="https://github.com/acornjs/acorn/compare/8.17.0...8.18.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `lucide-react` from 1.26.0 to 1.27.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lucide-icons/lucide/releases">lucide-react's
releases</a>.</em></p>
<blockquote>
<h2>Version 1.27.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat(icons): removed brand names from tags &amp; revised brand
stopwords by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4575">lucide-icons/lucide#4575</a></li>
<li>fix(docs): Fix site build by <a
href="https://github.com/ericfennis"><code>@​ericfennis</code></a> in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4582">lucide-icons/lucide#4582</a></li>
<li>fix(icons): optimised <code>square-scissors</code> icons by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4581">lucide-icons/lucide#4581</a></li>
<li>fix(packages/angular): add more supported attributes for SVG nodes
by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4570">lucide-icons/lucide#4570</a></li>
<li>feat(icons): added <code>pending-cw</code> icon by <a
href="https://github.com/NielsLazaroms"><code>@​NielsLazaroms</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4439">lucide-icons/lucide#4439</a></li>
<li>fix(icons): changed <code>zap</code> and <code>zap-off</code> icons
by <a href="https://github.com/kapowaz"><code>@​kapowaz</code></a> in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4536">lucide-icons/lucide#4536</a></li>
<li>feat(icons): add <code>square-off</code> icon by <a
href="https://github.com/october-learns"><code>@​october-learns</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4496">lucide-icons/lucide#4496</a></li>
<li>chore(deps-dev): bump astro from 6.4.8 to 7.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4572">lucide-icons/lucide#4572</a></li>
<li>fix(icons): changed <code>toolbox</code> icon by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4571">lucide-icons/lucide#4571</a></li>
<li>feat(icons): add scan-square by <a
href="https://github.com/samuelalake"><code>@​samuelalake</code></a> in
<a
href="https://redirect.github.com/lucide-icons/lucide/pull/4550">lucide-icons/lucide#4550</a></li>
<li>feat(icons): added <code>user-shield</code> icon by <a
href="https://github.com/MArtytraM99"><code>@​MArtytraM99</code></a> in
<a
href="https://redirect.github.com/lucide-icons/lucide/pull/3099">lucide-icons/lucide#3099</a></li>
<li>feat(icons): added <code>mosque</code> icon by <a
href="https://github.com/iskepr"><code>@​iskepr</code></a> in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4494">lucide-icons/lucide#4494</a></li>
<li>fix(request-review): Remove pull_request_target by <a
href="https://github.com/ericfennis"><code>@​ericfennis</code></a> in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4593">lucide-icons/lucide#4593</a></li>
<li>fix(icons): changed <code>feather</code> icon by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4584">lucide-icons/lucide#4584</a></li>
<li>feat(ci): added custom prettier plugin for icon SVG files by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4576">lucide-icons/lucide#4576</a></li>
<li>ci(ci.yml): Remove concurrency in ci.yml by <a
href="https://github.com/ericfennis"><code>@​ericfennis</code></a> in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4595">lucide-icons/lucide#4595</a></li>
<li>fix(icons): changed <code>barrel</code> icon by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4592">lucide-icons/lucide#4592</a></li>
<li>feat(lab): Migrate lab to main repo. by <a
href="https://github.com/ericfennis"><code>@​ericfennis</code></a> in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4521">lucide-icons/lucide#4521</a></li>
<li>fix(icons): changed <code>trophy</code> icon by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4591">lucide-icons/lucide#4591</a></li>
<li>feat(analytics): add utm source and medium by <a
href="https://github.com/jguddas"><code>@​jguddas</code></a> in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4596">lucide-icons/lucide#4596</a></li>
<li>feat(docs): Add lab requirement in pull_request_template.md by <a
href="https://github.com/danielbayley"><code>@​danielbayley</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/3651">lucide-icons/lucide#3651</a></li>
<li>feat(icons): replaces <code>podcast</code> icon with new
<code>mic-*</code> icons by <a
href="https://github.com/karsa-mistmere"><code>@​karsa-mistmere</code></a>
in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4583">lucide-icons/lucide#4583</a></li>
<li>feat(icons): add layout-freeform by <a
href="https://github.com/samuelalake"><code>@​samuelalake</code></a> in
<a
href="https://redirect.github.com/lucide-icons/lucide/pull/4543">lucide-icons/lucide#4543</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/NielsLazaroms"><code>@​NielsLazaroms</code></a>
made their first contribution in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4439">lucide-icons/lucide#4439</a></li>
<li><a href="https://github.com/kapowaz"><code>@​kapowaz</code></a> made
their first contribution in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4536">lucide-icons/lucide#4536</a></li>
<li><a
href="https://github.com/october-learns"><code>@​october-learns</code></a>
made their first contribution in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4496">lucide-icons/lucide#4496</a></li>
<li><a
href="https://github.com/samuelalake"><code>@​samuelalake</code></a>
made their first contribution in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4550">lucide-icons/lucide#4550</a></li>
<li><a href="https://github.com/iskepr"><code>@​iskepr</code></a> made
their first contribution in <a
href="https://redirect.github.com/lucide-icons/lucide/pull/4494">lucide-icons/lucide#4494</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/lucide-icons/lucide/compare/1.26.0...1.27.0">https://github.com/lucide-icons/lucide/compare/1.26.0...1.27.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/lucide-icons/lucide/commits/1.27.0/packages/lucide-react">compare
view</a></li>
</ul>
</details>
<br />


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)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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 <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> 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 <dependency name> 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 <dependency name>` 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 <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-05 01:36:46 -07:00
Hunter Lovell 521738d457 fix: correct changelogs and versions (#727)
## Summary

Correct the release metadata for provider packages whose `1.0.0`
versions were published prematurely and deprecated. This preserves the
intended pre-1.0 version lines by advancing each affected package by a
patch release.

## Changes

### Provider packages

- Change `@langchain/node-vfs` and `@langchain/daytona` to `0.2.2`;
`@langchain/deno` to `0.2.3`; `@langchain/modal` to `0.1.6`; and
`@langchain/quickjs` to `0.6.1`.
- Replace each accidental `1.0.0` changelog heading with the corrected
patch version and a notice directing consumers away from the deprecated
release.
2026-08-04 12:40:10 -07:00
github-actions[bot] 5af75fffbe chore: version packages (#726)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents-acp@0.1.23

### Patch Changes

- Updated dependencies
[[`590c2a5`](https://github.com/langchain-ai/deepagentsjs/commit/590c2a5042473f096d5fac5ddbb4be96e2ace0f2)]:
  - deepagents@1.12.2
## deepagents@1.12.2

### Patch Changes

- [#723](https://github.com/langchain-ai/deepagentsjs/pull/723)
[`590c2a5`](https://github.com/langchain-ai/deepagentsjs/commit/590c2a5042473f096d5fac5ddbb4be96e2ace0f2)
Thanks
[@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)!
- fix(deepagents): prevent stack overflow in CompositeBackend grep/glob
on huge result sets, and add a grep match-count cap

`CompositeBackend` accumulated merged `ls`/`grep`/`glob` results with
`push(...entries)`, which passes every entry as a separate function
argument and overflows the call stack (RangeError: Maximum call stack
size exceeded) when a broad search over a large tree returns hundreds of
thousands of entries. Results are now accumulated with a plain loop, so
no result-set size can overflow the stack.

`grep` also gains an optional `maxCount` (backend) / `max_count` (tool)
cap, mirroring the Python SDK. When the cap is hit, results are flagged
`truncated: true` on `GrepResult`/`GlobResult` and the grep tool appends
a note telling the model to narrow the search. The cap defaults to 1000
via the `grepMaxCount` middleware option (set to `null` to disable).
`CompositeBackend` splits the budget across routed backends and
OR-propagates the `truncated` flag on merged results.
## @deepagents/evals@0.0.22

### Patch Changes

- Updated dependencies
[[`590c2a5`](https://github.com/langchain-ai/deepagentsjs/commit/590c2a5042473f096d5fac5ddbb4be96e2ace0f2)]:
  - deepagents@1.12.2

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-04 15:20:01 -04:00
thushanth-bengre-langchain 590c2a5042 fix(deepagents): prevent stack overflow in CompositeBackend grep/glob (#723)
## Summary

- Fixes `RangeError: Maximum call stack size exceeded` from
`CompositeBackend.glob`/`grep` when a broad search (e.g.
`**/*.{ts,tsx,...}` at `/`) returns hundreds of thousands of entries.
Root cause: results were merged with `push(...entries)`, which passes
each entry as a separate function argument and overflows V8's
argument-stack limit. Now accumulated with a plain loop.
- Ports the Python SDK's grep match-count cap (`ef591e7`): optional
`maxCount` backend param / `max_count` tool arg, `grepMaxCount`
middleware option (default 1000, `null` disables), `truncated` flag on
`GrepResult`/`GlobResult`, and a truncation note in the grep tool
output. `CompositeBackend` splits the budget across routes and
OR-propagates `truncated`.

## Backward compatibility

- `truncated` is optional; `maxCount` defaults to unset everywhere. No
required changes for existing or new users.

## Test plan

- [x] Regression test: mocked backend returning 200k entries —
`glob`/`grep` complete without `RangeError` (verified it fails with the
old spread).
- [x] Cap enforcement, `truncated` propagation across composite routes,
middleware note rendering.
- [x] `pnpm test` (format + lint + all lib tests) passes.
2026-08-04 11:27:03 -07:00
github-actions[bot] 064b1724de chore: version packages (#715)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents-acp@0.1.22

### Patch Changes

- Updated dependencies
[[`ffec5de`](https://github.com/langchain-ai/deepagentsjs/commit/ffec5de0e66ed5ab64bc4c6bee2ff90effb4bfa1)]:
  - deepagents@1.12.1
## deepagents@1.12.1

### Patch Changes

- [#713](https://github.com/langchain-ai/deepagentsjs/pull/713)
[`ffec5de`](https://github.com/langchain-ai/deepagentsjs/commit/ffec5de0e66ed5ab64bc4c6bee2ff90effb4bfa1)
Thanks [@gethin-langchain](https://github.com/gethin-langchain)! -
fix(deepagents): grep/glob match when `path` points directly at a file
## @deepagents/evals@0.0.21

### Patch Changes

- Updated dependencies
[[`ffec5de`](https://github.com/langchain-ai/deepagentsjs/commit/ffec5de0e66ed5ab64bc4c6bee2ff90effb4bfa1)]:
  - deepagents@1.12.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-31 08:10:45 +00:00
gethin-langchain ffec5de0e6 fix(deepagents): grep/glob match when path points directly at a file (#713)
## Summary
- `grep`/`glob` on `StateBackend`/`StoreBackend` returned zero matches
whenever `path` pointed at an exact file (no glob) — the shared
`validatePath` helper forced a trailing `/` before prefix-matching, so a
file's own key could never match itself+`/`.
- Added a `filterFilesByPath` helper that checks for an exact key match
in the files map first, falling back to the existing directory-prefix
behavior otherwise.

## Test plan
- [x] Added regression tests in `utils.test.ts`: exact-file path (no
glob) for grep and glob, plus directory + glob/filename non-regression
cases for both.
- [x] `pnpm --filter deepagents test` — all tests pass.
2026-07-31 00:54:11 -07:00
github-actions[bot] bed2d344bc chore: version packages (#712)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents@1.12.0

### Minor Changes

- [#703](https://github.com/langchain-ai/deepagentsjs/pull/703)
[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126)
Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): adopt
more minimal prompting

We've observed that current models don't need as verbose of prompting
guidance, so we're reducing the amount of perscriptive guidance that
deepagents has. This is reflected in the generic system prompt (which is
now blank), and in the tool descriptions (which have been simplified).

- [#708](https://github.com/langchain-ai/deepagentsjs/pull/708)
[`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0)
Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): make todo
middleware opt-in

- [#674](https://github.com/langchain-ai/deepagentsjs/pull/674)
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)
Thanks [@hntrl](https://github.com/hntrl)! - feat(filesystem): allow
`write_file` to create missing files or completely replace existing
files
## deepagents-acp@0.1.21

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0
## @langchain/node-vfs@1.0.0

### Patch Changes

- [#674](https://github.com/langchain-ai/deepagentsjs/pull/674)
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)
Thanks [@hntrl](https://github.com/hntrl)! - fix: allow
`VfsBackend.write` to overwrite existing files while continuing to
reject symlinks
## @langchain/daytona@1.0.0


## @langchain/deno@1.0.0


## @langchain/modal@1.0.0


## @langchain/quickjs@1.0.0


## @langchain/sandbox-standard-tests@2.0.0


## @deepagents/evals@0.0.20

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-29 09:47:28 -07:00
github-actions[bot] 149f4585f1 chore: version packages (rc) (#709)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

`main` is currently in **pre mode** so this branch has prereleases
rather than normal releases. If you want to exit prereleases, run
`changeset pre exit` on `main`.

⚠️⚠️⚠️⚠️⚠️⚠️

# Releases
## deepagents@1.12.0-rc.1

### Minor Changes

- [#708](https://github.com/langchain-ai/deepagentsjs/pull/708)
[`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0)
Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): make todo
middleware opt-in
## deepagents-acp@0.1.21-rc.1

### Patch Changes

- Updated dependencies
[[`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0)]:
  - deepagents@1.12.0-rc.1
## @deepagents/evals@0.0.20-rc.1

### Patch Changes

- Updated dependencies
[[`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0)]:
  - deepagents@1.12.0-rc.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 08:48:51 -07:00
Hunter Lovell 1225a7ff86 feat(deepagents): make todo middleware opt-in (#708)
## Summary

Makes `todoListMiddleware` opt-in. Default agents and default subagents
no longer expose `write_todos` or the `todos` state channel, reducing
the default tool surface while preserving explicit opt-in.

## Changes

- Remove default todo middleware from the main, general-purpose, and
declarative subagent stacks.
- Preserve opt-in support through `middleware: [todoListMiddleware()]`;
declarative subagents opt in through their own middleware.
- Remove `write_todos` from always-present tool typing and built-in
name-collision handling.
- Update state and subagent documentation plus shared runtime assertions
for the optional todo state/tool.

### Harness profiles and coverage

- Re-add todo middleware in the Codex harness profile because its
model-specific prompt requires `write_todos`
- Apply profile `extraMiddleware` to subagent stacks, with profile
factories creating fresh instances per stack.
- Add coverage for default exclusion, explicit opt-in,
main/GP/declarative isolation, profile middleware propagation, and type
inference.
2026-07-24 15:40:43 -07:00
dependabot[bot] 71000c0b70 build(deps): bump the minor-deps-updates-main group across 1 directory with 10 updates (#707)
Bumps the minor-deps-updates-main group with 10 updates in the /
directory:

| Package | From | To |
| --- | --- | --- |
| [lint-staged](https://github.com/lint-staged/lint-staged) | `17.0.8` |
`17.2.0` |
| [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) |
`0.57.0` | `0.60.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) |
`1.72.0` | `1.75.0` |
| [tsx](https://github.com/privatenumber/tsx) | `4.22.4` | `4.23.1` |
|
[@agentclientprotocol/sdk](https://github.com/agentclientprotocol/typescript-sdk)
| `1.1.0` | `1.3.0` |
| [@daytona/sdk](https://github.com/daytona/clients) | `0.192.0` |
`0.200.1` |
| [modal](https://github.com/modal-labs/modal-client) | `0.8.2` |
`0.9.0` |
| [magic-string](https://github.com/Rich-Harris/magic-string) | `1.0.0`
| `1.1.0` |
| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.7.14`
| `0.8.7` |
|
[lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)
| `1.23.0` | `1.26.0` |


Updates `lint-staged` from 17.0.8 to 17.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lint-staged/lint-staged/releases">lint-staged's
releases</a>.</em></p>
<blockquote>
<h2>v17.2.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/lint-staged/lint-staged/pull/1823">#1823</a>
<a
href="https://github.com/lint-staged/lint-staged/commit/ee156cc7039494f1db11f389b1233c78f588238c"><code>ee156cc</code></a>
- The chunking of tasks based on maximum command line argument length
has been re-implemented to be more precise. Now the chunking happens
based on the final generated command string, instead of just the list of
staged files like previously. This benefits mainly Windows platforms and
function commands like:</p>
<pre lang="js"><code>/** @type {import('lint-staged').Configuration} */
export default {
&quot;*.ts&quot;: () =&gt; &quot;tsc&quot;, // Run &quot;tsc&quot; when
any TS file is changed (for entire project)
};
</code></pre>
<p>Where the spawned command is literally <code>&quot;tsc&quot;</code>
without any extra arguments. Previously, this was still chunked when a
lot of files were staged. Now, it probably won't be chunked because the
length of the command is just three letters.</p>
<p>Also, native JavaScript/Node.js function tasks won't be chunked at
all, when previously they were run multiple times when chunked:</p>
<pre lang="js"><code>/** @type {import('lint-staged').Configuration} */
export default {
  &quot;*.js&quot;: {
    title: &quot;Log staged JS files to console&quot;,
    task: async (files) =&gt; {
      console.log(&quot;Staged JS files:&quot;, files);
    },
  },
};
</code></pre>
</li>
</ul>
<h2>v17.1.1</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/lint-staged/lint-staged/pull/1820">#1820</a>
<a
href="https://github.com/lint-staged/lint-staged/commit/a626a9f269d9ff6498a9b8245490e096f90c4bb7"><code>a626a9f</code></a>
- It's now possible to set <code>--max-arg-length=Infinity</code> to
effectively disable chunking of tasks based on the number of staged
files. The parsing and validation of the numeric CLI options
<code>--max-arg-length</code> and <code>--concurrency</code> has been
improved.</li>
</ul>
<h2>v17.1.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/lint-staged/lint-staged/pull/1816">#1816</a>
<a
href="https://github.com/lint-staged/lint-staged/commit/7568d4fb15ba3c3317a7aec36195461cb2f272d7"><code>7568d4f</code></a>
- The console output of <em>lint-staged</em> has been simplified so that
there's less interactive spinners and more explicit messages like
<em>&quot;Started…</em>&quot; -&gt; &quot;<em>Done!</em>&quot;. The
primary purpose of this was to remove <a
href="https://github.com/listr2/listr2"><code>Listr2</code></a>, a very
large dependency.</p>
<p><strong>Before:</strong></p>
<p>Size of <code>node_modules/</code> after installing: <code>1561.7
kB</code> with 29 packages.</p>
<p>Fancy interactive spinners, but output dynamically changes:</p>
<pre lang="shell"><code>✔ Backed up original state in git stash
(0b191303)
✔ Running tasks for staged files...
✔ Staging changes from tasks...
✔ Cleaning up temporary files...
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md">lint-staged's
changelog</a>.</em></p>
<blockquote>
<h2>17.2.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/lint-staged/lint-staged/pull/1823">#1823</a>
<a
href="https://github.com/lint-staged/lint-staged/commit/ee156cc7039494f1db11f389b1233c78f588238c"><code>ee156cc</code></a>
- The chunking of tasks based on maximum command line argument length
has been re-implemented to be more precise. Now the chunking happens
based on the final generated command string, instead of just the list of
staged files like previously. This benefits mainly Windows platforms and
function commands like:</p>
<pre lang="js"><code>/** @type {import('lint-staged').Configuration} */
export default {
&quot;*.ts&quot;: () =&gt; &quot;tsc&quot;, // Run &quot;tsc&quot; when
any TS file is changed (for entire project)
};
</code></pre>
<p>Where the spawned command is literally <code>&quot;tsc&quot;</code>
without any extra arguments. Previously, this was still chunked when a
lot of files were staged. Now, it probably won't be chunked because the
length of the command is just three letters.</p>
<p>Also, native JavaScript/Node.js function tasks won't be chunked at
all, when previously they were run multiple times when chunked:</p>
<pre lang="js"><code>/** @type {import('lint-staged').Configuration} */
export default {
  &quot;*.js&quot;: {
    title: &quot;Log staged JS files to console&quot;,
    task: async (files) =&gt; {
      console.log(&quot;Staged JS files:&quot;, files);
    },
  },
};
</code></pre>
</li>
</ul>
<h2>17.1.1</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/lint-staged/lint-staged/pull/1820">#1820</a>
<a
href="https://github.com/lint-staged/lint-staged/commit/a626a9f269d9ff6498a9b8245490e096f90c4bb7"><code>a626a9f</code></a>
- It's now possible to set <code>--max-arg-length=Infinity</code> to
effectively disable chunking of tasks based on the number of staged
files. The parsing and validation of the numeric CLI options
<code>--max-arg-length</code> and <code>--concurrency</code> has been
improved.</li>
</ul>
<h2>17.1.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/lint-staged/lint-staged/pull/1816">#1816</a>
<a
href="https://github.com/lint-staged/lint-staged/commit/7568d4fb15ba3c3317a7aec36195461cb2f272d7"><code>7568d4f</code></a>
- The console output of <em>lint-staged</em> has been simplified so that
there's less interactive spinners and more explicit messages like
<em>&quot;Started…</em>&quot; -&gt; &quot;<em>Done!</em>&quot;. The
primary purpose of this was to remove <a
href="https://github.com/listr2/listr2"><code>Listr2</code></a>, a very
large dependency.</p>
<p><strong>Before:</strong></p>
<p>Size of <code>node_modules/</code> after installing: <code>1561.7
kB</code> with 29 packages.</p>
<p>Fancy interactive spinners, but output dynamically changes:</p>
<pre lang="shell"><code>✔ Backed up original state in git stash
(0b191303)
✔ Running tasks for staged files...
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/fb540fba1513a83a6be3fa31aeed4eae679c3e31"><code>fb540fb</code></a>
Merge pull request <a
href="https://redirect.github.com/lint-staged/lint-staged/issues/1824">#1824</a>
from lint-staged/changeset-release/main</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/dc0a738a1b39033804667b3df3fb0f71cb03708a"><code>dc0a738</code></a>
chore(changeset): release</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/60cbb8818f8c0d51d6d1e4c59c7a9e558d8fffe1"><code>60cbb88</code></a>
Merge pull request <a
href="https://redirect.github.com/lint-staged/lint-staged/issues/1823">#1823</a>
from lint-staged/reimplement-chunk-files</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/2354dc42686e2c2bff4a5dff3abd57f3cc69624e"><code>2354dc4</code></a>
build(deps): update dependencies</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/0516e7fa9bc8a05aee922872f4ebe5d9c21a8213"><code>0516e7f</code></a>
docs: adjust debug logs</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/e22f6ede988cc6efe7c0065dcb8cb1408f2584dd"><code>e22f6ed</code></a>
style: run <code>oxfmt</code> on README.md</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/37e8e1ad73a58c0b187716bd5172744ad50f36d1"><code>37e8e1a</code></a>
fix: restore chunking of git add command after running tasks</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/2c75f1d0f2cc2c28c7191c48beafb281e3d1e78e"><code>2c75f1d</code></a>
chore: remove unused file</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/ee156cc7039494f1db11f389b1233c78f588238c"><code>ee156cc</code></a>
feat: add improved lazy-chunking of command strings</li>
<li><a
href="https://github.com/lint-staged/lint-staged/commit/baa7c987f68e0c338b1fd5ad751da05e9cbe238d"><code>baa7c98</code></a>
feat: remove current <code>chunkFiles</code> implementation</li>
<li>Additional commits viewable in <a
href="https://github.com/lint-staged/lint-staged/compare/v17.0.8...v17.2.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `oxfmt` from 0.57.0 to 0.60.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/oxc-project/oxc/commit/83abe3b49c0913b1a984a7eec5e433a59fd76eae"><code>83abe3b</code></a>
release(apps): oxlint v1.75.0 &amp;&amp; oxfmt v0.60.0 (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/24713">#24713</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/e2e0f94253c5ce91a00394e2cba974bc152798db"><code>e2e0f94</code></a>
chore(docs): update sponsor section (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/24588">#24588</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/2d4e8d20644e0e7446f0a381894b45ea339a0625"><code>2d4e8d2</code></a>
release(apps): oxlint v1.74.0 &amp;&amp; oxfmt v0.59.0 (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/24454">#24454</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/415fe1e7bb423cf05019c5e2c9a5705eebbc5447"><code>415fe1e</code></a>
fix(oxfmt): error on ignorePatterns that cannot match files outside the
confi...</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/39677ba50d908ea09f6d9e58ded328461212f52a"><code>39677ba</code></a>
release(apps): oxlint v1.73.0 &amp;&amp; oxfmt v0.58.0 (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/24219">#24219</a>)</li>
<li>See full diff in <a
href="https://github.com/oxc-project/oxc/commits/oxfmt_v0.60.0/npm/oxfmt">compare
view</a></li>
</ul>
</details>
<br />

Updates `oxlint` from 1.72.0 to 1.75.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/oxc-project/oxc/releases">oxlint's
releases</a>.</em></p>
<blockquote>
<h2>oxlint v1.27.0 &amp;&amp; oxfmt v0.12.0</h2>
<h1>Oxlint v1.27.0</h1>
<h3>🚀 Features</h3>
<ul>
<li>222a8f0 linter/plugins: Implement
<code>SourceCode#isSpaceBetween</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15498">#15498</a>)
(overlookmotel)</li>
<li>2f9735d linter/plugins: Implement
<code>context.languageOptions</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15486">#15486</a>)
(overlookmotel)</li>
<li>bc731ff linter/plugins: Stub out all <code>Context</code> APIs (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15479">#15479</a>)
(overlookmotel)</li>
<li>5822cb4 linter/plugins: Add <code>extend</code> method to
<code>FILE_CONTEXT</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15477">#15477</a>)
(overlookmotel)</li>
<li>7b1e6f3 apps: Add pure rust binaries and release to github (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15469">#15469</a>)
(Boshen)</li>
<li>2a89b43 linter: Introduce debug assertions after fixes to assert
validity (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15389">#15389</a>)
(camc314)</li>
<li>ad3c45a editor: Add <code>oxc.path.node</code> option (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15040">#15040</a>)
(Sysix)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>6f3cd77 linter/no-var: Incorrect warning for blocks (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15504">#15504</a>)
(Hamir Mahal)</li>
<li>6957fb9 linter/plugins: Do not allow access to
<code>Context#id</code> in <code>createOnce</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15489">#15489</a>)
(overlookmotel)</li>
<li>7409630 linter/plugins: Allow access to <code>cwd</code> in
<code>createOnce</code> in ESLint interop mode (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15488">#15488</a>)
(overlookmotel)</li>
<li>732205e parser: Reject <code>using</code> / <code>await using</code>
in a switch <code>case</code> / <code>default</code> clause (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15225">#15225</a>)
(sapphi-red)</li>
<li>a17ca32 linter/plugins: Replace <code>Context</code> class (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15448">#15448</a>)
(overlookmotel)</li>
<li>ecf2f7b language_server: Fail gracefully when tsgolint executable
not found (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15436">#15436</a>)
(camc314)</li>
<li>3c8d3a7 lang-server: Improve logging in failure case for tsgolint
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15299">#15299</a>)
(camc314)</li>
<li>ef71410 linter: Use jsx if source type is JS in fix debug assertion
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15434">#15434</a>)
(camc314)</li>
<li>e32bbf6 linter/no-var: Handle TypeScript declare keyword in fixer
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15426">#15426</a>)
(camc314)</li>
<li>6565dbe linter/switch-case-braces: Skip comments when searching for
<code>:</code> token (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15425">#15425</a>)
(camc314)</li>
<li>85bd19a linter/prefer-class-fields: Insert value after type
annotation in fixer (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15423">#15423</a>)
(camc314)</li>
<li>fde753e linter/plugins: Block access to
<code>context.settings</code> in <code>createOnce</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15394">#15394</a>)
(overlookmotel)</li>
<li>ddd9f9f linter/forward-ref-uses-ref: Dont suggest removing wrapper
in invalid positions (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15388">#15388</a>)
(camc314)</li>
<li>dac2a9c linter/no-template-curly-in-string: Remove fixer (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15387">#15387</a>)
(camc314)</li>
<li>989b8e3 linter/no-var: Only fix to <code>const</code> if the var has
an initializer (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15385">#15385</a>)
(camc314)</li>
<li>cc403f5 linter/plugins: Return empty object for unimplemented
parserServices (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15364">#15364</a>)
(magic-akari)</li>
</ul>
<h3> Performance</h3>
<ul>
<li>25d577e language_server: Start tools in parallel (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15500">#15500</a>)
(Sysix)</li>
<li>3c57291 linter/plugins: Optimize loops (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15449">#15449</a>)
(overlookmotel)</li>
<li>3166233 linter/plugins: Remove <code>Arc</code>s (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15431">#15431</a>)
(overlookmotel)</li>
<li>9de1322 linter/plugins: Lazily deserialize settings JSON (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15395">#15395</a>)
(overlookmotel)</li>
<li>3049ec2 linter/plugins: Optimize <code>deepFreezeSettings</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15392">#15392</a>)
(overlookmotel)</li>
<li>444ebfd linter/plugins: Use single object for
<code>parserServices</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15378">#15378</a>)
(overlookmotel)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>97d2104 linter: Update comment in lint.rs about default value for
tsconfig path (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15530">#15530</a>)
(Connor Shea)</li>
<li>2c6bd9e linter: Always refer as &quot;ES2015&quot; instead of
&quot;ES6&quot; (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15411">#15411</a>)
(sapphi-red)</li>
<li>a0c5203 linter/import/named: Update &quot;ES7&quot; comment in
examples (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15410">#15410</a>)
(sapphi-red)</li>
<li>3dc24b5 linter,minifier: Always refer as &quot;ES Modules&quot;
instead of &quot;ES6 Modules&quot; (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15409">#15409</a>)
(sapphi-red)</li>
<li>2ad77fb linter/no-this-before-super: Correct &quot;Why is this
bad?&quot; section (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15408">#15408</a>)
(sapphi-red)</li>
<li>57f0ce1 linter: Add backquotes where appropriate (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15407">#15407</a>)
(sapphi-red)</li>
</ul>
<h1>Oxfmt v0.12.0</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md">oxlint's
changelog</a>.</em></p>
<blockquote>
<h2>[1.75.0] - 2026-07-20</h2>
<h3>🚀 Features</h3>
<ul>
<li>dd18383 linter/node: Implement no-top-level-await rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24634">#24634</a>)
(Connor Shea)</li>
<li>16a65f2 linter/react: Implement function-component-definition rule
(<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24471">#24471</a>)
(Cole Ellison)</li>
<li>7f1f585 linter: Reuse <code>jest/padding-around-test-blocks</code>
for <code>vitest/padding-around-test-blocks</code> (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24519">#24519</a>)
(Mikhail Baev)</li>
<li>99978a8 linter/import/consistent-type-specifier-style: Support
<code>prefer-top-level-if-only-type-imports</code> option (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24502">#24502</a>)
(camc314)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>8694167 linter/eslint/prefer-destructuring: Handle typed
declarations (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24616">#24616</a>)
(camc314)</li>
</ul>
<h2>[1.74.0] - 2026-07-13</h2>
<h3>🚀 Features</h3>
<ul>
<li>0433a83 linter/eslint/no-inner-declarations: Add
<code>namespaces</code> option (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24044">#24044</a>)
(Boshen)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>8337835 linter: Error on <code>ignorePatterns</code> that cannot
match files aoutside the config directory (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24341">#24341</a>)
(leaysgur)</li>
<li>2ce5a33 linter: Resolve <code>ignorePatterns</code> relative to the
config dir (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24339">#24339</a>)
(leaysgur)</li>
</ul>
<h3> Performance</h3>
<ul>
<li>7f80cac linter/vue/prop-name-casing: Precompile
<code>ignoreProps</code> regex pattern (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24413">#24413</a>)
(connorshea)</li>
<li>6272051 linter/typescript/no-require-imports: Compile allow patterns
once (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24417">#24417</a>)
(connorshea)</li>
<li>33805b9 linter/jsdoc/require-param: Compile checkTypesPattern regex
once (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24420">#24420</a>)
(connorshea)</li>
</ul>
<h2>[1.73.0] - 2026-07-06</h2>
<h3>🚀 Features</h3>
<ul>
<li>a2c97f3 linter/unicorn: Implement <code>explicit-timer-delay</code>
rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/23612">#23612</a>)
(Mikhail Baev)</li>
<li>85735cb linter/unicorn: Implement
<code>no-confusing-array-with</code> rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/23638">#23638</a>)
(Shekhu☺️)</li>
<li>cb4fbb9 linter/eslint: Implement no-unreachable-loop rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/23975">#23975</a>)
(Todor Andonov)</li>
<li>dc32112 linter/eslint/no-constant-binary-expression: Check
relational comparisons (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24088">#24088</a>)
(camc314)</li>
<li>d963967 linter/unicorn/no-array-sort: Add
<code>allowAfterSpread</code> option (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24043">#24043</a>)
(Boshen)</li>
<li>0a75682 linter: Add per-rule timings for type-aware linting (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22488">#22488</a>)
(camchenry)</li>
<li>743e222 linter/react: Add <code>disallowedValues</code> option for
<code>forbid-dom-props</code> rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/23970">#23970</a>)
(Mikhail Baev)</li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>bdb51c7 linter/jest/prefer-ending-with-an-expect: Validate config
patterns (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24122">#24122</a>)
(camc314)</li>
<li>45d607d linter/react/forbid-component-props: Make allow/disallow
lists optional in schema (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24024">#24024</a>)
(Boshen)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/oxc-project/oxc/commit/83abe3b49c0913b1a984a7eec5e433a59fd76eae"><code>83abe3b</code></a>
release(apps): oxlint v1.75.0 &amp;&amp; oxfmt v0.60.0 (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24713">#24713</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/6ce51d3ff39d675bb3ce12abe31c5807f9683833"><code>6ce51d3</code></a>
chore(deps): update dependency oxlint-tsgolint to v7.0.2000 (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24763">#24763</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/dd18383ee1504b319aee45f832045bcd1a7285d5"><code>dd18383</code></a>
feat(linter/node): implement no-top-level-await rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24634">#24634</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/8694167be72c03776728943f5d0ca0943b944225"><code>8694167</code></a>
fix(linter/eslint/prefer-destructuring): handle typed declarations (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24616">#24616</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/e2e0f94253c5ce91a00394e2cba974bc152798db"><code>e2e0f94</code></a>
chore(docs): update sponsor section (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24588">#24588</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/16a65f269cf6b0bf19abab9de884b190ef0e8e25"><code>16a65f2</code></a>
feat(linter/react): implement function-component-definition rule (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24471">#24471</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/7f1f585b868de329c8ce6bbb4e4b036813f8bcd5"><code>7f1f585</code></a>
feat(linter): reuse <code>jest/padding-around-test-blocks</code> for
`vitest/padding-aro...</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/99978a8bbb8d97f3cb31a6e3b57e13875f36be23"><code>99978a8</code></a>
feat(linter/import/consistent-type-specifier-style): support
`prefer-top-leve...</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/2d4e8d20644e0e7446f0a381894b45ea339a0625"><code>2d4e8d2</code></a>
release(apps): oxlint v1.74.0 &amp;&amp; oxfmt v0.59.0 (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/24454">#24454</a>)</li>
<li><a
href="https://github.com/oxc-project/oxc/commit/7f80cac4fdfb9f488886267fe7a85ca2b73be85e"><code>7f80cac</code></a>
perf(linter/vue/prop-name-casing): precompile <code>ignoreProps</code>
regex pattern (<a
href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/2">#2</a>...</li>
<li>Additional commits viewable in <a
href="https://github.com/oxc-project/oxc/commits/oxlint_v1.75.0/npm/oxlint">compare
view</a></li>
</ul>
</details>
<br />

Updates `tsx` from 4.22.4 to 4.23.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/privatenumber/tsx/releases">tsx's
releases</a>.</em></p>
<blockquote>
<h2>v4.23.1</h2>
<h2><a
href="https://github.com/privatenumber/tsx/compare/v4.23.0...v4.23.1">4.23.1</a>
(2026-07-13)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>support tsImport after global preload (<a
href="https://github.com/privatenumber/tsx/commit/8d4ffc24f37b396ca2fe3f251aa92c4919f2c1a4">8d4ffc2</a>)</li>
<li><strong>watch:</strong> avoid clearing piped output (<a
href="https://github.com/privatenumber/tsx/commit/95d0672e0247a829ae4469daa493212967ea768e">95d0672</a>)</li>
<li><strong>watch:</strong> treat script and dependency paths literally
(<a
href="https://github.com/privatenumber/tsx/commit/79fddde523d3bb7d0af66682ce1265f95113a073">79fddde</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li>index transform cache lazily (<a
href="https://github.com/privatenumber/tsx/commit/e818ad608159a6fb36fb8a0bd59327fec313323d">e818ad6</a>)</li>
<li>load esbuild lazily in CLI (<a
href="https://github.com/privatenumber/tsx/commit/d0679381b60a55a9b5863603a4022a81db5d13c8">d067938</a>)</li>
<li>map Node TypeScript formats directly (<a
href="https://github.com/privatenumber/tsx/commit/cdcc6232a3277fb3028b226958b66c49a6d86c17">cdcc623</a>)</li>
<li>use sync module hooks on Node v22.22.3+ (<a
href="https://github.com/privatenumber/tsx/commit/f8992f1a50213e11b7ef8ab5121c78e0d2f29384">f8992f1</a>)</li>
</ul>
<hr />
<p>This release is also available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/tsx/v/4.23.1"><code>npm
package (@​latest dist-tag)</code></a></li>
</ul>
<h2>v4.23.0</h2>
<h1><a
href="https://github.com/privatenumber/tsx/compare/v4.22.5...v4.23.0">4.23.0</a>
(2026-07-03)</h1>
<h3>Bug Fixes</h3>
<ul>
<li>avoid redundant filesystem probes during module resolution (<a
href="https://github.com/privatenumber/tsx/commit/257bbbb7eb2784cad6a3bb7a2d9c9747d28d96ec">257bbbb</a>),
closes <a
href="https://redirect.github.com/privatenumber/tsx/issues/809">privatenumber/tsx#809</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>add multi-scenario startup benchmark suite (<a
href="https://github.com/privatenumber/tsx/commit/c178197b104d055fd3431f7448982f3156394d12">c178197</a>),
closes <a
href="https://redirect.github.com/privatenumber/tsx/issues/809">privatenumber/tsx#809</a>
<a
href="https://redirect.github.com/privatenumber/tsx/issues/809">#809</a>
<a href="https://github.com/hi/issues/signal">hi#signal</a> <a
href="https://redirect.github.com/privatenumber/tsx/issues/145">privatenumber/tsx#145</a>
<a
href="https://redirect.github.com/privatenumber/tsx/issues/809">#809</a></li>
</ul>
<hr />
<p>This release is also available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/tsx/v/4.23.0"><code>npm
package (@​latest dist-tag)</code></a></li>
</ul>
<h2>v4.22.5</h2>
<h2><a
href="https://github.com/privatenumber/tsx/compare/v4.22.4...v4.22.5">4.22.5</a>
(2026-07-02)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>isolate hook state per async module.register() registration (<a
href="https://github.com/privatenumber/tsx/commit/a305f365f0cbcc31a44549dcbb0e63dc2883e96d">a305f36</a>)</li>
</ul>
<hr />
<p>This release is also available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/tsx/v/4.22.5"><code>npm
package (@​latest dist-tag)</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/privatenumber/tsx/commit/79fddde523d3bb7d0af66682ce1265f95113a073"><code>79fddde</code></a>
fix(watch): treat script and dependency paths literally</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/e818ad608159a6fb36fb8a0bd59327fec313323d"><code>e818ad6</code></a>
perf: index transform cache lazily</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/cdcc6232a3277fb3028b226958b66c49a6d86c17"><code>cdcc623</code></a>
perf: map Node TypeScript formats directly</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/d0679381b60a55a9b5863603a4022a81db5d13c8"><code>d067938</code></a>
perf: load esbuild lazily in CLI</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/95d0672e0247a829ae4469daa493212967ea768e"><code>95d0672</code></a>
fix(watch): avoid clearing piped output</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/6fd4607e8a99d1efe27f185f749c659138f00ece"><code>6fd4607</code></a>
docs: add per-page metadata</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/f4176d8c6329a12205ed9b8c582e559cafc45018"><code>f4176d8</code></a>
docs: generate sitemap</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/8d4ffc24f37b396ca2fe3f251aa92c4919f2c1a4"><code>8d4ffc2</code></a>
fix: support tsImport after global preload</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/f0e89b244c98849dc5f9483fa33aaaf983ede18f"><code>f0e89b2</code></a>
docs: document Node's public type-stripping API vs internal loader
path</li>
<li><a
href="https://github.com/privatenumber/tsx/commit/f8992f1a50213e11b7ef8ab5121c78e0d2f29384"><code>f8992f1</code></a>
perf: use sync module hooks on Node v22.22.3+</li>
<li>Additional commits viewable in <a
href="https://github.com/privatenumber/tsx/compare/v4.22.4...v4.23.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `@agentclientprotocol/sdk` from 1.1.0 to 1.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/agentclientprotocol/typescript-sdk/releases">@​agentclientprotocol/sdk's
releases</a>.</em></p>
<blockquote>
<h2>v1.3.0</h2>
<h2><a
href="https://github.com/agentclientprotocol/typescript-sdk/compare/v1.2.1...v1.3.0">1.3.0</a>
(2026-07-21)</h2>
<h3>Features</h3>
<ul>
<li><strong>experimental:</strong> Add experimental ACP v2 API (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/223">#223</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/26cdeb48dc389335830fdb51d61dbfa88d644e96">26cdeb4</a>)</li>
<li>Update to schema v1.20.0 and v2.0.0-alpha.2 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/225">#225</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/cb61107a3a9c9881bcf1a7988596bdd17aaf93c5">cb61107</a>)</li>
</ul>
<h2>v1.2.1</h2>
<h2><a
href="https://github.com/agentclientprotocol/typescript-sdk/compare/v1.2.0...v1.2.1">1.2.1</a>
(2026-07-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>http:</strong> make SSE close and response delivery
deterministic (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/209">#209</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/2adee0f5071bd1201c84b7d8a2836cfe011d4c9a">2adee0f</a>)</li>
<li>Preserve extensible union semantics in TS schemas (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/215">#215</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/e3232216ac172283e4f77f9d75c12f820952b5e9">e323221</a>)</li>
</ul>
<h2>v1.2.0</h2>
<h2><a
href="https://github.com/agentclientprotocol/typescript-sdk/compare/v1.1.0...v1.2.0">1.2.0</a>
(2026-07-06)</h2>
<h3>Features</h3>
<ul>
<li>Update schema to 1.17.0 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/204">#204</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/fa8b5bd426fec07a85203d6a6e4b83d173243cf1">fa8b5bd</a>)</li>
<li>Update schema to 1.19.0 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/213">#213</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/6599433640feb8e36372a767554869fd5097fdd3">6599433</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>make ndJsonStream receive path linear in message size (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/210">#210</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/2fc41d2822579f754042db4d4f8c53b7c9b9ad2f">2fc41d2</a>)</li>
<li>unify JSON-RPC message validation policy across transports (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/212">#212</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/5e01eb2ac2cd72c8c6ebff1015874366c781eaa5">5e01eb2</a>),
closes <a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/211">#211</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/agentclientprotocol/typescript-sdk/blob/main/CHANGELOG.md">@​agentclientprotocol/sdk's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/agentclientprotocol/typescript-sdk/compare/v1.2.1...v1.3.0">1.3.0</a>
(2026-07-21)</h2>
<h3>Features</h3>
<ul>
<li><strong>experimental:</strong> Add experimental ACP v2 API (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/223">#223</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/26cdeb48dc389335830fdb51d61dbfa88d644e96">26cdeb4</a>)</li>
<li>Update to schema v1.20.0 and v2.0.0-alpha.2 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/225">#225</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/cb61107a3a9c9881bcf1a7988596bdd17aaf93c5">cb61107</a>)</li>
</ul>
<h2><a
href="https://github.com/agentclientprotocol/typescript-sdk/compare/v1.2.0...v1.2.1">1.2.1</a>
(2026-07-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>http:</strong> make SSE close and response delivery
deterministic (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/209">#209</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/2adee0f5071bd1201c84b7d8a2836cfe011d4c9a">2adee0f</a>)</li>
<li>Preserve extensible union semantics in TS schemas (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/215">#215</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/e3232216ac172283e4f77f9d75c12f820952b5e9">e323221</a>)</li>
</ul>
<h2><a
href="https://github.com/agentclientprotocol/typescript-sdk/compare/v1.1.0...v1.2.0">1.2.0</a>
(2026-07-06)</h2>
<h3>Features</h3>
<ul>
<li>Update schema to 1.17.0 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/204">#204</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/fa8b5bd426fec07a85203d6a6e4b83d173243cf1">fa8b5bd</a>)</li>
<li>Update schema to 1.19.0 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/213">#213</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/6599433640feb8e36372a767554869fd5097fdd3">6599433</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>make ndJsonStream receive path linear in message size (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/210">#210</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/2fc41d2822579f754042db4d4f8c53b7c9b9ad2f">2fc41d2</a>)</li>
<li>unify JSON-RPC message validation policy across transports (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/212">#212</a>)
(<a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/5e01eb2ac2cd72c8c6ebff1015874366c781eaa5">5e01eb2</a>),
closes <a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/211">#211</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/fa32570936b42bf4f3aef175c6e926860914b638"><code>fa32570</code></a>
chore(main): release 1.3.0 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/224">#224</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/cb61107a3a9c9881bcf1a7988596bdd17aaf93c5"><code>cb61107</code></a>
feat: Update to schema v1.20.0 and v2.0.0-alpha.2 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/225">#225</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/26cdeb48dc389335830fdb51d61dbfa88d644e96"><code>26cdeb4</code></a>
feat(experimental): Add experimental ACP v2 API (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/223">#223</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/0daecae58483e362753004c985119865d7cc6edd"><code>0daecae</code></a>
chore(deps-dev): bump nanoid from 3.3.15 to 3.3.16 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/222">#222</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/32c3bc1fc391b21d1c6af9fa91158d17bfbdfe1d"><code>32c3bc1</code></a>
chore(deps): bump the minor group with 16 updates (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/221">#221</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/3eecb545bb8839adef73516d2b9b51f54a5ee790"><code>3eecb54</code></a>
chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/220">#220</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/76da0322243549ee6122ddf62cb1392537991c43"><code>76da032</code></a>
chore(deps): bump the minor group with 42 updates (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/216">#216</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/26da1ae7ab66fae0f5e77272dee3e5d562d24aee"><code>26da1ae</code></a>
chore(main): release 1.2.1 (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/214">#214</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/e3232216ac172283e4f77f9d75c12f820952b5e9"><code>e323221</code></a>
fix: Preserve extensible union semantics in TS schemas (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/215">#215</a>)</li>
<li><a
href="https://github.com/agentclientprotocol/typescript-sdk/commit/2adee0f5071bd1201c84b7d8a2836cfe011d4c9a"><code>2adee0f</code></a>
fix(http): make SSE close and response delivery deterministic (<a
href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/209">#209</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/agentclientprotocol/typescript-sdk/compare/v1.1.0...v1.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `@daytona/sdk` from 0.192.0 to 0.200.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/daytona/clients/releases">@​daytona/sdk's
releases</a>.</em></p>
<blockquote>
<h2>v0.200.1</h2>
<h2>0.200.1 (2026-07-22)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>sdk-python,sdk-ruby:</strong> share one expiry worker across
event subscriptions (<a
href="https://redirect.github.com/daytona/clients/pull/109">#109</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>sync go.sum for v0.200.0 (<a
href="https://redirect.github.com/daytona/clients/pull/107">#107</a>)</li>
<li><strong>sdk-go:</strong> bump to v0.200.1 (<a
href="https://redirect.github.com/daytona/clients/pull/112">#112</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>daytonaBot</li>
<li>Mirko Džaja <a
href="https://github.com/MDzaja"><code>@​MDzaja</code></a></li>
</ul>
<h2>v0.200.0</h2>
<h2>0.200.0 (2026-07-21)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>cli,sdk-ruby:</strong> enforce TLS verification in Ruby
Socket.IO client and create CLI config with 0600 (<a
href="https://redirect.github.com/daytona/clients/pull/96">#96</a>)</li>
<li><strong>sdk-go:</strong> make HTTP timeout configurable and honor
long execution timeouts (<a
href="https://redirect.github.com/daytona/clients/pull/103">#103</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>sync go.sum for v0.199.0 (<a
href="https://redirect.github.com/daytona/clients/pull/95">#95</a>)</li>
<li>add publish CLI checkbox and skip SDKs without an explicit version
(<a
href="https://github.com/daytona/clients/commit/c7a147762">c7a147762</a>)</li>
<li>add opt-in publish CLI checkbox and skip SDKs without an explicit
version (<a
href="https://github.com/daytona/clients/commit/88a17a89b">88a17a89b</a>)</li>
<li><strong>sdk-go:</strong> bump to v0.200.0 (<a
href="https://redirect.github.com/daytona/clients/pull/104">#104</a>)</li>
<li><strong>sdk-python:</strong> retry poetry lock to tolerate stale
PyPI CDN (<a
href="https://github.com/daytona/clients/commit/dd1c2d500">dd1c2d500</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>daytonaBot</li>
<li>MDzaja <a
href="https://github.com/MDzaja"><code>@​MDzaja</code></a></li>
<li>Mirko Džaja <a
href="https://github.com/MDzaja"><code>@​MDzaja</code></a></li>
</ul>
<h2>v0.199.0</h2>
<h2>0.199.0 (2026-07-17)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>sdk,cli:</strong> sandbox TTL support (<a
href="https://redirect.github.com/daytona/clients/pull/74">#74</a>)</li>
<li>⚠️ <strong>sdk-python:</strong> require Python &gt;=3.10 (<a
href="https://redirect.github.com/daytona/clients/pull/83">#83</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>sync go.sum for v0.198.0 (<a
href="https://redirect.github.com/daytona/clients/pull/82">#82</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/daytona/clients/commit/3d2223c79fe528693c00e331ae85499350c6d809"><code>3d2223c</code></a>
chore(sdk-go): bump to v0.200.1 (<a
href="https://redirect.github.com/daytona/clients/issues/112">#112</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/abdc95d754f30f086b2ab103ca40abb29f094dfe"><code>abdc95d</code></a>
fix(sdk-python,sdk-ruby): share one expiry worker across event
subscriptions ...</li>
<li><a
href="https://github.com/daytona/clients/commit/cbc24fc95ee2d52471df3f1413b130669321b219"><code>cbc24fc</code></a>
chore: sync go.sum for v0.200.0 (<a
href="https://redirect.github.com/daytona/clients/issues/107">#107</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/8f2d8fceafda70684ee63e1abb28196175d68aa8"><code>8f2d8fc</code></a>
chore(sdk-go): bump to v0.200.0 (<a
href="https://redirect.github.com/daytona/clients/issues/104">#104</a>)</li>
<li><a
href="https://github.com/daytona/clients/commit/431e9698b2551edaf9f60acdd1bb769c701b5271"><code>431e969</code></a>
fix(sdk-go): make HTTP timeout configurable and honor long execution
timeouts...</li>
<li><a
href="https://github.com/daytona/clients/commit/a0ce4ec78d6affb46b82c33958d6bbd72e0041ac"><code>a0ce4ec</code></a>
fix(cli,sdk-ruby): enforce TLS verification in Ruby Socket.IO client and
crea...</li>
<li><a
href="https://github.com/daytona/clients/commit/dd1c2d5008eb4ef2023c1b82a26b9a4d490d3851"><code>dd1c2d5</code></a>
chore(sdk-python): retry poetry lock to tolerate stale PyPI CDN</li>
<li><a
href="https://github.com/daytona/clients/commit/88a17a89b6d1d7a3aa3c5249cc6fd402bbd0306d"><code>88a17a8</code></a>
chore: add opt-in publish CLI checkbox and skip SDKs without an explicit
version</li>
<li><a
href="https://github.com/daytona/clients/commit/c7a147762880f5900480ddfe782b9b8ade3ca97c"><code>c7a1477</code></a>
chore: add publish CLI checkbox and skip SDKs without an explicit
version</li>
<li><a
href="https://github.com/daytona/clients/commit/d1f23d775b85078c0a7c42b598327db153cf53b3"><code>d1f23d7</code></a>
chore: sync go.sum for v0.199.0 (<a
href="https://redirect.github.com/daytona/clients/issues/95">#95</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/daytona/clients/compare/v0.192.0...v0.200.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `modal` from 0.8.2 to 0.9.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/modal-labs/modal-client/blob/main/CHANGELOG_GO_JS.md">modal's
changelog</a>.</em></p>
<blockquote>
<h2>js/v0.9.0, go/v0.9.0</h2>
<ul>
<li>(Go, JS) <code>Functions.FromName</code> / <code>Cls.FromName</code>
(Go) and <code>client.functions.fromName</code> /
<code>client.cls.fromName</code> (JS) now accept an optional
<code>Version</code> (Go) / <code>version</code> (JS) parameter to look
up a version-pinned Function or Cls.</li>
<li>(Go, JS) <code>Secrets.FromMap</code> (Go) /
<code>client.secrets.fromObject</code> (JS) is now lazy, so the returned
<code>Secret</code> has an empty <code>SecretID</code> (Go) /
<code>secretId</code> (JS) until it is first used. Latency for
<code>Sandbox.ExperimentalCreate</code> /
<code>Sandbox.experimentalCreate</code> and <code>Sandbox.Exec</code> /
<code>Sandbox.exec</code> is improved by sending the secrets directly to
the Sandbox and avoiding the secret creation limits.</li>
<li>(Go, JS) <code>Function.WithOptions</code> /
<code>Cls.WithOptions</code> (Go) and <code>Function_.withOptions</code>
/ <code>Cls.withOptions</code> (JS) now accept a
<code>RoutingRegion</code> / <code>routingRegion</code> option to
override the region the Function's or Cls's inputs and outputs are
routed through.</li>
<li>(Go, JS) Added <code>Sandbox.Filesystem.Watch</code> (Go) /
<code>Sandbox.filesystem.watch</code> (JS) to watch a path in the
Sandbox for filesystem changes. It yields <code>FileWatchEvent</code>
objects and supports <code>Recursive</code> / <code>recursive</code>, an
event-type <code>Filter</code> / <code>filter</code>, and a
<code>Timeout</code> / <code>timeoutMs</code> bound.</li>
<li><strong>Breaking:</strong> (Go, JS)
<code>Sandbox.ReloadVolumes</code> (Go) /
<code>Sandbox.reloadVolumes</code> (JS) now blocks until the Volumes
have been reloaded, bounded by a new timeout (55 seconds by default)
that is configurable via <code>SandboxReloadVolumesParams.Timeout</code>
(Go) / <code>SandboxReloadVolumesParams.timeoutMs</code> (JS). If the
reload does not complete within that window, a <code>TimeoutError</code>
is raised.</li>
<li><strong>Breaking:</strong> (Go, JS) Renamed the
<code>VolumeMountOptions</code> type to
<code>VolumeMountOptionsParams</code>. In Go, update
<code>WithMountOptions(&amp;VolumeMountOptions{...})</code> /
<code>withMountOptions</code> type annotations accordingly.</li>
<li><strong>Breaking:</strong> (Go) Changed
<code>OutboundCIDRAllowlist</code> and
<code>OutboundDomainAllowlist</code> in <code>SandboxCreateParams</code>
from <code>[]string</code> to <code>*Allowlist</code>. A non-nil
<code>*Allowlist</code> enables allowlist mode (even with empty
<code>Entries</code>, which blocks all traffic of that type);
<code>nil</code> means open access. Migrate <code>OutboundCIDRAllowlist:
[]string{&quot;10.0.0.0/8&quot;}</code> to <code>OutboundCIDRAllowlist:
&amp;Allowlist{Entries: []string{&quot;10.0.0.0/8&quot;}}</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/modal-labs/modal-client/commit/77d609d2fabac3829df7e82cb57b120a383d0512"><code>77d609d</code></a>
Prepare Go/JS release 0.9.0 (<a
href="https://redirect.github.com/modal-labs/modal-client/issues/47971">#47971</a>)</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/08386a15ffa07ce8c2ce98812a1b257b901d7304"><code>08386a1</code></a>
Stream sandbox filesystem writes over TaskExecStdinWriteStream (<a
href="https://redirect.github.com/modal-labs/modal-client/issues/47234">#47234</a>)</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/66a31e0f0c963afecf42ace06b80098a8919315e"><code>66a31e0</code></a>
[sdk] proto for billing.summary() (<a
href="https://redirect.github.com/modal-labs/modal-client/issues/47659">#47659</a>)</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/d227469034b9aa005549ce65593f040db636fd14"><code>d227469</code></a>
Rename VolumeMountOptions to VolumeMountOptionsParams (<a
href="https://redirect.github.com/modal-labs/modal-client/issues/47885">#47885</a>)</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/9928de6f170598d95d454f88b01417bb88fe9cd3"><code>9928de6</code></a>
Support tag filters in V2 sandbox list (Python, Go, JS clients) (<a
href="https://redirect.github.com/modal-labs/modal-client/issues/47871">#47871</a>)</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/36958ac60bd3610ea2987700df3d1d16c5a37e25"><code>36958ac</code></a>
[Volume Experimental Options] Add experimental_options to Python client
Volum...</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/c3265a204b892df609c122fe2c4275b8d693ff90"><code>c3265a2</code></a>
Sandboxes [new FS API]: add watch to JS SDK (<a
href="https://redirect.github.com/modal-labs/modal-client/issues/43323">#43323</a>)</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/8d7368ab5e5e8940ba01c9f2f3ca58d19f900134"><code>8d7368a</code></a>
Fix modal curl help (<a
href="https://redirect.github.com/modal-labs/modal-client/issues/47836">#47836</a>)</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/5f2f5611d471bbccfee17b8ee1b7f95b037d973e"><code>5f2f561</code></a>
Implement SandboxTagsGetV2 and SandboxTagsSetV2 in the sandbox
controller (<a
href="https://redirect.github.com/modal-labs/modal-client/issues/4">#4</a>...</li>
<li><a
href="https://github.com/modal-labs/modal-client/commit/0686911ded7b0d7733bf21b252f4311305e3d9e6"><code>0686911</code></a>
[Volume Experimental Options] Add VolumeCreateOptions message to
VolumeGetOrC...</li>
<li>Additional commits viewable in <a
href="https://github.com/modal-labs/modal-client/compare/go/v0.8.2...go/v0.9.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `magic-string` from 1.0.0 to 1.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Rich-Harris/magic-string/releases">magic-string's
releases</a>.</em></p>
<blockquote>
<h2>v1.1.0</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Trim replacements longer than the range they replace  -  by <a
href="https://github.com/sarathfrancis90"><code>@​sarathfrancis90</code></a>
in <a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/312">Rich-Harris/magic-string#312</a>
<a
href="https://github.com/Rich-Harris/magic-string/commit/ec1a139"><!--
raw HTML omitted -->(ec1a1)<!-- raw HTML omitted --></a></li>
</ul>
<h3>   🏎 Performance</h3>
<ul>
<li>Use a <code>Map</code> for tracking chunks  -  by <a
href="https://github.com/43081j"><code>@​43081j</code></a> in <a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/313">Rich-Harris/magic-string#313</a>
<a
href="https://github.com/Rich-Harris/magic-string/commit/25d7461"><!--
raw HTML omitted -->(25d74)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/Rich-Harris/magic-string/compare/v1.0.0...v1.1.0">View
changes on GitHub</a></h5>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Rich-Harris/magic-string/blob/master/CHANGELOG.md">magic-string's
changelog</a>.</em></p>
<blockquote>
<h1><a
href="https://github.com/Rich-Harris/magic-string/compare/v1.0.0...v1.1.0">1.1.0</a>
(2026-07-23)</h1>
<h3>Bug Fixes</h3>
<ul>
<li>trim replacements longer than the range they replace (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/312">#312</a>)
(<a
href="https://github.com/Rich-Harris/magic-string/commit/ec1a13955a4d7623175256520a3eb276ed365af8">ec1a139</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li>use a <code>Map</code> for tracking chunks (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/313">#313</a>)
(<a
href="https://github.com/Rich-Harris/magic-string/commit/25d746120d84bd778c100ab75fa658160eb0865d">25d7461</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Rich-Harris/magic-string/commit/f51bfc9032a0606fb110e61279fb10f01907dd69"><code>f51bfc9</code></a>
chore: release v1.1.0</li>
<li><a
href="https://github.com/Rich-Harris/magic-string/commit/ec1a13955a4d7623175256520a3eb276ed365af8"><code>ec1a139</code></a>
fix: trim replacements longer than the range they replace (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/312">#312</a>)</li>
<li><a
href="https://github.com/Rich-Harris/magic-string/commit/25d746120d84bd778c100ab75fa658160eb0865d"><code>25d7461</code></a>
perf: use a <code>Map</code> for tracking chunks (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/313">#313</a>)</li>
<li><a
href="https://github.com/Rich-Harris/magic-string/commit/80c16ca63939f81666414991ab11bdbf000f6441"><code>80c16ca</code></a>
chore: disable sourcemaps (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/311">#311</a>)</li>
<li>See full diff in <a
href="https://github.com/Rich-Harris/magic-string/compare/v1.0.0...v1.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `langsmith` from 0.7.14 to 0.8.7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langsmith-sdk/releases">langsmith's
releases</a>.</em></p>
<blockquote>
<h2>v0.8.7</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: reconnect sandbox command streams on EOF by <a
href="https://github.com/ramon-langchain"><code>@​ramon-langchain</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2941">langchain-ai/langsmith-sdk#2941</a></li>
<li>feat(sandbox): build snapshots from Dockerfiles by <a
href="https://github.com/langchain-infra"><code>@​langchain-infra</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2950">langchain-ai/langsmith-sdk#2950</a></li>
<li>fix(python): add organization id to context URLs by <a
href="https://github.com/vishnu-ssuresh"><code>@​vishnu-ssuresh</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2945">langchain-ai/langsmith-sdk#2945</a></li>
<li>fix(js): add organization id to context URLs by <a
href="https://github.com/vishnu-ssuresh"><code>@​vishnu-ssuresh</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2946">langchain-ai/langsmith-sdk#2946</a></li>
<li>release(py): 0.8.7 by <a
href="https://github.com/ramon-langchain"><code>@​ramon-langchain</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2947">langchain-ai/langsmith-sdk#2947</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.6...v0.8.7">https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.6...v0.8.7</a></p>
<h2>v0.8.6</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps-dev): bump <code>@​google/genai</code> from 1.50.1 to
2.0.1 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2875">langchain-ai/langsmith-sdk#2875</a></li>
<li>chore(deps): bump mako from 1.3.11 to 1.3.12 in /python by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2880">langchain-ai/langsmith-sdk#2880</a></li>
<li>chore(deps): bump authlib from 1.6.11 to 1.6.12 in /python by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2888">langchain-ai/langsmith-sdk#2888</a></li>
<li>chore(deps): bump hono from 4.12.15 to 4.12.18 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2894">langchain-ai/langsmith-sdk#2894</a></li>
<li>chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2895">langchain-ai/langsmith-sdk#2895</a></li>
<li>chore(deps-dev): bump <code>@​anthropic-ai/sdk</code> from 0.94.0 to
0.95.0 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2881">langchain-ai/langsmith-sdk#2881</a></li>
<li>chore(deps): bump postcss from 8.5.8 to 8.5.14 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2898">langchain-ai/langsmith-sdk#2898</a></li>
<li>chore(deps): bump <code>@​protobufjs/utf8</code> from 1.1.0 to 1.1.1
in /js/internal/environment_tests/test-exports-vite in the npm_and_yarn
group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2908">langchain-ai/langsmith-sdk#2908</a></li>
<li>chore(deps): bump hono from 4.12.18 to 4.12.19 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2909">langchain-ai/langsmith-sdk#2909</a></li>
<li>chore(deps): bump protobufjs from 7.5.7 to 8.0.1 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2896">langchain-ai/langsmith-sdk#2896</a></li>
<li>chore(deps): bump idna from 3.11 to 3.15 in /python by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2913">langchain-ai/langsmith-sdk#2913</a></li>
<li>chore(deps-dev): bump <code>@​anthropic-ai/sdk</code> from 0.95.0 to
0.95.1 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2912">langchain-ai/langsmith-sdk#2912</a></li>
<li>AI SDK telemetry and AI SDK v7 support by <a
href="https://github.com/dqbd"><code>@​dqbd</code></a> in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2901">langchain-ai/langsmith-sdk#2901</a></li>
<li>feat: install websockets by default for sandbox by <a
href="https://github.com/open-swe"><code>@​open-swe</code></a>[bot] in
<a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2916">langchain-ai/langsmith-sdk#2916</a></li>
<li>release(js): 0.7.2 by <a
href="https://github.com/dqbd"><code>@​dqbd</code></a> in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2922">langchain-ai/langsmith-sdk#2922</a></li>
<li>feat: add list_runs_from_annotation_queue method [closes LSDK-193]
by <a
href="https://github.com/open-swe"><code>@​open-swe</code></a>[bot] in
<a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2892">langchain-ai/langsmith-sdk#2892</a></li>
<li>chore(deps-dev): bump <code>@​anthropic-ai/sdk</code> from 0.95.1 to
0.95.2 in /js by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2917">langchain-ai/langsmith-sdk#2917</a></li>
<li>chore(deps-dev): bump types-pyyaml from 6.0.12.20250915 to
6.0.12.20260518 in /python by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2927">langchain-ai/langsmith-sdk#2927</a></li>
<li>chore(deps): update pydata-sphinx-theme requirement from &gt;=0.15
to &gt;=0.18.0 in /python by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2928">langchain-ai/langsmith-sdk#2928</a></li>
<li>chore: exclude langsmith_api from ruff linter by <a
href="https://github.com/KiewanVillatel"><code>@​KiewanVillatel</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2933">langchain-ai/langsmith-sdk#2933</a></li>
<li>fix(python): retry sandbox connect timeouts by <a
href="https://github.com/ramon-langchain"><code>@​ramon-langchain</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2940">langchain-ai/langsmith-sdk#2940</a></li>
<li>fix(js): [LSDK-202] return context hub URLs for pushed contexts by
<a
href="https://github.com/vishnu-ssuresh"><code>@​vishnu-ssuresh</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2939">langchain-ai/langsmith-sdk#2939</a></li>
<li>fix(python): RunTree.create_child appends to self.child_runs
LSE-2221 by <a
href="https://github.com/catherine-langchain"><code>@​catherine-langchain</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2942">langchain-ai/langsmith-sdk#2942</a></li>
<li>release(js): 0.7.3 by <a
href="https://github.com/vishnu-ssuresh"><code>@​vishnu-ssuresh</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2943">langchain-ai/langsmith-sdk#2943</a></li>
<li>fix(python): [LSDK-202] return context hub URLs for pushed contexts
by <a
href="https://github.com/vishnu-ssuresh"><code>@​vishnu-ssuresh</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2938">langchain-ai/langsmith-sdk#2938</a></li>
<li>release(py): 0.8.6 by <a
href="https://github.com/vishnu-ssuresh"><code>@​vishnu-ssuresh</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2944">langchain-ai/langsmith-sdk#2944</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/KiewanVillatel"><code>@​KiewanVillatel</code></a>
made their first contribution in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2933">langchain-ai/langsmith-sdk#2933</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.5...v0.8.6">https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.5...v0.8.6</a></p>
<h2>v0.8.5</h2>
<h2>What's Changed</h2>
<ul>
<li>release(js): 0.7.0 by <a
href="https://github.com/ramon-langchain"><code>@​ramon-langchain</code></a>
in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2890">langchain-ai/langsmith-sdk#2890</a></li>
<li>fix(js): add alias for <code>experimental/sandbox</code> to appease
broad peer dep range within <code>deepagents</code> by <a
href="https://github.com/dqbd"><code>@​dqbd</code></a> in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2893">langchain-ai/langsmith-sdk#2893</a></li>
<li>feat(js): allow disabling multipart streaming via env variable by <a
href="https://github.com/dqbd"><code>@​dqbd</code></a> in <a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2900">langchain-ai/langsmith-sdk#2900</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langsmith-sdk/commit/1b3bfc44efe00643c5906af90eb7868e45ad830a"><code>1b3bfc4</code></a>
release(py): 0.8.7 (<a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/2947">#2947</a>)</li>
<li><a
href="https://github.com/langchain-ai/langsmith-sdk/commit/9303f0b9187140ff4ed89b89553b499fe369d48d"><code>9303f0b</code></a>
fix(js): add organization id to context URLs (<a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/2946">#2946</a>)</li>
<li><a
href="https://github.com/langchain-ai/langsmith-sdk/commit/cf028ed6f4d3aac3b8bd762b0440b69ae5fa5bbd"><code>cf028ed</code></a>
fix(python): add organization id to context URLs (<a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/2945">#2945</a>)</li>
<li><a
href="https://github.com/langchain-ai/langsmith-sdk/commit/52305b2815bfc693f64db9b211f588ac2cd99845"><code>52305b2</code></a>
feat(sandbox): build snapshots from Dockerfiles (<a
href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/2950">#29...

_Description has been truncated_

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 15:26:37 -07:00
dependabot[bot] 24ea7fa8ac build(deps): bump the major-deps-updates-main group across 1 directory with 2 updates (#695)
Bumps the major-deps-updates-main group with 2 updates in the /
directory: [typescript](https://github.com/microsoft/TypeScript) and
[magic-string](https://github.com/Rich-Harris/magic-string).

Updates `typescript` from 6.0.3 to 7.0.2
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/microsoft/TypeScript/commits">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~microsoft1es">microsoft1es</a>, a new
releaser for typescript since your current version.</p>
</details>
<br />

Updates `magic-string` from 0.30.21 to 1.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Rich-Harris/magic-string/releases">magic-string's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.0</h2>
<p>In <code>magic-string</code> v1.0.0, it's now <strong>pure
ESM</strong>, and the type declarations are built from the TypeScript
source. This means the previous CJS, UMD, and IIFE builds are now
dropped as we believe the ecosystem is moving forward for ESM. The
version was bumped to v1.0.0 instead of v0.31 to distinguish this
breaking change, and since magic-string has been verified by the
ecosystem for over a decade, the API is stable enough to be marked as
v1.</p>
<p>Genreated changelogs:</p>
<h3>   🚨 Breaking Changes</h3>
<ul>
<li>Migrate build to pure ESM and TypeScript  -  by <a
href="https://github.com/sxzz"><code>@​sxzz</code></a> in <a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/310">Rich-Harris/magic-string#310</a>
<a
href="https://github.com/Rich-Harris/magic-string/commit/0e22897"><!--
raw HTML omitted -->(0e228)<!-- raw HTML omitted --></a></li>
</ul>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Avoid crash when moving a zero-length range  -  by <a
href="https://github.com/sarathfrancis90"><code>@​sarathfrancis90</code></a>
and <a href="https://github.com/antfu"><code>@​antfu</code></a> in <a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/307">Rich-Harris/magic-string#307</a>
<a
href="https://github.com/Rich-Harris/magic-string/commit/56fe8cb"><!--
raw HTML omitted -->(56fe8)<!-- raw HTML omitted --></a></li>
</ul>
<h3>   🏎 Performance</h3>
<ul>
<li>Add fast path for non-exclusion indent  -  by <a
href="https://github.com/43081j"><code>@​43081j</code></a> in <a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/308">Rich-Harris/magic-string#308</a>
<a
href="https://github.com/Rich-Harris/magic-string/commit/992baba"><!--
raw HTML omitted -->(992ba)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/Rich-Harris/magic-string/compare/v0.30.21...v1.0.0">View
changes on GitHub</a></h5>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Rich-Harris/magic-string/blob/master/CHANGELOG.md">magic-string's
changelog</a>.</em></p>
<blockquote>
<h1><a
href="https://github.com/Rich-Harris/magic-string/compare/v0.30.21...v1.0.0">1.0.0</a>
(2026-07-16)</h1>
<h3>Bug Fixes</h3>
<ul>
<li>avoid crash when moving a zero-length range (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/307">#307</a>)
(<a
href="https://github.com/Rich-Harris/magic-string/commit/56fe8cb61e6b64a778e5eb7d0334c57aacb0c4c8">56fe8cb</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li>add fast path for non-exclusion indent (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/308">#308</a>)
(<a
href="https://github.com/Rich-Harris/magic-string/commit/992baba37ac10bb5e35ad00fb516a272b8757a91">992baba</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Rich-Harris/magic-string/commit/2da7cf08eb1dfde70d95b03115727ab50694472d"><code>2da7cf0</code></a>
chore: release v1.0.0</li>
<li><a
href="https://github.com/Rich-Harris/magic-string/commit/56fe8cb61e6b64a778e5eb7d0334c57aacb0c4c8"><code>56fe8cb</code></a>
fix: avoid crash when moving a zero-length range (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/307">#307</a>)</li>
<li><a
href="https://github.com/Rich-Harris/magic-string/commit/992baba37ac10bb5e35ad00fb516a272b8757a91"><code>992baba</code></a>
perf: add fast path for non-exclusion indent (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/308">#308</a>)</li>
<li><a
href="https://github.com/Rich-Harris/magic-string/commit/0e22897fd5e792fdb7a1d9ccde5c1fbce6aa596b"><code>0e22897</code></a>
feat!: migrate build to pure ESM and TypeScript (<a
href="https://redirect.github.com/Rich-Harris/magic-string/issues/310">#310</a>)</li>
<li>See full diff in <a
href="https://github.com/Rich-Harris/magic-string/compare/v0.30.21...v1.0.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 14:45:40 -07:00
Hunter Lovell 0e6a35b647 fix(deno): extend reconnect readiness retry (#706)
## Summary

Stabilizes the Deno sandbox reconnection integration test when Deno
Deploy has not yet exposed a new deployment to a second WebSocket
client. The test now uses a bounded readiness window instead of failing
after the shorter retry interval.

## Changes

### `@langchain/deno`

- Extend the reconnect test's retry window to 12 attempts with a
2-second delay.
- Document that temporary `404 DEPLOYMENT_NOT_FOUND` responses are
expected during Deno Deploy propagation.
2026-07-23 21:26:02 -07:00
github-actions[bot] a55022dc2f chore: version packages (rc) (#699)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

`main` is currently in **pre mode** so this branch has prereleases
rather than normal releases. If you want to exit prereleases, run
`changeset pre exit` on `main`.

⚠️⚠️⚠️⚠️⚠️⚠️

# Releases
## deepagents@1.12.0-rc.0

### Minor Changes

- [#703](https://github.com/langchain-ai/deepagentsjs/pull/703)
[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126)
Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): adopt
more minimal prompting

We've observed that current models don't need as verbose of prompting
guidance, so we're reducing the amount of perscriptive guidance that
deepagents has. This is reflected in the generic system prompt (which is
now blank), and in the tool descriptions (which have been simplified).

- [#674](https://github.com/langchain-ai/deepagentsjs/pull/674)
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)
Thanks [@hntrl](https://github.com/hntrl)! - feat(filesystem): allow
`write_file` to create missing files or completely replace existing
files
## deepagents-acp@0.1.21-rc.0

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0-rc.0
## @langchain/daytona@1.0.0-rc.0

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0-rc.0
## @langchain/deno@1.0.0-rc.0

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0-rc.0
## @langchain/modal@1.0.0-rc.0

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0-rc.0
## @langchain/node-vfs@1.0.0-rc.0

### Patch Changes

- [#674](https://github.com/langchain-ai/deepagentsjs/pull/674)
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)
Thanks [@hntrl](https://github.com/hntrl)! - fix: allow
`VfsBackend.write` to overwrite existing files while continuing to
reject symlinks

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0-rc.0
## @langchain/quickjs@1.0.0-rc.0

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0-rc.0
## @langchain/sandbox-standard-tests@2.0.0-rc.0

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0-rc.0
## @deepagents/evals@0.0.20-rc.0

### Patch Changes

- Updated dependencies
[[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126),
[`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]:
  - deepagents@1.12.0-rc.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-23 21:18:40 -07:00
Hunter Lovell d25097f78d feat(deepagents): simplify prompting (#703)
## Summary

The SDK currently ships authored base prose plus middleware guidance
that largely duplicates the tool schemas. This change adopts a more lean
default: no authored base prompt, no duplicate built-in usage prose, and
concise tool descriptions.

Skills, memory, custom system prompts, custom tool descriptions, and
required filesystem routing context remain intact. The legacy
base-prompt surface is removed rather than preserved as a default path.

## Changes

### Default prompt

- Remove the authored default base prompt and its obsolete public
surface.
- Suppress LangChain's default todo middleware prompt while leaving
deepagents-owned middleware prompt-free by default.
- Remove unused filesystem, subagent, async-subagent, and execution
prompt constants and exports.

### Durable tool guidance

- Keep large-result recovery guidance in `read_file` and `grep`
descriptions.
- Keep async task status freshness guidance in `check_async_task` and
`list_async_tasks` descriptions.
- Trim filesystem and task descriptions to their purpose and
load-bearing constraints.
- Build grep and execute descriptions from the configured filesystem
tool set so they do not recommend unavailable tools.

### Token impact

Offline (`o200k_base`, default-agent tool schemas):

| Tool | Before | After | Delta |
| --- | ---: | ---: | ---: |
| `task` | 1,664 | 389 | -77% |
| `read_file` | 728 | 494 | -32% |
| `grep` | 688 | 555 | -19% |
| `edit_file` | 273 | 257 | -6% |
| `glob` | 217 | 172 | -21% |
| `write_file` | 177 | 177 | — |
| `delete` | 146 | 146 | — |
| `ls` | 111 | 111 | — |
| **Total** | **4,005** | **2,302** | **-43%** |

For a default-agent `hello` turn, input tokens drop from 5,395 to 1,895
(-65%).

### Evaluation results

The lean prompt matched the baseline on correctness (0.81) and solve
rate (0.635 vs. 0.634). Unified evaluation macro and micro scores
improved from 0.413 to 0.437 and from 0.371 to 0.394, respectively. (see
more detailed results in
https://github.com/langchain-ai/deepagents/pull/5009 and
https://github.com/langchain-ai/deepagents/pull/4859)
2026-07-23 21:06:12 -07:00
Hunter Lovell 5833cec84f fix(daytona): isolate integration test cleanup (#702)
## Summary

Scopes Daytona integration-test cleanup to a single GitHub Actions run
and attempt, preventing concurrent CI runs from deleting each other’s
active sandboxes.

## Changes

- Add a per-execution sandbox label derived from GitHub’s run ID and
attempt, with a local-process fallback.
- Remove the ineffective pre-test cleanup, which cannot match sandboxes
from earlier runs once labels are per-execution.
- Configure a 15-minute Daytona auto-delete TTL after the existing
5-minute auto-stop interval, bounding leaks when a cancelled process
cannot run final cleanup.
- Correct the Deno reconnect integration test to keep its duration-based
sandbox active while opening a second client, because `close()`
terminates the remote deployment.
2026-07-23 20:24:58 -07:00
Hunter Lovell fd6219ae75 chore(deepagents): revert system prompt configuration (#700)
reverts #669
2026-07-23 19:12:05 -07:00
Hunter Lovell dd142fe4fc feat(deepagents): allow write_file to overwrite files (#674)
## Summary

`write_file` now creates missing files and replaces existing files
entirely, removing the previous create-only error path while preserving
write permissions and symlink protections.

## Changes

### deepagents filesystem backends

- Updated `FilesystemBackend`, `StateBackend`, `StoreBackend`,
`BaseSandbox`, and `node-vfs` write behavior to allow full-file
replacement on existing paths.
- Preserved path safety and symlink protections in filesystem-backed
writes.
- Removed the sandbox existence precheck so writes rely on the
upload/write transport.

### Tool prompts and examples

- Aligned the `write_file` tool description and schema text with the
Python SDK wording.
- Updated sandbox example prompts so `write_file` is described as
creating or fully replacing files.

### Tests and evals

- Updated backend, middleware, and shared sandbox standard tests that
previously expected an existing-file error.
- Added overwrite coverage for filesystem, sandbox, state, store,
middleware, node-vfs, and file-operation evals.

### Release

- Added a changeset for `deepagents` documenting the new overwrite
behavior.
2026-07-22 16:10:05 -07:00
Christian Bromann b215e70d88 ci: route integration tests through LangSmith LLM Gateway (#697)
## Summary
- Add a shared Vitest setup that remaps Anthropic/OpenAI/etc. clients
onto the LangSmith LLM Gateway when `LANGSMITH_GATEWAY_KEY` is present.
- Wire that setup into all package int-test Vitest configs.
- Pass `LANGSMITH_GATEWAY_KEY` into the CI integration-test job (falls
back to direct provider keys if unset).
2026-07-20 16:28:01 -07:00
github-actions[bot] 60e32118b0 chore: version packages (#694)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents-acp@0.1.20

### Patch Changes

- Updated dependencies
[[`2ebb178`](https://github.com/langchain-ai/deepagentsjs/commit/2ebb1785e4625ecf82635582e17fe41fbfbac603)]:
  - deepagents@1.11.1
## deepagents@1.11.1

### Patch Changes

- [#693](https://github.com/langchain-ai/deepagentsjs/pull/693)
[`2ebb178`](https://github.com/langchain-ai/deepagentsjs/commit/2ebb1785e4625ecf82635582e17fe41fbfbac603)
Thanks [@colifran](https://github.com/colifran)! - fix(deepagents):
return recoverable errors for invalid/denied filesystem tool paths
instead of throwing
## @deepagents/evals@0.0.19

### Patch Changes

- Updated dependencies
[[`2ebb178`](https://github.com/langchain-ai/deepagentsjs/commit/2ebb1785e4625ecf82635582e17fe41fbfbac603)]:
  - deepagents@1.11.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-17 15:10:22 -07:00
Colin Francis 2ebb1785e4 fix(deepagents): return recoverable errors for invalid/denied filesystem tool paths instead of throwing (#693)
### Summary

Invalid (non-absolute, `..`, or `~`) or denied filesystem paths passed
by an agent cause the tool to throw which raises a `MiddlewareError` and
causes the whole agent run to crash.

This PR replaces `enforcePermission` which was re-validating the path
without a try/catch with `checkPermission` which returns the error to
the model as a normal tool result so the model can correct the path and
try again instead of crashing.

### Tests

Updated the three permission suites to assert an error result instead of
a throw and added a regression block for `~`/relative/`..` paths that
returns a recoverable error and never calls the backend.
2026-07-17 14:58:14 -07:00
github-actions[bot] f127e3d442 chore: version packages (#676)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents@1.11.0

### Minor Changes

- [#671](https://github.com/langchain-ai/deepagentsjs/pull/671)
[`6ae9d1e`](https://github.com/langchain-ai/deepagentsjs/commit/6ae9d1eab92131ea9cfd7bef024cf1ab343641ea)
Thanks [@hntrl](https://github.com/hntrl)! - feat(filesystem): add
allowlist for filesystem middleware tools

- [#669](https://github.com/langchain-ai/deepagentsjs/pull/669)
[`4643148`](https://github.com/langchain-ai/deepagentsjs/commit/4643148e8b64c796d3144210bac3ad1c6f5b2091)
Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): add
structured system prompt configuration

- [#673](https://github.com/langchain-ai/deepagentsjs/pull/673)
[`eb18c70`](https://github.com/langchain-ai/deepagentsjs/commit/eb18c70d8d0871bc72aeb8be6581a98506829c6f)
Thanks [@hntrl](https://github.com/hntrl)! - feat(backends): add delete
protocol support

Adds a `DeleteResult` type and optional backend `delete` method,
preserves delete through backend protocol adaptation, and implements
file deletion across the built-in state, store, filesystem, composite,
context hub, sandbox, and node-vfs backends.

### Patch Changes

- [#691](https://github.com/langchain-ai/deepagentsjs/pull/691)
[`39a7049`](https://github.com/langchain-ai/deepagentsjs/commit/39a7049e4dbf99a31223c4e31cf79a2ed5115634)
Thanks [@colifran](https://github.com/colifran)! - fix(deepagents):
backend adapter drops route prefixes

- [#672](https://github.com/langchain-ai/deepagentsjs/pull/672)
[`cc26c41`](https://github.com/langchain-ai/deepagentsjs/commit/cc26c41df2851acacc86a743878b5c847a8f5d59)
Thanks [@hntrl](https://github.com/hntrl)! - fix(deepagents): allow
custom middleware to replace defaults by name
## deepagents-acp@0.1.19

### Patch Changes

- Updated dependencies
[[`39a7049`](https://github.com/langchain-ai/deepagentsjs/commit/39a7049e4dbf99a31223c4e31cf79a2ed5115634),
[`6ae9d1e`](https://github.com/langchain-ai/deepagentsjs/commit/6ae9d1eab92131ea9cfd7bef024cf1ab343641ea),
[`cc26c41`](https://github.com/langchain-ai/deepagentsjs/commit/cc26c41df2851acacc86a743878b5c847a8f5d59),
[`4643148`](https://github.com/langchain-ai/deepagentsjs/commit/4643148e8b64c796d3144210bac3ad1c6f5b2091),
[`eb18c70`](https://github.com/langchain-ai/deepagentsjs/commit/eb18c70d8d0871bc72aeb8be6581a98506829c6f)]:
  - deepagents@1.11.0
## @langchain/node-vfs@0.2.1

### Patch Changes

- [#673](https://github.com/langchain-ai/deepagentsjs/pull/673)
[`eb18c70`](https://github.com/langchain-ai/deepagentsjs/commit/eb18c70d8d0871bc72aeb8be6581a98506829c6f)
Thanks [@hntrl](https://github.com/hntrl)! - feat(backends): add delete
protocol support

Adds a `DeleteResult` type and optional backend `delete` method,
preserves delete through backend protocol adaptation, and implements
file deletion across the built-in state, store, filesystem, composite,
context hub, sandbox, and node-vfs backends.
## @deepagents/evals@0.0.18

### Patch Changes

- Updated dependencies
[[`39a7049`](https://github.com/langchain-ai/deepagentsjs/commit/39a7049e4dbf99a31223c4e31cf79a2ed5115634),
[`6ae9d1e`](https://github.com/langchain-ai/deepagentsjs/commit/6ae9d1eab92131ea9cfd7bef024cf1ab343641ea),
[`cc26c41`](https://github.com/langchain-ai/deepagentsjs/commit/cc26c41df2851acacc86a743878b5c847a8f5d59),
[`4643148`](https://github.com/langchain-ai/deepagentsjs/commit/4643148e8b64c796d3144210bac3ad1c6f5b2091),
[`eb18c70`](https://github.com/langchain-ai/deepagentsjs/commit/eb18c70d8d0871bc72aeb8be6581a98506829c6f)]:
  - deepagents@1.11.0

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-15 21:08:41 -07:00
Colin Francis 39a7049e4d fix(deepagents): backend adapter drops route prefixes (#691)
### Summary

`adaptBackendProtocol` rebuilds the backend into a v2 backend protocol
but drops its `routePrefixes`. Since `resolveBackend` runs every backend
through the adapter, a resolved `CompositeBackend` was no longer
detected as composite. That made the execute tool's guard fail at
invocation and disable the execute tool even when filesystem permissions
were correctly scoped to composite routes.

This PR fixes this by forwarding `routePrefixes` through
`adaptBackendProtocol` instead of dropping them.

### Tests

Added unit tests in backends/utils.test.ts to verify that
`routePrefixes` is forwarded through `adaptBackendProtocol` and
`adaptSandboxProtocol` and not added for non-composite backends.
2026-07-15 20:25:35 -07:00
Hunter Lovell cc26c41df2 fix(deepagents): merge custom middleware by name (#672)
## Summary

Adds middleware override behavior to replace default middleware by
`.name` instead of always being appended.

## Changes

- Add name-keyed middleware merging so custom middleware replaces
matching default middleware in-place and appends novel middleware after
the core stack.
- Apply default-slot middleware overrides consistently when constructing
main-agent and subagent middleware stacks, while preventing parent-only
middleware from propagating unless it matches a subagent default slot.
- Move harness tool exclusion into a private `_ToolExclusionMiddleware`
helper so excluded tools are stripped after tool-injecting middleware
has run.
- Add coverage for main-agent replacement, subagent/default override
propagation, parent-only middleware isolation, profile exclusions,
tool-exclusion ordering, and merge precedence.
2026-07-14 19:08:52 -07:00
Hunter Lovell f09bc61d7a feat(deepagents): implement delete across backends (#680)
## Summary

Implements the optional backend `delete` protocol across the built-in
backend implementations now that the delete protocol surface is
available. This keeps delete behavior backend-local and does not expose
a new filesystem tool to agents.

## Changes

### deepagents

- Implements `delete(filePath)` for filesystem, store, composite,
context hub, and sandbox backends.
- Uses backend-specific safety semantics: filesystem deletion goes
through existing path resolution and only unlinks files, store deletion
treats paths as exact keys, context hub deletion commits null entries,
and sandbox deletion uses shell-quoted `rm -f`.
- Adds tests covering successful deletion, missing paths, directory
rejection where applicable, composite route path restoration, store
wildcard literal behavior, and context hub cache updates/failure
handling.

### @langchain/node-vfs

- Implements `delete(filePath)` for the VFS backend.
- Adds tests for file deletion, missing paths, directory rejection, and
preserving non-target files.
2026-07-14 17:31:16 -07:00
Hunter Lovell 6ae9d1eab9 feat(deepagents): add filesystem tool allowlist (#671)
## Summary

Adds a `tools` allowlist option to `createFilesystemMiddleware` so
callers can restrict which built-in filesystem tools are exposed to the
model. The middleware now builds the filesystem system prompt from the
tools that are actually visible on the request, avoiding instructions
for tools that were filtered by the allowlist or backend capability
checks.

## Changes

- Adds a public `FsToolName` type and `tools` option to
`FilesystemMiddlewareOptions`.
- Filters filesystem middleware tools at construction time when an
explicit allowlist is provided, while preserving existing `execute`
backend capability filtering.
- Requires `read_file` in explicit allowlists because it is needed for
filesystem workflows and large-result recovery.
- Generates the filesystem tool prompt dynamically from visible
filesystem tools, and only appends execute-specific instructions when
`execute` is actually available.
- Adds unit and integration coverage for allowlist behavior, prompt
filtering, unsupported `execute`, and user-provided non-filesystem
tools.
2026-07-14 13:42:55 -07:00
Hunter Lovell eb18c70d8d feat(deepagents): add delete protocol support (#673)
## Summary

Adds protocol-level delete support for deepagents backends.

## Changes

### deepagents

- Adds `DeleteResult` to the backend protocol exports.
- Adds optional `delete(filePath)` support to v1 and v2 backend
protocols.
- Preserves optional delete implementations when adapting backends to
the v2 protocol.
- Implements `StateBackend.delete()` for zero-argument StateBackend
instances by sending `{ [filePath]: null }` through `__pregel_send`.
- Adds a changeset for the new backend protocol capability.
2026-07-14 10:20:08 -07:00
Hunter Lovell 4643148e8b feat(deepagents): add structured system prompt configuration (#669)
## Summary

Ports the system prompt configuration in langchain-ai/deepagents#4437
2026-07-13 16:24:56 -07:00
github-actions[bot] 4507acd92e chore: version packages (#670)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents-acp@0.1.18

### Patch Changes

- Updated dependencies
[[`7c8a770`](https://github.com/langchain-ai/deepagentsjs/commit/7c8a770fac90fd50dfe08af67a0ce073a33e4ef7)]:
  - deepagents@1.10.8
## deepagents@1.10.8

### Patch Changes

- [#668](https://github.com/langchain-ai/deepagentsjs/pull/668)
[`7c8a770`](https://github.com/langchain-ai/deepagentsjs/commit/7c8a770fac90fd50dfe08af67a0ce073a33e4ef7)
Thanks [@colifran](https://github.com/colifran)! - fix(deepagents):
fast-glob follows directory symlink cycles leading to ELOOP crashes
## @deepagents/evals@0.0.17

### Patch Changes

- Updated dependencies
[[`7c8a770`](https://github.com/langchain-ai/deepagentsjs/commit/7c8a770fac90fd50dfe08af67a0ce073a33e4ef7)]:
  - deepagents@1.10.8

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-13 12:50:19 -07:00
Colin Francis 7c8a770fac fix(deepagents): fast-glob follows directory symlink cycles leading to ELOOP crashes (#668)
### Summary

`fast-glob` follows symbolic links by default so the `glob`/`grep` tools
in `FilesystemBackend` and `LocalShellBackend` walked directory symlink
cycles recursively causing `ELOOP` crashes. and aborted the run over a
target repo.

This PR fixes by adding`followSymbolicLinks: false` to all four
`fast-glob` calls. Bonus: this keeps traversal inside the search root.

### Tests
Unit tests in `filesystem.test.ts` and `local-shell.test.ts` verifying
that a `sub/sub -> .` cycle now traverses cleanly without traversing
symlinks.

This is an upstream fix for:
https://github.com/langchain-ai/openwiki/issues/72
2026-07-13 12:41:34 -07:00
langsmith-fleet[bot] 2d1b39bd29 fix: Deno sandbox file path shell injection (#664)
## Summary

Fixes the Deno sandbox file-operation shell injection findings from
Corridor category 2:

- `67480dc4-15f8-48fc-925d-4b0e144832c1` — `DenoSandbox.uploadFiles()`
interpolated `parentDir` into `mkdir -p "${parentDir}"` through
`/bin/bash -c`
- `7d707e16-90a6-4231-974f-d2831971687b` — `DenoSandbox.downloadFiles()`
interpolated `path` into `cat "${path}"` through `/bin/bash -c`

## Changes

- Replace shell-interpreted `mkdir -p` with direct argv execution:
`/bin/mkdir`, `args: ["-p", parentDir]`
- Replace shell-interpreted `cat` with direct argv execution:
`/bin/cat`, `args: [path]`
- Add regression tests covering paths containing `$()` to ensure
file-operation paths are passed as literal argv values and not routed
through `/bin/bash`

## Security notes

This removes command substitution / shell metacharacter interpretation
from Deno `uploadFiles()` and `downloadFiles()` paths. It does not
attempt to solve broader path containment findings in the filesystem
category; those should remain a separate hardening patch.

## Test plan

- `git diff --check` 
- Verified the vulnerable Deno patterns are removed from
`libs/providers/deno/src` 
- `pnpm --dir /tmp/deepagentsjs --filter "@langchain/deno" test:unit` ⚠️
could not run locally because this sandbox has no `node_modules`;
dependency install was blocked by Socket Firewall failing to fetch its
GitHub release binary with HTTP 502. The repo also requires Node >=22.13
for the pinned pnpm, so I used a temporary Node 22.13.1 binary for the
attempted test run.

CI should run the full Deno provider unit tests.

Co-authored-by: Langster <john@langchain.dev>
2026-07-09 04:07:26 +00:00
corridor-security[bot] 1b8528ba92 fix: Permission gate (requestToolPermission) is defined but never called — all tool executions bypass permission checks (#663)
## Summary
This PR was generated by [Corridor](https://corridor.dev) to fix:

- Permission gate (requestToolPermission) is defined but never called —
all tool executions bypass permission checks

## Changes
To close the missing authorization gap (CWE-862), the fix wires a call
to requestToolPermission() into the tool execution path inside
handleAIMessage(), awaiting a user decision before moving from the
in_progress state. Depending on the decision, the tool call is rejected
(marked failed, updated to the client, removed from active calls, and
the prompt/stream aborted), cancelled (similar cleanup and abort), or
allowed to proceed as before; the existing allow_always/reject_always
caching is preserved via the session’s permissionDecisions. The change
is narrowly scoped to the for loop in handleAIMessage() and does not
alter interfaces, semantics, or other code paths.

---
Generated by Corridor

Co-authored-by: corridor-security[bot] <203152403+corridor-security[bot]@users.noreply.github.com>
2026-07-09 03:07:21 +00:00
github-actions[bot] 3eab2cad6f chore: version packages (#660)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## deepagents-acp@0.1.17

### Patch Changes

- Updated dependencies
[[`8efde93`](https://github.com/langchain-ai/deepagentsjs/commit/8efde93792dfc324e70b441eacbb810532f347c4)]:
  - deepagents@1.10.7
## deepagents@1.10.7

### Patch Changes

- [#659](https://github.com/langchain-ai/deepagentsjs/pull/659)
[`8efde93`](https://github.com/langchain-ai/deepagentsjs/commit/8efde93792dfc324e70b441eacbb810532f347c4)
Thanks [@Kowshik4593](https://github.com/Kowshik4593)! - Fix: Normalize
`path` to `file_path` in filesystem tools (`read_file`, `write_file`,
and `edit_file`) and align the prompt documentation examples to prevent
validation schema failures on weaker/custom models.
## @deepagents/evals@0.0.16

### Patch Changes

- Updated dependencies
[[`8efde93`](https://github.com/langchain-ai/deepagentsjs/commit/8efde93792dfc324e70b441eacbb810532f347c4)]:
  - deepagents@1.10.7

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Colin Francis <colin.francis@langchain.dev>
2026-07-08 14:04:15 -07:00
Kowshik Padala 8efde93792 feat(deepagents): implement filesystem state management middleware with atomic update support and testing (#659)
## Problem
Addresses #658.

When using weaker or custom LLMs (e.g., smaller open-source models) in
`deepagents` and consumers like `openwiki`, the agent immediately
crashes with a schema validation error on the first filesystem tool
call:


This occurs because:
1. `ls` defines its directory argument as `path`, but `read_file`,
`write_file`, and `edit_file` expect `file_path`. Models often default
to `path` across all filesystem tools.
2. The description prompt examples in `fs.ts` and `skills.ts` show
`read_file(path, ...)`, instructing models to use the wrong parameter
name.

## Proposed Changes
This PR solves both prompt inconsistencies and schema validation
failures with a fully backward-compatible input normalization helper:

1. **Prompt Alignment**: Fixed references in `fs.ts` and `skills.ts` to
instruct the model to use `file_path` (aligned with the prompt fixes in
#644).
2. **Schema Input Normalization**: Added a `normalizeFilePathInput`
preprocessor helper to the `read_file`, `write_file`, and `edit_file`
Zod schemas using `z.preprocess`. This dynamically maps the `path` key
to `file_path` if the model still passes `path`.

## Verification & Tests
- Added unit tests in `fs.test.ts` to assert that:
- `path` parameter normalization maps correctly to `file_path` for
`read_file`, `write_file`, and `edit_file`.
  - All instruction examples contain only valid schema fields.
- Verified that `zod-to-json-schema` unwraps the `z.preprocess` layer
perfectly, preserving the original schema descriptions and definitions
sent to the LLM.
- Ran all filesystem tests successfully (`npx vitest run
src/middleware/fs.test.ts` passes).
2026-07-08 13:20:36 -07:00
github-actions[bot] ff8cc5c4b4 chore: version packages (#607)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @langchain/quickjs@0.6.0

### Minor Changes

- [#606](https://github.com/langchain-ai/deepagentsjs/pull/606)
[`3c8f8b2`](https://github.com/langchain-ai/deepagentsjs/commit/3c8f8b2ea6f0204353c63bf49c3fdc6655bf1069)
Thanks [@colifran](https://github.com/colifran)! - chore(quickjs):
disallow task as a configurable ptc tool
## deepagents-acp@0.1.16

### Patch Changes

- Updated dependencies
[[`d7ecab2`](https://github.com/langchain-ai/deepagentsjs/commit/d7ecab2d9f9d41321a043eed6edc3366a1381a67),
[`1a2b2df`](https://github.com/langchain-ai/deepagentsjs/commit/1a2b2df5528f0f61870b054fff8291355f6a2a0b),
[`42f34b6`](https://github.com/langchain-ai/deepagentsjs/commit/42f34b65ededf4a1fbf3cd4bbff486ddfeb320e9),
[`0ae10d7`](https://github.com/langchain-ai/deepagentsjs/commit/0ae10d7e26c84203a5273939c9ad7a9c8c8661c6)]:
  - deepagents@1.10.6
## deepagents@1.10.6

### Patch Changes

- [#608](https://github.com/langchain-ai/deepagentsjs/pull/608)
[`d7ecab2`](https://github.com/langchain-ai/deepagentsjs/commit/d7ecab2d9f9d41321a043eed6edc3366a1381a67)
Thanks [@aolsenjazz](https://github.com/aolsenjazz)! - fix(deepagents):
forward subagent results as text

Fixed a 400 `invalid_request_error` that occurred when a subagent used
an Anthropic server-side tool (web search, web fetch, or code
execution): the subagent's `server_tool_use`/`*_tool_result` blocks were
forwarded to the parent agent as `tool_result` content, which the API
rejects. Subagent results are now passed back to the parent as their
text content (matching the Python implementation), which resolves the
error and also handles a trailing empty `end_turn` message.

- [#656](https://github.com/langchain-ai/deepagentsjs/pull/656)
[`1a2b2df`](https://github.com/langchain-ai/deepagentsjs/commit/1a2b2df5528f0f61870b054fff8291355f6a2a0b)
Thanks [@colifran](https://github.com/colifran)! - fix(deepagents):
default unknown file extensions to text/plain

- [#611](https://github.com/langchain-ai/deepagentsjs/pull/611)
[`42f34b6`](https://github.com/langchain-ai/deepagentsjs/commit/42f34b65ededf4a1fbf3cd4bbff486ddfeb320e9)
Thanks [@aolsenjazz](https://github.com/aolsenjazz)! - feat(deepagents):
add bedrockPromptCachingMiddleware to default stack

Add bedrockPromptCachingMiddleware to default middleware stack. This
automatically opts-in to Bedrock prompt caching for Nova and Anthropic
models

- [#613](https://github.com/langchain-ai/deepagentsjs/pull/613)
[`0ae10d7`](https://github.com/langchain-ai/deepagentsjs/commit/0ae10d7e26c84203a5273939c9ad7a9c8c8661c6)
Thanks [@christian-bromann](https://github.com/christian-bromann)! -
fix(deepagents): declare LangChain runtime packages as peer dependencies

Move `@langchain/core`, `@langchain/langgraph`,
`@langchain/langgraph-sdk`, and
`langchain` from `dependencies` to `peerDependencies`, and also declare
`@langchain/langgraph-checkpoint` as a peer (its
`BaseCheckpointSaver`/`BaseStore`
types are part of the public API), so they resolve to a single shared
instance in
  the consumer's tree. Previously they were bundled as regular
dependencies, which let a consumer end up with two copies of
`@langchain/core`
(e.g. `1.2.0` vs `1.2.1`). Because these packages ship classes with
private/
protected fields, the duplicate copies are treated as nominally distinct
types,
producing errors like passing a `ChatOpenAI` model to `createDeepAgent`
or a
compiled graph to the local protocol helpers. As peers, the app controls
the
version and bumping `@langchain/core` no longer requires a `deepagents`
release.
## @langchain/daytona@0.2.1

### Patch Changes

- [#614](https://github.com/langchain-ai/deepagentsjs/pull/614)
[`5b462f2`](https://github.com/langchain-ai/deepagentsjs/commit/5b462f2ab2400fba52906e8f1485a500ec5b6e17)
Thanks [@christian-bromann](https://github.com/christian-bromann)! -
Replace deprecated `@daytonaio/sdk` dependency with `@daytona/sdk`.
## @langchain/modal@0.1.5

### Patch Changes

- [#657](https://github.com/langchain-ai/deepagentsjs/pull/657)
[`5f93c11`](https://github.com/langchain-ai/deepagentsjs/commit/5f93c114759399002a3981a93e3df13981514b1d)
Thanks [@colifran](https://github.com/colifran)! - fix(modal): modal low
level file handle api `sandbox.open` has been removed
## @deepagents/evals@0.0.15

### Patch Changes

- Updated dependencies
[[`d7ecab2`](https://github.com/langchain-ai/deepagentsjs/commit/d7ecab2d9f9d41321a043eed6edc3366a1381a67),
[`1a2b2df`](https://github.com/langchain-ai/deepagentsjs/commit/1a2b2df5528f0f61870b054fff8291355f6a2a0b),
[`42f34b6`](https://github.com/langchain-ai/deepagentsjs/commit/42f34b65ededf4a1fbf3cd4bbff486ddfeb320e9),
[`0ae10d7`](https://github.com/langchain-ai/deepagentsjs/commit/0ae10d7e26c84203a5273939c9ad7a9c8c8661c6)]:
  - deepagents@1.10.6

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Colin Francis <colin.francis@langchain.dev>
2026-07-08 09:16:25 -07:00
Colin Francis 1a2b2df552 fix(deepagents): default unknown file extensions to text/plain (#656)
### Summary

`read_file` couldn't read many common text files and with Anthropic it
crashes the whole run. `getMimeType()` mapped any unrecognized extension
to `application/octet-stream`, which `isTextMimeType()` treats as
binary, so the file got base64-encoded into a document block.

This defaults unknown extensions to `text/plain` instead. Known binaries
(images, audio, video, PDF/PPT) stay explicitly mapped, so image and PDF
handling is unchanged. Files like `.properties`, `.scss`, `.tf`,
`.lock`, and extension-less files like `Dockerfile` now read as text.

  ### Tests
  
Flipped the unknown-extension unit test to expect `text/plain`.
2026-07-08 09:04:32 -07:00