langgraph-api 0.2.42__tar.gz → 0.2.44__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 (92) hide show
  1. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/PKG-INFO +1 -1
  2. langgraph_api-0.2.44/langgraph_api/__init__.py +1 -0
  3. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/config.py +3 -0
  4. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/logging.py +0 -18
  5. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/metadata.py +1 -12
  6. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/stream.py +6 -1
  7. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/worker.py +5 -8
  8. langgraph_api-0.2.42/langgraph_api/__init__.py +0 -1
  9. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/.gitignore +0 -0
  10. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/LICENSE +0 -0
  11. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/Makefile +0 -0
  12. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/README.md +0 -0
  13. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/benchmark/weather.js +0 -0
  14. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/constraints.txt +0 -0
  15. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/forbidden.txt +0 -0
  16. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/healthcheck.py +0 -0
  17. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/__init__.py +0 -0
  18. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/assistants.py +0 -0
  19. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/mcp.py +0 -0
  20. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/meta.py +0 -0
  21. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/openapi.py +0 -0
  22. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/runs.py +0 -0
  23. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/store.py +0 -0
  24. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/threads.py +0 -0
  25. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/api/ui.py +0 -0
  26. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/asgi_transport.py +0 -0
  27. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/asyncio.py +0 -0
  28. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/auth/__init__.py +0 -0
  29. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/auth/custom.py +0 -0
  30. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/auth/langsmith/__init__.py +0 -0
  31. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/auth/langsmith/backend.py +0 -0
  32. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/auth/langsmith/client.py +0 -0
  33. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/auth/middleware.py +0 -0
  34. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/auth/noop.py +0 -0
  35. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/auth/studio_user.py +0 -0
  36. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/cli.py +0 -0
  37. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/command.py +0 -0
  38. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/cron_scheduler.py +0 -0
  39. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/errors.py +0 -0
  40. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/graph.py +0 -0
  41. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/http.py +0 -0
  42. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/.gitignore +0 -0
  43. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/.prettierrc +0 -0
  44. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/__init__.py +0 -0
  45. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/base.py +0 -0
  46. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/build.mts +0 -0
  47. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/client.http.mts +0 -0
  48. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/client.mts +0 -0
  49. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/errors.py +0 -0
  50. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/global.d.ts +0 -0
  51. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/package.json +0 -0
  52. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/remote.py +0 -0
  53. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/schema.py +0 -0
  54. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/src/graph.mts +0 -0
  55. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/src/load.hooks.mjs +0 -0
  56. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/src/preload.mjs +0 -0
  57. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/src/utils/files.mts +0 -0
  58. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/src/utils/importMap.mts +0 -0
  59. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  60. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/src/utils/serde.mts +0 -0
  61. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/sse.py +0 -0
  62. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/tsconfig.json +0 -0
  63. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/ui.py +0 -0
  64. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/js/yarn.lock +0 -0
  65. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/middleware/__init__.py +0 -0
  66. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/middleware/http_logger.py +0 -0
  67. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/middleware/private_network.py +0 -0
  68. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/middleware/request_id.py +0 -0
  69. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/models/__init__.py +0 -0
  70. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/models/run.py +0 -0
  71. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/patch.py +0 -0
  72. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/queue_entrypoint.py +0 -0
  73. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/route.py +0 -0
  74. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/schema.py +0 -0
  75. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/serde.py +0 -0
  76. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/server.py +0 -0
  77. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/sse.py +0 -0
  78. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/state.py +0 -0
  79. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/store.py +0 -0
  80. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/thread_ttl.py +0 -0
  81. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/tunneling/cloudflare.py +0 -0
  82. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/utils.py +0 -0
  83. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/validation.py +0 -0
  84. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_api/webhook.py +0 -0
  85. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_license/__init__.py +0 -0
  86. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_license/validation.py +0 -0
  87. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/langgraph_runtime/__init__.py +0 -0
  88. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/logging.json +0 -0
  89. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/openapi.json +0 -0
  90. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/pyproject.toml +0 -0
  91. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/scripts/create_license.py +0 -0
  92. {langgraph_api-0.2.42 → langgraph_api-0.2.44}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.2.42
3
+ Version: 0.2.44
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.44"
@@ -241,6 +241,9 @@ BG_JOB_ISOLATED_LOOPS = env("BG_JOB_ISOLATED_LOOPS", cast=bool, default=False)
241
241
  BG_JOB_SHUTDOWN_GRACE_PERIOD_SECS = env(
242
242
  "BG_JOB_SHUTDOWN_GRACE_PERIOD_SECS", cast=int, default=3600
243
243
  )
244
+ MAX_STREAM_CHUNK_SIZE_BYTES = env(
245
+ "MAX_STREAM_CHUNK_SIZE_BYTES", cast=int, default=1024 * 1024 * 128
246
+ )
244
247
 
245
248
 
246
249
  def _parse_thread_ttl(value: str | None) -> ThreadTTLConfig | None:
@@ -81,23 +81,6 @@ class JSONRenderer:
81
81
  LEVELS = logging.getLevelNamesMapping()
82
82
 
83
83
 
84
- class TapForMetadata:
85
- def __call__(
86
- self, logger: logging.Logger, method_name: str, event_dict: EventDict
87
- ) -> str:
88
- """
89
- Tap WARN and above logs for metadata. Exclude user loggers.
90
- """
91
- if (
92
- event_dict["logger"].startswith("langgraph")
93
- and LEVELS[event_dict["level"].upper()] > LEVELS["INFO"]
94
- ):
95
- from langgraph_api.metadata import append_log
96
-
97
- append_log(event_dict.copy())
98
- return event_dict
99
-
100
-
101
84
  # shared config, for both logging and structlog
102
85
 
103
86
  shared_processors = [
@@ -136,7 +119,6 @@ class Formatter(structlog.stdlib.ProcessorFormatter):
136
119
  super().__init__(
137
120
  processors=[
138
121
  structlog.stdlib.ProcessorFormatter.remove_processors_meta,
139
- TapForMetadata(),
140
122
  renderer,
141
123
  ],
142
124
  foreign_pre_chain=shared_processors,
@@ -35,7 +35,6 @@ else:
35
35
  PLAN = "enterprise" if plus_features_enabled() else "developer"
36
36
  USER_API_URL = os.getenv("LANGGRAPH_API_URL", None)
37
37
 
38
- LOGS: list[dict] = []
39
38
  RUN_COUNTER = 0
40
39
  NODE_COUNTER = 0
41
40
  FROM_TIMESTAMP = datetime.now(UTC).isoformat()
@@ -59,14 +58,6 @@ def incr_nodes(_, *, incr: int = 1) -> None:
59
58
  NODE_COUNTER += incr
60
59
 
61
60
 
62
- def append_log(log: dict) -> None:
63
- if not LANGGRAPH_CLOUD_LICENSE_KEY and not LANGSMITH_API_KEY:
64
- return
65
-
66
- global LOGS
67
- LOGS.append(log)
68
-
69
-
70
61
  async def metadata_loop() -> None:
71
62
  try:
72
63
  from langgraph_api import __version__
@@ -91,8 +82,6 @@ async def metadata_loop() -> None:
91
82
  to_timestamp = datetime.now(UTC).isoformat()
92
83
  nodes = NODE_COUNTER
93
84
  runs = RUN_COUNTER
94
- logs = LOGS.copy()
95
- LOGS.clear()
96
85
  RUN_COUNTER = 0
97
86
  NODE_COUNTER = 0
98
87
  FROM_TIMESTAMP = to_timestamp
@@ -123,7 +112,7 @@ async def metadata_loop() -> None:
123
112
  "langgraph.platform.runs": runs,
124
113
  "langgraph.platform.nodes": nodes,
125
114
  },
126
- "logs": logs,
115
+ "logs": [],
127
116
  }
128
117
  try:
129
118
  await http_request(
@@ -207,11 +207,16 @@ async def astream_state(
207
207
  elif "events" in stream_mode:
208
208
  yield "events", event
209
209
  else:
210
+ output_keys = kwargs.pop("output_keys", graph.output_channels)
210
211
  async with (
211
212
  stack,
212
213
  aclosing(
213
214
  graph.astream(
214
- input, config, stream_mode=list(stream_modes_set), **kwargs
215
+ input,
216
+ config,
217
+ stream_mode=list(stream_modes_set),
218
+ output_keys=output_keys,
219
+ **kwargs,
215
220
  )
216
221
  ) as stream,
217
222
  ):
@@ -90,11 +90,11 @@ async def worker(
90
90
  if request_created_at is not None
91
91
  else None
92
92
  )
93
-
94
93
  async with (
95
94
  connect() as conn,
96
95
  set_auth_ctx_for_run(run["kwargs"]),
97
96
  Runs.enter(run_id, main_loop) as done,
97
+ AsyncExitStack() as exit_stack,
98
98
  ):
99
99
  temporary = run["kwargs"].get("temporary", False)
100
100
  resumable = run["kwargs"].get("resumable", False)
@@ -156,12 +156,10 @@ async def worker(
156
156
 
157
157
  raise RuntimeError(error_message)
158
158
  if temporary:
159
- stream = astream_state(
160
- AsyncExitStack(), conn, cast(Run, run), attempt, done
161
- )
159
+ stream = astream_state(exit_stack, conn, cast(Run, run), attempt, done)
162
160
  else:
163
161
  stream = astream_state(
164
- AsyncExitStack(),
162
+ exit_stack,
165
163
  conn,
166
164
  cast(Run, run),
167
165
  attempt,
@@ -216,6 +214,8 @@ async def worker(
216
214
  run_ended_at_dt = datetime.now(UTC)
217
215
  run_ended_at = run_ended_at_dt.isoformat()
218
216
  try:
217
+ # Need to close the pipeline to re-use the connection
218
+ await exit_stack.aclose()
219
219
  await Runs.delete(conn, run_id, thread_id=run["thread_id"])
220
220
  await logger.ainfo(
221
221
  "Background run rolled back",
@@ -240,9 +240,6 @@ async def worker(
240
240
  run_created_at=run_created_at,
241
241
  exc=str(e),
242
242
  )
243
- # We need to clean up the transaction early if we want to
244
- # update the thread status with the same connection
245
- await exit.aclose()
246
243
  except HTTPException as e:
247
244
  if e.status_code == 404:
248
245
  await logger.ainfo(
@@ -1 +0,0 @@
1
- __version__ = "0.2.42"
File without changes
File without changes
File without changes
File without changes