-
Notifications
You must be signed in to change notification settings - Fork 27
feat: migrate to createAgent API and middleware architecture #32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
christian-bromann
wants to merge
14
commits into
main
Choose a base branch
from
cb/createAgent-migration
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Closed
wuchangming
reviewed
Sep 28, 2025
wuchangming
reviewed
Sep 29, 2025
wuchangming
reviewed
Sep 30, 2025
feat: Add a name property value to ToolMessage
Unfortunately this is blocked again until we do another alpha release. |
Hey @christian-bromann , glad to see the changes. But can you help me understand why the content doesn't get streamed token-by-token? It always generate one-off responses. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR migrates the Deep Agents library from a custom LangGraph-based setup to the new
langchain
createAgent API with a middleware-driven architecture. It simplifies state management, standardizes agent creation, and aligns the project with current LangChain best practices.Why
langchain
alpha APIs to enable future enhancements.What Changed
Architecture
createReactAgent
withcreateAgent
.fsMiddleware
,todoMiddleware
).Code
src/state.ts
,src/model.ts
,src/interrupt.ts
.src/tools.ts
→src/middleware/fs.ts
; addedsrc/middleware/todo.ts
; newsrc/middleware/index.ts
.src/subAgent.ts
:createAgent
and middleware.model
can be a string orLanguageModelLike
, defaulting to"openai:gpt-4o-mini"
.tools
.subagent.tools
is unspecified, all provided tools are used.src/types.ts
:SubAgentSchema
(Zod) andSubAgent
type based on it.CreateDeepAgentParams
;interruptConfig
now usesHumanInTheLoopMiddlewareConfig["toolConfigs"]
.CreateTaskToolParams
generic toz.ZodObject
.tsconfig.json
: fix extends path to@tsconfig/recommended/tsconfig.json
.examples/research/research-agent.ts
: updated to new API.Dependencies
langchain
alpha and latest related packages (@langchain/langgraph@next
,@langchain/anthropic@alpha
).Breaking Changes
DeepAgentState
and custom reducers (src/state.ts
).subAgent.ts
:subagent.tools
mapping into the providedtools
object).createTaskTool
signature changes:stateSchema
no longer required.model
accepts either a model string or aLanguageModelLike
.interrupt.ts
patterns must be updated.Migration Guide
createReactAgent
usage withcreateAgent
.tools: Record<string, StructuredTool>
; if asubagent
specifies no tools, all provided tools will be used.DeepAgentState
; move stateful behaviors into middleware or rely on the runtime state the agent manages.SubAgentSchema
/SubAgent
and the simplifiedCreateDeepAgentParams
.model
is provided as a string (e.g.,"openai:gpt-4o-mini"
) or as aLanguageModelLike
.