langgraph-api 0.1.17__tar.gz → 0.1.20__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 (107) hide show
  1. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/PKG-INFO +7 -7
  2. langgraph_api-0.1.20/langgraph_api/__init__.py +1 -0
  3. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/ui.py +2 -2
  4. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/auth/langsmith/backend.py +1 -0
  5. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/models/run.py +22 -18
  6. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/thread_ttl.py +1 -1
  7. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/pyproject.toml +12 -12
  8. langgraph_api-0.1.17/langgraph_api/__init__.py +0 -1
  9. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/LICENSE +0 -0
  10. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/README.md +0 -0
  11. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/__init__.py +0 -0
  12. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/assistants.py +0 -0
  13. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/mcp.py +0 -0
  14. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/meta.py +0 -0
  15. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/openapi.py +0 -0
  16. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/runs.py +0 -0
  17. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/store.py +0 -0
  18. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/api/threads.py +0 -0
  19. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/asyncio.py +0 -0
  20. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/auth/__init__.py +0 -0
  21. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/auth/custom.py +0 -0
  22. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/auth/langsmith/__init__.py +0 -0
  23. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/auth/langsmith/client.py +0 -0
  24. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/auth/middleware.py +0 -0
  25. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/auth/noop.py +0 -0
  26. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/auth/studio_user.py +0 -0
  27. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/cli.py +0 -0
  28. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/command.py +0 -0
  29. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/config.py +0 -0
  30. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/cron_scheduler.py +0 -0
  31. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/errors.py +0 -0
  32. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/graph.py +0 -0
  33. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/http.py +0 -0
  34. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/.gitignore +0 -0
  35. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/.prettierrc +0 -0
  36. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/__init__.py +0 -0
  37. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/base.py +0 -0
  38. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/build.mts +0 -0
  39. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/client.http.mts +0 -0
  40. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/client.mts +0 -0
  41. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/errors.py +0 -0
  42. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/global.d.ts +0 -0
  43. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/package.json +0 -0
  44. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/remote.py +0 -0
  45. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/schema.py +0 -0
  46. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/graph.mts +0 -0
  47. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/load.hooks.mjs +0 -0
  48. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/parser/parser.mts +0 -0
  49. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/parser/parser.worker.mjs +0 -0
  50. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/parser/schema/types.mts +0 -0
  51. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/parser/schema/types.template.mts +0 -0
  52. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/preload.mjs +0 -0
  53. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/utils/files.mts +0 -0
  54. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/utils/importMap.mts +0 -0
  55. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  56. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/src/utils/serde.mts +0 -0
  57. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/sse.py +0 -0
  58. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/api.test.mts +0 -0
  59. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/auth.test.mts +0 -0
  60. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/compose-postgres.auth.yml +0 -0
  61. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/compose-postgres.yml +0 -0
  62. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/.gitignore +0 -0
  63. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/agent.css +0 -0
  64. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/agent.mts +0 -0
  65. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/agent.ui.tsx +0 -0
  66. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/agent_simple.mts +0 -0
  67. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/auth.mts +0 -0
  68. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/command.mts +0 -0
  69. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/delay.mts +0 -0
  70. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/dynamic.mts +0 -0
  71. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/error.mts +0 -0
  72. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/http.mts +0 -0
  73. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/langgraph.json +0 -0
  74. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/nested.mts +0 -0
  75. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/package.json +0 -0
  76. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/weather.mts +0 -0
  77. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/graphs/yarn.lock +0 -0
  78. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/parser.test.mts +0 -0
  79. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tests/utils.mts +0 -0
  80. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/tsconfig.json +0 -0
  81. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/ui.py +0 -0
  82. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/js/yarn.lock +0 -0
  83. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/logging.py +0 -0
  84. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/metadata.py +0 -0
  85. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/middleware/__init__.py +0 -0
  86. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/middleware/http_logger.py +0 -0
  87. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/middleware/private_network.py +0 -0
  88. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/models/__init__.py +0 -0
  89. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/patch.py +0 -0
  90. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/queue_entrypoint.py +0 -0
  91. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/route.py +0 -0
  92. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/schema.py +0 -0
  93. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/serde.py +0 -0
  94. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/server.py +0 -0
  95. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/sse.py +0 -0
  96. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/state.py +0 -0
  97. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/stream.py +0 -0
  98. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/tunneling/cloudflare.py +0 -0
  99. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/utils.py +0 -0
  100. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/validation.py +0 -0
  101. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/webhook.py +0 -0
  102. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_api/worker.py +0 -0
  103. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_license/__init__.py +0 -0
  104. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_license/validation.py +0 -0
  105. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/langgraph_runtime/__init__.py +0 -0
  106. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/logging.json +0 -0
  107. {langgraph_api-0.1.17 → langgraph_api-0.1.20}/openapi.json +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langgraph-api
3
- Version: 0.1.17
3
+ Version: 0.1.20
4
4
  Summary:
5
5
  License: Elastic-2.0
6
6
  Author: Nuno Campos
7
7
  Author-email: nuno@langchain.dev
8
- Requires-Python: >=3.11.0,<4.0
8
+ Requires-Python: >=3.11
9
9
  Classifier: License :: Other/Proprietary License
10
10
  Classifier: Programming Language :: Python :: 3
11
11
  Classifier: Programming Language :: Python :: 3.11
@@ -15,11 +15,11 @@ Requires-Dist: cloudpickle (>=3.0.0,<4.0.0)
15
15
  Requires-Dist: cryptography (>=42.0.0,<45.0)
16
16
  Requires-Dist: httpx (>=0.25.0)
17
17
  Requires-Dist: jsonschema-rs (>=0.20.0,<0.30)
18
- Requires-Dist: langchain-core (>=0.2.38)
19
- Requires-Dist: langgraph (>=0.2.56)
20
- Requires-Dist: langgraph-checkpoint (>=2.0.23)
21
- Requires-Dist: langgraph-runtime-inmem (>=0.0.6)
22
- Requires-Dist: langgraph-sdk (>=0.1.63,<0.2.0)
18
+ Requires-Dist: langchain-core (>=0.2.38) ; python_version < "4.0"
19
+ Requires-Dist: langgraph (>=0.2.56) ; python_version < "4.0"
20
+ Requires-Dist: langgraph-checkpoint (>=2.0.23) ; python_version < "4.0"
21
+ Requires-Dist: langgraph-runtime-inmem (>=0.0.7)
22
+ Requires-Dist: langgraph-sdk (>=0.1.63,<0.2.0) ; python_version < "4.0"
23
23
  Requires-Dist: langsmith (>=0.1.63)
24
24
  Requires-Dist: orjson (>=3.9.7)
25
25
  Requires-Dist: pyjwt (>=2.9.0,<3.0.0)
@@ -0,0 +1 @@
1
+ __version__ = "0.1.20"
@@ -60,8 +60,8 @@ async def handle_ui(request: ApiRequest) -> Response:
60
60
  elif ext == ".js":
61
61
  result.append(
62
62
  f'<script src="//{host}/ui/{graph_id}/{basename}" '
63
- f'onload=\'__LGUI_{graph_id}.render({json.dumps(message["name"])}, "{{{{shadowRootId}}}}")\'>'
64
- '</script>'
63
+ f"onload='__LGUI_{graph_id}.render({json.dumps(message['name'])}, \"{{{{shadowRootId}}}}\")'>"
64
+ "</script>"
65
65
  )
66
66
 
67
67
  return Response(content="\n".join(result), headers={"Content-Type": "text/html"})
@@ -33,6 +33,7 @@ class LangsmithAuthBackend(AuthenticationBackend):
33
33
  ("X-Api-Key", conn.headers.get("x-api-key")),
34
34
  ("X-Service-Key", conn.headers.get("x-service-key")),
35
35
  ("Cookie", conn.headers.get("cookie")),
36
+ ("X-User-Id", conn.headers.get("x-user-id")),
36
37
  ]
37
38
  if not any(h[1] for h in headers):
38
39
  raise AuthenticationError("Missing authentication headers")
@@ -181,9 +181,9 @@ def translate_pattern(pat: str) -> re.Pattern[str]:
181
181
 
182
182
 
183
183
  @functools.lru_cache(maxsize=1)
184
- def get_header_patterns() -> (
185
- tuple[list[re.Pattern[str] | None], list[re.Pattern[str] | None]]
186
- ):
184
+ def get_header_patterns() -> tuple[
185
+ list[re.Pattern[str] | None], list[re.Pattern[str] | None]
186
+ ]:
187
187
  from langgraph_api import config
188
188
 
189
189
  if not config.HTTP_CONFIG:
@@ -206,21 +206,8 @@ def get_configurable_headers(headers: dict[str, str]) -> dict[str, str]:
206
206
  configurable = {}
207
207
  include_patterns, exclude_patterns = get_header_patterns()
208
208
  for key, value in headers.items():
209
- if include_patterns and not any(
210
- pattern.match(key) for pattern in include_patterns
211
- ):
212
- continue
213
- if exclude_patterns and any(pattern.match(key) for pattern in exclude_patterns):
214
- continue
215
- if key.startswith("x-"):
216
- if key in (
217
- "x-api-key",
218
- "x-tenant-id",
219
- "x-service-key",
220
- ):
221
- continue
222
- configurable[key] = value
223
- elif key == "langsmith-trace":
209
+ # First handle tracing stuff; not configurable
210
+ if key == "langsmith-trace":
224
211
  configurable[key] = value
225
212
  if baggage := headers.get("baggage"):
226
213
  for item in baggage.split(","):
@@ -231,6 +218,23 @@ def get_configurable_headers(headers: dict[str, str]) -> dict[str, str]:
231
218
  configurable[key] = urllib.parse.unquote(value).split(",")
232
219
  elif key == LANGSMITH_PROJECT:
233
220
  configurable[key] = urllib.parse.unquote(value)
221
+ # Then handle overridable behavior
222
+ if exclude_patterns and any(pattern.match(key) for pattern in exclude_patterns):
223
+ continue
224
+ if include_patterns and any(pattern.match(key) for pattern in include_patterns):
225
+ configurable[key] = value
226
+ continue
227
+
228
+ # Then handle default behavior
229
+ if key.startswith("x-"):
230
+ if key in (
231
+ "x-api-key",
232
+ "x-tenant-id",
233
+ "x-service-key",
234
+ ):
235
+ continue
236
+ configurable[key] = value
237
+
234
238
  elif key == "user-agent":
235
239
  configurable[key] = value
236
240
  return configurable
@@ -21,7 +21,7 @@ async def thread_ttl_sweep_loop():
21
21
  strategy = thread_ttl_config.get("strategy", "delete")
22
22
  if strategy != "delete":
23
23
  raise NotImplementedError(
24
- f"Unrecognized thread deletion strategy: {strategy}." " Expected 'delete'."
24
+ f"Unrecognized thread deletion strategy: {strategy}. Expected 'delete'."
25
25
  )
26
26
  sweep_interval_minutes = thread_ttl_config.get("sweep_interval_minutes", 5)
27
27
  await logger.ainfo(
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langgraph-api"
3
- version = "0.1.17"
3
+ version = "0.1.20"
4
4
  description = ""
5
5
  authors = [
6
6
  "Nuno Campos <nuno@langchain.dev>",
@@ -32,40 +32,40 @@ include = [
32
32
  langgraph-verify-graphs = "langgraph_api.graph:verify_graphs"
33
33
 
34
34
  [tool.poetry.dependencies]
35
- python = ">=3.11.0,<4.0"
35
+ python = ">=3.11"
36
36
  sse-starlette = ">=2.1.0,<2.2.0"
37
37
  starlette = ">=0.38.6"
38
38
  watchfiles = ">=0.13"
39
- langgraph = ">=0.2.56"
40
- langgraph-checkpoint = ">=2.0.23"
39
+ langgraph = { version = ">=0.2.56", python = "<4.0" }
40
+ langgraph-checkpoint = { version = ">=2.0.23", python = "<4.0" }
41
41
  orjson = ">=3.9.7"
42
42
  uvicorn = ">=0.26.0"
43
43
  langsmith = ">=0.1.63"
44
44
  httpx = ">=0.25.0"
45
- langchain-core = ">=0.2.38"
45
+ langchain-core = { version = ">=0.2.38", python = "<4.0" }
46
46
  tenacity = ">=8.0.0"
47
47
  jsonschema-rs = ">=0.20.0,<0.30"
48
48
  structlog = ">=24.1.0,<26"
49
49
  pyjwt = "^2.9.0"
50
50
  cryptography = ">=42.0.0,<45.0"
51
- langgraph-sdk = "^0.1.63"
51
+ langgraph-sdk = { version = "^0.1.63", python = "<4.0" }
52
52
  cloudpickle = "^3.0.0"
53
- langgraph-runtime-inmem = ">=0.0.6"
53
+ langgraph-runtime-inmem = ">=0.0.7"
54
54
 
55
55
  [tool.poetry.group.dev.dependencies]
56
- ruff = "^0.6.2"
56
+ ruff = "^0.11.7"
57
57
  codespell = "^2.2.0"
58
58
  pytest = "^7.4.4"
59
59
  anyio = "^4.4.0"
60
- pytest-watcher = "^0.4.2"
61
- langgraph-cli = "^0.1.72"
60
+ pytest-watcher = { version = "^0.4.2", python = "<4.0" }
61
+ langgraph-cli = { version = "^0.1.72", python = "<4.0" }
62
62
  pytest-repeat = "^0.9.3"
63
63
  pytest-retry = "^1.6.3"
64
64
  pytest-httpserver = "^1.1.0"
65
65
  fastapi = "^0.115.8"
66
- langgraph = ">=0.3.34"
66
+ langgraph = { version = ">=0.3.34", python = "<4.0" }
67
67
  pycryptodome = "^3.22.0"
68
- langgraph-runtime-inmem = { path = "../runtime_inmem", develop = true, python = ">=3.11,<4.0" }
68
+ langgraph-runtime-inmem = { path = "../runtime_inmem", develop = true, python = ">=3.11" }
69
69
  blockbuster = "^1.5.24"
70
70
 
71
71
  [tool.poetry_bumpversion.file."langgraph_api/__init__.py"]
@@ -1 +0,0 @@
1
- __version__ = "0.1.17"
File without changes
File without changes