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.

Files changed (125) hide show
  1. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/Makefile +3 -3
  2. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/PKG-INFO +2 -2
  3. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/ramp.js +22 -11
  4. langgraph_api-0.4.9/langgraph_api/__init__.py +1 -0
  5. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/__init__.py +4 -0
  6. langgraph_api-0.4.9/langgraph_api/api/a2a.py +1128 -0
  7. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/assistants.py +8 -0
  8. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/runs.py +126 -146
  9. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/threads.py +64 -14
  10. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/asyncio.py +2 -1
  11. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/feature_flags.py +1 -0
  12. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/logging.py +5 -2
  13. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/models/run.py +10 -67
  14. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/schema.py +2 -0
  15. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/stream.py +9 -1
  16. langgraph_api-0.4.9/langgraph_api/utils/headers.py +163 -0
  17. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/openapi.json +244 -0
  18. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/pyproject.toml +1 -1
  19. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/uv.lock +95 -95
  20. langgraph_api-0.4.1/langgraph_api/__init__.py +0 -1
  21. langgraph_api-0.4.1/langgraph_api/js/isolate-0x130008000-46649-46649-v8.log +0 -4430
  22. langgraph_api-0.4.1/langgraph_api/js/isolate-0x138008000-44681-44681-v8.log +0 -4430
  23. langgraph_api-0.4.1/langgraph_api/js/package-lock.json +0 -3308
  24. langgraph_api-0.4.1/langgraph_api/utils/headers.py +0 -89
  25. langgraph_api-0.4.1/langgraph_api/utils.py +0 -0
  26. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/.gitignore +0 -0
  27. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/LICENSE +0 -0
  28. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/README.md +0 -0
  29. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/.gitignore +0 -0
  30. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/Makefile +0 -0
  31. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/README.md +0 -0
  32. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/burst.js +0 -0
  33. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/clean.js +0 -0
  34. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/graphs.js +0 -0
  35. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/package.json +0 -0
  36. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/update-revision.js +0 -0
  37. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/benchmark/weather.js +0 -0
  38. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/constraints.txt +0 -0
  39. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/forbidden.txt +0 -0
  40. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/healthcheck.py +0 -0
  41. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/mcp.py +0 -0
  42. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/meta.py +0 -0
  43. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/openapi.py +0 -0
  44. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/store.py +0 -0
  45. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/api/ui.py +0 -0
  46. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/asgi_transport.py +0 -0
  47. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/__init__.py +0 -0
  48. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/custom.py +0 -0
  49. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/langsmith/__init__.py +0 -0
  50. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/langsmith/backend.py +0 -0
  51. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/langsmith/client.py +0 -0
  52. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/middleware.py +0 -0
  53. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/noop.py +0 -0
  54. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/auth/studio_user.py +0 -0
  55. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/cli.py +0 -0
  56. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/command.py +0 -0
  57. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/config.py +0 -0
  58. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/cron_scheduler.py +0 -0
  59. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/errors.py +0 -0
  60. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/executor_entrypoint.py +0 -0
  61. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/graph.py +0 -0
  62. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/http.py +0 -0
  63. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/http_metrics.py +0 -0
  64. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/.gitignore +0 -0
  65. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/.prettierrc +0 -0
  66. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/__init__.py +0 -0
  67. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/base.py +0 -0
  68. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/build.mts +0 -0
  69. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/client.http.mts +0 -0
  70. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/client.mts +0 -0
  71. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/errors.py +0 -0
  72. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/global.d.ts +0 -0
  73. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/package.json +0 -0
  74. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/remote.py +0 -0
  75. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/schema.py +0 -0
  76. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/graph.mts +0 -0
  77. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/load.hooks.mjs +0 -0
  78. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/preload.mjs +0 -0
  79. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/utils/files.mts +0 -0
  80. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/utils/importMap.mts +0 -0
  81. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  82. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/src/utils/serde.mts +0 -0
  83. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/sse.py +0 -0
  84. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/traceblock.mts +0 -0
  85. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/tsconfig.json +0 -0
  86. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/ui.py +0 -0
  87. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/js/yarn.lock +0 -0
  88. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/metadata.py +0 -0
  89. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/middleware/__init__.py +0 -0
  90. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/middleware/http_logger.py +0 -0
  91. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/middleware/private_network.py +0 -0
  92. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/middleware/request_id.py +0 -0
  93. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/models/__init__.py +0 -0
  94. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/patch.py +0 -0
  95. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/queue_entrypoint.py +0 -0
  96. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/route.py +0 -0
  97. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/serde.py +0 -0
  98. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/server.py +0 -0
  99. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/sse.py +0 -0
  100. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/state.py +0 -0
  101. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/store.py +0 -0
  102. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/thread_ttl.py +0 -0
  103. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/traceblock.py +0 -0
  104. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/tunneling/cloudflare.py +0 -0
  105. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/__init__.py +0 -0
  106. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/cache.py +0 -0
  107. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/config.py +0 -0
  108. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/future.py +0 -0
  109. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/utils/uuids.py +0 -0
  110. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/validation.py +0 -0
  111. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/webhook.py +0 -0
  112. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_api/worker.py +0 -0
  113. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_license/__init__.py +0 -0
  114. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_license/validation.py +0 -0
  115. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/__init__.py +0 -0
  116. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/checkpoint.py +0 -0
  117. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/database.py +0 -0
  118. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/lifespan.py +0 -0
  119. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/metrics.py +0 -0
  120. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/ops.py +0 -0
  121. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/queue.py +0 -0
  122. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/retry.py +0 -0
  123. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/langgraph_runtime/store.py +0 -0
  124. {langgraph_api-0.4.1 → langgraph_api-0.4.9}/logging.json +0 -0
  125. {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.1
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.10.0,>=0.9.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
- // These are the first set of goals I'd like to hit. To get the job just working and ramp on main, leaving them off for now.
51
- // 'run_duration': ['p(95)<10000'], // 95% of runs should complete within 10s
52
- // 'successful_runs': ['count>100000'], // At least 100,000 successful runs
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
- const response = http.post(url, payload, {
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
- console.log(`Unexpected error: ${error.message}`);
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