Nuno Campos
417103066b
Lint
2025-06-16 09:29:03 -07:00
Nuno Campos
25a59447c1
Introduce "tasks" and "checkpoints" stream modes
...
- These are split out of "debug" stream mode, which is now an alias for ["tasks", "checkpoints"]
2025-06-16 08:47:45 -07:00
Nuno Campos
b95267a3cc
Refine dependency map
2025-06-10 10:06:08 -07:00
Nuno Campos
5ab5da767b
Pass tags when configuring async callback manager
2025-06-03 16:17:17 -07:00
Nuno Campos
7080eaa79e
docs: fix ensure_config docstring
2025-06-03 15:56:41 -07:00
Nuno Campos
cd2847ee07
docs: fix double article typos
2025-06-03 15:53:19 -07:00
Nuno Campos
936176eb21
Remove Checkpoint.writes
...
- This has been superseded by saving the individual writes of each task through put_writes()
- Removing this speeds up checkpoint operations as it was duplicating data saved elsewhere already
2025-05-25 19:06:46 -07:00
Nuno Campos
4e8fbe4525
Remove Checkpoint.pending_sends
...
- Instead store sends in a Topic channel, removing the need to fetch sends as writes against the parent checkpoint
- Remove deprecated/unused functions in langgraph-checkpoint (will require bumping min range for langgraph-checkpoint in langgraph lib)
- Implement migration of old pending sends in langgraph-checkpoint-postgres
- Ensure parent config of `checkpoint_during=False` checkpoints always points to checkpoints that were also saved
2025-05-25 19:06:02 -07:00
Nuno Campos
85522ec6a6
Pregel: Add NodeBuilder class to replace Channel.subscribe_to
...
- For now keeping Channel.subscribe_to given it was used in docs
2025-05-24 20:35:37 -07:00
Nuno Campos
0f8f5444bc
Lint
2025-05-24 14:54:57 -07:00
Nuno Campos
bc17c3522b
Remove old checkpoint test fixtures
...
- Now all tests fully migrated to more recent sync_checkpointer and async_checkpointer fixtures for parametrising on checkpointer
- Use sync/async_store fixtures where tests used only in memory store
- Remove unused "should snapshot" check for older versions of langchain core no longer tested against
2025-05-24 14:27:13 -07:00
Nuno Campos
8c11c1155a
Remove postgres shallow checkpointer
...
- This was deprecated, and superseded by checkpoint_during=False, which is available for all checkpointers
2025-05-24 12:39:50 -07:00
Nuno Campos
9c79d887a0
Remove ChannelsManager, ManagedValues are now static classes and never instantiated
...
- This keeps the existing API for accessing IsLastValue, RemainingSteps, but simplifies the internal implementation
- This lets us remove ChannelsManager completely, which no longer needs to be a context manager, now replaced w function channels_from_checkpoint
- Managed values are now simple functions that return a value given a PregelScratchpad, which will be easier to implement in distributed runner
2025-05-24 12:15:11 -07:00
Nuno Campos
889b40e7a8
Remove Context channel / managed value, Remove SharedValue
...
- Both have been deprecated long ago, have not been present in docs for quite a while
- Removing these lets us delete some code paths that were dedicated to this, easing work on distributed runner
2025-05-24 11:05:15 -07:00
Nuno Campos and Nuno Campos
6fe319ed1b
WIP: Add migrate_checkpoint
2025-04-02 07:24:55 -07:00
Nuno Campos
6efeefe424
Maintain checkpoint LATEST_VERSION constant in langgraph lib
...
- This should be controlled by the langgraph version, not the version of langgraph-checkpoint installed
2025-04-01 21:46:38 -07:00
Nuno Campos
a541376d10
Store all triggers in task
...
- These are used to update seen version
2025-03-18 21:17:26 -07:00
Nuno Campos and Nuno Campos
8bcdba822e
Reduce to 4.1s
2025-03-18 09:15:28 -07:00
Nuno Campos and Nuno Campos
60fc49b448
Speed up prepare_single_task
...
- sequential(2000) goes from 8.4s to 4.7s
- replace UUID(str).bytes with simpler str.encode()
- find only the first active trigger, instead of the full list
- use a dedicated function for checking active trigger
2025-03-18 09:15:11 -07:00
Nuno Campos
3f241d00a3
Fix bench
2025-03-18 06:45:41 -07:00
Nuno Campos
d6a457ef1d
Improve prepare_single_task trigger checks to linear complexity
...
- Was O(n^2) due to individual channels created for every conditional edge, including the default cond edge created for Command
- Now using a single channel per node for all conditional edge / command triggers, reducing to linear complexity
- Improves run time on sequential(200) from 1.8s to 0.14s
2025-03-17 21:26:26 -07:00
Nuno Campos
ce1077da40
Speed up task triggers check
...
- Using a sentinel value is faster than raising-catching an exception
2025-03-17 21:04:05 -07:00
Nuno Campos
969958695a
Add time when running directly
2025-03-17 20:59:10 -07:00
Nuno Campos
dd16ae4ba5
When using global resume value, ensure subgraphs consume it
...
- Previously the global resume value was passed to subgraphs without being consumed
- This would result in two parallel subgraph calls being able to use the same resume value
- Note this behavior can't be implemented over the wire, that will be fixed in future PR
2025-03-17 20:31:54 -07:00
Nuno Campos
eae1faa656
Fix
2025-03-17 20:12:33 -07:00
Nuno Campos
1976d6584c
Lint
2025-03-17 20:00:33 -07:00
Nuno Campos
54e18445fc
Fix concurrency issue in PregelScratchpad.consume_null_resume
...
- Need to use a single operation to check if present and remove item from list
- This doesn't fix the separate issue that parallel tasks claiming a single interrupt value have somewhat undefined behavior (in the sense that they will race to be the first to take it). That will be fixed in a future PR
2025-03-17 19:53:03 -07:00
Nuno Campos
bad4d17c34
Remove 'check size' ci job
2025-03-14 21:54:01 -07:00
Nuno Campos
1bb0037450
langgraph: stream_mode=messages should not emit input or state messages
...
- any messages seen in inputs in on_chain_start should not be emitted
2025-02-25 19:00:33 -08:00
Nuno Campos
69ad42cac5
Add CONFIG_KEY_RUNNER_SUBMIT
2025-02-17 17:33:38 -08:00
Nuno Campos
b5c659bc9f
Resolve
2025-02-17 17:12:06 -08:00
Nuno Campos
4623f7b5da
Fix
2025-02-17 17:09:31 -08:00
Nuno Campos
d03ead2f43
Fix path in assertion
2025-02-17 11:47:38 -08:00
Nuno Campos
5a8624fdfd
cli: Add support for dependencies in parent directories
...
- Now supporting local dependencies in directories that are not contained in the docker context (ie. outside the folder containing langgraph.json)
- This is achieved by passing each parent directorty as an additional context to docker build
- This makes it a lot easier to build projects contained in monorepos where you need to include some sibling/parent folder as a dependency
- Also include additional comments in the generated dockerfile to delimit each section
2025-02-17 11:43:55 -08:00
Nuno Campos
9786be1ff7
Update requirement
2025-02-14 19:01:50 -08:00
Nuno Campos
62f004fd28
Lint
2025-02-14 18:42:40 -08:00
Nuno Campos
d4b22ac1d4
Fix postgres tests
2025-02-14 18:40:30 -08:00
Nuno Campos
0415c02b40
Fix sqlite tests
2025-02-14 18:34:06 -08:00
Nuno Campos
e8665f84e7
Update
2025-02-14 18:31:03 -08:00
Nuno Campos
8ff5e79e70
Lint
2025-02-14 18:27:49 -08:00
Nuno Campos
7f4822931e
Update tests
2025-02-14 18:24:48 -08:00
Nuno Campos
b2213e523e
Add get_store function
2025-01-20 16:03:27 -08:00
Nuno Campos and GitHub
c865e8c070
Update README.md
2025-01-02 10:01:35 +00:00
Nuno Campos and GitHub
759a712f57
Merge pull request #2502 from langchain-ai/vb/fix-annotation
...
langgraph: fix issue w/ type annotations in tools_condition
2024-12-04 20:47:21 -05:00
Nuno Campos and GitHub
73e3f5a5b0
Merge pull request #2517 from langchain-ai/eugene/how_to_use_tempalte
...
docs: Add template quickstart
2024-12-04 20:37:04 -05:00
Nuno Campos and GitHub
f32cf5e984
Merge pull request #2642 from langchain-ai/nc/4dec/fix-stream-params
...
sdk-py: Handle stream(params=)
2024-12-04 20:26:59 -05:00
Nuno Campos and GitHub
b5a9e9da55
Merge pull request #2635 from langchain-ai/vb/add-graph-command-docs
...
docs: add Command docs
2024-12-04 20:14:35 -05:00
Nuno Campos and GitHub
574ffb02fc
Merge pull request #2639 from langchain-ai/nc/4dec/speed-up-tests
...
Speed up tests
2024-12-04 18:37:03 -05:00
Nuno Campos and GitHub
dcc2617396
Merge pull request #2638 from langchain-ai/nc/4dec/command
...
lib: Merge GraphCommand and Command
2024-12-04 18:26:11 -05:00
Nuno Campos and GitHub
78e6b36b1a
Merge pull request #2636 from langchain-ai/nc/4dec/interrupt-loop
...
lib: Add support for multiple interrupts per node
2024-12-04 17:58:26 -05:00
Nuno Campos and GitHub
9ab5fbc0f8
Merge pull request #2627 from langchain-ai/nc/4dec/state-ensure-config
...
lib: Call ensure_config in state crud methods
2024-12-04 11:53:03 -05:00
Nuno Campos and GitHub
584d9271ce
Merge pull request #2614 from langchain-ai/nc/3dec/handle-command
...
Handle Command returned from node (in addition to GraphCommand)
2024-12-03 19:05:05 -05:00
Nuno Campos and GitHub
86407aa6e8
Merge pull request #2071 from langchain-ai/brace/doc-nits
...
fix(docs): Small nits & typo fixes
2024-12-03 16:38:36 -05:00
Nuno Campos and GitHub
75cccc4fc4
Merge pull request #2589 from stneng/main
...
fix: get correct reducer when type has multiple metadata.
2024-12-03 16:23:33 -05:00
Nuno Campos and GitHub
dd010e9230
Merge pull request #2593 from langchain-ai/nc/2dec/sdk-sse
...
sdk-py: Fix SSE parsing to split lines only \n \r , remove httpx-sse, fix missing decoder flush
2024-12-03 16:23:11 -05:00
Nuno Campos and GitHub
2d87195b59
Merge pull request #2611 from langchain-ai/vb/remote-graph-kwargs
...
langgraph: allow passing kwargs to SDK methods in RemoteGraph's invoke/stream
2024-12-03 16:21:09 -05:00
Nuno Campos and GitHub
64b99c187a
Merge pull request #2544 from langchain-ai/brace/type-interrupts-py
...
fix(sdk-py): Add typing for interrupts
2024-12-02 20:52:19 -05:00
Nuno Campos and GitHub
afa37d2059
Merge pull request #2552 from langchain-ai/vb/remove-assertion
...
langgraph: relax graph validation to handle nodes without return typehints
2024-12-02 20:51:50 -05:00
Nuno Campos and GitHub
d70b659adb
Merge pull request #2430 from langchain-ai/nc/15nov/command-subgraph
...
Handle interrupt/resume for subgraphs
2024-12-02 20:45:40 -05:00
Nuno Campos
4576a259dd
sdk-py 0.1.39
2024-11-27 17:32:07 -08:00
Nuno Campos
53ec7c41b2
Revert "sdk-py: Fix SSE parsing to split lines only \n \r \r\n per SSE spec"
...
This reverts commit dc09b13400 .
2024-11-27 17:31:21 -08:00
Nuno Campos
7866bd2718
lib: find_subgraph doesn't need to look in both func and afunc
...
- if they both exist they're expected to share the same implementation, so looking in both is redundant
2024-11-16 16:57:32 -08:00
Nuno Campos
84ef939bf4
sdk-js 0.0.24
2024-11-14 18:17:22 -08:00
Nuno Campos
bdc22ea127
sdk-js: Accept command when creating run
2024-11-14 18:17:04 -08:00
Nuno Campos
4cc6d789ed
Fix stream_mode=messages used together with subgraphs=True
2024-10-30 19:35:28 -07:00
Nuno Campos
05f008cbfb
Lint
2024-10-23 20:30:32 -07:00
Nuno Campos
a8ae2a52a3
Lint
2024-10-23 20:27:18 -07:00
Nuno Campos
aa245a8e71
Fix up
2024-10-23 20:22:04 -07:00
Nuno Campos
7fba675e8a
sdk-py: Add arg to get history for subgraphs
2024-09-29 19:28:52 -07:00
Nuno Campos
47fe321e31
Lint
2024-09-22 12:51:06 -07:00
Nuno Campos
1f347ed48e
perf: Intern string constants
2024-09-22 12:45:47 -07:00
Nuno Campos
d6015e7bf9
Remove runtime value substitution
...
- doesn't work as expected
2024-09-22 12:44:48 -07:00
Nuno Campos
84a45d186c
Fix
2024-09-22 12:42:34 -07:00
Nuno Campos
e76f49c7f0
Fix flaky test
2024-09-22 12:37:24 -07:00
Nuno Campos
74f34db9e4
Fix sync kafka
2024-09-22 12:04:43 -07:00
Nuno Campos
644f14991e
Fix kfka
2024-09-22 12:04:17 -07:00
Nuno Campos
81a9a2f903
Use a different strategy, add test
2024-09-21 18:48:23 -07:00
Nuno Campos
2fccd09585
Fix
2024-09-21 17:52:17 -07:00
Nuno Campos
89bb7fe178
Skip test for now
2024-09-21 17:47:36 -07:00
Nuno Campos
beeb2aa8ba
Detect multiple subgraphs in single node
2024-09-21 17:44:11 -07:00
Nuno Campos
30b631aaff
Rewrite imports
2024-09-21 17:41:05 -07:00
Nuno Campos
d9854b36eb
Move to langgraph.types
2024-09-21 17:37:17 -07:00
Nuno Campos
3cbd70ffc9
Fix docs
2024-09-21 17:30:04 -07:00
Nuno Campos
313e3eed3e
Fix circular import
2024-09-21 17:26:29 -07:00
Nuno Campos
9f8d71c65b
Lint
2024-09-21 17:23:12 -07:00
Nuno Campos
89fb8d506f
Add more comments and docstrings
2024-09-21 17:21:18 -07:00
Nuno Campos and GitHub
e40aabb1c1
Update retry.py
2024-09-18 10:36:40 -07:00
Nuno Campos and GitHub
0bfeb7f4e1
Update types.py
2024-09-18 10:24:28 -07:00
Nuno Campos and GitHub
fd0b52f4ff
Update retry.py
2024-09-18 10:23:52 -07:00
Nuno Campos and Nuno Campos
4793b3f5e1
Use a lock for all operations on sqlite checkpointer
...
- Otherwise when used in multiple subgraphs in parallel separate queries can interfere w each other
2024-09-03 09:20:17 -07:00
Nuno Campos and Nuno Campos
3c5913aa29
Remove pydantic base class from Pregel/PregelNode
2024-09-03 09:20:17 -07:00
Nuno Campos
af666a87fb
sqlite 1.0.2
2024-09-02 17:58:01 -07:00
Nuno Campos
6e9f54e5ae
postgres 1.0.6
2024-09-02 17:57:55 -07:00
Nuno Campos
dd4a15b569
Require latest version of langgraph-checkpoint
2024-09-02 17:57:33 -07:00
Nuno Campos
3b2a237deb
Lint
2024-09-02 17:45:57 -07:00
Nuno Campos
0cc3799298
checkpoint: Implement sync methods in async checkpointers
...
- These are needed when subgraphs are invoked synchronously in nodes
2024-09-02 17:43:34 -07:00
Nuno Campos
ddeb9d7314
Disable test in old versions of py
2024-09-02 17:42:37 -07:00
Nuno Campos
d65d0ec665
test: Ensure that async checkpointers in tests are setup in same event loop as they are used in
...
- This more closely remembers the environment they're used in, so it's what we should be testing
- Remove unnecessary pytest-asyncio dependency, use anyio pytest plugin instead
- Convert remaining async tests using only memory checkpointer to use all existing ones
2024-09-02 17:24:54 -07:00
Nuno Campos and Nuno Campos
8154ab784e
For input checkpoint use filtered input writes in checkpoint metadata
...
- if we use the raw input we can end up saving keys that were actually ignored (because not one of the input keys), which is incosistent
2024-08-30 13:24:41 -07:00
Nuno Campos
03785c7d83
sdk: Add on_completion param
2024-08-24 21:34:35 -07:00