langgraph-runtime-inmem 0.37.0.dev4__tar.gz → 0.37.0.dev5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/PKG-INFO +1 -1
  2. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/__init__.py +1 -1
  3. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/ops.py +9 -5
  4. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/.gitignore +0 -0
  5. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/Makefile +0 -0
  6. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/README.md +0 -0
  7. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/_persistence.py +0 -0
  8. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/checkpoint.py +0 -0
  9. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/database.py +0 -0
  10. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/encryption.py +0 -0
  11. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/inmem_stream.py +0 -0
  12. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/lifespan.py +0 -0
  13. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/metrics.py +0 -0
  14. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/queue.py +0 -0
  15. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/retry.py +0 -0
  16. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/routes.py +0 -0
  17. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/langgraph_runtime_inmem/store.py +0 -0
  18. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/pyproject.toml +0 -0
  19. {langgraph_runtime_inmem-0.37.0.dev4 → langgraph_runtime_inmem-0.37.0.dev5}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-runtime-inmem
3
- Version: 0.37.0.dev4
3
+ Version: 0.37.0.dev5
4
4
  Summary: Inmem implementation for the LangGraph API server.
5
5
  Author-email: Will Fu-Hinthorn <will@langchain.dev>
6
6
  License: Elastic-2.0
@@ -11,7 +11,7 @@ from langgraph_runtime_inmem import (
11
11
  store,
12
12
  )
13
13
 
14
- __version__ = "0.37.0.dev4"
14
+ __version__ = "0.37.0.dev5"
15
15
  __all__ = [
16
16
  "ops",
17
17
  "database",
@@ -209,7 +209,8 @@ async def _save_thread_status(
209
209
 
210
210
  def _run_stream_mode_matches(event_mode: str, stream_mode: list[str] | None) -> bool:
211
211
  """Return True if a published run-stream event matches the join filter."""
212
- if not stream_mode:
212
+ # A run's error is its outcome, not a selectable mode, so no filter drops it.
213
+ if not stream_mode or event_mode == "error":
213
214
  return True
214
215
  if event_mode in stream_mode:
215
216
  return True
@@ -3178,15 +3179,19 @@ class Runs(Authenticated):
3178
3179
  data=action.encode(),
3179
3180
  reason=reason,
3180
3181
  )
3181
- coros.append(stream_manager.put(run_id, thread_id, control_message))
3182
+ # Cancels by status or assistant have no thread_id; the worker listens on the run's own.
3183
+ coros.append(stream_manager.put(run_id, run["thread_id"], control_message))
3182
3184
 
3183
- queues = stream_manager.get_queues(run_id, thread_id)
3185
+ queues = stream_manager.get_queues(run_id, run["thread_id"])
3184
3186
 
3185
3187
  if run["status"] in ("pending", "running"):
3186
3188
  cancelable_runs.append(run)
3187
3189
  if run["status"] == "pending":
3188
3190
  pending_thread_ids.add(run["thread_id"])
3189
- if queues or action != "rollback":
3191
+ if action == "rollback" and run["status"] == "running":
3192
+ # Its worker finalizes the rollback; staying "running" holds the thread's next run until then.
3193
+ pass
3194
+ elif queues or action != "rollback":
3190
3195
  run["status"] = "interrupted"
3191
3196
  run["cancel_reason"] = reason
3192
3197
  run["updated_at"] = datetime.now(tz=UTC)
@@ -3194,7 +3199,6 @@ class Runs(Authenticated):
3194
3199
  await logger.ainfo(
3195
3200
  "Eagerly deleting pending run with rollback action",
3196
3201
  run_id=str(run_id),
3197
- status=run["status"],
3198
3202
  )
3199
3203
  coros.append(Runs.delete(conn, run_id, thread_id=run["thread_id"]))
3200
3204
  else: