mirror of
https://github.com/langchain-ai/deepagentsjs.git
synced 2026-08-25 11:51:43 -04:00
@langchain/quickjs@0.6.2
223 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
43ef0e695a |
chore: version packages (#765)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents@1.13.0 ### Minor Changes - [#675](https://github.com/langchain-ai/deepagentsjs/pull/675) [`ba8d4aa`](https://github.com/langchain-ai/deepagentsjs/commit/ba8d4aa71664c23027e57eee0fcaa2701d60408f) Thanks [@hntrl](https://github.com/hntrl)! - feat(filesystem): add recursive delete tool - [#752](https://github.com/langchain-ai/deepagentsjs/pull/752) [`b20d6ad`](https://github.com/langchain-ai/deepagentsjs/commit/b20d6adc3dc7caf01281832548a17f381561318c) Thanks [@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)! - feat(deepagents): add `ForkedSubAgent` for subagent conversation forking Lets a subagent inherit the parent's conversation history instead of only seeing the task description. ### Patch Changes - [#759](https://github.com/langchain-ai/deepagentsjs/pull/759) [`85a55e1`](https://github.com/langchain-ai/deepagentsjs/commit/85a55e14da6cb19877ddd81d898d78d6ededfe74) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(deepagents): cap sandbox glob find so root searches cannot OOM the host Recursive glob listed every path under the search root (and with `-L` could loop through `/proc/*/root`). Prune virtual filesystems and soft-cap find output so a `glob("**/x", "/")` cannot exhaust the runtime heap. - [#768](https://github.com/langchain-ai/deepagentsjs/pull/768) [`f124127`](https://github.com/langchain-ai/deepagentsjs/commit/f124127255fbd4e4b03eb84a4b39c70421a07e35) Thanks [@casparb](https://github.com/casparb)! - fix(deepagents): accept permission paths that exactly equal a composite route A permission path equal to a single-file mount (e.g. `/instructions.md`) was rejected when the backend supported execution, forcing users to write `/instructions.md/**`. The route-scoping check now also accepts the route root itself. Sibling prefixes such as `/workspace2/**` for route `/workspace` remain rejected. - [#769](https://github.com/langchain-ai/deepagentsjs/pull/769) [`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0) Thanks [@hntrl](https://github.com/hntrl)! - chore(deps): update langgraph deps to track serialization fix ## deepagents-acp@0.1.26 ### Patch Changes - [#769](https://github.com/langchain-ai/deepagentsjs/pull/769) [`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0) Thanks [@hntrl](https://github.com/hntrl)! - chore(deps): update langgraph deps to track serialization fix - Updated dependencies [[`85a55e1`](https://github.com/langchain-ai/deepagentsjs/commit/85a55e14da6cb19877ddd81d898d78d6ededfe74), [`f124127`](https://github.com/langchain-ai/deepagentsjs/commit/f124127255fbd4e4b03eb84a4b39c70421a07e35), [`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0), [`ba8d4aa`](https://github.com/langchain-ai/deepagentsjs/commit/ba8d4aa71664c23027e57eee0fcaa2701d60408f), [`b20d6ad`](https://github.com/langchain-ai/deepagentsjs/commit/b20d6adc3dc7caf01281832548a17f381561318c)]: - deepagents@1.13.0 ## @langchain/quickjs@0.6.2 ### Patch Changes - [#769](https://github.com/langchain-ai/deepagentsjs/pull/769) [`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0) Thanks [@hntrl](https://github.com/hntrl)! - chore(deps): update langgraph deps to track serialization fix ## @deepagents/evals@0.0.25 ### Patch Changes - Updated dependencies [[`85a55e1`](https://github.com/langchain-ai/deepagentsjs/commit/85a55e14da6cb19877ddd81d898d78d6ededfe74), [`f124127`](https://github.com/langchain-ai/deepagentsjs/commit/f124127255fbd4e4b03eb84a4b39c70421a07e35), [`d4045de`](https://github.com/langchain-ai/deepagentsjs/commit/d4045de67715bf3cd6198b0d516d176c0e4b75d0), [`ba8d4aa`](https://github.com/langchain-ai/deepagentsjs/commit/ba8d4aa71664c23027e57eee0fcaa2701d60408f), [`b20d6ad`](https://github.com/langchain-ai/deepagentsjs/commit/b20d6adc3dc7caf01281832548a17f381561318c)]: - deepagents@1.13.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
b20d6adc3d |
feat(deepagents): introduce ForkedSubAgent type for subagent conversation forking (#752)
## Summary Replaces the `mode` field on `SubAgent` with a new `ForkedSubAgent` type for opt-in conversation forking. A `ForkedSubAgent` has no `systemPrompt` of its own — it always inherits the parent's message history and exact system prompt, plus mirrored middleware when its model matches the parent's. `CompiledSubAgent` keeps its existing `mode: "handoff" | "fork"` field, unchanged. ## Changes - New `ForkedSubAgent` type — same shape as `SubAgent` minus `systemPrompt`; always forks. - `SubAgent` no longer has a `mode` field — always isolated (same as before this feature existed). - `CompiledSubAgent.mode` unchanged. - Mirrored middleware (memory/custom) only added when the model matches the parent's; the system prompt itself is inherited unconditionally either way. - Updated fork test coverage in `subagent.test.ts` for the new type. --------- Co-authored-by: Hunter Lovell <hunter@hntrl.io> |
||
|
|
d4045de677 |
chore(deepagents): update langgraph deps (#769)
patches a ser/de bug for deepagents |
||
|
|
f124127255 |
fix(deepagents): accept permission paths equal to a composite route root (#768)
## Description When filesystem `permissions` are combined with an execution-capable backend, `createFilesystemMiddleware` requires every permission path to be scoped to a `CompositeBackend` route. That check required a trailing separator, so a permission path that exactly equals a single-file mount (route `/instructions.md`, permission `/instructions.md`) was rejected and users had to write `/instructions.md/**`. Python deepagents accepts the exact form; this syncs JS with it by also accepting the route root itself, mirroring `CompositeBackend.isPathWithinRoute`. It deliberately does not adopt Python's looser bare `startsWith`, so sibling prefixes like `/workspace2/**` for route `/workspace` are still rejected. ## Test Plan - [ ] `npx vitest run src/middleware/fs.permissions.test.ts` in `libs/deepagents` (new cases: exact file-mount route and exact directory route root are accepted; sibling-prefix and `/**` rejections unchanged). Made by [Open SWE](https://openswe.vercel.app/agents/2758c734-16e9-54c3-b89f-ce698a566e71) --------- Co-authored-by: Caspar Broekhuizen <25157475+casparb@users.noreply.github.com> Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com> Co-authored-by: Hunter Lovell <hunter@hntrl.io> |
||
|
|
85a55e14da |
fix(deepagents): cap sandbox glob find so root searches cannot OOM the host (#759)
## Summary
Recursive glob listed every path under the search root, and with -L
could loop through proc pid root symlinks into the host heap.
- Sandbox `glob` listed the whole search tree via `find -L` and buffered
it in the host process, so `glob("**/…", "/")` could OOM the runtime.
Prune virtual filesystems and soft-cap find output; mark `truncated`
when the cap is hit.
|
||
|
|
ba8d4aa716 |
feat(deepagents): add recursive delete tool (#675)
## Summary This adds a destructive `delete` filesystem tool backed by the core backend protocol, with recursive deletion for files/directories and write-permission enforcement over the whole target subtree. ## Changes ### Core filesystem backends - Added `DeleteResult` and optional `delete(filePath)` support to the backend protocol and adapters. - Implemented recursive delete behavior for state, store, filesystem, sandbox, context-hub, and composite backends. - Preserved filesystem path containment and symlink safety: filesystem deletes remove symlinks as links and do not follow them. - Converts unsupported routed deletes in `CompositeBackend` into normal backend errors. ### Filesystem middleware - Added the final `delete` tool name with recursive file/directory semantics. - Treats `delete` as a write operation for filesystem permissions. - Refuses recursive deletes if any deny-write permission pattern overlaps the target subtree, without enumerating filesystem contents first. - Filters the `delete` tool out when the resolved backend does not support deletion. ### Tests, evals, and prompts - Added backend and middleware coverage for recursive deletes, missing paths, symlink safety, unsupported backends, and permission denial. - Added file-operation eval coverage for deleting a file and deleting a directory recursively. - Updated core filesystem prompts and sandbox examples to document the new `delete` tool. |
||
|
|
c0b3e3a30e |
test(deepagents): de-flake custom StateGraph subagent interrupt test (#763)
## Summary
De-flakes the integration test `should handle interrupt() in a custom
StateGraph sub-agent` in
`libs/deepagents/src/middleware/subagents-hitl.int.test.ts`, which
intermittently fails in CI with:
```
AssertionError: expected undefined to be defined
at src/middleware/subagents-hitl.int.test.ts:301:36 // expect(result.__interrupt__).toBeDefined()
```
## Root cause
The test relies on a **live LLM** deciding to call the `task` tool to
delegate to the `document-reviewer` sub-agent. The original prompt only
softly suggested this ("Use the task tool to launch the
document-reviewer sub-agent"). When the model answers directly instead
of delegating, the sub-agent never runs, `interrupt()` never fires, and
`result.__interrupt__` is `undefined`, producing the flaky failure.
This is test-prompt flakiness, not a product regression. The
interrupt-propagation path is unchanged, and the sibling interrupt tests
in the same file (dict-based tools, sequential interrupts) pass in the
same runs. The failure toggles pass/fail across commits on an unrelated
branch (the delete-tool PR #675) that never touched subagent/interrupt
code.
## Changes
- Rewrote the prompt as a strict, imperative instruction: call the
`task` tool exactly once immediately, with the correct `subagent_type`
and `description`, and do not answer directly.
- Added an explicit assertion that the `task` tool was actually called.
If a non-delegating model slips through, the failure now points clearly
at "task tool was not called" instead of a confusing `__interrupt__`
assertion. This mirrors the existing check in the skipped
`CompiledSubAgent` test.
## Testing
- `pnpm typecheck`: no new errors from this file (pre-existing unrelated
errors in backend `*.int.test.ts` about a missing
`@langchain/sandbox-standard-tests` module remain).
- `oxlint`: clean on the edited file.
- This is a live-LLM integration test (`test:int`) requiring API keys,
so it runs in CI's Integration Tests job.
|
||
|
|
2a01d04faf |
chore: version packages (#750)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents-acp@0.1.25 ### Patch Changes - Updated dependencies [[`b2afb8d`](https://github.com/langchain-ai/deepagentsjs/commit/b2afb8d600570b633fd97d4d2f8fd8bdb229ce35), [`68337fc`](https://github.com/langchain-ai/deepagentsjs/commit/68337fcca19a6d7cc18e8917d575ea9ca3aebcbe), [`7550c65`](https://github.com/langchain-ai/deepagentsjs/commit/7550c65204bdd9141a88b9b42d46899e05c7bc43)]: - deepagents@1.12.4 ## deepagents@1.12.4 ### Patch Changes - [#747](https://github.com/langchain-ai/deepagentsjs/pull/747) [`b2afb8d`](https://github.com/langchain-ai/deepagentsjs/commit/b2afb8d600570b633fd97d4d2f8fd8bdb229ce35) Thanks [@casparb](https://github.com/casparb)! - fix(deepagents): batch concurrent Context Hub mutations - [#751](https://github.com/langchain-ai/deepagentsjs/pull/751) [`68337fc`](https://github.com/langchain-ai/deepagentsjs/commit/68337fcca19a6d7cc18e8917d575ea9ca3aebcbe) Thanks [@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)! - fix(deepagents): coerce grep tool's max_count to a number - [#749](https://github.com/langchain-ai/deepagentsjs/pull/749) [`7550c65`](https://github.com/langchain-ai/deepagentsjs/commit/7550c65204bdd9141a88b9b42d46899e05c7bc43) Thanks [@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)! - fix(deepagents): exclude summarization state from subagent input/output ## @deepagents/evals@0.0.24 ### Patch Changes - Updated dependencies [[`b2afb8d`](https://github.com/langchain-ai/deepagentsjs/commit/b2afb8d600570b633fd97d4d2f8fd8bdb229ce35), [`68337fc`](https://github.com/langchain-ai/deepagentsjs/commit/68337fcca19a6d7cc18e8917d575ea9ca3aebcbe), [`7550c65`](https://github.com/langchain-ai/deepagentsjs/commit/7550c65204bdd9141a88b9b42d46899e05c7bc43)]: - deepagents@1.12.4 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
68337fcca1 |
fix(deepagents): coerce grep tool's max_count to a number (#751)
Fixes #745 `max_count` was the only numeric grep param without type coercion, causing ToolInputParsingException on stringified input. Switched to z.coerce.number(). |
||
|
|
7550c65204 |
fix(deepagents): exclude summarization state from subagent input/output (#749)
Fixes #748 Excludes `_summarizationEvent`/`_summarizationSessionId` from subagent state input/output. These weren't in `EXCLUDED_STATE_KEYS`, so a stale parent cutoffIndex could silently drop a subagent's task description, and a subagent's own summarization event could overwrite the parent's on return. |
||
|
|
b2afb8d600 |
fix(deepagents): batch concurrent Context Hub mutations (#747)
ContextHubBackend now preserves concurrent file mutations in one durable commit and retains compatible remote changes during conflict recovery. --- Concurrent callers previously reused the same parent commit, causing 409s. Retries could also replay stale edit payloads. Mutations now coalesce for 50 ms into serialized multi-file commits. Conflict recovery replays ordered edit intent against refreshed state; explicit writes, uploads, and deletes remain last-writer-wins. --------- Co-authored-by: Hunter Lovell <hunter@hntrl.io> |
||
|
|
44d6d3dfea |
chore: version packages (#733)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents-acp@0.1.24 ### Patch Changes - Updated dependencies [[`77e104f`](https://github.com/langchain-ai/deepagentsjs/commit/77e104f26a62ae34afbb1393edf191009d37280c), [`239be7e`](https://github.com/langchain-ai/deepagentsjs/commit/239be7e883227e463504652bc00272ec947a21a6), [`1439bbf`](https://github.com/langchain-ai/deepagentsjs/commit/1439bbfb267e92b7a19ce0924399591495976c21)]: - deepagents@1.12.3 ## deepagents@1.12.3 ### Patch Changes - [#724](https://github.com/langchain-ai/deepagentsjs/pull/724) [`77e104f`](https://github.com/langchain-ai/deepagentsjs/commit/77e104f26a62ae34afbb1393edf191009d37280c) Thanks [@gethin-langchain](https://github.com/gethin-langchain)! - feat(deepagents): add `output_mode` parameter to the `grep` tool (`files_with_matches` / `content` / `count`) - [#732](https://github.com/langchain-ai/deepagentsjs/pull/732) [`239be7e`](https://github.com/langchain-ai/deepagentsjs/commit/239be7e883227e463504652bc00272ec947a21a6) Thanks [@hntrl](https://github.com/hntrl)! - fix(deepagents): disable summary-input trimming by default Match Python DeepAgents by providing the full selected conversation to the summarizer unless `trimTokensToSummarize` is explicitly configured. This prevents oversized tool results from producing context-empty summaries under the default configuration. - [#739](https://github.com/langchain-ai/deepagentsjs/pull/739) [`1439bbf`](https://github.com/langchain-ai/deepagentsjs/commit/1439bbfb267e92b7a19ce0924399591495976c21) Thanks [@taoche](https://github.com/taoche)! - fix(deepagents): extract text from content blocks when building the summary ## @deepagents/evals@0.0.23 ### Patch Changes - Updated dependencies [[`77e104f`](https://github.com/langchain-ai/deepagentsjs/commit/77e104f26a62ae34afbb1393edf191009d37280c), [`239be7e`](https://github.com/langchain-ai/deepagentsjs/commit/239be7e883227e463504652bc00272ec947a21a6), [`1439bbf`](https://github.com/langchain-ai/deepagentsjs/commit/1439bbfb267e92b7a19ce0924399591495976c21)]: - deepagents@1.12.3 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
1439bbfb26 |
fix(deepagents): extract text from content blocks when building the summary (#739)
## Description
`SummarizationMiddleware`'s `createSummary` falls back to
`JSON.stringify(response.content)` when the summarization model's
response content is not a string:
```ts
return typeof response.content === "string"
? response.content
: JSON.stringify(response.content);
```
When the summarization model responds with a content block array, the
raw blocks are stringified verbatim into the summary `HumanMessage`.
This happens in practice when:
- **Thinking/reasoning is enabled** on the summarization model (e.g.
Claude on Bedrock with `thinking`): the content is `[{type: "reasoning",
reasoning: ..., signature: <opaque multi-KB signature>}, {type: "text",
...}]`, and the reasoning signature lands in the summary.
- **`invoke()` takes the internal streaming path** (a `prefersStreaming`
callback handler is attached, e.g. inside `streamEvents`, and
`disableStreaming` is not set): the aggregated `AIMessageChunk` content
is an array of many small text fragments.
Observed in production: a summary message of ~56KB consisting of an ~8KB
opaque reasoning signature plus hundreds of
`{"type":"text","text":"..."}` fragments — the "summary" ended up
bloating the context it was supposed to compact, and subsequent model
calls overflowed.
## Fix
Use the message's `text` accessor for non-string content, which extracts
and joins only the text blocks. String content is returned as-is
(unchanged behavior).
## Testing
Added a unit test where the summarization model returns reasoning +
split text blocks, asserting the summary message contains the joined
text and no reasoning payload. All 33 existing tests pass.
---------
Co-authored-by: Hunter Lovell <hunter@hntrl.io>
|
||
|
|
77e104f26a |
feat(deepagents): add output_mode parameter to the grep tool (#724)
## Summary - The grep tool's description mentioned output_mode, but it was never an actual parameter the tool always returned one hardcoded format. - Added output_mode (files_with_matches/content/count) as a real schema parameter, using the existing formatGrepMatches helper. ## Test plan - Added tests in fs.test.ts for files_with_matches and count modes. - All tests pass. Note: default output is now sorted by path with no blank lines between file groups (minor formatting change, same info). --------- Co-authored-by: Hunter Lovell <hunter@hntrl.io> |
||
|
|
239be7e883 |
fix(deepagents): disable summary input trimming by default (#732)
## Summary Prevent default DeepAgents JS summarization from discarding an oversized message before it reaches the summary model ## Changes ### `deepagents` - Make `trimTokensToSummarize` opt-in rather than defaulting to 4,000 tokens. - Preserve existing capped behavior when callers explicitly configure the option. - Add coverage confirming oversized summary input reaches the summary model under default configuration. - Add a patch changeset for the bug fix. |
||
|
|
5af75fffbe |
chore: version packages (#726)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents-acp@0.1.23 ### Patch Changes - Updated dependencies [[`590c2a5`](https://github.com/langchain-ai/deepagentsjs/commit/590c2a5042473f096d5fac5ddbb4be96e2ace0f2)]: - deepagents@1.12.2 ## deepagents@1.12.2 ### Patch Changes - [#723](https://github.com/langchain-ai/deepagentsjs/pull/723) [`590c2a5`](https://github.com/langchain-ai/deepagentsjs/commit/590c2a5042473f096d5fac5ddbb4be96e2ace0f2) Thanks [@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)! - fix(deepagents): prevent stack overflow in CompositeBackend grep/glob on huge result sets, and add a grep match-count cap `CompositeBackend` accumulated merged `ls`/`grep`/`glob` results with `push(...entries)`, which passes every entry as a separate function argument and overflows the call stack (RangeError: Maximum call stack size exceeded) when a broad search over a large tree returns hundreds of thousands of entries. Results are now accumulated with a plain loop, so no result-set size can overflow the stack. `grep` also gains an optional `maxCount` (backend) / `max_count` (tool) cap, mirroring the Python SDK. When the cap is hit, results are flagged `truncated: true` on `GrepResult`/`GlobResult` and the grep tool appends a note telling the model to narrow the search. The cap defaults to 1000 via the `grepMaxCount` middleware option (set to `null` to disable). `CompositeBackend` splits the budget across routed backends and OR-propagates the `truncated` flag on merged results. ## @deepagents/evals@0.0.22 ### Patch Changes - Updated dependencies [[`590c2a5`](https://github.com/langchain-ai/deepagentsjs/commit/590c2a5042473f096d5fac5ddbb4be96e2ace0f2)]: - deepagents@1.12.2 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
590c2a5042 |
fix(deepagents): prevent stack overflow in CompositeBackend grep/glob (#723)
## Summary
- Fixes `RangeError: Maximum call stack size exceeded` from
`CompositeBackend.glob`/`grep` when a broad search (e.g.
`**/*.{ts,tsx,...}` at `/`) returns hundreds of thousands of entries.
Root cause: results were merged with `push(...entries)`, which passes
each entry as a separate function argument and overflows V8's
argument-stack limit. Now accumulated with a plain loop.
- Ports the Python SDK's grep match-count cap (`ef591e7`): optional
`maxCount` backend param / `max_count` tool arg, `grepMaxCount`
middleware option (default 1000, `null` disables), `truncated` flag on
`GrepResult`/`GlobResult`, and a truncation note in the grep tool
output. `CompositeBackend` splits the budget across routes and
OR-propagates `truncated`.
## Backward compatibility
- `truncated` is optional; `maxCount` defaults to unset everywhere. No
required changes for existing or new users.
## Test plan
- [x] Regression test: mocked backend returning 200k entries —
`glob`/`grep` complete without `RangeError` (verified it fails with the
old spread).
- [x] Cap enforcement, `truncated` propagation across composite routes,
middleware note rendering.
- [x] `pnpm test` (format + lint + all lib tests) passes.
|
||
|
|
064b1724de |
chore: version packages (#715)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents-acp@0.1.22 ### Patch Changes - Updated dependencies [[`ffec5de`](https://github.com/langchain-ai/deepagentsjs/commit/ffec5de0e66ed5ab64bc4c6bee2ff90effb4bfa1)]: - deepagents@1.12.1 ## deepagents@1.12.1 ### Patch Changes - [#713](https://github.com/langchain-ai/deepagentsjs/pull/713) [`ffec5de`](https://github.com/langchain-ai/deepagentsjs/commit/ffec5de0e66ed5ab64bc4c6bee2ff90effb4bfa1) Thanks [@gethin-langchain](https://github.com/gethin-langchain)! - fix(deepagents): grep/glob match when `path` points directly at a file ## @deepagents/evals@0.0.21 ### Patch Changes - Updated dependencies [[`ffec5de`](https://github.com/langchain-ai/deepagentsjs/commit/ffec5de0e66ed5ab64bc4c6bee2ff90effb4bfa1)]: - deepagents@1.12.1 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
ffec5de0e6 |
fix(deepagents): grep/glob match when path points directly at a file (#713)
## Summary - `grep`/`glob` on `StateBackend`/`StoreBackend` returned zero matches whenever `path` pointed at an exact file (no glob) — the shared `validatePath` helper forced a trailing `/` before prefix-matching, so a file's own key could never match itself+`/`. - Added a `filterFilesByPath` helper that checks for an exact key match in the files map first, falling back to the existing directory-prefix behavior otherwise. ## Test plan - [x] Added regression tests in `utils.test.ts`: exact-file path (no glob) for grep and glob, plus directory + glob/filename non-regression cases for both. - [x] `pnpm --filter deepagents test` — all tests pass. |
||
|
|
bed2d344bc |
chore: version packages (#712)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents@1.12.0 ### Minor Changes - [#703](https://github.com/langchain-ai/deepagentsjs/pull/703) [`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126) Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): adopt more minimal prompting We've observed that current models don't need as verbose of prompting guidance, so we're reducing the amount of perscriptive guidance that deepagents has. This is reflected in the generic system prompt (which is now blank), and in the tool descriptions (which have been simplified). - [#708](https://github.com/langchain-ai/deepagentsjs/pull/708) [`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0) Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): make todo middleware opt-in - [#674](https://github.com/langchain-ai/deepagentsjs/pull/674) [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931) Thanks [@hntrl](https://github.com/hntrl)! - feat(filesystem): allow `write_file` to create missing files or completely replace existing files ## deepagents-acp@0.1.21 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0 ## @langchain/node-vfs@1.0.0 ### Patch Changes - [#674](https://github.com/langchain-ai/deepagentsjs/pull/674) [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931) Thanks [@hntrl](https://github.com/hntrl)! - fix: allow `VfsBackend.write` to overwrite existing files while continuing to reject symlinks ## @langchain/daytona@1.0.0 ## @langchain/deno@1.0.0 ## @langchain/modal@1.0.0 ## @langchain/quickjs@1.0.0 ## @langchain/sandbox-standard-tests@2.0.0 ## @deepagents/evals@0.0.20 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
149f4585f1 |
chore: version packages (rc) (#709)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. ⚠️⚠️⚠️⚠️⚠️⚠️ `main` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `main`. ⚠️⚠️⚠️⚠️⚠️⚠️ # Releases ## deepagents@1.12.0-rc.1 ### Minor Changes - [#708](https://github.com/langchain-ai/deepagentsjs/pull/708) [`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0) Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): make todo middleware opt-in ## deepagents-acp@0.1.21-rc.1 ### Patch Changes - Updated dependencies [[`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0)]: - deepagents@1.12.0-rc.1 ## @deepagents/evals@0.0.20-rc.1 ### Patch Changes - Updated dependencies [[`1225a7f`](https://github.com/langchain-ai/deepagentsjs/commit/1225a7ff8673686c2a3c0411636a9511b7d8d0d0)]: - deepagents@1.12.0-rc.1 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
1225a7ff86 |
feat(deepagents): make todo middleware opt-in (#708)
## Summary Makes `todoListMiddleware` opt-in. Default agents and default subagents no longer expose `write_todos` or the `todos` state channel, reducing the default tool surface while preserving explicit opt-in. ## Changes - Remove default todo middleware from the main, general-purpose, and declarative subagent stacks. - Preserve opt-in support through `middleware: [todoListMiddleware()]`; declarative subagents opt in through their own middleware. - Remove `write_todos` from always-present tool typing and built-in name-collision handling. - Update state and subagent documentation plus shared runtime assertions for the optional todo state/tool. ### Harness profiles and coverage - Re-add todo middleware in the Codex harness profile because its model-specific prompt requires `write_todos` - Apply profile `extraMiddleware` to subagent stacks, with profile factories creating fresh instances per stack. - Add coverage for default exclusion, explicit opt-in, main/GP/declarative isolation, profile middleware propagation, and type inference. |
||
|
|
24ea7fa8ac |
build(deps): bump the major-deps-updates-main group across 1 directory with 2 updates (#695)
Bumps the major-deps-updates-main group with 2 updates in the / directory: [typescript](https://github.com/microsoft/TypeScript) and [magic-string](https://github.com/Rich-Harris/magic-string). Updates `typescript` from 6.0.3 to 7.0.2 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/microsoft/TypeScript/commits">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~microsoft1es">microsoft1es</a>, a new releaser for typescript since your current version.</p> </details> <br /> Updates `magic-string` from 0.30.21 to 1.0.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/Rich-Harris/magic-string/releases">magic-string's releases</a>.</em></p> <blockquote> <h2>v1.0.0</h2> <p>In <code>magic-string</code> v1.0.0, it's now <strong>pure ESM</strong>, and the type declarations are built from the TypeScript source. This means the previous CJS, UMD, and IIFE builds are now dropped as we believe the ecosystem is moving forward for ESM. The version was bumped to v1.0.0 instead of v0.31 to distinguish this breaking change, and since magic-string has been verified by the ecosystem for over a decade, the API is stable enough to be marked as v1.</p> <p>Genreated changelogs:</p> <h3> 🚨 Breaking Changes</h3> <ul> <li>Migrate build to pure ESM and TypeScript - by <a href="https://github.com/sxzz"><code>@sxzz</code></a> in <a href="https://redirect.github.com/Rich-Harris/magic-string/issues/310">Rich-Harris/magic-string#310</a> <a href="https://github.com/Rich-Harris/magic-string/commit/0e22897"><!-- raw HTML omitted -->(0e228)<!-- raw HTML omitted --></a></li> </ul> <h3> 🐞 Bug Fixes</h3> <ul> <li>Avoid crash when moving a zero-length range - by <a href="https://github.com/sarathfrancis90"><code>@sarathfrancis90</code></a> and <a href="https://github.com/antfu"><code>@antfu</code></a> in <a href="https://redirect.github.com/Rich-Harris/magic-string/issues/307">Rich-Harris/magic-string#307</a> <a href="https://github.com/Rich-Harris/magic-string/commit/56fe8cb"><!-- raw HTML omitted -->(56fe8)<!-- raw HTML omitted --></a></li> </ul> <h3> 🏎 Performance</h3> <ul> <li>Add fast path for non-exclusion indent - by <a href="https://github.com/43081j"><code>@43081j</code></a> in <a href="https://redirect.github.com/Rich-Harris/magic-string/issues/308">Rich-Harris/magic-string#308</a> <a href="https://github.com/Rich-Harris/magic-string/commit/992baba"><!-- raw HTML omitted -->(992ba)<!-- raw HTML omitted --></a></li> </ul> <h5> <a href="https://github.com/Rich-Harris/magic-string/compare/v0.30.21...v1.0.0">View changes on GitHub</a></h5> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Rich-Harris/magic-string/blob/master/CHANGELOG.md">magic-string's changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/Rich-Harris/magic-string/compare/v0.30.21...v1.0.0">1.0.0</a> (2026-07-16)</h1> <h3>Bug Fixes</h3> <ul> <li>avoid crash when moving a zero-length range (<a href="https://redirect.github.com/Rich-Harris/magic-string/issues/307">#307</a>) (<a href="https://github.com/Rich-Harris/magic-string/commit/56fe8cb61e6b64a778e5eb7d0334c57aacb0c4c8">56fe8cb</a>)</li> </ul> <h3>Performance Improvements</h3> <ul> <li>add fast path for non-exclusion indent (<a href="https://redirect.github.com/Rich-Harris/magic-string/issues/308">#308</a>) (<a href="https://github.com/Rich-Harris/magic-string/commit/992baba37ac10bb5e35ad00fb516a272b8757a91">992baba</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/Rich-Harris/magic-string/commit/2da7cf08eb1dfde70d95b03115727ab50694472d"><code>2da7cf0</code></a> chore: release v1.0.0</li> <li><a href="https://github.com/Rich-Harris/magic-string/commit/56fe8cb61e6b64a778e5eb7d0334c57aacb0c4c8"><code>56fe8cb</code></a> fix: avoid crash when moving a zero-length range (<a href="https://redirect.github.com/Rich-Harris/magic-string/issues/307">#307</a>)</li> <li><a href="https://github.com/Rich-Harris/magic-string/commit/992baba37ac10bb5e35ad00fb516a272b8757a91"><code>992baba</code></a> perf: add fast path for non-exclusion indent (<a href="https://redirect.github.com/Rich-Harris/magic-string/issues/308">#308</a>)</li> <li><a href="https://github.com/Rich-Harris/magic-string/commit/0e22897fd5e792fdb7a1d9ccde5c1fbce6aa596b"><code>0e22897</code></a> feat!: migrate build to pure ESM and TypeScript (<a href="https://redirect.github.com/Rich-Harris/magic-string/issues/310">#310</a>)</li> <li>See full diff in <a href="https://github.com/Rich-Harris/magic-string/compare/v0.30.21...v1.0.0">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
a55022dc2f |
chore: version packages (rc) (#699)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. ⚠️⚠️⚠️⚠️⚠️⚠️ `main` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `main`. ⚠️⚠️⚠️⚠️⚠️⚠️ # Releases ## deepagents@1.12.0-rc.0 ### Minor Changes - [#703](https://github.com/langchain-ai/deepagentsjs/pull/703) [`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126) Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): adopt more minimal prompting We've observed that current models don't need as verbose of prompting guidance, so we're reducing the amount of perscriptive guidance that deepagents has. This is reflected in the generic system prompt (which is now blank), and in the tool descriptions (which have been simplified). - [#674](https://github.com/langchain-ai/deepagentsjs/pull/674) [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931) Thanks [@hntrl](https://github.com/hntrl)! - feat(filesystem): allow `write_file` to create missing files or completely replace existing files ## deepagents-acp@0.1.21-rc.0 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0-rc.0 ## @langchain/daytona@1.0.0-rc.0 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0-rc.0 ## @langchain/deno@1.0.0-rc.0 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0-rc.0 ## @langchain/modal@1.0.0-rc.0 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0-rc.0 ## @langchain/node-vfs@1.0.0-rc.0 ### Patch Changes - [#674](https://github.com/langchain-ai/deepagentsjs/pull/674) [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931) Thanks [@hntrl](https://github.com/hntrl)! - fix: allow `VfsBackend.write` to overwrite existing files while continuing to reject symlinks - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0-rc.0 ## @langchain/quickjs@1.0.0-rc.0 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0-rc.0 ## @langchain/sandbox-standard-tests@2.0.0-rc.0 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0-rc.0 ## @deepagents/evals@0.0.20-rc.0 ### Patch Changes - Updated dependencies [[`d25097f`](https://github.com/langchain-ai/deepagentsjs/commit/d25097f78d0e66741da34e1d74551f3c19991126), [`dd142fe`](https://github.com/langchain-ai/deepagentsjs/commit/dd142fe4fc54c986d5bcf51211d9a839a427e931)]: - deepagents@1.12.0-rc.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
d25097f78d |
feat(deepagents): simplify prompting (#703)
## Summary The SDK currently ships authored base prose plus middleware guidance that largely duplicates the tool schemas. This change adopts a more lean default: no authored base prompt, no duplicate built-in usage prose, and concise tool descriptions. Skills, memory, custom system prompts, custom tool descriptions, and required filesystem routing context remain intact. The legacy base-prompt surface is removed rather than preserved as a default path. ## Changes ### Default prompt - Remove the authored default base prompt and its obsolete public surface. - Suppress LangChain's default todo middleware prompt while leaving deepagents-owned middleware prompt-free by default. - Remove unused filesystem, subagent, async-subagent, and execution prompt constants and exports. ### Durable tool guidance - Keep large-result recovery guidance in `read_file` and `grep` descriptions. - Keep async task status freshness guidance in `check_async_task` and `list_async_tasks` descriptions. - Trim filesystem and task descriptions to their purpose and load-bearing constraints. - Build grep and execute descriptions from the configured filesystem tool set so they do not recommend unavailable tools. ### Token impact Offline (`o200k_base`, default-agent tool schemas): | Tool | Before | After | Delta | | --- | ---: | ---: | ---: | | `task` | 1,664 | 389 | -77% | | `read_file` | 728 | 494 | -32% | | `grep` | 688 | 555 | -19% | | `edit_file` | 273 | 257 | -6% | | `glob` | 217 | 172 | -21% | | `write_file` | 177 | 177 | — | | `delete` | 146 | 146 | — | | `ls` | 111 | 111 | — | | **Total** | **4,005** | **2,302** | **-43%** | For a default-agent `hello` turn, input tokens drop from 5,395 to 1,895 (-65%). ### Evaluation results The lean prompt matched the baseline on correctness (0.81) and solve rate (0.635 vs. 0.634). Unified evaluation macro and micro scores improved from 0.413 to 0.437 and from 0.371 to 0.394, respectively. (see more detailed results in https://github.com/langchain-ai/deepagents/pull/5009 and https://github.com/langchain-ai/deepagents/pull/4859) |
||
|
|
fd6219ae75 |
chore(deepagents): revert system prompt configuration (#700)
reverts #669 |
||
|
|
dd142fe4fc |
feat(deepagents): allow write_file to overwrite files (#674)
## Summary `write_file` now creates missing files and replaces existing files entirely, removing the previous create-only error path while preserving write permissions and symlink protections. ## Changes ### deepagents filesystem backends - Updated `FilesystemBackend`, `StateBackend`, `StoreBackend`, `BaseSandbox`, and `node-vfs` write behavior to allow full-file replacement on existing paths. - Preserved path safety and symlink protections in filesystem-backed writes. - Removed the sandbox existence precheck so writes rely on the upload/write transport. ### Tool prompts and examples - Aligned the `write_file` tool description and schema text with the Python SDK wording. - Updated sandbox example prompts so `write_file` is described as creating or fully replacing files. ### Tests and evals - Updated backend, middleware, and shared sandbox standard tests that previously expected an existing-file error. - Added overwrite coverage for filesystem, sandbox, state, store, middleware, node-vfs, and file-operation evals. ### Release - Added a changeset for `deepagents` documenting the new overwrite behavior. |
||
|
|
b215e70d88 |
ci: route integration tests through LangSmith LLM Gateway (#697)
## Summary - Add a shared Vitest setup that remaps Anthropic/OpenAI/etc. clients onto the LangSmith LLM Gateway when `LANGSMITH_GATEWAY_KEY` is present. - Wire that setup into all package int-test Vitest configs. - Pass `LANGSMITH_GATEWAY_KEY` into the CI integration-test job (falls back to direct provider keys if unset). |
||
|
|
60e32118b0 |
chore: version packages (#694)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents-acp@0.1.20 ### Patch Changes - Updated dependencies [[`2ebb178`](https://github.com/langchain-ai/deepagentsjs/commit/2ebb1785e4625ecf82635582e17fe41fbfbac603)]: - deepagents@1.11.1 ## deepagents@1.11.1 ### Patch Changes - [#693](https://github.com/langchain-ai/deepagentsjs/pull/693) [`2ebb178`](https://github.com/langchain-ai/deepagentsjs/commit/2ebb1785e4625ecf82635582e17fe41fbfbac603) Thanks [@colifran](https://github.com/colifran)! - fix(deepagents): return recoverable errors for invalid/denied filesystem tool paths instead of throwing ## @deepagents/evals@0.0.19 ### Patch Changes - Updated dependencies [[`2ebb178`](https://github.com/langchain-ai/deepagentsjs/commit/2ebb1785e4625ecf82635582e17fe41fbfbac603)]: - deepagents@1.11.1 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
2ebb1785e4 |
fix(deepagents): return recoverable errors for invalid/denied filesystem tool paths instead of throwing (#693)
### Summary Invalid (non-absolute, `..`, or `~`) or denied filesystem paths passed by an agent cause the tool to throw which raises a `MiddlewareError` and causes the whole agent run to crash. This PR replaces `enforcePermission` which was re-validating the path without a try/catch with `checkPermission` which returns the error to the model as a normal tool result so the model can correct the path and try again instead of crashing. ### Tests Updated the three permission suites to assert an error result instead of a throw and added a regression block for `~`/relative/`..` paths that returns a recoverable error and never calls the backend. |
||
|
|
f127e3d442 |
chore: version packages (#676)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents@1.11.0 ### Minor Changes - [#671](https://github.com/langchain-ai/deepagentsjs/pull/671) [`6ae9d1e`](https://github.com/langchain-ai/deepagentsjs/commit/6ae9d1eab92131ea9cfd7bef024cf1ab343641ea) Thanks [@hntrl](https://github.com/hntrl)! - feat(filesystem): add allowlist for filesystem middleware tools - [#669](https://github.com/langchain-ai/deepagentsjs/pull/669) [`4643148`](https://github.com/langchain-ai/deepagentsjs/commit/4643148e8b64c796d3144210bac3ad1c6f5b2091) Thanks [@hntrl](https://github.com/hntrl)! - feat(deepagents): add structured system prompt configuration - [#673](https://github.com/langchain-ai/deepagentsjs/pull/673) [`eb18c70`](https://github.com/langchain-ai/deepagentsjs/commit/eb18c70d8d0871bc72aeb8be6581a98506829c6f) Thanks [@hntrl](https://github.com/hntrl)! - feat(backends): add delete protocol support Adds a `DeleteResult` type and optional backend `delete` method, preserves delete through backend protocol adaptation, and implements file deletion across the built-in state, store, filesystem, composite, context hub, sandbox, and node-vfs backends. ### Patch Changes - [#691](https://github.com/langchain-ai/deepagentsjs/pull/691) [`39a7049`](https://github.com/langchain-ai/deepagentsjs/commit/39a7049e4dbf99a31223c4e31cf79a2ed5115634) Thanks [@colifran](https://github.com/colifran)! - fix(deepagents): backend adapter drops route prefixes - [#672](https://github.com/langchain-ai/deepagentsjs/pull/672) [`cc26c41`](https://github.com/langchain-ai/deepagentsjs/commit/cc26c41df2851acacc86a743878b5c847a8f5d59) Thanks [@hntrl](https://github.com/hntrl)! - fix(deepagents): allow custom middleware to replace defaults by name ## deepagents-acp@0.1.19 ### Patch Changes - Updated dependencies [[`39a7049`](https://github.com/langchain-ai/deepagentsjs/commit/39a7049e4dbf99a31223c4e31cf79a2ed5115634), [`6ae9d1e`](https://github.com/langchain-ai/deepagentsjs/commit/6ae9d1eab92131ea9cfd7bef024cf1ab343641ea), [`cc26c41`](https://github.com/langchain-ai/deepagentsjs/commit/cc26c41df2851acacc86a743878b5c847a8f5d59), [`4643148`](https://github.com/langchain-ai/deepagentsjs/commit/4643148e8b64c796d3144210bac3ad1c6f5b2091), [`eb18c70`](https://github.com/langchain-ai/deepagentsjs/commit/eb18c70d8d0871bc72aeb8be6581a98506829c6f)]: - deepagents@1.11.0 ## @langchain/node-vfs@0.2.1 ### Patch Changes - [#673](https://github.com/langchain-ai/deepagentsjs/pull/673) [`eb18c70`](https://github.com/langchain-ai/deepagentsjs/commit/eb18c70d8d0871bc72aeb8be6581a98506829c6f) Thanks [@hntrl](https://github.com/hntrl)! - feat(backends): add delete protocol support Adds a `DeleteResult` type and optional backend `delete` method, preserves delete through backend protocol adaptation, and implements file deletion across the built-in state, store, filesystem, composite, context hub, sandbox, and node-vfs backends. ## @deepagents/evals@0.0.18 ### Patch Changes - Updated dependencies [[`39a7049`](https://github.com/langchain-ai/deepagentsjs/commit/39a7049e4dbf99a31223c4e31cf79a2ed5115634), [`6ae9d1e`](https://github.com/langchain-ai/deepagentsjs/commit/6ae9d1eab92131ea9cfd7bef024cf1ab343641ea), [`cc26c41`](https://github.com/langchain-ai/deepagentsjs/commit/cc26c41df2851acacc86a743878b5c847a8f5d59), [`4643148`](https://github.com/langchain-ai/deepagentsjs/commit/4643148e8b64c796d3144210bac3ad1c6f5b2091), [`eb18c70`](https://github.com/langchain-ai/deepagentsjs/commit/eb18c70d8d0871bc72aeb8be6581a98506829c6f)]: - deepagents@1.11.0 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
39a7049e4d |
fix(deepagents): backend adapter drops route prefixes (#691)
### Summary `adaptBackendProtocol` rebuilds the backend into a v2 backend protocol but drops its `routePrefixes`. Since `resolveBackend` runs every backend through the adapter, a resolved `CompositeBackend` was no longer detected as composite. That made the execute tool's guard fail at invocation and disable the execute tool even when filesystem permissions were correctly scoped to composite routes. This PR fixes this by forwarding `routePrefixes` through `adaptBackendProtocol` instead of dropping them. ### Tests Added unit tests in backends/utils.test.ts to verify that `routePrefixes` is forwarded through `adaptBackendProtocol` and `adaptSandboxProtocol` and not added for non-composite backends. |
||
|
|
cc26c41df2 |
fix(deepagents): merge custom middleware by name (#672)
## Summary Adds middleware override behavior to replace default middleware by `.name` instead of always being appended. ## Changes - Add name-keyed middleware merging so custom middleware replaces matching default middleware in-place and appends novel middleware after the core stack. - Apply default-slot middleware overrides consistently when constructing main-agent and subagent middleware stacks, while preventing parent-only middleware from propagating unless it matches a subagent default slot. - Move harness tool exclusion into a private `_ToolExclusionMiddleware` helper so excluded tools are stripped after tool-injecting middleware has run. - Add coverage for main-agent replacement, subagent/default override propagation, parent-only middleware isolation, profile exclusions, tool-exclusion ordering, and merge precedence. |
||
|
|
f09bc61d7a |
feat(deepagents): implement delete across backends (#680)
## Summary Implements the optional backend `delete` protocol across the built-in backend implementations now that the delete protocol surface is available. This keeps delete behavior backend-local and does not expose a new filesystem tool to agents. ## Changes ### deepagents - Implements `delete(filePath)` for filesystem, store, composite, context hub, and sandbox backends. - Uses backend-specific safety semantics: filesystem deletion goes through existing path resolution and only unlinks files, store deletion treats paths as exact keys, context hub deletion commits null entries, and sandbox deletion uses shell-quoted `rm -f`. - Adds tests covering successful deletion, missing paths, directory rejection where applicable, composite route path restoration, store wildcard literal behavior, and context hub cache updates/failure handling. ### @langchain/node-vfs - Implements `delete(filePath)` for the VFS backend. - Adds tests for file deletion, missing paths, directory rejection, and preserving non-target files. |
||
|
|
6ae9d1eab9 |
feat(deepagents): add filesystem tool allowlist (#671)
## Summary Adds a `tools` allowlist option to `createFilesystemMiddleware` so callers can restrict which built-in filesystem tools are exposed to the model. The middleware now builds the filesystem system prompt from the tools that are actually visible on the request, avoiding instructions for tools that were filtered by the allowlist or backend capability checks. ## Changes - Adds a public `FsToolName` type and `tools` option to `FilesystemMiddlewareOptions`. - Filters filesystem middleware tools at construction time when an explicit allowlist is provided, while preserving existing `execute` backend capability filtering. - Requires `read_file` in explicit allowlists because it is needed for filesystem workflows and large-result recovery. - Generates the filesystem tool prompt dynamically from visible filesystem tools, and only appends execute-specific instructions when `execute` is actually available. - Adds unit and integration coverage for allowlist behavior, prompt filtering, unsupported `execute`, and user-provided non-filesystem tools. |
||
|
|
eb18c70d8d |
feat(deepagents): add delete protocol support (#673)
## Summary
Adds protocol-level delete support for deepagents backends.
## Changes
### deepagents
- Adds `DeleteResult` to the backend protocol exports.
- Adds optional `delete(filePath)` support to v1 and v2 backend
protocols.
- Preserves optional delete implementations when adapting backends to
the v2 protocol.
- Implements `StateBackend.delete()` for zero-argument StateBackend
instances by sending `{ [filePath]: null }` through `__pregel_send`.
- Adds a changeset for the new backend protocol capability.
|
||
|
|
4643148e8b |
feat(deepagents): add structured system prompt configuration (#669)
## Summary Ports the system prompt configuration in langchain-ai/deepagents#4437 |
||
|
|
4507acd92e |
chore: version packages (#670)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents-acp@0.1.18 ### Patch Changes - Updated dependencies [[`7c8a770`](https://github.com/langchain-ai/deepagentsjs/commit/7c8a770fac90fd50dfe08af67a0ce073a33e4ef7)]: - deepagents@1.10.8 ## deepagents@1.10.8 ### Patch Changes - [#668](https://github.com/langchain-ai/deepagentsjs/pull/668) [`7c8a770`](https://github.com/langchain-ai/deepagentsjs/commit/7c8a770fac90fd50dfe08af67a0ce073a33e4ef7) Thanks [@colifran](https://github.com/colifran)! - fix(deepagents): fast-glob follows directory symlink cycles leading to ELOOP crashes ## @deepagents/evals@0.0.17 ### Patch Changes - Updated dependencies [[`7c8a770`](https://github.com/langchain-ai/deepagentsjs/commit/7c8a770fac90fd50dfe08af67a0ce073a33e4ef7)]: - deepagents@1.10.8 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
|
|
7c8a770fac |
fix(deepagents): fast-glob follows directory symlink cycles leading to ELOOP crashes (#668)
### Summary `fast-glob` follows symbolic links by default so the `glob`/`grep` tools in `FilesystemBackend` and `LocalShellBackend` walked directory symlink cycles recursively causing `ELOOP` crashes. and aborted the run over a target repo. This PR fixes by adding`followSymbolicLinks: false` to all four `fast-glob` calls. Bonus: this keeps traversal inside the search root. ### Tests Unit tests in `filesystem.test.ts` and `local-shell.test.ts` verifying that a `sub/sub -> .` cycle now traverses cleanly without traversing symlinks. This is an upstream fix for: https://github.com/langchain-ai/openwiki/issues/72 |
||
|
|
3eab2cad6f |
chore: version packages (#660)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## deepagents-acp@0.1.17 ### Patch Changes - Updated dependencies [[`8efde93`](https://github.com/langchain-ai/deepagentsjs/commit/8efde93792dfc324e70b441eacbb810532f347c4)]: - deepagents@1.10.7 ## deepagents@1.10.7 ### Patch Changes - [#659](https://github.com/langchain-ai/deepagentsjs/pull/659) [`8efde93`](https://github.com/langchain-ai/deepagentsjs/commit/8efde93792dfc324e70b441eacbb810532f347c4) Thanks [@Kowshik4593](https://github.com/Kowshik4593)! - Fix: Normalize `path` to `file_path` in filesystem tools (`read_file`, `write_file`, and `edit_file`) and align the prompt documentation examples to prevent validation schema failures on weaker/custom models. ## @deepagents/evals@0.0.16 ### Patch Changes - Updated dependencies [[`8efde93`](https://github.com/langchain-ai/deepagentsjs/commit/8efde93792dfc324e70b441eacbb810532f347c4)]: - deepagents@1.10.7 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Colin Francis <colin.francis@langchain.dev> |
||
|
|
8efde93792 |
feat(deepagents): implement filesystem state management middleware with atomic update support and testing (#659)
## Problem Addresses #658. When using weaker or custom LLMs (e.g., smaller open-source models) in `deepagents` and consumers like `openwiki`, the agent immediately crashes with a schema validation error on the first filesystem tool call: This occurs because: 1. `ls` defines its directory argument as `path`, but `read_file`, `write_file`, and `edit_file` expect `file_path`. Models often default to `path` across all filesystem tools. 2. The description prompt examples in `fs.ts` and `skills.ts` show `read_file(path, ...)`, instructing models to use the wrong parameter name. ## Proposed Changes This PR solves both prompt inconsistencies and schema validation failures with a fully backward-compatible input normalization helper: 1. **Prompt Alignment**: Fixed references in `fs.ts` and `skills.ts` to instruct the model to use `file_path` (aligned with the prompt fixes in #644). 2. **Schema Input Normalization**: Added a `normalizeFilePathInput` preprocessor helper to the `read_file`, `write_file`, and `edit_file` Zod schemas using `z.preprocess`. This dynamically maps the `path` key to `file_path` if the model still passes `path`. ## Verification & Tests - Added unit tests in `fs.test.ts` to assert that: - `path` parameter normalization maps correctly to `file_path` for `read_file`, `write_file`, and `edit_file`. - All instruction examples contain only valid schema fields. - Verified that `zod-to-json-schema` unwraps the `z.preprocess` layer perfectly, preserving the original schema descriptions and definitions sent to the LLM. - Ran all filesystem tests successfully (`npx vitest run src/middleware/fs.test.ts` passes). |
||
|
|
ff8cc5c4b4 |
chore: version packages (#607)
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @langchain/quickjs@0.6.0 ### Minor Changes - [#606](https://github.com/langchain-ai/deepagentsjs/pull/606) [`3c8f8b2`](https://github.com/langchain-ai/deepagentsjs/commit/3c8f8b2ea6f0204353c63bf49c3fdc6655bf1069) Thanks [@colifran](https://github.com/colifran)! - chore(quickjs): disallow task as a configurable ptc tool ## deepagents-acp@0.1.16 ### Patch Changes - Updated dependencies [[`d7ecab2`](https://github.com/langchain-ai/deepagentsjs/commit/d7ecab2d9f9d41321a043eed6edc3366a1381a67), [`1a2b2df`](https://github.com/langchain-ai/deepagentsjs/commit/1a2b2df5528f0f61870b054fff8291355f6a2a0b), [`42f34b6`](https://github.com/langchain-ai/deepagentsjs/commit/42f34b65ededf4a1fbf3cd4bbff486ddfeb320e9), [`0ae10d7`](https://github.com/langchain-ai/deepagentsjs/commit/0ae10d7e26c84203a5273939c9ad7a9c8c8661c6)]: - deepagents@1.10.6 ## deepagents@1.10.6 ### Patch Changes - [#608](https://github.com/langchain-ai/deepagentsjs/pull/608) [`d7ecab2`](https://github.com/langchain-ai/deepagentsjs/commit/d7ecab2d9f9d41321a043eed6edc3366a1381a67) Thanks [@aolsenjazz](https://github.com/aolsenjazz)! - fix(deepagents): forward subagent results as text Fixed a 400 `invalid_request_error` that occurred when a subagent used an Anthropic server-side tool (web search, web fetch, or code execution): the subagent's `server_tool_use`/`*_tool_result` blocks were forwarded to the parent agent as `tool_result` content, which the API rejects. Subagent results are now passed back to the parent as their text content (matching the Python implementation), which resolves the error and also handles a trailing empty `end_turn` message. - [#656](https://github.com/langchain-ai/deepagentsjs/pull/656) [`1a2b2df`](https://github.com/langchain-ai/deepagentsjs/commit/1a2b2df5528f0f61870b054fff8291355f6a2a0b) Thanks [@colifran](https://github.com/colifran)! - fix(deepagents): default unknown file extensions to text/plain - [#611](https://github.com/langchain-ai/deepagentsjs/pull/611) [`42f34b6`](https://github.com/langchain-ai/deepagentsjs/commit/42f34b65ededf4a1fbf3cd4bbff486ddfeb320e9) Thanks [@aolsenjazz](https://github.com/aolsenjazz)! - feat(deepagents): add bedrockPromptCachingMiddleware to default stack Add bedrockPromptCachingMiddleware to default middleware stack. This automatically opts-in to Bedrock prompt caching for Nova and Anthropic models - [#613](https://github.com/langchain-ai/deepagentsjs/pull/613) [`0ae10d7`](https://github.com/langchain-ai/deepagentsjs/commit/0ae10d7e26c84203a5273939c9ad7a9c8c8661c6) Thanks [@christian-bromann](https://github.com/christian-bromann)! - fix(deepagents): declare LangChain runtime packages as peer dependencies Move `@langchain/core`, `@langchain/langgraph`, `@langchain/langgraph-sdk`, and `langchain` from `dependencies` to `peerDependencies`, and also declare `@langchain/langgraph-checkpoint` as a peer (its `BaseCheckpointSaver`/`BaseStore` types are part of the public API), so they resolve to a single shared instance in the consumer's tree. Previously they were bundled as regular dependencies, which let a consumer end up with two copies of `@langchain/core` (e.g. `1.2.0` vs `1.2.1`). Because these packages ship classes with private/ protected fields, the duplicate copies are treated as nominally distinct types, producing errors like passing a `ChatOpenAI` model to `createDeepAgent` or a compiled graph to the local protocol helpers. As peers, the app controls the version and bumping `@langchain/core` no longer requires a `deepagents` release. ## @langchain/daytona@0.2.1 ### Patch Changes - [#614](https://github.com/langchain-ai/deepagentsjs/pull/614) [`5b462f2`](https://github.com/langchain-ai/deepagentsjs/commit/5b462f2ab2400fba52906e8f1485a500ec5b6e17) Thanks [@christian-bromann](https://github.com/christian-bromann)! - Replace deprecated `@daytonaio/sdk` dependency with `@daytona/sdk`. ## @langchain/modal@0.1.5 ### Patch Changes - [#657](https://github.com/langchain-ai/deepagentsjs/pull/657) [`5f93c11`](https://github.com/langchain-ai/deepagentsjs/commit/5f93c114759399002a3981a93e3df13981514b1d) Thanks [@colifran](https://github.com/colifran)! - fix(modal): modal low level file handle api `sandbox.open` has been removed ## @deepagents/evals@0.0.15 ### Patch Changes - Updated dependencies [[`d7ecab2`](https://github.com/langchain-ai/deepagentsjs/commit/d7ecab2d9f9d41321a043eed6edc3366a1381a67), [`1a2b2df`](https://github.com/langchain-ai/deepagentsjs/commit/1a2b2df5528f0f61870b054fff8291355f6a2a0b), [`42f34b6`](https://github.com/langchain-ai/deepagentsjs/commit/42f34b65ededf4a1fbf3cd4bbff486ddfeb320e9), [`0ae10d7`](https://github.com/langchain-ai/deepagentsjs/commit/0ae10d7e26c84203a5273939c9ad7a9c8c8661c6)]: - deepagents@1.10.6 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Colin Francis <colin.francis@langchain.dev> |
||
|
|
1a2b2df552 |
fix(deepagents): default unknown file extensions to text/plain (#656)
### Summary `read_file` couldn't read many common text files and with Anthropic it crashes the whole run. `getMimeType()` mapped any unrecognized extension to `application/octet-stream`, which `isTextMimeType()` treats as binary, so the file got base64-encoded into a document block. This defaults unknown extensions to `text/plain` instead. Known binaries (images, audio, video, PDF/PPT) stay explicitly mapped, so image and PDF handling is unchanged. Files like `.properties`, `.scss`, `.tf`, `.lock`, and extension-less files like `Dockerfile` now read as text. ### Tests Flipped the unknown-extension unit test to expect `text/plain`. |
||
|
|
88986a2417 |
build(deps): bump the major-deps-updates-main group with 3 updates (#641)
Bumps the major-deps-updates-main group with 3 updates: [@agentclientprotocol/sdk](https://github.com/agentclientprotocol/typescript-sdk), [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) and [p-queue](https://github.com/sindresorhus/p-queue). Updates `@agentclientprotocol/sdk` from 0.24.0 to 1.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/agentclientprotocol/typescript-sdk/releases">@agentclientprotocol/sdk's releases</a>.</em></p> <blockquote> <h2>v1.1.0</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v1.0.0...v1.1.0">1.1.0</a> (2026-06-29)</h2> <h3>Features</h3> <ul> <li>Expose request ids in handler contexts (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/202">#202</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/eda849ca7894f32e4ed11df81eb5b024e5512e5b">eda849c</a>)</li> </ul> <h2>v1.0.0</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.29.0...v1.0.0">1.0.0</a> (2026-06-24)</h2> <h3>Features</h3> <ul> <li><strong>schema:</strong> Update to v1.16.0 of the schema (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/199">#199</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/de5879100c1bb5e2fdaebc957c1ca01364eb33cc">de58791</a>)</li> </ul> <h3>Miscellaneous Chores</h3> <ul> <li>release 1.0.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/201">#201</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/008fc2861adc3f87edc4daa12eb78b81a6fd7161">008fc28</a>)</li> </ul> <h2>v0.29.0</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.28.1...v0.29.0">0.29.0</a> (2026-06-22)</h2> <h3>Features</h3> <ul> <li><strong>unstable:</strong> Add support for request cancellation (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/195">#195</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/d5197f9f6346a4b57084552e0bdf3c71ccf64412">d5197f9</a>)</li> </ul> <h2>v0.28.1</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.28.0...v0.28.1">0.28.1</a> (2026-06-19)</h2> <h3>Bug Fixes</h3> <ul> <li>Expose peer contexts from app connections (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/190">#190</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/d6573109fd7c27170cd970aa9b28e7e6054e993e">d657310</a>)</li> </ul> <h2>v0.28.0</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.27.1...v0.28.0">0.28.0</a> (2026-06-18)</h2> <h3>Features</h3> <ul> <li><strong>schema:</strong> Update to schema v1.14.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/185">#185</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/3c619a737120bbd4ccc6282b893e94152125562c">3c619a7</a>)</li> </ul> <h2>v0.27.1</h2> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.27.0...v0.27.1">0.27.1</a> (2026-06-18)</h2> <h3>Bug Fixes</h3> <!-- 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/v1.0.0...v1.1.0">1.1.0</a> (2026-06-29)</h2> <h3>Features</h3> <ul> <li>Expose request ids in handler contexts (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/202">#202</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/eda849ca7894f32e4ed11df81eb5b024e5512e5b">eda849c</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.29.0...v1.0.0">1.0.0</a> (2026-06-24)</h2> <h3>Features</h3> <ul> <li><strong>schema:</strong> Update to v1.16.0 of the schema (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/199">#199</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/de5879100c1bb5e2fdaebc957c1ca01364eb33cc">de58791</a>)</li> </ul> <h3>Miscellaneous Chores</h3> <ul> <li>release 1.0.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/201">#201</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/008fc2861adc3f87edc4daa12eb78b81a6fd7161">008fc28</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.28.1...v0.29.0">0.29.0</a> (2026-06-22)</h2> <h3>Features</h3> <ul> <li><strong>unstable:</strong> Add support for request cancellation (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/195">#195</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/d5197f9f6346a4b57084552e0bdf3c71ccf64412">d5197f9</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.28.0...v0.28.1">0.28.1</a> (2026-06-19)</h2> <h3>Bug Fixes</h3> <ul> <li>Expose peer contexts from app connections (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/190">#190</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/d6573109fd7c27170cd970aa9b28e7e6054e993e">d657310</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.27.1...v0.28.0">0.28.0</a> (2026-06-18)</h2> <h3>Features</h3> <ul> <li><strong>schema:</strong> Update to schema v1.14.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/185">#185</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/3c619a737120bbd4ccc6282b893e94152125562c">3c619a7</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.27.0...v0.27.1">0.27.1</a> (2026-06-18)</h2> <h3>Bug Fixes</h3> <ul> <li><strong>node-adapter:</strong> Cap HTTP request body size (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/186">#186</a>) (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/3832d4ce69d9f44c5f886c9b3ff24169d6119236">3832d4c</a>)</li> <li><strong>node-adapter:</strong> harden Node adapter request parsing (<a href="https://github.com/agentclientprotocol/typescript-sdk/commit/220eae660e459ac648fe352b756b586f39f9aa1e">220eae6</a>)</li> </ul> <h2><a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.26.0...v0.27.0">0.27.0</a> (2026-06-18)</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/78023d41520d693fcc79aed9c9c635b7bc3e58e8"><code>78023d4</code></a> chore(main): release 1.1.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/203">#203</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/eda849ca7894f32e4ed11df81eb5b024e5512e5b"><code>eda849c</code></a> feat: Expose request ids in handler contexts (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/202">#202</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/f8bf32c6be943e59969f31c65f338914fe25420e"><code>f8bf32c</code></a> chore(main): release 1.0.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/200">#200</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/008fc2861adc3f87edc4daa12eb78b81a6fd7161"><code>008fc28</code></a> chore: release 1.0.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/201">#201</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/de5879100c1bb5e2fdaebc957c1ca01364eb33cc"><code>de58791</code></a> feat(schema): Update to v1.16.0 of the schema (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/199">#199</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/bdc626790d26470324a68f26df9d3b6c152cec4c"><code>bdc6267</code></a> chore(main): release 0.29.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/196">#196</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/675ecbab8fde8054b621dd7c1ead758230d0c653"><code>675ecba</code></a> chore: Update Hey API OpenAPI TS to 0.99 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/197">#197</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/d5197f9f6346a4b57084552e0bdf3c71ccf64412"><code>d5197f9</code></a> feat(unstable): Add support for request cancellation (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/195">#195</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/06c932a22a5f8dc3cf691b20f4cc9d312d6e26a1"><code>06c932a</code></a> chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/192">#192</a>)</li> <li><a href="https://github.com/agentclientprotocol/typescript-sdk/commit/ffdbaac36004d9623a6ed8f37030650e5c8f409e"><code>ffdbaac</code></a> chore(deps-dev): bump <code>@types/node</code> from 25.9.3 to 26.0.0 (<a href="https://redirect.github.com/agentclientprotocol/typescript-sdk/issues/193">#193</a>)</li> <li>Additional commits viewable in <a href="https://github.com/agentclientprotocol/typescript-sdk/compare/v0.24.0...v1.1.0">compare view</a></li> </ul> </details> <br /> Updates `@types/node` from 25.9.3 to 26.1.0 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare view</a></li> </ul> </details> <br /> Updates `p-queue` from 8.1.1 to 9.3.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sindresorhus/p-queue/releases">p-queue's releases</a>.</em></p> <blockquote> <h2>v9.3.0</h2> <ul> <li>Add <code>timeoutRemaining</code> to <code>runningTasks</code> 57d0a1a</li> </ul> <hr /> <p><a href="https://github.com/sindresorhus/p-queue/compare/v9.2.0...v9.3.0">https://github.com/sindresorhus/p-queue/compare/v9.2.0...v9.3.0</a></p> <h2>v9.2.0</h2> <ul> <li>Improve performance (<a href="https://redirect.github.com/sindresorhus/p-queue/issues/244">#244</a>) 87077d0</li> </ul> <hr /> <p><a href="https://github.com/sindresorhus/p-queue/compare/v9.1.2...v9.2.0">https://github.com/sindresorhus/p-queue/compare/v9.1.2...v9.2.0</a></p> <h2>v9.1.2</h2> <ul> <li>Fix: Export <code>PriorityQueue</code> type (<a href="https://redirect.github.com/sindresorhus/p-queue/issues/242">#242</a>) a20e1f3</li> </ul> <hr /> <p><a href="https://github.com/sindresorhus/p-queue/compare/v9.1.1...v9.1.2">https://github.com/sindresorhus/p-queue/compare/v9.1.1...v9.1.2</a></p> <h2>v9.1.1</h2> <ul> <li>Fix <code>signal</code> option not rejecting when task is aborted while queued a64b316 <ul> <li>If you use a custom queue class, you will have to add a <code>remove()</code> method. See the built-in class.</li> </ul> </li> </ul> <hr /> <p><a href="https://github.com/sindresorhus/p-queue/compare/v9.1.0...v9.1.1">https://github.com/sindresorhus/p-queue/compare/v9.1.0...v9.1.1</a></p> <h2>v9.1.0</h2> <ul> <li>Add <a href="https://github.com/sindresorhus/p-queue?tab=readme-ov-file#strict"><code>strict</code></a> option for sliding window rate limiting 03b8156</li> </ul> <hr /> <p><a href="https://github.com/sindresorhus/p-queue/compare/v9.0.1...v9.1.0">https://github.com/sindresorhus/p-queue/compare/v9.0.1...v9.1.0</a></p> <h2>v9.0.1</h2> <ul> <li>Fix: Remove abort listener when operation completes (<a href="https://redirect.github.com/sindresorhus/p-queue/issues/235">#235</a>) e9074f0</li> </ul> <hr /> <p><a href="https://github.com/sindresorhus/p-queue/compare/v9.0.0...v9.0.1">https://github.com/sindresorhus/p-queue/compare/v9.0.0...v9.0.1</a></p> <h2>v9.0.0</h2> <h3>Breaking</h3> <ul> <li>Require Node.js 20 b2600d5</li> <li>Remove <code>throwOnTimeout</code> option - timeouts now always throw e48716f <ul> <li>It was a mistake to not throw on timeouts and the option made it complicated to handle types.</li> <li>If you really need the old behavior back:</li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sindresorhus/p-queue/commit/cfa917af261fb6db9eb1281221ba21093eb49e3d"><code>cfa917a</code></a> 9.3.0</li> <li><a href="https://github.com/sindresorhus/p-queue/commit/b5a483f2b76f977f89e0968afcbd5e61643dff11"><code>b5a483f</code></a> Fix docs</li> <li><a href="https://github.com/sindresorhus/p-queue/commit/57d0a1a3ef683c3491aff71e03a4e3dfb4ed95a2"><code>57d0a1a</code></a> Add <code>timeoutRemaining</code> to <code>runningTasks</code></li> <li><a href="https://github.com/sindresorhus/p-queue/commit/fc4b7369d915ade31416d603fd35fd26c1885851"><code>fc4b736</code></a> 9.2.0</li> <li><a href="https://github.com/sindresorhus/p-queue/commit/ea65ce3659cb3e3be2fbe7049e69e280f04c8378"><code>ea65ce3</code></a> Tweaks</li> <li><a href="https://github.com/sindresorhus/p-queue/commit/87077d0214c203f38d0f36c4efee8172e67bf1c4"><code>87077d0</code></a> Improve performance (<a href="https://redirect.github.com/sindresorhus/p-queue/issues/244">#244</a>)</li> <li><a href="https://github.com/sindresorhus/p-queue/commit/53848611d103e16f39e94cba8c70a36f0ec791a0"><code>5384861</code></a> Fix CI</li> <li><a href="https://github.com/sindresorhus/p-queue/commit/55d306ba03479dcc531a8e06deab24d3f60feacd"><code>55d306b</code></a> 9.1.2</li> <li><a href="https://github.com/sindresorhus/p-queue/commit/a20e1f34b5c82e4e91e5d2e0c8b663e831dc16ab"><code>a20e1f3</code></a> Export <code>PriorityQueue</code> type (<a href="https://redirect.github.com/sindresorhus/p-queue/issues/242">#242</a>)</li> <li><a href="https://github.com/sindresorhus/p-queue/commit/9eec7efb433c33f66799d9dec41aa56d43f3435a"><code>9eec7ef</code></a> 9.1.1</li> <li>Additional commits viewable in <a href="https://github.com/sindresorhus/p-queue/compare/v8.1.1...v9.3.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
0ae10d7e26 |
fix(deepagents): declare LangChain runtime packages as peer dependencies (#613)
Updates to `@langchain/core` can cause downstream friction with
TypeScript:
```
Type 'ChatOpenAI<ChatOpenAICallOptions>' is not assignable to type 'string | BaseLanguageModel<any, BaseLanguageModelCallOptions> | undefined'.
Type 'ChatOpenAI<ChatOpenAICallOptions>' is not assignable to type 'BaseLanguageModel<any, BaseLanguageModelCallOptions>'.
Types of property 'getGraph' are incompatible.
Type '(_?: import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.1_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/runnables/types").RunnableConfig<Record<string, any>> | undefined) => import("/Users/christian.bromann/Sites/L...' is not assignable to type '(_?: import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.0_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/runnables/types").RunnableConfig<Record<string, any>> | undefined) => import("/Users/christian.bromann/Sites/L...'.
Types of parameters '_' and '_' are incompatible.
Type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.0_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/runnables/types").RunnableConfig<Record<string, any>> | undefined' is not assignable to type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.1_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/runnables/types").RunnableConfig<Record<string, any>> | undefined'.
Type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.0_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/runnables/types").RunnableConfig<Record<string, any>>' is not assignable to type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.1_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/runnables/types").RunnableConfig<Record<string, any>>'.
Types of property 'callbacks' are incompatible.
Type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.0_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").Callbacks | undefined' is not assignable to type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.1_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").Callbacks | undefined'.
Type 'CallbackManager' is not assignable to type 'Callbacks | undefined'.
Type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.0_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").CallbackManager' is not assignable to type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.1_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").CallbackManager'.
The types returned by 'handleLLMStart(...)' are incompatible between these types.
Type 'Promise<import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.0_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").CallbackManagerForLLMRun[]>' is not assignable to type 'Promise<import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.1_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").CallbackManagerForLLMRun[]>'.
Type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.0_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").CallbackManagerForLLMRun[]' is not assignable to type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.1_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").CallbackManagerForLLMRun[]'.
Type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.0_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").CallbackManagerForLLMRun' is not assignable to type 'import("/Users/christian.bromann/Sites/LangChain/deployment-cookbook/js-langsmith/node_modules/.pnpm/@langchain+core@1.2.1_openai@6.44.0_ws@8.21.0_zod@4.4.3__ws@8.21.0/node_modules/@langchain/core/dist/callbacks/manager").CallbackManagerForLLMRun'.
Property 'inheritableHandlers' is protected but type 'BaseRunManager' is not a class derived from 'BaseRunManager'.ts(2322)
```
to avoid this we should move the LangChain dependency to become peer
deps.
- Moved `@langchain/core`, `@langchain/langgraph`,
`@langchain/langgraph-sdk`, and `langchain` from `dependencies` to
`peerDependencies` in `libs/deepagents`, keeping dev copies for isolated
build/test.
- Lets consumers bump `@langchain/core` without requiring a new
`deepagents` release; a release is only needed to widen the peer range
across a major.
- Note on install contract: npm 7+ and pnpm 8+ auto-install peers; Yarn
only warns, so Yarn users must add the four packages explicitly (worth a
README follow-up).
---------
Signed-off-by: Christian Bromann <git@bromann.dev>
Co-authored-by: open-swe[bot] <215916821+open-swe[bot]@users.noreply.github.com>
|
||
|
|
d7ecab2d9f |
fix(deepagents): forward subagent results as text (#608)
## Summary
A deep agent that delegates to a subagent 400s when that subagent uses
an Anthropic server-side tool (web search, web fetch, code execution,
MCP). The subagent's final-message content blocks e.g.
server_tool_use/..._tool_result were forwarded verbatim as the task
ToolMessage content. On the parent agent's next request they serialize
into a tool_result, which Anthropic rejects:
`400 invalid_request_error
messages.N.content.0.tool_result.content.0: Input tag 'server_tool_use'
found using 'type'
does not match any of the expected tags:
'document','image','search_result','text','tool_reference'`
## Solution
Now matches the Python impl: forward only the subagent's text answer.
returnCommandWithStateUpdate now walks back to the last AIMessage with
non-empty text and uses that text (a string) as the ToolMessage content.
- Confirmed the Python deepagents impl is not affected (it forwards
.text); this aligns JS with Python.
- Reproduced the 400 across {web_search, code_execution, web_fetch} ×
{claude-haiku-4-5, claude-sonnet-4-6} on the latest published packages;
all green after the fix.
## Tests
- New: subagent server-tool blocks are filtered from forwarded content.
- New: walk-back uses the last non-empty AIMessage, skipping a trailing
empty message.
- Updated the #239/#245 tests to assert the (now string) ToolMessage
content.
- No regressions in subagent-related tests in the evals suite
---------
Signed-off-by: Alexander Olsen <aolsenjazz@gmail.com>
Co-authored-by: Christian Bromann <git@bromann.dev>
|
||
|
|
42f34b65ed |
feat(deepagents): add bedrockPromptCachingMiddleware to default stack (#611)
## Summary - Adds `bedrockPromptCachingMiddleware` to the default middleware stack - Adds unit tests for the Bedrock model detection util function covering the different formats of model strings/`ChatModel`s |
||
|
|
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> |