mirror of
https://github.com/langchain-ai/langgraphjs.git
synced 2026-07-22 17:15:25 -04:00
Feature request: Create an acceptance test suite for checkpointers #101
Closed
opened 2026-02-15 17:15:46 -05:00 by yindo
·
11 comments
No Branch/Tag Specified
main
dependabot/npm_and_yarn/angular-10c8d2db5f
dependabot/npm_and_yarn/langchain-ce65a09253
dependabot/npm_and_yarn/svelte-7618a5540f
dependabot/npm_and_yarn/libs/sdk-vue/npm_and_yarn-5181fea478
dependabot/npm_and_yarn/vitest/browser-4.1.10
dependabot/npm_and_yarn/hono/node-server-2.0.10
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.29
@langchain/svelte@1.0.29
@langchain/react@1.0.29
@langchain/langgraph-sdk@1.9.28
@langchain/angular@1.0.29
@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#101
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 @benjamincburns on GitHub (Oct 1, 2024).
As @hgoona mentioned in this comment, the requirements for custom checkpointers aren't abundantly obvious from the docs, or even the LangChain-provided checkpointer implementations.
It would be helpful if a black-box acceptance test suite existed for checkpointers, ideally one that could be used both by the LangGraph team, and authors of third party checkpointer implementations.
The suite would need to exercise all of the requirements of the checkpointer contract, such that if an arbitrary checkpointer passes this suite, the author and community would have high confidence that the checkpointer in question fulfills all of LangGraph's requirements for storing and retrieving persisted state.
Ideally this would also exist for stores. I'm happy to open another issue for those if the maintainers would prefer to track these separately.
@vbarda commented on GitHub (Oct 1, 2024):
@benjamincburns thanks for the feedback! this is a great point and we actually do plan to do this for both Python and JS, we'll follow up here once we have more details
@benjamincburns commented on GitHub (Oct 1, 2024):
@vbarda are you guys interested in external contributions for this for the JS side? I'd imagine it'd be a riskier contribution for a third party to make given that anyone external to the team would essentially be reverse-engineering the interface specification, not to mention making some assumptions around how you guys would want to structure the test suite, what tooling to use, etc.
That said, I'm finding that I need something like this for my own project, so I'm likely to be building something of this ilk soon if you guys don't do it for me. If the thing that I come up with looks like it might be more broadly useful, I'd be happy to submit it as a PR. I'd just expect that I'd need some help from the LangGraph team to massage it into a shape that fits nicely in this repository.
Any preferences you can share here on the sorts of assumptions I mention above would also be quite helpful.
@hgoona commented on GitHub (Oct 2, 2024):
@vbarda I'd be keen but I'm quite green to this side of things and feel very lost in my understanding of the anatomy of these Checkpointer Savers (or whatever they are called <<< the naming of these parts are in and of itself a hard ask to form a mental model around. It really could be explained better or named better too).
Currently, @benjamincburns I'm also trying to push through to make a custom Checkpoint Saver for use with SurrealDB, regardless of the missing info (above), but not doing great at all... I'm referencing the Sqlite Saver at present.
I'd be happy to share notes if that is helpful??
@benjamincburns commented on GitHub (Oct 2, 2024):
@hgoona if you DM me on the LangChain slack I'll drop my notes doc your way. It's a bit terse (mostly just mapping out types and asking/answering my own questions as bullet points) but it may help. You can find me as "Ben Burns" there with the same pfp.
I can't guarantee that I'll reply outside of my usual working hours, though (NZ timezone). I'm also planning on taking the day off tomorrow (although I may still be around as I might hack on a personal project with LangGraph).
Edit: I went ahead and uploaded them as a gist. If you want to discuss them, please reach out to me on Slack or leave comments on that gist.
@hgoona commented on GitHub (Oct 3, 2024):
@benjamincburns Noted! Though, I don't have access to that Slack. Are you on the LangChain Discord server to talk further?
@hgoona commented on GitHub (Oct 4, 2024):
@benjamincburns In case you're interested, I've posted a draft Saver for SurrealDB here where I've just tried to mimic the Sqlite version: https://github.com/langchain-ai/langgraphjs/issues/545#issuecomment-2392531170
I've annotated the test a bit better than the original from SqliteSaver so it may be useful if applied to your case. Currently my
SdbSaveris failing two tests. Would love any help I can get on it!@benjamincburns commented on GitHub (Oct 7, 2024):
@vbarda I've started an acceptance suite that I intend to contribute. So far it's just a pile of unit tests, but I intend to fill out some integration tests in the
scenarios, as well.It's not ready to PR just yet, but if you or someone else from the team wouldn't mind giving it a quick scan through my branch, I'd be much obliged for any feedback you can offer. I intend to do a clean-up pass or two for readability, informative/actionable error messages on failure, etc. Just wanting to make sure that for now this is something that's roughly aligned with what you guys had in mind.
checkpoint-validationpackagescenariodirectory is just a placeholder for now, so nothing to see there.MemorySaverMemorySaveralready 😊@jacoblee93 commented on GitHub (Oct 8, 2024):
I've repurposed the existing
pregel.test.tssuite in thePostgresSaverPR to add support for setting up a checkpointer before each test:https://github.com/langchain-ai/langgraphjs/blob/main/libs/langgraph/src/tests/pregel.postgres_saver.int.test.ts
But I do still think that a lighter, more granular suite would be very helpful so will keep this open! Thanks for starting this @benjamincburns!
Using this as a baseline might be helpful as well: https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-standard-tests
@benjamincburns commented on GitHub (Oct 15, 2024):
Now that I've submitted the PR for this, I thought it might be useful if I captured some feedback on some things that I observed along the way. I can create tickets for any/all of these things if it's useful, but I thought it'd be best to capture them here first, as I think the context helps underscore the importance.
Also I recognize that this is a very new, very beta project in an early stage startup that has gained substantial attention and popularity in its earliest days. I have some experience building in the open myself, and it definitely presents some unique challenges (and joys). If you're lucky enough to have demand for what you're doing it's easy to get the impression that everyone wants you to be at least two years (or more) more mature than you actually are. You guys are doing a seriously impressive job at navigating that, especially when it comes to iterating quickly and engaging with your community.
So in case it isn't clear - I'm writing this to support the work that you're doing, not to detract from it.
If you've worked on SaaS apps before, you'll know that state persistence can be a subtly risky and complex area of concern, and that poor planning and/or poor engineering discipline in this area can cause massively expensive problems to crop up quietly over time. As a result, devs who play in this space would be ill advised to adopt libraries and frameworks that remove control by making this problem less predictable or harder to reason about.
While working through #600 I encountered a number stumbling blocks that are causing LangGraph to miss the mark in that regard:
BaseCheckpointSaver,Checkpoint,CheckpointTuple--CheckpointMetadatais somewhat better than the others, but it's unclear what my responsibilities are with respect to this type as a checkpoint saver author.CheckpointMetadata.writesvsCheckpointTuple.pendingWritesvspending_sends), or how they should (or shouldn't) impact the behavior of checkpoint savers.newVersionsargument on theBaseCheckpointSaver.putmethod) isn't described or mentioned in the README or any other documentation that I could findnewVersionstoput(prior tocheckpoint-postgresbeing merged)BaseCheckpointSaver.listmethodlistmethod across existing implementationsnumber | string) but existing implementations all usenumber, and it's not clear how (or why) one would go about usingstringversions.PostgresSaverimplementation, which only merged last week.RunnableConfigtype is being abused to pass important internal structures that would make more sense to be passed as objects with well-defined types.any, breaking IDE indexing and search features like "Find All References", which further reduces discoverability of key logic.Pregel.checkpointeris typed asBaseCheckpointSaver | false | undefined, methods inPregelthat use it (e.g. here inupdateState) alias it to a localcheckpointervariable, which is defined asconst checkpointer = config.configurable?.[CONFIG_KEY_CHECKPOINTER] ?? this.checkpointer;.config.configurableis of typeany, which makesconfig.configurable?.[CONFIG_KEY_CHECKPOINTER]also be typeany, which makes the type of the localcheckpointeralias beBaseCheckpointSaver | false | undefined | any, which the TS type checker narrows toany.noImplicitAnycheck would catch this, as you havestrict: trueset in yourcompilerOptionsintsconfig.json, butconfig.configurableis explicitly typed asany, so it propagates without error.anyforunknown, and only access these values after passing them through some form of type guard, ideally a type predicate. ESLint should have some rules to help with this.With all of that said, I'm comfortable enough to continue using LangGraph for my application now that I've gained a deeper (albeit still incomplete) understanding of the checkpointing internals. However I currently have the luxury of working in an environment with very low time pressure. Were that not the case, the effort required for me to reach the necessary level of knowledge would've been far too high to move forward with LangGraph. It's totally understandable for this to be the case at this stage of LangGraph's development, but I think these issues are likely to be a significant off-ramp for would-be adopters as time marches on.
@hgoona commented on GitHub (Oct 16, 2024):
+1 on this detailed analysis. Due to my uncertainty on the mechanics and purposes within the Checkpoint implementations, at least for the moment, I've decided to depart from using the Checkpoint feature.
@nfcampos commented on GitHub (Oct 21, 2024):
@hgoona we are aware of the issues pointed out above, and plan on working through them. We have just merged @benjamincburns's PR which adds the awesome test suite he wrote for checkpointers, and the plan after that is to work on fixing the issues found during that work. For context, our thought process on designing the checkpointer interface has been to make it a good basis to use in production use cases (eg. all changes to the interface so far have been done in a backwards compatible way, checkpoints from the very first version are still readable with the latest version of the libraries (albeit with less features than current ones of course), access to the database is serialized where needed, and combined into a single operation where possible, etc). Some of the actual implementations of checkpointers in this repo have fallen a bit short of the mark on correctness, and we are working towards fixing that now.