langgraph-api 0.4.14__tar.gz → 0.4.16__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 (121) hide show
  1. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/PKG-INFO +1 -1
  2. langgraph_api-0.4.16/langgraph_api/__init__.py +1 -0
  3. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/a2a.py +11 -33
  4. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/asyncio.py +8 -3
  5. langgraph_api-0.4.14/langgraph_api/__init__.py +0 -1
  6. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/.gitignore +0 -0
  7. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/LICENSE +0 -0
  8. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/Makefile +0 -0
  9. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/README.md +0 -0
  10. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/.gitignore +0 -0
  11. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/Makefile +0 -0
  12. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/README.md +0 -0
  13. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/burst.js +0 -0
  14. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/clean.js +0 -0
  15. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/graphs.js +0 -0
  16. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/package.json +0 -0
  17. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/ramp.js +0 -0
  18. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/update-revision.js +0 -0
  19. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/benchmark/weather.js +0 -0
  20. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/constraints.txt +0 -0
  21. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/forbidden.txt +0 -0
  22. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/healthcheck.py +0 -0
  23. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/__init__.py +0 -0
  24. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/assistants.py +0 -0
  25. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/mcp.py +0 -0
  26. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/meta.py +0 -0
  27. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/openapi.py +0 -0
  28. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/runs.py +0 -0
  29. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/store.py +0 -0
  30. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/threads.py +0 -0
  31. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/api/ui.py +0 -0
  32. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/asgi_transport.py +0 -0
  33. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/auth/__init__.py +0 -0
  34. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/auth/custom.py +0 -0
  35. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/auth/langsmith/__init__.py +0 -0
  36. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/auth/langsmith/backend.py +0 -0
  37. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/auth/langsmith/client.py +0 -0
  38. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/auth/middleware.py +0 -0
  39. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/auth/noop.py +0 -0
  40. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/auth/studio_user.py +0 -0
  41. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/cli.py +0 -0
  42. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/command.py +0 -0
  43. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/config.py +0 -0
  44. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/cron_scheduler.py +0 -0
  45. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/errors.py +0 -0
  46. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/executor_entrypoint.py +0 -0
  47. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/feature_flags.py +0 -0
  48. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/graph.py +0 -0
  49. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/http.py +0 -0
  50. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/http_metrics.py +0 -0
  51. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/.gitignore +0 -0
  52. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/.prettierrc +0 -0
  53. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/__init__.py +0 -0
  54. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/base.py +0 -0
  55. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/build.mts +0 -0
  56. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/client.http.mts +0 -0
  57. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/client.mts +0 -0
  58. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/errors.py +0 -0
  59. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/global.d.ts +0 -0
  60. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/package.json +0 -0
  61. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/remote.py +0 -0
  62. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/schema.py +0 -0
  63. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/src/graph.mts +0 -0
  64. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/src/load.hooks.mjs +0 -0
  65. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/src/preload.mjs +0 -0
  66. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/src/utils/files.mts +0 -0
  67. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/src/utils/importMap.mts +0 -0
  68. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  69. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/src/utils/serde.mts +0 -0
  70. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/sse.py +0 -0
  71. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/traceblock.mts +0 -0
  72. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/tsconfig.json +0 -0
  73. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/ui.py +0 -0
  74. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/js/yarn.lock +0 -0
  75. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/logging.py +0 -0
  76. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/metadata.py +0 -0
  77. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/middleware/__init__.py +0 -0
  78. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/middleware/http_logger.py +0 -0
  79. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/middleware/private_network.py +0 -0
  80. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/middleware/request_id.py +0 -0
  81. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/models/__init__.py +0 -0
  82. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/models/run.py +0 -0
  83. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/patch.py +0 -0
  84. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/queue_entrypoint.py +0 -0
  85. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/route.py +0 -0
  86. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/schema.py +0 -0
  87. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/serde.py +0 -0
  88. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/server.py +0 -0
  89. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/sse.py +0 -0
  90. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/state.py +0 -0
  91. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/store.py +0 -0
  92. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/stream.py +0 -0
  93. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/thread_ttl.py +0 -0
  94. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/traceblock.py +0 -0
  95. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/tunneling/cloudflare.py +0 -0
  96. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/utils/__init__.py +0 -0
  97. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/utils/cache.py +0 -0
  98. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/utils/config.py +0 -0
  99. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/utils/future.py +0 -0
  100. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/utils/headers.py +0 -0
  101. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/utils/retriable_client.py +0 -0
  102. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/utils/uuids.py +0 -0
  103. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/validation.py +0 -0
  104. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/webhook.py +0 -0
  105. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_api/worker.py +0 -0
  106. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_license/__init__.py +0 -0
  107. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_license/validation.py +0 -0
  108. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/__init__.py +0 -0
  109. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/checkpoint.py +0 -0
  110. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/database.py +0 -0
  111. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/lifespan.py +0 -0
  112. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/metrics.py +0 -0
  113. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/ops.py +0 -0
  114. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/queue.py +0 -0
  115. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/retry.py +0 -0
  116. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/langgraph_runtime/store.py +0 -0
  117. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/logging.json +0 -0
  118. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/openapi.json +0 -0
  119. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/pyproject.toml +0 -0
  120. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/scripts/create_license.py +0 -0
  121. {langgraph_api-0.4.14 → langgraph_api-0.4.16}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.4.14
3
+ Version: 0.4.16
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
@@ -0,0 +1 @@
1
+ __version__ = "0.4.16"
@@ -22,6 +22,7 @@ from starlette.responses import JSONResponse, Response
22
22
  from structlog import getLogger
23
23
  from typing_extensions import TypedDict
24
24
 
25
+ from langgraph_api import __version__
25
26
  from langgraph_api.metadata import USER_API_URL
26
27
  from langgraph_api.route import ApiRequest, ApiRoute
27
28
  from langgraph_api.utils.cache import LRUCache
@@ -96,28 +97,6 @@ def _client() -> LangGraphClient:
96
97
  return get_client(url=None)
97
98
 
98
99
 
99
- def _get_version() -> str:
100
- """Get langgraph-api version."""
101
- from langgraph_api import __version__
102
-
103
- return __version__
104
-
105
-
106
- def _generate_task_id() -> str:
107
- """Generate a unique task ID."""
108
- return str(uuid.uuid4())
109
-
110
-
111
- def _generate_context_id() -> str:
112
- """Generate a unique context ID."""
113
- return str(uuid.uuid4())
114
-
115
-
116
- def _generate_timestamp() -> str:
117
- """Generate ISO 8601 timestamp."""
118
- return datetime.now(UTC).isoformat()
119
-
120
-
121
100
  async def _get_assistant(
122
101
  client: LangGraphClient, assistant_id: str, headers: Headers | dict[str, Any] | None
123
102
  ) -> dict[str, Any]:
@@ -469,14 +448,14 @@ def _create_task_response(
469
448
  "text": f"Error executing assistant: {result['__error__']['error']}",
470
449
  }
471
450
  ],
472
- "messageId": _generate_task_id(),
451
+ "messageId": str(uuid.uuid4()),
473
452
  "taskId": task_id,
474
453
  "contextId": context_id,
475
454
  "kind": "message",
476
455
  },
477
456
  }
478
457
  else:
479
- artifact_id = _generate_task_id()
458
+ artifact_id = str(uuid.uuid4())
480
459
  artifacts = [
481
460
  {
482
461
  "artifactId": artifact_id,
@@ -493,7 +472,7 @@ def _create_task_response(
493
472
 
494
473
  base_task["status"] = {
495
474
  "state": "completed",
496
- "timestamp": _generate_timestamp(),
475
+ "timestamp": datetime.now(UTC).isoformat(),
497
476
  }
498
477
  base_task["artifacts"] = artifacts
499
478
 
@@ -749,18 +728,17 @@ async def handle_message_send(
749
728
  }
750
729
 
751
730
  context_id = message.get("contextId")
752
- thread_id = context_id if context_id else None
753
731
 
754
732
  try:
755
- # Creating + joining separately so we can get the run id
756
733
  run = await client.runs.create(
757
- thread_id=thread_id,
734
+ thread_id=context_id,
758
735
  assistant_id=assistant_id,
759
736
  input=input_content,
737
+ if_not_exists="create",
760
738
  headers=request.headers,
761
739
  )
762
740
  except Exception as e:
763
- error_response = _map_runs_create_error_to_rpc(e, assistant_id, thread_id)
741
+ error_response = _map_runs_create_error_to_rpc(e, assistant_id, context_id)
764
742
  if error_response.get("error", {}).get("code") == ERROR_CODE_INTERNAL_ERROR:
765
743
  raise
766
744
  return error_response
@@ -772,7 +750,7 @@ async def handle_message_send(
772
750
  )
773
751
 
774
752
  task_id = run["run_id"]
775
- context_id = thread_id or _generate_context_id()
753
+ context_id = run["thread_id"]
776
754
 
777
755
  return _create_task_response(
778
756
  task_id=task_id,
@@ -884,7 +862,7 @@ async def handle_tasks_get(
884
862
  task_response["status"]["message"] = {
885
863
  "role": "agent",
886
864
  "parts": [{"kind": "text", "text": "Task completed successfully"}],
887
- "messageId": _generate_task_id(),
865
+ "messageId": str(uuid.uuid4()),
888
866
  "taskId": task_id,
889
867
  }
890
868
  elif a2a_state == "failed":
@@ -893,7 +871,7 @@ async def handle_tasks_get(
893
871
  "parts": [
894
872
  {"kind": "text", "text": f"Task failed with status: {lg_status}"}
895
873
  ],
896
- "messageId": _generate_task_id(),
874
+ "messageId": str(uuid.uuid4()),
897
875
  "taskId": task_id,
898
876
  }
899
877
 
@@ -1021,7 +999,7 @@ async def generate_agent_card(request: ApiRequest, assistant_id: str) -> dict[st
1021
999
  "defaultInputModes": ["application/json", "text/plain"],
1022
1000
  "defaultOutputModes": ["application/json", "text/plain"],
1023
1001
  "skills": skills,
1024
- "version": _get_version(),
1002
+ "version": __version__,
1025
1003
  }
1026
1004
 
1027
1005
 
@@ -115,11 +115,16 @@ def create_task(
115
115
 
116
116
 
117
117
  def run_coroutine_threadsafe(
118
- coro: Coroutine[Any, Any, T], ignore_exceptions: tuple[type[Exception], ...] = ()
118
+ coro: Coroutine[Any, Any, T],
119
+ ignore_exceptions: tuple[type[Exception], ...] = (),
120
+ *,
121
+ loop: asyncio.AbstractEventLoop | None = None,
119
122
  ) -> concurrent.futures.Future[T] | concurrent.futures.Future[None]:
120
- if _MAIN_LOOP is None:
123
+ if loop is None:
124
+ loop = _MAIN_LOOP
125
+ if loop is None:
121
126
  raise RuntimeError("No event loop set")
122
- future = asyncio.run_coroutine_threadsafe(coro, _MAIN_LOOP)
127
+ future = asyncio.run_coroutine_threadsafe(coro, loop)
123
128
  future.add_done_callback(partial(_create_task_done_callback, ignore_exceptions))
124
129
  return future
125
130
 
@@ -1 +0,0 @@
1
- __version__ = "0.4.14"
File without changes
File without changes
File without changes
File without changes