mirror of
https://github.com/langchain-ai/langgraphjs.git
synced 2026-07-21 16:45:24 -04:00
Unable to add Nodes and Edges dynamically before runtime #152
Closed
opened 2026-02-15 17:16:24 -05:00 by yindo
·
18 comments
No Branch/Tag Specified
main
fix/usestream-hydrate-null-thread-reconnect
chore/dependabot-docker-root-coverage
open-swe/accept-semver-ranges
wfh/fix_store
cb/reconnect-upstream
nh/integration-managed-runtime-tests
open-swe/usestream-status-enum
hunter/bump-checkpoint-dep
cb/bundle-uuid-cjs-66cc
cb/dedup-stream-sse-decoder-96cd
dependabot/npm_and_yarn/internal/bench/npm_and_yarn-18a2f9e291
cb/normalize-openai-function-call-tool-calls
cb/tmp
cb/remove-docs
nh/sdk-normalize-base-message-v2
nh/sdk-reencode-tool-call-chunks
nh/sdk-normalize-base-message
nh/stream-v2-final-split
open-swe/c802e0ea-c9e5-c8c6-824a-c065dd2bfd6f
hunter/memory-investigation-2
ramonn/checkpoint-durable-objects
open-swe/776ee51f-5e2f-752b-acb1-4584467156d4
hunter/issue-2303-regression-test
cb/api-stream-reducer
open-swe/77892c09-3e94-9f8a-5f5b-3d2787c5f6b9
cb/in-process-streaming
cb/langgraph-streaming-protocol-683b
cb/protocol-v2-tests-6203
cb/fix-custom-submit-options-ad3e
cb/protocol-thread-binding-clean-6303
hunter/keep-important-ids
cb/fix-protocol-thread-binding-6303
cb/react-protocol-runtime-8ca7
cb/pregel-eli5-doc-1103
cb/-bc-5a4705b9-850e-4f7d-95ea-67c0741e9977-92c3
cb/pr-branch-rebase-4816
cb/-bc-2d03efa3-5ef0-4b68-bf53-63005b8e748f-8924-angular-svelte
cb/-bc-2d03efa3-5ef0-4b68-bf53-63005b8e748f-8924
cb/langchain-react-ssr-proposal-972b
cb/agent-streaming-protocol-design-25d1
cb/custom-transport-queue-parity-2bb9
cb/frontend-integration-strategy-64ce
brydar/fix/parallel-interrupt-accumulation
cb/agent-multi-app-support-d2d0
cb/svelte-5-idiomatic-patterns-16ed
cb/frontend-sdks-developer-experience-8030
cb/ui-packages-idiomatic-review-35a4
hunter/fix-vercel-ci
fix/test-exports-vercel-next16-lint
dependabot/npm_and_yarn/internal/environment_tests/test-exports-vercel/npm_and_yarn-229c191f58
cb/stream-protocol-improvements
jdr/fix-sdk-errors
cb/async_hooks-fix
cwlbraa/fix-getmessages-null-state
chore/fix-dependabot-config
hunter/fix-symbol-types
hunter/symbol-fix
hunter/symbol-annotations
test-ci-trigger
hunter/lg-resolve-symbols
colifran/tool-stream-types
colifran/tool-stream-types-temp
dqbd/sdk-ui-other-fw
colifran/tool-streaming-example
colifran/tool-stream-example
fix/security-alerts-2026-02-19
cb/perf-improvements
jk/fix-rolldown-panic
cb/better-node-version-definition
cb/tsdown-setup
cb/create-changesets
cb/pnpm-fix4
cb/pnpm-fix2
wfh/fix_release
demo
cb/browser-tools
v0.3
pr/christymanthara/1787
cb/type-safe-streaming
mdrxy/delete-docs
changeset-release/v1
v1
v0
rd3
isaac/vb
dqbd/remove-get-graph-non-async
dqbd/serde-v1
dqbd/1.0.0-alpha.1
dqbd/max-version-cache
parker/custom-studio-url-cli
dqbd/standard-schema
dqbd/create-agent-middleware
dqbd/1.0.0-alpha
parker/api-linting
dqbd/prebuilt-restart-subgraph
dqbd/api-thread-join-stream
dqbd/persist-resume-map-values
wfh/default
dqbd/node-recursion-limit
sam_support_description_for_mcp
hunter/dedupe-signal-listeners
wfh/studio_auth_access
wfh/consistent_kind
release
brace/pass-update-generic-msgs-zod
dqbd/merge-api
hunter/zod-intersection
vb/add-forward-message-tool
dqbd/zod-metadata-json-schema-extra
wfh/js_node_finished
ben/checkpoint-metadata-custom-fields
dqbd/release-0.2.56-second
ben/docs-learning-path
ben/typed-exec
vb/support-checkpointer-true
dqbd/stream-mode-messages-input-no-emit
dqbd/tsc-module-es2020
jacob/nits
cc/docs_layout
dqbd/tasks-results
brace/update-how-to-hitl-index
jacob/sendv2
dqbd/command-goto
jacob/stream_messages
jacob/supabase
brace/updated-mem-conceptual
471
allan/first-agent-tutorial
brace/req-config
nc/23sep/stream-output
allan/subgraphs
brace/stores
brace/memory
jacob/rc
isaac/contextchannel
brace/subgraphs
wfh/typedocs
0.1
isaac/doclink
jacob/mongo
testing
nc/11aug/archs
jacob/streaming_tool_call
jacob/messagesstate
wfh/pae
wfh/moore_tutorials_tsc
wfh/drd
wfh/edgy
brace/langgraph-self-rag-oss
brace/prebuilt
brace/state-graph
brace/bump-lc-core
brace/typing
brace/examples
nc/fixup
brace/package-infra
brace/allow-channel-string
@langchain/vue@1.0.28
@langchain/svelte@1.0.28
@langchain/react@1.0.28
@langchain/langgraph-sdk@1.9.27
@langchain/angular@1.0.28
@langchain/vue@1.0.27
@langchain/svelte@1.0.27
@langchain/react@1.0.27
@langchain/langgraph@1.4.8
@langchain/langgraph-ui@1.4.3
@langchain/langgraph-sdk@1.9.26
@langchain/langgraph-cli@1.4.3
@langchain/langgraph-api@1.4.3
@langchain/angular@1.0.27
@langchain/langgraph-ui@1.4.2
@langchain/langgraph-cli@1.4.2
@langchain/langgraph-api@1.4.2
@langchain/langgraph@1.4.7
@langchain/vue@1.0.26
@langchain/svelte@1.0.26
@langchain/react@1.0.26
@langchain/langgraph@1.4.6
@langchain/langgraph-ui@1.4.1
@langchain/langgraph-sdk@1.9.25
@langchain/langgraph-cli@1.4.1
@langchain/langgraph-checkpoint@1.1.3
@langchain/langgraph-checkpoint-postgres@1.0.4
@langchain/langgraph-api@1.4.1
@langchain/angular@1.0.26
@langchain/vue@1.0.25
@langchain/svelte@1.0.25
@langchain/react@1.0.25
@langchain/langgraph@1.4.5
@langchain/langgraph-ui@1.4.0
@langchain/langgraph-sdk@1.9.24
@langchain/langgraph-cli@1.4.0
@langchain/langgraph-checkpoint-mongodb@1.4.0
@langchain/langgraph-api@1.4.0
@langchain/angular@1.0.25
@langchain/vue@1.0.24
@langchain/svelte@1.0.24
@langchain/react@1.0.24
@langchain/langgraph@1.4.4
@langchain/langgraph-sdk@1.9.23
@langchain/langgraph-checkpoint@1.1.2
@langchain/langgraph-checkpoint-redis@1.0.10
@langchain/angular@1.0.24
@langchain/vue@1.0.23
@langchain/svelte@1.0.23
@langchain/react@1.0.23
@langchain/langgraph@1.4.2
@langchain/langgraph-ui@1.3.1
@langchain/langgraph-supervisor@1.1.1
@langchain/langgraph-sdk@1.9.22
@langchain/langgraph-cli@1.3.1
@langchain/langgraph-checkpoint@1.1.1
@langchain/langgraph-checkpoint-redis@1.0.9
@langchain/langgraph-api@1.3.1
@langchain/angular@1.0.23
@langchain/vue@1.0.22
@langchain/svelte@1.0.22
@langchain/react@1.0.22
@langchain/langgraph@1.4.1
@langchain/langgraph-supervisor@1.1.0
@langchain/langgraph-sdk@1.9.21
@langchain/angular@1.0.22
@langchain/vue@1.0.21
@langchain/svelte@1.0.21
@langchain/react@1.0.21
@langchain/langgraph@1.4.0
@langchain/langgraph-checkpoint@1.1.0
@langchain/langgraph-checkpoint-sqlite@1.0.3
@langchain/langgraph-checkpoint-redis@1.0.8
@langchain/langgraph-checkpoint-postgres@1.0.3
@langchain/langgraph-checkpoint-mongodb@1.3.4
@langchain/angular@1.0.21
@langchain/vue@1.0.20
@langchain/svelte@1.0.20
@langchain/react@1.0.20
@langchain/langgraph-sdk@1.9.20
@langchain/angular@1.0.20
@langchain/vue@1.0.19
@langchain/svelte@1.0.19
@langchain/react@1.0.19
@langchain/langgraph@1.3.7
@langchain/langgraph-ui@1.3.0
@langchain/langgraph-sdk@1.9.19
@langchain/langgraph-cli@1.3.0
@langchain/langgraph-checkpoint-validation@1.1.0
@langchain/langgraph-checkpoint-sqlite@1.0.2
@langchain/langgraph-api@1.3.0
@langchain/angular@1.0.19
@langchain/vue@1.0.18
@langchain/svelte@1.0.18
@langchain/react@1.0.18
@langchain/langgraph-sdk@1.9.18
@langchain/angular@1.0.18
@langchain/vue@1.0.17
@langchain/svelte@1.0.17
@langchain/react@1.0.17
@langchain/langgraph@1.3.6
@langchain/langgraph-ui@1.2.5
@langchain/langgraph-sdk@1.9.17
@langchain/langgraph-cli@1.2.5
@langchain/langgraph-api@1.2.5
@langchain/angular@1.0.17
@langchain/vue@1.0.16
@langchain/svelte@1.0.16
@langchain/react@1.0.16
@langchain/langgraph@1.3.5
@langchain/langgraph-sdk@1.9.16
@langchain/angular@1.0.16
@langchain/vue@1.0.15
@langchain/svelte@1.0.15
@langchain/react@1.0.15
@langchain/langgraph-sdk@1.9.15
@langchain/angular@1.0.15
@langchain/vue@1.0.14
@langchain/svelte@1.0.14
@langchain/react@1.0.14
@langchain/langgraph-sdk@1.9.14
@langchain/angular@1.0.14
@langchain/vue@1.0.13
@langchain/svelte@1.0.13
@langchain/react@1.0.13
@langchain/langgraph-sdk@1.9.13
@langchain/angular@1.0.13
@langchain/vue@1.0.12
@langchain/svelte@1.0.12
@langchain/react@1.0.12
@langchain/langgraph@1.3.4
@langchain/langgraph-sdk@1.9.12
@langchain/langgraph-checkpoint-mongodb@1.3.3
@langchain/angular@1.0.12
@langchain/vue@1.0.11
@langchain/svelte@1.0.11
@langchain/react@1.0.11
@langchain/langgraph@1.3.3
@langchain/langgraph-ui@1.2.4
@langchain/langgraph-supervisor@1.0.4
@langchain/langgraph-sdk@1.9.11
@langchain/langgraph-cli@1.2.4
@langchain/langgraph-checkpoint@1.0.4
@langchain/langgraph-checkpoint-redis@1.0.7
@langchain/langgraph-checkpoint-postgres@1.0.2
@langchain/langgraph-checkpoint-mongodb@1.3.2
@langchain/langgraph-api@1.2.4
@langchain/angular@1.0.11
@langchain/vue@1.0.10
@langchain/svelte@1.0.10
@langchain/react@1.0.10
@langchain/langgraph-ui@1.2.3
@langchain/langgraph-sdk@1.9.10
@langchain/langgraph-cli@1.2.3
@langchain/langgraph-checkpoint@1.0.3
@langchain/langgraph-checkpoint-redis@1.0.6
@langchain/langgraph-api@1.2.3
@langchain/angular@1.0.10
@langchain/vue@1.0.9
@langchain/svelte@1.0.9
@langchain/react@1.0.9
@langchain/langgraph-sdk@1.9.9
@langchain/angular@1.0.9
@langchain/vue@1.0.8
@langchain/svelte@1.0.8
@langchain/react@1.0.8
@langchain/langgraph-sdk@1.9.8
@langchain/angular@1.0.8
@langchain/vue@1.0.7
@langchain/svelte@1.0.7
@langchain/react@1.0.7
@langchain/langgraph-sdk@1.9.7
@langchain/angular@1.0.7
@langchain/vue@1.0.6
@langchain/svelte@1.0.6
@langchain/react@1.0.6
@langchain/langgraph-sdk@1.9.6
@langchain/angular@1.0.6
@langchain/vue@1.0.5
@langchain/svelte@1.0.5
@langchain/react@1.0.5
@langchain/langgraph-supervisor@1.0.3
@langchain/langgraph-sdk@1.9.5
@langchain/langgraph-checkpoint-redis@1.0.5
@langchain/angular@1.0.5
@langchain/vue@1.0.4
@langchain/svelte@1.0.4
@langchain/react@1.0.4
@langchain/langgraph@1.3.2
@langchain/langgraph-sdk@1.9.4
@langchain/angular@1.0.4
@langchain/vue@1.0.3
@langchain/svelte@1.0.3
@langchain/langgraph@1.3.1
@langchain/langgraph-swarm@1.0.2
@langchain/langgraph-supervisor@1.0.2
@langchain/angular@1.0.3
@langchain/vue@1.0.2
@langchain/svelte@1.0.2
@langchain/react@1.0.2
@langchain/langgraph-sdk@1.9.2
@langchain/angular@1.0.2
@langchain/vue@1.0.1
@langchain/angular@1.0.1
@langchain/vue@1.0.0
@langchain/react@1.0.0
@langchain/langgraph-cli@1.2.0
@langchain/langgraph-api@1.2.0
@langchain/angular@1.0.0
@langchain/vue@0.4.7
@langchain/svelte@0.4.7
@langchain/react@0.3.5
@langchain/angular@0.4.7
@langchain/vue@0.4.6
@langchain/svelte@0.4.6
@langchain/react@0.3.4
@langchain/langgraph-sdk@1.8.10
@langchain/angular@0.4.6
@langchain/langgraph-checkpoint-mongodb@1.3.0
@langchain/langgraph@1.2.9
@langchain/langgraph-sdk@1.8.9
@langchain/langgraph@1.2.8
@langchain/vue@0.4.5
@langchain/svelte@0.4.5
@langchain/react@0.3.3
@langchain/langgraph-sdk@1.8.8
@langchain/angular@0.4.5
@langchain/vue@0.4.4
@langchain/svelte@0.4.4
@langchain/angular@0.4.4
@langchain/vue@0.4.3
@langchain/svelte@0.4.3
@langchain/angular@0.4.3
@langchain/vue@0.4.2
@langchain/svelte@0.4.2
@langchain/react@0.3.2
@langchain/langgraph-sdk@1.8.7
@langchain/angular@0.4.2
@langchain/vue@0.4.1
@langchain/svelte@0.4.1
@langchain/react@0.3.1
@langchain/langgraph-sdk@1.8.6
@langchain/angular@0.4.1
@langchain/vue@0.4.0
@langchain/svelte@0.4.0
@langchain/react@0.3.0
@langchain/langgraph@1.2.7
@langchain/angular@0.4.0
@langchain/vue@0.3.4
@langchain/svelte@0.3.2
@langchain/react@0.2.4
@langchain/langgraph-sdk@1.8.5
@langchain/angular@0.3.3
@langchain/vue@0.3.3
@langchain/langgraph-sdk@1.8.4
@langchain/vue@0.3.2
@langchain/langgraph-sdk@1.8.3
@langchain/angular@0.3.2
@langchain/react@0.2.3
@langchain/langgraph-sdk@1.8.2
@langchain/langgraph-ui@1.1.17
@langchain/langgraph-cli@1.1.17
@langchain/langgraph-api@1.1.17
@langchain/vue@0.3.1
@langchain/svelte@0.3.1
@langchain/react@0.2.2
@langchain/langgraph@1.2.6
@langchain/langgraph-sdk@1.8.1
@langchain/angular@0.3.1
@langchain/vue@0.3.0
@langchain/svelte@0.3.0
@langchain/react@0.2.1
@langchain/langgraph@1.2.5
@langchain/langgraph-sdk@1.8.0
@langchain/angular@0.3.0
@langchain/vue@0.2.0
@langchain/svelte@0.2.0
@langchain/react@0.2.0
@langchain/langgraph@1.2.4
@langchain/langgraph-sdk@1.7.5
@langchain/angular@0.2.0
@langchain/langgraph-sdk@1.7.4
@langchain/langgraph@1.2.3
@langchain/langgraph-ui@1.1.16
@langchain/langgraph-sdk@1.7.3
@langchain/langgraph-cli@1.1.16
@langchain/langgraph-checkpoint@1.0.1
@langchain/langgraph-checkpoint-redis@1.0.4
@langchain/langgraph-api@1.1.16
@langchain/langgraph-sdk@1.7.2
@langchain/vue@0.1.3
@langchain/svelte@0.1.3
@langchain/react@0.1.3
@langchain/langgraph-sdk@1.7.1
@langchain/angular@0.1.3
@langchain/vue@0.1.2
@langchain/svelte@0.1.2
@langchain/react@0.1.2
@langchain/angular@0.1.2
@langchain/langgraph@1.2.1
@langchain/langgraph-ui@1.1.15
@langchain/langgraph-cli@1.1.15
@langchain/langgraph-checkpoint-redis@1.0.3
@langchain/langgraph-api@1.1.15
@langchain/langgraph@1.2.0
@langchain/langgraph-ui@1.1.14
@langchain/langgraph-sdk@1.6.5
@langchain/langgraph-cli@1.1.14
@langchain/langgraph-checkpoint-mongodb@1.2.0
@langchain/langgraph-api@1.1.14
@langchain/langgraph-sdk@1.6.4
@langchain/langgraph-checkpoint-postgres@1.0.1
@langchain/langgraph-sdk@1.6.3
@langchain/langgraph@1.1.5
@langchain/langgraph-ui@2.0.0
@langchain/langgraph-sdk@2.0.0
@langchain/langgraph-cli@2.0.0
@langchain/langgraph-api@2.0.0
@langchain/langgraph-ui@1.1.13
@langchain/langgraph-sdk@1.6.2
@langchain/langgraph-cli@1.1.13
@langchain/langgraph-api@1.1.13
@langchain/langgraph-sdk@1.6.1
@langchain/langgraph@1.1.4
@langchain/langgraph-sdk@1.6.0
@langchain/langgraph-ui@1.1.12
@langchain/langgraph-sdk@1.5.6
@langchain/langgraph-cli@1.1.12
@langchain/langgraph-checkpoint-redis@1.0.2
@langchain/langgraph-checkpoint-mongodb@1.1.7
@langchain/langgraph-api@1.1.12
@langchain/langgraph@1.1.3
@langchain/langgraph-checkpoint-sqlite@1.0.1
@langchain/langgraph@1.1.2
@langchain/langgraph@1.1.1
@langchain/langgraph-sdk@1.5.5
@langchain/langgraph@1.1.0
@langchain/langgraph-sdk@1.5.4
@langchain/langgraph-sdk@1.5.3
@langchain/langgraph-checkpoint-validation@1.0.9
@langchain/langgraph-sdk@1.5.2
@langchain/langgraph-sdk@1.5.1
@langchain/langgraph@1.0.15
@langchain/langgraph-ui@1.1.11
@langchain/langgraph-sdk@1.5.0
@langchain/langgraph-cli@1.1.11
@langchain/langgraph-api@1.1.11
create-langgraph@1.1.5
@langchain/langgraph@1.0.14
@langchain/langgraph-ui@1.1.10
@langchain/langgraph-sdk@1.4.6
@langchain/langgraph-cli@1.1.10
@langchain/langgraph-checkpoint-validation@1.0.8
@langchain/langgraph-checkpoint-mongodb@1.1.6
@langchain/langgraph-api@1.1.10
@langchain/langgraph-api@1.1.9
@langchain/langgraph@1.0.13
@langchain/langgraph-ui@1.1.9
@langchain/langgraph-sdk@1.4.5
@langchain/langgraph-cli@1.1.9
@langchain/langgraph-checkpoint-validation@1.0.7
@langchain/langgraph-checkpoint-mongodb@1.1.5
create-langgraph@1.1.4
@langchain/langgraph-api@1.1.8
@langchain/langgraph@1.0.12
@langchain/langgraph-ui@1.1.8
@langchain/langgraph-sdk@1.4.4
@langchain/langgraph-cli@1.1.8
@langchain/langgraph-checkpoint-validation@1.0.6
@langchain/langgraph-checkpoint-mongodb@1.1.4
create-langgraph@1.1.3
@langchain/langgraph-ui@0.0.43
@langchain/langgraph-cli@0.0.43
@langchain/langgraph-api@0.0.43
@langchain/langgraph-api@0.0.42
@langchain/langgraph-ui@0.0.42
@langchain/langgraph-cli@0.0.42
@langchain/langgraph-sdk@0.0.90
0.3.6
0.3.5
0.3.4
supervisor==0.0.14
0.3.3
@langgraph-supervisor@0.0.14
0.3.2
0.3.1
0.3.0
checkpoint==0.0.18
swarm==0.0.4
supervisor==0.0.13
cua==0.0.6
0.2.74
0.2.73
checkpoint-sqlite==0.1.5
supervisor==0.0.12
0.2.72
0.2.71
0.2.70
0.2.69
checkpoint-postgres==0.0.5
@langchain/langgraph-checkpoint-postgres==0.0.5
0.2.68
0.2.67
0.2.66
0.2.65
0.2.64
supervisor==0.0.11
supervisor==0.0.10
0.2.63
0.2.57
0.2.56
0.2.35
0.2.59
0.2.40
0.2.58
0.2.62
0.2.61
0.2.60
0.2.55
0.2.54
checkpoint==0.0.16
swarm==0.0.3
supervisor==0.0.9
swarm==0.0.2
supervisor==0.0.8
0.2.53
0.2.52
swarm==0.0.1
supervisor==0.0.7
0.2.51
supervisor==0.0.6
supervisor==0.0.5
0.2.50
0.2.49
0.2.48
0.2.47
checkpoint-mongodb==0.0.6
checkpoint-postgres==0.0.4
0.2.46
0.2.45
0.2.44
checkpoint-postgres==0.0.3
checkpoint-sqlite==0.1.4
checkpoint-mongodb=0.0.5
checkpoint==0.0.15
0.2.43
0.2.42
checkpoint==0.0.14
0.2.41
0.2.39
0.2.38
0.2.37
0.2.36
0.2.34
0.2.33
0.2.32
0.2.31
0.2.30
0.2.29
0.2.28
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.29
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: langchain-ai/langgraphjs#152
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @guidorietbroek on GitHub (Dec 25, 2024).
Description:
When adding nodes to a StateGraph, the type inference only works correctly when using method chaining syntax. Adding nodes dynamically using separate
stateGraph.addNode()calls breaks the type accumulation in theNtype parameter.Example of working code (with correct type inference):
Example of code that breaks type inference:
This makes it difficult to dynamically add nodes to the graph, as we're forced to use method chaining. This seems unintuitive and limits the flexibility of the StateGraph implementation.
Expected behavior:
Both approaches should maintain correct type inference, allowing for more flexible ways to add nodes to the graph, especially when dealing with dynamic configurations.
Would it be possible to adjust the type definitions to maintain type accumulation in the N type parameter regardless of whether method chaining is used?
@guidorietbroek commented on GitHub (Dec 25, 2024):
After further investigation, I think I have found the root cause of this issue. It stems from how type casting is implemented in the
addNodemethod:This superficial type casting works for method chaining because each call receives a new cast, but fails for separate calls because the instance retains its original type. Interestingly, this is why addEdge works without chaining (it returns this without type casting) while addNode doesn't.
This suggests the issue requires a deeper solution and it is not possible to solve with an easy fix.
Any thoughts?
Maybe it should be a new feature "adding nodes dynamically to a graph"
@guidorietbroek commented on GitHub (Dec 29, 2024):
@jacoblee93 @bracesproul Having worked with LangGraph since its early days, we're now trying to make our well-functioning graphs more generic and reusable. The current method chaining requirement is becoming a real bottleneck for this.
We'd love to build our graphs from configuration, allowing us to:
Would you consider supporting an alternative to method chaining that would enable these patterns? This would make LangGraph even more powerful as a framework for building flexible, production-ready AI applications. Happy to share our experiences and specific use cases if helpful.
@jacoblee93 commented on GitHub (Dec 30, 2024):
Yeah would love to see what you're trying to do at a low level and how this blocks you - I think best we could do is have a
disableTypingparam or some constructor which would not really be that different from just ts-ignore anyway@guidorietbroek commented on GitHub (Dec 30, 2024):
Thanks for the response! To clarify: this isn't just about typing. In Python LangGraph, we can use stateGraph.addNode without issues. What we're trying to achieve is building configurable graphs from configuration:
The current method chaining requirement forces us to either:
Using @ts-ignore or disableTyping wouldn't solve this - it's not just about bypassing TypeScript errors, but about enabling proper graph construction from configuration before runtime.
We're curious about LangGraph's vision regarding configurable graphs. The Python implementation allows this flexibility - is this an intentional design choice? Having this ability in TypeScript would align well with LangGraph's goal of building flexible, production-ready AI applications. Would love to hear your thoughts on this.
@guidorietbroek commented on GitHub (Dec 30, 2024):
I am pretty sure that in the early days of LangGraph this was possible. The first tutorials worked with
graph.addNode. and after a while it went to chaining.For a more practical application. We have a chatbot with prebuilt tools (as agents) and these are configurable. But we would like to make this even more configurable by toggling these tools in a portal. We are using a supervisor that we build dynamically adding these available subagents based on the config. But right now we have to load all agents as node and create all edges from these node to END with some dynamic conditional edges in between.
Hope this gives more insight in the practical solution. I am pretty sure LangGraph Cloud/Studio will benefit of this as well.
@jacoblee93 commented on GitHub (Dec 30, 2024):
I see - interesting.
It sounds like something like
disableValidationparameter would unblock you?@guidorietbroek commented on GitHub (Dec 31, 2024):
Not exactly - disabling validation would still require us to work around the method chaining pattern. The core issue is that we want to build graphs programmatically from configuration, similar to how it works in Python LangGraph.
Method chaining forces a static, linear definition of the graph. What we're looking for is the ability to construct graphs more dynamically, where nodes and edges can be added based on configuration - without having to build separate graph definitions for each possible combination.
Is supporting this kind of configuration-based graph construction something that aligns with LangGraph's vision? Or is there perhaps a different pattern you'd recommend for achieving this?
@jacoblee93 commented on GitHub (Jan 3, 2025):
I think this sounds reasonable - but what error do you actually see with this?
What about:
@guidorietbroek commented on GitHub (Jan 6, 2025):
Thanks for taking the time to have a look! Interesting solution you provide.
I tried the reassignment approach, but it still forces us into a fixed, predefined graph structure. Here's what I tried:
This results in:
This doesn't work - not just because of TypeScript, but because the underlying StateGraph seems designed around static, chain-based construction rather than dynamic configuration. Making it impossible to assign nodes dynamically.
As a workaround we now add all nodes hardcoded and create for all nodes a static routing to END. And in the middel we use a dynamic edge which only routes the available nodes inside the graph. For now it's okay, but when we have 100+ nodes we can choose of, it get's a bit messy and dirty :)
As an answer to your first question.
This fails with:
Meaning the StateGraph structure doesn't support adding nodes independently from the chain.
@guidorietbroek commented on GitHub (Jan 13, 2025):
@jacoblee93 sorry to bump you again. But it’s really holding us up right now.
Is it possible to let us now if we can expect to see this functionality in short future? Otherwise we need to change our plans unfortunately.
@jacoblee93 commented on GitHub (Jan 13, 2025):
Hey sorry for the delays - will try to dig in this week!
Or maybe CC @benjamincburns if he has time
@nikita-wayhq commented on GitHub (Jan 29, 2025):
Side note for those who read.
Seems like adding edges is fine, as it returns
this:https://github.com/langchain-ai/langgraphjs/blob/4bee8fdc9c2bc04d49db504fd267ce65cc4856ba/libs/langgraph/src/graph/state.ts#L351-L354
Anyone from LangChain Team can confirm it's future proof to at least add edges conditionally?
@guidorietbroek commented on GitHub (Feb 16, 2025):
We will move away from LangGraph due to this limitation.
@jacoblee93 commented on GitHub (Feb 16, 2025):
Sorry - let's still leave open
@benjamincburns commented on GitHub (Feb 24, 2025):
@guidorietbroek sorry that I'm late on the draw here, but the workaround in order to enable non-chaining node/graph additions is to specify the type parameters for
StateGraphyourself, usingstringfor theNparam.It's a little ugly, but this example works for me with latest
@langchain/langgraph. We could probably relax the default type ofNonStateGraphtostringto enable this w/o having to provide the params yourself. I'd need to think about it a bit more to see if it'd break anything.Note that the string literals passed to
addNodeandaddEdgeare not restricted by the type checker here, however they must still pass graph validation checks (e.g. I can't add an edge fromnode1to a non-existentnode3).@jung-han commented on GitHub (Apr 1, 2025):
I may have misunderstood, but benjamincburns comment above seems to suggest that there's no problem when using annotations together, but there is a problem when specifying input and output.
Has anyone experienced this issue?
@benjamincburns commented on GitHub (Apr 3, 2025):
@jung-han see this example in our docs, and please open a new issue if you're still having problems - this one meant to track something different.
@dqbd commented on GitHub (Jun 17, 2025):
Hello! Closing this as Won't Fix since widening the default type for Node would result in
addEdgenot warning on adding edges for non-existent nodes.The workaround mentioned by @benjamincburns should alleviate the issue for folks who want to dynamically create graphs