## Summary
Expose the new LangSmith sandbox snapshot and lifecycle APIs (landed in
`langsmith@0.5.20`) through the `LangSmithSandbox` wrapper.
- New methods on `LangSmithSandbox`: `start()`, `stop()`,
`captureSnapshot()`
- `LangSmithSandbox.create()` now accepts `snapshotId` (preferred) or
`templateName` (deprecated); throws if neither is provided
- Re-export upstream types as `LangSmithSnapshot`,
`LangSmithCaptureSnapshotOptions`, `LangSmithStartSandboxOptions`
- Bump `langsmith` peer dep to `>=0.5.20`
- Update the example to boot from `LANGSMITH_SANDBOX_SNAPSHOT_ID`
## Test plan
- [x] Unit tests: added coverage for `start()`, `stop()`,
`captureSnapshot()`; 41/41 pass
- [x] Type-check clean
- [x] Dev smoke test against `dev.api.smith.langchain.com` — create from
snapshot, execute, stop, start, execute after restart all working
---------
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Co-authored-by: Ramon Nogueira <270434257+ramon-langchain@users.noreply.github.com>
Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
### Summary
- Rename `createQuickJSMiddleware` → `createREPLMiddleware` and
`QuickJSMiddlewareOptions` → `REPLMiddlewareOptions` to match the Python
`REPLMiddleware` naming
- Rename middleware registration from `"QuickJSMiddleware"` →
`"REPLMiddleware"`
- Rename default tool name from `"js_eval"` → `"eval"`, now configurable
via `toolName` option
- Add `captureConsole` option (default `true`) to toggle console output
capture
- Align default memory limit to 64 MiB (was 50 MiB) and timeout to 5s
(was 30s) to match Python
### Tests
- All 156 existing unit tests pass with updated references
- Updated `middleware.test.ts`, `middleware.int.test.ts`, and example
files to use new names
---------
Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
## Problem
When using `@langchain/google` as a model provider in the examples
workspace, the server crashes immediately with:
1. Runtime crash on startup:
```bash
ERR_PACKAGE_PATH_NOT_EXPORTED: Package subpath './utils/uuid' is not
defined by "exports" in @langchain/core/package.json
```
`@langchain/google` imports `@langchain/core/utils/uuid`, a subpath
added in `@langchain/core@1.1.42`. Both the examples workspace and
`libs/deepagents` were pinned to `^1.1.40` which does not export this
path.
2. TypeScript type error after fixing the runtime crash:
```bash
Type 'ChatGoogle' is not assignable to type 'BaseLanguageModel<any,
BaseLanguageModelCallOptions>'
```
Even after bumping `@langchain/core` in `examples/` only, pnpm kept two
separate copies in its store - `1.1.40` for `deepagents` and `1.1.42`
for `@langchain/google`. TypeScript treats them as structurally
incompatible types because the type import paths differ.
## Fix
- Bump `@langchain/core` from `^1.1.40` → `^1.1.42` in all
`../package.json` files
## Testing
```bash
cd examples/research
pnpm dlx @langchain/langgraph-cli dev
# -> No ERR_PACKAGE_PATH_NOT_EXPORTED and agent starts correctly
---------
Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
* feat(deepagent): add LangSmithSandbox
* Change deepagents version from patch to minor
* format
* fix tests
* format
* make it a patch
* cr
* cr
* fix
* cr
* feat(server): add ACP support
* improvements
* rename to deepagents-acp
* format
* add missing props
* linting
* lint
* more docs
* Create orange-scissors-tell.md
* more features
* format
* format
* fix tests
* format
* fix(deepagents): update summarization behavior
* actually use deepagent summarization middleware
* Update summarization behavior for deepagents
* make it work
* format
* fix pnpm-lock
* fix(deepagents): unwrap responseFormat strategy types so structuredResponse is correctly typed
Previously, passing responseFormat to createDeepAgent would leak the
strategy wrapper type (e.g. ToolStrategy<{ city: string }>) into the
agent's structuredResponse property instead of the inner parsed type
({ city: string }). This adds an InferStructuredResponse utility type
that extracts T from ToolStrategy<T> / ProviderStrategy<T>, and resolves
to ResponseFormatUndefined when no responseFormat is provided.
Also adds integration tests covering toolStrategy, providerStrategy,
combined tools + responseFormat, nested schemas, and subagents with
structured output.
* format
* Create stale-planes-breathe.md
* improve tests
* update deps
* add type tests
* feat: add support for Vercel sandbox
* format
* switch to deno
* cr
* format
* rename
* format
* auto bump peer dep
* format
* feat(daytona): adding sandbox integration
* format
* test fix
* format
* add support for
* add changesets
* feat: add modal sandbox (#190)
* feat: add modal sandbox
* chore: format
* cr
---------
Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
* feat: add support for Vercel sandbox
* format
* switch to deno
* cr
* format
* feat: add support for Vercel sandbox
* feat: add VFS sandbox
* format
* rm vercel
* rename
* format
* rename
* skip if on windows
* feat: add support for Vercel sandbox
* format
* switch to deno
* cr
* format
* rename
* format
* remove skip
* feedback
* Apply suggestion from @hntrl
Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
* auto bump peer dep
* format
* fix lock file
* add jiti
* add support for initialFiles
* include provider integration tests
* use DENO_DEPLOY_TOKEN
* add changeset
---------
Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
* feat(deepagents): add MemoryMiddleware for AGENTS.md support
Port of langchain-ai/deepagents#646 to TypeScript.
Adds MemoryMiddleware that loads persistent context from AGENTS.md files
following the agents.md specification. Unlike skills (which are on-demand),
memory is always loaded at agent startup and injected into the system prompt.
Changes:
- Add createMemoryMiddleware in middleware/memory.ts
- Add `memory` parameter to createDeepAgent for automatic middleware setup
- Export MemoryMiddleware from package index
- Add unit tests for memory loading and prompt injection
Usage:
const agent = createDeepAgent({
memory: [
"~/.deepagents/AGENTS.md",
"./.deepagents/AGENTS.md",
],
});
* add example
* internal: migrate to libs
* format
* update
* format
* codespell
* release process
* format
* update deps
* no need of npm tokens
* fix lock file
* type strictness
* no need for withLangGraph
* format
* fix
* remove withLanggraph
* add changeset
* feat: catch up with Python
* add example
* feat: add SDK Skills + Memory System
Port SDK Skills and Agent Memory features from Python PR 646.
* add example
* refactor: colocate tests with implementations and add mode-based test runner
* run integration tests in CI
* fix prettier issues in Windows
* fix globbing
* fix linting
* add dependabot file
* merge unit test workflow into ci
* pin and update CI
* increase timeout
* feat: catch up with Python
* feat: add SDK Skills + Memory System
Port SDK Skills and Agent Memory features from Python PR 646.
* prettier
* fix unit test for Windows
* add example
* format
* feat: catch up with Python
* add unit tests
* add example
* format
* Potential fix for code scanning alert no. 7: Unsafe shell command constructed from library input
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* format
* make sure it is truly boolean
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* feat: migrate to createAgent API and middleware architecture
BREAKING CHANGE: Major refactor from custom LangGraph implementation to new langchain createAgent API
**Architecture Migration:**
- Replace createReactAgent with createAgent API from langchain package
- Migrate from custom state management to middleware-based architecture
- Remove custom DeepAgentState and model configuration in favor of built-in patterns
**Package Updates:**
- Upgrade to @langchain/anthropic@alpha, @langchain/langgraph@next
- Add langchain package as main dependency with createAgent support
- Update @langchain/core to local development version
**Code Reorganization:**
- Move tools from src/tools.ts to modular middleware pattern (src/middleware/)
- Simplify type definitions in src/types.ts with Zod schema validation
- Refactor src/subAgent.ts to use createAgent with middleware integration
- Update src/graph.ts and src/index.ts for new API patterns
**Removed Files:**
- src/state.ts: Custom state management no longer needed
- src/model.ts: Default model configuration handled by createAgent
- src/interrupt.ts: Interrupt handling integrated into middleware
**New Middleware System:**
- src/middleware/fs.ts: File system operations middleware
- src/middleware/todo.ts: Todo management middleware
- src/middleware/index.ts: Middleware exports and configuration
**Configuration:**
- Fix tsconfig.json extends path for @tsconfig/recommended
- Update examples/research/research-agent.ts for new API
- Upgrade TypeScript ESLint and other dev dependencies
This migration provides a more maintainable architecture with better separation of concerns
and aligns with the latest LangChain patterns for agent development.
* consolidate imports
* progress
* push remaining update
* fix ci
* cr
* fix
* add anthropicPromptCachingMiddleware
* prettier
* prettier
* allow sub agents to have middleware
* prettier
* Merge pull request #37 from wuchangming/cb/createAgent-migration
feat: Add a name property value to ToolMessage
* fix types
* First stab at porting deepagents
* Cleanup
* wip: middleware review
* Fix to work on LSD
* Use Zod 4
* Revert "Use Zod 4"
This reverts commit 2292cd27ae.
* fix: use store from runnable config
* Exclude `jumpTo` from subgraph state
* Auto-infer filesystem middleware
* Include `strict` in tests
* Further cleanup of test files
* Remove any, remove only
* Fix invalid types for filesystem
* Fix invalid condition
* Fix file system tests, make those concurrent
* Replace _getType with type
* Remove Annotation
* Cleanup rest of test files
* Bump to 1.0.0
* Use PNPM
* Fix scripts
* Build using tsdown
* Bump to 1.0.0-beta.1
* Update CI
* Update again
* Fix formatting
* Add stub prettierrc for VSCode
* Add pluggable filesystem
* linting
* Full test coverage
* Add coerce option
* Bump to 1.0.0-beta.2
* Bump to 1.0.0-beta.3
* Add windows to matrix
* Address comments
* Add examples
* tweak prompt
* Linting
* Remove checkpointer=False
* Add missing env files
* Update README
* add missing dev deps
* add lockfile
* Fix broken test
* Normalize paths for linux
* Fix tests to be OS agnostic
* Normalize for glob search
---------
Co-authored-by: Christian Bromann <git@bromann.dev>
Co-authored-by: Wu Changming <wuchangmingnice@163.com>
Co-authored-by: Nick Huang <nick@langchain.dev>
Co-authored-by: Hunter Lovell <hunter@hntrl.io>