langgraph-api 0.4.1__tar.gz → 0.4.9__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.4.1 → langgraph_api-0.4.9}/Makefile +3 -3
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/PKG-INFO +2 -2
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/ramp.js +22 -11
- langgraph_api-0.4.9/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/__init__.py +4 -0
- langgraph_api-0.4.9/langgraph_api/api/a2a.py +1128 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/assistants.py +8 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/runs.py +126 -146
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/threads.py +64 -14
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/asyncio.py +2 -1
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/feature_flags.py +1 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/logging.py +5 -2
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/models/run.py +10 -67
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/schema.py +2 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/stream.py +9 -1
- langgraph_api-0.4.9/langgraph_api/utils/headers.py +163 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/openapi.json +244 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/pyproject.toml +1 -1
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/uv.lock +95 -95
- langgraph_api-0.4.1/langgraph_api/__init__.py +0 -1
- langgraph_api-0.4.1/langgraph_api/js/isolate-0x130008000-46649-46649-v8.log +0 -4430
- langgraph_api-0.4.1/langgraph_api/js/isolate-0x138008000-44681-44681-v8.log +0 -4430
- langgraph_api-0.4.1/langgraph_api/js/package-lock.json +0 -3308
- langgraph_api-0.4.1/langgraph_api/utils/headers.py +0 -89
- langgraph_api-0.4.1/langgraph_api/utils.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/.gitignore +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/LICENSE +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/README.md +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/.gitignore +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/Makefile +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/README.md +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/burst.js +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/clean.js +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/graphs.js +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/package.json +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/weather.js +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/constraints.txt +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/forbidden.txt +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/healthcheck.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/mcp.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/command.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/config.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/executor_entrypoint.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/http.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/route.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/server.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/state.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/store.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/thread_ttl.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/logging.json +0 -0
- {langgraph_api-0.4.1 → langgraph_api-0.4.9}/scripts/create_license.py +0 -0
|
@@ -18,11 +18,11 @@ check-base-imports:
|
|
|
18
18
|
|
|
19
19
|
TEST ?= tests/
|
|
20
20
|
AUTH_TEST ?= "tests/integration_tests/test_custom_auth.py"
|
|
21
|
-
LANGGRAPH_HTTP ?= {"disable_mcp": false}
|
|
21
|
+
LANGGRAPH_HTTP ?= {"disable_mcp": false, "disable_a2a": false}
|
|
22
22
|
LANGGRAPH_AES_KEY ?= '1234567890123456'
|
|
23
23
|
|
|
24
24
|
ifeq ($(LANGGRAPH_HTTP),fastapi)
|
|
25
|
-
HTTP_CONFIG := {"app": "./tests/graphs/my_router.py:app", "disable_mcp": false, "mount_prefix": "/my-cool/api"}
|
|
25
|
+
HTTP_CONFIG := {"app": "./tests/graphs/my_router.py:app", "disable_mcp": false, "disable_a2a": false, "mount_prefix": "/my-cool/api"}
|
|
26
26
|
else
|
|
27
27
|
HTTP_CONFIG := $(LANGGRAPH_HTTP)
|
|
28
28
|
endif
|
|
@@ -60,7 +60,7 @@ start:
|
|
|
60
60
|
LANGGRAPH_RUNTIME_EDITION=inmem \
|
|
61
61
|
LANGGRAPH_AES_KEY='$(LANGGRAPH_AES_KEY)' \
|
|
62
62
|
N_JOBS_PER_WORKER=2 \
|
|
63
|
-
LANGSERVE_GRAPHS='{"agent": "./tests/graphs/agent.py:graph", "custom_lifespan": "./tests/graphs/my_router.py:graph", "single_node": "./tests/graphs/single_node.py:graph", "benchmark": "./tests/graphs/benchmark.py:graph", "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph", "agent_interrupt": "./tests/graphs/agent_interrupt.py:graph"}' \
|
|
63
|
+
LANGSERVE_GRAPHS='{"agent": "./tests/graphs/agent.py:graph", "custom_lifespan": "./tests/graphs/my_router.py:graph", "single_node": "./tests/graphs/single_node.py:graph", "benchmark": "./tests/graphs/benchmark.py:graph", "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph", "agent_interrupt": "./tests/graphs/agent_interrupt.py:graph", "message_type_test": "./tests/graphs/message_type_test.py:graph"}' \
|
|
64
64
|
LANGGRAPH_STORE='$(STORE_CONFIG)' \
|
|
65
65
|
LANGGRAPH_CONFIG='{"agent": {"configurable": {"model_name": "openai"}}}' \
|
|
66
66
|
LANGSMITH_LANGGRAPH_API_VARIANT=test \
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.9
|
|
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
|
|
@@ -11,7 +11,7 @@ Requires-Dist: httpx>=0.25.0
|
|
|
11
11
|
Requires-Dist: jsonschema-rs<0.30,>=0.20.0
|
|
12
12
|
Requires-Dist: langchain-core>=0.3.64
|
|
13
13
|
Requires-Dist: langgraph-checkpoint>=2.0.23
|
|
14
|
-
Requires-Dist: langgraph-runtime-inmem<0.
|
|
14
|
+
Requires-Dist: langgraph-runtime-inmem<0.11.0,>=0.10.0
|
|
15
15
|
Requires-Dist: langgraph-sdk>=0.2.0
|
|
16
16
|
Requires-Dist: langgraph>=0.4.0
|
|
17
17
|
Requires-Dist: langsmith>=0.3.45
|
|
@@ -10,6 +10,7 @@ const failedRuns = new Counter('failed_runs');
|
|
|
10
10
|
const timeoutErrors = new Counter('timeout_errors');
|
|
11
11
|
const connectionErrors = new Counter('connection_errors');
|
|
12
12
|
const serverErrors = new Counter('server_errors');
|
|
13
|
+
const missingMessageErrors = new Counter('missing_message_errors');
|
|
13
14
|
const otherErrors = new Counter('other_errors');
|
|
14
15
|
|
|
15
16
|
// URL of your LangGraph server
|
|
@@ -36,6 +37,13 @@ for (let i = 1; i <= LEVELS; i++) {
|
|
|
36
37
|
stages.push({ duration: `${PLATEAU_DURATION}s`, target: LOAD_SIZE * LEVELS});
|
|
37
38
|
stages.push({ duration: '60s', target: 0 }); // Ramp down
|
|
38
39
|
|
|
40
|
+
// These are rough estimates from running in github actions. Actual results should be better so long as load is 1-1 with jobs available.
|
|
41
|
+
const p95_run_duration = {
|
|
42
|
+
'sequential': 18000,
|
|
43
|
+
'parallel': 8500,
|
|
44
|
+
'single': 1500,
|
|
45
|
+
}
|
|
46
|
+
|
|
39
47
|
// Test configuration
|
|
40
48
|
export let options = {
|
|
41
49
|
scenarios: {
|
|
@@ -47,16 +55,16 @@ export let options = {
|
|
|
47
55
|
},
|
|
48
56
|
},
|
|
49
57
|
thresholds: {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
// 'http_req_failed': ['rate<0.05'], // Error rate should be less than 5%
|
|
58
|
+
'run_duration': [`p(95)<${p95_run_duration[MODE]}`],
|
|
59
|
+
'successful_runs': [`count>${(PLATEAU_DURATION / (p95_run_duration[MODE] / 1000)) * LOAD_SIZE * LEVELS * 2}`], // Number of expected successful runs per user worst caseduring plateau * max number of users * 2 cause that feels about right
|
|
60
|
+
'http_req_failed': ['rate<0.01'], // Error rate should be less than 1%
|
|
54
61
|
},
|
|
55
62
|
};
|
|
56
63
|
|
|
57
64
|
// Main test function
|
|
58
65
|
export default function() {
|
|
59
66
|
const startTime = new Date().getTime();
|
|
67
|
+
let response;
|
|
60
68
|
|
|
61
69
|
try {
|
|
62
70
|
// Prepare the request payload
|
|
@@ -91,7 +99,7 @@ export default function() {
|
|
|
91
99
|
}
|
|
92
100
|
|
|
93
101
|
// Make a single request to the wait endpoint
|
|
94
|
-
|
|
102
|
+
response = http.post(url, payload, {
|
|
95
103
|
headers,
|
|
96
104
|
timeout: '120s' // k6 request timeout slightly longer than the server timeout
|
|
97
105
|
});
|
|
@@ -110,9 +118,6 @@ export default function() {
|
|
|
110
118
|
// Record success metrics
|
|
111
119
|
runDuration.add(duration);
|
|
112
120
|
successfulRuns.add(1);
|
|
113
|
-
|
|
114
|
-
// Optional: Log successful run details
|
|
115
|
-
console.log(`Run completed successfully in ${duration/1000}s`);
|
|
116
121
|
} else {
|
|
117
122
|
// Handle failure
|
|
118
123
|
failedRuns.add(1);
|
|
@@ -124,12 +129,15 @@ export default function() {
|
|
|
124
129
|
} else if (response.status === 408 || response.error === 'timeout') {
|
|
125
130
|
timeoutErrors.add(1);
|
|
126
131
|
console.log(`Timeout error: ${response.error}`);
|
|
132
|
+
} else if (response.status === 200 && response?.body?.messages?.length !== expected_length) {
|
|
133
|
+
missingMessageErrors.add(1);
|
|
134
|
+
console.log(response);
|
|
135
|
+
console.log(`Missing message error: Status ${response.status}, ${JSON.stringify(response.body)}`);
|
|
127
136
|
} else {
|
|
128
137
|
otherErrors.add(1);
|
|
129
|
-
console.log(`Other error: Status ${response.status}, ${JSON.stringify(response)}`);
|
|
138
|
+
console.log(`Other error: Status ${response.status}, ${JSON.stringify(response.body)}`);
|
|
130
139
|
}
|
|
131
140
|
}
|
|
132
|
-
|
|
133
141
|
} catch (error) {
|
|
134
142
|
// Handle exceptions (network errors, etc.)
|
|
135
143
|
failedRuns.add(1);
|
|
@@ -142,7 +150,9 @@ export default function() {
|
|
|
142
150
|
console.log(`Connection error: ${error.message}`);
|
|
143
151
|
} else {
|
|
144
152
|
otherErrors.add(1);
|
|
145
|
-
|
|
153
|
+
// Usually we end up with HTML error pages here
|
|
154
|
+
console.log(response);
|
|
155
|
+
console.log(`Unexpected error: ${error.message}, Response Body: ${response?.body}`);
|
|
146
156
|
}
|
|
147
157
|
}
|
|
148
158
|
|
|
@@ -180,6 +190,7 @@ export function handleSummary(data) {
|
|
|
180
190
|
timeout: data.metrics.timeout_errors ? data.metrics.timeout_errors.values.count : 0,
|
|
181
191
|
connection: data.metrics.connection_errors ? data.metrics.connection_errors.values.count : 0,
|
|
182
192
|
server: data.metrics.server_errors ? data.metrics.server_errors.values.count : 0,
|
|
193
|
+
missingMessage: data.metrics.missing_message_errors ? data.metrics.missing_message_errors.values.count : 0,
|
|
183
194
|
other: data.metrics.other_errors ? data.metrics.other_errors.values.count : 0
|
|
184
195
|
}
|
|
185
196
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.9"
|
|
@@ -10,6 +10,7 @@ from starlette.requests import Request
|
|
|
10
10
|
from starlette.responses import HTMLResponse, JSONResponse, Response
|
|
11
11
|
from starlette.routing import BaseRoute, Mount, Route
|
|
12
12
|
|
|
13
|
+
from langgraph_api.api.a2a import a2a_routes
|
|
13
14
|
from langgraph_api.api.assistants import assistants_routes
|
|
14
15
|
from langgraph_api.api.mcp import mcp_routes
|
|
15
16
|
from langgraph_api.api.meta import meta_info, meta_metrics
|
|
@@ -75,6 +76,8 @@ if HTTP_CONFIG:
|
|
|
75
76
|
protected_routes.extend(ui_routes)
|
|
76
77
|
if not HTTP_CONFIG.get("disable_mcp"):
|
|
77
78
|
protected_routes.extend(mcp_routes)
|
|
79
|
+
if not HTTP_CONFIG.get("disable_a2a"):
|
|
80
|
+
protected_routes.extend(a2a_routes)
|
|
78
81
|
else:
|
|
79
82
|
protected_routes.extend(assistants_routes)
|
|
80
83
|
protected_routes.extend(runs_routes)
|
|
@@ -82,6 +85,7 @@ else:
|
|
|
82
85
|
protected_routes.extend(store_routes)
|
|
83
86
|
protected_routes.extend(ui_routes)
|
|
84
87
|
protected_routes.extend(mcp_routes)
|
|
88
|
+
protected_routes.extend(a2a_routes)
|
|
85
89
|
|
|
86
90
|
routes: list[BaseRoute] = []
|
|
87
91
|
user_router = None
|