langgraph-api 0.0.21__tar.gz → 0.0.23__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 (95) hide show
  1. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/PKG-INFO +2 -2
  2. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/config.py +3 -5
  3. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/client.mts +4 -2
  4. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/package.json +2 -2
  5. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/remote_old.py +2 -1
  6. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/api.test.mts +2 -2
  7. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/parser.test.mts +473 -458
  8. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/yarn.lock +424 -495
  9. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/queue.py +35 -14
  10. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/schema.py +1 -0
  11. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/ops.py +54 -47
  12. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/pyproject.toml +2 -2
  13. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/LICENSE +0 -0
  14. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/README.md +0 -0
  15. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/__init__.py +0 -0
  16. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/__init__.py +0 -0
  17. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/assistants.py +0 -0
  18. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/meta.py +0 -0
  19. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/openapi.py +0 -0
  20. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/runs.py +0 -0
  21. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/store.py +0 -0
  22. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/threads.py +0 -0
  23. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/asyncio.py +0 -0
  24. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/__init__.py +0 -0
  25. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/custom.py +0 -0
  26. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/langsmith/__init__.py +0 -0
  27. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/langsmith/backend.py +0 -0
  28. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/langsmith/client.py +0 -0
  29. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/middleware.py +0 -0
  30. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/noop.py +0 -0
  31. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/studio_user.py +0 -0
  32. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/cli.py +0 -0
  33. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/cron_scheduler.py +0 -0
  34. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/errors.py +0 -0
  35. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/graph.py +0 -0
  36. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/http.py +0 -0
  37. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/.gitignore +0 -0
  38. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/base.py +0 -0
  39. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/build.mts +0 -0
  40. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/client.new.mts +0 -0
  41. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/errors.py +0 -0
  42. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/global.d.ts +0 -0
  43. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/remote.py +0 -0
  44. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/remote_new.py +0 -0
  45. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/schema.py +0 -0
  46. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/server_sent_events.py +0 -0
  47. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/graph.mts +0 -0
  48. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/hooks.mjs +0 -0
  49. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/parser/parser.mts +0 -0
  50. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/parser/parser.worker.mjs +0 -0
  51. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/schema/types.mts +0 -0
  52. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/schema/types.template.mts +0 -0
  53. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/utils/importMap.mts +0 -0
  54. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  55. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/utils/serde.mts +0 -0
  56. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/compose-postgres.yml +0 -0
  57. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/.gitignore +0 -0
  58. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/agent.mts +0 -0
  59. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/delay.mts +0 -0
  60. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/error.mts +0 -0
  61. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/langgraph.json +0 -0
  62. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/nested.mts +0 -0
  63. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/package.json +0 -0
  64. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/weather.mts +0 -0
  65. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/yarn.lock +0 -0
  66. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/utils.mts +0 -0
  67. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/lifespan.py +0 -0
  68. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/logging.py +0 -0
  69. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/metadata.py +0 -0
  70. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/middleware/__init__.py +0 -0
  71. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/middleware/http_logger.py +0 -0
  72. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/middleware/private_network.py +0 -0
  73. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/models/__init__.py +0 -0
  74. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/models/run.py +0 -0
  75. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/patch.py +0 -0
  76. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/route.py +0 -0
  77. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/serde.py +0 -0
  78. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/server.py +0 -0
  79. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/sse.py +0 -0
  80. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/state.py +0 -0
  81. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/stream.py +0 -0
  82. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/utils.py +0 -0
  83. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/validation.py +0 -0
  84. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_license/__init__.py +0 -0
  85. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_license/middleware.py +0 -0
  86. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_license/validation.py +0 -0
  87. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/__init__.py +0 -0
  88. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/checkpoint.py +0 -0
  89. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/database.py +0 -0
  90. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/queue.py +0 -0
  91. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/retry.py +0 -0
  92. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/store.py +0 -0
  93. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/ttl_dict.py +0 -0
  94. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/logging.json +0 -0
  95. {langgraph_api-0.0.21 → langgraph_api-0.0.23}/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langgraph-api
3
- Version: 0.0.21
3
+ Version: 0.0.23
4
4
  Summary:
5
5
  License: Elastic-2.0
6
6
  Author: Nuno Campos
@@ -17,7 +17,7 @@ Requires-Dist: langchain-core (>=0.2.38,<0.4.0)
17
17
  Requires-Dist: langgraph (>=0.2.56,<0.3.0)
18
18
  Requires-Dist: langgraph-checkpoint (>=2.0.7,<3.0)
19
19
  Requires-Dist: langgraph-sdk (>=0.1.51,<0.2.0)
20
- Requires-Dist: langsmith (>=0.1.63,<0.3.0)
20
+ Requires-Dist: langsmith (>=0.1.63,<0.4.0)
21
21
  Requires-Dist: orjson (>=3.10.1)
22
22
  Requires-Dist: pyjwt (>=2.9.0,<3.0.0)
23
23
  Requires-Dist: sse-starlette (>=2.1.0,<2.2.0)
@@ -26,6 +26,7 @@ MIGRATIONS_PATH = env("MIGRATIONS_PATH", cast=str, default="/storage/migrations"
26
26
 
27
27
  # redis
28
28
  REDIS_URI = env("REDIS_URI", cast=str)
29
+ REDIS_CLUSTER = env("REDIS_CLUSTER", cast=bool, default=False)
29
30
  REDIS_MAX_CONNECTIONS = env("REDIS_MAX_CONNECTIONS", cast=int, default=500)
30
31
 
31
32
  # server
@@ -82,11 +83,8 @@ if CORS_CONFIG is not None and CORS_ALLOW_ORIGINS != "*":
82
83
 
83
84
  # queue
84
85
 
85
- BG_JOB_NO_DELAY = env("BG_JOB_NO_DELAY", cast=bool, default=None)
86
- BG_JOB_DELAY = env("BG_JOB_DELAY", cast=float, default=0.5)
87
- if BG_JOB_NO_DELAY is True:
88
- BG_JOB_DELAY = 0
89
-
86
+ BG_JOB_HEARTBEAT = 120 # seconds
87
+ BG_JOB_INTERVAL = 30 # seconds
90
88
 
91
89
  N_JOBS_PER_WORKER = env("N_JOBS_PER_WORKER", cast=int, default=10)
92
90
  BG_JOB_TIMEOUT_SECS = env("BG_JOB_TIMEOUT_SECS", cast=float, default=3600)
@@ -205,7 +205,7 @@ const handleStream = <T extends z.ZodType<any>>(
205
205
  try {
206
206
  for await (const data of handler({ graph_id: graphId, ...body })) {
207
207
  await stream.writeSSE({
208
- data: serialiseAsDict(data),
208
+ data: Buffer.from(serialiseAsDict(data)).toString("base64"),
209
209
  event: name,
210
210
  });
211
211
  }
@@ -216,7 +216,9 @@ const handleStream = <T extends z.ZodType<any>>(
216
216
 
217
217
  await stream.writeSSE({
218
218
  event: "error",
219
- data: serialiseAsDict(serializeError(error)),
219
+ data: Buffer.from(serialiseAsDict(serializeError(error))).toString(
220
+ "base64"
221
+ ),
220
222
  });
221
223
  }
222
224
  });
@@ -19,7 +19,7 @@
19
19
  "p-retry": "^6.2.0",
20
20
  "tsx": "^4.19.1",
21
21
  "typescript": "^5.5.4",
22
- "undici": "^6.19.7",
22
+ "undici": "^6.21.1",
23
23
  "uuid": "^10.0.0",
24
24
  "winston": "^3.15.0",
25
25
  "zeromq": "^6.3.0",
@@ -30,6 +30,6 @@
30
30
  "@types/node": "^22.2.0",
31
31
  "postgres": "^3.4.4",
32
32
  "prettier": "^3.3.3",
33
- "vitest": "^2.0.5"
33
+ "vitest": "^3.0.4"
34
34
  }
35
35
  }
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+ import base64
2
3
  import os
3
4
  import shutil
4
5
  from collections.abc import AsyncIterator
@@ -60,7 +61,7 @@ async def _client_stream(method: str, data: dict[str, Any]):
60
61
  data=orjson.dumps(body),
61
62
  ) as event_source:
62
63
  async for sse in event_source.aiter_sse():
63
- event = orjson.loads(sse["data"])
64
+ event = orjson.loads(base64.b64decode(sse["data"]))
64
65
  if sse["event"] == "error":
65
66
  raise RemoteException(event["error"], event["message"])
66
67
  yield event
@@ -60,7 +60,7 @@ describe("assistants", () => {
60
60
  expect(res).toMatchObject({ graph_id: graphId, config, metadata });
61
61
 
62
62
  await client.assistants.delete(res.assistant_id);
63
- expect(() => client.assistants.get(res.assistant_id)).rejects.toThrow(
63
+ await expect(() => client.assistants.get(res.assistant_id)).rejects.toThrow(
64
64
  "HTTP 404: Not Found"
65
65
  );
66
66
  });
@@ -129,7 +129,7 @@ describe("assistants", () => {
129
129
  });
130
130
 
131
131
  await client.assistants.delete(res.assistant_id);
132
- expect(() => client.assistants.get(res.assistant_id)).rejects.toThrow(
132
+ await expect(() => client.assistants.get(res.assistant_id)).rejects.toThrow(
133
133
  "HTTP 404: Not Found"
134
134
  );
135
135
  });