langgraph-api 0.4.34__py3-none-any.whl → 0.4.36__py3-none-any.whl
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/__init__.py +1 -1
- langgraph_api/api/__init__.py +18 -28
- langgraph_api/api/assistants.py +20 -0
- langgraph_api/graph.py +10 -9
- langgraph_api/grpc_ops/generated/core_api_pb2.py +2 -2
- langgraph_api/grpc_ops/ops.py +4 -3
- langgraph_api/server.py +94 -34
- langgraph_api/validation.py +3 -0
- {langgraph_api-0.4.34.dist-info → langgraph_api-0.4.36.dist-info}/METADATA +1 -1
- {langgraph_api-0.4.34.dist-info → langgraph_api-0.4.36.dist-info}/RECORD +13 -13
- {langgraph_api-0.4.34.dist-info → langgraph_api-0.4.36.dist-info}/WHEEL +0 -0
- {langgraph_api-0.4.34.dist-info → langgraph_api-0.4.36.dist-info}/entry_points.txt +0 -0
- {langgraph_api-0.4.34.dist-info → langgraph_api-0.4.36.dist-info}/licenses/LICENSE +0 -0
langgraph_api/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.4.
|
|
1
|
+
__version__ = "0.4.36"
|
langgraph_api/api/__init__.py
CHANGED
|
@@ -8,7 +8,7 @@ import structlog
|
|
|
8
8
|
from starlette.applications import Starlette
|
|
9
9
|
from starlette.requests import Request
|
|
10
10
|
from starlette.responses import HTMLResponse, JSONResponse, Response
|
|
11
|
-
from starlette.routing import BaseRoute,
|
|
11
|
+
from starlette.routing import BaseRoute, Route
|
|
12
12
|
|
|
13
13
|
from langgraph_api.api.a2a import a2a_routes
|
|
14
14
|
from langgraph_api.api.assistants import assistants_routes
|
|
@@ -53,14 +53,17 @@ async def docs(request: Request):
|
|
|
53
53
|
return HTMLResponse(DOCS_HTML.format(mount_prefix=MOUNT_PREFIX or ""))
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
Route("/ok", ok, methods=["GET"]),
|
|
58
|
-
Route("/openapi.json", openapi, methods=["GET"]),
|
|
59
|
-
Route("/docs", docs, methods=["GET"]),
|
|
56
|
+
shadowable_meta_routes: list[BaseRoute] = [
|
|
60
57
|
Route("/info", meta_info, methods=["GET"]),
|
|
58
|
+
]
|
|
59
|
+
unshadowable_meta_routes: list[BaseRoute] = [
|
|
60
|
+
Route("/ok", ok, methods=["GET"]),
|
|
61
61
|
Route("/metrics", meta_metrics, methods=["GET"]),
|
|
62
|
+
Route("/docs", docs, methods=["GET"]),
|
|
63
|
+
Route("/openapi.json", openapi, methods=["GET"]),
|
|
62
64
|
]
|
|
63
65
|
|
|
66
|
+
middleware_for_protected_routes = [auth_middleware]
|
|
64
67
|
protected_routes: list[BaseRoute] = []
|
|
65
68
|
|
|
66
69
|
if HTTP_CONFIG:
|
|
@@ -87,9 +90,6 @@ else:
|
|
|
87
90
|
protected_routes.extend(mcp_routes)
|
|
88
91
|
protected_routes.extend(a2a_routes)
|
|
89
92
|
|
|
90
|
-
routes: list[BaseRoute] = []
|
|
91
|
-
user_router = None
|
|
92
|
-
|
|
93
93
|
|
|
94
94
|
def load_custom_app(app_import: str) -> Starlette | None:
|
|
95
95
|
# Expect a string in either "path/to/file.py:my_variable" or "some.module.in:my_variable"
|
|
@@ -130,30 +130,18 @@ def load_custom_app(app_import: str) -> Starlette | None:
|
|
|
130
130
|
return user_router
|
|
131
131
|
|
|
132
132
|
|
|
133
|
+
user_router: Starlette | None = None
|
|
133
134
|
if HTTP_CONFIG:
|
|
134
|
-
if
|
|
135
|
-
|
|
136
|
-
if not HTTP_CONFIG.get("disable_meta"):
|
|
137
|
-
routes.extend(meta_routes)
|
|
138
|
-
else:
|
|
139
|
-
# Otherwise the deployment will never be considered healthy
|
|
140
|
-
routes.append(
|
|
135
|
+
if HTTP_CONFIG.get("disable_meta"):
|
|
136
|
+
shadowable_meta_routes = [
|
|
141
137
|
Route(
|
|
142
138
|
"/ok", functools.partial(ok, disabled=True), methods=["GET"], name="ok"
|
|
143
139
|
)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
routes.append(
|
|
147
|
-
Mount(
|
|
148
|
-
"/",
|
|
149
|
-
middleware=[auth_middleware],
|
|
150
|
-
routes=protected_routes,
|
|
151
|
-
),
|
|
152
|
-
)
|
|
140
|
+
]
|
|
141
|
+
unshadowable_meta_routes = []
|
|
153
142
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
routes.append(Mount("/", middleware=[auth_middleware], routes=protected_routes))
|
|
143
|
+
if router_import := HTTP_CONFIG.get("app"):
|
|
144
|
+
user_router = load_custom_app(router_import)
|
|
157
145
|
|
|
158
146
|
|
|
159
147
|
if "inmem" in MIGRATIONS_PATH:
|
|
@@ -166,4 +154,6 @@ if "inmem" in MIGRATIONS_PATH:
|
|
|
166
154
|
await asyncio.to_thread(conn.clear)
|
|
167
155
|
return JSONResponse({"ok": True})
|
|
168
156
|
|
|
169
|
-
|
|
157
|
+
unshadowable_meta_routes.insert(
|
|
158
|
+
0, Route("/internal/truncate", truncate, methods=["POST"])
|
|
159
|
+
)
|
langgraph_api/api/assistants.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
from uuid import uuid4
|
|
3
3
|
|
|
4
|
+
import jsonschema_rs
|
|
4
5
|
import structlog
|
|
5
6
|
|
|
6
7
|
# TODO: Remove dependency on langchain-core here.
|
|
@@ -33,6 +34,7 @@ from langgraph_api.validation import (
|
|
|
33
34
|
AssistantSearchRequest,
|
|
34
35
|
AssistantVersionChange,
|
|
35
36
|
AssistantVersionsSearchRequest,
|
|
37
|
+
ConfigValidator,
|
|
36
38
|
)
|
|
37
39
|
from langgraph_runtime.checkpoint import Checkpointer
|
|
38
40
|
from langgraph_runtime.database import connect
|
|
@@ -165,6 +167,12 @@ async def create_assistant(request: ApiRequest) -> ApiResponse:
|
|
|
165
167
|
payload = await request.json(AssistantCreate)
|
|
166
168
|
if assistant_id := payload.get("assistant_id"):
|
|
167
169
|
validate_uuid(assistant_id, "Invalid assistant ID: must be a UUID")
|
|
170
|
+
config = payload.get("config")
|
|
171
|
+
if config:
|
|
172
|
+
try:
|
|
173
|
+
ConfigValidator.validate(config)
|
|
174
|
+
except jsonschema_rs.ValidationError as e:
|
|
175
|
+
raise HTTPException(status_code=422, detail=str(e)) from e
|
|
168
176
|
async with connect() as conn:
|
|
169
177
|
assistant = await CrudAssistants.put(
|
|
170
178
|
conn,
|
|
@@ -189,6 +197,12 @@ async def search_assistants(
|
|
|
189
197
|
payload = await request.json(AssistantSearchRequest)
|
|
190
198
|
select = validate_select_columns(payload.get("select") or None, ASSISTANT_FIELDS)
|
|
191
199
|
offset = int(payload.get("offset") or 0)
|
|
200
|
+
config = payload.get("config")
|
|
201
|
+
if config:
|
|
202
|
+
try:
|
|
203
|
+
ConfigValidator.validate(config)
|
|
204
|
+
except jsonschema_rs.ValidationError as e:
|
|
205
|
+
raise HTTPException(status_code=422, detail=str(e)) from e
|
|
192
206
|
async with connect() as conn:
|
|
193
207
|
assistants_iter, next_offset = await CrudAssistants.search(
|
|
194
208
|
conn,
|
|
@@ -388,6 +402,12 @@ async def patch_assistant(
|
|
|
388
402
|
assistant_id = request.path_params["assistant_id"]
|
|
389
403
|
validate_uuid(assistant_id, "Invalid assistant ID: must be a UUID")
|
|
390
404
|
payload = await request.json(AssistantPatch)
|
|
405
|
+
config = payload.get("config")
|
|
406
|
+
if config:
|
|
407
|
+
try:
|
|
408
|
+
ConfigValidator.validate(config)
|
|
409
|
+
except jsonschema_rs.ValidationError as e:
|
|
410
|
+
raise HTTPException(status_code=422, detail=str(e)) from e
|
|
391
411
|
async with connect() as conn:
|
|
392
412
|
assistant = await CrudAssistants.patch(
|
|
393
413
|
conn,
|
langgraph_api/graph.py
CHANGED
|
@@ -21,7 +21,7 @@ from langgraph.pregel import Pregel
|
|
|
21
21
|
from langgraph.store.base import BaseStore
|
|
22
22
|
from starlette.exceptions import HTTPException
|
|
23
23
|
|
|
24
|
-
from langgraph_api import config
|
|
24
|
+
from langgraph_api import config as lg_api_config
|
|
25
25
|
from langgraph_api.feature_flags import FF_USE_CORE_API, USE_RUNTIME_CONTEXT_API
|
|
26
26
|
from langgraph_api.js.base import BaseRemotePregel, is_js_path
|
|
27
27
|
from langgraph_api.schema import Config
|
|
@@ -87,7 +87,8 @@ async def register_graph(
|
|
|
87
87
|
description=description,
|
|
88
88
|
)
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
if not lg_api_config.IS_EXECUTOR_ENTRYPOINT:
|
|
91
|
+
await register_graph_db()
|
|
91
92
|
|
|
92
93
|
|
|
93
94
|
@asynccontextmanager
|
|
@@ -358,7 +359,7 @@ async def collect_graphs_from_env(register: bool = False) -> None:
|
|
|
358
359
|
py_specs = list(filterfalse(is_js_spec, specs))
|
|
359
360
|
|
|
360
361
|
if js_specs:
|
|
361
|
-
if
|
|
362
|
+
if lg_api_config.API_VARIANT == "local_dev":
|
|
362
363
|
raise NotImplementedError(
|
|
363
364
|
"LangGraph.JS graphs are not yet supported in local development mode. "
|
|
364
365
|
"To run your JS graphs, either use the LangGraph Studio application "
|
|
@@ -388,15 +389,15 @@ async def collect_graphs_from_env(register: bool = False) -> None:
|
|
|
388
389
|
)
|
|
389
390
|
|
|
390
391
|
if (
|
|
391
|
-
|
|
392
|
-
and (js_app :=
|
|
392
|
+
lg_api_config.HTTP_CONFIG
|
|
393
|
+
and (js_app := lg_api_config.HTTP_CONFIG.get("app"))
|
|
393
394
|
and is_js_path(js_app.split(":")[0])
|
|
394
395
|
):
|
|
395
396
|
js_bg_tasks.add(
|
|
396
397
|
asyncio.create_task(
|
|
397
398
|
run_js_http_process(
|
|
398
399
|
paths_str,
|
|
399
|
-
|
|
400
|
+
lg_api_config.HTTP_CONFIG or {},
|
|
400
401
|
watch="--reload" in sys.argv[1:],
|
|
401
402
|
),
|
|
402
403
|
)
|
|
@@ -468,7 +469,7 @@ def _graph_from_spec(spec: GraphSpec) -> GraphValue:
|
|
|
468
469
|
modspec.loader.exec_module(module) # type: ignore[possibly-unbound-attribute]
|
|
469
470
|
except ImportError as e:
|
|
470
471
|
e.add_note(f"Could not import python module for graph:\n{spec}")
|
|
471
|
-
if
|
|
472
|
+
if lg_api_config.API_VARIANT == "local_dev":
|
|
472
473
|
e.add_note(
|
|
473
474
|
"This error likely means you haven't installed your project and its dependencies yet. Before running the server, install your project:\n\n"
|
|
474
475
|
"If you are using requirements.txt:\n"
|
|
@@ -528,7 +529,7 @@ def _graph_from_spec(spec: GraphSpec) -> GraphValue:
|
|
|
528
529
|
elif isinstance(graph, Pregel):
|
|
529
530
|
# We don't want to fail real deployments, but this will help folks catch unnecessary custom components
|
|
530
531
|
# before they deploy
|
|
531
|
-
if
|
|
532
|
+
if lg_api_config.API_VARIANT == "local_dev":
|
|
532
533
|
has_checkpointer = isinstance(graph.checkpointer, BaseCheckpointSaver)
|
|
533
534
|
has_store = isinstance(graph.store, BaseStore)
|
|
534
535
|
if has_checkpointer or has_store:
|
|
@@ -644,7 +645,7 @@ def resolve_embeddings(index_config: dict) -> "Embeddings":
|
|
|
644
645
|
|
|
645
646
|
except ImportError as e:
|
|
646
647
|
e.add_note(f"Could not import embeddings module:\n{module_name}\n\n")
|
|
647
|
-
if
|
|
648
|
+
if lg_api_config.API_VARIANT == "local_dev":
|
|
648
649
|
e.add_note(
|
|
649
650
|
"If you're in development mode, make sure you've installed your project "
|
|
650
651
|
"and its dependencies:\n"
|
|
@@ -27,14 +27,14 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
|
|
27
27
|
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x63ore-api.proto\x12\x07\x63oreApi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xab\x01\n\x06\x43onfig\x12\x0c\n\x04tags\x18\x01 \x03(\t\x12\x1c\n\x0frecursion_limit\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x32\n\x0c\x63onfigurable\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x12\n\x05\x65xtra\x18\x04 \x01(\x0cH\x02\x88\x01\x01\x42\x12\n\x10_recursion_limitB\x0f\n\r_configurableB\x08\n\x06_extra\"\x1d\n\x0c\x45qAuthFilter\x12\r\n\x05match\x18\x01 \x01(\t\"=\n\x12\x43ontainsAuthFilter\x12\'\n\x07matches\x18\x01 \x03(\x0b\x32\x16.google.protobuf.Value\"l\n\nAuthFilter\x12#\n\x02\x65q\x18\x01 \x01(\x0b\x32\x15.coreApi.EqAuthFilterH\x00\x12/\n\x08\x63ontains\x18\x02 \x01(\x0b\x32\x1b.coreApi.ContainsAuthFilterH\x00\x42\x08\n\x06\x66ilter\"\x15\n\x04UUID\x12\r\n\x05value\x18\x01 \x01(\t\"\x1e\n\rCountResponse\x12\r\n\x05\x63ount\x18\x01 \x01(\x04\"\x93\x03\n\tAssistant\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12$\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\t \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\n \x01(\tH\x04\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x0b\n\t_metadataB\x07\n\x05_nameB\x0e\n\x0c_description\"\xea\x02\n\x10\x41ssistantVersion\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12$\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\t \x01(\tH\x04\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x0b\n\t_metadataB\x07\n\x05_nameB\x0e\n\x0c_description\"\xc2\x03\n\x16\x43reateAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12=\n\x07\x66ilters\x18\x03 \x03(\x0b\x32,.coreApi.CreateAssistantRequest.FiltersEntry\x12.\n\tif_exists\x18\x04 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12\x1f\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x0f.coreApi.Config\x12(\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x11\n\x04name\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x01\x88\x01\x01\x12.\n\x08metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0b\n\t_metadata\"\xac\x01\n\x13GetAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.GetAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xc3\x03\n\x15PatchAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12<\n\x07\x66ilters\x18\x02 \x03(\x0b\x32+.coreApi.PatchAssistantRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12$\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\x0f.coreApi.ConfigH\x01\x88\x01\x01\x12-\n\x07\x63ontext\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x05\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\t\n\x07_configB\n\n\x08_contextB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0b\n\t_metadata\"\xb2\x01\n\x16\x44\x65leteAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12=\n\x07\x66ilters\x18\x02 \x03(\x0b\x32,.coreApi.DeleteAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"1\n\x18\x44\x65leteAssistantsResponse\x12\x15\n\rassistant_ids\x18\x01 \x03(\t\"\xc9\x01\n\x19SetLatestAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x03\x12@\n\x07\x66ilters\x18\x03 \x03(\x0b\x32/.coreApi.SetLatestAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xc6\x03\n\x17SearchAssistantsRequest\x12>\n\x07\x66ilters\x18\x01 \x03(\x0b\x32-.coreApi.SearchAssistantsRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12/\n\x07sort_by\x18\x06 \x01(\x0e\x32\x19.coreApi.AssistantsSortByH\x04\x88\x01\x01\x12+\n\nsort_order\x18\x07 \x01(\x0e\x32\x12.coreApi.SortOrderH\x05\x88\x01\x01\x12\x0e\n\x06select\x18\x08 \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\x0b\n\t_metadataB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_order\"B\n\x18SearchAssistantsResponse\x12&\n\nassistants\x18\x01 \x03(\x0b\x32\x12.coreApi.Assistant\"\xb7\x02\n\x1bGetAssistantVersionsRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x42\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x31.coreApi.GetAssistantVersionsRequest.FiltersEntry\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x04H\x01\x88\x01\x01\x12\x13\n\x06offset\x18\x05 \x01(\x04H\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x08\n\x06_limitB\t\n\x07_offset\"K\n\x1cGetAssistantVersionsResponse\x12+\n\x08versions\x18\x01 \x03(\x0b\x32\x19.coreApi.AssistantVersion\"\xfd\x01\n\x16\x43ountAssistantsRequest\x12=\n\x07\x66ilters\x18\x01 \x03(\x0b\x32,.coreApi.CountAssistantsRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\x0b\n\t_metadata\"i\n\x0fTruncateRequest\x12\x0c\n\x04runs\x18\x01 \x01(\x08\x12\x0f\n\x07threads\x18\x02 \x01(\x08\x12\x12\n\nassistants\x18\x03 \x01(\x08\x12\x14\n\x0c\x63heckpointer\x18\x04 \x01(\x08\x12\r\n\x05store\x18\x05 \x01(\x08\"\xbb\x01\n\x0fThreadTTLConfig\x12\x31\n\x08strategy\x18\x01 \x01(\x0e\x32\x1a.coreApi.ThreadTTLStrategyH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65\x66\x61ult_ttl\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12#\n\x16sweep_interval_minutes\x18\x03 \x01(\x05H\x02\x88\x01\x01\x42\x0b\n\t_strategyB\x0e\n\x0c_default_ttlB\x19\n\x17_sweep_interval_minutes\"\x19\n\x08\x46ragment\x12\r\n\x05value\x18\x01 \x01(\x0c\"\xac\x01\n\x0e\x43heckpointTask\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x12+\n\ninterrupts\x18\x04 \x03(\x0b\x32\x17.google.protobuf.Struct\x12+\n\x05state\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x42\x08\n\x06_errorB\x08\n\x06_state\"\xd6\x01\n\x12\x43heckpointMetadata\x12.\n\x06source\x18\x01 \x01(\x0e\x32\x19.coreApi.CheckpointSourceH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x39\n\x07parents\x18\x03 \x03(\x0b\x32(.coreApi.CheckpointMetadata.ParentsEntry\x1a.\n\x0cParentsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_sourceB\x07\n\x05_step\"\x91\x02\n\x11\x43heckpointPayload\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.coreApi.CheckpointMetadata\x12\'\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0c\n\x04next\x18\x04 \x03(\t\x12+\n\rparent_config\x18\x05 \x01(\x0b\x32\x0f.coreApi.ConfigH\x01\x88\x01\x01\x12&\n\x05tasks\x18\x06 \x03(\x0b\x32\x17.coreApi.CheckpointTaskB\t\n\x07_configB\x10\n\x0e_parent_config\"\x99\x01\n\tInterrupt\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x11\n\x04when\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tresumable\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\n\n\x02ns\x18\x05 \x03(\tB\x05\n\x03_idB\x07\n\x05_whenB\x0c\n\n_resumable\"4\n\nInterrupts\x12&\n\ninterrupts\x18\x01 \x03(\x0b\x32\x12.coreApi.Interrupt\"\xbd\x03\n\x06Thread\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x08metadata\x18\x04 \x01(\x0b\x32\x11.coreApi.Fragment\x12!\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x11.coreApi.Fragment\x12%\n\x06status\x18\x07 \x01(\x0e\x32\x15.coreApi.ThreadStatus\x12!\n\x06values\x18\x08 \x01(\x0b\x32\x11.coreApi.Fragment\x12\x33\n\ninterrupts\x18\t \x03(\x0b\x32\x1f.coreApi.Thread.InterruptsEntry\x1a\x46\n\x0fInterruptsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.Interrupts:\x02\x38\x01\"\xd9\x02\n\x13\x43reateThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.CreateThreadRequest.FiltersEntry\x12.\n\tif_exists\x18\x03 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12.\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x05 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x06\n\x04_ttl\"\xb2\x01\n\x10GetThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x37\n\x07\x66ilters\x18\x02 \x03(\x0b\x32&.coreApi.GetThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xa7\x02\n\x12PatchThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x39\n\x07\x66ilters\x18\x02 \x03(\x0b\x32(.coreApi.PatchThreadRequest.FiltersEntry\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x04 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x06\n\x04_ttl\"\xb8\x01\n\x13\x44\x65leteThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.DeleteThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xb4\x01\n\x11\x43opyThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\'.coreApi.CopyThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\x89\x04\n\x14SearchThreadsRequest\x12;\n\x07\x66ilters\x18\x01 \x03(\x0b\x32*.coreApi.SearchThreadsRequest.FiltersEntry\x12.\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12,\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12*\n\x06status\x18\x04 \x01(\x0e\x32\x15.coreApi.ThreadStatusH\x02\x88\x01\x01\x12\x12\n\x05limit\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12\x13\n\x06offset\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12,\n\x07sort_by\x18\x07 \x01(\x0e\x32\x16.coreApi.ThreadsSortByH\x05\x88\x01\x01\x12+\n\nsort_order\x18\x08 \x01(\x0e\x32\x12.coreApi.SortOrderH\x06\x88\x01\x01\x12\x0e\n\x06select\x18\t \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\t\n\x07_valuesB\t\n\x07_statusB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_order\"9\n\x15SearchThreadsResponse\x12 \n\x07threads\x18\x01 \x03(\x0b\x32\x0f.coreApi.Thread\"\xc3\x02\n\x13\x43ountThreadsRequest\x12:\n\x07\x66ilters\x18\x01 \x03(\x0b\x32).coreApi.CountThreadsRequest.FiltersEntry\x12.\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12,\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12*\n\x06status\x18\x04 \x01(\x0e\x32\x15.coreApi.ThreadStatusH\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\t\n\x07_valuesB\t\n\x07_status\";\n\x17SweepThreadsTTLResponse\x12\x0f\n\x07\x65xpired\x18\x01 \x01(\x04\x12\x0f\n\x07\x64\x65leted\x18\x02 \x01(\x04\"J\n\x16SweepThreadsTTLRequest\x12\x12\n\nbatch_size\x18\x01 \x01(\x04\x12\x12\n\x05limit\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\x08\n\x06_limit\"\x94\x02\n\x16SetThreadStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12%\n\x06status\x18\x02 \x01(\x0e\x32\x15.coreApi.ThreadStatus\x12\x33\n\ncheckpoint\x18\x03 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12/\n\texception\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x0f\x65xpected_status\x18\x05 \x03(\x0e\x32\x15.coreApi.ThreadStatusB\r\n\x0b_checkpointB\x0c\n\n_exception\"\xee\x01\n\x1bSetThreadJointStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1d\n\x06run_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x12\n\nrun_status\x18\x03 \x01(\t\x12\x10\n\x08graph_id\x18\x04 \x01(\t\x12\x33\n\ncheckpoint\x18\x05 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12\x16\n\texception\x18\x06 \x01(\tH\x01\x88\x01\x01\x42\r\n\x0b_checkpointB\x0c\n\n_exception\"\xd3\x01\n\x14JointRollbackRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1d\n\x06run_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x10\n\x08graph_id\x18\x03 \x01(\t\x12\x33\n\ncheckpoint\x18\x04 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12\x16\n\texception\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\r\n\x0b_checkpointB\x0c\n\n_exception\"\xcf\x04\n\tRunKwargs\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12+\n\x05input\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12-\n\x07\x63ommand\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x03\x88\x01\x01\x12(\n\x0bstream_mode\x18\x05 \x01(\x0e\x32\x13.coreApi.StreamMode\x12\x18\n\x10interrupt_before\x18\x06 \x03(\t\x12\x17\n\x0finterrupt_after\x18\x07 \x03(\t\x12\x14\n\x07webhook\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\rfeedback_keys\x18\t \x03(\t\x12\x16\n\ttemporary\x18\n \x01(\x08H\x05\x88\x01\x01\x12\x16\n\tsubgraphs\x18\x0b \x01(\x08H\x06\x88\x01\x01\x12\x16\n\tresumable\x18\x0c \x01(\x08H\x07\x88\x01\x01\x12\x1e\n\x11\x63heckpoint_during\x18\r \x01(\x08H\x08\x88\x01\x01\x12\x17\n\ndurability\x18\x0e \x01(\tH\t\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x08\n\x06_inputB\n\n\x08_commandB\n\n\x08_webhookB\x0c\n\n_temporaryB\x0c\n\n_subgraphsB\x0c\n\n_resumableB\x14\n\x12_checkpoint_duringB\r\n\x0b_durability\"\xf0\x02\n\x03Run\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12#\n\x0c\x61ssistant_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUID\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\"\n\x06status\x18\x06 \x01(\x0e\x32\x12.coreApi.RunStatus\x12#\n\x08metadata\x18\x07 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x06kwargs\x18\x08 \x01(\x0b\x32\x12.coreApi.RunKwargs\x12\x36\n\x12multitask_strategy\x18\t \x01(\x0e\x32\x1a.coreApi.MultitaskStrategy\"\x8a\x01\n\nQueueStats\x12\x11\n\tn_pending\x18\x01 \x01(\x04\x12\x11\n\tn_running\x18\x02 \x01(\x04\x12\x19\n\x0cmax_age_secs\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12\x19\n\x0cmed_age_secs\x18\x04 \x01(\x01H\x01\x88\x01\x01\x42\x0f\n\r_max_age_secsB\x0f\n\r_med_age_secs\"-\n\x0eNextRunRequest\x12\x0c\n\x04wait\x18\x01 \x01(\x08\x12\r\n\x05limit\x18\x02 \x01(\x04\"<\n\x0eRunWithAttempt\x12\x19\n\x03run\x18\x01 \x01(\x0b\x32\x0c.coreApi.Run\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x04\"8\n\x0fNextRunResponse\x12%\n\x04runs\x18\x01 \x03(\x0b\x32\x17.coreApi.RunWithAttempt\"\xe9\x05\n\x10\x43reateRunRequest\x12#\n\x0c\x61ssistant_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\'\n\x06kwargs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x37\n\x07\x66ilters\x18\x03 \x03(\x0b\x32&.coreApi.CreateRunRequest.FiltersEntry\x12%\n\tthread_id\x18\x04 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12\x14\n\x07user_id\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\"\n\x06run_id\x18\x06 \x01(\x0b\x32\r.coreApi.UUIDH\x02\x88\x01\x01\x12\'\n\x06status\x18\x07 \x01(\x0e\x32\x12.coreApi.RunStatusH\x03\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x04\x88\x01\x01\x12\'\n\x1aprevent_insert_if_inflight\x18\t \x01(\x08H\x05\x88\x01\x01\x12;\n\x12multitask_strategy\x18\n \x01(\x0e\x32\x1a.coreApi.MultitaskStrategyH\x06\x88\x01\x01\x12\x36\n\rif_not_exists\x18\x0b \x01(\x0e\x32\x1a.coreApi.CreateRunBehaviorH\x07\x88\x01\x01\x12\x1a\n\rafter_seconds\x18\x0c \x01(\x04H\x08\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0c\n\n_thread_idB\n\n\x08_user_idB\t\n\x07_run_idB\t\n\x07_statusB\x0b\n\t_metadataB\x1d\n\x1b_prevent_insert_if_inflightB\x15\n\x13_multitask_strategyB\x10\n\x0e_if_not_existsB\x10\n\x0e_after_seconds\"\xcb\x01\n\rGetRunRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x34\n\x07\x66ilters\x18\x03 \x03(\x0b\x32#.coreApi.GetRunRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xd1\x01\n\x10\x44\x65leteRunRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x37\n\x07\x66ilters\x18\x03 \x03(\x0b\x32&.coreApi.DeleteRunRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"V\n\x12\x43\x61ncelRunIdsTarget\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1e\n\x07run_ids\x18\x02 \x03(\x0b\x32\r.coreApi.UUID\">\n\x12\x43\x61ncelStatusTarget\x12(\n\x06status\x18\x01 \x01(\x0e\x32\x18.coreApi.CancelRunStatus\"\xb3\x02\n\x10\x43\x61ncelRunRequest\x12\x37\n\x07\x66ilters\x18\x01 \x03(\x0b\x32&.coreApi.CancelRunRequest.FiltersEntry\x12.\n\x07run_ids\x18\x02 \x01(\x0b\x32\x1b.coreApi.CancelRunIdsTargetH\x00\x12-\n\x06status\x18\x03 \x01(\x0b\x32\x1b.coreApi.CancelStatusTargetH\x00\x12-\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32\x18.coreApi.CancelRunActionH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x08\n\x06targetB\t\n\x07_action\"\xb6\x02\n\x11SearchRunsRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\'.coreApi.SearchRunsRequest.FiltersEntry\x12\x12\n\x05limit\x18\x03 \x01(\x04H\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\x04H\x01\x88\x01\x01\x12\'\n\x06status\x18\x05 \x01(\x0e\x32\x12.coreApi.RunStatusH\x02\x88\x01\x01\x12\x0e\n\x06select\x18\x06 \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07_status\"0\n\x12SearchRunsResponse\x12\x1a\n\x04runs\x18\x01 \x03(\x0b\x32\x0c.coreApi.Run\"X\n\x13SetRunStatusRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\"\n\x06status\x18\x02 \x01(\x0e\x32\x12.coreApi.RunStatus\"3\n\x11SweepRunsResponse\x12\x1e\n\x07run_ids\x18\x01 \x03(\x0b\x32\r.coreApi.UUID*/\n\x12OnConflictBehavior\x12\t\n\x05RAISE\x10\x00\x12\x0e\n\nDO_NOTHING\x10\x01*\x1e\n\tSortOrder\x12\x08\n\x04\x44\x45SC\x10\x00\x12\x07\n\x03\x41SC\x10\x01*m\n\x10\x41ssistantsSortBy\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x10\n\x0c\x41SSISTANT_ID\x10\x01\x12\x0c\n\x08GRAPH_ID\x10\x02\x12\x08\n\x04NAME\x10\x03\x12\x0e\n\nCREATED_AT\x10\x04\x12\x0e\n\nUPDATED_AT\x10\x05*v\n\x0cThreadStatus\x12\x16\n\x12THREAD_STATUS_IDLE\x10\x00\x12\x16\n\x12THREAD_STATUS_BUSY\x10\x01\x12\x1d\n\x19THREAD_STATUS_INTERRUPTED\x10\x02\x12\x17\n\x13THREAD_STATUS_ERROR\x10\x03*3\n\x11ThreadTTLStrategy\x12\x1e\n\x1aTHREAD_TTL_STRATEGY_DELETE\x10\x00*\xa8\x01\n\x10\x43heckpointSource\x12!\n\x1d\x43HECKPOINT_SOURCE_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x43HECKPOINT_SOURCE_INPUT\x10\x01\x12\x1a\n\x16\x43HECKPOINT_SOURCE_LOOP\x10\x02\x12\x1c\n\x18\x43HECKPOINT_SOURCE_UPDATE\x10\x03\x12\x1a\n\x16\x43HECKPOINT_SOURCE_FORK\x10\x04*\xab\x01\n\rThreadsSortBy\x12\x1f\n\x1bTHREADS_SORT_BY_UNSPECIFIED\x10\x00\x12\x1d\n\x19THREADS_SORT_BY_THREAD_ID\x10\x01\x12\x1e\n\x1aTHREADS_SORT_BY_CREATED_AT\x10\x02\x12\x1e\n\x1aTHREADS_SORT_BY_UPDATED_AT\x10\x03\x12\x1a\n\x16THREADS_SORT_BY_STATUS\x10\x04*\x9d\x01\n\tRunStatus\x12\x16\n\x12RUN_STATUS_PENDING\x10\x00\x12\x16\n\x12RUN_STATUS_RUNNING\x10\x01\x12\x14\n\x10RUN_STATUS_ERROR\x10\x02\x12\x16\n\x12RUN_STATUS_SUCCESS\x10\x03\x12\x16\n\x12RUN_STATUS_TIMEOUT\x10\x04\x12\x1a\n\x16RUN_STATUS_INTERRUPTED\x10\x05*\xb9\x01\n\x11MultitaskStrategy\x12\"\n\x1eMULTITASK_STRATEGY_UNSPECIFIED\x10\x00\x12\x1d\n\x19MULTITASK_STRATEGY_REJECT\x10\x01\x12\x1f\n\x1bMULTITASK_STRATEGY_ROLLBACK\x10\x02\x12 \n\x1cMULTITASK_STRATEGY_INTERRUPT\x10\x03\x12\x1e\n\x1aMULTITASK_STRATEGY_ENQUEUE\x10\x04*\xef\x01\n\nStreamMode\x12\x1b\n\x17STREAM_MODE_UNSPECIFIED\x10\x00\x12\x16\n\x12STREAM_MODE_VALUES\x10\x01\x12\x18\n\x14STREAM_MODE_MESSAGES\x10\x02\x12\x17\n\x13STREAM_MODE_UPDATES\x10\x03\x12\x16\n\x12STREAM_MODE_EVENTS\x10\x04\x12\x15\n\x11STREAM_MODE_DEBUG\x10\x05\x12\x15\n\x11STREAM_MODE_TASKS\x10\x06\x12\x1b\n\x17STREAM_MODE_CHECKPOINTS\x10\x07\x12\x16\n\x12STREAM_MODE_CUSTOM\x10\x08*`\n\x11\x43reateRunBehavior\x12#\n\x1fREJECT_RUN_IF_THREAD_NOT_EXISTS\x10\x00\x12&\n\"CREATE_THREAD_IF_THREAD_NOT_EXISTS\x10\x01*R\n\x0f\x43\x61ncelRunAction\x12\x1f\n\x1b\x43\x41NCEL_RUN_ACTION_INTERRUPT\x10\x00\x12\x1e\n\x1a\x43\x41NCEL_RUN_ACTION_ROLLBACK\x10\x01*j\n\x0f\x43\x61ncelRunStatus\x12\x1d\n\x19\x43\x41NCEL_RUN_STATUS_PENDING\x10\x00\x12\x1d\n\x19\x43\x41NCEL_RUN_STATUS_RUNNING\x10\x01\x12\x19\n\x15\x43\x41NCEL_RUN_STATUS_ALL\x10\x02\x32\xc1\x04\n\nAssistants\x12\x37\n\x03Get\x12\x1c.coreApi.GetAssistantRequest\x1a\x12.coreApi.Assistant\x12=\n\x06\x43reate\x12\x1f.coreApi.CreateAssistantRequest\x1a\x12.coreApi.Assistant\x12;\n\x05Patch\x12\x1e.coreApi.PatchAssistantRequest\x1a\x12.coreApi.Assistant\x12L\n\x06\x44\x65lete\x12\x1f.coreApi.DeleteAssistantRequest\x1a!.coreApi.DeleteAssistantsResponse\x12M\n\x06Search\x12 .coreApi.SearchAssistantsRequest\x1a!.coreApi.SearchAssistantsResponse\x12\x43\n\tSetLatest\x12\".coreApi.SetLatestAssistantRequest\x1a\x12.coreApi.Assistant\x12Z\n\x0bGetVersions\x12$.coreApi.GetAssistantVersionsRequest\x1a%.coreApi.GetAssistantVersionsResponse\x12@\n\x05\x43ount\x12\x1f.coreApi.CountAssistantsRequest\x1a\x16.coreApi.CountResponse2E\n\x05\x41\x64min\x12<\n\x08Truncate\x12\x18.coreApi.TruncateRequest\x1a\x16.google.protobuf.Empty2\xcd\x05\n\x07Threads\x12\x37\n\x06\x43reate\x12\x1c.coreApi.CreateThreadRequest\x1a\x0f.coreApi.Thread\x12\x31\n\x03Get\x12\x19.coreApi.GetThreadRequest\x1a\x0f.coreApi.Thread\x12\x35\n\x05Patch\x12\x1b.coreApi.PatchThreadRequest\x1a\x0f.coreApi.Thread\x12\x35\n\x06\x44\x65lete\x12\x1c.coreApi.DeleteThreadRequest\x1a\r.coreApi.UUID\x12G\n\x06Search\x12\x1d.coreApi.SearchThreadsRequest\x1a\x1e.coreApi.SearchThreadsResponse\x12=\n\x05\x43ount\x12\x1c.coreApi.CountThreadsRequest\x1a\x16.coreApi.CountResponse\x12\x33\n\x04\x43opy\x12\x1a.coreApi.CopyThreadRequest\x1a\x0f.coreApi.Thread\x12\x44\n\tSetStatus\x12\x1f.coreApi.SetThreadStatusRequest\x1a\x16.google.protobuf.Empty\x12N\n\x0eSetJointStatus\x12$.coreApi.SetThreadJointStatusRequest\x1a\x16.google.protobuf.Empty\x12\x46\n\rJointRollback\x12\x1d.coreApi.JointRollbackRequest\x1a\x16.google.protobuf.Empty\x12M\n\x08SweepTTL\x12\x1f.coreApi.SweepThreadsTTLRequest\x1a .coreApi.SweepThreadsTTLResponse2\x8b\x04\n\x04Runs\x12\x31\n\x06\x43reate\x12\x19.coreApi.CreateRunRequest\x1a\x0c.coreApi.Run\x12+\n\x03Get\x12\x16.coreApi.GetRunRequest\x1a\x0c.coreApi.Run\x12\x32\n\x06\x44\x65lete\x12\x19.coreApi.DeleteRunRequest\x1a\r.coreApi.UUID\x12\x41\n\x06Search\x12\x1a.coreApi.SearchRunsRequest\x1a\x1b.coreApi.SearchRunsResponse\x12;\n\x06\x43\x61ncel\x12\x19.coreApi.CancelRunRequest\x1a\x16.google.protobuf.Empty\x12\x41\n\tSetStatus\x12\x1c.coreApi.SetRunStatusRequest\x1a\x16.google.protobuf.Empty\x12\x34\n\x05Stats\x12\x16.google.protobuf.Empty\x1a\x13.coreApi.QueueStats\x12\x39\n\x04Next\x12\x17.coreApi.NextRunRequest\x1a\x18.coreApi.NextRunResponse\x12;\n\x05Sweep\x12\x16.google.protobuf.Empty\x1a\x1a.coreApi.SweepRunsResponseB<Z:github.com/langchain-ai/langgraph-api/core-api/internal/pbb\x06proto3')
|
|
30
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x63ore-api.proto\x12\x07\x63oreApi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xab\x01\n\x06\x43onfig\x12\x0c\n\x04tags\x18\x01 \x03(\t\x12\x1c\n\x0frecursion_limit\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x32\n\x0c\x63onfigurable\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x12\n\x05\x65xtra\x18\x04 \x01(\x0cH\x02\x88\x01\x01\x42\x12\n\x10_recursion_limitB\x0f\n\r_configurableB\x08\n\x06_extra\"\x1d\n\x0c\x45qAuthFilter\x12\r\n\x05match\x18\x01 \x01(\t\"=\n\x12\x43ontainsAuthFilter\x12\'\n\x07matches\x18\x01 \x03(\x0b\x32\x16.google.protobuf.Value\"l\n\nAuthFilter\x12#\n\x02\x65q\x18\x01 \x01(\x0b\x32\x15.coreApi.EqAuthFilterH\x00\x12/\n\x08\x63ontains\x18\x02 \x01(\x0b\x32\x1b.coreApi.ContainsAuthFilterH\x00\x42\x08\n\x06\x66ilter\"\x15\n\x04UUID\x12\r\n\x05value\x18\x01 \x01(\t\"\x1e\n\rCountResponse\x12\r\n\x05\x63ount\x18\x01 \x01(\x04\"\x93\x03\n\tAssistant\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12$\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\t \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\n \x01(\tH\x04\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x0b\n\t_metadataB\x07\n\x05_nameB\x0e\n\x0c_description\"\xea\x02\n\x10\x41ssistantVersion\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12$\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\t \x01(\tH\x04\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x0b\n\t_metadataB\x07\n\x05_nameB\x0e\n\x0c_description\"\xc2\x03\n\x16\x43reateAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12=\n\x07\x66ilters\x18\x03 \x03(\x0b\x32,.coreApi.CreateAssistantRequest.FiltersEntry\x12.\n\tif_exists\x18\x04 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12\x1f\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x0f.coreApi.Config\x12(\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x11\n\x04name\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x01\x88\x01\x01\x12.\n\x08metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0b\n\t_metadata\"\xac\x01\n\x13GetAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.GetAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xc3\x03\n\x15PatchAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12<\n\x07\x66ilters\x18\x02 \x03(\x0b\x32+.coreApi.PatchAssistantRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12$\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\x0f.coreApi.ConfigH\x01\x88\x01\x01\x12-\n\x07\x63ontext\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x05\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\t\n\x07_configB\n\n\x08_contextB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0b\n\t_metadata\"\xb2\x01\n\x16\x44\x65leteAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12=\n\x07\x66ilters\x18\x02 \x03(\x0b\x32,.coreApi.DeleteAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"1\n\x18\x44\x65leteAssistantsResponse\x12\x15\n\rassistant_ids\x18\x01 \x03(\t\"\xc9\x01\n\x19SetLatestAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x03\x12@\n\x07\x66ilters\x18\x03 \x03(\x0b\x32/.coreApi.SetLatestAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xc6\x03\n\x17SearchAssistantsRequest\x12>\n\x07\x66ilters\x18\x01 \x03(\x0b\x32-.coreApi.SearchAssistantsRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12/\n\x07sort_by\x18\x06 \x01(\x0e\x32\x19.coreApi.AssistantsSortByH\x04\x88\x01\x01\x12+\n\nsort_order\x18\x07 \x01(\x0e\x32\x12.coreApi.SortOrderH\x05\x88\x01\x01\x12\x0e\n\x06select\x18\x08 \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\x0b\n\t_metadataB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_order\"B\n\x18SearchAssistantsResponse\x12&\n\nassistants\x18\x01 \x03(\x0b\x32\x12.coreApi.Assistant\"\xb7\x02\n\x1bGetAssistantVersionsRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x42\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x31.coreApi.GetAssistantVersionsRequest.FiltersEntry\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x04H\x01\x88\x01\x01\x12\x13\n\x06offset\x18\x05 \x01(\x04H\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x08\n\x06_limitB\t\n\x07_offset\"K\n\x1cGetAssistantVersionsResponse\x12+\n\x08versions\x18\x01 \x03(\x0b\x32\x19.coreApi.AssistantVersion\"\xfd\x01\n\x16\x43ountAssistantsRequest\x12=\n\x07\x66ilters\x18\x01 \x03(\x0b\x32,.coreApi.CountAssistantsRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\x0b\n\t_metadata\"i\n\x0fTruncateRequest\x12\x0c\n\x04runs\x18\x01 \x01(\x08\x12\x0f\n\x07threads\x18\x02 \x01(\x08\x12\x12\n\nassistants\x18\x03 \x01(\x08\x12\x14\n\x0c\x63heckpointer\x18\x04 \x01(\x08\x12\r\n\x05store\x18\x05 \x01(\x08\"\xbb\x01\n\x0fThreadTTLConfig\x12\x31\n\x08strategy\x18\x01 \x01(\x0e\x32\x1a.coreApi.ThreadTTLStrategyH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65\x66\x61ult_ttl\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12#\n\x16sweep_interval_minutes\x18\x03 \x01(\x05H\x02\x88\x01\x01\x42\x0b\n\t_strategyB\x0e\n\x0c_default_ttlB\x19\n\x17_sweep_interval_minutes\"\x19\n\x08\x46ragment\x12\r\n\x05value\x18\x01 \x01(\x0c\"\xac\x01\n\x0e\x43heckpointTask\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x12+\n\ninterrupts\x18\x04 \x03(\x0b\x32\x17.google.protobuf.Struct\x12+\n\x05state\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x42\x08\n\x06_errorB\x08\n\x06_state\"\xd6\x01\n\x12\x43heckpointMetadata\x12.\n\x06source\x18\x01 \x01(\x0e\x32\x19.coreApi.CheckpointSourceH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x39\n\x07parents\x18\x03 \x03(\x0b\x32(.coreApi.CheckpointMetadata.ParentsEntry\x1a.\n\x0cParentsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_sourceB\x07\n\x05_step\"\x91\x02\n\x11\x43heckpointPayload\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.coreApi.CheckpointMetadata\x12\'\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0c\n\x04next\x18\x04 \x03(\t\x12+\n\rparent_config\x18\x05 \x01(\x0b\x32\x0f.coreApi.ConfigH\x01\x88\x01\x01\x12&\n\x05tasks\x18\x06 \x03(\x0b\x32\x17.coreApi.CheckpointTaskB\t\n\x07_configB\x10\n\x0e_parent_config\"\x99\x01\n\tInterrupt\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x11\n\x04when\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tresumable\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\n\n\x02ns\x18\x05 \x03(\tB\x05\n\x03_idB\x07\n\x05_whenB\x0c\n\n_resumable\"4\n\nInterrupts\x12&\n\ninterrupts\x18\x01 \x03(\x0b\x32\x12.coreApi.Interrupt\"\xbd\x03\n\x06Thread\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x08metadata\x18\x04 \x01(\x0b\x32\x11.coreApi.Fragment\x12!\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x11.coreApi.Fragment\x12%\n\x06status\x18\x07 \x01(\x0e\x32\x15.coreApi.ThreadStatus\x12!\n\x06values\x18\x08 \x01(\x0b\x32\x11.coreApi.Fragment\x12\x33\n\ninterrupts\x18\t \x03(\x0b\x32\x1f.coreApi.Thread.InterruptsEntry\x1a\x46\n\x0fInterruptsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.Interrupts:\x02\x38\x01\"\xd9\x02\n\x13\x43reateThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.CreateThreadRequest.FiltersEntry\x12.\n\tif_exists\x18\x03 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12.\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x05 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x06\n\x04_ttl\"\xb2\x01\n\x10GetThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x37\n\x07\x66ilters\x18\x02 \x03(\x0b\x32&.coreApi.GetThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xa7\x02\n\x12PatchThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x39\n\x07\x66ilters\x18\x02 \x03(\x0b\x32(.coreApi.PatchThreadRequest.FiltersEntry\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x04 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x06\n\x04_ttl\"\xb8\x01\n\x13\x44\x65leteThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.DeleteThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xb4\x01\n\x11\x43opyThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\'.coreApi.CopyThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\x89\x04\n\x14SearchThreadsRequest\x12;\n\x07\x66ilters\x18\x01 \x03(\x0b\x32*.coreApi.SearchThreadsRequest.FiltersEntry\x12.\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12,\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12*\n\x06status\x18\x04 \x01(\x0e\x32\x15.coreApi.ThreadStatusH\x02\x88\x01\x01\x12\x12\n\x05limit\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12\x13\n\x06offset\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12,\n\x07sort_by\x18\x07 \x01(\x0e\x32\x16.coreApi.ThreadsSortByH\x05\x88\x01\x01\x12+\n\nsort_order\x18\x08 \x01(\x0e\x32\x12.coreApi.SortOrderH\x06\x88\x01\x01\x12\x0e\n\x06select\x18\t \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\t\n\x07_valuesB\t\n\x07_statusB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_order\"9\n\x15SearchThreadsResponse\x12 \n\x07threads\x18\x01 \x03(\x0b\x32\x0f.coreApi.Thread\"\xc3\x02\n\x13\x43ountThreadsRequest\x12:\n\x07\x66ilters\x18\x01 \x03(\x0b\x32).coreApi.CountThreadsRequest.FiltersEntry\x12.\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12,\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12*\n\x06status\x18\x04 \x01(\x0e\x32\x15.coreApi.ThreadStatusH\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\t\n\x07_valuesB\t\n\x07_status\";\n\x17SweepThreadsTTLResponse\x12\x0f\n\x07\x65xpired\x18\x01 \x01(\x04\x12\x0f\n\x07\x64\x65leted\x18\x02 \x01(\x04\"J\n\x16SweepThreadsTTLRequest\x12\x12\n\nbatch_size\x18\x01 \x01(\x04\x12\x12\n\x05limit\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\x08\n\x06_limit\"\x94\x02\n\x16SetThreadStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12%\n\x06status\x18\x02 \x01(\x0e\x32\x15.coreApi.ThreadStatus\x12\x33\n\ncheckpoint\x18\x03 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12/\n\texception\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x0f\x65xpected_status\x18\x05 \x03(\x0e\x32\x15.coreApi.ThreadStatusB\r\n\x0b_checkpointB\x0c\n\n_exception\"\xee\x01\n\x1bSetThreadJointStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1d\n\x06run_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x12\n\nrun_status\x18\x03 \x01(\t\x12\x10\n\x08graph_id\x18\x04 \x01(\t\x12\x33\n\ncheckpoint\x18\x05 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12\x16\n\texception\x18\x06 \x01(\tH\x01\x88\x01\x01\x42\r\n\x0b_checkpointB\x0c\n\n_exception\"\xd3\x01\n\x14JointRollbackRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1d\n\x06run_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x10\n\x08graph_id\x18\x03 \x01(\t\x12\x33\n\ncheckpoint\x18\x04 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12\x16\n\texception\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\r\n\x0b_checkpointB\x0c\n\n_exception\"\xcf\x04\n\tRunKwargs\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12+\n\x05input\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12-\n\x07\x63ommand\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x03\x88\x01\x01\x12(\n\x0bstream_mode\x18\x05 \x01(\x0e\x32\x13.coreApi.StreamMode\x12\x18\n\x10interrupt_before\x18\x06 \x03(\t\x12\x17\n\x0finterrupt_after\x18\x07 \x03(\t\x12\x14\n\x07webhook\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\rfeedback_keys\x18\t \x03(\t\x12\x16\n\ttemporary\x18\n \x01(\x08H\x05\x88\x01\x01\x12\x16\n\tsubgraphs\x18\x0b \x01(\x08H\x06\x88\x01\x01\x12\x16\n\tresumable\x18\x0c \x01(\x08H\x07\x88\x01\x01\x12\x1e\n\x11\x63heckpoint_during\x18\r \x01(\x08H\x08\x88\x01\x01\x12\x17\n\ndurability\x18\x0e \x01(\tH\t\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x08\n\x06_inputB\n\n\x08_commandB\n\n\x08_webhookB\x0c\n\n_temporaryB\x0c\n\n_subgraphsB\x0c\n\n_resumableB\x14\n\x12_checkpoint_duringB\r\n\x0b_durability\"\xf0\x02\n\x03Run\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12#\n\x0c\x61ssistant_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUID\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\"\n\x06status\x18\x06 \x01(\x0e\x32\x12.coreApi.RunStatus\x12#\n\x08metadata\x18\x07 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x06kwargs\x18\x08 \x01(\x0b\x32\x12.coreApi.RunKwargs\x12\x36\n\x12multitask_strategy\x18\t \x01(\x0e\x32\x1a.coreApi.MultitaskStrategy\"\x8a\x01\n\nQueueStats\x12\x11\n\tn_pending\x18\x01 \x01(\x04\x12\x11\n\tn_running\x18\x02 \x01(\x04\x12\x19\n\x0cmax_age_secs\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12\x19\n\x0cmed_age_secs\x18\x04 \x01(\x01H\x01\x88\x01\x01\x42\x0f\n\r_max_age_secsB\x0f\n\r_med_age_secs\"-\n\x0eNextRunRequest\x12\x0c\n\x04wait\x18\x01 \x01(\x08\x12\r\n\x05limit\x18\x02 \x01(\x04\"<\n\x0eRunWithAttempt\x12\x19\n\x03run\x18\x01 \x01(\x0b\x32\x0c.coreApi.Run\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x04\"8\n\x0fNextRunResponse\x12%\n\x04runs\x18\x01 \x03(\x0b\x32\x17.coreApi.RunWithAttempt\"\xe9\x05\n\x10\x43reateRunRequest\x12#\n\x0c\x61ssistant_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\'\n\x06kwargs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x37\n\x07\x66ilters\x18\x03 \x03(\x0b\x32&.coreApi.CreateRunRequest.FiltersEntry\x12%\n\tthread_id\x18\x04 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12\x14\n\x07user_id\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\"\n\x06run_id\x18\x06 \x01(\x0b\x32\r.coreApi.UUIDH\x02\x88\x01\x01\x12\'\n\x06status\x18\x07 \x01(\x0e\x32\x12.coreApi.RunStatusH\x03\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x04\x88\x01\x01\x12\'\n\x1aprevent_insert_if_inflight\x18\t \x01(\x08H\x05\x88\x01\x01\x12;\n\x12multitask_strategy\x18\n \x01(\x0e\x32\x1a.coreApi.MultitaskStrategyH\x06\x88\x01\x01\x12\x36\n\rif_not_exists\x18\x0b \x01(\x0e\x32\x1a.coreApi.CreateRunBehaviorH\x07\x88\x01\x01\x12\x1a\n\rafter_seconds\x18\x0c \x01(\x04H\x08\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0c\n\n_thread_idB\n\n\x08_user_idB\t\n\x07_run_idB\t\n\x07_statusB\x0b\n\t_metadataB\x1d\n\x1b_prevent_insert_if_inflightB\x15\n\x13_multitask_strategyB\x10\n\x0e_if_not_existsB\x10\n\x0e_after_seconds\"\xcb\x01\n\rGetRunRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x34\n\x07\x66ilters\x18\x03 \x03(\x0b\x32#.coreApi.GetRunRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xd1\x01\n\x10\x44\x65leteRunRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x37\n\x07\x66ilters\x18\x03 \x03(\x0b\x32&.coreApi.DeleteRunRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"V\n\x12\x43\x61ncelRunIdsTarget\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1e\n\x07run_ids\x18\x02 \x03(\x0b\x32\r.coreApi.UUID\">\n\x12\x43\x61ncelStatusTarget\x12(\n\x06status\x18\x01 \x01(\x0e\x32\x18.coreApi.CancelRunStatus\"\xb3\x02\n\x10\x43\x61ncelRunRequest\x12\x37\n\x07\x66ilters\x18\x01 \x03(\x0b\x32&.coreApi.CancelRunRequest.FiltersEntry\x12.\n\x07run_ids\x18\x02 \x01(\x0b\x32\x1b.coreApi.CancelRunIdsTargetH\x00\x12-\n\x06status\x18\x03 \x01(\x0b\x32\x1b.coreApi.CancelStatusTargetH\x00\x12-\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32\x18.coreApi.CancelRunActionH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x08\n\x06targetB\t\n\x07_action\"\xb6\x02\n\x11SearchRunsRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\'.coreApi.SearchRunsRequest.FiltersEntry\x12\x12\n\x05limit\x18\x03 \x01(\x04H\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\x04H\x01\x88\x01\x01\x12\'\n\x06status\x18\x05 \x01(\x0e\x32\x12.coreApi.RunStatusH\x02\x88\x01\x01\x12\x0e\n\x06select\x18\x06 \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07_status\"0\n\x12SearchRunsResponse\x12\x1a\n\x04runs\x18\x01 \x03(\x0b\x32\x0c.coreApi.Run\"X\n\x13SetRunStatusRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\"\n\x06status\x18\x02 \x01(\x0e\x32\x12.coreApi.RunStatus\"3\n\x11SweepRunsResponse\x12\x1e\n\x07run_ids\x18\x01 \x03(\x0b\x32\r.coreApi.UUID*/\n\x12OnConflictBehavior\x12\t\n\x05RAISE\x10\x00\x12\x0e\n\nDO_NOTHING\x10\x01*\x1e\n\tSortOrder\x12\x08\n\x04\x44\x45SC\x10\x00\x12\x07\n\x03\x41SC\x10\x01*m\n\x10\x41ssistantsSortBy\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x10\n\x0c\x41SSISTANT_ID\x10\x01\x12\x0c\n\x08GRAPH_ID\x10\x02\x12\x08\n\x04NAME\x10\x03\x12\x0e\n\nCREATED_AT\x10\x04\x12\x0e\n\nUPDATED_AT\x10\x05*v\n\x0cThreadStatus\x12\x16\n\x12THREAD_STATUS_IDLE\x10\x00\x12\x16\n\x12THREAD_STATUS_BUSY\x10\x01\x12\x1d\n\x19THREAD_STATUS_INTERRUPTED\x10\x02\x12\x17\n\x13THREAD_STATUS_ERROR\x10\x03*3\n\x11ThreadTTLStrategy\x12\x1e\n\x1aTHREAD_TTL_STRATEGY_DELETE\x10\x00*\xa8\x01\n\x10\x43heckpointSource\x12!\n\x1d\x43HECKPOINT_SOURCE_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x43HECKPOINT_SOURCE_INPUT\x10\x01\x12\x1a\n\x16\x43HECKPOINT_SOURCE_LOOP\x10\x02\x12\x1c\n\x18\x43HECKPOINT_SOURCE_UPDATE\x10\x03\x12\x1a\n\x16\x43HECKPOINT_SOURCE_FORK\x10\x04*\xab\x01\n\rThreadsSortBy\x12\x1f\n\x1bTHREADS_SORT_BY_UNSPECIFIED\x10\x00\x12\x1d\n\x19THREADS_SORT_BY_THREAD_ID\x10\x01\x12\x1e\n\x1aTHREADS_SORT_BY_CREATED_AT\x10\x02\x12\x1e\n\x1aTHREADS_SORT_BY_UPDATED_AT\x10\x03\x12\x1a\n\x16THREADS_SORT_BY_STATUS\x10\x04*\x9d\x01\n\tRunStatus\x12\x16\n\x12RUN_STATUS_PENDING\x10\x00\x12\x16\n\x12RUN_STATUS_RUNNING\x10\x01\x12\x14\n\x10RUN_STATUS_ERROR\x10\x02\x12\x16\n\x12RUN_STATUS_SUCCESS\x10\x03\x12\x16\n\x12RUN_STATUS_TIMEOUT\x10\x04\x12\x1a\n\x16RUN_STATUS_INTERRUPTED\x10\x05*\xb9\x01\n\x11MultitaskStrategy\x12\"\n\x1eMULTITASK_STRATEGY_UNSPECIFIED\x10\x00\x12\x1d\n\x19MULTITASK_STRATEGY_REJECT\x10\x01\x12\x1f\n\x1bMULTITASK_STRATEGY_ROLLBACK\x10\x02\x12 \n\x1cMULTITASK_STRATEGY_INTERRUPT\x10\x03\x12\x1e\n\x1aMULTITASK_STRATEGY_ENQUEUE\x10\x04*\xef\x01\n\nStreamMode\x12\x1b\n\x17STREAM_MODE_UNSPECIFIED\x10\x00\x12\x16\n\x12STREAM_MODE_VALUES\x10\x01\x12\x18\n\x14STREAM_MODE_MESSAGES\x10\x02\x12\x17\n\x13STREAM_MODE_UPDATES\x10\x03\x12\x16\n\x12STREAM_MODE_EVENTS\x10\x04\x12\x15\n\x11STREAM_MODE_DEBUG\x10\x05\x12\x15\n\x11STREAM_MODE_TASKS\x10\x06\x12\x1b\n\x17STREAM_MODE_CHECKPOINTS\x10\x07\x12\x16\n\x12STREAM_MODE_CUSTOM\x10\x08*`\n\x11\x43reateRunBehavior\x12#\n\x1fREJECT_RUN_IF_THREAD_NOT_EXISTS\x10\x00\x12&\n\"CREATE_THREAD_IF_THREAD_NOT_EXISTS\x10\x01*R\n\x0f\x43\x61ncelRunAction\x12\x1f\n\x1b\x43\x41NCEL_RUN_ACTION_INTERRUPT\x10\x00\x12\x1e\n\x1a\x43\x41NCEL_RUN_ACTION_ROLLBACK\x10\x01*j\n\x0f\x43\x61ncelRunStatus\x12\x1d\n\x19\x43\x41NCEL_RUN_STATUS_PENDING\x10\x00\x12\x1d\n\x19\x43\x41NCEL_RUN_STATUS_RUNNING\x10\x01\x12\x19\n\x15\x43\x41NCEL_RUN_STATUS_ALL\x10\x02\x32\xc1\x04\n\nAssistants\x12\x37\n\x03Get\x12\x1c.coreApi.GetAssistantRequest\x1a\x12.coreApi.Assistant\x12=\n\x06\x43reate\x12\x1f.coreApi.CreateAssistantRequest\x1a\x12.coreApi.Assistant\x12;\n\x05Patch\x12\x1e.coreApi.PatchAssistantRequest\x1a\x12.coreApi.Assistant\x12L\n\x06\x44\x65lete\x12\x1f.coreApi.DeleteAssistantRequest\x1a!.coreApi.DeleteAssistantsResponse\x12M\n\x06Search\x12 .coreApi.SearchAssistantsRequest\x1a!.coreApi.SearchAssistantsResponse\x12\x43\n\tSetLatest\x12\".coreApi.SetLatestAssistantRequest\x1a\x12.coreApi.Assistant\x12Z\n\x0bGetVersions\x12$.coreApi.GetAssistantVersionsRequest\x1a%.coreApi.GetAssistantVersionsResponse\x12@\n\x05\x43ount\x12\x1f.coreApi.CountAssistantsRequest\x1a\x16.coreApi.CountResponse2E\n\x05\x41\x64min\x12<\n\x08Truncate\x12\x18.coreApi.TruncateRequest\x1a\x16.google.protobuf.Empty2\xcd\x05\n\x07Threads\x12\x37\n\x06\x43reate\x12\x1c.coreApi.CreateThreadRequest\x1a\x0f.coreApi.Thread\x12\x31\n\x03Get\x12\x19.coreApi.GetThreadRequest\x1a\x0f.coreApi.Thread\x12\x35\n\x05Patch\x12\x1b.coreApi.PatchThreadRequest\x1a\x0f.coreApi.Thread\x12\x35\n\x06\x44\x65lete\x12\x1c.coreApi.DeleteThreadRequest\x1a\r.coreApi.UUID\x12G\n\x06Search\x12\x1d.coreApi.SearchThreadsRequest\x1a\x1e.coreApi.SearchThreadsResponse\x12=\n\x05\x43ount\x12\x1c.coreApi.CountThreadsRequest\x1a\x16.coreApi.CountResponse\x12\x33\n\x04\x43opy\x12\x1a.coreApi.CopyThreadRequest\x1a\x0f.coreApi.Thread\x12\x44\n\tSetStatus\x12\x1f.coreApi.SetThreadStatusRequest\x1a\x16.google.protobuf.Empty\x12N\n\x0eSetJointStatus\x12$.coreApi.SetThreadJointStatusRequest\x1a\x16.google.protobuf.Empty\x12\x46\n\rJointRollback\x12\x1d.coreApi.JointRollbackRequest\x1a\x16.google.protobuf.Empty\x12M\n\x08SweepTTL\x12\x1f.coreApi.SweepThreadsTTLRequest\x1a .coreApi.SweepThreadsTTLResponse2\x8b\x04\n\x04Runs\x12\x31\n\x06\x43reate\x12\x19.coreApi.CreateRunRequest\x1a\x0c.coreApi.Run\x12+\n\x03Get\x12\x16.coreApi.GetRunRequest\x1a\x0c.coreApi.Run\x12\x32\n\x06\x44\x65lete\x12\x19.coreApi.DeleteRunRequest\x1a\r.coreApi.UUID\x12\x41\n\x06Search\x12\x1a.coreApi.SearchRunsRequest\x1a\x1b.coreApi.SearchRunsResponse\x12;\n\x06\x43\x61ncel\x12\x19.coreApi.CancelRunRequest\x1a\x16.google.protobuf.Empty\x12\x41\n\tSetStatus\x12\x1c.coreApi.SetRunStatusRequest\x1a\x16.google.protobuf.Empty\x12\x34\n\x05Stats\x12\x16.google.protobuf.Empty\x1a\x13.coreApi.QueueStats\x12\x39\n\x04Next\x12\x17.coreApi.NextRunRequest\x1a\x18.coreApi.NextRunResponse\x12;\n\x05Sweep\x12\x16.google.protobuf.Empty\x1a\x1a.coreApi.SweepRunsResponseBAZ?github.com/langchain-ai/langgraph-api/core/internal/core-api/pbb\x06proto3')
|
|
31
31
|
|
|
32
32
|
_globals = globals()
|
|
33
33
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
34
34
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'core_api_pb2', _globals)
|
|
35
35
|
if not _descriptor._USE_C_DESCRIPTORS:
|
|
36
36
|
_globals['DESCRIPTOR']._loaded_options = None
|
|
37
|
-
_globals['DESCRIPTOR']._serialized_options = b'Z
|
|
37
|
+
_globals['DESCRIPTOR']._serialized_options = b'Z?github.com/langchain-ai/langgraph-api/core/internal/core-api/pb'
|
|
38
38
|
_globals['_CREATEASSISTANTREQUEST_FILTERSENTRY']._loaded_options = None
|
|
39
39
|
_globals['_CREATEASSISTANTREQUEST_FILTERSENTRY']._serialized_options = b'8\001'
|
|
40
40
|
_globals['_GETASSISTANTREQUEST_FILTERSENTRY']._loaded_options = None
|
langgraph_api/grpc_ops/ops.py
CHANGED
|
@@ -5,6 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
import asyncio
|
|
6
6
|
import functools
|
|
7
7
|
from collections.abc import AsyncIterator
|
|
8
|
+
from datetime import UTC
|
|
8
9
|
from http import HTTPStatus
|
|
9
10
|
from typing import Any
|
|
10
11
|
from uuid import UUID
|
|
@@ -151,8 +152,8 @@ def proto_to_assistant(proto_assistant: pb.Assistant) -> Assistant:
|
|
|
151
152
|
"assistant_id": proto_assistant.assistant_id,
|
|
152
153
|
"graph_id": proto_assistant.graph_id,
|
|
153
154
|
"version": proto_assistant.version,
|
|
154
|
-
"created_at": proto_assistant.created_at.ToDatetime(),
|
|
155
|
-
"updated_at": proto_assistant.updated_at.ToDatetime(),
|
|
155
|
+
"created_at": proto_assistant.created_at.ToDatetime(tzinfo=UTC),
|
|
156
|
+
"updated_at": proto_assistant.updated_at.ToDatetime(tzinfo=UTC),
|
|
156
157
|
"config": _runnable_config_to_user_dict(proto_assistant.config),
|
|
157
158
|
"context": struct_to_dict(proto_assistant.context),
|
|
158
159
|
"metadata": struct_to_dict(proto_assistant.metadata),
|
|
@@ -571,7 +572,7 @@ class Assistants(Authenticated):
|
|
|
571
572
|
"assistant_id": version.assistant_id,
|
|
572
573
|
"graph_id": version.graph_id,
|
|
573
574
|
"version": version.version,
|
|
574
|
-
"created_at": version.created_at.ToDatetime(),
|
|
575
|
+
"created_at": version.created_at.ToDatetime(tzinfo=UTC),
|
|
575
576
|
"config": _runnable_config_to_user_dict(version.config),
|
|
576
577
|
"context": struct_to_dict(version.context),
|
|
577
578
|
"metadata": struct_to_dict(version.metadata),
|
langgraph_api/server.py
CHANGED
|
@@ -26,11 +26,17 @@ from langgraph_sdk.client import configure_loopback_transports
|
|
|
26
26
|
from starlette.applications import Starlette
|
|
27
27
|
from starlette.middleware import Middleware
|
|
28
28
|
from starlette.middleware.cors import CORSMiddleware
|
|
29
|
-
from starlette.routing import Mount
|
|
29
|
+
from starlette.routing import BaseRoute, Mount
|
|
30
30
|
from starlette.types import Receive, Scope, Send
|
|
31
31
|
|
|
32
32
|
import langgraph_api.config as config
|
|
33
|
-
from langgraph_api.api import
|
|
33
|
+
from langgraph_api.api import (
|
|
34
|
+
middleware_for_protected_routes,
|
|
35
|
+
protected_routes,
|
|
36
|
+
shadowable_meta_routes,
|
|
37
|
+
unshadowable_meta_routes,
|
|
38
|
+
user_router,
|
|
39
|
+
)
|
|
34
40
|
from langgraph_api.api.openapi import set_custom_spec
|
|
35
41
|
from langgraph_api.errors import (
|
|
36
42
|
overloaded_error_handler,
|
|
@@ -48,10 +54,10 @@ from langgraph_runtime.retry import OVERLOADED_EXCEPTIONS
|
|
|
48
54
|
logging.captureWarnings(True)
|
|
49
55
|
logger = structlog.stdlib.get_logger(__name__)
|
|
50
56
|
|
|
51
|
-
|
|
57
|
+
global_middleware = []
|
|
52
58
|
|
|
53
59
|
if config.ALLOW_PRIVATE_NETWORK:
|
|
54
|
-
|
|
60
|
+
global_middleware.append(Middleware(PrivateNetworkMiddleware))
|
|
55
61
|
|
|
56
62
|
JS_PROXY_MIDDLEWARE_ENABLED = (
|
|
57
63
|
config.HTTP_CONFIG
|
|
@@ -62,9 +68,9 @@ JS_PROXY_MIDDLEWARE_ENABLED = (
|
|
|
62
68
|
if JS_PROXY_MIDDLEWARE_ENABLED:
|
|
63
69
|
from langgraph_api.js.remote import JSCustomHTTPProxyMiddleware
|
|
64
70
|
|
|
65
|
-
|
|
71
|
+
global_middleware.append(Middleware(JSCustomHTTPProxyMiddleware))
|
|
66
72
|
|
|
67
|
-
|
|
73
|
+
global_middleware.extend(
|
|
68
74
|
[
|
|
69
75
|
(
|
|
70
76
|
Middleware(
|
|
@@ -120,32 +126,84 @@ def update_openapi_spec(app):
|
|
|
120
126
|
set_custom_spec(spec)
|
|
121
127
|
|
|
122
128
|
|
|
129
|
+
def apply_middleware(
|
|
130
|
+
routes: list[BaseRoute], middleware: list[Middleware]
|
|
131
|
+
) -> list[BaseRoute]:
|
|
132
|
+
"""Applies middleware to a list of routes.
|
|
133
|
+
|
|
134
|
+
Routes are modified in place (only the `app` attribute is modified);
|
|
135
|
+
the modified routes are returned for convenience.
|
|
136
|
+
"""
|
|
137
|
+
middleware_routes = []
|
|
138
|
+
for route in routes:
|
|
139
|
+
for cls, args, kwargs in reversed(middleware):
|
|
140
|
+
if hasattr(route, "app"):
|
|
141
|
+
route.app = cls(route.app, *args, **kwargs) # type: ignore
|
|
142
|
+
else:
|
|
143
|
+
raise ValueError(f"Cannot apply middleware: route {route} has no app")
|
|
144
|
+
middleware_routes.append(route)
|
|
145
|
+
return middleware_routes
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
custom_middleware = (
|
|
149
|
+
user_router.user_middleware if user_router and user_router.user_middleware else []
|
|
150
|
+
)
|
|
151
|
+
auth_before_custom_middleware = (
|
|
152
|
+
config.HTTP_CONFIG and config.HTTP_CONFIG.get("middleware_order") == "auth_first"
|
|
153
|
+
)
|
|
154
|
+
# Custom middleware to be applied at the route/mount level, not globally (app level).
|
|
155
|
+
route_level_custom_middleware = (
|
|
156
|
+
custom_middleware if auth_before_custom_middleware else []
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
protected_mount = Mount(
|
|
160
|
+
"",
|
|
161
|
+
routes=protected_routes,
|
|
162
|
+
middleware=(
|
|
163
|
+
middleware_for_protected_routes + route_level_custom_middleware
|
|
164
|
+
if auth_before_custom_middleware
|
|
165
|
+
else route_level_custom_middleware + middleware_for_protected_routes
|
|
166
|
+
),
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
|
|
123
170
|
if user_router:
|
|
124
171
|
# Merge routes
|
|
125
172
|
app = user_router
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
173
|
+
if auth_before_custom_middleware:
|
|
174
|
+
# Authentication middleware is only applied to protected routes--
|
|
175
|
+
# it is *not* global middleware. This means that by default,
|
|
176
|
+
# authentication middleware is necessarily applied *after* any global middleware.
|
|
177
|
+
# including custom middleware that the user might have supplied.
|
|
178
|
+
#
|
|
179
|
+
# To apply authentication middleware before custom middleware,
|
|
180
|
+
# we must rearrange things a bit:
|
|
181
|
+
# 1. Extract user-supplied routes and bundle them into a `Mount`
|
|
182
|
+
# so that we can easily apply custom middleware to all of them at once.
|
|
183
|
+
# 2. Extract custom middleware from the user-supplied app.
|
|
184
|
+
# Remove it globally, but apply it to each bundle of routes at the mount level.
|
|
185
|
+
# This gives us more flexibility in ordering: we can now apply this
|
|
186
|
+
# custom middleware before *or* after authentication middleware,
|
|
187
|
+
# depending on the `middleware_order` config.
|
|
188
|
+
user_app = apply_middleware(
|
|
189
|
+
routes=app.routes, middleware=route_level_custom_middleware
|
|
190
|
+
)
|
|
191
|
+
app.user_middleware = global_middleware
|
|
192
|
+
else:
|
|
193
|
+
user_app = app.routes
|
|
194
|
+
app.user_middleware = custom_middleware + global_middleware
|
|
195
|
+
|
|
196
|
+
app.router.routes = (
|
|
197
|
+
apply_middleware(unshadowable_meta_routes, route_level_custom_middleware)
|
|
198
|
+
+ user_app
|
|
199
|
+
+ apply_middleware(shadowable_meta_routes, route_level_custom_middleware)
|
|
200
|
+
+ [protected_mount]
|
|
201
|
+
)
|
|
136
202
|
|
|
137
203
|
update_openapi_spec(app)
|
|
138
|
-
for route in routes:
|
|
139
|
-
if getattr(route, "path", None) in ("/docs", "/openapi.json"):
|
|
140
|
-
# Our handlers for these are inclusive of the custom routes and default API ones
|
|
141
|
-
# Don't let these be shadowed
|
|
142
|
-
app.router.routes.insert(0, route)
|
|
143
|
-
else:
|
|
144
|
-
# Everything else could be shadowed.
|
|
145
|
-
app.router.routes.append(route)
|
|
146
204
|
|
|
147
|
-
# Merge lifespans
|
|
148
|
-
|
|
205
|
+
# Merge lifespans (base + user)
|
|
206
|
+
user_lifespan = app.router.lifespan_context
|
|
149
207
|
if app.router.on_startup or app.router.on_shutdown:
|
|
150
208
|
raise ValueError(
|
|
151
209
|
f"Cannot merge lifespans with on_startup or on_shutdown: {app.router.on_startup} {app.router.on_shutdown}"
|
|
@@ -154,17 +212,15 @@ if user_router:
|
|
|
154
212
|
@asynccontextmanager
|
|
155
213
|
async def combined_lifespan(app):
|
|
156
214
|
async with lifespan(app):
|
|
157
|
-
if
|
|
158
|
-
async with
|
|
215
|
+
if user_lifespan:
|
|
216
|
+
async with user_lifespan(app):
|
|
159
217
|
yield
|
|
160
218
|
else:
|
|
161
219
|
yield
|
|
162
220
|
|
|
163
221
|
app.router.lifespan_context = combined_lifespan
|
|
164
222
|
|
|
165
|
-
# Merge
|
|
166
|
-
app.user_middleware = (app.user_middleware or []) + middleware
|
|
167
|
-
# Merge exception handlers
|
|
223
|
+
# Merge exception handlers (base + user)
|
|
168
224
|
for k, v in exception_handlers.items():
|
|
169
225
|
if k not in app.exception_handlers:
|
|
170
226
|
app.exception_handlers[k] = v
|
|
@@ -173,16 +229,20 @@ if user_router:
|
|
|
173
229
|
# If the user creates a loopback client with `get_client() (no url)
|
|
174
230
|
# this will update the http transport to connect to the right app
|
|
175
231
|
configure_loopback_transports(app)
|
|
176
|
-
|
|
177
232
|
else:
|
|
178
233
|
# It's a regular starlette app
|
|
179
234
|
app = Starlette(
|
|
180
|
-
routes=
|
|
235
|
+
routes=apply_middleware(
|
|
236
|
+
unshadowable_meta_routes + shadowable_meta_routes,
|
|
237
|
+
route_level_custom_middleware,
|
|
238
|
+
)
|
|
239
|
+
+ [protected_mount],
|
|
181
240
|
lifespan=lifespan,
|
|
182
|
-
middleware=
|
|
241
|
+
middleware=global_middleware,
|
|
183
242
|
exception_handlers=exception_handlers,
|
|
184
243
|
)
|
|
185
244
|
|
|
245
|
+
|
|
186
246
|
if config.MOUNT_PREFIX:
|
|
187
247
|
prefix = config.MOUNT_PREFIX
|
|
188
248
|
if not prefix.startswith("/") or prefix.endswith("/"):
|
langgraph_api/validation.py
CHANGED
|
@@ -8,6 +8,9 @@ with open(pathlib.Path(__file__).parent.parent / "openapi.json") as f:
|
|
|
8
8
|
|
|
9
9
|
openapi = orjson.loads(openapi_str)
|
|
10
10
|
|
|
11
|
+
ConfigValidator = jsonschema_rs.validator_for(
|
|
12
|
+
openapi["components"]["schemas"]["Config"]
|
|
13
|
+
)
|
|
11
14
|
AssistantVersionsSearchRequest = jsonschema_rs.validator_for(
|
|
12
15
|
openapi["components"]["schemas"]["AssistantVersionsSearchRequest"]
|
|
13
16
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
langgraph_api/__init__.py,sha256=
|
|
1
|
+
langgraph_api/__init__.py,sha256=h8aRxmAAKfL5Jkrm7_IsujcDDHiKRo8DdMgCBl8-aWg,23
|
|
2
2
|
langgraph_api/asgi_transport.py,sha256=XtiLOu4WWsd-xizagBLzT5xUkxc9ZG9YqwvETBPjBFE,5161
|
|
3
3
|
langgraph_api/asyncio.py,sha256=FEEkLm_N-15cbElo4vQ309MkDKBZuRqAYV8VJ1DocNw,9860
|
|
4
4
|
langgraph_api/cli.py,sha256=o_zD2vkky06dzW87HQgkIR1_h3ZCSZ8tgNvFCK9rKVo,19669
|
|
@@ -8,7 +8,7 @@ langgraph_api/cron_scheduler.py,sha256=25wYzEQrhPEivZrAPYOmzLPDOQa-aFogU37mTXc9T
|
|
|
8
8
|
langgraph_api/errors.py,sha256=zlnl3xXIwVG0oGNKKpXf1an9Rn_SBDHSyhe53hU6aLw,1858
|
|
9
9
|
langgraph_api/executor_entrypoint.py,sha256=CaX813ygtf9CpOaBkfkQXJAHjFtmlScCkrOvTDmu4Aw,750
|
|
10
10
|
langgraph_api/feature_flags.py,sha256=taZRhukeBV8r62EmEo92rxfBwYhIw56-P_UvSzQLzt8,576
|
|
11
|
-
langgraph_api/graph.py,sha256=
|
|
11
|
+
langgraph_api/graph.py,sha256=YDNncFFnjOjX_ylHDVY3Z4Ehj62zyHFJPaiRCkLAZus,25285
|
|
12
12
|
langgraph_api/http.py,sha256=fyK-H-0UfNy_BzuVW3aWWGvhRavmGAVMkDwDArryJ_4,5659
|
|
13
13
|
langgraph_api/http_metrics.py,sha256=iOJKQW8VdgkhWp5aBjy1RUghH5noxJTVFPEmmXwgCbE,5097
|
|
14
14
|
langgraph_api/http_metrics_utils.py,sha256=sjxF7SYGTzY0Wz_G0dzatsYNnWr31S6ujej4JmBG2yo,866
|
|
@@ -20,19 +20,19 @@ langgraph_api/route.py,sha256=EBhELuJ1He-ZYcAnR5YTImcIeDtWthDae5CHELBxPkM,5056
|
|
|
20
20
|
langgraph_api/schema.py,sha256=spZ_XPT4AMJfw2YatsdnMZZLzgB9Sm3YR8n0SlgGdJ8,8480
|
|
21
21
|
langgraph_api/self_hosted_metrics.py,sha256=JyDGs7lTKndL_vdtGq4rbPtOGdxCkil9_u6d_wTJeds,13980
|
|
22
22
|
langgraph_api/serde.py,sha256=Jkww6ixP5o2YZmnXtM7ihuAYC6YSuNDNPvE-8ILoqVo,5499
|
|
23
|
-
langgraph_api/server.py,sha256=
|
|
23
|
+
langgraph_api/server.py,sha256=NNn9aqs74gfvL1amp_2oylamxt4UAD43QD6DQMhB6iA,9656
|
|
24
24
|
langgraph_api/sse.py,sha256=SLdtZmTdh5D8fbWrQjuY9HYLd2dg8Rmi6ZMmFMVc2iE,4204
|
|
25
25
|
langgraph_api/state.py,sha256=AjkLbUQakIwK7oGzJ8oqubazRsXxG3vDMnRa0s0mzDM,4716
|
|
26
26
|
langgraph_api/store.py,sha256=NIoNZojs6NbtG3VLBPQEFNttvp7XPkHAfjbQ3gY7aLY,4701
|
|
27
27
|
langgraph_api/stream.py,sha256=VA1CvR3kN6d03KAkSJgTVum4zfkI42cEGRqoGeEufeI,21167
|
|
28
28
|
langgraph_api/thread_ttl.py,sha256=KyHnvD0e1p1cV4Z_ZvKNVzDztuI2RBCUsUO2V7GlOSw,1951
|
|
29
29
|
langgraph_api/traceblock.py,sha256=Qq5CUdefnMDaRDnyvBSWGBClEj-f3oO7NbH6fedxOSE,630
|
|
30
|
-
langgraph_api/validation.py,sha256
|
|
30
|
+
langgraph_api/validation.py,sha256=-ZJy-HY3Qs6dJ4J67m1eDhIF0oA-P57VrsUXl0Vy-Bc,5381
|
|
31
31
|
langgraph_api/webhook.py,sha256=SvSM1rdnNtiH4q3JQYmAqJUk2Sable5xAcwOLuRhtlo,1723
|
|
32
32
|
langgraph_api/worker.py,sha256=HHgf590xElF7v02lgn0lG0iK2v2sENMjdx7TVFCvYXY,15399
|
|
33
|
-
langgraph_api/api/__init__.py,sha256=
|
|
33
|
+
langgraph_api/api/__init__.py,sha256=wrnxz_204b2Vhv4-N0WpiPf-ZpDDlmIQkbh-TiXPnOo,5997
|
|
34
34
|
langgraph_api/api/a2a.py,sha256=HIHZkLnIcM1u1FJti-L2NH-h1I9BZ_d-QW9z3gFonn8,53995
|
|
35
|
-
langgraph_api/api/assistants.py,sha256=
|
|
35
|
+
langgraph_api/api/assistants.py,sha256=tRJse7Gr2BTeTZPljL05UvGkFiULpA-6hy03nBx9PF4,18177
|
|
36
36
|
langgraph_api/api/mcp.py,sha256=qe10ZRMN3f-Hli-9TI8nbQyWvMeBb72YB1PZVbyqBQw,14418
|
|
37
37
|
langgraph_api/api/meta.py,sha256=464nRdZPCPG-T1rouypReI8SPLHZlEec8dIj22H1Vvo,4787
|
|
38
38
|
langgraph_api/api/openapi.py,sha256=If-z1ckXt-Yu5bwQytK1LWyX_T7G46UtLfixgEP8hwc,11959
|
|
@@ -50,9 +50,9 @@ langgraph_api/auth/langsmith/backend.py,sha256=rdkz8IXLHusJqcoacvl2XuMZnQVR7PLpE
|
|
|
50
50
|
langgraph_api/auth/langsmith/client.py,sha256=Kn9503en1tmlNtkbvqRxYSRCOUrWaVpqvxyLLb1cgzY,3908
|
|
51
51
|
langgraph_api/grpc_ops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
52
|
langgraph_api/grpc_ops/client.py,sha256=VB740C9QMhJJrpAEjsADmasN-uGd0apGYtuv_ho0Rl8,2452
|
|
53
|
-
langgraph_api/grpc_ops/ops.py,sha256=
|
|
53
|
+
langgraph_api/grpc_ops/ops.py,sha256=VFmFIgXZmE3Xi1tGx-eZrqls6qMG0w5a2Ym7w2Wm9Iw,19733
|
|
54
54
|
langgraph_api/grpc_ops/generated/__init__.py,sha256=dRiB_iGscPKdMpuLp9ueLwAmIfRaNjNXC64ABtb4cg8,135
|
|
55
|
-
langgraph_api/grpc_ops/generated/core_api_pb2.py,sha256=
|
|
55
|
+
langgraph_api/grpc_ops/generated/core_api_pb2.py,sha256=fY01nY_MwlujYiyZcNMvR2DGEnyIkYbZ59p6mNjQKZE,42149
|
|
56
56
|
langgraph_api/grpc_ops/generated/core_api_pb2.pyi,sha256=-vJ6C020K9Kt44mH7-S9sy0QBLMXJsyB3T9AKIH1s4g,49184
|
|
57
57
|
langgraph_api/grpc_ops/generated/core_api_pb2_grpc.py,sha256=Qav2DuCMUSmR8nP4-fVtUBbY0Vc42jqjCs3L4LdIl-0,52467
|
|
58
58
|
langgraph_api/js/.gitignore,sha256=l5yI6G_V6F1600I1IjiUKn87f4uYIrBAYU1MOyBBhg4,59
|
|
@@ -109,8 +109,8 @@ langgraph_runtime/store.py,sha256=7mowndlsIroGHv3NpTSOZDJR0lCuaYMBoTnTrewjslw,11
|
|
|
109
109
|
LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
|
|
110
110
|
logging.json,sha256=3RNjSADZmDq38eHePMm1CbP6qZ71AmpBtLwCmKU9Zgo,379
|
|
111
111
|
openapi.json,sha256=21wu-NxdxyTQwZctNcEfRkLMnSBi0QhGAfwq5kg8XNU,172618
|
|
112
|
-
langgraph_api-0.4.
|
|
113
|
-
langgraph_api-0.4.
|
|
114
|
-
langgraph_api-0.4.
|
|
115
|
-
langgraph_api-0.4.
|
|
116
|
-
langgraph_api-0.4.
|
|
112
|
+
langgraph_api-0.4.36.dist-info/METADATA,sha256=HAidcwwtUaW07SG49fGJwggSl1U27apyxgnVBQ30M9k,4156
|
|
113
|
+
langgraph_api-0.4.36.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
114
|
+
langgraph_api-0.4.36.dist-info/entry_points.txt,sha256=hGedv8n7cgi41PypMfinwS_HfCwA7xJIfS0jAp8htV8,78
|
|
115
|
+
langgraph_api-0.4.36.dist-info/licenses/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
|
|
116
|
+
langgraph_api-0.4.36.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|