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.
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/PKG-INFO +2 -2
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/config.py +3 -5
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/client.mts +4 -2
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/package.json +2 -2
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/remote_old.py +2 -1
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/api.test.mts +2 -2
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/parser.test.mts +473 -458
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/yarn.lock +424 -495
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/queue.py +35 -14
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/schema.py +1 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/ops.py +54 -47
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/pyproject.toml +2 -2
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/LICENSE +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/README.md +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/__init__.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/http.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/client.new.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/remote_new.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/server_sent_events.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/hooks.mjs +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/parser/parser.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/parser/parser.worker.mjs +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/schema/types.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/schema/types.template.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/compose-postgres.yml +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/.gitignore +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/agent.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/delay.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/error.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/langgraph.json +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/nested.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/package.json +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/weather.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/graphs/yarn.lock +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/js/tests/utils.mts +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/lifespan.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/route.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/server.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/state.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/utils.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_license/middleware.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/__init__.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/checkpoint.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/database.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/queue.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/retry.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/store.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/langgraph_storage/ttl_dict.py +0 -0
- {langgraph_api-0.0.21 → langgraph_api-0.0.23}/logging.json +0 -0
- {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.
|
|
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.
|
|
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
|
-
|
|
86
|
-
|
|
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.
|
|
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": "^
|
|
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
|
});
|