langgraph-api 0.2.24__tar.gz → 0.2.25__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 (103) hide show
  1. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/PKG-INFO +1 -1
  2. langgraph_api-0.2.25/langgraph_api/__init__.py +1 -0
  3. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/serde.py +30 -3
  4. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/openapi.json +102 -50
  5. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/pyproject.toml +1 -1
  6. langgraph_api-0.2.24/langgraph_api/__init__.py +0 -1
  7. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/LICENSE +0 -0
  8. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/README.md +0 -0
  9. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/__init__.py +0 -0
  10. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/assistants.py +0 -0
  11. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/mcp.py +0 -0
  12. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/meta.py +0 -0
  13. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/openapi.py +0 -0
  14. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/runs.py +0 -0
  15. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/store.py +0 -0
  16. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/threads.py +0 -0
  17. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/api/ui.py +0 -0
  18. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/asyncio.py +0 -0
  19. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/auth/__init__.py +0 -0
  20. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/auth/custom.py +0 -0
  21. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/auth/langsmith/__init__.py +0 -0
  22. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/auth/langsmith/backend.py +0 -0
  23. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/auth/langsmith/client.py +0 -0
  24. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/auth/middleware.py +0 -0
  25. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/auth/noop.py +0 -0
  26. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/auth/studio_user.py +0 -0
  27. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/cli.py +0 -0
  28. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/command.py +0 -0
  29. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/config.py +0 -0
  30. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/cron_scheduler.py +0 -0
  31. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/errors.py +0 -0
  32. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/graph.py +0 -0
  33. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/http.py +0 -0
  34. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/.gitignore +0 -0
  35. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/.prettierrc +0 -0
  36. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/__init__.py +0 -0
  37. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/base.py +0 -0
  38. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/build.mts +0 -0
  39. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/client.http.mts +0 -0
  40. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/client.mts +0 -0
  41. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/errors.py +0 -0
  42. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/global.d.ts +0 -0
  43. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/package.json +0 -0
  44. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/remote.py +0 -0
  45. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/schema.py +0 -0
  46. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/src/graph.mts +0 -0
  47. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/src/load.hooks.mjs +0 -0
  48. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/src/preload.mjs +0 -0
  49. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/src/utils/files.mts +0 -0
  50. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/src/utils/importMap.mts +0 -0
  51. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  52. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/src/utils/serde.mts +0 -0
  53. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/sse.py +0 -0
  54. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/api.test.mts +0 -0
  55. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/auth.test.mts +0 -0
  56. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/compose-postgres.auth.yml +0 -0
  57. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/compose-postgres.yml +0 -0
  58. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/.gitignore +0 -0
  59. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/agent.css +0 -0
  60. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/agent.mts +0 -0
  61. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/agent.ui.tsx +0 -0
  62. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/agent_simple.mts +0 -0
  63. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/auth.mts +0 -0
  64. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/command.mts +0 -0
  65. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/delay.mts +0 -0
  66. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/dynamic.mts +0 -0
  67. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/error.mts +0 -0
  68. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/http.mts +0 -0
  69. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/langgraph.json +0 -0
  70. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/nested.mts +0 -0
  71. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/package.json +0 -0
  72. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/weather.mts +0 -0
  73. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/graphs/yarn.lock +0 -0
  74. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tests/utils.mts +0 -0
  75. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/tsconfig.json +0 -0
  76. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/ui.py +0 -0
  77. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/js/yarn.lock +0 -0
  78. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/logging.py +0 -0
  79. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/metadata.py +0 -0
  80. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/middleware/__init__.py +0 -0
  81. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/middleware/http_logger.py +0 -0
  82. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/middleware/private_network.py +0 -0
  83. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/middleware/request_id.py +0 -0
  84. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/models/__init__.py +0 -0
  85. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/models/run.py +0 -0
  86. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/patch.py +0 -0
  87. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/queue_entrypoint.py +0 -0
  88. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/route.py +0 -0
  89. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/schema.py +0 -0
  90. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/server.py +0 -0
  91. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/sse.py +0 -0
  92. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/state.py +0 -0
  93. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/stream.py +0 -0
  94. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/thread_ttl.py +0 -0
  95. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/tunneling/cloudflare.py +0 -0
  96. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/utils.py +0 -0
  97. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/validation.py +0 -0
  98. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/webhook.py +0 -0
  99. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_api/worker.py +0 -0
  100. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_license/__init__.py +0 -0
  101. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_license/validation.py +0 -0
  102. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/langgraph_runtime/__init__.py +0 -0
  103. {langgraph_api-0.2.24 → langgraph_api-0.2.25}/logging.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langgraph-api
3
- Version: 0.2.24
3
+ Version: 0.2.25
4
4
  Summary:
5
5
  License: Elastic-2.0
6
6
  Author: Nuno Campos
@@ -0,0 +1 @@
1
+ __version__ = "0.2.25"
@@ -1,7 +1,9 @@
1
1
  import asyncio
2
+ import re
2
3
  import uuid
3
4
  from base64 import b64encode
4
5
  from collections import deque
6
+ from collections.abc import Mapping
5
7
  from datetime import timedelta, timezone
6
8
  from decimal import Decimal
7
9
  from ipaddress import (
@@ -101,11 +103,36 @@ def default(obj):
101
103
 
102
104
  _option = orjson.OPT_SERIALIZE_NUMPY | orjson.OPT_NON_STR_KEYS
103
105
 
106
+ _SURROGATE_RE = re.compile(r"[\ud800-\udfff]")
107
+
108
+
109
+ def _strip_surr(s: str) -> str:
110
+ return s if _SURROGATE_RE.search(s) is None else _SURROGATE_RE.sub("", s)
111
+
112
+
113
+ def _sanitise(o: Any) -> Any:
114
+ if isinstance(o, str):
115
+ return _strip_surr(o)
116
+ if isinstance(o, Mapping):
117
+ return {_sanitise(k): _sanitise(v) for k, v in o.items()}
118
+ if isinstance(o, list | tuple | set):
119
+ ctor = list if isinstance(o, list) else type(o)
120
+ return ctor(_sanitise(x) for x in o)
121
+ return o
122
+
104
123
 
105
124
  def json_dumpb(obj) -> bytes:
106
- return orjson.dumps(obj, default=default, option=_option).replace(
107
- rb"\u0000", b""
108
- ) # null unicode char not allowed in json
125
+ try:
126
+ return orjson.dumps(obj, default=default, option=_option).replace(
127
+ rb"\u0000", b""
128
+ ) # null unicode char not allowed in json
129
+ except TypeError as e:
130
+ if "surrogates not allowed" not in str(e):
131
+ raise
132
+ surrogate_sanitized = _sanitise(obj)
133
+ return orjson.dumps(
134
+ surrogate_sanitized, default=default, option=_option
135
+ ).replace(rb"\u0000", b"")
109
136
 
110
137
 
111
138
  def json_loads(content: bytes | Fragment | dict) -> Any:
@@ -779,56 +779,6 @@
779
779
  }
780
780
  }
781
781
  },
782
- "/threads/state/bulk": {
783
- "post": {
784
- "tags": ["Threads"],
785
- "summary": "Bulk Update Thread State",
786
- "description": "Create a new thread from a batch of state updates.",
787
- "operationId": "bulk_update_thread_state_post",
788
- "requestBody": {
789
- "content": {
790
- "application/json": {
791
- "schema": {
792
- "$ref": "#/components/schemas/ThreadStateBulkUpdate"
793
- }
794
- }
795
- },
796
- "required": true
797
- },
798
- "responses": {
799
- "200": {
800
- "description": "Success",
801
- "content": {
802
- "application/json": {
803
- "schema": {
804
- "$ref": "#/components/schemas/Thread"
805
- }
806
- }
807
- }
808
- },
809
- "409": {
810
- "description": "Conflict",
811
- "content": {
812
- "application/json": {
813
- "schema": {
814
- "$ref": "#/components/schemas/ErrorResponse"
815
- }
816
- }
817
- }
818
- },
819
- "422": {
820
- "description": "Validation Error",
821
- "content": {
822
- "application/json": {
823
- "schema": {
824
- "$ref": "#/components/schemas/ErrorResponse"
825
- }
826
- }
827
- }
828
- }
829
- }
830
- }
831
- },
832
782
  "/threads/{thread_id}/state": {
833
783
  "get": {
834
784
  "tags": ["Threads"],
@@ -847,6 +797,17 @@
847
797
  },
848
798
  "name": "thread_id",
849
799
  "in": "path"
800
+ },
801
+ {
802
+ "description": "Whether to include subgraphs in the response.",
803
+ "required": false,
804
+ "schema": {
805
+ "type": "boolean",
806
+ "title": "Subgraphs",
807
+ "description": "Whether to include subgraphs in the response."
808
+ },
809
+ "name": "subgraphs",
810
+ "in": "query"
850
811
  }
851
812
  ],
852
813
  "responses": {
@@ -925,12 +886,103 @@
925
886
  }
926
887
  }
927
888
  },
889
+ "/threads/{thread_id}/state/{checkpoint_id}": {
890
+ "get": {
891
+ "tags": ["Threads"],
892
+ "summary": "Get Thread State At Checkpoint",
893
+ "description": "Get state for a thread at a specific checkpoint.",
894
+ "operationId": "get_thread_state_at_checkpoint_threads__thread_id__state__checkpoint_id__get",
895
+ "parameters": [
896
+ {
897
+ "description": "The ID of the thread.",
898
+ "required": true,
899
+ "schema": {
900
+ "type": "string",
901
+ "format": "uuid",
902
+ "title": "Thread Id",
903
+ "description": "The ID of the thread."
904
+ },
905
+ "name": "thread_id",
906
+ "in": "path"
907
+ },
908
+ {
909
+ "description": "The ID of the checkpoint.",
910
+ "required": true,
911
+ "schema": {
912
+ "type": "string",
913
+ "format": "uuid",
914
+ "title": "Checkpoint Id",
915
+ "description": "The ID of the checkpoint."
916
+ },
917
+ "name": "checkpoint_id",
918
+ "in": "path"
919
+ },
920
+ {
921
+ "description": "Whether to include subgraphs in the response.",
922
+ "required": false,
923
+ "schema": {
924
+ "type": "boolean",
925
+ "title": "Subgraphs",
926
+ "description": "Whether to include subgraphs in the response."
927
+ },
928
+ "name": "subgraphs",
929
+ "in": "query"
930
+ }
931
+ ],
932
+ "responses": {
933
+ "200": {
934
+ "description": "Success",
935
+ "content": {
936
+ "application/json": {
937
+ "schema": {
938
+ "$ref": "#/components/schemas/ThreadState"
939
+ }
940
+ }
941
+ }
942
+ },
943
+ "422": {
944
+ "description": "Validation Error",
945
+ "content": {
946
+ "application/json": {
947
+ "schema": {
948
+ "$ref": "#/components/schemas/ErrorResponse"
949
+ }
950
+ }
951
+ }
952
+ }
953
+ }
954
+ }
955
+ },
928
956
  "/threads/{thread_id}/state/checkpoint": {
929
957
  "post": {
930
958
  "tags": ["Threads"],
931
959
  "summary": "Get Thread State At Checkpoint",
932
960
  "description": "Get state for a thread at a specific checkpoint.",
933
961
  "operationId": "post_thread_state_at_checkpoint_threads__thread_id__state__checkpoint_id__get",
962
+ "parameters": [
963
+ {
964
+ "description": "The ID of the thread.",
965
+ "required": true,
966
+ "schema": {
967
+ "type": "string",
968
+ "format": "uuid",
969
+ "title": "Thread Id",
970
+ "description": "The ID of the thread."
971
+ },
972
+ "name": "thread_id",
973
+ "in": "path"
974
+ },
975
+ {
976
+ "required": false,
977
+ "schema": {
978
+ "type": "boolean",
979
+ "title": "Subgraphs",
980
+ "description": "If true, includes subgraph states."
981
+ },
982
+ "name": "subgraphs",
983
+ "in": "query"
984
+ }
985
+ ],
934
986
  "requestBody": {
935
987
  "content": {
936
988
  "application/json": {
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langgraph-api"
3
- version = "0.2.24"
3
+ version = "0.2.25"
4
4
  description = ""
5
5
  authors = [
6
6
  "Nuno Campos <nuno@langchain.dev>",
@@ -1 +0,0 @@
1
- __version__ = "0.2.24"
File without changes
File without changes