mirror of
https://github.com/langchain-ai/deepagentsjs.git
synced 2026-07-21 11:55:22 -04:00
@langchain/quickjs@0.5.1
176 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
a9e1ba1b89 |
chore: version packages (#605)
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.15 ### Patch Changes - Updated dependencies [[`7c4a11e`](https://github.com/langchain-ai/deepagentsjs/commit/7c4a11eacc11c3720b70d802068300ac3b4d8651)]: - deepagents@1.10.5 ## deepagents@1.10.5 ### Patch Changes - [#598](https://github.com/langchain-ai/deepagentsjs/pull/598) [`7c4a11e`](https://github.com/langchain-ai/deepagentsjs/commit/7c4a11eacc11c3720b70d802068300ac3b4d8651) Thanks [@christian-bromann](https://github.com/christian-bromann)! - refactor(stream): use langchain `run.subagents` instead of bespoke transformer Remove deepagents' custom `createSubagentTransformer` and rely on the native subagent stream that `createAgent` registers (langchain#37739). Keep `DeepAgentRunStream` as a compile-time overlay that narrows `run.subagents` to declared subagent specs. Update streaming tests for `cause` and per-subagent message coverage. ## @langchain/quickjs@0.5.1 ### Patch Changes - [#602](https://github.com/langchain-ai/deepagentsjs/pull/602) [`204cb27`](https://github.com/langchain-ai/deepagentsjs/commit/204cb27414c82c34a0c681c7e5a5336e1834f058) Thanks [@colifran](https://github.com/colifran)! - chore(quickjs): refine dynamic subagent prompt to trigger on workflow keyword and to improve iterative eval behavior - [#604](https://github.com/langchain-ai/deepagentsjs/pull/604) [`0971007`](https://github.com/langchain-ai/deepagentsjs/commit/0971007ab2491e73eb1a78c5426ab934470d5620) Thanks [@colifran](https://github.com/colifran)! - fix(quickjs): unwrap Command/ToolMessage envelopes from tool and subagent results ## @deepagents/evals@0.0.14 ### Patch Changes - Updated dependencies [[`7c4a11e`](https://github.com/langchain-ai/deepagentsjs/commit/7c4a11eacc11c3720b70d802068300ac3b4d8651)]: - deepagents@1.10.5 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
7c4a11eacc |
fix(deepagents): use langchain run.subagents instead of bespoke transformer (#598)
## Summary - Remove deepagents' bespoke `createSubagentTransformer` (~460 lines) and wire `createDeepAgent` to langchain's native `run.subagents` projection from `createAgent` (langchain#37739). - Slim `stream.ts` to type-only exports: re-export `SubagentRunStream` from langchain and keep `DeepAgentRunStream` as a compile-time narrowing over declared subagent specs. - Update streaming tests for `sub.cause` (replacing `taskInput`), add single-subagent `sub.messages` coverage, and document parallel-subagent streaming behavior. - Pin `langchain@1.4.6-dev-1781497519109` and `@langchain/langgraph` / `@langchain/langgraph-checkpoint` to `d2312cf` dev builds (root `pnpm.overrides`) for end-to-end verification until published releases are available. - Clarify `streamTransformers` docs: custom transformers surface on `run.extensions`; built-in streams like `run.subagents` and `run.toolCalls` are separate. fixes #560 |
||
|
|
750d69c024 |
chore: version packages (#568)
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/node-vfs@0.2.0 ### Minor Changes - [#575](https://github.com/langchain-ai/deepagentsjs/pull/575) [`5d266a2`](https://github.com/langchain-ai/deepagentsjs/commit/5d266a213d8d3d15c2281e2e00ab71ee30ca3ffe) Thanks [@hntrl](https://github.com/hntrl)! - BREAKING: remove shell execution from the VFS provider `VfsBackend` now operates as a filesystem-only `BackendProtocolV2` implementation and no longer exposes command execution. The provider now implements `read`, `ls`, `grep`, and `glob` directly against the in-memory VFS, path resolution is confined to the virtual workspace root, and legacy `VfsSandbox` / `createVfsSandboxFactory*` aliases are removed. ## @langchain/quickjs@0.5.0 ### Minor Changes - [#590](https://github.com/langchain-ai/deepagentsjs/pull/590) [`7ee3feb`](https://github.com/langchain-ai/deepagentsjs/commit/7ee3feb674c361305b2a031db9132253e3d0543b) Thanks [@colifran](https://github.com/colifran)! - chore(quickjs): remove skills backend and associated plumbing - [#592](https://github.com/langchain-ai/deepagentsjs/pull/592) [`72cfb0c`](https://github.com/langchain-ai/deepagentsjs/commit/72cfb0c0384b30059b5e8028139a2e167c1be882) Thanks [@colifran](https://github.com/colifran)! - feat(quickjs): implement default subagent primitive in code interpreter for programmatic subagent calling ### Patch Changes - [#594](https://github.com/langchain-ai/deepagentsjs/pull/594) [`61db938`](https://github.com/langchain-ai/deepagentsjs/commit/61db9381494f61b4548cd80b715e5af72fdde381) Thanks [@colifran](https://github.com/colifran)! - chore(quickjs): remove configurable concurrency and add subagents option with true default - [#546](https://github.com/langchain-ai/deepagentsjs/pull/546) [`b7a5f26`](https://github.com/langchain-ai/deepagentsjs/commit/b7a5f26fd9cba992b11e1a4cf18607d64533503b) Thanks [@open-swe](https://github.com/apps/open-swe)! - fix(quickjs): scope `CodeInterpreterMiddleware` REPL prompt sandbox bullet to the runtime ## deepagents-acp@0.1.14 ### Patch Changes - Updated dependencies [[`18557db`](https://github.com/langchain-ai/deepagentsjs/commit/18557db7bbdf92052ed5f994512fb70e11989e69), [`773cac5`](https://github.com/langchain-ai/deepagentsjs/commit/773cac5dc7efc7843dd882642d91f7d64d6fde81), [`1ca6dc9`](https://github.com/langchain-ai/deepagentsjs/commit/1ca6dc92fd40a6d845d24b95ba14b8f2643db394), [`03df237`](https://github.com/langchain-ai/deepagentsjs/commit/03df237385fbdfefd862076c5588eb39cb6e43c3), [`84f3c0c`](https://github.com/langchain-ai/deepagentsjs/commit/84f3c0c2f1cad271191bcc138b84ba5b9c9205c9), [`72cfb0c`](https://github.com/langchain-ai/deepagentsjs/commit/72cfb0c0384b30059b5e8028139a2e167c1be882), [`04cc3fc`](https://github.com/langchain-ai/deepagentsjs/commit/04cc3fc26001ee566ed94de44c2dda2cf6adecc4), [`18fbb48`](https://github.com/langchain-ai/deepagentsjs/commit/18fbb4839050e98ae3cfd36ec69b11f0725ad6d6), [`e3d4b53`](https://github.com/langchain-ai/deepagentsjs/commit/e3d4b5367b1825df56c919b483ec4a3e117d631f)]: - deepagents@1.10.4 ## deepagents@1.10.4 ### Patch Changes - [#551](https://github.com/langchain-ai/deepagentsjs/pull/551) [`18557db`](https://github.com/langchain-ai/deepagentsjs/commit/18557db7bbdf92052ed5f994512fb70e11989e69) Thanks [@antonnak](https://github.com/antonnak)! - fix(deepagents): gate cache_control writes on per-call request.model `createCacheBreakpointMiddleware` and `createMemoryMiddleware` were gating the Anthropic-specific `cache_control` write at agent-creation time only. When `modelFallbackMiddleware` swapped `request.model` to a non-Anthropic provider mid-flight (e.g. on Anthropic 5xx), the marker leaked through and the fallback provider rejected the request with `400 Unknown parameter: 'cache_control'`. Both middlewares now also check `isAnthropicModel(request.model)` inside `wrapModelCall`. Fixes [#550](https://github.com/langchain-ai/deepagentsjs/issues/550). - [#591](https://github.com/langchain-ai/deepagentsjs/pull/591) [`773cac5`](https://github.com/langchain-ai/deepagentsjs/commit/773cac5dc7efc7843dd882642d91f7d64d6fde81) Thanks [@colifran](https://github.com/colifran)! - chore(deepagents): expose createSubAgent - [#541](https://github.com/langchain-ai/deepagentsjs/pull/541) [`1ca6dc9`](https://github.com/langchain-ai/deepagentsjs/commit/1ca6dc92fd40a6d845d24b95ba14b8f2643db394) Thanks [@ixchio](https://github.com/ixchio)! - fix getMimeType to return application/octet-stream for unknown file extensions instead of text/plain - [#572](https://github.com/langchain-ai/deepagentsjs/pull/572) [`03df237`](https://github.com/langchain-ai/deepagentsjs/commit/03df237385fbdfefd862076c5588eb39cb6e43c3) Thanks [@hntrl](https://github.com/hntrl)! - fix: scope CompositeBackend grep/glob route fanout by search path CompositeBackend now limits fallback route fanout to routes mounted under the requested search path, instead of querying all routed backends unconditionally. This avoids unrelated routed backend calls (and side-effect errors) for scoped searches like `path="/workspace"`, while preserving full fanout behavior at root (`path="/"`). - [#574](https://github.com/langchain-ai/deepagentsjs/pull/574) [`84f3c0c`](https://github.com/langchain-ai/deepagentsjs/commit/84f3c0c2f1cad271191bcc138b84ba5b9c9205c9) Thanks [@hntrl](https://github.com/hntrl)! - fix(deepagents): add explicit browser and node entrypoints - add `deepagents/browser` and `deepagents/node` subpath exports - route browser bundlers to the browser-safe bundle via the root `browser` export condition - avoid named Node builtin imports in backend utils that can break browser builds - document browser guidance to import from `deepagents/browser` - [#592](https://github.com/langchain-ai/deepagentsjs/pull/592) [`72cfb0c`](https://github.com/langchain-ai/deepagentsjs/commit/72cfb0c0384b30059b5e8028139a2e167c1be882) Thanks [@colifran](https://github.com/colifran)! - feat(quickjs): implement default subagent primitive in code interpreter for programmatic subagent calling - [#566](https://github.com/langchain-ai/deepagentsjs/pull/566) [`04cc3fc`](https://github.com/langchain-ai/deepagentsjs/commit/04cc3fc26001ee566ed94de44c2dda2cf6adecc4) Thanks [@hntrl](https://github.com/hntrl)! - fix(deepagents): propagate subagent `lc_agent_name` during task delegation - Ensure `task` tool subagent invocations override `metadata.lc_agent_name` with the selected `subagent_type`. - Add regression coverage for both compiled subagents (`runnable`) and standard subagent specs to verify tool-time metadata reflects the active subagent. - Update the `langsmith` peer dependency range in `deepagents` to `^0.7.1`. - [#595](https://github.com/langchain-ai/deepagentsjs/pull/595) [`18fbb48`](https://github.com/langchain-ai/deepagentsjs/commit/18fbb4839050e98ae3cfd36ec69b11f0725ad6d6) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(deepagents): count tokens once per model call in summarization middleware `createSummarizationMiddleware` counted tokens twice on every model call—once inside `truncateArgs` and again for the should-summarize check—even when nothing was truncated or summarized. Count once and pass the total into `truncateArgs`; recount only when truncation actually modifies messages. - [#242](https://github.com/langchain-ai/deepagentsjs/pull/242) [`e3d4b53`](https://github.com/langchain-ai/deepagentsjs/commit/e3d4b5367b1825df56c919b483ec4a3e117d631f) Thanks [@alvedder](https://github.com/alvedder)! - feat(deepagents): support direct skill paths as sources in createSkillsMiddleware ## @deepagents/evals@0.0.13 ### Patch Changes - Updated dependencies [[`18557db`](https://github.com/langchain-ai/deepagentsjs/commit/18557db7bbdf92052ed5f994512fb70e11989e69), [`773cac5`](https://github.com/langchain-ai/deepagentsjs/commit/773cac5dc7efc7843dd882642d91f7d64d6fde81), [`1ca6dc9`](https://github.com/langchain-ai/deepagentsjs/commit/1ca6dc92fd40a6d845d24b95ba14b8f2643db394), [`03df237`](https://github.com/langchain-ai/deepagentsjs/commit/03df237385fbdfefd862076c5588eb39cb6e43c3), [`84f3c0c`](https://github.com/langchain-ai/deepagentsjs/commit/84f3c0c2f1cad271191bcc138b84ba5b9c9205c9), [`72cfb0c`](https://github.com/langchain-ai/deepagentsjs/commit/72cfb0c0384b30059b5e8028139a2e167c1be882), [`04cc3fc`](https://github.com/langchain-ai/deepagentsjs/commit/04cc3fc26001ee566ed94de44c2dda2cf6adecc4), [`18fbb48`](https://github.com/langchain-ai/deepagentsjs/commit/18fbb4839050e98ae3cfd36ec69b11f0725ad6d6), [`e3d4b53`](https://github.com/langchain-ai/deepagentsjs/commit/e3d4b5367b1825df56c919b483ec4a3e117d631f)]: - deepagents@1.10.4 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
18fbb48390 |
fix(deepagents): count tokens once per model call in summarization middleware (#595)
## Summary - Port [langchain-ai/deepagents#3877](https://github.com/langchain-ai/deepagents/pull/3877): `createSummarizationMiddleware` now counts tokens once per model call instead of twice on the common pass-through path. - Pass the precomputed total into `truncateArgs` via an optional `totalTokens` parameter; recount only when truncation modifies messages. - Add a regression test asserting `countTokensApproximately` runs exactly once when nothing is truncated or summarized. |
||
|
|
72cfb0c038 |
feat(quickjs): implement default task primitive in code interpreter for programmatic subagent calling (#592)
### Summary This PR adds a default task primitive to the code interpreter that allows the agent to natively write code to programmatically dispatch subagents. The task primitive supports passing response schemas for dynamic structured output that helps with more complex orchestration patterns. This PR also removes the swarm task tool in favor of the task primitive. --------- Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> |
||
|
|
773cac5dc7 |
chore(deepagents): expose createSubAgent (#591)
### Summary Exposes `createSubAgent` as a dedicated function which allows us to reuse the inner subagent factory outside of the middleware (e.g. using it as the single source of truth for defining subagents in quickjs). Port of similar implementation from https://github.com/langchain-ai/deepagents/pull/3846 |
||
|
|
7c47e66601 |
build(deps): bump the minor-deps-updates-main group across 1 directory with 19 updates (#581)
Bumps the minor-deps-updates-main group with 19 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@changesets/changelog-github](https://github.com/changesets/changesets) | `0.6.0` | `0.7.0` | | [globals](https://github.com/sindresorhus/globals) | `17.5.0` | `17.6.0` | | [jiti](https://github.com/unjs/jiti) | `2.6.1` | `2.7.0` | | [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.47.0` | `0.53.0` | | [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.62.0` | `1.68.0` | | [tsx](https://github.com/privatenumber/tsx) | `4.21.0` | `4.22.4` | | [@agentclientprotocol/sdk](https://github.com/agentclientprotocol/typescript-sdk) | `0.18.2` | `0.24.0` | | [@langchain/langgraph](https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core) | `1.2.9` | `1.3.4` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.0` | `25.9.1` | | [tsdown](https://github.com/rolldown/tsdown) | `0.21.10` | `0.22.1` | | [@langchain/langgraph-sdk](https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/sdk) | `1.8.10` | `1.9.15` | | [langchain](https://github.com/langchain-ai/langchainjs) | `1.3.5` | `1.4.4` | | [yaml](https://github.com/eemeli/yaml) | `2.8.3` | `2.9.0` | | [@langchain/anthropic](https://github.com/langchain-ai/langchainjs) | `1.3.28` | `1.4.0` | | [@daytonaio/sdk](https://github.com/daytonaio/daytona) | `0.155.0` | `0.184.0` | | [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.6.1` | `0.7.4` | | [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) | `8.20.0` | `8.21.0` | | [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.2.4` | `4.3.0` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.2.4` | `4.3.0` | Updates `@changesets/changelog-github` from 0.6.0 to 0.7.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/changesets/changesets/releases">@changesets/changelog-github's releases</a>.</em></p> <blockquote> <h2><code>@changesets/changelog-github</code><a href="https://github.com/0"><code>@0</code></a>.7.0</h2> <h3>Minor Changes</h3> <ul> <li><a href="https://redirect.github.com/changesets/changesets/pull/1255">#1255</a> <a href="https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8"><code>94578cf</code></a> Thanks <a href="https://github.com/Kauhsa"><code>@Kauhsa</code></a>! - Added <code>disableThanks</code> option</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/changesets/changesets/commit/d1ef2d8cc11f86042a82f0cf7b125021e24dafc4"><code>d1ef2d8</code></a> Version Packages (<a href="https://redirect.github.com/changesets/changesets/issues/1950">#1950</a>)</li> <li><a href="https://github.com/changesets/changesets/commit/7af587636b8e793cc43fc6a52d32598193fcb68e"><code>7af5876</code></a> Restrict <code>publish</code> job to the <code>npm</code> env (<a href="https://redirect.github.com/changesets/changesets/issues/1972">#1972</a>)</li> <li><a href="https://github.com/changesets/changesets/commit/ff767d2da25173bcab643826702b2af74cbf08cf"><code>ff767d2</code></a> Sync config-file-options documentation with schema.json and source code (<a href="https://redirect.github.com/changesets/changesets/issues/1683">#1683</a>)</li> <li><a href="https://github.com/changesets/changesets/commit/951094babb7c356536c243e9cca0faa3ec86360a"><code>951094b</code></a> fix: pin 2 unpinned action(s) (<a href="https://redirect.github.com/changesets/changesets/issues/1915">#1915</a>)</li> <li><a href="https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8"><code>94578cf</code></a> Added <code>disableThanks</code> option (<a href="https://redirect.github.com/changesets/changesets/issues/1255">#1255</a>)</li> <li><a href="https://github.com/changesets/changesets/commit/d87334df92a36788e778b21e2bc603beb754f0d5"><code>d87334d</code></a> Support dark mode banner in readme (<a href="https://redirect.github.com/changesets/changesets/issues/1943">#1943</a>)</li> <li><a href="https://github.com/changesets/changesets/commit/87472a757062402ca121bd168d693a1be866cf45"><code>87472a7</code></a> Update .vscode/settings.json (<a href="https://redirect.github.com/changesets/changesets/issues/1944">#1944</a>)</li> <li><a href="https://github.com/changesets/changesets/commit/317a373aef2639e4ca2804f20aeb4af5338c41ca"><code>317a373</code></a> Disable <code>publish_pr</code> job</li> <li><a href="https://github.com/changesets/changesets/commit/9cce6db18ddecbf7f9cded45254b9905b19a7516"><code>9cce6db</code></a> Version Packages (<a href="https://redirect.github.com/changesets/changesets/issues/1897">#1897</a>)</li> <li><a href="https://github.com/changesets/changesets/commit/d2121dc3d86b55f76de6022ccfcde843ed4b884a"><code>d2121dc</code></a> Fix npm auth for path-based registries during publish by preserving configure...</li> <li>Additional commits viewable in <a href="https://github.com/changesets/changesets/compare/@changesets/changelog-github@0.6.0...@changesets/changelog-github@0.7.0">compare view</a></li> </ul> </details> <br /> Updates `globals` from 17.5.0 to 17.6.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.6.0</h2> <ul> <li>Update globals (2026-05-01) (<a href="https://redirect.github.com/sindresorhus/globals/issues/343">#343</a>) 00a4dd9</li> </ul> <hr /> <p><a href="https://github.com/sindresorhus/globals/compare/v17.5.0...v17.6.0">https://github.com/sindresorhus/globals/compare/v17.5.0...v17.6.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sindresorhus/globals/commit/6b15870f1c08b60b5b57afe45a703d9ed0be39bc"><code>6b15870</code></a> 17.6.0</li> <li><a href="https://github.com/sindresorhus/globals/commit/00a4dd9821830a9b044798120e86b1bb1a54648d"><code>00a4dd9</code></a> Update globals (2026-05-01) (<a href="https://redirect.github.com/sindresorhus/globals/issues/343">#343</a>)</li> <li>See full diff in <a href="https://github.com/sindresorhus/globals/compare/v17.5.0...v17.6.0">compare view</a></li> </ul> </details> <br /> Updates `jiti` from 2.6.1 to 2.7.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/unjs/jiti/releases">jiti's releases</a>.</em></p> <blockquote> <h2>v2.7.0</h2> <p><a href="https://github.com/unjs/jiti/compare/v2.6.1...v2.7.0">compare changes</a></p> <h3>🚀 Enhancements</h3> <ul> <li>Add explicit resource management (<code>using</code>/<code>await using</code>) support (<a href="https://redirect.github.com/unjs/jiti/pull/422">#422</a>)</li> <li>Support opt-in <code>tsconfigPaths</code> (<a href="https://redirect.github.com/unjs/jiti/pull/427">#427</a>)</li> <li>Support virtual modules (<a href="https://redirect.github.com/unjs/jiti/pull/428">#428</a>)</li> <li>Add <code>jiti/static</code> subpath (<a href="https://redirect.github.com/unjs/jiti/pull/430">#430</a>)</li> </ul> <h3>🔥 Performance</h3> <ul> <li><strong>interopDefault:</strong> Add caching to reduce proxy overhead by ~2x (<a href="https://redirect.github.com/unjs/jiti/pull/421">#421</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>require:</strong> Passthrough resolve options (<a href="https://redirect.github.com/unjs/jiti/pull/412">#412</a>)</li> <li><strong>require:</strong> Fallback to transpilation when <code>tryNative</code> fails (<a href="https://redirect.github.com/unjs/jiti/pull/413">#413</a>)</li> <li>Fallback for <code>ENAMETOOLONG</code> when evaluating esm (<a href="https://redirect.github.com/unjs/jiti/pull/429">#429</a>)</li> </ul> <h3>📦 Build</h3> <ul> <li>Upgrade rspack to v2 (<a href="https://github.com/unjs/jiti/commit/55194fb">55194fb</a>)</li> <li>Experimental rolldown config (<a href="https://github.com/unjs/jiti/commit/8c0243f">8c0243f</a>)</li> </ul> <h3>✅ Tests</h3> <ul> <li>Ignore jsx test for bun/cjs (<a href="https://github.com/unjs/jiti/commit/3a744ca">3a744ca</a>)</li> </ul> <h3>❤️ Contributors</h3> <ul> <li>Pooya Parsa (<a href="https://github.com/pi0"><code>@pi0</code></a>)</li> <li>Kricsleo (<a href="https://github.com/kricsleo"><code>@kricsleo</code></a>)</li> <li>Espen Hovlandsdal (<a href="https://github.com/rexxars"><code>@rexxars</code></a>)</li> <li>Rintaro Itokawa (<a href="https://github.com/re-taro"><code>@re-taro</code></a>)</li> <li>Matteo Collina (<a href="https://github.com/mcollina"><code>@mcollina</code></a>)</li> <li>Mario Zechner (<a href="https://github.com/badlogic"><code>@badlogic</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/unjs/jiti/blob/main/CHANGELOG.md">jiti's changelog</a>.</em></p> <blockquote> <h2>v2.7.0</h2> <p><a href="https://github.com/unjs/jiti/compare/v2.6.1...v2.7.0">compare changes</a></p> <h3>🚀 Enhancements</h3> <ul> <li>Add explicit resource management (using/await using) support (<a href="https://redirect.github.com/unjs/jiti/pull/422">#422</a>)</li> <li>Support opt-in <code>tsconfigPaths</code> (<a href="https://redirect.github.com/unjs/jiti/pull/427">#427</a>)</li> <li>Support virtual modules option (<a href="https://redirect.github.com/unjs/jiti/pull/428">#428</a>)</li> <li>Add <code>jiti/static</code> export (<a href="https://redirect.github.com/unjs/jiti/pull/430">#430</a>)</li> </ul> <h3>🔥 Performance</h3> <ul> <li><strong>interopDefault:</strong> Add caching to reduce proxy overhead by ~2x (<a href="https://redirect.github.com/unjs/jiti/pull/421">#421</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>require:</strong> Passthrough resolve options (<a href="https://redirect.github.com/unjs/jiti/pull/412">#412</a>)</li> <li><strong>ci:</strong> Skip <code>--coverage</code> flag for node 18 (<a href="https://github.com/unjs/jiti/commit/fe264b4">fe264b4</a>)</li> <li><strong>require:</strong> Fallback to transpilation when <code>tryNative</code> fails (<a href="https://redirect.github.com/unjs/jiti/pull/413">#413</a>)</li> <li>Fallback for <code>ENAMETOOLONG</code> when evaluating esm (<a href="https://redirect.github.com/unjs/jiti/pull/429">#429</a>)</li> </ul> <h3>📦 Build</h3> <ul> <li>Upgrade rspack (<a href="https://github.com/unjs/jiti/commit/55194fb">55194fb</a>)</li> <li>Experimental rolldown config (<a href="https://github.com/unjs/jiti/commit/8c0243f">8c0243f</a>)</li> </ul> <h3>🏡 Chore</h3> <ul> <li>Fix lint issues (<a href="https://github.com/unjs/jiti/commit/4045c7a">4045c7a</a>)</li> <li>Update deps (<a href="https://github.com/unjs/jiti/commit/e88ac44">e88ac44</a>)</li> <li>Update deps (<a href="https://github.com/unjs/jiti/commit/498e8d7">498e8d7</a>)</li> <li>Add missing prettier dep (<a href="https://github.com/unjs/jiti/commit/650bc48">650bc48</a>)</li> <li>Lint (<a href="https://github.com/unjs/jiti/commit/058d91a">058d91a</a>)</li> <li>Init agents.md (<a href="https://github.com/unjs/jiti/commit/c49c54e">c49c54e</a>)</li> <li>Update agents.md (<a href="https://github.com/unjs/jiti/commit/4deba16">4deba16</a>)</li> <li>Update deps (<a href="https://github.com/unjs/jiti/commit/08fc868">08fc868</a>)</li> <li>Update tsconfig (<a href="https://github.com/unjs/jiti/commit/8c7822e">8c7822e</a>)</li> <li>Update release script (<a href="https://github.com/unjs/jiti/commit/27fe3f2">27fe3f2</a>)</li> </ul> <h3>✅ Tests</h3> <ul> <li>Ignore jsx test for bun/cjs (<a href="https://github.com/unjs/jiti/commit/3a744ca">3a744ca</a>)</li> <li>Update (<a href="https://github.com/unjs/jiti/commit/9ee314f">9ee314f</a>)</li> </ul> <h3>🤖 CI</h3> <ul> <li>Update node test matrix (<a href="https://github.com/unjs/jiti/commit/0abda72">0abda72</a>)</li> </ul> <h3>❤️ Contributors</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/unjs/jiti/commit/fd3bb289b75ed207edfb686d671ed50144f7e90f"><code>fd3bb28</code></a> chore(release): v2.7.0</li> <li><a href="https://github.com/unjs/jiti/commit/27fe3f2a496b712674061c767f21ceaf34d39d83"><code>27fe3f2</code></a> chore: update release script</li> <li><a href="https://github.com/unjs/jiti/commit/4fcd2f23aa31d2e1ece4b307350b8c1d72a26870"><code>4fcd2f2</code></a> fix: fallback for <code>ENAMETOOLONG</code> when evaluating esm (<a href="https://redirect.github.com/unjs/jiti/issues/429">#429</a>)</li> <li><a href="https://github.com/unjs/jiti/commit/8c0243f14e65193fceb023b81aed5c9a820ee2cb"><code>8c0243f</code></a> build: experimental rolldown config</li> <li><a href="https://github.com/unjs/jiti/commit/55194fbb97b56af50ae1c19735ee3b06110b3903"><code>55194fb</code></a> build: upgrade rspack</li> <li><a href="https://github.com/unjs/jiti/commit/0abda72c11fa31654ae17f255f9a854e4b706018"><code>0abda72</code></a> ci: update node test matrix</li> <li><a href="https://github.com/unjs/jiti/commit/8c7822ef2ff03669c31de2fedfcf6676970f5b2a"><code>8c7822e</code></a> chore: update tsconfig</li> <li><a href="https://github.com/unjs/jiti/commit/08fc868c928d65fb615800e51b0ec1ac78f83a69"><code>08fc868</code></a> chore: update deps</li> <li><a href="https://github.com/unjs/jiti/commit/5d552e3bebf9ffcd3fb9f176364fce7b4e35134d"><code>5d552e3</code></a> feat: add <code>jiti/static</code> export (<a href="https://redirect.github.com/unjs/jiti/issues/430">#430</a>)</li> <li><a href="https://github.com/unjs/jiti/commit/ae790b0214512857e40e8b3078b63a7d65f7f2c9"><code>ae790b0</code></a> feat: support virtual modules option (<a href="https://redirect.github.com/unjs/jiti/issues/428">#428</a>)</li> <li>Additional commits viewable in <a href="https://github.com/unjs/jiti/compare/v2.6.1...v2.7.0">compare view</a></li> </ul> </details> <br /> Updates `oxfmt` from 0.47.0 to 0.53.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/oxc-project/oxc/commit/964a7580840f394d67c149ea083e35a1e74c128f"><code>964a758</code></a> release(apps): oxlint v1.68.0 && oxfmt v0.53.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22883">#22883</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/68b455d84f0b18bd6646cfe4f9babb12ec4fc448"><code>68b455d</code></a> release(apps): oxlint v1.67.0 && oxfmt v0.52.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22735">#22735</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/16b8058cd6fd55472cb3a225852ca22db24bb461"><code>16b8058</code></a> feat(oxfmt): Support <code>vite-plus/resolveConfig</code> for vite.config.ts (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22454">#22454</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/557020642e27b948e46f73754b82bee452a82f32"><code>5570206</code></a> release(apps): oxlint v1.66.0 && oxfmt v0.51.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22528">#22528</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/25e5cbc76f887cf5c0c2bdfbef8d4a74fd1ce87d"><code>25e5cbc</code></a> release(apps): oxlint v1.65.0 && oxfmt v0.50.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22458">#22458</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/43b997847b76bfbc35e83738296330a9a33de4e4"><code>43b9978</code></a> fix(formatter/sort_imports): Treat subpath imports as internal (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22440">#22440</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/d652a556196178515a3c1ea6d25a832c74961d02"><code>d652a55</code></a> release(apps): oxlint v1.64.0 && oxfmt v0.49.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22318">#22318</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/6e8e8185c0a3d653bb90dff051ec7d4558793752"><code>6e8e818</code></a> feat(oxfmt): Experimental .svelte support (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/21700">#21700</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/330fe31f826b7d4ae11ae49ba50e2b2ab2bdc6f1"><code>330fe31</code></a> refactor(config): Update doc comment for <code>GlobSet</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22197">#22197</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/fb3067ca2bafbbf7d75b058788202dc16d994f3e"><code>fb3067c</code></a> refactor(oxfmt): use shared GlobSet for overrides (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt/issues/22147">#22147</a>)</li> <li>Additional commits viewable in <a href="https://github.com/oxc-project/oxc/commits/oxfmt_v0.53.0/npm/oxfmt">compare view</a></li> </ul> </details> <br /> Updates `oxlint` from 1.62.0 to 1.68.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 && 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 "ES2015" instead of "ES6" (<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 "ES7" 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 "ES Modules" instead of "ES6 Modules" (<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 "Why is this bad?" 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.68.0] - 2026-06-01</h2> <h3>🚀 Features</h3> <ul> <li>e4b1f46 linter/typescript: Implement <code>method-signature-style</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22679">#22679</a>) (Mikhail Baev)</li> <li>bc462ca linter/vue: Implement no-reserved-component-names rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22741">#22741</a>) (bab)</li> <li>ef9e751 linter/vue: Implement component-definition-name-casing rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22818">#22818</a>) (bab)</li> <li>d67f51a linter/vue: Implement require-prop-type-constructor rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22708">#22708</a>) (bab)</li> <li>8422e8b linter/jsdoc: Implement <code>require-yields-description</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22805">#22805</a>) (Mikhail Baev)</li> <li>fe93f97 linter/eslint: Implement <code>prefer-named-capture-group</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22759">#22759</a>) (Sebastian Poxhofer)</li> </ul> <h2>[1.67.0] - 2026-05-26</h2> <h3>🚀 Features</h3> <ul> <li>b84941e linter/vue: Implement no-expose-after-await rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22675">#22675</a>) (bab)</li> <li>98b98c1 linter/vue: Implement no-computed-properties-in-data rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22674">#22674</a>) (bab)</li> <li>2d4c919 oxlint: Support <code>vite-plus/resolveConfig</code> for vite.config.ts (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22456">#22456</a>) (leaysgur)</li> <li>2a60012 linter/vue: Implement require-render-return rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22613">#22613</a>) (bab)</li> <li>9f227fd linter/vue: Implement no-deprecated-props-default-this rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/21892">#21892</a>) (bab)</li> <li>87f065e linter/vue: Implement return-in-emits-validator rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/21935">#21935</a>) (bab)</li> <li>ea0380c linter/unicorn: Implement <code>import-style</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22173">#22173</a>) (Hao Chen)</li> <li>dde40fe linter/vue: Implement no-watch-after-await rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22006">#22006</a>) (bab)</li> <li>a735eb0 linter/vue: Implement valid-next-tick rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22531">#22531</a>) (bab)</li> <li>6dc615d linter/vue: Implement no-shared-component-data rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/21842">#21842</a>) (bab)</li> <li>a656418 linter/vue: Implement valid-define-options rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22107">#22107</a>) (bab)</li> <li>bb6f1b2 linter/vue: Implement require-slots-as-functions rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22244">#22244</a>) (bab)</li> <li>5fa4774 linter/n: Implement <code>callback-return</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22470">#22470</a>) (Mikhail Baev)</li> </ul> <h2>[1.66.0] - 2026-05-18</h2> <h3>🚀 Features</h3> <ul> <li>0440b0f linter/eslint: Implement <code>id-match</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22379">#22379</a>) (Vladislav Sayapin)</li> <li>65bf119 linter: Implement react no-object-type-as-default-prop (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22481">#22481</a>) (uhyo)</li> <li>2a6ddce linter/eslint: Implement <code>no-implied-eval</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22391">#22391</a>) (Vladislav Sayapin)</li> <li>625758a linter/vitest: Implement padding-around-after-all-blocks rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/21788">#21788</a>) (kapobajza)</li> <li>37680b0 linter: Implement react no-unstable-nested-components (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22248">#22248</a>) (Jovi De Croock)</li> <li>d8d9c74 linter: Implement import/newline-after-import rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/19142">#19142</a>) (Ryuya Yanagi)</li> </ul> <h2>[1.65.0] - 2026-05-15</h2> <h3>🚀 Features</h3> <ul> <li>5478fb5 linter/jsdoc: Implement <code>require-throws-description</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22386">#22386</a>) (Mikhail Baev)</li> <li>c73225e linter/eslint: Implement <code>prefer-arrow-callback</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22312">#22312</a>) (박천(Cheon Park))</li> <li>de82b59 linter: Add support for <code>eslint-plugin-jsx-a11y-x</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22356">#22356</a>) (mehm8128)</li> <li>f44b6c8 linter: Fill schemas <code>DummyRuleMap</code> with built-in rules (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22288">#22288</a>) (Sysix)</li> </ul> <h2>[1.64.0] - 2026-05-11</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/oxc-project/oxc/commit/964a7580840f394d67c149ea083e35a1e74c128f"><code>964a758</code></a> release(apps): oxlint v1.68.0 && oxfmt v0.53.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22883">#22883</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/3f05c5e1267c25daa1c90babd84427f59acf96be"><code>3f05c5e</code></a> feat(linter): expose <code>override::exclude_files</code> option (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22884">#22884</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/e4b1f46bec95da661af72f513e769d729ff605c6"><code>e4b1f46</code></a> feat(linter/typescript): implement <code>method-signature-style</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22679">#22679</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/bc462ca5a778c246d6185d9b8d2cbdf3919ed527"><code>bc462ca</code></a> feat(linter/vue): implement no-reserved-component-names rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22741">#22741</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/ef9e75170dca39091e4aa8360f7d59dc5aa206eb"><code>ef9e751</code></a> feat(linter/vue): implement component-definition-name-casing rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22818">#22818</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/d67f51aba16939ce33b21c7504e177a9ff1c6887"><code>d67f51a</code></a> feat(linter/vue): implement require-prop-type-constructor rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22708">#22708</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/8422e8bc44db47033ce516f9375867624e265823"><code>8422e8b</code></a> feat(linter/jsdoc): implement <code>require-yields-description</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22805">#22805</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/fe93f9718ac09bab79286eb6dbc90ad14f8270bd"><code>fe93f97</code></a> feat(linter/eslint): implement <code>prefer-named-capture-group</code> rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22759">#22759</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/68b455d84f0b18bd6646cfe4f9babb12ec4fc448"><code>68b455d</code></a> release(apps): oxlint v1.67.0 && oxfmt v0.52.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22735">#22735</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/b84941e69e2e630e998fe6b1e90b0506608f7caa"><code>b84941e</code></a> feat(linter/vue): implement no-expose-after-await rule (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/22675">#22675</a>)</li> <li>Additional commits viewable in <a href="https://github.com/oxc-project/oxc/commits/oxlint_v1.68.0/npm/oxlint">compare view</a></li> </ul> </details> <br /> Updates `tsx` from 4.21.0 to 4.22.4 <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.22.4</h2> <h2><a href="https://github.com/privatenumber/tsx/compare/v4.22.3...v4.22.4">4.22.4</a> (2026-05-31)</h2> <h3>Bug Fixes</h3> <ul> <li>resolve CommonJS directory requires inside dependencies (<a href="https://redirect.github.com/privatenumber/tsx/issues/803">#803</a>) (<a href="https://github.com/privatenumber/tsx/commit/1ce846335b7c445a3328c7d27f06424949356d97">1ce8463</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.4"><code>npm package (@latest dist-tag)</code></a></li> </ul> <h2>v4.22.3</h2> <h2><a href="https://github.com/privatenumber/tsx/compare/v4.22.2...v4.22.3">4.22.3</a> (2026-05-19)</h2> <h3>Bug Fixes</h3> <ul> <li>decode typed loader source (<a href="https://github.com/privatenumber/tsx/commit/dce02fc3b8b64a58d24560714902b16f89332f1f">dce02fc</a>)</li> <li>preserve entrypoint with TypeScript preload hooks (<a href="https://github.com/privatenumber/tsx/commit/68f72f3304d8c3ff7048bde8571af9c163fcefa2">68f72f3</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.3"><code>npm package (@latest dist-tag)</code></a></li> </ul> <h2>v4.22.2</h2> <h2><a href="https://github.com/privatenumber/tsx/compare/v4.22.1...v4.22.2">4.22.2</a> (2026-05-18)</h2> <h3>Bug Fixes</h3> <ul> <li>preserve CJS JSON require in ESM hooks (<a href="https://github.com/privatenumber/tsx/commit/35b700bd8620696df03827068af29dcd0d091a60">35b700b</a>)</li> <li>preserve named exports from CommonJS TypeScript (<a href="https://github.com/privatenumber/tsx/commit/11de737dae1fb9dae28db3716df5b1a7e1a6a089">11de737</a>)</li> <li>support module.exports require(esm) interop (<a href="https://github.com/privatenumber/tsx/commit/cf8f19918e4e0a0dc5ee5c52d8cc15e5e22d7c49">cf8f199</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.2"><code>npm package (@latest dist-tag)</code></a></li> </ul> <h2>v4.22.1</h2> <h2><a href="https://github.com/privatenumber/tsx/compare/v4.22.0...v4.22.1">4.22.1</a> (2026-05-17)</h2> <h3>Bug Fixes</h3> <ul> <li>resolve tsconfig path aliases containing a colon (<a href="https://redirect.github.com/privatenumber/tsx/issues/780">#780</a>) (<a href="https://github.com/privatenumber/tsx/commit/6979f28810829dc79ec9baf406e162a18b65ab4b">6979f28</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.1"><code>npm package (@latest dist-tag)</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/privatenumber/tsx/commit/1ce846335b7c445a3328c7d27f06424949356d97"><code>1ce8463</code></a> fix: resolve CommonJS directory requires inside dependencies (<a href="https://redirect.github.com/privatenumber/tsx/issues/803">#803</a>)</li> <li><a href="https://github.com/privatenumber/tsx/commit/dce02fc3b8b64a58d24560714902b16f89332f1f"><code>dce02fc</code></a> fix: decode typed loader source</li> <li><a href="https://github.com/privatenumber/tsx/commit/68f72f3304d8c3ff7048bde8571af9c163fcefa2"><code>68f72f3</code></a> fix: preserve entrypoint with TypeScript preload hooks</li> <li><a href="https://github.com/privatenumber/tsx/commit/69455cfefbfe71100a3c58d3ce7cea42445d9113"><code>69455cf</code></a> test: cover package exports for ambiguous ESM reexports</li> <li><a href="https://github.com/privatenumber/tsx/commit/35b700bd8620696df03827068af29dcd0d091a60"><code>35b700b</code></a> fix: preserve CJS JSON require in ESM hooks</li> <li><a href="https://github.com/privatenumber/tsx/commit/ef807dba6832260fb4cafd78d81f5469a733966b"><code>ef807db</code></a> chore: update testing dependencies</li> <li><a href="https://github.com/privatenumber/tsx/commit/3917090d4f61863ea6ea16e4a9a3722a112cc3f7"><code>3917090</code></a> test: document compatibility test taxonomy</li> <li><a href="https://github.com/privatenumber/tsx/commit/de8113ffa8edbcd4e05fa218324c3e8c2a4afdbe"><code>de8113f</code></a> refactor: centralize Node capability facts</li> <li><a href="https://github.com/privatenumber/tsx/commit/c1f62db45ada60b24ceb3dfdf7f64173d9a15396"><code>c1f62db</code></a> test: consolidate tsconfig path edge coverage</li> <li><a href="https://github.com/privatenumber/tsx/commit/4e08174ec10276ac71c9a69eb28426ad702d0c76"><code>4e08174</code></a> test: consolidate loader hook coverage</li> <li>Additional commits viewable in <a href="https://github.com/privatenumber/tsx/compare/v4.21.0...v4.22.4">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/~GitHub%20Actions">GitHub Actions</a>, a new releaser for tsx since your current version.</p> </details> <br /> Updates `@agentclientprotocol/sdk` from 0.18.2 to 0.24.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>v0.24.0</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.23.0...v0.24.0">0.24.0</a> (2026-06-02)</h2> <h3>Features</h3> <ul> <li>Add resilient schema deserialization (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/167">#167</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/5864e7306e0feb0852cef9aee2a5ba53a0a7f627">5864e73</a>)</li> <li><strong>schema:</strong> Stabilize addl dirs and remove unstable model selectors (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/165">#165</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/fa6e30280874ccd702cc4ab7577d402d2864f619">fa6e302</a>)</li> </ul> <h2>v0.23.0</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.22.1...v0.23.0">0.23.0</a> (2026-06-01)</h2> <h3>Features</h3> <ul> <li><strong>schema:</strong> Stabilize logout and update schema to v0.13.4 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/163">#163</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/cfd900a981eb00dbcdee52db2b2b38847a957328">cfd900a</a>)</li> </ul> <h2>v0.22.1</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.22.0...v0.22.1">0.22.1</a> (2026-05-18)</h2> <h3>Bug Fixes</h3> <ul> <li>Event ordering (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/153">#153</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/7b632266f009865d0e8e64def5cd55367363845b">7b63226</a>)</li> </ul> <h2>v0.22.0</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.21.1...v0.22.0">0.22.0</a> (2026-05-18)</h2> <h3>Features</h3> <ul> <li><strong>unstable:</strong> Add session delete handling (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/152">#152</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/f9384f59008298b44fd1e22e5dde3f2e922fc7ec">f9384f5</a>)</li> <li>Update schema to v0.13.2 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/150">#150</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/b15960b74667f9a582470d58c18ebb9054e5acfd">b15960b</a>)</li> </ul> <h2>v0.21.1</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.21.0...v0.21.1">0.21.1</a> (2026-05-14)</h2> <h3>Bug Fixes</h3> <ul> <li>emit .js extensions in generated schema barrel for nodenext consumers (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/146">#146</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/63b96db49d4826c02fe4afc62a7754db1f9f9ef7">63b96db</a>)</li> </ul> <h2>v0.21.0</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.20.0...v0.21.0">0.21.0</a> (2026-04-28)</h2> <h3>Features</h3> <ul> <li><strong>unstable:</strong> Add <code>providers/*</code> support (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/138">#138</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/e234c213d362d2cd170f8215fa0758a62a59d54e">e234c21</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </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/v0.23.0...v0.24.0">0.24.0</a> (2026-06-02)</h2> <h3>Features</h3> <ul> <li>Add resilient schema deserialization (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/167">#167</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/5864e7306e0feb0852cef9aee2a5ba53a0a7f627">5864e73</a>)</li> <li><strong>schema:</strong> Stabilize addl dirs and remove unstable model selectors (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/165">#165</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/fa6e30280874ccd702cc4ab7577d402d2864f619">fa6e302</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.22.1...v0.23.0">0.23.0</a> (2026-06-01)</h2> <h3>Features</h3> <ul> <li><strong>schema:</strong> Stabilize logout and update schema to v0.13.4 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/163">#163</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/cfd900a981eb00dbcdee52db2b2b38847a957328">cfd900a</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.22.0...v0.22.1">0.22.1</a> (2026-05-18)</h2> <h3>Bug Fixes</h3> <ul> <li>Event ordering (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/153">#153</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/7b632266f009865d0e8e64def5cd55367363845b">7b63226</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.21.1...v0.22.0">0.22.0</a> (2026-05-18)</h2> <h3>Features</h3> <ul> <li><strong>unstable:</strong> Add session delete handling (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/152">#152</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/f9384f59008298b44fd1e22e5dde3f2e922fc7ec">f9384f5</a>)</li> <li>Update schema to v0.13.2 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/150">#150</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/b15960b74667f9a582470d58c18ebb9054e5acfd">b15960b</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.21.0...v0.21.1">0.21.1</a> (2026-05-14)</h2> <h3>Bug Fixes</h3> <ul> <li>emit .js extensions in generated schema barrel for nodenext consumers (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/146">#146</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/63b96db49d4826c02fe4afc62a7754db1f9f9ef7">63b96db</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.20.0...v0.21.0">0.21.0</a> (2026-04-28)</h2> <h3>Features</h3> <ul> <li><strong>unstable:</strong> Add <code>providers/*</code> support (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/138">#138</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/e234c213d362d2cd170f8215fa0758a62a59d54e">e234c21</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.19.2...v0.20.0">0.20.0</a> (2026-04-23)</h2> <h3>Features</h3> <ul> <li>Stabilize <code>closeSession</code> and <code>resumeSession</code> (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/132">#132</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/806d307ba92e824e859075f3f72fe1e9b35b8f0b">806d307</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/8966c11c6e88da3a4adfd16f1789ff71c723c530"><code>8966c11</code></a> chore(main): release 0.24.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/166">#166</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/5864e7306e0feb0852cef9aee2a5ba53a0a7f627"><code>5864e73</code></a> feat: Add resilient schema deserialization (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/167">#167</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/fa6e30280874ccd702cc4ab7577d402d2864f619"><code>fa6e302</code></a> feat(schema): Stabilize addl dirs and remove unstable model selectors (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/165">#165</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/0c2e622a11d49da21b8abdd76ce4cd659ba8c74f"><code>0c2e622</code></a> chore(main): release 0.23.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/164">#164</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/cfd900a981eb00dbcdee52db2b2b38847a957328"><code>cfd900a</code></a> feat(schema): Stabilize logout and update schema to v0.13.4 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/163">#163</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/171a253ae61a243469f4cee547e447d7a7f3ddbf"><code>171a253</code></a> chore(deps-dev): bump concurrently from 9.2.1 to 10.0.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/162">#162</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/0ecf00184fa194f2006e19d364befb0551fb7d58"><code>0ecf001</code></a> chore(deps): bump the minor group with 19 updates (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/161">#161</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/ca74103730cf1c68bdcf89301847aadca8cfb797"><code>ca74103</code></a> chore(deps): bump crate-ci/typos from 1.46.2 to 1.47.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/160">#160</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/c6a9c9487d64e884536a6c74d1190f5243796746"><code>c6a9c94</code></a> chore(deps): bump crate-ci/typos from 1.46.1 to 1.46.2 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/158">#158</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/c7256e7c5d7c8ff8ee888f447210829996a4da78"><code>c7256e7</code></a> chore(deps): bump the minor group with 43 updates (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/159">#159</a>)</li> <li>Additional commits viewable in <a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.18.2...v0.24.0">compare view</a></li> </ul> </details> <br /> Updates `@langchain/langgraph` from 1.2.9 to 1.3.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langgraphjs/releases">@langchain/langgraph's releases</a>.</em></p> <blockquote> <h2><code>@langchain/langgraph</code><a href="https://github.com/1"><code>@1</code></a>.3.4</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2035">#2035</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/7c3a98b23af29fee0d9f064942abb71044ed0e51"><code>7c3a98b</code></a> Thanks <a href="https://github.com/JadenKim-dev"><code>@JadenKim-dev</code></a>! - fix(core): prevent Zod schema defaults from overwriting checkpoint state in Command.update</p> </li> <li> <p>Updated dependencies [<a href="https://github.com/langchain-ai/langgraphjs/commit/04915347128e40fc9617647cadba6b472a357d36"><code>0491534</code></a>]:</p> <ul> <li><code>@langchain/langgraph-sdk</code><a href="https://github.com/1"><code>@1</code></a>.9.12</li> </ul> </li> </ul> <h2><code>@langchain/langgraph</code><a href="https://github.com/1"><code>@1</code></a>.3.3</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2037">#2037</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/9eb478ffeeda2ad9c3bff2cd0f0ac602b0a79f4f"><code>9eb478f</code></a> Thanks <a href="https://github.com/pawel-twardziak"><code>@pawel-twardziak</code></a>! - Decouple <code>ContextType</code> generic from <code>configurable</code> in <code>PregelOptions</code> so that providing a custom context type no longer incorrectly narrows the configurable parameter.</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2457">#2457</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/91a54947155b3fad3234001e63e20099a63ed999"><code>91a5494</code></a> Thanks <a href="https://github.com/christian-bromann"><code>@christian-bromann</code></a>! - fix(langgraph): pass context with stateful RemoteGraph runs</p> <p>Pop <code>thread_id</code> from run <code>config.configurable</code> and forward <code>context</code> to the SDK so checkpointed remote runs accept user context without a 400 from ambiguous parameters. Closes <a href="https://redirect.github.com/langchain-ai/langgraphjs/issues/1922">#1922</a>.</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/1988">#1988</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/6d4bf927e5cf3744034205528bcd09964949d6d7"><code>6d4bf92</code></a> Thanks <a href="https://github.com/Axadali"><code>@Axadali</code></a>! - Fix race condition in IterableReadableWritableStream.push() that caused ERR_INVALID_STATE errors when streaming with multiple parallel nodes and aborting the stream.</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2409">#2409</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/101b70aa8d7ec26ec1654ef814689b832f1e17f3"><code>101b70a</code></a> Thanks <a href="https://github.com/pragnyanramtha"><code>@pragnyanramtha</code></a>! - Preserve non-plain objects passed through <code>Send</code> and <code>Command</code> argument deserialization.</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2344">#2344</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/0125920a2c4a87dc1d66aaf541ea16146f8cf842"><code>0125920</code></a> Thanks <a href="https://github.com/apps/dependabot"><code>@dependabot</code></a>! - chore(deps): bump uuid to 14.0.0 and keep checkpoint ID ordering stable</p> <p>Bump <code>uuid</code> from 10.x/13.x to 14.0.0 across packages. Starting with uuid 11, <code>v6({ clockseq })</code> no longer advances the sub-millisecond time counter when an explicit <code>clockseq</code> is passed, so checkpoint IDs created within the same millisecond were ordered only by <code>clockseq</code>. Since checkpoint IDs are sorted lexicographically, this broke ordering — most visibly for the negative <code>clockseq</code> used by the first ("input") checkpoint, which sorted as the newest.</p> <p><code>uuid6()</code> now maintains its own monotonic <code>(msecs, nsecs)</code> clock (mirroring uuid 10's internal v1 behavior) so the time component is always strictly increasing and checkpoint ordering no longer depends on the <code>clockseq</code> value. <code>emptyCheckpoint()</code> also uses a non-negative <code>clockseq</code>.</p> </li> <li> <p>Updated dependencies [<a href="https://github.com/langchain-ai/langgraphjs/commit/863b555346de02c2c0be290e877b7d260a3f8856"><code>863b555</code></a>, <a href="https://github.com/langchain-ai/langgraphjs/commit/0125920a2c4a87dc1d66aaf541ea16146f8cf842"><code>0125920</code></a>]:</p> <ul> <li><code>@langchain/langgraph-sdk</code><a href="https://github.com/1"><code>@1</code></a>.9.11</li> <li><code>@langchain/langgraph-checkpoint</code><a href="https://github.com/1"><code>@1</code></a>.0.4</li> </ul> </li> </ul> <h2><code>@langchain/langgraph-checkpoint-mongodb</code><a href="https://github.com/1"><code>@1</code></a>.3.3</h2> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2260">#2260</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/4d03dcbc28bbfdf4c0f0ac065b9853652836d2f9"><code>4d03dcb</code></a> Thanks <a href="https://github.com/venkat22022202"><code>@venkat22022202</code></a>! - fix(mongodb): include pendingWrites in list() results</li> </ul> <h2><code>@langchain/langgraph</code><a href="https://github.com/1"><code>@1</code></a>.3.2</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2415">#2415</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/9d3c9dd3182059f9eca9fd9b14d8f7466b4338c4"><code>9d3c9dd</code></a> Thanks <a href="https://github.com/christian-bromann"><code>@christian-bromann</code></a>! - Move <code>@langchain/core</code> from a runtime dependency back to a required peer dependency so installing the SDK alone no longer pulls in <code>@langchain/core</code> (and <code>js-tiktoken</code>, etc.). Consumers that use streaming or message coercion must install <code>@langchain/core</code> explicitly or via <code>@langchain/langgraph</code>.</p> </li> <li> <p>Updated dependencies [<a href="https://github.com/langchain-ai/langgraphjs/commit/9d3c9dd3182059f9eca9fd9b14d8f7466b4338c4"><code>9d3c9dd</code></a>]:</p> <ul> <li><code>@langchain/langgraph-sdk</code><a href="https://github.com/1"><code>@1</code></a>.9.4</li> </ul> </li> </ul> <h2><code>@langchain/langgraph-checkpoint-mongodb</code><a href="https://github.com/1"><code>@1</code></a>.3.2</h2> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2186">#2186</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/26c2e325f435a2c061d6b78a7bd6af089cb1e0e6"><code>26c2e32</code></a> Thanks <a href="https://github.com/jackjin1997"><code>@jackjin1997</code></a>! - fix: metadata filter in list() now works by querying a plain JSON shadow copy instead of the serialized binary blob</li> </ul> <h2><code>@langchain/langgraph</code><a href="https://github.com/1"><code>@1</code></a>.3.1</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langgraphjs/blob/main/libs/langgraph-core/CHANGELOG.md">@langchain/langgraph's changelog</a>.</em></p> <blockquote> <h2>1.3.4</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2035">#2035</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/7c3a98b23af29fee0d9f064942abb71044ed0e51"><code>7c3a98b</code></a> Thanks <a href="https://github.com/JadenKim-dev"><code>@JadenKim-dev</code></a>! - fix(core): prevent Zod schema defaults from overwriting checkpoint state in Command.update</p> </li> <li> <p>Updated dependencies [<a href="https://github.com/langchain-ai/langgraphjs/commit/04915347128e40fc9617647cadba6b472a357d36"><code>0491534</code></a>]:</p> <ul> <li><code>@langchain/langgraph-sdk</code><a href="https://github.com/1"><code>@1</code></a>.9.12</li> </ul> </li> </ul> <h2>1.3.3</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2037">#2037</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/9eb478ffeeda2ad9c3bff2cd0f0ac602b0a79f4f"><code>9eb478f</code></a> Thanks <a href="https://github.com/pawel-twardziak"><code>@pawel-twardziak</code></a>! - Decouple <code>ContextType</code> generic from <code>configurable</code> in <code>PregelOptions</code> so that providing a custom context type no longer incorrectly narrows the configurable parameter.</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2457">#2457</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/91a54947155b3fad3234001e63e20099a63ed999"><code>91a5494</code></a> Thanks <a href="https://github.com/christian-bromann"><code>@christian-bromann</code></a>! - fix(langgraph): pass context with stateful RemoteGraph runs</p> <p>Pop <code>thread_id</code> from run <code>config.configurable</code> and forward <code>context</code> to the SDK so checkpointed remote runs accept user context without a 400 from ambiguous parameters. Closes <a href="https://redirect.github.com/langchain-ai/langgraphjs/issues/1922">#1922</a>.</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/1988">#1988</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/6d4bf927e5cf3744034205528bcd09964949d6d7"><code>6d4bf92</code></a> Thanks <a href="https://github.com/Axadali"><code>@Axadali</code></a>! - Fix race condition in IterableReadableWritableStream.push() that caused ERR_INVALID_STATE errors when streaming with multiple parallel nodes and aborting the stream.</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2409">#2409</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/101b70aa8d7ec26ec1654ef814689b832f1e17f3"><code>101b70a</code></a> Thanks <a href="https://github.com/pragnyanramtha"><code>@pragnyanramtha</code></a>! - Preserve non-plain objects passed through <code>Send</code> and <code>Command</code> argument deserialization.</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2344">#2344</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/0125920a2c4a87dc1d66aaf541ea16146f8cf842"><code>0125920</code></a> Thanks <a href="https://github.com/apps/dependabot"><code>@dependabot</code></a>! - chore(deps): bump uuid to 14.0.0 and keep checkpoint ID ordering stable</p> <p>Bump <code>uuid</code> from 10.x/13.x to 14.0.0 across packages. Starting with uuid 11, <code>v6({ clockseq })</code> no longer advances the sub-millisecond time counter when an explicit <code>clockseq</code> is passed, so checkpoint IDs created within the same millisecond were ordered only by <code>clockseq</code>. Since checkpoint IDs are sorted lexicographically, this broke ordering — most visibly for the negative <code>clockseq</code> used by the first ("input") checkpoint, which sorted as the newest.</p> <p><code>uuid6()</code> now maintains its own monotonic <code>(msecs, nsecs)</code> clock (mirroring uuid 10's internal v1 behavior) so the time component is always strictly increasing and checkpoint ordering no longer depends on the <code>clockseq</code> value. <code>emptyCheckpoint()</code> also uses a non-negative <code>clockseq</code>.</p> </li> <li> <p>Updated dependencies [<a href="https://github.com/langchain-ai/langgraphjs/commit/863b555346de02c2c0be290e877b7d260a3f8856"><code>863b555</code></a>, <a href="https://github.com/langchain-ai/langgraphjs/commit/0125920a2c4a87dc1d66aaf541ea16146f8cf842"><code>0125920</code></a>]:</p> <ul> <li><code>@langchain/langgraph-sdk</code><a href="https://github.com/1"><code>@1</code></a>.9.11</li> <li><code>@langchain/langgraph-checkpoint</code><a href="https://github.com/1"><code>@1</code></a>.0.4</li> </ul> </li> </ul> <h2>1.3.2</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2415">#2415</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/9d3c9dd3182059f9eca9fd9b14d8f7466b4338c4"><code>9d3c9dd</code></a> Thanks <a href="https://github.com/christian-bromann"><code>@christian-bromann</code></a>! - Move <code>@langchain/core</code> from a runtime dependency back to a required peer dependency so installing the SDK alone no longer pulls in <code>@langchain/core</code> (and <code>js-tiktoken</code>, etc.). Consumers that use streaming or message coercion must install <code>@langchain/core</code> explicitly or via <code>@langchain/langgraph</code>.</p> </li> <li> <p>Updated dependencies [<a href="https://github.com/langchain-ai/langgraphjs/commit/9d3c9dd3182059f9eca9fd9b14d8f7466b4338c4"><code>9d3c9dd</code></a>]:</p> <ul> <li><code>@langchain/langgraph-sdk</code><a href="https://github.com/1"><code>@1</code></a>.9.4</li> </ul> </li> </ul> <h2>1.3.1</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2339">#2339</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/2b88da497b2c6f8fbf8f4d901578a198824eb32f"><code>2b88da4</code></a> Thanks <a href="https://github.com/vigneshpatel14"><code>@vigneshpatel14</code></a>! - fix(langgraph): surface structuredResponse parse failures in createReactAgent</p> </li> <li> <p><a href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2406">#2406</a> <a href="https://github.com/langchain-ai/langgraphjs/commit/e54ae901e119ccf81653b90d5a0db2485027a5a9"><code>e54ae90</code></a> Thanks <a href="https://github.com/christian-bromann"><code>@christian-bromann</code></a>! - fix(langgraph-core): keep tool results out of v3 message streams</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/c6b29fb040963e3dcedb7e98ee3a3e3a728e5f82"><code>c6b29fb</code></a> chore: version packages (<a href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2465">#2465</a>)</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/7c3a98b23af29fee0d9f064942abb71044ed0e51"><code>7c3a98b</code></a> fix(core): prevent Zod schema defaults from overwriting checkpoint state in C...</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/d2ca90f8e2cfbba547a9645d81e7c5340d1e7ebf"><code>d2ca90f</code></a> chore: version packages (<a href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2453">#2453</a>)</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/101b70aa8d7ec26ec1654ef814689b832f1e17f3"><code>101b70a</code></a> fix: preserve non-plain Send args (<a href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2409">#2409</a>)</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/0125920a2c4a87dc1d66aaf541ea16146f8cf842"><code>0125920</code></a> chore(deps): bump uuid from 10.0.0 to 14.0.0 (<a href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2344">#2344</a>)</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/91a54947155b3fad3234001e63e20099a63ed999"><code>91a5494</code></a> fix(langgraph): pass context with stateful RemoteGraph runs (<a href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2457">#2457</a>)</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/6d4bf927e5cf3744034205528bcd09964949d6d7"><code>6d4bf92</code></a> fix(langgraph): StreamMessagesHandler throws "Controller is already closed" e...</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/c5dcbd176dba4d7b76b8e2c27b4bc0ed0a9109ac"><code>c5dcbd1</code></a> fix(langgraph): handle null thread checkpoint in RemoteGraph.getState (<a href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2331">#2331</a>)</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/9eb478ffeeda2ad9c3bff2cd0f0ac602b0a79f4f"><code>9eb478f</code></a> fix(langgraph): decouple ContextType from configurable in PregelOptions (<a href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2037">#2037</a>)</li> <li><a href="https://github.com/langchain-ai/langgraphjs/commit/4d12fe0233aa1283c1d7aa1790a7015df9856f66"><code>4d12fe0</code></a> docs: more readme cleanups</li> <li>Additional commits viewable in <a href="https://github.com/langchain-ai/langgraphjs/commits/@langchain/langgraph@1.3.4/libs/langgraph-core">co... _Description has been truncated_ --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com> |
||
|
|
e3d4b5367b |
feat(deepagents): support direct skill paths as sources in createSkillsMiddleware (#242)
## Description
Previously, sources had to be parent directories (e.g. `/skills/`) whose
subdirectories each contained a SKILL.md. Passing a direct skill path
(e.g. `/skills/my-skill/`) had no effect because `listSkillsFromBackend`
scanned for subdirectories inside the source, found none, and returned
an empty list.
## Real case
The motivating scenario is when a curated list of skills organised as
individual directories under a shared directory. Each skill has a clear
responsibility, and different skills are intentionally assigned to the
orchestrator agent vs. subagents:
```typescript
// Desired: pass individual skill paths — one per capability
const SHARED_SKILLS = ['/skills/web-research/'];
const ORCHESTRATOR_SKILLS = [
'/skills/requirement-completeness-validator/',
'/skills/diff-risk-analyzer/',
];
createDeepAgent({
skills: [...SHARED_SKILLS, ...ORCHESTRATOR_SKILLS],
subagents: subagentsConfig.map(agentConfig => ({
skills: [
...SHARED_SKILLS,
...agentConfig.skills,
]
}))
});
```
The workaround would be to create nested directories like this:
```
skills/
web-research/
web-research/
SKILL.md
equirement-completeness-validator/
equirement-completeness-validator/
SKILL.md
...and so on
```
## What's done
Detection is done by inspecting the lsInfo() result of the source
directory: if a SKILL.md file appears directly in the listing, the
source itself is treated as the skill directory. Otherwise the existing
parent-directory scan runs unchanged.
The two modes can be freely mixed in the sources array:
```ts
sources: [
'/skills/', // parent dir: all subdirs with SKILL.md
'/skills/my-skill/', // direct path: SKILL.md at its root
]
```
---------
Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
|
||
|
|
27ebdc3fea |
chore(deepagents): clarify LocalShellBackend virtualMode behavior (#577)
## Summary Fixes #544. Clarifies `LocalShellBackend` path semantics without introducing a breaking default change. This keeps legacy behavior intact while making the bounded-workspace setup explicit in docs and examples. ## Changes ### deepagents (`LocalShellBackend`) - Clarified `LocalShellBackendOptions` docs to explicitly note that `rootDir` does not bound filesystem paths when `virtualMode` is `false`. - Updated `LocalShellBackend` examples to use `virtualMode: true` when bounded path semantics are intended. - Added unit coverage to assert legacy behavior is preserved: with `virtualMode: false`, absolute writes can resolve outside `rootDir`. |
||
|
|
18557db7bb |
fix(deepagents): gate cache_control writes on per-call request.model (#551)
Fixes #550. ## Problem `createCacheBreakpointMiddleware` and `createMemoryMiddleware` write Anthropic-specific `cache_control: { type: "ephemeral" }` markers into the request payload. Both gate the write at **agent-creation time** in `createDeepAgent` (whether the *primary* model is Anthropic). When `modelFallbackMiddleware` swaps `request.model` to a non-Anthropic provider at request time, the markers leak through and the fallback provider rejects the request: ``` 400 Unknown parameter: 'messages[0].content[N].cache_control' ``` Full root-cause writeup, production trace, and reproduction in #550. ## Fix Move the model classification from boot-time to **per-call**, using the existing `isAnthropicModel` helper (`src/utils.ts:9`). - **`src/middleware/cache.ts`** — bail at the top of `wrapModelCall` when `request.model` isn't Anthropic. - **`src/middleware/memory.ts`** — AND the existing `addCacheControl` flag with the same per-call check. `addCacheControl` keeps its current public meaning (opt-in switch); the per-call gate is an additional safety net. - **`src/agent.ts`** — left untouched. The boot-time install gate stays (small perf win when primary is non-Anthropic — middleware isn't installed at all). The new per-call check handles the fallback case where the middleware *is* installed but the model has been swapped. ## Tests Each middleware's `.test.ts` got a `per-call provider gating` block. They build a request with a `ChatAnthropic`-shaped stub vs a `ChatOpenAI`-shaped stub on `request.model`, run `wrapModelCall`, and assert `cache_control` is/isn't written. Also covers `ConfigurableModel` with `modelProvider: "anthropic"` and the string forms (`"anthropic:claude-..."`, `"openai:gpt-5"`). Existing fixtures that didn't set `request.model` now pass a `ChatAnthropic` stub so they keep exercising the write path — they were previously relying on the unconditional behavior. No behavioral assertions changed; only the fixture got more explicit. 31/31 tests pass on `libs/deepagents` (`cache.test.ts` + `memory.test.ts`). ## Compatibility - **No public API change.** `addCacheControl?: boolean` on `MemoryMiddlewareOptions` keeps its existing semantics. - **Anthropic-primary happy path unchanged** — same writes, same cache hits. - **Per-call cost:** one `getName()` / string check inside `wrapModelCall`. Sub-microsecond. - **Failure mode improvement:** users running `createDeepAgent` with an Anthropic primary + non-Anthropic fallback no longer get a 400 from the fallback provider on swap. ## Changeset `patch` bump on `deepagents`. ## Out of scope `request.modelSettings.cache_control` (written by LangChain core's `anthropicPromptCachingMiddleware`) can also leak across the swap. Mentioned in #550 for tracking — that's a LangChain-side fix, not deepagents. --------- Co-authored-by: Anton Nakaliuzhnyi <anakaliuzhnyi@gipartners.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|
|
1ca6dc92fd |
fix(deepagents): return application/octet-stream for unknown MIME types (#541)
Fixes #542. `getMimeType()` falls back to `"text/plain"` for any extension not in the `MIME_TYPES` lookup table. Since `isTextMimeType("text/plain")` returns `true`, this means binary files (.zip, .exe, .wasm, .sqlite, .pyc, .class, .jar, etc.) get treated as text everywhere downstream — grep searches through them and returns garbage, read_file splits their content on newlines and paginates it, and StateBackend can silently corrupt binary data stored via createFileData(). The fix is straightforward: change the default to `"application/octet-stream"`, which is what unknown binary data should be. `isTextMimeType()` already returns `false` for it, so binary files stop getting mangled. To avoid breaking existing behavior for actual text files that were previously relying on the fallback (like .txt, .ts, .py, .json, .js — none of which had explicit entries), this also adds those to the MIME_TYPES map directly. Covers ~67 common text/code extensions. All 386 backend tests pass (10 files). The updated test expectations in utils.test.ts verify both sides: known text extensions still resolve correctly, and unknown/binary extensions now get `application/octet-stream` instead of being misidentified as text. --------- Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> |
||
|
|
84f3c0c2f1 |
fix(deepagents): add browser and node entrypoints (#574)
## Summary Fixes #292, #543 This updates `deepagents` packaging to split environment-specific exports and avoid browser build failures caused by Node-only imports in the default bundle. Browser consumers now have an explicit `deepagents/browser` entrypoint, while Node consumers can keep using `deepagents` (or optionally `deepagents/node`) for the full runtime API. ## Changes ### `deepagents` package exports and entrypoints - Added `src/browser.ts` as a browser-safe public barrel that excludes Node-only APIs. - Added `src/node.ts` as an explicit Node entrypoint that re-exports the full API. - Updated `package.json` exports to: - route the root `browser` condition to `./dist/browser.js` - expose `./browser` and `./node` subpath exports (ESM + CJS + types). - Updated `tsdown` config to build `index`, `browser`, and `node` outputs. ### Runtime import graph hardening - Updated `createDeepAgent` to import `StateBackend` directly from `backends/state` so it no longer pulls in the full Node-oriented backends barrel. - Updated `types.ts` to import `AnyBackendProtocol` from `backends/protocol` instead of `backends/index`. - Removed named Node builtin path imports from `backends/utils.ts` by replacing `path.basename`/`path.extname` with local helpers. ### Documentation and release notes - Added a README section documenting import guidance: browser apps should use `deepagents/browser`, and Node apps can continue to use `deepagents`. - Added a patch changeset for `deepagents` describing the entrypoint and packaging fix. |
||
|
|
03df237385 |
fix(deepagents): scope composite route search fanout by path (#572)
## Summary Fixes #241. This updates `CompositeBackend` search routing so scoped `grep`/`glob` requests only fan out to routed backends mounted under the requested path. Previously, non-route paths (for example `/workspace`) still queried all routes, which could trigger unrelated backend errors. ## Changes ### `libs/deepagents/src/backends/composite.ts` - Added route/path helper predicates to distinguish: - when a search path is inside a route, - when a route is a descendant of the requested search path. - Updated `grep` fallback behavior to query the default backend plus only descendant routes (instead of unconditional all-route fanout). - Updated `glob` fallback behavior to use the same descendant-route filtering. - Normalized `grep` path handling to accept `null` and treat it as root (`/`). - Reused the same route-matching helper in `ls` for consistent prefix matching semantics. ### `libs/deepagents/src/backends/composite.test.ts` - Added regression test to ensure `grep("...", "/workspace")` does not call unrelated routes (for example `/skills/`) while still searching relevant descendant routes. - Added regression test for equivalent `glob` behavior. Co-authored-by: Christian Bromann <731337+christian-bromann@users.noreply.github.com> |
||
|
|
92ddef1894 |
feat(deepagents): Add support for stateSchema to createDeepAgent() (#569)
## Summary
Adds support for `stateSchema` to `createDeepAgent()` as well as
accompanying tests. Example:
```
const stateSchema = new StateSchema({
foo: z.string().default("foo"),
});
const agent = createDeepAgent({ model, stateSchema });
// agent.graph.channels includes attribute foo
```
### Callouts
**Opted against compile/runtime check for stateSchema keys**
There is a strong argument here to add a compile-time or runtime check
to ensure uniqueness of `stateSchema` keys to guard against the
first-writer-wins behavior of channel merging. [There is already a
runtime tool name
check](https://github.com/langchain-ai/deepagentsjs/blob/c524561ad0c4b13075b0d0999236f09bf5f6cb89/libs/deepagents/src/agent.ts#L185).
However the topic of how channel merging is handled, I think, deserves a
fast follow to ensure that consumers of this API are properly educated
(rather than just throwing in this key concept into a single docstring).
|
||
|
|
c524561ad0 |
chore: version packages (#538)
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.13 ### Patch Changes - Updated dependencies \[[`bfb6eec`](https://github.com/langchain-ai/deepagentsjs/commit/bfb6eecdfe617645b3bdebf9a60d4b08e575cef7), [`9c666ba`](https://github.com/langchain-ai/deepagentsjs/commit/9c666ba44adc1f8b428546c2191ea71d88b03998), [`04cc3fc`](https://github.com/langchain-ai/deepagentsjs/commit/04cc3fc26001ee566ed94de44c2dda2cf6adecc4), [`9221c8a`](https://github.com/langchain-ai/deepagentsjs/commit/9221c8a2b5236954f674e30f3ef0e2962f54fb56), [`f6d3f13`](https://github.com/langchain-ai/deepagentsjs/commit/f6d3f13559bd2d9dfad63e379b59ad7577e828be)]: - deepagents@1.10.3 ## deepagents@1.10.3 ### Patch Changes - [#500](https://github.com/langchain-ai/deepagentsjs/pull/500) [`bfb6eec`](https://github.com/langchain-ai/deepagentsjs/commit/bfb6eecdfe617645b3bdebf9a60d4b08e575cef7) Thanks [@colifran](https://github.com/colifran)! - feat(quickjs): add swarm task tool - [#288](https://github.com/langchain-ai/deepagentsjs/pull/288) [`9c666ba`](https://github.com/langchain-ai/deepagentsjs/commit/9c666ba44adc1f8b428546c2191ea71d88b03998) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(deepagents): handle non-string content blocks in tool result sizechecking - [#566](https://github.com/langchain-ai/deepagentsjs/pull/566) [`04cc3fc`](https://github.com/langchain-ai/deepagentsjs/commit/04cc3fc26001ee566ed94de44c2dda2cf6adecc4) Thanks [@hntrl](https://github.com/hntrl)! - fix(deepagents): propagate subagent `lc_agent_name` during task delegation - Ensure `task` tool subagent invocations override `metadata.lc_agent_name` with the selected `subagent_type`. - Add regression coverage for both compiled subagents (`runnable`) and standard subagent specs to verify tool-time metadata reflects the active subagent. - Update the `langsmith` peer dependency range in `deepagents` to `^0.7.1`. - [#549](https://github.com/langchain-ai/deepagentsjs/pull/549) [`9221c8a`](https://github.com/langchain-ai/deepagentsjs/commit/9221c8a2b5236954f674e30f3ef0e2962f54fb56) Thanks [@colifran](https://github.com/colifran)! - chore(deepagents): move required ptc tools to metadata - [#537](https://github.com/langchain-ai/deepagentsjs/pull/537) [`f6d3f13`](https://github.com/langchain-ai/deepagentsjs/commit/f6d3f13559bd2d9dfad63e379b59ad7577e828be) Thanks [@hntrl](https://github.com/hntrl)! - bump langsmith sdk version ## @langchain/quickjs@0.4.1 ### Patch Changes - [#545](https://github.com/langchain-ai/deepagentsjs/pull/545) [`b3f0d6e`](https://github.com/langchain-ai/deepagentsjs/commit/b3f0d6e8fa2980652123e0053c116fc9945720ac) Thanks [@colifran](https://github.com/colifran)! - chore(quickjs): update swarm task tool to use withStructuredOutput - [#500](https://github.com/langchain-ai/deepagentsjs/pull/500) [`bfb6eec`](https://github.com/langchain-ai/deepagentsjs/commit/bfb6eecdfe617645b3bdebf9a60d4b08e575cef7) Thanks [@colifran](https://github.com/colifran)! - feat(quickjs): add swarm task tool - [#549](https://github.com/langchain-ai/deepagentsjs/pull/549) [`9221c8a`](https://github.com/langchain-ai/deepagentsjs/commit/9221c8a2b5236954f674e30f3ef0e2962f54fb56) Thanks [@colifran](https://github.com/colifran)! - chore(deepagents): move required ptc tools to metadata ## @deepagents/evals@0.0.12 ### Patch Changes - Updated dependencies \[[`bfb6eec`](https://github.com/langchain-ai/deepagentsjs/commit/bfb6eecdfe617645b3bdebf9a60d4b08e575cef7), [`9c666ba`](https://github.com/langchain-ai/deepagentsjs/commit/9c666ba44adc1f8b428546c2191ea71d88b03998), [`04cc3fc`](https://github.com/langchain-ai/deepagentsjs/commit/04cc3fc26001ee566ed94de44c2dda2cf6adecc4), [`9221c8a`](https://github.com/langchain-ai/deepagentsjs/commit/9221c8a2b5236954f674e30f3ef0e2962f54fb56), [`f6d3f13`](https://github.com/langchain-ai/deepagentsjs/commit/f6d3f13559bd2d9dfad63e379b59ad7577e828be)]: - deepagents@1.10.3 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Colin Francis <colin.francis@langchain.dev> |
||
|
|
04cc3fc260 |
fix(deepagents): propagate subagent lc_agent_name for delegated tasks (#566)
## Summary Fixes #206. This updates deepagents subagent delegation so tool executions can reliably identify the active subagent via `config.metadata.lc_agent_name` instead of inheriting the parent agent name. It also adds focused regression tests that validate both compiled subagents and standard subagent specs follow the same metadata behavior. ## Changes ### `libs/deepagents` subagent metadata propagation - Updated `createTaskTool` subagent invocation config to explicitly set: - `metadata.lc_agent_name = subagent_type` - existing `configurable.ls_agent_type = "subagent"` behavior remains unchanged - Added new regression coverage in `subagent.test.ts`: - compiled subagent (`runnable`) path - standard subagent spec (`systemPrompt/tools/model`) path - Tests assert tool-time metadata receives the delegated subagent name (`worker`), preventing parent-name leakage. ### `libs/deepagents` dependency range update - Bumped `langsmith` peer dependency range in `libs/deepagents/package.json` from `>=0.6.0 <1.0.0` to `^0.7.1`. - Updated `pnpm-lock.yaml` accordingly. |
||
|
|
9c666ba44a |
fix(deepagents): handle non-string content blocks in tool result sizechecking (#288)
Fixes #277 The tool result eviction logic in `processToolMessage` only checked `content` when it was a plain string (`typeof msg.content === "string"`), which meant array-based content blocks (e.g. `[{ type: "text", text: "..." }]`) bypassed the size limit entirely and were sent back to the agent untruncated. The fix uses the existing `BaseMessage.text` getter from `@langchain/core`, which already handles both content formats: - **String content**: returned as-is - **Array content blocks**: joins all blocks with `type === "text"` into a single string This avoids introducing any new utility functions — the upstream API already solves this. ## Changes - Updated `processToolMessage()` in `fs.ts` to use `msg.text` instead of directly checking `msg.content` - Added 2 unit tests covering array-based content block eviction (large and small) |
||
|
|
9221c8a2b5 |
chore(deepagents): move required ptc tools to metadata (#549)
This PR aligns SkillMetadata with the agent skills spec by removing the top level required ptc tools field and keeps it contained within metadata |
||
|
|
bfb6eecdfe |
feat(quickjs): add swarm task tool (#500)
### Summary
Adds the swarm task tool to @langchain/quickjs and fixes skill module
loading for the agentskills.io spec, enabling parallel subagent dispatch
from inside the QuickJS code interpreter.
Swarm task tool (tools/swarm-task.ts) is a PTC-only tool that bridges
the code interpreter to the host runtime for subagent dispatch. It
supports two modes:
1. Direct model calls with structured output (invoke mode) for
classification/extraction tasks
2. Full agentic loops with tools (agent mode) for multi-step reasoning.
It handles schema normalization, model variant caching with TTL-based
sweeping, and structured output binding.
Spec-compliant entrypoint resolution — loadSkill() now resolves the
entrypoint from metadata.entrypoint (the agentskills.io extension point)
first, falling back to the legacy top-level module field. This lets
skills use spec-compliant frontmatter without a top-level module key.
Subdirectory entrypoint support — the QuickJS module normalizer now uses
the entrypoint's directory (not the skill root) when resolving relative
imports from a bare specifier. This fixes import { ... } from
"./sibling.js" when the entrypoint lives in a subdirectory like
scripts/index.ts.
Supporting changes include wiring skills metadata through the middleware
and session layers, extending the transform pipeline to strip import
type/export type declarations, adding requiredPtcTools validation, and
session improvements (extractToolText, stripLineNumbers, __sessionId__).
The swarm skill itself (table management, batching, filtering,
interpolation) is distributed separately and not included here.
### Tests
- 41 tests for the swarm task tool covering both dispatch modes, schema
normalization, variant caching and TTL sweeping, error handling, and
edge cases around model binding
- 3 new tests for entrypoint resolution (metadata.entrypoint preferred
over module, subdirectory relative imports)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
||
|
|
f6d3f13559 | chore(deepagents): bump langsmith sdk version (#537) | ||
|
|
163ee4949e |
chore: version packages (#532)
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.12 ### Patch Changes - Updated dependencies \[[`f088089`](https://github.com/langchain-ai/deepagentsjs/commit/f0880899ea6726b7320b0888d0f6a10a7749e1bf), [`7c33a86`](https://github.com/langchain-ai/deepagentsjs/commit/7c33a8695f2e16217779bef5c6fca28230f18815)]: - deepagents@1.10.2 ## deepagents@1.10.2 ### Patch Changes - [#533](https://github.com/langchain-ai/deepagentsjs/pull/533) [`f088089`](https://github.com/langchain-ai/deepagentsjs/commit/f0880899ea6726b7320b0888d0f6a10a7749e1bf) Thanks [@vishnu-ssuresh](https://github.com/vishnu-ssuresh)! - feat(deepagents): add `ContextHubBackend` for LangSmith Hub agent repos - [#526](https://github.com/langchain-ai/deepagentsjs/pull/526) [`7c33a86`](https://github.com/langchain-ai/deepagentsjs/commit/7c33a8695f2e16217779bef5c6fca28230f18815) Thanks [@colifran](https://github.com/colifran)! - feat(deepagents): implement harness profiles ## @deepagents/evals@0.0.11 ### Patch Changes - Updated dependencies \[[`f088089`](https://github.com/langchain-ai/deepagentsjs/commit/f0880899ea6726b7320b0888d0f6a10a7749e1bf), [`7c33a86`](https://github.com/langchain-ai/deepagentsjs/commit/7c33a8695f2e16217779bef5c6fca28230f18815)]: - deepagents@1.10.2 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Colin Francis <colin.francis@langchain.dev> |
||
|
|
f0880899ea |
feat(deepagents): add ContextHubBackend backend (#533)
This ports Python deepagents PR #3338 behavior into the JS SDK by introducing a new first-class backend: `ContextHubBackend`. Why: - Context Hub repo persistence is now available as an SDK backend in JS, matching the Python backend architecture. - This gives JS users a canonical LangSmith Hub-backed file backend with the same operational semantics (lazy pull, commit chaining, cache invalidation, batch upload behavior). What changed: - Added `ContextHubBackend` in `libs/deepagents/src/backends/context-hub.ts`. - Exported it from backend and root package exports. - Added parity-focused unit tests in `context-hub.test.ts`. - Added integration contract tests in `context-hub.int.test.ts` (gated by `LANGSMITH_API_KEY`). - Updated `deepagents` peer dependency on `langsmith` from `>=0.5.20` to `>=0.6.0` to rely on Hub directory APIs (`pullAgent` / `pushAgent`). - Added a changeset for release notes. Behavior highlights: - Missing repo on pull is treated as empty and lazily created on first write. - In-memory file cache with linked-entry tracking (`getLinkedEntries`). - Commit hash tracking with optimistic `parentCommit` chaining. - Cache invalidation on mutating Hub failures. - `uploadFiles` commits all valid UTF-8 files in a single batch commit and returns per-file success/error. Validation run: - `pnpm install` - `pnpm exec oxfmt --write ...` (touched files) - `pnpm --filter deepagents exec oxlint ...` (touched files) - `pnpm --filter deepagents exec vitest run src/backends/context-hub.test.ts` (33 passed) - `pnpm --filter deepagents exec vitest run --mode int src/backends/context-hub.int.test.ts` (skipped without `LANGSMITH_API_KEY`) |
||
|
|
7c33a8695f |
feat(deepagents): implement harness profiles (#526)
### Summary
Introduces harness profiles which is a way to declaratively control how
agents behave at runtime without changing which model is used. A profile
can override the system prompt, hide tools, add or remove middleware,
and configure the general-purpose subagent. Profiles are registered by
provider or model key ("anthropic", "openai:gpt-5.4") and looked up
automatically when `createDeepAgent` is called.
The system ships with built-in profiles for Anthropic Opus 4.7, Sonnet
4.6, Haiku 4.5, and OpenAI Codex that include vendor-recommended
prompting guidance. Users can register their own profiles on top and
registrations merge additively so provider-wide defaults compose with
model-specific overrides.
Profiles are plain frozen objects with Zod schemas for parsing from
JSON/YAML config files, including prototype-pollution protection for
untrusted input.
### Tests
Unit tests cover key validation, profile construction and freezing,
serialization round-trips, poison-key rejection, merge semantics across
all field types, registry lookup with provider fallback, and prompt
overlay behavior. Built-in profiles are tested for correct registration
and expected content.
Also verified end-to-end via a standalone script against LangSmith and
confirmed the custom suffix appears in the system prompt and excluded
tools are absent from the model call.
### Usage Example
```ts
import { HumanMessage } from "@langchain/core/messages";
import { createDeepAgent, registerHarnessProfile } from "deepagents";
registerHarnessProfile("anthropic:claude-sonnet-4-6", {
systemPromptSuffix: "Always respond in exactly one sentence.",
excludedTools: ["grep"],
generalPurposeSubagent: {
description: "A customized GP subagent via harness profile.",
},
});
const agent = createDeepAgent({
model: "anthropic:claude-sonnet-4-6",
});
const result = await agent.invoke({
messages: [new HumanMessage("What is the capital of France?")],
});
const lastMessage = result.messages[result.messages.length - 1];
console.log("Response:", lastMessage.content);
```
|
||
|
|
c231aed3ee |
chore: version packages (#525)
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.4.0 ### Minor Changes - [#531](https://github.com/langchain-ai/deepagentsjs/pull/531) [`a76b7df`](https://github.com/langchain-ai/deepagentsjs/commit/a76b7df62310e7f2dd49bb1ea5f1b3ee6c8590b6) Thanks [@colifran](https://github.com/colifran)! - chore(quickjs): update `REPLMiddleware` to be named `CodeInterpreterMiddleware` ### Patch Changes - [#524](https://github.com/langchain-ai/deepagentsjs/pull/524) [`2cbd524`](https://github.com/langchain-ai/deepagentsjs/commit/2cbd5245a43fb1ba97fa532c1942a8903e090cfa) Thanks [@colifran](https://github.com/colifran)! - fix(quickjs): individual repl sessions use individual wasm module causing inefficient memory usage ## deepagents-acp@0.1.11 ### Patch Changes - Updated dependencies \[[`f164f99`](https://github.com/langchain-ai/deepagentsjs/commit/f164f992e06a157573612fb2640232f44d9daa18)]: - deepagents@1.10.1 ## deepagents@1.10.1 ### Patch Changes - [#479](https://github.com/langchain-ai/deepagentsjs/pull/479) [`f164f99`](https://github.com/langchain-ai/deepagentsjs/commit/f164f992e06a157573612fb2640232f44d9daa18) Thanks [@ramon-langchain](https://github.com/ramon-langchain)! - feat(deepagents): add snapshot/start/stop lifecycle to LangSmithSandbox ## @deepagents/evals@0.0.10 ### Patch Changes - Updated dependencies \[[`f164f99`](https://github.com/langchain-ai/deepagentsjs/commit/f164f992e06a157573612fb2640232f44d9daa18)]: - deepagents@1.10.1 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Colin Francis <colin.francis@langchain.dev> |
||
|
|
8a6de8e7ee |
fix(deepagents): align LangSmith sandbox create options with SDK (#528)
## Summary This fixes a CI-breaking type mismatch in the LangSmith sandbox backend introduced by the snapshot lifecycle update. `LangSmithSandbox.create()` was using a `snapshotId` flow that did not match the current `langsmith` SDK typings, which surfaced as unhandled Vitest typecheck errors in CI. |
||
|
|
f164f992e0 |
feat(deepagents): add snapshot/start/stop lifecycle to LangSmithSandbox (#479)
## Summary Expose the new LangSmith sandbox snapshot and lifecycle APIs (landed in `langsmith@0.5.20`) through the `LangSmithSandbox` wrapper. - New methods on `LangSmithSandbox`: `start()`, `stop()`, `captureSnapshot()` - `LangSmithSandbox.create()` now accepts `snapshotId` (preferred) or `templateName` (deprecated); throws if neither is provided - Re-export upstream types as `LangSmithSnapshot`, `LangSmithCaptureSnapshotOptions`, `LangSmithStartSandboxOptions` - Bump `langsmith` peer dep to `>=0.5.20` - Update the example to boot from `LANGSMITH_SANDBOX_SNAPSHOT_ID` ## Test plan - [x] Unit tests: added coverage for `start()`, `stop()`, `captureSnapshot()`; 41/41 pass - [x] Type-check clean - [x] Dev smoke test against `dev.api.smith.langchain.com` — create from snapshot, execute, stop, start, execute after restart all working --------- Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com> Co-authored-by: Ramon Nogueira <270434257+ramon-langchain@users.noreply.github.com> Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> |
||
|
|
6da7007e52 |
chore: version packages (#521)
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.10.0 ### Minor Changes - [#458](https://github.com/langchain-ai/deepagentsjs/pull/458) [`b1e1b7b`](https://github.com/langchain-ai/deepagentsjs/commit/b1e1b7bd3bcc3bd5b03dd461e72559ed69c77e22) Thanks [@christian-bromann](https://github.com/christian-bromann)! - feat(deepagents): new events streaming ## @langchain/quickjs@0.3.0 ### Minor Changes - [#520](https://github.com/langchain-ai/deepagentsjs/pull/520) [`2548954`](https://github.com/langchain-ai/deepagentsjs/commit/254895457fce2de7df4547ebcf825d60868bacce) Thanks [@colifran](https://github.com/colifran)! - chore(quickjs): rename to REPLMiddleware and adjust defaults ## deepagents-acp@0.1.10 ### Patch Changes - Updated dependencies \[[`b1e1b7b`](https://github.com/langchain-ai/deepagentsjs/commit/b1e1b7bd3bcc3bd5b03dd461e72559ed69c77e22)]: - deepagents@1.10.0 ## @deepagents/evals@0.0.9 ### Patch Changes - Updated dependencies \[[`b1e1b7b`](https://github.com/langchain-ai/deepagentsjs/commit/b1e1b7bd3bcc3bd5b03dd461e72559ed69c77e22)]: - deepagents@1.10.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
b1e1b7bd3b |
feat(deepagents): support new streaming features (currently experimental in LG.js) (#458)
This patch adopts the new streaming primitives we have implemented in LangGraph.js for Deep Agent. LangGraph.js PR: https://github.com/langchain-ai/langgraphjs/pull/2312 LangChain.js PR: https://github.com/langchain-ai/langchainjs/pull/10697 |
||
|
|
9a8ff1941a |
chore: version packages (#444)
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.9 ### Patch Changes - [#501](https://github.com/langchain-ai/deepagentsjs/pull/501) [`5b0eaea`](https://github.com/langchain-ai/deepagentsjs/commit/5b0eaea7b20461414983b71ba08d26d078b49214) Thanks [@sukhmanghotraa](https://github.com/sukhmanghotraa)! - fix: bump @langchain/core to ^1.1.42 across all workspace packages - Updated dependencies \[[`5b0eaea`](https://github.com/langchain-ai/deepagentsjs/commit/5b0eaea7b20461414983b71ba08d26d078b49214), [`e90171a`](https://github.com/langchain-ai/deepagentsjs/commit/e90171abe4bcc76767246be470a7b17b94692f41), [`8fd575f`](https://github.com/langchain-ai/deepagentsjs/commit/8fd575f06ca27cb0bef1a649aa34124a2c04ddd3), [`3657941`](https://github.com/langchain-ai/deepagentsjs/commit/3657941ea36b21b9b512c1eb68a250ae79124383), [`998d772`](https://github.com/langchain-ai/deepagentsjs/commit/998d772a07acc76fcc0d419e65b3c74a64d9ac52), [`55f3bd8`](https://github.com/langchain-ai/deepagentsjs/commit/55f3bd8d74cac22d124fd6d1b11538dc2c2c2aec), [`79e20e1`](https://github.com/langchain-ai/deepagentsjs/commit/79e20e18082a19b65094b953cd857908a7525801), [`2442d7d`](https://github.com/langchain-ai/deepagentsjs/commit/2442d7d080c8a1008197eda526de52400303dd72), [`43cd121`](https://github.com/langchain-ai/deepagentsjs/commit/43cd121133562abf0dee76c6db01f2bde0eb3fd3), [`2994444`](https://github.com/langchain-ai/deepagentsjs/commit/2994444f32a6c0503defa6157652e742361abb00)]: - deepagents@1.9.1 ## deepagents@1.9.1 ### Patch Changes - [#501](https://github.com/langchain-ai/deepagentsjs/pull/501) [`5b0eaea`](https://github.com/langchain-ai/deepagentsjs/commit/5b0eaea7b20461414983b71ba08d26d078b49214) Thanks [@sukhmanghotraa](https://github.com/sukhmanghotraa)! - fix: bump @langchain/core to ^1.1.42 across all workspace packages - [#442](https://github.com/langchain-ai/deepagentsjs/pull/442) [`e90171a`](https://github.com/langchain-ai/deepagentsjs/commit/e90171abe4bcc76767246be470a7b17b94692f41) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(deepagents): closer align store backend with Python - [#496](https://github.com/langchain-ai/deepagentsjs/pull/496) [`8fd575f`](https://github.com/langchain-ai/deepagentsjs/commit/8fd575f06ca27cb0bef1a649aa34124a2c04ddd3) Thanks [@colifran](https://github.com/colifran)! - feat(deepagents): implement functional skills for quickjs middleware - [#448](https://github.com/langchain-ai/deepagentsjs/pull/448) [`3657941`](https://github.com/langchain-ai/deepagentsjs/commit/3657941ea36b21b9b512c1eb68a250ae79124383) Thanks [@ItayCoCo](https://github.com/ItayCoCo)! - fix: follow symlinks in sandbox find commands by adding -L flag to find invocations in buildLsCommand, buildFindCommand, and buildGrepCommand - [#486](https://github.com/langchain-ai/deepagentsjs/pull/486) [`998d772`](https://github.com/langchain-ai/deepagentsjs/commit/998d772a07acc76fcc0d419e65b3c74a64d9ac52) Thanks [@colifran](https://github.com/colifran)! - feat(quickjs): remove built-in VFS globals, add PTC instance injection and StateBackend read-your-writes - [#470](https://github.com/langchain-ai/deepagentsjs/pull/470) [`55f3bd8`](https://github.com/langchain-ai/deepagentsjs/commit/55f3bd8d74cac22d124fd6d1b11538dc2c2c2aec) Thanks [@jacoblee93](https://github.com/jacoblee93)! - Adds agent type metadata prop to configurable - [#451](https://github.com/langchain-ai/deepagentsjs/pull/451) [`79e20e1`](https://github.com/langchain-ai/deepagentsjs/commit/79e20e18082a19b65094b953cd857908a7525801) Thanks [@JadenKim-dev](https://github.com/JadenKim-dev)! - remove unconditional @langchain/anthropic import - [#465](https://github.com/langchain-ai/deepagentsjs/pull/465) [`2442d7d`](https://github.com/langchain-ai/deepagentsjs/commit/2442d7d080c8a1008197eda526de52400303dd72) Thanks [@hntrl](https://github.com/hntrl)! - fix(deepagents): route summarization through active request model - [#492](https://github.com/langchain-ai/deepagentsjs/pull/492) [`43cd121`](https://github.com/langchain-ai/deepagentsjs/commit/43cd121133562abf0dee76c6db01f2bde0eb3fd3) Thanks [@colifran](https://github.com/colifran)! - implement file system permissions for fs middleware tools - [#459](https://github.com/langchain-ai/deepagentsjs/pull/459) [`2994444`](https://github.com/langchain-ai/deepagentsjs/commit/2994444f32a6c0503defa6157652e742361abb00) Thanks [@open-swe](https://github.com/apps/open-swe)! - fix(deepagents): skill loading should default to 1000 lines ## @langchain/quickjs@0.2.6 ### Patch Changes - [#501](https://github.com/langchain-ai/deepagentsjs/pull/501) [`5b0eaea`](https://github.com/langchain-ai/deepagentsjs/commit/5b0eaea7b20461414983b71ba08d26d078b49214) Thanks [@sukhmanghotraa](https://github.com/sukhmanghotraa)! - fix: bump @langchain/core to ^1.1.42 across all workspace packages - [#496](https://github.com/langchain-ai/deepagentsjs/pull/496) [`8fd575f`](https://github.com/langchain-ai/deepagentsjs/commit/8fd575f06ca27cb0bef1a649aa34124a2c04ddd3) Thanks [@colifran](https://github.com/colifran)! - feat(deepagents): implement functional skills for quickjs middleware - [#486](https://github.com/langchain-ai/deepagentsjs/pull/486) [`998d772`](https://github.com/langchain-ai/deepagentsjs/commit/998d772a07acc76fcc0d419e65b3c74a64d9ac52) Thanks [@colifran](https://github.com/colifran)! - feat(quickjs): remove built-in VFS globals, add PTC instance injection and StateBackend read-your-writes - [#498](https://github.com/langchain-ai/deepagentsjs/pull/498) [`192bbd7`](https://github.com/langchain-ai/deepagentsjs/commit/192bbd7109817a826aa6bd982e16b54b5a5c8cb5) Thanks [@colifran](https://github.com/colifran)! - fix(quickjs): bound console buffering at capture time - [#497](https://github.com/langchain-ai/deepagentsjs/pull/497) [`79dcf9a`](https://github.com/langchain-ai/deepagentsjs/commit/79dcf9ae4567fcce71ea7e529f332baf6a3d6dcd) Thanks [@colifran](https://github.com/colifran)! - feat(quickjs): add maxPtcCallsbudget for ptc calls - [#492](https://github.com/langchain-ai/deepagentsjs/pull/492) [`43cd121`](https://github.com/langchain-ai/deepagentsjs/commit/43cd121133562abf0dee76c6db01f2bde0eb3fd3) Thanks [@colifran](https://github.com/colifran)! - implement file system permissions for fs middleware tools - [#494](https://github.com/langchain-ai/deepagentsjs/pull/494) [`e64c7e3`](https://github.com/langchain-ai/deepagentsjs/commit/e64c7e31a7e62929d5d2a9048ad7df3315a546cd) Thanks [@colifran](https://github.com/colifran)! - feat(quickjs): implement delete session in after agent hook to clean up completed repl sessions - [#499](https://github.com/langchain-ai/deepagentsjs/pull/499) [`352e487`](https://github.com/langchain-ai/deepagentsjs/commit/352e4876679fb708d9690ffeab82363ba02677dc) Thanks [@hntrl](https://github.com/hntrl)! - fix(quickjs): add ls_code_input_language metadata to js_eval tool ## @deepagents/evals@0.0.8 ### Patch Changes - Updated dependencies \[[`5b0eaea`](https://github.com/langchain-ai/deepagentsjs/commit/5b0eaea7b20461414983b71ba08d26d078b49214), [`e90171a`](https://github.com/langchain-ai/deepagentsjs/commit/e90171abe4bcc76767246be470a7b17b94692f41), [`8fd575f`](https://github.com/langchain-ai/deepagentsjs/commit/8fd575f06ca27cb0bef1a649aa34124a2c04ddd3), [`3657941`](https://github.com/langchain-ai/deepagentsjs/commit/3657941ea36b21b9b512c1eb68a250ae79124383), [`998d772`](https://github.com/langchain-ai/deepagentsjs/commit/998d772a07acc76fcc0d419e65b3c74a64d9ac52), [`55f3bd8`](https://github.com/langchain-ai/deepagentsjs/commit/55f3bd8d74cac22d124fd6d1b11538dc2c2c2aec), [`79e20e1`](https://github.com/langchain-ai/deepagentsjs/commit/79e20e18082a19b65094b953cd857908a7525801), [`2442d7d`](https://github.com/langchain-ai/deepagentsjs/commit/2442d7d080c8a1008197eda526de52400303dd72), [`43cd121`](https://github.com/langchain-ai/deepagentsjs/commit/43cd121133562abf0dee76c6db01f2bde0eb3fd3), [`2994444`](https://github.com/langchain-ai/deepagentsjs/commit/2994444f32a6c0503defa6157652e742361abb00)]: - deepagents@1.9.1 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Hunter Lovell <hunter@hntrl.io> |
||
|
|
5b0eaea7b2 |
fix: bump @langchain/core to ^1.1.42 across all workspace packages (#501)
## Problem
When using `@langchain/google` as a model provider in the examples
workspace, the server crashes immediately with:
1. Runtime crash on startup:
```bash
ERR_PACKAGE_PATH_NOT_EXPORTED: Package subpath './utils/uuid' is not
defined by "exports" in @langchain/core/package.json
```
`@langchain/google` imports `@langchain/core/utils/uuid`, a subpath
added in `@langchain/core@1.1.42`. Both the examples workspace and
`libs/deepagents` were pinned to `^1.1.40` which does not export this
path.
2. TypeScript type error after fixing the runtime crash:
```bash
Type 'ChatGoogle' is not assignable to type 'BaseLanguageModel<any,
BaseLanguageModelCallOptions>'
```
Even after bumping `@langchain/core` in `examples/` only, pnpm kept two
separate copies in its store - `1.1.40` for `deepagents` and `1.1.42`
for `@langchain/google`. TypeScript treats them as structurally
incompatible types because the type import paths differ.
## Fix
- Bump `@langchain/core` from `^1.1.40` → `^1.1.42` in all
`../package.json` files
## Testing
```bash
cd examples/research
pnpm dlx @langchain/langgraph-cli dev
# -> No ERR_PACKAGE_PATH_NOT_EXPORTED and agent starts correctly
---------
Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
|
||
|
|
8fd575f06c |
feat(deepagents): implement functional skills for quickjs middleware (#496)
### Summary
Adds functional skill modules to the QuickJS REPL. Skills can now ship
JS/TS entrypoints via a module: frontmatter key on SKILL.md, which the
model dynamically imports at eval time with await
import("@/skills/<name>").
When skillsBackend is passed to createQuickJSMiddleware, the middleware
reads skillsMetadata from the current task state before each eval, scans
the source for skill references, and pushes the metadata + backend into
the session. The session wires a QuickJS module loader that lazily
fetches skill files from the backend, strips TypeScript syntax, and
caches the result for the lifetime of the session. Skills that are
referenced but not available on the agent short-circuit with a clear
error before evaluation starts.
On the deepagents side, SkillMetadata gains an optional module field
(validated and normalized from frontmatter), and formatSkillsList now
advertises importable skills in the system prompt with an await
import(...) hint.
```ts
const backend = new FilesystemBackend({ rootDir: "/project", virtualMode: true });
const agent = createDeepAgent({
model: "claude-sonnet-4-6",
backend,
skills: ["/skills/"],
middleware: [
createQuickJSMiddleware({ skillsBackend: backend }),
],
});
```
### Tests
- Unit tests cover module path validation, TS syntax stripping, skill
loading (single/multi-file, error cases, bundle size cap), skill
reference scanning, module loader resolution and caching, and system
prompt formatting
- Ran an E2E eval that exercised the full pipeline from SKILL.md parse
through dynamic import and function call in the REPL, with a LangSmith
trace
### Benchmarks
#### memory: console_log concurrent
- Total time: 15820ms
| name | hz | min | max | mean | p75 | p99 | p995 | p999 | rme | samples
|
|--------------------------|---------|--------|--------|--------|--------|--------|--------|--------|--------|---------|
| 1 concurrent sessions | 145.91 | 1.8263 | 27.7702| 6.8536 | 9.1753 |
21.1492| 25.0420| 27.7702| ±5.30% | 730 |
| 8 concurrent sessions | 39.1773 | 15.5854| 61.5015| 25.5250| 27.8461|
49.0536| 61.5015| 61.5015| ±3.58% | 196 |
| 32 concurrent sessions | 13.9753 | 48.5504| 110.40 | 71.5547| 76.6394|
110.40 | 110.40 | 110.40 | ±3.72% | 70 |
---
#### memory: ptc_tools concurrent
- Total time: 16755ms
| name | hz | min | max | mean | p75 | p99 | p995 | p999 | rme | samples
|
|--------------------------|---------|--------|--------|--------|--------|--------|--------|--------|--------|---------|
| 1 concurrent sessions | 86.9205 | 4.1809 | 32.1833| 11.5048| 15.3222|
25.2676| 28.2697| 32.1833| ±4.76% | 435 |
| 8 concurrent sessions | 21.8310 | 33.5598| 69.0041| 45.8065| 50.8740|
60.2001| 69.0041| 69.0041| ±2.77% | 110 |
| 32 concurrent sessions | 7.0269 | 137.88 | 148.90 | 142.31 | 144.05 |
148.90 | 148.90 | 148.90 | ±0.70% | 36 |
---
#### throughput: single thread many iterations
- Total time: 31656ms
| name | hz | min | max | mean | p75 | p99 | p995 | p999 | rme | samples
|
|-------------------------------------------|--------|--------|--------|--------|--------|--------|--------|--------|--------|---------|
| 200 sequential evals (ptc + console.log) | 3.5897 | 240.92 | 347.19 |
278.58 | 289.81 | 341.02 | 347.19 | 347.19 | ±1.44% | 108 |
|
||
|
|
48fd2843d9 |
fix: update x handle in readme (#495)
## Description Updates the Deep Agents README badge to point to the current JavaScript X handle while preserving the existing visible Follow text casing. ## Test Plan - [ ] Verify the README X badge links to @langchain_js _Opened collaboratively by Mason Daugherty and open-swe._ Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com> Co-authored-by: Mason Daugherty <61371264+mdrxy@users.noreply.github.com> |
||
|
|
998d772a07 |
feat(quickjs): remove built-in VFS globals, add PTC instance injection and StateBackend read-your-writes (#486)
### Summary - Removed built-in readFile/writeFile globals from the QuickJS REPL. File I/O is now exclusively through PTC tools, keeping the REPL a pure JS sandbox with no implicit side effects - ptc now accepts StructuredToolInterface instances directly alongside tool name strings. Custom tools can be injected into the REPL without being registered on the agent - StateBackend now provides read-your-writes semantics within a single js_eval superstep by reading via __pregel_read with fresh=true. Pregel already tracks pending sends in task.writes; asking for a fresh read applies them through the reducer, removing the need for a manual write buffer - Removed ptc: boolean shorthand from QuickJSMiddlewareOptions; use the array or object forms instead ### Tests - Added 12 unit tests to state.test.ts covering write-then-read, chained edits, ls/grep/glob/readRaw visibility, upload/download, duplicate write error, edit-nonexistent, and superstep boundary behavior (commitSends/clearPending) - Expanded middleware.test.ts with PTC instance injection coverage - Verified end-to-end with createDeepAgent + createQuickJSMiddleware across 7 scenarios (write-read, write-edit-read, write-ls, write-grep, write-glob, cross-eval, upload-download); traces confirmed in LangSmith --------- Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> |
||
|
|
43cd121133 |
feat(deepagents): implement file system permissions for fs middleware tools (#492)
### Summary - Adds a FilesystemPermission class and a permissions parameter to createDeepAgent and SubAgent that controls which filesystem operations each agent is allowed to perform - Rules are evaluated first-match-wins with a permissive default; mode: "deny" blocks the operation before any backend call - Permissions are closed over at tool-creation time — no runtime config threading, no ToolPolicy in langchain-core - ls, glob, and grep enforce permissions in two passes: the base path check throws early; results are post-filtered to strip entries the caller can't read - Subagents receive the parent agent's permissions by default; setting permissions on a SubAgent is a full replacement, not a merge - FilesystemPermission, FilesystemPermissionOptions, FilesystemOperation, and PermissionMode are exported from the top-level package entry point ### Tests - permissions/types.test.ts — FilesystemPermission construction, validation (rejects relative paths, .., ~), defaults - permissions/enforce.test.ts — validatePath, globMatch (wildcards, brace expansion, dotfiles), decidePathAccess (first-match-wins, operation mismatch, multiple ops/paths) - middleware/fs.permissions.test.ts — each fs tool (read, write, edit, ls, glob, grep) with allow/deny rules and mock backends; verifies backend is never called on a denied path; verifies execute is unaffected - permissions/agent.permissions.test.ts — CreateDeepAgentParams.permissions type and default; wiring to createFilesystemMiddleware - middleware/subagents.permissions.test.ts — SubAgent.permissions type; ?? resolution (inherit vs override vs own deny); createFilesystemMiddleware behavior for each resolved-permissions case --------- Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> |
||
|
|
883581cda6 |
fix(deepagents): handle Windows absolute paths in tsdown external filter (#489)
## Fix: `ERR_MODULE_NOT_FOUND` on Windows when building `deepagents`
### Problem
Building `libs/deepagents` on Windows produces a `dist/index.js` that
imports
local modules with `.ts` extensions instead of bundling them:
```js
import { createDeepAgent } from "./agent.ts";
import { ConfigurationError } from "./errors.ts";
```
This causes an immediate crash at runtime for any consumer of the
library:
```
Error [ERR_MODULE_NOT_FOUND]: Cannot find module
'C:\...\deepagentsjs\libs\deepagents\dist\agent.ts'
imported from C:\...\deepagentsjs\libs\deepagents\dist\index.js
```
**Root Cause**
The `external` filter in `libs/deepagents/tsdown.config.ts:` used a regex intended to match
only npm package names (which don't start with `.` or `/`):
```js
const external = [/^[^./]/];
```
On Unix absolute paths start with `/` so the regex correctly excludes them. On Windows absolute paths start with a drive letter (e.g. C:\...), which also doesn't start with `.` or `/` - so rolldown matches them as external, excludes them from the bundle, and leaves raw `.ts` references in the output.
**Fix**
Replace the regex with a function that explicitly excludes Windows-style
absolute paths:
```js
const external = (id: string) =>
!id.startsWith(".") && !id.startsWith("/") &&
!/^[A-Za-z]:[\\/]/.test(id);
```
After this change `pnpm -w run build` in `libs/deepagents` produces a fully
bundled `[dist/index.js]` with no `.ts` imports and examples run correctly on Windows.
Notes
- `deps.neverBundle` (the tsdown-recommended replacement for `[external]` is not yet functional in tsdown 0.21.7 / rolldown 1.0.0-rc.12 and causes a build error. This fix is the correct workaround until that API stabilises.
---------
Co-authored-by: Hunter Lovell <hunter@hntrl.io>
|
||
|
|
6eb421ff9e |
fix(deps): patch 6 security alerts across 4 packages (1 critical, 5 medium) (#478)
## Security Alert Patch Resolves 6 open Dependabot security alerts (**1 critical, 5 medium**). ### Packages Updated | Package | Old → New | Strategy | Scope | CVEs Resolved | |---------|-----------|----------|-------|---------------| | `protobufjs` | 7.5.4 → 7.5.5 | C (pnpm override) — parent ranges already accept 7.5.5 | transitive (via modal, @grpc/proto-loader, @opentelemetry/otlp-transformer) | **CVE-2026-41242** (critical) | | `axios` | 1.13.6 → 1.15.1 | C (pnpm override) — @daytonaio/sdk `^1.13.5` already accepts 1.15.x | transitive (via @daytonaio/sdk, @daytonaio/api-client, @daytonaio/toolbox-api-client) | CVE-2025-62718, CVE-2026-40175 | | `follow-redirects` | 1.15.11 → 1.16.0 | C (pnpm override) — axios `^1.15.11` already accepts 1.16.0 | transitive (via axios) | GHSA-r4q5-vmmm-2653 | | `langsmith` | floor raised to 0.5.19 | A (direct bump) — `libs/deepagents` peerDep, `internal/eval-harness` dep | direct, published | CVE-2026-40190, GHSA-rr7j-v2q5-chgv | ### Why pnpm.overrides for transitives The three transitive bumps (protobufjs, axios, follow-redirects) use pnpm.overrides because the parent packages' version ranges **already allow the patched versions** — this is a lockfile refresh, not a published-constraint change. End users installing `@langchain/daytona` or `@langchain/modal` resolve their own lockfile and naturally get the patched transitive versions; the overrides here just bring our lockfile up to date. For `langsmith`, the vulnerable 0.5.15 was pinned in `libs/deepagents/peerDependencies` with floor `>=0.5.15`. Raising to `>=0.5.19` closes the window for downstream consumers with stale lockfiles. ### CVE Details | ID | Package | Severity | Summary | |----|---------|----------|---------| | CVE-2026-41242 / GHSA-xq3m-2v4x-88gg | protobufjs | critical | Arbitrary code execution in protobufjs | | CVE-2025-62718 / GHSA-3p68-rc4w-qgx5 | axios | medium | NO_PROXY hostname normalization bypass leading to SSRF | | CVE-2026-40175 / GHSA-fvcv-3m26-pcqx | axios | medium | Unrestricted cloud metadata exfiltration via header injection chain | | GHSA-r4q5-vmmm-2653 | follow-redirects | medium | Leaks custom authentication headers to cross-domain redirect targets | | CVE-2026-40190 / GHSA-fw9q-39r9-c252 | langsmith | medium | Prototype pollution via incomplete `__proto__` guard in internal lodash `set()` | | GHSA-rr7j-v2q5-chgv | langsmith | medium | Streaming token events bypass output redaction | ### Linear Tickets No matching Linear tickets found (CLI unauthenticated in this environment). ### Verification - [x] `pnpm install --lockfile-only` clean — new lockfile contains axios@1.15.1, protobufjs@7.5.5, follow-redirects@1.16.0, langsmith@0.5.20 & 0.5.21 (vulnerable 0.5.15 fully removed) - [x] `pnpm format:check` passes (313 files) - [x] `pnpm lint` (oxlint) passes (0 warnings, 0 errors) - [x] `pnpm test:unit` — 829/830 unit tests pass; the 1 failure and 6 unhandled errors are **pre-existing** on `main` (tied to recent `ls_agent_type` feature #470 and broken `@langchain/sandbox-standard-tests` module resolution), unrelated to this patch - [x] `pnpm typecheck` failure in `libs/standard-tests` is pre-existing on `main`, unrelated to this patch - [x] No major-version bumps; minimum-safe versions used throughout 🤖 Submitted by langster-patch |
||
|
|
55f3bd8d74 |
feat(deepagents): Adds agent type metadata prop to configurable (#470)
Will be useful for trace display features Python: https://github.com/langchain-ai/deepagents/pull/2788 --------- Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> |
||
|
|
2442d7d080 |
fix(deepagents): align summarization with active request model (#465)
## Summary Fixes #398 Align deepagents summarization with the active request-time model path instead of relying on a separate middleware-specific model resolution path. This keeps summarization behavior consistent with the main agent model selection flow and avoids divergence in provider/model handling during middleware execution. The update also simplifies runtime behavior by removing unnecessary explicit config threading for summary calls. ## Changes ### `deepagents` middleware/model routing - Updated summarization middleware to prefer `request.model` as the resolved model used for profile-derived limits and summary generation. - Kept fallback model resolution support for cases where a request model is not present. - Removed explicit runtime config plumb-through in summary invocation, relying on LangChain runnable context propagation. ### `deepagents` agent wiring - Updated `createDeepAgent` built-in and subagent middleware wiring to construct summarization middleware without explicitly passing a separate model option, so summarization follows the active request model path. ### `deepagents` tests - Added/updated summarization tests to cover request-model-based summarization behavior and ensure middleware behavior remains stable with the new routing path. - Simplified test request construction to keep request-model assumptions explicit. |
||
|
|
3657941ea3 |
fix: follow symlinks in sandbox find commands (#448)
## Summary - Add `-L` flag to `find` in `buildLsCommand`, `buildFindCommand`, and `buildGrepCommand` so that symlinks are followed - Fixes #447 ## Problem `BaseSandbox` helper functions use `find` without `-L`, which means symbolic links are not dereferenced. On Modal (and potentially other providers), volumes are mounted as symlinks, so the `ls`, `glob`, and `grep` sandbox tools all return empty results when pointed at symlinked paths. ## Fix The `-L` flag tells `find` to follow symbolic links. This is a one-line change in each of the three helper functions: ```diff - find ${quotedPath} -maxdepth 1 ... + find -L ${quotedPath} -maxdepth 1 ... ``` This matches user expectations — filesystem exploration tools should transparently follow symlinks, just like `ls` and `find -L` do in a normal shell. ## Test plan - [ ] Verify `ls` tool returns files when the target path is a symlink - [ ] Verify `glob` tool traverses symlinked directories - [ ] Verify `grep` tool searches inside symlinked directories - [ ] Confirm no regression on non-symlinked paths (behavior is identical when no symlinks are present) --------- Co-authored-by: Itay Cohen <itaycohen@Itays-MacBook-Pro.local> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
2994444f32 |
fix: skill loading should default to 1000 lines (#459)
## Description Ports the skill loading fix from the Python SDK (langchain-ai/deepagents#2721) to JS. The system prompt now instructs agents to pass `limit=1000` when reading skill files via `read_file`, since the default of 100 lines is too small for most skill files. ## Test Plan - [ ] Verify skill loading prompt includes `limit=1000` instruction _Opened collaboratively by Sydney Runkle and open-swe._ --------- Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com> Co-authored-by: Sydney Runkle <54324534+sydney-runkle@users.noreply.github.com> Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> |
||
|
|
a8d9949a45 |
docs(deepagents): simplify README (#456)
## Changes ### `libs/deepagents` - Rewrote `README.md` from an exhaustive reference style to a minimal structure: - concise overview and "What's included" - short install + quickstart example - brief customization example - LangGraph-native note, value proposition bullets, docs/resources, and security section - Updated top docs anchor link to JavaScript Deep Agents docs. - Changed `<picture>` fallback `<img>` source from `logo-dark.svg` to `logo-light.svg` for better npm/default rendering. - Removed duplicated deep-dive sections and verbose option-by-option content in favor of docs links. |
||
|
|
79e20e1808 |
fix(deepagents): remove unconditional @langchain/anthropic import (#451)
## Summary Fixes #443 - Removed static `import { ChatAnthropic } from "@langchain/anthropic"` at module level - Changed default `model` parameter from `new ChatAnthropic("claude-sonnet-4-6")` to the string `"claude-sonnet-4-6"` ## Problem `deepagents@1.9.0` unconditionally imported `@langchain/anthropic` at the top of `agent.ts`. Bundlers follow static imports regardless of which model the user actually uses, causing builds to fail for users who only use other providers (e.g. `ChatOpenAI`) and don't have `@langchain/anthropic` installed. ## Solution `createAgent` from `langchain` natively accepts a model name string (`string | AgentLanguageModelLike`), so no `ChatAnthropic` instantiation is needed at the library level. With a string default, bundlers have no static reference to `@langchain/anthropic` and can tree-shake it entirely. Users who want Anthropic models can either: - Pass `new ChatAnthropic(...)` explicitly (requires `@langchain/anthropic` in their own `package.json`) - Rely on the `"claude-sonnet-4-6"` string default (also requires `@langchain/anthropic` at runtime, but no longer breaks builds for non-Anthropic users) --------- Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> |
||
|
|
4376d51710 | chore: mark langsmith sandboxes as experimental (#446) | ||
|
|
3c03e2f864 |
fix(deepagents): minor store adjustments (#445)
Another minor fix to not run into the wrong overload. |
||
|
|
e90171abe4 |
fix(deepagents): closer align store backend with Python (#442)
Aligned `StoreBackend` in `libs/deepagents/src/backends/store.ts` more closely with the Python version while keeping the current TS behavior working: - `namespace` now supports either a static `string[]` or a dynamic factory, so callers can derive store namespaces from runtime state/config instead of hardcoding them. - Legacy namespace fallback now checks config metadata for `assistant_id` / `assistantId` first, then falls back to the existing injected `assistantId`, and finally to `["filesystem"]`. - Added exported types for the new namespace factory context in `libs/deepagents/src/backends/index.ts` and `libs/deepagents/src/index.ts`. |
||
|
|
02c1c7fa38 |
chore: version packages (#433)
* chore: version packages * cr --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Hunter Lovell <hunter@hntrl.io> |
||
|
|
89ee206ba6 | chore: upgrade langgraph + langchain (#434) | ||
|
|
287776254f |
chore: version packages (alpha) (#429)
* chore: version packages (alpha) * cr --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com> Co-authored-by: Hunter Lovell <hunter@hntrl.io> |
||
|
|
6830c24981 | chore: patch package versions (#430) | ||
|
|
dc030a5238 |
fix: add default value to grep tool glob schema for strict mode compatibility (#422)
* fix: add default value to grep tool glob schema for strict mode compatibility The grep tool's `glob` field was defined with `.optional().nullable()` but without `.default()`, causing it to be excluded from the JSON schema `required` array. This violates OpenAI's strict mode requirement that all properties must be listed in `required`. Fixes #401 * Fix grep tool glob schema for strict mode Added a default value to the grep tool glob schema to ensure compatibility with strict mode. * Update .changeset/lucky-candles-reply.md --------- Co-authored-by: Christian Bromann <git@bromann.dev> |