langgraph-api 0.2.128__tar.gz → 0.2.129__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.

Potentially problematic release.


This version of langgraph-api might be problematic. Click here for more details.

Files changed (114) hide show
  1. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/PKG-INFO +1 -1
  2. langgraph_api-0.2.129/langgraph_api/__init__.py +1 -0
  3. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/models/run.py +7 -5
  4. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/server.py +5 -1
  5. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/stream.py +47 -0
  6. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/worker.py +0 -1
  7. langgraph_api-0.2.128/langgraph_api/__init__.py +0 -1
  8. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/.gitignore +0 -0
  9. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/LICENSE +0 -0
  10. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/Makefile +0 -0
  11. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/README.md +0 -0
  12. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/benchmark/.gitignore +0 -0
  13. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/benchmark/Makefile +0 -0
  14. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/benchmark/README.md +0 -0
  15. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/benchmark/burst.js +0 -0
  16. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/benchmark/ramp.js +0 -0
  17. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/benchmark/weather.js +0 -0
  18. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/constraints.txt +0 -0
  19. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/forbidden.txt +0 -0
  20. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/healthcheck.py +0 -0
  21. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/__init__.py +0 -0
  22. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/assistants.py +0 -0
  23. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/mcp.py +0 -0
  24. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/meta.py +0 -0
  25. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/openapi.py +0 -0
  26. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/runs.py +0 -0
  27. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/store.py +0 -0
  28. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/threads.py +0 -0
  29. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/api/ui.py +0 -0
  30. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/asgi_transport.py +0 -0
  31. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/asyncio.py +0 -0
  32. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/auth/__init__.py +0 -0
  33. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/auth/custom.py +0 -0
  34. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/auth/langsmith/__init__.py +0 -0
  35. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/auth/langsmith/backend.py +0 -0
  36. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/auth/langsmith/client.py +0 -0
  37. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/auth/middleware.py +0 -0
  38. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/auth/noop.py +0 -0
  39. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/auth/studio_user.py +0 -0
  40. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/cli.py +0 -0
  41. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/command.py +0 -0
  42. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/config.py +0 -0
  43. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/cron_scheduler.py +0 -0
  44. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/errors.py +0 -0
  45. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/feature_flags.py +0 -0
  46. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/graph.py +0 -0
  47. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/http.py +0 -0
  48. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/http_metrics.py +0 -0
  49. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/.gitignore +0 -0
  50. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/.prettierrc +0 -0
  51. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/__init__.py +0 -0
  52. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/base.py +0 -0
  53. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/build.mts +0 -0
  54. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/client.http.mts +0 -0
  55. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/client.mts +0 -0
  56. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/errors.py +0 -0
  57. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/global.d.ts +0 -0
  58. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/package.json +0 -0
  59. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/remote.py +0 -0
  60. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/schema.py +0 -0
  61. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/src/graph.mts +0 -0
  62. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/src/load.hooks.mjs +0 -0
  63. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/src/preload.mjs +0 -0
  64. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/src/utils/files.mts +0 -0
  65. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/src/utils/importMap.mts +0 -0
  66. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  67. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/src/utils/serde.mts +0 -0
  68. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/sse.py +0 -0
  69. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/traceblock.mts +0 -0
  70. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/tsconfig.json +0 -0
  71. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/ui.py +0 -0
  72. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/js/yarn.lock +0 -0
  73. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/logging.py +0 -0
  74. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/metadata.py +0 -0
  75. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/middleware/__init__.py +0 -0
  76. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/middleware/http_logger.py +0 -0
  77. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/middleware/private_network.py +0 -0
  78. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/middleware/request_id.py +0 -0
  79. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/models/__init__.py +0 -0
  80. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/patch.py +0 -0
  81. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/queue_entrypoint.py +0 -0
  82. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/route.py +0 -0
  83. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/schema.py +0 -0
  84. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/serde.py +0 -0
  85. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/sse.py +0 -0
  86. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/state.py +0 -0
  87. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/store.py +0 -0
  88. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/thread_ttl.py +0 -0
  89. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/traceblock.py +0 -0
  90. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/tunneling/cloudflare.py +0 -0
  91. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/utils/__init__.py +0 -0
  92. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/utils/cache.py +0 -0
  93. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/utils/config.py +0 -0
  94. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/utils/future.py +0 -0
  95. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/utils/headers.py +0 -0
  96. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/utils.py +0 -0
  97. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/validation.py +0 -0
  98. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_api/webhook.py +0 -0
  99. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_license/__init__.py +0 -0
  100. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_license/validation.py +0 -0
  101. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/__init__.py +0 -0
  102. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/checkpoint.py +0 -0
  103. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/database.py +0 -0
  104. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/lifespan.py +0 -0
  105. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/metrics.py +0 -0
  106. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/ops.py +0 -0
  107. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/queue.py +0 -0
  108. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/retry.py +0 -0
  109. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/langgraph_runtime/store.py +0 -0
  110. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/logging.json +0 -0
  111. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/openapi.json +0 -0
  112. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/pyproject.toml +0 -0
  113. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/scripts/create_license.py +0 -0
  114. {langgraph_api-0.2.128 → langgraph_api-0.2.129}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.2.128
3
+ Version: 0.2.129
4
4
  Author-email: Nuno Campos <nuno@langchain.dev>, Will Fu-Hinthorn <will@langchain.dev>
5
5
  License: Elastic-2.0
6
6
  License-File: LICENSE
@@ -0,0 +1 @@
1
+ __version__ = "0.2.129"
@@ -282,6 +282,13 @@ async def create_valid_run(
282
282
  detail="Cannot specify both configurable and context. Prefer setting context alone. Context was introduced in LangGraph 0.6.0 and is the long term planned replacement for configurable.",
283
283
  )
284
284
 
285
+ # Keep config and context in sync for user provided params
286
+ if context:
287
+ configurable = context.copy()
288
+ config["configurable"] = configurable
289
+ else:
290
+ context = configurable.copy()
291
+
285
292
  if checkpoint_id:
286
293
  configurable["checkpoint_id"] = str(checkpoint_id)
287
294
  if checkpoint := payload.get("checkpoint"):
@@ -308,11 +315,6 @@ async def create_valid_run(
308
315
  put_time_start = time.time()
309
316
  if_not_exists = payload.get("if_not_exists", "reject")
310
317
 
311
- # Keep config and context in sync
312
- # Configurable is either A) just internal config or B) internal config + user config (and context is empty). Either way, configurable is the default.
313
- context = {**context, **configurable}
314
- config["configurable"] = context
315
-
316
318
  run_coro = Runs.put(
317
319
  conn,
318
320
  assistant_id,
@@ -71,7 +71,11 @@ middleware.extend(
71
71
  allow_credentials=True,
72
72
  allow_methods=["*"],
73
73
  allow_headers=["*"],
74
- expose_headers=["x-pagination-total", "x-pagination-next"],
74
+ expose_headers=[
75
+ "x-pagination-total",
76
+ "x-pagination-next",
77
+ "content-location",
78
+ ],
75
79
  )
76
80
  if config.CORS_CONFIG is None
77
81
  else Middleware(
@@ -40,6 +40,42 @@ from langgraph_runtime.ops import Runs
40
40
 
41
41
  logger = structlog.stdlib.get_logger(__name__)
42
42
 
43
+
44
+ async def _filter_context_by_schema(
45
+ context: dict[str, Any], context_schema: dict | None
46
+ ) -> dict[str, Any]:
47
+ """Filter context parameters based on the context schema.
48
+
49
+ Args:
50
+ context: The context dictionary to filter
51
+ context_schema: The JSON schema for valid context parameters
52
+
53
+ Returns:
54
+ Filtered context dictionary containing only valid parameters
55
+ """
56
+ if not context_schema or not context:
57
+ return context
58
+
59
+ # Extract valid properties from the schema
60
+ properties = context_schema.get("properties", {})
61
+ if not properties:
62
+ return context
63
+
64
+ # Filter context to only include parameters defined in the schema
65
+ filtered_context = {}
66
+ for key, value in context.items():
67
+ if key in properties:
68
+ filtered_context[key] = value
69
+ else:
70
+ await logger.adebug(
71
+ f"Filtering out context parameter '{key}' not found in context schema",
72
+ context_key=key,
73
+ available_keys=list(properties.keys()),
74
+ )
75
+
76
+ return filtered_context
77
+
78
+
43
79
  AnyStream = AsyncIterator[tuple[str, Any]]
44
80
 
45
81
 
@@ -107,6 +143,17 @@ async def astream_state(
107
143
  checkpointer=None if temporary else Checkpointer(),
108
144
  )
109
145
  )
146
+
147
+ # Filter context parameters based on context schema if available
148
+ if context and USE_RUNTIME_CONTEXT_API and not isinstance(graph, BaseRemotePregel):
149
+ try:
150
+ context_schema = graph.get_context_jsonschema()
151
+ context = await _filter_context_by_schema(context, context_schema)
152
+ except Exception as e:
153
+ await logger.adebug(
154
+ f"Failed to get context schema for filtering: {e}", exc_info=e
155
+ )
156
+
110
157
  input = kwargs.pop("input")
111
158
  if cmd := kwargs.pop("command"):
112
159
  input = map_cmd(cmd)
@@ -54,7 +54,6 @@ async def set_auth_ctx_for_run(
54
54
  user = normalize_user(user)
55
55
  # Reapply normalization to the kwargs
56
56
  run_kwargs["config"]["configurable"]["langgraph_auth_user"] = user
57
- run_kwargs["context"]["langgraph_auth_user"] = user
58
57
  except Exception:
59
58
  user = SimpleUser(user_id) if user_id is not None else None
60
59
  permissions = None
@@ -1 +0,0 @@
1
- __version__ = "0.2.128"
File without changes
File without changes