langgraph-api 0.16.0.dev6__py3-none-any.whl → 0.16.0.dev8__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.
langgraph_api/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.16.0.dev6"
1
+ __version__ = "0.16.0.dev8"
langgraph_api/api/a2a.py CHANGED
@@ -1233,21 +1233,18 @@ def _create_interrupt_artifact(interrupts: list[dict[str, Any]]) -> dict[str, An
1233
1233
  """Create an A2A artifact from interrupt data.
1234
1234
 
1235
1235
  Args:
1236
- interrupts: List of interrupt objects with 'id' and 'value' keys
1236
+ interrupts: List of interrupt objects with 'id' and 'value' keys and an
1237
+ optional 'response_schema'
1237
1238
 
1238
1239
  Returns:
1239
1240
  A2A artifact dict with interrupt data parts
1240
1241
  """
1241
- interrupt_parts = [
1242
- {
1243
- "kind": "data",
1244
- "data": {
1245
- "id": interrupt_obj.get("id"),
1246
- "value": interrupt_obj.get("value"),
1247
- },
1248
- }
1249
- for interrupt_obj in interrupts
1250
- ]
1242
+ interrupt_parts = []
1243
+ for interrupt_obj in interrupts:
1244
+ data = {"id": interrupt_obj.get("id"), "value": interrupt_obj.get("value")}
1245
+ if (schema := interrupt_obj.get("response_schema")) is not None:
1246
+ data["response_schema"] = schema
1247
+ interrupt_parts.append({"kind": "data", "data": data})
1251
1248
  return {
1252
1249
  "artifactId": str(uuid.uuid4()),
1253
1250
  "name": "Interrupt",
@@ -4,6 +4,7 @@ from starlette.exceptions import HTTPException
4
4
  from starlette.responses import Response
5
5
  from starlette.routing import BaseRoute
6
6
 
7
+ from langgraph_api.config import USE_CUSTOM_CHECKPOINTER
7
8
  from langgraph_api.encryption.middleware import (
8
9
  decrypt_response,
9
10
  decrypt_responses,
@@ -45,6 +46,7 @@ from langgraph_api.validation import (
45
46
  ThreadStateSearch,
46
47
  ThreadStateUpdate,
47
48
  )
49
+ from langgraph_runtime import checkpoint as runtime_checkpoint
48
50
  from langgraph_runtime.database import connect
49
51
  from langgraph_runtime.retry import retry_db
50
52
 
@@ -376,6 +378,25 @@ async def get_thread_history_post(
376
378
  return ApiResponse(states)
377
379
 
378
380
 
381
+ @retry_db
382
+ async def get_thread_storage(request: ApiRequest):
383
+ """Bytes a thread's checkpoints occupy, per table and per channel."""
384
+ thread_id = request.path_params["thread_id"]
385
+ validate_uuid(thread_id, "Invalid thread ID: must be a UUID")
386
+ thread_storage = getattr(runtime_checkpoint, "thread_storage", None)
387
+ if USE_CUSTOM_CHECKPOINTER or thread_storage is None:
388
+ raise HTTPException(
389
+ status_code=501,
390
+ detail="Checkpoint storage is only reported for the built-in checkpointer.",
391
+ )
392
+ async with connect() as conn:
393
+ await fetchone(await Threads.get(conn, thread_id))
394
+ # The built-in tables are read directly; the core-api stand-in cannot run SQL.
395
+ async with connect(supports_core_api=False) as conn:
396
+ storage = await thread_storage(conn, thread_id)
397
+ return ApiResponse({"thread_id": thread_id, **storage})
398
+
399
+
379
400
  @retry_db
380
401
  async def get_thread(
381
402
  request: ApiRequest,
@@ -547,6 +568,9 @@ threads_routes: list[BaseRoute] = [
547
568
  ApiRoute("/threads/{thread_id}", endpoint=patch_thread, methods=["PATCH"]),
548
569
  ApiRoute("/threads/{thread_id}", endpoint=delete_thread, methods=["DELETE"]),
549
570
  ApiRoute("/threads/{thread_id}/state", endpoint=get_thread_state, methods=["GET"]),
571
+ ApiRoute(
572
+ "/threads/{thread_id}/storage", endpoint=get_thread_storage, methods=["GET"]
573
+ ),
550
574
  ApiRoute(
551
575
  "/threads/{thread_id}/state", endpoint=update_thread_state, methods=["POST"]
552
576
  ),
@@ -201,6 +201,8 @@ def _proto_interrupts_to_dict(
201
201
  entry["resumable"] = interrupt.resumable
202
202
  if interrupt.ns:
203
203
  entry["ns"] = list(interrupt.ns)
204
+ if interrupt.response_schema:
205
+ entry["response_schema"] = json_loads(interrupt.response_schema)
204
206
  entries.append(entry)
205
207
  out[key] = entries
206
208
  return out
@@ -13,6 +13,7 @@ import orjson
13
13
  import structlog
14
14
  from google.protobuf.empty_pb2 import Empty # ty: ignore[unresolved-import]
15
15
  from langgraph_grpc_common.conversion.checkpoint import (
16
+ checkpoint_config_to_proto,
16
17
  checkpoint_from_proto,
17
18
  checkpoint_metadata_from_proto,
18
19
  checkpoint_tuple_to_proto,
@@ -22,7 +23,6 @@ from langgraph_grpc_common.conversion.checkpoint import (
22
23
  from langgraph_grpc_common.conversion.config import (
23
24
  config_from_proto,
24
25
  config_from_proto_optional,
25
- config_to_proto,
26
26
  )
27
27
  from langgraph_grpc_common.proto import checkpointer_pb2
28
28
  from langgraph_grpc_common.proto.checkpointer_pb2_grpc import CheckpointerServicer
@@ -64,7 +64,7 @@ class CheckpointerServicerImpl(CheckpointerServicer):
64
64
  next_config = await checkpointer.aput(
65
65
  config, checkpoint, metadata, new_versions
66
66
  )
67
- next_config_pb = config_to_proto(next_config)
67
+ next_config_pb = checkpoint_config_to_proto(next_config)
68
68
  if next_config_pb is None:
69
69
  return checkpointer_pb2.PutResponse()
70
70
  return checkpointer_pb2.PutResponse(next_config=next_config_pb)
langgraph_api/schema.py CHANGED
@@ -134,6 +134,8 @@ class Interrupt(TypedDict):
134
134
  """The ID of the interrupt."""
135
135
  value: Any
136
136
  """The value of the interrupt."""
137
+ response_schema: NotRequired[dict[str, Any]]
138
+ """JSON Schema for the value expected when resuming the interrupt, if the graph provided one."""
137
139
 
138
140
 
139
141
  class DeprecatedInterrupt(TypedDict, total=False):
langgraph_api/state.py CHANGED
@@ -49,7 +49,8 @@ def patch_interrupt(
49
49
 
50
50
  In v0.4 and v0.5, interrupt_id is a property on the langgraph.types.Interrupt object,
51
51
  so we reconstruct the type in order to access the id, with compatibility for the new
52
- v0.6 interrupt format as well.
52
+ v0.6 interrupt format as well. `response_schema` is optional; older langgraph releases
53
+ do not set it.
53
54
  """
54
55
 
55
56
  # This is coming from JS, which already contains the interrupt ID.
@@ -61,12 +62,17 @@ def patch_interrupt(
61
62
  return {"id": id, **interrupt.raw}
62
63
 
63
64
  if USE_NEW_INTERRUPTS:
65
+ response_schema = (
66
+ interrupt.get("response_schema")
67
+ if isinstance(interrupt, dict)
68
+ else getattr(interrupt, "response_schema", None)
69
+ )
64
70
  interrupt = Interrupt(**interrupt) if isinstance(interrupt, dict) else interrupt
65
71
 
66
- return {
67
- "id": interrupt.id,
68
- "value": interrupt.value,
69
- }
72
+ patched: InterruptSchema = {"id": interrupt.id, "value": interrupt.value}
73
+ if response_schema is not None:
74
+ patched["response_schema"] = response_schema
75
+ return patched
70
76
  else:
71
77
  if isinstance(interrupt, dict):
72
78
  # interrupt_id is a deprecated property on Interrupt and should not be used for initialization
@@ -1,10 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.16.0.dev6
3
+ Version: 0.16.0.dev8
4
4
  Author-email: Will Fu-Hinthorn <will@langchain.dev>, Josh Rogers <josh@langchain.dev>, Parker Rule <parker@langchain.dev>
5
5
  License: Elastic-2.0
6
6
  License-File: LICENSE
7
7
  Requires-Python: >=3.11
8
+ Requires-Dist: anyio>=4.14.2
8
9
  Requires-Dist: cloudpickle>=3.0.0
9
10
  Requires-Dist: cryptography>=50.0.0
10
11
  Requires-Dist: grpcio-health-checking<1.82.0,>=1.81.0
@@ -1,4 +1,4 @@
1
- langgraph_api/__init__.py,sha256=Tea7ymkB4nX_zD1WSeuGpkEk3r2zpOb-cvWZRXmsogA,28
1
+ langgraph_api/__init__.py,sha256=39NDHcs9G35jg2lL89JTVSZhWrfJmBL4Wmv3gBvsxb8,28
2
2
  langgraph_api/_factory_utils.py,sha256=_FqW0olMu2PGLsnRq0ylt3a4jDCe12YIFHExMXI6Nyo,5976
3
3
  langgraph_api/asgi_transport.py,sha256=XApY3lIWBZTMbbsl8dDJzl0cLGirmAGE0SifqZUnXvs,11896
4
4
  langgraph_api/asyncio.py,sha256=smqyAoO9nIyPPQRw1IVSCh85fwoZP4PEo-5dDhxGruc,10676
@@ -22,13 +22,13 @@ langgraph_api/patch.py,sha256=ViUknYvyQWS6y0f5XuaEoci2qB_mQv8vZl-oaUxsI6M,1448
22
22
  langgraph_api/queue_entrypoint.py,sha256=KUCy7yGNTA538uTbJVaRFXpG2P72GJPVUe4su5ArBhQ,11653
23
23
  langgraph_api/release_tags.py,sha256=XOiX829Bi8eVpKGWg8TiHyidjGfz1p3Pqj0elrAsj8w,10377
24
24
  langgraph_api/route.py,sha256=_KE8A8Q-J-QfqjGlyM2Kc6n5cirmgt8xmI5-pI8kVEE,8837
25
- langgraph_api/schema.py,sha256=EkarLwAUKApevb03AmLRumrAVAc2EsG_SLhYFPncSzk,15318
25
+ langgraph_api/schema.py,sha256=7-UAEU5AT1OgdRgAPNT4sr4xQ_uONS9l2Tp8LGFLx2s,15468
26
26
  langgraph_api/self_hosted_logs.py,sha256=l35fIWKGj5bMf8uwfqlcH2Z0GnS9eVWNn03cXGkVCIk,5992
27
27
  langgraph_api/self_hosted_metrics.py,sha256=pWsQQ-2ukoFIbmVfzNOSkwCqZ5Cnts6pRSWTII44Ll4,16844
28
28
  langgraph_api/serde.py,sha256=po6uWSfI4tOuq1aVeZxWVQKvNT2UqRysEJk33Gbgc4Q,9030
29
29
  langgraph_api/server.py,sha256=L1jGWkvK0fDewyus0xYvYmwQ6k775uNn_mXSKUnIOK0,11245
30
30
  langgraph_api/sse.py,sha256=cChZ7raQUHp8p5BreE_5wMBR8lFO0n7746sV8_HQOrc,4822
31
- langgraph_api/state.py,sha256=A6jx2OpcVmiFNBafjZ2tX1x6s_AhBk5EW2drd-vaqIc,4396
31
+ langgraph_api/state.py,sha256=SC6kOmKXVV2puU37rc3yYveZFgnqP5uI_WidDyE5oXQ,4763
32
32
  langgraph_api/store.py,sha256=i-jVfWzDEmPESVofh1tNWbo0HMLiLz_BSKKV4QjN-dE,5027
33
33
  langgraph_api/stream.py,sha256=Op8mzE4xv46q6QwZfe8GF5soD9cV0FGToTVVDuiEghA,34080
34
34
  langgraph_api/stream_v2.py,sha256=cmbE566boEgKkjcqqf8OvDqjWh8VzvCCsTTlvUF5Drg,10762
@@ -42,7 +42,7 @@ langgraph_api/_checkpointer/__init__.py,sha256=ofJTJLGy7Hsuzhj-2dpfDvrDloM0BzlhT
42
42
  langgraph_api/_checkpointer/_adapter.py,sha256=idGYL-FwyVtUXcmhvfYboARfQAkoj0aFD40L5h9N7F8,22289
43
43
  langgraph_api/_checkpointer/protocol.py,sha256=udgYKMNtKWG_eLDwYkHXV3b2bZLZg8Rsfm3fjkhU-rU,3635
44
44
  langgraph_api/api/__init__.py,sha256=88elgNmz6Y1tIi81dzhHa94KVhLvvIqyEJjcov4aH5U,9463
45
- langgraph_api/api/a2a.py,sha256=ywcLna5SF2s84xfmNHrOIMsNb2wtq1G3Fz5PVOFJFvE,143470
45
+ langgraph_api/api/a2a.py,sha256=0jCMN_BXXRYXJJIZfBkS4es9ilARbW5OIzM3rLvNvd4,143588
46
46
  langgraph_api/api/a2ui.py,sha256=Dx9qwwIOmQ0MfgOwL-UZabBI0F7DEvz3qG1cFkjvnjE,3108
47
47
  langgraph_api/api/assistants.py,sha256=rwaS3_Sy2nqf_2aIuG5XDvhw0GNWmT1-WIsESMuz1x0,21719
48
48
  langgraph_api/api/event_streaming.py,sha256=jvoBp5qHI92JJHsx4f9LEpb0i0VE31G_qFhS5JQWtlA,17809
@@ -51,7 +51,7 @@ langgraph_api/api/openapi.py,sha256=Zkdlb9mjrQyHro1TtrDIWVuaBDovxx-uGWJ1fZMOg54,
51
51
  langgraph_api/api/profile.py,sha256=CA1ZkHALOuP8orYTICnEhcG_JnnA2wnyjbWyeb117jA,3455
52
52
  langgraph_api/api/runs.py,sha256=Po9sBkjTImo1lnKKfgFmYJRtXIGk0Mriqm5_9YC77Kw,36068
53
53
  langgraph_api/api/store.py,sha256=mvFEGlrTN77bxH3rLqreRJ1iWvG0r6iv88nQTAkpuAQ,7244
54
- langgraph_api/api/threads.py,sha256=n2cn0FZr_b1jKq7McX6HHuYn80Z0x89wNH4zLs5Co6Y,19649
54
+ langgraph_api/api/threads.py,sha256=1VaWwUJvCIiCkjHHsaS6l1R-ErlBs3Y-Jzyy954e-WM,20764
55
55
  langgraph_api/api/ui.py,sha256=A1cRxaMK_4pb192mrZ_LMxLSFb8NriYwwvjeDdNDD7k,2803
56
56
  langgraph_api/api/a2ui_schemas/README.md,sha256=fZCc9rSK-qeUHsbJ17EYxMZjS3yUrYQdoQLX7ltgP8M,298
57
57
  langgraph_api/api/a2ui_schemas/client_capabilities.json,sha256=3YAHlRfeOn9dUH6uAek1loCL4caeSUuQzhrtWKWW9nU,1906
@@ -100,9 +100,9 @@ langgraph_api/grpc/ops/assistants.py,sha256=hLDZrAahpGSjzWNzr8nQidTW_4MoCR6sZy5V
100
100
  langgraph_api/grpc/ops/cache.py,sha256=MoPAmSuOwbt2Cud1YZJm_YJeaDHPFy1IiV4m0PDImgg,1399
101
101
  langgraph_api/grpc/ops/crons.py,sha256=BzFTBo0C45oTLzFqxVsR15Fy1RvCoGGEL9rYiI6Zapg,19677
102
102
  langgraph_api/grpc/ops/runs.py,sha256=oOSxzgubnPvRRoRb1OKMDzdcmXve4V6Zh5AWS4sc4Rs,42401
103
- langgraph_api/grpc/ops/threads.py,sha256=SJraV838nZ0m6wRrCia7sLYh8KK1WfY7x5xmcspZLek,48140
103
+ langgraph_api/grpc/ops/threads.py,sha256=EebOAjduXy9MzPVK-GkRaR9o5q9WE3mkI_AUyFiKhSQ,48263
104
104
  langgraph_api/grpc/servicers/__init__.py,sha256=l8yqTA_gMbIj0xHw5-RZYo0JbjL-EpFD8RxPMgW_-bA,422
105
- langgraph_api/grpc/servicers/checkpointer.py,sha256=aeB2hzsDxbb9i-ildx-kylpDxaYtpAUSG6rphOzbDOs,10482
105
+ langgraph_api/grpc/servicers/checkpointer.py,sha256=0NeBZDrRiMTpUElu0ss60FTZ8LDjgnSVRdzwWVnUYF4,10504
106
106
  langgraph_api/grpc/servicers/encryption.py,sha256=qmov9a4gBJqdUNZkFASf6BLKOWce0Juwd_650G-DyPs,16924
107
107
  langgraph_api/js/.gitignore,sha256=l5yI6G_V6F1600I1IjiUKn87f4uYIrBAYU1MOyBBhg4,59
108
108
  langgraph_api/js/.prettierrc,sha256=0es3ovvyNIqIw81rPQsdt1zCQcOdBqyR_DMbFE4Ifms,19
@@ -173,15 +173,15 @@ langgraph_runtime/store.py,sha256=7mowndlsIroGHv3NpTSOZDJR0lCuaYMBoTnTrewjslw,11
173
173
  LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
174
174
  hatch_build.py,sha256=Nn9N-EFfVqmH5q3iCUrhqX6zc7qT1jLI3gWSBN2xgYQ,1738
175
175
  logging.json,sha256=sBy8HDDPuucpLbLUD6e8t5fsiQjJoklZsbVHi2qQ7aQ,367
176
- openapi.json,sha256=C009Hi2gZaUKU4OOf2P12Qdjodx1mxZd16RAm1lZiIw,219991
176
+ openapi.json,sha256=JZA_O8Ri_fQ1WORro8chGKr_MswwonMDNuUzgr9DZn4,224235
177
177
  langgraph_grpc_common/__init__.py,sha256=sO7jFHekQxt6zZPhTPZAWLYLB_S8w7-VuJ7NyWFlFNo,97
178
- langgraph_grpc_common/checkpointer.py,sha256=-F51xCHjP3A2gWfwVTTm7x7w9YsH78qJnZ57zTYAwdI,15344
178
+ langgraph_grpc_common/checkpointer.py,sha256=GoSI_wFBRxI-ltJKARI84qPOYT_qH__d0fsMwM8E6BE,15394
179
179
  langgraph_grpc_common/serde.py,sha256=8q290nZ6TdxbEhCTzwEs44XGi2b-3pfrUeMYY5WGlTY,6179
180
180
  langgraph_grpc_common/store.py,sha256=ae34gPQS260oBh2hcNLzI7-c1xKMs6FVvsJExqFRbhk,4743
181
181
  langgraph_grpc_common/conversion/__init__.py,sha256=pLsOrRtmF9YkgmCPhcfym6lYOB7PCJTRItyo1YK_AT8,208
182
182
  langgraph_grpc_common/conversion/_compat.py,sha256=MIEo69I7tfaPskunPGwBCKheksLwxpw-z-4O3hvO9og,4010
183
- langgraph_grpc_common/conversion/checkpoint.py,sha256=0Wyjyt4jL7BrwjbxWXnrEH869KhQJ0IOKI26NfJsv9g,13185
184
- langgraph_grpc_common/conversion/config.py,sha256=4QESPHOoYBmCg46ZbK4ulFAq1WBlha3fabLeXI7PBcU,13094
183
+ langgraph_grpc_common/conversion/checkpoint.py,sha256=BENL92Wn67Puedf6hWmb6eT_wtuurqd6l0KvICMM5x8,13490
184
+ langgraph_grpc_common/conversion/config.py,sha256=LmPNpMiJ5JFTAHI_Z9A_zjbxPru5gCbIa-wgs2L9HSk,13458
185
185
  langgraph_grpc_common/conversion/durability.py,sha256=FWhqjzVN4JrrsAL9AwsJkvIorQGNRl14w97Va-WZRk0,991
186
186
  langgraph_grpc_common/conversion/store.py,sha256=eQQ7YHrMYRsd1jN9LbqvCxGQGErySV_07n3meADiYIE,15237
187
187
  langgraph_grpc_common/conversion/struct.py,sha256=yk4jpPdywzn8UosAohun21lU5D_IIglOY9rkBhiG-gA,2072
@@ -191,8 +191,8 @@ langgraph_grpc_common/proto/checkpointer_pb2.py,sha256=dQMt9vNXqXDvTU6euvH52uliD
191
191
  langgraph_grpc_common/proto/checkpointer_pb2.pyi,sha256=Jjr9-oeKGk1wuIFf8m7zoCb9lHty1Bh9u-jxvRvqYLI,23319
192
192
  langgraph_grpc_common/proto/checkpointer_pb2_grpc.py,sha256=FQJK-lC8alOkLltA51aq1ABam62rVerTZRZccTFqUjw,20152
193
193
  langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi,sha256=8fPL90WjHnMaREG7l9qYt5fQePeT8YFWQ0qVy56QtYw,10210
194
- langgraph_grpc_common/proto/core_api_pb2.py,sha256=pkk5wFC0D-tTlh6bzbH4Q4ijVcX5jj7VnEx1d5QsQ4s,51292
195
- langgraph_grpc_common/proto/core_api_pb2.pyi,sha256=dYbYxGhl19nU7-kXtH7YVttTuDlVdon7ZV076INCluk,210185
194
+ langgraph_grpc_common/proto/core_api_pb2.py,sha256=TEBUQnGaEIGQ2yD6JJAhCtGFCp-0DRKIdqB7OT050gw,51386
195
+ langgraph_grpc_common/proto/core_api_pb2.pyi,sha256=GMC9JWc8pKpCQgFCGR98tpZn38VrH64Bz7lxc2KaHFo,210950
196
196
  langgraph_grpc_common/proto/core_api_pb2_grpc.py,sha256=bONBb3GptNvrgOSI4accjE_f9IA8xxbfarDs1Knrosg,81198
197
197
  langgraph_grpc_common/proto/core_api_pb2_grpc.pyi,sha256=XLu2-5YZHm9QyZWjWsnUWe7uN6n1-avVvsyR6N5D3fs,29325
198
198
  langgraph_grpc_common/proto/encryption_pb2.py,sha256=CEDsn3bJv2e_QzAFsvp2845Nac_lBRPGsb_9pFJthxE,4119
@@ -251,8 +251,8 @@ langgraph_grpc_common/proto/store_pb2.py,sha256=JKcuJK0YUC1BSwLUZJWHCQ7AWkzVS9Kf
251
251
  langgraph_grpc_common/proto/store_pb2.pyi,sha256=ItSuXbA2X9bQlHtuEjDGi0fT_gJj2b0sr7XuQkybe3s,28983
252
252
  langgraph_grpc_common/proto/store_pb2_grpc.py,sha256=Kyt8eV2NXkjh3be_BYytGdD19kNf74961cruonMvCrw,3300
253
253
  langgraph_grpc_common/proto/store_pb2_grpc.pyi,sha256=oS1h2cDoq2OjyM8xazcmc8LwRDC5oCAD0zto2QUmPQw,2027
254
- langgraph_api-0.16.0.dev6.dist-info/METADATA,sha256=mV3FLySPe4k0GO_pVdWvPeIcLNEhmvKFcoTCqNktyR8,5850
255
- langgraph_api-0.16.0.dev6.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
256
- langgraph_api-0.16.0.dev6.dist-info/entry_points.txt,sha256=hGedv8n7cgi41PypMfinwS_HfCwA7xJIfS0jAp8htV8,78
257
- langgraph_api-0.16.0.dev6.dist-info/licenses/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
258
- langgraph_api-0.16.0.dev6.dist-info/RECORD,,
254
+ langgraph_api-0.16.0.dev8.dist-info/METADATA,sha256=nc4DeAA1hUZtGlxA6UsXIN8RC5YZ5nZWve_MQsc-BXk,5879
255
+ langgraph_api-0.16.0.dev8.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
256
+ langgraph_api-0.16.0.dev8.dist-info/entry_points.txt,sha256=hGedv8n7cgi41PypMfinwS_HfCwA7xJIfS0jAp8htV8,78
257
+ langgraph_api-0.16.0.dev8.dist-info/licenses/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
258
+ langgraph_api-0.16.0.dev8.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.32.0
2
+ Generator: hatchling 1.32.4
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -29,7 +29,6 @@ from langgraph_grpc_common import serde as _grpc_serde
29
29
  from langgraph_grpc_common.conversion import checkpoint as ckpt_conv
30
30
  from langgraph_grpc_common.conversion.config import (
31
31
  config_from_proto,
32
- config_to_proto,
33
32
  convert_dict_to_json_bytes,
34
33
  )
35
34
  from langgraph_grpc_common.proto import checkpointer_pb2
@@ -146,7 +145,9 @@ class GrpcCheckpointer(BaseCheckpointSaver):
146
145
 
147
146
  async def aget_tuple(self, config: RunnableConfig) -> CheckpointTuple | None:
148
147
  with self._scoped():
149
- request = checkpointer_pb2.GetTupleRequest(config=config_to_proto(config))
148
+ request = checkpointer_pb2.GetTupleRequest(
149
+ config=ckpt_conv.checkpoint_config_to_proto(config)
150
+ )
150
151
 
151
152
  async def _request() -> CheckpointTuple | None:
152
153
  response = await (await self._stub()).GetTuple(request)
@@ -183,7 +184,7 @@ class GrpcCheckpointer(BaseCheckpointSaver):
183
184
  ) -> RunnableConfig:
184
185
  with self._scoped():
185
186
  request = checkpointer_pb2.PutRequest(
186
- config=config_to_proto(config),
187
+ config=ckpt_conv.checkpoint_config_to_proto(config),
187
188
  checkpoint=ckpt_conv.checkpoint_to_proto(checkpoint),
188
189
  metadata=ckpt_conv.checkpoint_metadata_to_proto(metadata),
189
190
  new_versions={k: str(v) for k, v in new_versions.items()},
@@ -218,7 +219,7 @@ class GrpcCheckpointer(BaseCheckpointSaver):
218
219
  ) -> None:
219
220
  with self._scoped():
220
221
  request = checkpointer_pb2.PutWritesRequest(
221
- config=config_to_proto(config),
222
+ config=ckpt_conv.checkpoint_config_to_proto(config),
222
223
  writes=ckpt_conv.writes_to_proto(writes),
223
224
  task_id=task_id,
224
225
  task_path=task_path,
@@ -272,9 +273,9 @@ class GrpcCheckpointer(BaseCheckpointSaver):
272
273
  ) -> AsyncIterator[CheckpointTuple]:
273
274
  with self._scoped():
274
275
  request = checkpointer_pb2.ListRequest(
275
- config=config_to_proto(config) if config is not None else None,
276
+ config=ckpt_conv.checkpoint_config_to_proto(config),
276
277
  filter_json=convert_dict_to_json_bytes(filter) or b"",
277
- before=config_to_proto(before) if before is not None else None,
278
+ before=ckpt_conv.checkpoint_config_to_proto(before),
278
279
  )
279
280
  if limit is not None:
280
281
  request.limit = limit
@@ -2,6 +2,7 @@ from collections.abc import Mapping
2
2
  from collections.abc import Sequence as SequenceType
3
3
  from typing import Any, Literal, cast
4
4
 
5
+ from langchain_core.runnables import RunnableConfig
5
6
  from langgraph.checkpoint.base import (
6
7
  Checkpoint,
7
8
  CheckpointMetadata,
@@ -35,6 +36,14 @@ SOURCE_MAP = {
35
36
  }
36
37
 
37
38
 
39
+ def checkpoint_config_to_proto(
40
+ config: RunnableConfig | None,
41
+ ) -> engine_common_pb2.EngineRunnableConfig | None:
42
+ if config is None:
43
+ return None
44
+ return config_to_proto(config, skip_private_configurable=True)
45
+
46
+
38
47
  def checkpoint_from_proto(
39
48
  request_checkpoint: engine_common_pb2.Checkpoint,
40
49
  ) -> Checkpoint:
@@ -135,13 +144,13 @@ def checkpoint_tuple_to_proto(
135
144
  checkpoint_tuple: CheckpointTuple,
136
145
  ) -> engine_common_pb2.CheckpointTuple:
137
146
  proto = engine_common_pb2.CheckpointTuple()
138
- if config_pb := config_to_proto(checkpoint_tuple.config):
147
+ if config_pb := checkpoint_config_to_proto(checkpoint_tuple.config):
139
148
  proto.config.CopyFrom(config_pb)
140
149
  proto.checkpoint.CopyFrom(checkpoint_to_proto(checkpoint_tuple.checkpoint))
141
150
  if checkpoint_tuple.metadata:
142
151
  proto.metadata.CopyFrom(checkpoint_metadata_to_proto(checkpoint_tuple.metadata))
143
152
  if checkpoint_tuple.parent_config:
144
- if parent_pb := config_to_proto(checkpoint_tuple.parent_config):
153
+ if parent_pb := checkpoint_config_to_proto(checkpoint_tuple.parent_config):
145
154
  proto.parent_config.CopyFrom(parent_pb)
146
155
  if checkpoint_tuple.pending_writes:
147
156
  for task_id, channel, value in checkpoint_tuple.pending_writes:
@@ -30,6 +30,7 @@ from langgraph_grpc_common.conversion.struct import _default_serializer
30
30
  from langgraph_grpc_common.proto import engine_common_pb2, enum_stream_mode_pb2
31
31
 
32
32
  CONFIG_KEY_GRAPH_ID = "graph_id"
33
+ CONFIG_KEY_NODE_FINISHED = "__pregel_node_finished"
33
34
  # DR-specific key for storing root graph stream modes, required for patched subgraph streaming.
34
35
  CONFIG_KEY_ROOT_STREAM_MODES = "__pregel_root_stream_modes"
35
36
  CONFIG_KEY_REPLAY_STATE = "__pregel_replay_state"
@@ -185,6 +186,8 @@ KNOWN_CONFIG_KEYS = {
185
186
 
186
187
  def config_to_proto(
187
188
  config: RunnableConfig,
189
+ *,
190
+ skip_private_configurable: bool = False,
188
191
  ) -> engine_common_pb2.EngineRunnableConfig | None:
189
192
  # Prepare kwargs for construction
190
193
  if not config:
@@ -228,7 +231,11 @@ def config_to_proto(
228
231
  pb_config.tags.extend(tags)
229
232
 
230
233
  if configurable := config.get("configurable"):
231
- _inject_configurable_into_proto(configurable, pb_config)
234
+ _inject_configurable_into_proto(
235
+ configurable,
236
+ pb_config,
237
+ skip_private_configurable=skip_private_configurable,
238
+ )
232
239
 
233
240
  # Preserve extra top-level keys (not in KNOWN_CONFIG_KEYS)
234
241
  extra = {k: v for k, v in config.items() if k not in KNOWN_CONFIG_KEYS}
@@ -252,6 +259,8 @@ def config_to_proto(
252
259
  return pb_config
253
260
 
254
261
 
262
+ # Known process-local framework values excluded from every proto conversion.
263
+ # Checkpoint conversion also skips arbitrary private keys to match Python savers.
255
264
  RESTRICTED_RESERVED_CONFIGURABLE_KEYS = {
256
265
  CONFIG_KEY_SEND,
257
266
  CONFIG_KEY_READ,
@@ -261,13 +270,17 @@ RESTRICTED_RESERVED_CONFIGURABLE_KEYS = {
261
270
  CONFIG_KEY_STREAM,
262
271
  CONFIG_KEY_CACHE,
263
272
  CONFIG_KEY_RUNNER_SUBMIT,
273
+ CONFIG_KEY_NODE_FINISHED,
264
274
  CONFIG_KEY_ROOT_STREAM_MODES,
265
275
  CONFIG_KEY_REPLAY_STATE,
266
276
  }
267
277
 
268
278
 
269
279
  def _inject_configurable_into_proto(
270
- configurable: dict[str, Any], proto: engine_common_pb2.EngineRunnableConfig
280
+ configurable: dict[str, Any],
281
+ proto: engine_common_pb2.EngineRunnableConfig,
282
+ *,
283
+ skip_private_configurable: bool = False,
271
284
  ) -> None:
272
285
  extra = {}
273
286
  for key, value in configurable.items():
@@ -313,26 +326,24 @@ def _inject_configurable_into_proto(
313
326
  elif key == CONFIG_KEY_TRACING_EXAMPLE_ID:
314
327
  if value is not None:
315
328
  proto.tracing_example_id = str(value)
329
+ elif skip_private_configurable and key.startswith("__"):
330
+ continue
316
331
  elif key not in RESTRICTED_RESERVED_CONFIGURABLE_KEYS:
317
332
  extra[key] = value
318
- if extra:
319
- extra_configurable_json = {}
320
- for k, v in extra.items():
321
- try:
322
- extra_configurable_json[k] = orjson.dumps(
323
- v, default=_default_serializer
324
- )
325
- except Exception:
326
- logger.warning(
327
- "Failed to serialize extra configurable value",
328
- extra={
329
- "configurable_key": str(k),
330
- "configurable_value_type": str(type(v)),
331
- },
332
- )
333
- raise
334
-
335
- proto.extra_configurable_json.update(extra_configurable_json)
333
+ for k, v in extra.items():
334
+ try:
335
+ proto.extra_configurable_json[k] = orjson.dumps(
336
+ v, default=_default_serializer
337
+ )
338
+ except Exception:
339
+ logger.warning(
340
+ "Failed to serialize extra configurable value",
341
+ extra={
342
+ "configurable_key": str(k),
343
+ "configurable_value_type": str(type(v)),
344
+ },
345
+ )
346
+ raise
336
347
 
337
348
 
338
349
  def runtime_to_proto(runtime: Runtime) -> engine_common_pb2.Runtime:
@@ -39,7 +39,7 @@ from . import enum_control_signal_pb2 as enum__control__signal__pb2
39
39
  from . import enum_cron_on_run_completed_pb2 as enum__cron__on__run__completed__pb2
40
40
 
41
41
 
42
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x63ore-api.proto\x12\x07\x63oreApi\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x10\x65ncryption.proto\x1a\x13\x65ngine-common.proto\x1a\x15\x65num_run_status.proto\x1a\x1d\x65num_multitask_strategy.proto\x1a\x16\x65num_stream_mode.proto\x1a\x1c\x65num_cancel_run_action.proto\x1a\x18\x65num_thread_status.proto\x1a\x1d\x65num_thread_stream_mode.proto\x1a\x19\x65num_control_signal.proto\x1a enum_cron_on_run_completed.proto\"\x16\n\x04Tags\x12\x0e\n\x06values\x18\x01 \x03(\t\"*\n\x0c\x45qAuthFilter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05match\x18\x02 \x01(\t\"2\n\x12\x43ontainsAuthFilter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0f\n\x07matches\x18\x02 \x03(\t\"4\n\x0cOrAuthFilter\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\"5\n\rAndAuthFilter\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\"\xc6\x01\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\x12*\n\tor_filter\x18\x03 \x01(\x0b\x32\x15.coreApi.OrAuthFilterH\x00\x12,\n\nand_filter\x18\x04 \x01(\x0b\x32\x16.coreApi.AndAuthFilterH\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\"x\n\x0bStreamEvent\x12\x12\n\nevent_type\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\x0c\x12\x16\n\tstream_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06run_id\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\x0c\n\n_stream_idB\t\n\x07_run_id\"\xfa\x02\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\x37\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x00\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x07 \x01(\x0cH\x01\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x08 \x01(\x0cH\x02\x88\x01\x01\x12\x0c\n\x04name\x18\t \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\n \x01(\tH\x03\x88\x01\x01\x42\t\n\x07_configB\x0f\n\r_context_jsonB\x10\n\x0e_metadata_jsonB\x0e\n\x0c_description\"\xd1\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\x37\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x00\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x07 \x01(\x0cH\x02\x88\x01\x01\x12\x0c\n\x04name\x18\x08 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\t \x01(\tH\x03\x88\x01\x01\x42\t\n\x07_configB\x0f\n\r_context_jsonB\x10\n\x0e_metadata_jsonB\x0e\n\x0c_description\"\x9d\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\x13.coreApi.AuthFilter\x12.\n\tif_exists\x18\x04 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12\x32\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\".engineCommon.EngineRunnableConfig\x12\x14\n\x0c\x63ontext_json\x18\x06 \x01(\x0c\x12\x0c\n\x04name\x18\x07 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\t \x01(\x0cH\x01\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\n \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x10\n\x0e_metadata_jsonB\x15\n\x13_encryption_context\"Q\n\x13GetAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\"\xb2\x03\n\x15PatchAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x15\n\x08graph_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x01\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x05 \x01(\x0cH\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\x1a\n\rmetadata_json\x18\x08 \x01(\x0cH\x05\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\t \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x06\x88\x01\x01\x42\x0b\n\t_graph_idB\t\n\x07_configB\x0f\n\r_context_jsonB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x10\n\x0e_metadata_jsonB\x15\n\x13_encryption_context\"\x84\x01\n\x16\x44\x65leteAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1b\n\x0e\x64\x65lete_threads\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\x11\n\x0f_delete_threads\"1\n\x18\x44\x65leteAssistantsResponse\x12\x15\n\rassistant_ids\x18\x01 \x03(\t\"h\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\x13.coreApi.AuthFilter\"\x90\x03\n\x17SearchAssistantsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x03 \x01(\x0cH\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\x12\x11\n\x04name\x18\t \x01(\tH\x06\x88\x01\x01\x12\x1a\n\x12graph_id_allowlist\x18\n \x03(\tB\x0b\n\t_graph_idB\x10\n\x0e_metadata_jsonB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_orderB\x07\n\x05_name\"B\n\x18SearchAssistantsResponse\x12&\n\nassistants\x18\x01 \x03(\x0b\x32\x12.coreApi.Assistant\"\xc5\x01\n\x1bGetAssistantVersionsRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1a\n\rmetadata_json\x18\x03 \x01(\x0cH\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\x42\x10\n\x0e_metadata_jsonB\x08\n\x06_limitB\t\n\x07_offset\"K\n\x1cGetAssistantVersionsResponse\x12+\n\x08versions\x18\x01 \x03(\x0b\x32\x19.coreApi.AssistantVersion\"\xc8\x01\n\x16\x43ountAssistantsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\x12graph_id_allowlist\x18\x05 \x03(\tB\x0b\n\t_graph_idB\x10\n\x0e_metadata_jsonB\x07\n\x05_name\"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\"\x82\x01\n\rThreadTTLInfo\x12,\n\x08strategy\x18\x01 \x01(\x0e\x32\x1a.coreApi.ThreadTTLStrategy\x12\x13\n\x0bttl_minutes\x18\x02 \x01(\x01\x12.\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x19\n\x08\x46ragment\x12\r\n\x05value\x18\x01 \x01(\x0c\"\x89\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\x17\n\x0finterrupts_json\x18\x04 \x03(\x0c\x12\x17\n\nstate_json\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x42\x08\n\x06_errorB\r\n\x0b_state_json\"\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\"\xa3\x02\n\x11\x43heckpointPayload\x12\x37\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x00\x88\x01\x01\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.coreApi.CheckpointMetadata\x12\x13\n\x0bvalues_json\x18\x03 \x01(\x0c\x12\x0c\n\x04next\x18\x04 \x03(\t\x12>\n\rparent_config\x18\x05 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x01\x88\x01\x01\x12&\n\x05tasks\x18\x06 \x03(\x0b\x32\x17.coreApi.CheckpointTaskB\t\n\x07_configB\x10\n\x0e_parent_config\"T\n\x16ThreadStatusCheckpoint\x12\x13\n\x0bvalues_json\x18\x01 \x01(\x0c\x12\x0c\n\x04next\x18\x02 \x03(\t\x12\x17\n\x0finterrupts_json\x18\x03 \x01(\x0c\"\x80\x01\n\tInterrupt\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\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\"\xdc\x04\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\x06status\x18\x06 \x01(\x0e\x32\x1e.enumThreadStatus.ThreadStatus\x12!\n\x06values\x18\x07 \x01(\x0b\x32\x11.coreApi.Fragment\x12\x33\n\ninterrupts\x18\x08 \x03(\x0b\x32\x1f.coreApi.Thread.InterruptsEntry\x12 \n\x05\x65rror\x18\t \x01(\x0b\x32\x11.coreApi.Fragment\x12\x34\n\x10state_updated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1b\n\x0e\x65xtracted_json\x18\x0b \x01(\x0cH\x00\x88\x01\x01\x12(\n\x03ttl\x18\x0c \x01(\x0b\x32\x16.coreApi.ThreadTTLInfoH\x01\x88\x01\x01\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\x42\x11\n\x0f_extracted_jsonB\x06\n\x04_ttl\"\xc6\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\x13.coreApi.AuthFilter\x12.\n\tif_exists\x18\x03 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12\x1a\n\rmetadata_json\x18\x04 \x01(\x0cH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x05 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\x06 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x42\x10\n\x0e_metadata_jsonB\x06\n\x04_ttlB\x15\n\x13_encryption_context\"\xc6\x01\n\x10GetThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x18\n\x0binclude_ttl\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12\x32\n\tread_mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskH\x01\x88\x01\x01\x42\x0e\n\x0c_include_ttlB\x0c\n\n_read_mask\"\xd7\x02\n\x12PatchThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1a\n\rmetadata_json\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x04 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\x05 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x12\x32\n\tread_mask\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskH\x03\x88\x01\x01\x42\x10\n\x0e_metadata_jsonB\x06\n\x04_ttlB\x15\n\x13_encryption_contextB\x0c\n\n_read_mask\"]\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\x13.coreApi.AuthFilter\"[\n\x11\x43opyThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\"\xa1\x04\n\x14SearchThreadsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1a\n\rmetadata_json\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0bvalues_json\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x33\n\x06status\x18\x04 \x01(\x0e\x32\x1e.enumThreadStatus.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\x12\x1a\n\x03ids\x18\n \x03(\x0b\x32\r.coreApi.UUID\x12;\n\x07\x65xtract\x18\x0b \x03(\x0b\x32*.coreApi.SearchThreadsRequest.ExtractEntry\x1a.\n\x0c\x45xtractEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x10\n\x0e_metadata_jsonB\x0e\n\x0c_values_jsonB\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\"\xd3\x01\n\x13\x43ountThreadsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1a\n\rmetadata_json\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0bvalues_json\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x33\n\x06status\x18\x04 \x01(\x0e\x32\x1e.enumThreadStatus.ThreadStatusH\x02\x88\x01\x01\x42\x10\n\x0e_metadata_jsonB\x0e\n\x0c_values_jsonB\t\n\x07_status\"\xc3\x02\n\x16SetThreadStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\ncheckpoint\x18\x02 \x01(\x0b\x32\x1f.coreApi.ThreadStatusCheckpointH\x00\x88\x01\x01\x12\x1b\n\x0e\x65xception_json\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x37\n\x0f\x65xpected_status\x18\x04 \x03(\x0e\x32\x1e.enumThreadStatus.ThreadStatus\x12>\n\x12\x65ncryption_context\x18\x05 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x42\r\n\x0b_checkpointB\x11\n\x0f_exception_jsonB\x15\n\x13_encryption_context\"\xd4\x02\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\x38\n\ncheckpoint\x18\x05 \x01(\x0b\x32\x1f.coreApi.ThreadStatusCheckpointH\x00\x88\x01\x01\x12\x1b\n\x0e\x65xception_json\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\x07 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x42\r\n\x0b_checkpointB\x11\n\x0f_exception_jsonB\x15\n\x13_encryption_context\"\xc9\x01\n\x13StreamThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12<\n\x0cstream_modes\x18\x03 \x03(\x0e\x32&.enumThreadStreamMode.ThreadStreamMode\x12\x1a\n\rlast_event_id\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x10\n\x0e_last_event_id\"\xb9\x05\n\tRunKwargs\x12\x37\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x00\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x17\n\ninput_json\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x12\x19\n\x0c\x63ommand_json\x18\x04 \x01(\x0cH\x03\x88\x01\x01\x12/\n\x0bstream_mode\x18\x05 \x03(\x0e\x32\x1a.enumStreamMode.StreamMode\x12\x42\n\x10interrupt_before\x18\x06 \x01(\x0b\x32#.engineCommon.StaticInterruptConfigH\x04\x88\x01\x01\x12\x41\n\x0finterrupt_after\x18\x07 \x01(\x0b\x32#.engineCommon.StaticInterruptConfigH\x05\x88\x01\x01\x12\x14\n\x07webhook\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x15\n\rfeedback_keys\x18\t \x03(\t\x12\x16\n\ttemporary\x18\n \x01(\x08H\x07\x88\x01\x01\x12\x16\n\tsubgraphs\x18\x0b \x01(\x08H\x08\x88\x01\x01\x12\x16\n\tresumable\x18\x0c \x01(\x08H\t\x88\x01\x01\x12\x1e\n\x11\x63heckpoint_during\x18\r \x01(\x08H\n\x88\x01\x01\x12\x17\n\ndurability\x18\x0e \x01(\tH\x0b\x88\x01\x01\x42\t\n\x07_configB\x0f\n\r_context_jsonB\r\n\x0b_input_jsonB\x0f\n\r_command_jsonB\x13\n\x11_interrupt_beforeB\x12\n\x10_interrupt_afterB\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\"\xc4\x03\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\x18.enumRunStatus.RunStatus\x12#\n\x08metadata\x18\x07 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x06kwargs\x18\x08 \x01(\x0b\x32\x12.coreApi.RunKwargs\x12\x44\n\x12multitask_strategy\x18\t \x01(\x0e\x32(.enumMultitaskStrategy.MultitaskStrategy\x12#\n\x16langsmith_session_name\x18\n \x01(\tH\x00\x88\x01\x01\x42\x19\n\x17_langsmith_session_name\"\xba\x02\n\x08RunStats\x12\x11\n\tn_pending\x18\x01 \x01(\x04\x12\x11\n\tn_running\x18\x02 \x01(\x04\x12,\n\x1fpending_runs_wait_time_max_secs\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12,\n\x1fpending_runs_wait_time_med_secs\x18\x04 \x01(\x01H\x01\x88\x01\x01\x12\x36\n)pending_unblocked_runs_wait_time_max_secs\x18\x05 \x01(\x01H\x02\x88\x01\x01\x42\"\n _pending_runs_wait_time_max_secsB\"\n _pending_runs_wait_time_med_secsB,\n*_pending_unblocked_runs_wait_time_max_secs\"\x82\x01\n\x11PostgresPoolStats\x12\x10\n\x08pool_max\x18\x01 \x01(\x05\x12\x11\n\tpool_size\x18\x02 \x01(\x05\x12\x16\n\x0epool_available\x18\x03 \x01(\x05\x12\x17\n\x0frequests_queued\x18\x04 \x01(\x03\x12\x17\n\x0frequests_errors\x18\x05 \x01(\x03\"_\n\x0eRedisPoolStats\x12\x18\n\x10idle_connections\x18\x01 \x01(\x05\x12\x1a\n\x12in_use_connections\x18\x02 \x01(\x05\x12\x17\n\x0fmax_connections\x18\x03 \x01(\x05\"\x8c\x01\n\x13\x43onnectionPoolStats\x12\x31\n\x08postgres\x18\x01 \x01(\x0b\x32\x1a.coreApi.PostgresPoolStatsH\x00\x88\x01\x01\x12+\n\x05redis\x18\x02 \x01(\x0b\x32\x17.coreApi.RedisPoolStatsH\x01\x88\x01\x01\x42\x0b\n\t_postgresB\x08\n\x06_redis\"-\n\x0eNextRunRequest\x12\x0c\n\x04wait\x18\x01 \x01(\x08\x12\r\n\x05limit\x18\x02 \x01(\x04\"w\n\x0eRunWithAttempt\x12\x19\n\x03run\x18\x01 \x01(\x0b\x32\x0c.coreApi.Run\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x04\x12\x39\n\x12\x65ncryption_context\x18\x03 \x01(\x0b\x32\x1d.encryption.EncryptionContext\"8\n\x0fNextRunResponse\x12%\n\x04runs\x18\x01 \x03(\x0b\x32\x17.coreApi.RunWithAttempt\"\x92\x07\n\x10\x43reateRunRequest\x12#\n\x0c\x61ssistant_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x13\n\x0bkwargs_json\x18\x02 \x01(\x0c\x12+\n\x0ethread_filters\x18\x03 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12.\n\x11\x61ssistant_filters\x18\x0e \x03(\x0b\x32\x13.coreApi.AuthFilter\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\x18.enumRunStatus.RunStatusH\x03\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x08 \x01(\x0cH\x04\x88\x01\x01\x12\'\n\x1aprevent_insert_if_inflight\x18\t \x01(\x08H\x05\x88\x01\x01\x12I\n\x12multitask_strategy\x18\n \x01(\x0e\x32(.enumMultitaskStrategy.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\x12\x31\n\nthread_ttl\x18\r \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\t\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\x0f \x01(\x0b\x32\x1d.encryption.EncryptionContextH\n\x88\x01\x01\x12#\n\x16langsmith_session_name\x18\x10 \x01(\tH\x0b\x88\x01\x01\x42\x0c\n\n_thread_idB\n\n\x08_user_idB\t\n\x07_run_idB\t\n\x07_statusB\x10\n\x0e_metadata_jsonB\x1d\n\x1b_prevent_insert_if_inflightB\x15\n\x13_multitask_strategyB\x10\n\x0e_if_not_existsB\x10\n\x0e_after_secondsB\r\n\x0b_thread_ttlB\x15\n\x13_encryption_contextB\x19\n\x17_langsmith_session_name\"v\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$\n\x07\x66ilters\x18\x03 \x03(\x0b\x32\x13.coreApi.AuthFilter\"y\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$\n\x07\x66ilters\x18\x03 \x03(\x0b\x32\x13.coreApi.AuthFilter\"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\"\x87\x02\n\x10\x43\x61ncelRunRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\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\x39\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32$.enumCancelRunAction.CancelRunActionH\x01\x88\x01\x01\x12\x13\n\x06reason\x18\x05 \x01(\tH\x02\x88\x01\x01\x42\x08\n\x06targetB\t\n\x07_actionB\t\n\x07_reason\"\xe3\x01\n\x11SearchRunsRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\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\x18.enumRunStatus.RunStatusH\x02\x88\x01\x01\x12\x0e\n\x06select\x18\x06 \x03(\tB\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\"^\n\x13SetRunStatusRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12(\n\x06status\x18\x02 \x01(\x0e\x32\x18.enumRunStatus.RunStatus\"3\n\x11SweepRunsResponse\x12\x1e\n\x07run_ids\x18\x01 \x03(\x0b\x32\r.coreApi.UUID\"F\n\x10\x43ountRunsRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x10\n\x08statuses\x18\x02 \x03(\t\"\x7f\n\x16StreamRunClientMessage\x12\x31\n\tsubscribe\x18\x01 \x01(\x0b\x32\x1c.coreApi.SubscribeRunRequestH\x00\x12\'\n\x04join\x18\x02 \x01(\x0b\x32\x17.coreApi.JoinRunRequestH\x00\x42\t\n\x07message\"V\n\x13SubscribeRunRequest\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\"\xd2\x01\n\x0eJoinRunRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x30\n\x0cstream_modes\x18\x02 \x03(\x0e\x32\x1a.enumStreamMode.StreamMode\x12\x1c\n\x14ignore_run_not_found\x18\x03 \x01(\x08\x12\x1c\n\x14\x63\x61ncel_on_disconnect\x18\x04 \x01(\x08\x12\x1a\n\rlast_event_id\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x10\n\x0e_last_event_id\"e\n\x0f\x45nterRunRequest\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\x11\n\tresumable\x18\x03 \x01(\x08\"h\n\x12MarkRunDoneRequest\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\x11\n\tresumable\x18\x03 \x01(\x08\"\xa4\x01\n\x19PublishStreamEventRequest\x12\"\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x12\n\nevent_type\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x11\n\tresumable\x18\x05 \x01(\x08\x42\t\n\x07_run_id\"5\n\x11GetGraphIDRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\"8\n\x12GetGraphIDResponse\x12\x15\n\x08graph_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_graph_id\"/\n\x11\x43reateRunResponse\x12\x1a\n\x04runs\x18\x01 \x03(\x0b\x32\x0c.coreApi.Run\"`\n\x0c\x43ontrolEvent\x12\x30\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32 .enumControlSignal.ControlSignal\x12\x13\n\x06reason\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_reason\"\x88\x05\n\x0b\x43ronPayload\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x17\n\ninput_json\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x37\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x01\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x04 \x01(\x0cH\x02\x88\x01\x01\x12\x14\n\x07webhook\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x42\n\x10interrupt_before\x18\x06 \x01(\x0b\x32#.engineCommon.StaticInterruptConfigH\x04\x88\x01\x01\x12\x41\n\x0finterrupt_after\x18\x07 \x01(\x0b\x32#.engineCommon.StaticInterruptConfigH\x05\x88\x01\x01\x12I\n\x12multitask_strategy\x18\x08 \x01(\x0e\x32(.enumMultitaskStrategy.MultitaskStrategyH\x06\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\t \x01(\x0cH\x07\x88\x01\x01\x12\x37\n\nextra_json\x18\n \x03(\x0b\x32#.coreApi.CronPayload.ExtraJsonEntry\x1a\x30\n\x0e\x45xtraJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\r\n\x0b_input_jsonB\t\n\x07_configB\x0f\n\r_context_jsonB\n\n\x08_webhookB\x13\n\x11_interrupt_beforeB\x12\n\x10_interrupt_afterB\x15\n\x13_multitask_strategyB\x10\n\x0e_metadata_json\"\xcb\x04\n\x04\x43ron\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x14\n\x0c\x61ssistant_id\x18\x02 \x01(\t\x12%\n\tthread_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12I\n\x10on_run_completed\x18\x04 \x01(\x0e\x32*.enumCronOnRunCompleted.CronOnRunCompletedH\x01\x88\x01\x01\x12\x31\n\x08\x65nd_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x10\n\x08schedule\x18\x06 \x01(\t\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x07user_id\x18\t \x01(\tH\x03\x88\x01\x01\x12%\n\x07payload\x18\n \x01(\x0b\x32\x14.coreApi.CronPayload\x12\x31\n\rnext_run_date\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\rmetadata_json\x18\x0c \x01(\x0c\x12\x0f\n\x07\x65nabled\x18\r \x01(\x08\x12\x15\n\x08timezone\x18\x0e \x01(\tH\x04\x88\x01\x01\x42\x0c\n\n_thread_idB\x13\n\x11_on_run_completedB\x0b\n\t_end_timeB\n\n\x08_user_idB\x0b\n\t_timezone\"\x9a\x05\n\x11\x43reateCronRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x10\n\x08schedule\x18\x02 \x01(\t\x12%\n\x07payload\x18\x03 \x01(\x0b\x32\x14.coreApi.CronPayload\x12\x15\n\rmetadata_json\x18\x04 \x01(\x0c\x12#\n\x07\x63ron_id\x18\x05 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12%\n\tthread_id\x18\x06 \x01(\x0b\x32\r.coreApi.UUIDH\x01\x88\x01\x01\x12I\n\x10on_run_completed\x18\x07 \x01(\x0e\x32*.enumCronOnRunCompleted.CronOnRunCompletedH\x02\x88\x01\x01\x12\x31\n\x08\x65nd_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x12\x0f\n\x07\x65nabled\x18\t \x01(\x08\x12.\n\x11\x61ssistant_filters\x18\n \x03(\x0b\x32\x13.coreApi.AuthFilter\x12+\n\x0ethread_filters\x18\x0b \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x14\n\x07user_id\x18\x0c \x01(\tH\x04\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\r \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x05\x88\x01\x01\x12\x15\n\x08timezone\x18\x0e \x01(\tH\x06\x88\x01\x01\x42\n\n\x08_cron_idB\x0c\n\n_thread_idB\x13\n\x11_on_run_completedB\x0b\n\t_end_timeB\n\n\x08_user_idB\x15\n\x13_encryption_contextB\x0b\n\t_timezone\"Y\n\x11\x44\x65leteCronRequest\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\"V\n\x0eGetCronRequest\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\"\xe9\x03\n\x12SearchCronsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12+\n\x0ethread_filters\x18\n \x03(\x0b\x32\x13.coreApi.AuthFilter\x12(\n\x0c\x61ssistant_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12%\n\tthread_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUIDH\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\x14.coreApi.CronsSortByH\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\x12\x14\n\x07\x65nabled\x18\t \x01(\x08H\x06\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x0b \x01(\x0cH\x07\x88\x01\x01\x42\x0f\n\r_assistant_idB\x0c\n\n_thread_idB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_orderB\n\n\x08_enabledB\x10\n\x0e_metadata_json\"3\n\x13SearchCronsResponse\x12\x1c\n\x05\x63rons\x18\x01 \x03(\x0b\x32\r.coreApi.Cron\"\x84\x02\n\x11\x43ountCronsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12+\n\x0ethread_filters\x18\x04 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12(\n\x0c\x61ssistant_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12%\n\tthread_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUIDH\x01\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x05 \x01(\x0cH\x02\x88\x01\x01\x42\x0f\n\r_assistant_idB\x0c\n\n_thread_idB\x10\n\x0e_metadata_json\"\xb7\x04\n\x10PatchCronRequest\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x15\n\x08schedule\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x31\n\x08\x65nd_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12\x14\n\x07\x65nabled\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12I\n\x10on_run_completed\x18\x06 \x01(\x0e\x32*.enumCronOnRunCompleted.CronOnRunCompletedH\x03\x88\x01\x01\x12*\n\x07payload\x18\x07 \x01(\x0b\x32\x14.coreApi.CronPayloadH\x04\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x08 \x01(\x0cH\x05\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\t \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x06\x88\x01\x01\x12\x15\n\x08timezone\x18\n \x01(\tH\x07\x88\x01\x01\x12\x16\n\x0e\x63lear_end_time\x18\x0b \x01(\x08\x42\x0b\n\t_scheduleB\x0b\n\t_end_timeB\n\n\x08_enabledB\x13\n\x11_on_run_completedB\n\n\x08_payloadB\x10\n\x0e_metadata_jsonB\x15\n\x13_encryption_contextB\x0b\n\t_timezone\"\xaa\x01\n\x0b\x43ronWithNow\x12\x1b\n\x04\x63ron\x18\x01 \x01(\x0b\x32\r.coreApi.Cron\x12\'\n\x03now\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12>\n\x12\x65ncryption_context\x18\x03 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x00\x88\x01\x01\x42\x15\n\x13_encryption_context\"8\n\x11NextCronsResponse\x12#\n\x05\x63rons\x18\x01 \x03(\x0b\x32\x14.coreApi.CronWithNow\"j\n\x15SetNextRunDateRequest\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x31\n\rnext_run_date\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"b\n\x0f\x43\x61\x63heSetRequest\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x12+\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x42\x06\n\x04_ttl\"\x1e\n\x0f\x43\x61\x63heGetRequest\x12\x0b\n\x03key\x18\x01 \x01(\t\"0\n\x10\x43\x61\x63heGetResponse\x12\x12\n\x05value\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x08\n\x06_value*/\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*X\n\x11ThreadTTLStrategy\x12\x1e\n\x1aTHREAD_TTL_STRATEGY_DELETE\x10\x00\x12#\n\x1fTHREAD_TTL_STRATEGY_KEEP_LATEST\x10\x01*\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*\xd1\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\x12$\n THREADS_SORT_BY_STATE_UPDATED_AT\x10\x05*`\n\x11\x43reateRunBehavior\x12#\n\x1fREJECT_RUN_IF_THREAD_NOT_EXISTS\x10\x00\x12&\n\"CREATE_THREAD_IF_THREAD_NOT_EXISTS\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*\xfd\x01\n\x0b\x43ronsSortBy\x12\x1d\n\x19\x43RONS_SORT_BY_UNSPECIFIED\x10\x00\x12\x19\n\x15\x43RONS_SORT_BY_CRON_ID\x10\x01\x12\x1e\n\x1a\x43RONS_SORT_BY_ASSISTANT_ID\x10\x02\x12\x1b\n\x17\x43RONS_SORT_BY_THREAD_ID\x10\x03\x12\x1f\n\x1b\x43RONS_SORT_BY_NEXT_RUN_DATE\x10\x04\x12\x1a\n\x16\x43RONS_SORT_BY_END_TIME\x10\x05\x12\x1c\n\x18\x43RONS_SORT_BY_CREATED_AT\x10\x06\x12\x1c\n\x18\x43RONS_SORT_BY_UPDATED_AT\x10\x07\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\xbd\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\x12>\n\x06Stream\x12\x1c.coreApi.StreamThreadRequest\x1a\x14.coreApi.StreamEvent0\x01\x12N\n\x0eSetJointStatus\x12$.coreApi.SetThreadJointStatusRequest\x1a\x16.google.protobuf.Empty\x12\x45\n\nGetGraphID\x12\x1a.coreApi.GetGraphIDRequest\x1a\x1b.coreApi.GetGraphIDResponse2\x9f\x07\n\x04Runs\x12?\n\x06\x43reate\x12\x19.coreApi.CreateRunRequest\x1a\x1a.coreApi.CreateRunResponse\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\x43\n\x06Stream\x12\x1f.coreApi.StreamRunClientMessage\x1a\x14.coreApi.StreamEvent(\x01\x30\x01\x12\x45\n\x07Publish\x12\".coreApi.PublishStreamEventRequest\x1a\x16.google.protobuf.Empty\x12:\n\x05\x45nter\x12\x18.coreApi.EnterRunRequest\x1a\x15.coreApi.ControlEvent0\x01\x12?\n\x08MarkDone\x12\x1b.coreApi.MarkRunDoneRequest\x1a\x16.google.protobuf.Empty\x12\x32\n\x05Stats\x12\x16.google.protobuf.Empty\x1a\x11.coreApi.RunStats\x12\x41\n\tPoolStats\x12\x16.google.protobuf.Empty\x1a\x1c.coreApi.ConnectionPoolStats\x12:\n\x05\x43ount\x12\x19.coreApi.CountRunsRequest\x1a\x16.coreApi.CountResponse\x12\x39\n\x04Next\x12\x17.coreApi.NextRunRequest\x1a\x18.coreApi.NextRunResponse\x12;\n\x05Sweep\x12\x16.google.protobuf.Empty\x1a\x1a.coreApi.SweepRunsResponse2\xe4\x03\n\x05\x43rons\x12\x33\n\x06\x43reate\x12\x1a.coreApi.CreateCronRequest\x1a\r.coreApi.Cron\x12-\n\x03Get\x12\x17.coreApi.GetCronRequest\x1a\r.coreApi.Cron\x12\x31\n\x05Patch\x12\x19.coreApi.PatchCronRequest\x1a\r.coreApi.Cron\x12<\n\x06\x44\x65lete\x12\x1a.coreApi.DeleteCronRequest\x1a\x16.google.protobuf.Empty\x12\x43\n\x06Search\x12\x1b.coreApi.SearchCronsRequest\x1a\x1c.coreApi.SearchCronsResponse\x12;\n\x05\x43ount\x12\x1a.coreApi.CountCronsRequest\x1a\x16.coreApi.CountResponse\x12:\n\x04Next\x12\x16.google.protobuf.Empty\x1a\x1a.coreApi.NextCronsResponse\x12H\n\x0eSetNextRunDate\x12\x1e.coreApi.SetNextRunDateRequest\x1a\x16.google.protobuf.Empty2|\n\x05\x43\x61\x63he\x12\x37\n\x03Set\x12\x18.coreApi.CacheSetRequest\x1a\x16.google.protobuf.Empty\x12:\n\x03Get\x12\x18.coreApi.CacheGetRequest\x1a\x19.coreApi.CacheGetResponseBAZ?github.com/langchain-ai/langgraph-api/core/internal/core-api/pbb\x06proto3')
42
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x63ore-api.proto\x12\x07\x63oreApi\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x10\x65ncryption.proto\x1a\x13\x65ngine-common.proto\x1a\x15\x65num_run_status.proto\x1a\x1d\x65num_multitask_strategy.proto\x1a\x16\x65num_stream_mode.proto\x1a\x1c\x65num_cancel_run_action.proto\x1a\x18\x65num_thread_status.proto\x1a\x1d\x65num_thread_stream_mode.proto\x1a\x19\x65num_control_signal.proto\x1a enum_cron_on_run_completed.proto\"\x16\n\x04Tags\x12\x0e\n\x06values\x18\x01 \x03(\t\"*\n\x0c\x45qAuthFilter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05match\x18\x02 \x01(\t\"2\n\x12\x43ontainsAuthFilter\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0f\n\x07matches\x18\x02 \x03(\t\"4\n\x0cOrAuthFilter\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\"5\n\rAndAuthFilter\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\"\xc6\x01\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\x12*\n\tor_filter\x18\x03 \x01(\x0b\x32\x15.coreApi.OrAuthFilterH\x00\x12,\n\nand_filter\x18\x04 \x01(\x0b\x32\x16.coreApi.AndAuthFilterH\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\"x\n\x0bStreamEvent\x12\x12\n\nevent_type\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\x0c\x12\x16\n\tstream_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06run_id\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\x0c\n\n_stream_idB\t\n\x07_run_id\"\xfa\x02\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\x37\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x00\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x07 \x01(\x0cH\x01\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x08 \x01(\x0cH\x02\x88\x01\x01\x12\x0c\n\x04name\x18\t \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\n \x01(\tH\x03\x88\x01\x01\x42\t\n\x07_configB\x0f\n\r_context_jsonB\x10\n\x0e_metadata_jsonB\x0e\n\x0c_description\"\xd1\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\x37\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x00\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x07 \x01(\x0cH\x02\x88\x01\x01\x12\x0c\n\x04name\x18\x08 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\t \x01(\tH\x03\x88\x01\x01\x42\t\n\x07_configB\x0f\n\r_context_jsonB\x10\n\x0e_metadata_jsonB\x0e\n\x0c_description\"\x9d\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\x13.coreApi.AuthFilter\x12.\n\tif_exists\x18\x04 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12\x32\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\".engineCommon.EngineRunnableConfig\x12\x14\n\x0c\x63ontext_json\x18\x06 \x01(\x0c\x12\x0c\n\x04name\x18\x07 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\t \x01(\x0cH\x01\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\n \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x10\n\x0e_metadata_jsonB\x15\n\x13_encryption_context\"Q\n\x13GetAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\"\xb2\x03\n\x15PatchAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x15\n\x08graph_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x01\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x05 \x01(\x0cH\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\x1a\n\rmetadata_json\x18\x08 \x01(\x0cH\x05\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\t \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x06\x88\x01\x01\x42\x0b\n\t_graph_idB\t\n\x07_configB\x0f\n\r_context_jsonB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x10\n\x0e_metadata_jsonB\x15\n\x13_encryption_context\"\x84\x01\n\x16\x44\x65leteAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1b\n\x0e\x64\x65lete_threads\x18\x03 \x01(\x08H\x00\x88\x01\x01\x42\x11\n\x0f_delete_threads\"1\n\x18\x44\x65leteAssistantsResponse\x12\x15\n\rassistant_ids\x18\x01 \x03(\t\"h\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\x13.coreApi.AuthFilter\"\x90\x03\n\x17SearchAssistantsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x03 \x01(\x0cH\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\x12\x11\n\x04name\x18\t \x01(\tH\x06\x88\x01\x01\x12\x1a\n\x12graph_id_allowlist\x18\n \x03(\tB\x0b\n\t_graph_idB\x10\n\x0e_metadata_jsonB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_orderB\x07\n\x05_name\"B\n\x18SearchAssistantsResponse\x12&\n\nassistants\x18\x01 \x03(\x0b\x32\x12.coreApi.Assistant\"\xc5\x01\n\x1bGetAssistantVersionsRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1a\n\rmetadata_json\x18\x03 \x01(\x0cH\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\x42\x10\n\x0e_metadata_jsonB\x08\n\x06_limitB\t\n\x07_offset\"K\n\x1cGetAssistantVersionsResponse\x12+\n\x08versions\x18\x01 \x03(\x0b\x32\x19.coreApi.AssistantVersion\"\xc8\x01\n\x16\x43ountAssistantsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1a\n\x12graph_id_allowlist\x18\x05 \x03(\tB\x0b\n\t_graph_idB\x10\n\x0e_metadata_jsonB\x07\n\x05_name\"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\"\x82\x01\n\rThreadTTLInfo\x12,\n\x08strategy\x18\x01 \x01(\x0e\x32\x1a.coreApi.ThreadTTLStrategy\x12\x13\n\x0bttl_minutes\x18\x02 \x01(\x01\x12.\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x19\n\x08\x46ragment\x12\r\n\x05value\x18\x01 \x01(\x0c\"\x89\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\x17\n\x0finterrupts_json\x18\x04 \x03(\x0c\x12\x17\n\nstate_json\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x42\x08\n\x06_errorB\r\n\x0b_state_json\"\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\"\xa3\x02\n\x11\x43heckpointPayload\x12\x37\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x00\x88\x01\x01\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.coreApi.CheckpointMetadata\x12\x13\n\x0bvalues_json\x18\x03 \x01(\x0c\x12\x0c\n\x04next\x18\x04 \x03(\t\x12>\n\rparent_config\x18\x05 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x01\x88\x01\x01\x12&\n\x05tasks\x18\x06 \x03(\x0b\x32\x17.coreApi.CheckpointTaskB\t\n\x07_configB\x10\n\x0e_parent_config\"T\n\x16ThreadStatusCheckpoint\x12\x13\n\x0bvalues_json\x18\x01 \x01(\x0c\x12\x0c\n\x04next\x18\x02 \x03(\t\x12\x17\n\x0finterrupts_json\x18\x03 \x01(\x0c\"\xb2\x01\n\tInterrupt\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\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(\t\x12\x1c\n\x0fresponse_schema\x18\x06 \x01(\x0cH\x03\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_whenB\x0c\n\n_resumableB\x12\n\x10_response_schema\"4\n\nInterrupts\x12&\n\ninterrupts\x18\x01 \x03(\x0b\x32\x12.coreApi.Interrupt\"\xdc\x04\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\x06status\x18\x06 \x01(\x0e\x32\x1e.enumThreadStatus.ThreadStatus\x12!\n\x06values\x18\x07 \x01(\x0b\x32\x11.coreApi.Fragment\x12\x33\n\ninterrupts\x18\x08 \x03(\x0b\x32\x1f.coreApi.Thread.InterruptsEntry\x12 \n\x05\x65rror\x18\t \x01(\x0b\x32\x11.coreApi.Fragment\x12\x34\n\x10state_updated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1b\n\x0e\x65xtracted_json\x18\x0b \x01(\x0cH\x00\x88\x01\x01\x12(\n\x03ttl\x18\x0c \x01(\x0b\x32\x16.coreApi.ThreadTTLInfoH\x01\x88\x01\x01\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\x42\x11\n\x0f_extracted_jsonB\x06\n\x04_ttl\"\xc6\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\x13.coreApi.AuthFilter\x12.\n\tif_exists\x18\x03 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12\x1a\n\rmetadata_json\x18\x04 \x01(\x0cH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x05 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\x06 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x42\x10\n\x0e_metadata_jsonB\x06\n\x04_ttlB\x15\n\x13_encryption_context\"\xc6\x01\n\x10GetThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x18\n\x0binclude_ttl\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12\x32\n\tread_mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskH\x01\x88\x01\x01\x42\x0e\n\x0c_include_ttlB\x0c\n\n_read_mask\"\xd7\x02\n\x12PatchThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1a\n\rmetadata_json\x18\x03 \x01(\x0cH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x04 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\x05 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x12\x32\n\tread_mask\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskH\x03\x88\x01\x01\x42\x10\n\x0e_metadata_jsonB\x06\n\x04_ttlB\x15\n\x13_encryption_contextB\x0c\n\n_read_mask\"]\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\x13.coreApi.AuthFilter\"[\n\x11\x43opyThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\"\xa1\x04\n\x14SearchThreadsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1a\n\rmetadata_json\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0bvalues_json\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x33\n\x06status\x18\x04 \x01(\x0e\x32\x1e.enumThreadStatus.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\x12\x1a\n\x03ids\x18\n \x03(\x0b\x32\r.coreApi.UUID\x12;\n\x07\x65xtract\x18\x0b \x03(\x0b\x32*.coreApi.SearchThreadsRequest.ExtractEntry\x1a.\n\x0c\x45xtractEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x10\n\x0e_metadata_jsonB\x0e\n\x0c_values_jsonB\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\"\xd3\x01\n\x13\x43ountThreadsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x1a\n\rmetadata_json\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0bvalues_json\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x33\n\x06status\x18\x04 \x01(\x0e\x32\x1e.enumThreadStatus.ThreadStatusH\x02\x88\x01\x01\x42\x10\n\x0e_metadata_jsonB\x0e\n\x0c_values_jsonB\t\n\x07_status\"\xc3\x02\n\x16SetThreadStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\ncheckpoint\x18\x02 \x01(\x0b\x32\x1f.coreApi.ThreadStatusCheckpointH\x00\x88\x01\x01\x12\x1b\n\x0e\x65xception_json\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x12\x37\n\x0f\x65xpected_status\x18\x04 \x03(\x0e\x32\x1e.enumThreadStatus.ThreadStatus\x12>\n\x12\x65ncryption_context\x18\x05 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x42\r\n\x0b_checkpointB\x11\n\x0f_exception_jsonB\x15\n\x13_encryption_context\"\xd4\x02\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\x38\n\ncheckpoint\x18\x05 \x01(\x0b\x32\x1f.coreApi.ThreadStatusCheckpointH\x00\x88\x01\x01\x12\x1b\n\x0e\x65xception_json\x18\x06 \x01(\x0cH\x01\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\x07 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x02\x88\x01\x01\x42\r\n\x0b_checkpointB\x11\n\x0f_exception_jsonB\x15\n\x13_encryption_context\"\xc9\x01\n\x13StreamThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12<\n\x0cstream_modes\x18\x03 \x03(\x0e\x32&.enumThreadStreamMode.ThreadStreamMode\x12\x1a\n\rlast_event_id\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x10\n\x0e_last_event_id\"\xb9\x05\n\tRunKwargs\x12\x37\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x00\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x12\x17\n\ninput_json\x18\x03 \x01(\x0cH\x02\x88\x01\x01\x12\x19\n\x0c\x63ommand_json\x18\x04 \x01(\x0cH\x03\x88\x01\x01\x12/\n\x0bstream_mode\x18\x05 \x03(\x0e\x32\x1a.enumStreamMode.StreamMode\x12\x42\n\x10interrupt_before\x18\x06 \x01(\x0b\x32#.engineCommon.StaticInterruptConfigH\x04\x88\x01\x01\x12\x41\n\x0finterrupt_after\x18\x07 \x01(\x0b\x32#.engineCommon.StaticInterruptConfigH\x05\x88\x01\x01\x12\x14\n\x07webhook\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x15\n\rfeedback_keys\x18\t \x03(\t\x12\x16\n\ttemporary\x18\n \x01(\x08H\x07\x88\x01\x01\x12\x16\n\tsubgraphs\x18\x0b \x01(\x08H\x08\x88\x01\x01\x12\x16\n\tresumable\x18\x0c \x01(\x08H\t\x88\x01\x01\x12\x1e\n\x11\x63heckpoint_during\x18\r \x01(\x08H\n\x88\x01\x01\x12\x17\n\ndurability\x18\x0e \x01(\tH\x0b\x88\x01\x01\x42\t\n\x07_configB\x0f\n\r_context_jsonB\r\n\x0b_input_jsonB\x0f\n\r_command_jsonB\x13\n\x11_interrupt_beforeB\x12\n\x10_interrupt_afterB\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\"\xc4\x03\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\x18.enumRunStatus.RunStatus\x12#\n\x08metadata\x18\x07 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x06kwargs\x18\x08 \x01(\x0b\x32\x12.coreApi.RunKwargs\x12\x44\n\x12multitask_strategy\x18\t \x01(\x0e\x32(.enumMultitaskStrategy.MultitaskStrategy\x12#\n\x16langsmith_session_name\x18\n \x01(\tH\x00\x88\x01\x01\x42\x19\n\x17_langsmith_session_name\"\xba\x02\n\x08RunStats\x12\x11\n\tn_pending\x18\x01 \x01(\x04\x12\x11\n\tn_running\x18\x02 \x01(\x04\x12,\n\x1fpending_runs_wait_time_max_secs\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12,\n\x1fpending_runs_wait_time_med_secs\x18\x04 \x01(\x01H\x01\x88\x01\x01\x12\x36\n)pending_unblocked_runs_wait_time_max_secs\x18\x05 \x01(\x01H\x02\x88\x01\x01\x42\"\n _pending_runs_wait_time_max_secsB\"\n _pending_runs_wait_time_med_secsB,\n*_pending_unblocked_runs_wait_time_max_secs\"\x82\x01\n\x11PostgresPoolStats\x12\x10\n\x08pool_max\x18\x01 \x01(\x05\x12\x11\n\tpool_size\x18\x02 \x01(\x05\x12\x16\n\x0epool_available\x18\x03 \x01(\x05\x12\x17\n\x0frequests_queued\x18\x04 \x01(\x03\x12\x17\n\x0frequests_errors\x18\x05 \x01(\x03\"_\n\x0eRedisPoolStats\x12\x18\n\x10idle_connections\x18\x01 \x01(\x05\x12\x1a\n\x12in_use_connections\x18\x02 \x01(\x05\x12\x17\n\x0fmax_connections\x18\x03 \x01(\x05\"\x8c\x01\n\x13\x43onnectionPoolStats\x12\x31\n\x08postgres\x18\x01 \x01(\x0b\x32\x1a.coreApi.PostgresPoolStatsH\x00\x88\x01\x01\x12+\n\x05redis\x18\x02 \x01(\x0b\x32\x17.coreApi.RedisPoolStatsH\x01\x88\x01\x01\x42\x0b\n\t_postgresB\x08\n\x06_redis\"-\n\x0eNextRunRequest\x12\x0c\n\x04wait\x18\x01 \x01(\x08\x12\r\n\x05limit\x18\x02 \x01(\x04\"w\n\x0eRunWithAttempt\x12\x19\n\x03run\x18\x01 \x01(\x0b\x32\x0c.coreApi.Run\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x04\x12\x39\n\x12\x65ncryption_context\x18\x03 \x01(\x0b\x32\x1d.encryption.EncryptionContext\"8\n\x0fNextRunResponse\x12%\n\x04runs\x18\x01 \x03(\x0b\x32\x17.coreApi.RunWithAttempt\"\x92\x07\n\x10\x43reateRunRequest\x12#\n\x0c\x61ssistant_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x13\n\x0bkwargs_json\x18\x02 \x01(\x0c\x12+\n\x0ethread_filters\x18\x03 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12.\n\x11\x61ssistant_filters\x18\x0e \x03(\x0b\x32\x13.coreApi.AuthFilter\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\x18.enumRunStatus.RunStatusH\x03\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x08 \x01(\x0cH\x04\x88\x01\x01\x12\'\n\x1aprevent_insert_if_inflight\x18\t \x01(\x08H\x05\x88\x01\x01\x12I\n\x12multitask_strategy\x18\n \x01(\x0e\x32(.enumMultitaskStrategy.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\x12\x31\n\nthread_ttl\x18\r \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\t\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\x0f \x01(\x0b\x32\x1d.encryption.EncryptionContextH\n\x88\x01\x01\x12#\n\x16langsmith_session_name\x18\x10 \x01(\tH\x0b\x88\x01\x01\x42\x0c\n\n_thread_idB\n\n\x08_user_idB\t\n\x07_run_idB\t\n\x07_statusB\x10\n\x0e_metadata_jsonB\x1d\n\x1b_prevent_insert_if_inflightB\x15\n\x13_multitask_strategyB\x10\n\x0e_if_not_existsB\x10\n\x0e_after_secondsB\r\n\x0b_thread_ttlB\x15\n\x13_encryption_contextB\x19\n\x17_langsmith_session_name\"v\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$\n\x07\x66ilters\x18\x03 \x03(\x0b\x32\x13.coreApi.AuthFilter\"y\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$\n\x07\x66ilters\x18\x03 \x03(\x0b\x32\x13.coreApi.AuthFilter\"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\"\x87\x02\n\x10\x43\x61ncelRunRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\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\x39\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32$.enumCancelRunAction.CancelRunActionH\x01\x88\x01\x01\x12\x13\n\x06reason\x18\x05 \x01(\tH\x02\x88\x01\x01\x42\x08\n\x06targetB\t\n\x07_actionB\t\n\x07_reason\"\xe3\x01\n\x11SearchRunsRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\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\x18.enumRunStatus.RunStatusH\x02\x88\x01\x01\x12\x0e\n\x06select\x18\x06 \x03(\tB\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\"^\n\x13SetRunStatusRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12(\n\x06status\x18\x02 \x01(\x0e\x32\x18.enumRunStatus.RunStatus\"3\n\x11SweepRunsResponse\x12\x1e\n\x07run_ids\x18\x01 \x03(\x0b\x32\r.coreApi.UUID\"F\n\x10\x43ountRunsRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x10\n\x08statuses\x18\x02 \x03(\t\"\x7f\n\x16StreamRunClientMessage\x12\x31\n\tsubscribe\x18\x01 \x01(\x0b\x32\x1c.coreApi.SubscribeRunRequestH\x00\x12\'\n\x04join\x18\x02 \x01(\x0b\x32\x17.coreApi.JoinRunRequestH\x00\x42\t\n\x07message\"V\n\x13SubscribeRunRequest\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\"\xd2\x01\n\x0eJoinRunRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x30\n\x0cstream_modes\x18\x02 \x03(\x0e\x32\x1a.enumStreamMode.StreamMode\x12\x1c\n\x14ignore_run_not_found\x18\x03 \x01(\x08\x12\x1c\n\x14\x63\x61ncel_on_disconnect\x18\x04 \x01(\x08\x12\x1a\n\rlast_event_id\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x10\n\x0e_last_event_id\"e\n\x0f\x45nterRunRequest\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\x11\n\tresumable\x18\x03 \x01(\x08\"h\n\x12MarkRunDoneRequest\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\x11\n\tresumable\x18\x03 \x01(\x08\"\xa4\x01\n\x19PublishStreamEventRequest\x12\"\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x12\n\nevent_type\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x11\n\tresumable\x18\x05 \x01(\x08\x42\t\n\x07_run_id\"5\n\x11GetGraphIDRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\"8\n\x12GetGraphIDResponse\x12\x15\n\x08graph_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_graph_id\"/\n\x11\x43reateRunResponse\x12\x1a\n\x04runs\x18\x01 \x03(\x0b\x32\x0c.coreApi.Run\"`\n\x0c\x43ontrolEvent\x12\x30\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32 .enumControlSignal.ControlSignal\x12\x13\n\x06reason\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\t\n\x07_reason\"\x88\x05\n\x0b\x43ronPayload\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x17\n\ninput_json\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x37\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\".engineCommon.EngineRunnableConfigH\x01\x88\x01\x01\x12\x19\n\x0c\x63ontext_json\x18\x04 \x01(\x0cH\x02\x88\x01\x01\x12\x14\n\x07webhook\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x42\n\x10interrupt_before\x18\x06 \x01(\x0b\x32#.engineCommon.StaticInterruptConfigH\x04\x88\x01\x01\x12\x41\n\x0finterrupt_after\x18\x07 \x01(\x0b\x32#.engineCommon.StaticInterruptConfigH\x05\x88\x01\x01\x12I\n\x12multitask_strategy\x18\x08 \x01(\x0e\x32(.enumMultitaskStrategy.MultitaskStrategyH\x06\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\t \x01(\x0cH\x07\x88\x01\x01\x12\x37\n\nextra_json\x18\n \x03(\x0b\x32#.coreApi.CronPayload.ExtraJsonEntry\x1a\x30\n\x0e\x45xtraJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\r\n\x0b_input_jsonB\t\n\x07_configB\x0f\n\r_context_jsonB\n\n\x08_webhookB\x13\n\x11_interrupt_beforeB\x12\n\x10_interrupt_afterB\x15\n\x13_multitask_strategyB\x10\n\x0e_metadata_json\"\xcb\x04\n\x04\x43ron\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x14\n\x0c\x61ssistant_id\x18\x02 \x01(\t\x12%\n\tthread_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12I\n\x10on_run_completed\x18\x04 \x01(\x0e\x32*.enumCronOnRunCompleted.CronOnRunCompletedH\x01\x88\x01\x01\x12\x31\n\x08\x65nd_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02\x88\x01\x01\x12\x10\n\x08schedule\x18\x06 \x01(\t\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x07user_id\x18\t \x01(\tH\x03\x88\x01\x01\x12%\n\x07payload\x18\n \x01(\x0b\x32\x14.coreApi.CronPayload\x12\x31\n\rnext_run_date\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\rmetadata_json\x18\x0c \x01(\x0c\x12\x0f\n\x07\x65nabled\x18\r \x01(\x08\x12\x15\n\x08timezone\x18\x0e \x01(\tH\x04\x88\x01\x01\x42\x0c\n\n_thread_idB\x13\n\x11_on_run_completedB\x0b\n\t_end_timeB\n\n\x08_user_idB\x0b\n\t_timezone\"\x9a\x05\n\x11\x43reateCronRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x10\n\x08schedule\x18\x02 \x01(\t\x12%\n\x07payload\x18\x03 \x01(\x0b\x32\x14.coreApi.CronPayload\x12\x15\n\rmetadata_json\x18\x04 \x01(\x0c\x12#\n\x07\x63ron_id\x18\x05 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12%\n\tthread_id\x18\x06 \x01(\x0b\x32\r.coreApi.UUIDH\x01\x88\x01\x01\x12I\n\x10on_run_completed\x18\x07 \x01(\x0e\x32*.enumCronOnRunCompleted.CronOnRunCompletedH\x02\x88\x01\x01\x12\x31\n\x08\x65nd_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03\x88\x01\x01\x12\x0f\n\x07\x65nabled\x18\t \x01(\x08\x12.\n\x11\x61ssistant_filters\x18\n \x03(\x0b\x32\x13.coreApi.AuthFilter\x12+\n\x0ethread_filters\x18\x0b \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x14\n\x07user_id\x18\x0c \x01(\tH\x04\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\r \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x05\x88\x01\x01\x12\x15\n\x08timezone\x18\x0e \x01(\tH\x06\x88\x01\x01\x42\n\n\x08_cron_idB\x0c\n\n_thread_idB\x13\n\x11_on_run_completedB\x0b\n\t_end_timeB\n\n\x08_user_idB\x15\n\x13_encryption_contextB\x0b\n\t_timezone\"Y\n\x11\x44\x65leteCronRequest\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\"V\n\x0eGetCronRequest\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\"\xe9\x03\n\x12SearchCronsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12+\n\x0ethread_filters\x18\n \x03(\x0b\x32\x13.coreApi.AuthFilter\x12(\n\x0c\x61ssistant_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12%\n\tthread_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUIDH\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\x14.coreApi.CronsSortByH\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\x12\x14\n\x07\x65nabled\x18\t \x01(\x08H\x06\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x0b \x01(\x0cH\x07\x88\x01\x01\x42\x0f\n\r_assistant_idB\x0c\n\n_thread_idB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_orderB\n\n\x08_enabledB\x10\n\x0e_metadata_json\"3\n\x13SearchCronsResponse\x12\x1c\n\x05\x63rons\x18\x01 \x03(\x0b\x32\r.coreApi.Cron\"\x84\x02\n\x11\x43ountCronsRequest\x12$\n\x07\x66ilters\x18\x01 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12+\n\x0ethread_filters\x18\x04 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12(\n\x0c\x61ssistant_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12%\n\tthread_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUIDH\x01\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x05 \x01(\x0cH\x02\x88\x01\x01\x42\x0f\n\r_assistant_idB\x0c\n\n_thread_idB\x10\n\x0e_metadata_json\"\xb7\x04\n\x10PatchCronRequest\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12$\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x13.coreApi.AuthFilter\x12\x15\n\x08schedule\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x31\n\x08\x65nd_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12\x14\n\x07\x65nabled\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12I\n\x10on_run_completed\x18\x06 \x01(\x0e\x32*.enumCronOnRunCompleted.CronOnRunCompletedH\x03\x88\x01\x01\x12*\n\x07payload\x18\x07 \x01(\x0b\x32\x14.coreApi.CronPayloadH\x04\x88\x01\x01\x12\x1a\n\rmetadata_json\x18\x08 \x01(\x0cH\x05\x88\x01\x01\x12>\n\x12\x65ncryption_context\x18\t \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x06\x88\x01\x01\x12\x15\n\x08timezone\x18\n \x01(\tH\x07\x88\x01\x01\x12\x16\n\x0e\x63lear_end_time\x18\x0b \x01(\x08\x42\x0b\n\t_scheduleB\x0b\n\t_end_timeB\n\n\x08_enabledB\x13\n\x11_on_run_completedB\n\n\x08_payloadB\x10\n\x0e_metadata_jsonB\x15\n\x13_encryption_contextB\x0b\n\t_timezone\"\xaa\x01\n\x0b\x43ronWithNow\x12\x1b\n\x04\x63ron\x18\x01 \x01(\x0b\x32\r.coreApi.Cron\x12\'\n\x03now\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12>\n\x12\x65ncryption_context\x18\x03 \x01(\x0b\x32\x1d.encryption.EncryptionContextH\x00\x88\x01\x01\x42\x15\n\x13_encryption_context\"8\n\x11NextCronsResponse\x12#\n\x05\x63rons\x18\x01 \x03(\x0b\x32\x14.coreApi.CronWithNow\"j\n\x15SetNextRunDateRequest\x12\x1e\n\x07\x63ron_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x31\n\rnext_run_date\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"b\n\x0f\x43\x61\x63heSetRequest\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c\x12+\n\x03ttl\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x42\x06\n\x04_ttl\"\x1e\n\x0f\x43\x61\x63heGetRequest\x12\x0b\n\x03key\x18\x01 \x01(\t\"0\n\x10\x43\x61\x63heGetResponse\x12\x12\n\x05value\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x08\n\x06_value*/\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*X\n\x11ThreadTTLStrategy\x12\x1e\n\x1aTHREAD_TTL_STRATEGY_DELETE\x10\x00\x12#\n\x1fTHREAD_TTL_STRATEGY_KEEP_LATEST\x10\x01*\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*\xd1\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\x12$\n THREADS_SORT_BY_STATE_UPDATED_AT\x10\x05*`\n\x11\x43reateRunBehavior\x12#\n\x1fREJECT_RUN_IF_THREAD_NOT_EXISTS\x10\x00\x12&\n\"CREATE_THREAD_IF_THREAD_NOT_EXISTS\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*\xfd\x01\n\x0b\x43ronsSortBy\x12\x1d\n\x19\x43RONS_SORT_BY_UNSPECIFIED\x10\x00\x12\x19\n\x15\x43RONS_SORT_BY_CRON_ID\x10\x01\x12\x1e\n\x1a\x43RONS_SORT_BY_ASSISTANT_ID\x10\x02\x12\x1b\n\x17\x43RONS_SORT_BY_THREAD_ID\x10\x03\x12\x1f\n\x1b\x43RONS_SORT_BY_NEXT_RUN_DATE\x10\x04\x12\x1a\n\x16\x43RONS_SORT_BY_END_TIME\x10\x05\x12\x1c\n\x18\x43RONS_SORT_BY_CREATED_AT\x10\x06\x12\x1c\n\x18\x43RONS_SORT_BY_UPDATED_AT\x10\x07\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\xbd\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\x12>\n\x06Stream\x12\x1c.coreApi.StreamThreadRequest\x1a\x14.coreApi.StreamEvent0\x01\x12N\n\x0eSetJointStatus\x12$.coreApi.SetThreadJointStatusRequest\x1a\x16.google.protobuf.Empty\x12\x45\n\nGetGraphID\x12\x1a.coreApi.GetGraphIDRequest\x1a\x1b.coreApi.GetGraphIDResponse2\x9f\x07\n\x04Runs\x12?\n\x06\x43reate\x12\x19.coreApi.CreateRunRequest\x1a\x1a.coreApi.CreateRunResponse\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\x43\n\x06Stream\x12\x1f.coreApi.StreamRunClientMessage\x1a\x14.coreApi.StreamEvent(\x01\x30\x01\x12\x45\n\x07Publish\x12\".coreApi.PublishStreamEventRequest\x1a\x16.google.protobuf.Empty\x12:\n\x05\x45nter\x12\x18.coreApi.EnterRunRequest\x1a\x15.coreApi.ControlEvent0\x01\x12?\n\x08MarkDone\x12\x1b.coreApi.MarkRunDoneRequest\x1a\x16.google.protobuf.Empty\x12\x32\n\x05Stats\x12\x16.google.protobuf.Empty\x1a\x11.coreApi.RunStats\x12\x41\n\tPoolStats\x12\x16.google.protobuf.Empty\x1a\x1c.coreApi.ConnectionPoolStats\x12:\n\x05\x43ount\x12\x19.coreApi.CountRunsRequest\x1a\x16.coreApi.CountResponse\x12\x39\n\x04Next\x12\x17.coreApi.NextRunRequest\x1a\x18.coreApi.NextRunResponse\x12;\n\x05Sweep\x12\x16.google.protobuf.Empty\x1a\x1a.coreApi.SweepRunsResponse2\xe4\x03\n\x05\x43rons\x12\x33\n\x06\x43reate\x12\x1a.coreApi.CreateCronRequest\x1a\r.coreApi.Cron\x12-\n\x03Get\x12\x17.coreApi.GetCronRequest\x1a\r.coreApi.Cron\x12\x31\n\x05Patch\x12\x19.coreApi.PatchCronRequest\x1a\r.coreApi.Cron\x12<\n\x06\x44\x65lete\x12\x1a.coreApi.DeleteCronRequest\x1a\x16.google.protobuf.Empty\x12\x43\n\x06Search\x12\x1b.coreApi.SearchCronsRequest\x1a\x1c.coreApi.SearchCronsResponse\x12;\n\x05\x43ount\x12\x1a.coreApi.CountCronsRequest\x1a\x16.coreApi.CountResponse\x12:\n\x04Next\x12\x16.google.protobuf.Empty\x1a\x1a.coreApi.NextCronsResponse\x12H\n\x0eSetNextRunDate\x12\x1e.coreApi.SetNextRunDateRequest\x1a\x16.google.protobuf.Empty2|\n\x05\x43\x61\x63he\x12\x37\n\x03Set\x12\x18.coreApi.CacheSetRequest\x1a\x16.google.protobuf.Empty\x12:\n\x03Get\x12\x18.coreApi.CacheGetRequest\x1a\x19.coreApi.CacheGetResponseBAZ?github.com/langchain-ai/langgraph-api/core/internal/core-api/pbb\x06proto3')
43
43
 
44
44
  _globals = globals()
45
45
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -55,24 +55,24 @@ if not _descriptor._USE_C_DESCRIPTORS:
55
55
  _globals['_SEARCHTHREADSREQUEST_EXTRACTENTRY']._serialized_options = b'8\001'
56
56
  _globals['_CRONPAYLOAD_EXTRAJSONENTRY']._loaded_options = None
57
57
  _globals['_CRONPAYLOAD_EXTRAJSONENTRY']._serialized_options = b'8\001'
58
- _globals['_ONCONFLICTBEHAVIOR']._serialized_start=17905
59
- _globals['_ONCONFLICTBEHAVIOR']._serialized_end=17952
60
- _globals['_SORTORDER']._serialized_start=17954
61
- _globals['_SORTORDER']._serialized_end=17984
62
- _globals['_ASSISTANTSSORTBY']._serialized_start=17986
63
- _globals['_ASSISTANTSSORTBY']._serialized_end=18095
64
- _globals['_THREADTTLSTRATEGY']._serialized_start=18097
65
- _globals['_THREADTTLSTRATEGY']._serialized_end=18185
66
- _globals['_CHECKPOINTSOURCE']._serialized_start=18188
67
- _globals['_CHECKPOINTSOURCE']._serialized_end=18356
68
- _globals['_THREADSSORTBY']._serialized_start=18359
69
- _globals['_THREADSSORTBY']._serialized_end=18568
70
- _globals['_CREATERUNBEHAVIOR']._serialized_start=18570
71
- _globals['_CREATERUNBEHAVIOR']._serialized_end=18666
72
- _globals['_CANCELRUNSTATUS']._serialized_start=18668
73
- _globals['_CANCELRUNSTATUS']._serialized_end=18774
74
- _globals['_CRONSSORTBY']._serialized_start=18777
75
- _globals['_CRONSSORTBY']._serialized_end=19030
58
+ _globals['_ONCONFLICTBEHAVIOR']._serialized_start=17955
59
+ _globals['_ONCONFLICTBEHAVIOR']._serialized_end=18002
60
+ _globals['_SORTORDER']._serialized_start=18004
61
+ _globals['_SORTORDER']._serialized_end=18034
62
+ _globals['_ASSISTANTSSORTBY']._serialized_start=18036
63
+ _globals['_ASSISTANTSSORTBY']._serialized_end=18145
64
+ _globals['_THREADTTLSTRATEGY']._serialized_start=18147
65
+ _globals['_THREADTTLSTRATEGY']._serialized_end=18235
66
+ _globals['_CHECKPOINTSOURCE']._serialized_start=18238
67
+ _globals['_CHECKPOINTSOURCE']._serialized_end=18406
68
+ _globals['_THREADSSORTBY']._serialized_start=18409
69
+ _globals['_THREADSSORTBY']._serialized_end=18618
70
+ _globals['_CREATERUNBEHAVIOR']._serialized_start=18620
71
+ _globals['_CREATERUNBEHAVIOR']._serialized_end=18716
72
+ _globals['_CANCELRUNSTATUS']._serialized_start=18718
73
+ _globals['_CANCELRUNSTATUS']._serialized_end=18824
74
+ _globals['_CRONSSORTBY']._serialized_start=18827
75
+ _globals['_CRONSSORTBY']._serialized_end=19080
76
76
  _globals['_TAGS']._serialized_start=450
77
77
  _globals['_TAGS']._serialized_end=472
78
78
  _globals['_EQAUTHFILTER']._serialized_start=474
@@ -136,139 +136,139 @@ if not _descriptor._USE_C_DESCRIPTORS:
136
136
  _globals['_THREADSTATUSCHECKPOINT']._serialized_start=5065
137
137
  _globals['_THREADSTATUSCHECKPOINT']._serialized_end=5149
138
138
  _globals['_INTERRUPT']._serialized_start=5152
139
- _globals['_INTERRUPT']._serialized_end=5280
140
- _globals['_INTERRUPTS']._serialized_start=5282
141
- _globals['_INTERRUPTS']._serialized_end=5334
142
- _globals['_THREAD']._serialized_start=5337
143
- _globals['_THREAD']._serialized_end=5941
144
- _globals['_THREAD_INTERRUPTSENTRY']._serialized_start=5844
145
- _globals['_THREAD_INTERRUPTSENTRY']._serialized_end=5914
146
- _globals['_CREATETHREADREQUEST']._serialized_start=5944
147
- _globals['_CREATETHREADREQUEST']._serialized_end=6270
148
- _globals['_GETTHREADREQUEST']._serialized_start=6273
149
- _globals['_GETTHREADREQUEST']._serialized_end=6471
150
- _globals['_PATCHTHREADREQUEST']._serialized_start=6474
151
- _globals['_PATCHTHREADREQUEST']._serialized_end=6817
152
- _globals['_DELETETHREADREQUEST']._serialized_start=6819
153
- _globals['_DELETETHREADREQUEST']._serialized_end=6912
154
- _globals['_COPYTHREADREQUEST']._serialized_start=6914
155
- _globals['_COPYTHREADREQUEST']._serialized_end=7005
156
- _globals['_SEARCHTHREADSREQUEST']._serialized_start=7008
157
- _globals['_SEARCHTHREADSREQUEST']._serialized_end=7553
158
- _globals['_SEARCHTHREADSREQUEST_EXTRACTENTRY']._serialized_start=7414
159
- _globals['_SEARCHTHREADSREQUEST_EXTRACTENTRY']._serialized_end=7460
160
- _globals['_SEARCHTHREADSRESPONSE']._serialized_start=7555
161
- _globals['_SEARCHTHREADSRESPONSE']._serialized_end=7612
162
- _globals['_COUNTTHREADSREQUEST']._serialized_start=7615
163
- _globals['_COUNTTHREADSREQUEST']._serialized_end=7826
164
- _globals['_SETTHREADSTATUSREQUEST']._serialized_start=7829
165
- _globals['_SETTHREADSTATUSREQUEST']._serialized_end=8152
166
- _globals['_SETTHREADJOINTSTATUSREQUEST']._serialized_start=8155
167
- _globals['_SETTHREADJOINTSTATUSREQUEST']._serialized_end=8495
168
- _globals['_STREAMTHREADREQUEST']._serialized_start=8498
169
- _globals['_STREAMTHREADREQUEST']._serialized_end=8699
170
- _globals['_RUNKWARGS']._serialized_start=8702
171
- _globals['_RUNKWARGS']._serialized_end=9399
172
- _globals['_RUN']._serialized_start=9402
173
- _globals['_RUN']._serialized_end=9854
174
- _globals['_RUNSTATS']._serialized_start=9857
175
- _globals['_RUNSTATS']._serialized_end=10171
176
- _globals['_POSTGRESPOOLSTATS']._serialized_start=10174
177
- _globals['_POSTGRESPOOLSTATS']._serialized_end=10304
178
- _globals['_REDISPOOLSTATS']._serialized_start=10306
179
- _globals['_REDISPOOLSTATS']._serialized_end=10401
180
- _globals['_CONNECTIONPOOLSTATS']._serialized_start=10404
181
- _globals['_CONNECTIONPOOLSTATS']._serialized_end=10544
182
- _globals['_NEXTRUNREQUEST']._serialized_start=10546
183
- _globals['_NEXTRUNREQUEST']._serialized_end=10591
184
- _globals['_RUNWITHATTEMPT']._serialized_start=10593
185
- _globals['_RUNWITHATTEMPT']._serialized_end=10712
186
- _globals['_NEXTRUNRESPONSE']._serialized_start=10714
187
- _globals['_NEXTRUNRESPONSE']._serialized_end=10770
188
- _globals['_CREATERUNREQUEST']._serialized_start=10773
189
- _globals['_CREATERUNREQUEST']._serialized_end=11687
190
- _globals['_GETRUNREQUEST']._serialized_start=11689
191
- _globals['_GETRUNREQUEST']._serialized_end=11807
192
- _globals['_DELETERUNREQUEST']._serialized_start=11809
193
- _globals['_DELETERUNREQUEST']._serialized_end=11930
194
- _globals['_CANCELRUNIDSTARGET']._serialized_start=11932
195
- _globals['_CANCELRUNIDSTARGET']._serialized_end=12018
196
- _globals['_CANCELSTATUSTARGET']._serialized_start=12020
197
- _globals['_CANCELSTATUSTARGET']._serialized_end=12082
198
- _globals['_CANCELRUNREQUEST']._serialized_start=12085
199
- _globals['_CANCELRUNREQUEST']._serialized_end=12348
200
- _globals['_SEARCHRUNSREQUEST']._serialized_start=12351
201
- _globals['_SEARCHRUNSREQUEST']._serialized_end=12578
202
- _globals['_SEARCHRUNSRESPONSE']._serialized_start=12580
203
- _globals['_SEARCHRUNSRESPONSE']._serialized_end=12628
204
- _globals['_SETRUNSTATUSREQUEST']._serialized_start=12630
205
- _globals['_SETRUNSTATUSREQUEST']._serialized_end=12724
206
- _globals['_SWEEPRUNSRESPONSE']._serialized_start=12726
207
- _globals['_SWEEPRUNSRESPONSE']._serialized_end=12777
208
- _globals['_COUNTRUNSREQUEST']._serialized_start=12779
209
- _globals['_COUNTRUNSREQUEST']._serialized_end=12849
210
- _globals['_STREAMRUNCLIENTMESSAGE']._serialized_start=12851
211
- _globals['_STREAMRUNCLIENTMESSAGE']._serialized_end=12978
212
- _globals['_SUBSCRIBERUNREQUEST']._serialized_start=12980
213
- _globals['_SUBSCRIBERUNREQUEST']._serialized_end=13066
214
- _globals['_JOINRUNREQUEST']._serialized_start=13069
215
- _globals['_JOINRUNREQUEST']._serialized_end=13279
216
- _globals['_ENTERRUNREQUEST']._serialized_start=13281
217
- _globals['_ENTERRUNREQUEST']._serialized_end=13382
218
- _globals['_MARKRUNDONEREQUEST']._serialized_start=13384
219
- _globals['_MARKRUNDONEREQUEST']._serialized_end=13488
220
- _globals['_PUBLISHSTREAMEVENTREQUEST']._serialized_start=13491
221
- _globals['_PUBLISHSTREAMEVENTREQUEST']._serialized_end=13655
222
- _globals['_GETGRAPHIDREQUEST']._serialized_start=13657
223
- _globals['_GETGRAPHIDREQUEST']._serialized_end=13710
224
- _globals['_GETGRAPHIDRESPONSE']._serialized_start=13712
225
- _globals['_GETGRAPHIDRESPONSE']._serialized_end=13768
226
- _globals['_CREATERUNRESPONSE']._serialized_start=13770
227
- _globals['_CREATERUNRESPONSE']._serialized_end=13817
228
- _globals['_CONTROLEVENT']._serialized_start=13819
229
- _globals['_CONTROLEVENT']._serialized_end=13915
230
- _globals['_CRONPAYLOAD']._serialized_start=13918
231
- _globals['_CRONPAYLOAD']._serialized_end=14566
232
- _globals['_CRONPAYLOAD_EXTRAJSONENTRY']._serialized_start=14381
233
- _globals['_CRONPAYLOAD_EXTRAJSONENTRY']._serialized_end=14429
234
- _globals['_CRON']._serialized_start=14569
235
- _globals['_CRON']._serialized_end=15156
236
- _globals['_CREATECRONREQUEST']._serialized_start=15159
237
- _globals['_CREATECRONREQUEST']._serialized_end=15825
238
- _globals['_DELETECRONREQUEST']._serialized_start=15827
239
- _globals['_DELETECRONREQUEST']._serialized_end=15916
240
- _globals['_GETCRONREQUEST']._serialized_start=15918
241
- _globals['_GETCRONREQUEST']._serialized_end=16004
242
- _globals['_SEARCHCRONSREQUEST']._serialized_start=16007
243
- _globals['_SEARCHCRONSREQUEST']._serialized_end=16496
244
- _globals['_SEARCHCRONSRESPONSE']._serialized_start=16498
245
- _globals['_SEARCHCRONSRESPONSE']._serialized_end=16549
246
- _globals['_COUNTCRONSREQUEST']._serialized_start=16552
247
- _globals['_COUNTCRONSREQUEST']._serialized_end=16812
248
- _globals['_PATCHCRONREQUEST']._serialized_start=16815
249
- _globals['_PATCHCRONREQUEST']._serialized_end=17382
250
- _globals['_CRONWITHNOW']._serialized_start=17385
251
- _globals['_CRONWITHNOW']._serialized_end=17555
252
- _globals['_NEXTCRONSRESPONSE']._serialized_start=17557
253
- _globals['_NEXTCRONSRESPONSE']._serialized_end=17613
254
- _globals['_SETNEXTRUNDATEREQUEST']._serialized_start=17615
255
- _globals['_SETNEXTRUNDATEREQUEST']._serialized_end=17721
256
- _globals['_CACHESETREQUEST']._serialized_start=17723
257
- _globals['_CACHESETREQUEST']._serialized_end=17821
258
- _globals['_CACHEGETREQUEST']._serialized_start=17823
259
- _globals['_CACHEGETREQUEST']._serialized_end=17853
260
- _globals['_CACHEGETRESPONSE']._serialized_start=17855
261
- _globals['_CACHEGETRESPONSE']._serialized_end=17903
262
- _globals['_ASSISTANTS']._serialized_start=19033
263
- _globals['_ASSISTANTS']._serialized_end=19610
264
- _globals['_ADMIN']._serialized_start=19612
265
- _globals['_ADMIN']._serialized_end=19681
266
- _globals['_THREADS']._serialized_start=19684
267
- _globals['_THREADS']._serialized_end=20385
268
- _globals['_RUNS']._serialized_start=20388
269
- _globals['_RUNS']._serialized_end=21315
270
- _globals['_CRONS']._serialized_start=21318
271
- _globals['_CRONS']._serialized_end=21802
272
- _globals['_CACHE']._serialized_start=21804
273
- _globals['_CACHE']._serialized_end=21928
139
+ _globals['_INTERRUPT']._serialized_end=5330
140
+ _globals['_INTERRUPTS']._serialized_start=5332
141
+ _globals['_INTERRUPTS']._serialized_end=5384
142
+ _globals['_THREAD']._serialized_start=5387
143
+ _globals['_THREAD']._serialized_end=5991
144
+ _globals['_THREAD_INTERRUPTSENTRY']._serialized_start=5894
145
+ _globals['_THREAD_INTERRUPTSENTRY']._serialized_end=5964
146
+ _globals['_CREATETHREADREQUEST']._serialized_start=5994
147
+ _globals['_CREATETHREADREQUEST']._serialized_end=6320
148
+ _globals['_GETTHREADREQUEST']._serialized_start=6323
149
+ _globals['_GETTHREADREQUEST']._serialized_end=6521
150
+ _globals['_PATCHTHREADREQUEST']._serialized_start=6524
151
+ _globals['_PATCHTHREADREQUEST']._serialized_end=6867
152
+ _globals['_DELETETHREADREQUEST']._serialized_start=6869
153
+ _globals['_DELETETHREADREQUEST']._serialized_end=6962
154
+ _globals['_COPYTHREADREQUEST']._serialized_start=6964
155
+ _globals['_COPYTHREADREQUEST']._serialized_end=7055
156
+ _globals['_SEARCHTHREADSREQUEST']._serialized_start=7058
157
+ _globals['_SEARCHTHREADSREQUEST']._serialized_end=7603
158
+ _globals['_SEARCHTHREADSREQUEST_EXTRACTENTRY']._serialized_start=7464
159
+ _globals['_SEARCHTHREADSREQUEST_EXTRACTENTRY']._serialized_end=7510
160
+ _globals['_SEARCHTHREADSRESPONSE']._serialized_start=7605
161
+ _globals['_SEARCHTHREADSRESPONSE']._serialized_end=7662
162
+ _globals['_COUNTTHREADSREQUEST']._serialized_start=7665
163
+ _globals['_COUNTTHREADSREQUEST']._serialized_end=7876
164
+ _globals['_SETTHREADSTATUSREQUEST']._serialized_start=7879
165
+ _globals['_SETTHREADSTATUSREQUEST']._serialized_end=8202
166
+ _globals['_SETTHREADJOINTSTATUSREQUEST']._serialized_start=8205
167
+ _globals['_SETTHREADJOINTSTATUSREQUEST']._serialized_end=8545
168
+ _globals['_STREAMTHREADREQUEST']._serialized_start=8548
169
+ _globals['_STREAMTHREADREQUEST']._serialized_end=8749
170
+ _globals['_RUNKWARGS']._serialized_start=8752
171
+ _globals['_RUNKWARGS']._serialized_end=9449
172
+ _globals['_RUN']._serialized_start=9452
173
+ _globals['_RUN']._serialized_end=9904
174
+ _globals['_RUNSTATS']._serialized_start=9907
175
+ _globals['_RUNSTATS']._serialized_end=10221
176
+ _globals['_POSTGRESPOOLSTATS']._serialized_start=10224
177
+ _globals['_POSTGRESPOOLSTATS']._serialized_end=10354
178
+ _globals['_REDISPOOLSTATS']._serialized_start=10356
179
+ _globals['_REDISPOOLSTATS']._serialized_end=10451
180
+ _globals['_CONNECTIONPOOLSTATS']._serialized_start=10454
181
+ _globals['_CONNECTIONPOOLSTATS']._serialized_end=10594
182
+ _globals['_NEXTRUNREQUEST']._serialized_start=10596
183
+ _globals['_NEXTRUNREQUEST']._serialized_end=10641
184
+ _globals['_RUNWITHATTEMPT']._serialized_start=10643
185
+ _globals['_RUNWITHATTEMPT']._serialized_end=10762
186
+ _globals['_NEXTRUNRESPONSE']._serialized_start=10764
187
+ _globals['_NEXTRUNRESPONSE']._serialized_end=10820
188
+ _globals['_CREATERUNREQUEST']._serialized_start=10823
189
+ _globals['_CREATERUNREQUEST']._serialized_end=11737
190
+ _globals['_GETRUNREQUEST']._serialized_start=11739
191
+ _globals['_GETRUNREQUEST']._serialized_end=11857
192
+ _globals['_DELETERUNREQUEST']._serialized_start=11859
193
+ _globals['_DELETERUNREQUEST']._serialized_end=11980
194
+ _globals['_CANCELRUNIDSTARGET']._serialized_start=11982
195
+ _globals['_CANCELRUNIDSTARGET']._serialized_end=12068
196
+ _globals['_CANCELSTATUSTARGET']._serialized_start=12070
197
+ _globals['_CANCELSTATUSTARGET']._serialized_end=12132
198
+ _globals['_CANCELRUNREQUEST']._serialized_start=12135
199
+ _globals['_CANCELRUNREQUEST']._serialized_end=12398
200
+ _globals['_SEARCHRUNSREQUEST']._serialized_start=12401
201
+ _globals['_SEARCHRUNSREQUEST']._serialized_end=12628
202
+ _globals['_SEARCHRUNSRESPONSE']._serialized_start=12630
203
+ _globals['_SEARCHRUNSRESPONSE']._serialized_end=12678
204
+ _globals['_SETRUNSTATUSREQUEST']._serialized_start=12680
205
+ _globals['_SETRUNSTATUSREQUEST']._serialized_end=12774
206
+ _globals['_SWEEPRUNSRESPONSE']._serialized_start=12776
207
+ _globals['_SWEEPRUNSRESPONSE']._serialized_end=12827
208
+ _globals['_COUNTRUNSREQUEST']._serialized_start=12829
209
+ _globals['_COUNTRUNSREQUEST']._serialized_end=12899
210
+ _globals['_STREAMRUNCLIENTMESSAGE']._serialized_start=12901
211
+ _globals['_STREAMRUNCLIENTMESSAGE']._serialized_end=13028
212
+ _globals['_SUBSCRIBERUNREQUEST']._serialized_start=13030
213
+ _globals['_SUBSCRIBERUNREQUEST']._serialized_end=13116
214
+ _globals['_JOINRUNREQUEST']._serialized_start=13119
215
+ _globals['_JOINRUNREQUEST']._serialized_end=13329
216
+ _globals['_ENTERRUNREQUEST']._serialized_start=13331
217
+ _globals['_ENTERRUNREQUEST']._serialized_end=13432
218
+ _globals['_MARKRUNDONEREQUEST']._serialized_start=13434
219
+ _globals['_MARKRUNDONEREQUEST']._serialized_end=13538
220
+ _globals['_PUBLISHSTREAMEVENTREQUEST']._serialized_start=13541
221
+ _globals['_PUBLISHSTREAMEVENTREQUEST']._serialized_end=13705
222
+ _globals['_GETGRAPHIDREQUEST']._serialized_start=13707
223
+ _globals['_GETGRAPHIDREQUEST']._serialized_end=13760
224
+ _globals['_GETGRAPHIDRESPONSE']._serialized_start=13762
225
+ _globals['_GETGRAPHIDRESPONSE']._serialized_end=13818
226
+ _globals['_CREATERUNRESPONSE']._serialized_start=13820
227
+ _globals['_CREATERUNRESPONSE']._serialized_end=13867
228
+ _globals['_CONTROLEVENT']._serialized_start=13869
229
+ _globals['_CONTROLEVENT']._serialized_end=13965
230
+ _globals['_CRONPAYLOAD']._serialized_start=13968
231
+ _globals['_CRONPAYLOAD']._serialized_end=14616
232
+ _globals['_CRONPAYLOAD_EXTRAJSONENTRY']._serialized_start=14431
233
+ _globals['_CRONPAYLOAD_EXTRAJSONENTRY']._serialized_end=14479
234
+ _globals['_CRON']._serialized_start=14619
235
+ _globals['_CRON']._serialized_end=15206
236
+ _globals['_CREATECRONREQUEST']._serialized_start=15209
237
+ _globals['_CREATECRONREQUEST']._serialized_end=15875
238
+ _globals['_DELETECRONREQUEST']._serialized_start=15877
239
+ _globals['_DELETECRONREQUEST']._serialized_end=15966
240
+ _globals['_GETCRONREQUEST']._serialized_start=15968
241
+ _globals['_GETCRONREQUEST']._serialized_end=16054
242
+ _globals['_SEARCHCRONSREQUEST']._serialized_start=16057
243
+ _globals['_SEARCHCRONSREQUEST']._serialized_end=16546
244
+ _globals['_SEARCHCRONSRESPONSE']._serialized_start=16548
245
+ _globals['_SEARCHCRONSRESPONSE']._serialized_end=16599
246
+ _globals['_COUNTCRONSREQUEST']._serialized_start=16602
247
+ _globals['_COUNTCRONSREQUEST']._serialized_end=16862
248
+ _globals['_PATCHCRONREQUEST']._serialized_start=16865
249
+ _globals['_PATCHCRONREQUEST']._serialized_end=17432
250
+ _globals['_CRONWITHNOW']._serialized_start=17435
251
+ _globals['_CRONWITHNOW']._serialized_end=17605
252
+ _globals['_NEXTCRONSRESPONSE']._serialized_start=17607
253
+ _globals['_NEXTCRONSRESPONSE']._serialized_end=17663
254
+ _globals['_SETNEXTRUNDATEREQUEST']._serialized_start=17665
255
+ _globals['_SETNEXTRUNDATEREQUEST']._serialized_end=17771
256
+ _globals['_CACHESETREQUEST']._serialized_start=17773
257
+ _globals['_CACHESETREQUEST']._serialized_end=17871
258
+ _globals['_CACHEGETREQUEST']._serialized_start=17873
259
+ _globals['_CACHEGETREQUEST']._serialized_end=17903
260
+ _globals['_CACHEGETRESPONSE']._serialized_start=17905
261
+ _globals['_CACHEGETRESPONSE']._serialized_end=17953
262
+ _globals['_ASSISTANTS']._serialized_start=19083
263
+ _globals['_ASSISTANTS']._serialized_end=19660
264
+ _globals['_ADMIN']._serialized_start=19662
265
+ _globals['_ADMIN']._serialized_end=19731
266
+ _globals['_THREADS']._serialized_start=19734
267
+ _globals['_THREADS']._serialized_end=20435
268
+ _globals['_RUNS']._serialized_start=20438
269
+ _globals['_RUNS']._serialized_end=21365
270
+ _globals['_CRONS']._serialized_start=21368
271
+ _globals['_CRONS']._serialized_end=21852
272
+ _globals['_CACHE']._serialized_start=21854
273
+ _globals['_CACHE']._serialized_end=21978
274
274
  # @@protoc_insertion_point(module_scope)
@@ -1299,6 +1299,7 @@ class Interrupt(_message.Message):
1299
1299
  WHEN_FIELD_NUMBER: _builtins.int
1300
1300
  RESUMABLE_FIELD_NUMBER: _builtins.int
1301
1301
  NS_FIELD_NUMBER: _builtins.int
1302
+ RESPONSE_SCHEMA_FIELD_NUMBER: _builtins.int
1302
1303
  id: _builtins.str
1303
1304
  value: _builtins.bytes
1304
1305
  when: _builtins.str
@@ -1307,6 +1308,8 @@ class Interrupt(_message.Message):
1307
1308
  """
1308
1309
  resumable: _builtins.bool
1309
1310
  """removed in LangGraph v0.6 (Python), retained for JS"""
1311
+ response_schema: _builtins.bytes
1312
+ """JSON Schema for the value expected on resume, if the graph provided one."""
1310
1313
  @_builtins.property
1311
1314
  def ns(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]:
1312
1315
  """removed in LangGraph v0.6 (Python), retained for JS"""
@@ -1319,13 +1322,16 @@ class Interrupt(_message.Message):
1319
1322
  when: _builtins.str | None = ...,
1320
1323
  resumable: _builtins.bool | None = ...,
1321
1324
  ns: _abc.Iterable[_builtins.str] | None = ...,
1325
+ response_schema: _builtins.bytes | None = ...,
1322
1326
  ) -> None: ...
1323
- _HasFieldArgType: _TypeAlias = _typing.Literal["_id", b"_id", "_resumable", b"_resumable", "_when", b"_when", "id", b"id", "resumable", b"resumable", "when", b"when"] # noqa: Y015
1327
+ _HasFieldArgType: _TypeAlias = _typing.Literal["_id", b"_id", "_response_schema", b"_response_schema", "_resumable", b"_resumable", "_when", b"_when", "id", b"id", "response_schema", b"response_schema", "resumable", b"resumable", "when", b"when"] # noqa: Y015
1324
1328
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1325
- _ClearFieldArgType: _TypeAlias = _typing.Literal["_id", b"_id", "_resumable", b"_resumable", "_when", b"_when", "id", b"id", "ns", b"ns", "resumable", b"resumable", "value", b"value", "when", b"when"] # noqa: Y015
1329
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["_id", b"_id", "_response_schema", b"_response_schema", "_resumable", b"_resumable", "_when", b"_when", "id", b"id", "ns", b"ns", "response_schema", b"response_schema", "resumable", b"resumable", "value", b"value", "when", b"when"] # noqa: Y015
1326
1330
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1327
1331
  _WhichOneofReturnType__id: _TypeAlias = _typing.Literal["id"] # noqa: Y015
1328
1332
  _WhichOneofArgType__id: _TypeAlias = _typing.Literal["_id", b"_id"] # noqa: Y015
1333
+ _WhichOneofReturnType__response_schema: _TypeAlias = _typing.Literal["response_schema"] # noqa: Y015
1334
+ _WhichOneofArgType__response_schema: _TypeAlias = _typing.Literal["_response_schema", b"_response_schema"] # noqa: Y015
1329
1335
  _WhichOneofReturnType__resumable: _TypeAlias = _typing.Literal["resumable"] # noqa: Y015
1330
1336
  _WhichOneofArgType__resumable: _TypeAlias = _typing.Literal["_resumable", b"_resumable"] # noqa: Y015
1331
1337
  _WhichOneofReturnType__when: _TypeAlias = _typing.Literal["when"] # noqa: Y015
@@ -1333,6 +1339,8 @@ class Interrupt(_message.Message):
1333
1339
  @_typing.overload
1334
1340
  def WhichOneof(self, oneof_group: _WhichOneofArgType__id) -> _WhichOneofReturnType__id | None: ...
1335
1341
  @_typing.overload
1342
+ def WhichOneof(self, oneof_group: _WhichOneofArgType__response_schema) -> _WhichOneofReturnType__response_schema | None: ...
1343
+ @_typing.overload
1336
1344
  def WhichOneof(self, oneof_group: _WhichOneofArgType__resumable) -> _WhichOneofReturnType__resumable | None: ...
1337
1345
  @_typing.overload
1338
1346
  def WhichOneof(self, oneof_group: _WhichOneofArgType__when) -> _WhichOneofReturnType__when | None: ...
openapi.json CHANGED
@@ -948,6 +948,60 @@
948
948
  }
949
949
  }
950
950
  },
951
+ "/threads/{thread_id}/storage": {
952
+ "get": {
953
+ "tags": ["Threads"],
954
+ "summary": "Get Thread Storage",
955
+ "description": "Bytes the thread's checkpoints occupy in the built-in checkpointer, as stored: checkpoints, channel values (per channel) and pending writes. Returns 501 when a custom checkpointer is configured.",
956
+ "operationId": "get_thread_storage_threads__thread_id__storage_get",
957
+ "parameters": [
958
+ {
959
+ "description": "The ID of the thread.",
960
+ "required": true,
961
+ "schema": {
962
+ "type": "string",
963
+ "format": "uuid",
964
+ "title": "Thread Id",
965
+ "description": "The ID of the thread."
966
+ },
967
+ "name": "thread_id",
968
+ "in": "path"
969
+ }
970
+ ],
971
+ "responses": {
972
+ "200": {
973
+ "description": "Success",
974
+ "content": {
975
+ "application/json": {
976
+ "schema": {
977
+ "$ref": "#/components/schemas/ThreadStorage"
978
+ }
979
+ }
980
+ }
981
+ },
982
+ "404": {
983
+ "description": "Thread not found",
984
+ "content": {
985
+ "application/json": {
986
+ "schema": {
987
+ "$ref": "#/components/schemas/ErrorResponse"
988
+ }
989
+ }
990
+ }
991
+ },
992
+ "422": {
993
+ "description": "Validation Error",
994
+ "content": {
995
+ "application/json": {
996
+ "schema": {
997
+ "$ref": "#/components/schemas/ErrorResponse"
998
+ }
999
+ }
1000
+ }
1001
+ }
1002
+ }
1003
+ }
1004
+ },
951
1005
  "/threads/{thread_id}/state": {
952
1006
  "get": {
953
1007
  "tags": ["Threads"],
@@ -5940,6 +5994,72 @@
5940
5994
  "title": "ThreadStateCheckpointRequest",
5941
5995
  "description": "Payload for getting the state of a thread at a checkpoint."
5942
5996
  },
5997
+ "ThreadStorage": {
5998
+ "properties": {
5999
+ "thread_id": {
6000
+ "type": "string",
6001
+ "format": "uuid",
6002
+ "title": "Thread Id"
6003
+ },
6004
+ "total_bytes": {
6005
+ "type": "integer",
6006
+ "title": "Total Bytes",
6007
+ "description": "Sum of the three sections below."
6008
+ },
6009
+ "checkpoints": {
6010
+ "type": "object",
6011
+ "title": "Checkpoints",
6012
+ "description": "Checkpoint rows: serialized checkpoint plus metadata.",
6013
+ "properties": {
6014
+ "count": { "type": "integer", "title": "Count" },
6015
+ "bytes": { "type": "integer", "title": "Bytes" }
6016
+ },
6017
+ "required": ["count", "bytes"]
6018
+ },
6019
+ "channel_values": {
6020
+ "type": "object",
6021
+ "title": "Channel Values",
6022
+ "description": "Stored channel values, one row per channel version.",
6023
+ "properties": {
6024
+ "count": { "type": "integer", "title": "Count" },
6025
+ "bytes": { "type": "integer", "title": "Bytes" },
6026
+ "by_channel": {
6027
+ "type": "object",
6028
+ "title": "By Channel",
6029
+ "additionalProperties": {
6030
+ "type": "object",
6031
+ "properties": {
6032
+ "versions": { "type": "integer", "title": "Versions" },
6033
+ "bytes": { "type": "integer", "title": "Bytes" }
6034
+ },
6035
+ "required": ["versions", "bytes"]
6036
+ }
6037
+ }
6038
+ },
6039
+ "required": ["count", "bytes", "by_channel"]
6040
+ },
6041
+ "pending_writes": {
6042
+ "type": "object",
6043
+ "title": "Pending Writes",
6044
+ "description": "Task writes not yet folded into a checkpoint.",
6045
+ "properties": {
6046
+ "count": { "type": "integer", "title": "Count" },
6047
+ "bytes": { "type": "integer", "title": "Bytes" }
6048
+ },
6049
+ "required": ["count", "bytes"]
6050
+ }
6051
+ },
6052
+ "type": "object",
6053
+ "required": [
6054
+ "thread_id",
6055
+ "total_bytes",
6056
+ "checkpoints",
6057
+ "channel_values",
6058
+ "pending_writes"
6059
+ ],
6060
+ "title": "ThreadStorage",
6061
+ "description": "Bytes a thread occupies in the checkpointer, as stored."
6062
+ },
5943
6063
  "ThreadState": {
5944
6064
  "properties": {
5945
6065
  "values": {
@@ -6617,6 +6737,10 @@
6617
6737
  },
6618
6738
  "value": {
6619
6739
  "type": "object"
6740
+ },
6741
+ "response_schema": {
6742
+ "type": "object",
6743
+ "description": "JSON Schema for the value expected when resuming the interrupt, if the graph provided one."
6620
6744
  }
6621
6745
  },
6622
6746
  "title": "Interrupt",