langgraph-api 0.4.31__py3-none-any.whl → 0.4.33__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of langgraph-api might be problematic. Click here for more details.

langgraph_api/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.4.31"
1
+ __version__ = "0.4.33"
@@ -57,7 +57,7 @@ def _get_configurable_jsonschema(graph: Pregel) -> dict:
57
57
 
58
58
  Important: we only return the `configurable` part of the schema.
59
59
 
60
- The default get_config_schema method returns the entire schema (RunnableConfig),
60
+ The default get_config_schema method returns the entire schema (Config),
61
61
  which includes other root keys like "max_concurrency", which we
62
62
  do not want to expose.
63
63
 
langgraph_api/graph.py CHANGED
@@ -26,6 +26,7 @@ from langgraph_api.feature_flags import FF_USE_CORE_API, USE_RUNTIME_CONTEXT_API
26
26
  from langgraph_api.js.base import BaseRemotePregel, is_js_path
27
27
  from langgraph_api.schema import Config
28
28
  from langgraph_api.utils.config import run_in_executor, var_child_runnable_config
29
+ from langgraph_api.utils.errors import GraphLoadError
29
30
 
30
31
  if TYPE_CHECKING:
31
32
  from langchain_core.embeddings import Embeddings
@@ -57,12 +58,9 @@ async def register_graph(
57
58
  Assistants = AssistantsGrpc if FF_USE_CORE_API else AssistantsRuntime
58
59
 
59
60
  await logger.ainfo(f"Registering graph with id '{graph_id}'", graph_id=graph_id)
60
- if not FF_USE_CORE_API:
61
- GRAPHS[graph_id] = graph
62
- if callable(graph):
63
- FACTORY_ACCEPTS_CONFIG[graph_id] = (
64
- len(inspect.signature(graph).parameters) > 0
65
- )
61
+ GRAPHS[graph_id] = graph
62
+ if callable(graph):
63
+ FACTORY_ACCEPTS_CONFIG[graph_id] = len(inspect.signature(graph).parameters) > 0
66
64
 
67
65
  from langgraph_runtime.retry import retry_db
68
66
 
@@ -417,7 +415,10 @@ async def collect_graphs_from_env(register: bool = False) -> None:
417
415
  )
418
416
 
419
417
  for spec in py_specs:
420
- graph = await run_in_executor(None, _graph_from_spec, spec)
418
+ try:
419
+ graph = await run_in_executor(None, _graph_from_spec, spec)
420
+ except Exception as exc:
421
+ raise GraphLoadError(spec, exc) from exc
421
422
  if register:
422
423
  await register_graph(
423
424
  spec.id, graph, spec.config, description=spec.description
@@ -27,7 +27,7 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
27
27
  from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
28
28
 
29
29
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x63ore-api.proto\x12\x07\x63oreApi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x95\x01\n\x0eRunnableConfig\x12\x0c\n\x04tags\x18\x01 \x03(\t\x12\x1c\n\x0frecursion_limit\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x32\n\x0c\x63onfigurable\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x42\x12\n\x10_recursion_limitB\x0f\n\r_configurable\"\x1d\n\x0c\x45qAuthFilter\x12\r\n\x05match\x18\x01 \x01(\t\"=\n\x12\x43ontainsAuthFilter\x12\'\n\x07matches\x18\x01 \x03(\x0b\x32\x16.google.protobuf.Value\"l\n\nAuthFilter\x12#\n\x02\x65q\x18\x01 \x01(\x0b\x32\x15.coreApi.EqAuthFilterH\x00\x12/\n\x08\x63ontains\x18\x02 \x01(\x0b\x32\x1b.coreApi.ContainsAuthFilterH\x00\x42\x08\n\x06\x66ilter\"\x15\n\x04UUID\x12\r\n\x05value\x18\x01 \x01(\t\"\x1e\n\rCountResponse\x12\r\n\x05\x63ount\x18\x01 \x01(\x04\"\x9b\x03\n\tAssistant\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x17.coreApi.RunnableConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\t \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\n \x01(\tH\x04\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x0b\n\t_metadataB\x07\n\x05_nameB\x0e\n\x0c_description\"\xf2\x02\n\x10\x41ssistantVersion\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x17.coreApi.RunnableConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\t \x01(\tH\x04\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x0b\n\t_metadataB\x07\n\x05_nameB\x0e\n\x0c_description\"\xca\x03\n\x16\x43reateAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12=\n\x07\x66ilters\x18\x03 \x03(\x0b\x32,.coreApi.CreateAssistantRequest.FiltersEntry\x12.\n\tif_exists\x18\x04 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12\'\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x17.coreApi.RunnableConfig\x12(\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x11\n\x04name\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x01\x88\x01\x01\x12.\n\x08metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0b\n\t_metadata\"\xac\x01\n\x13GetAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.GetAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xcb\x03\n\x15PatchAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12<\n\x07\x66ilters\x18\x02 \x03(\x0b\x32+.coreApi.PatchAssistantRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12,\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\x17.coreApi.RunnableConfigH\x01\x88\x01\x01\x12-\n\x07\x63ontext\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x05\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\t\n\x07_configB\n\n\x08_contextB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0b\n\t_metadata\"\xb2\x01\n\x16\x44\x65leteAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12=\n\x07\x66ilters\x18\x02 \x03(\x0b\x32,.coreApi.DeleteAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"1\n\x18\x44\x65leteAssistantsResponse\x12\x15\n\rassistant_ids\x18\x01 \x03(\t\"\xc9\x01\n\x19SetLatestAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x03\x12@\n\x07\x66ilters\x18\x03 \x03(\x0b\x32/.coreApi.SetLatestAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xc6\x03\n\x17SearchAssistantsRequest\x12>\n\x07\x66ilters\x18\x01 \x03(\x0b\x32-.coreApi.SearchAssistantsRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12/\n\x07sort_by\x18\x06 \x01(\x0e\x32\x19.coreApi.AssistantsSortByH\x04\x88\x01\x01\x12+\n\nsort_order\x18\x07 \x01(\x0e\x32\x12.coreApi.SortOrderH\x05\x88\x01\x01\x12\x0e\n\x06select\x18\x08 \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\x0b\n\t_metadataB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_order\"B\n\x18SearchAssistantsResponse\x12&\n\nassistants\x18\x01 \x03(\x0b\x32\x12.coreApi.Assistant\"\xb7\x02\n\x1bGetAssistantVersionsRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x42\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x31.coreApi.GetAssistantVersionsRequest.FiltersEntry\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x04H\x01\x88\x01\x01\x12\x13\n\x06offset\x18\x05 \x01(\x04H\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x08\n\x06_limitB\t\n\x07_offset\"K\n\x1cGetAssistantVersionsResponse\x12+\n\x08versions\x18\x01 \x03(\x0b\x32\x19.coreApi.AssistantVersion\"\xfd\x01\n\x16\x43ountAssistantsRequest\x12=\n\x07\x66ilters\x18\x01 \x03(\x0b\x32,.coreApi.CountAssistantsRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\x0b\n\t_metadata\"i\n\x0fTruncateRequest\x12\x0c\n\x04runs\x18\x01 \x01(\x08\x12\x0f\n\x07threads\x18\x02 \x01(\x08\x12\x12\n\nassistants\x18\x03 \x01(\x08\x12\x14\n\x0c\x63heckpointer\x18\x04 \x01(\x08\x12\r\n\x05store\x18\x05 \x01(\x08\"\xbb\x01\n\x0fThreadTTLConfig\x12\x31\n\x08strategy\x18\x01 \x01(\x0e\x32\x1a.coreApi.ThreadTTLStrategyH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65\x66\x61ult_ttl\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12#\n\x16sweep_interval_minutes\x18\x03 \x01(\x05H\x02\x88\x01\x01\x42\x0b\n\t_strategyB\x0e\n\x0c_default_ttlB\x19\n\x17_sweep_interval_minutes\"\x19\n\x08\x46ragment\x12\r\n\x05value\x18\x01 \x01(\x0c\"\xac\x01\n\x0e\x43heckpointTask\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x12+\n\ninterrupts\x18\x04 \x03(\x0b\x32\x17.google.protobuf.Struct\x12+\n\x05state\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x42\x08\n\x06_errorB\x08\n\x06_state\"\xd6\x01\n\x12\x43heckpointMetadata\x12.\n\x06source\x18\x01 \x01(\x0e\x32\x19.coreApi.CheckpointSourceH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x39\n\x07parents\x18\x03 \x03(\x0b\x32(.coreApi.CheckpointMetadata.ParentsEntry\x1a.\n\x0cParentsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_sourceB\x07\n\x05_step\"\xa1\x02\n\x11\x43heckpointPayload\x12,\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x17.coreApi.RunnableConfigH\x00\x88\x01\x01\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.coreApi.CheckpointMetadata\x12\'\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0c\n\x04next\x18\x04 \x03(\t\x12\x33\n\rparent_config\x18\x05 \x01(\x0b\x32\x17.coreApi.RunnableConfigH\x01\x88\x01\x01\x12&\n\x05tasks\x18\x06 \x03(\x0b\x32\x17.coreApi.CheckpointTaskB\t\n\x07_configB\x10\n\x0e_parent_config\"\x99\x01\n\tInterrupt\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x11\n\x04when\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tresumable\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\n\n\x02ns\x18\x05 \x03(\tB\x05\n\x03_idB\x07\n\x05_whenB\x0c\n\n_resumable\"4\n\nInterrupts\x12&\n\ninterrupts\x18\x01 \x03(\x0b\x32\x12.coreApi.Interrupt\"\xbd\x03\n\x06Thread\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x08metadata\x18\x04 \x01(\x0b\x32\x11.coreApi.Fragment\x12!\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x11.coreApi.Fragment\x12%\n\x06status\x18\x07 \x01(\x0e\x32\x15.coreApi.ThreadStatus\x12!\n\x06values\x18\x08 \x01(\x0b\x32\x11.coreApi.Fragment\x12\x33\n\ninterrupts\x18\t \x03(\x0b\x32\x1f.coreApi.Thread.InterruptsEntry\x1a\x46\n\x0fInterruptsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.Interrupts:\x02\x38\x01\"\xd9\x02\n\x13\x43reateThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.CreateThreadRequest.FiltersEntry\x12.\n\tif_exists\x18\x03 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12.\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x05 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x06\n\x04_ttl\"\xb2\x01\n\x10GetThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x37\n\x07\x66ilters\x18\x02 \x03(\x0b\x32&.coreApi.GetThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xa7\x02\n\x12PatchThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x39\n\x07\x66ilters\x18\x02 \x03(\x0b\x32(.coreApi.PatchThreadRequest.FiltersEntry\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x04 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x06\n\x04_ttl\"\xb8\x01\n\x13\x44\x65leteThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.DeleteThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xb4\x01\n\x11\x43opyThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\'.coreApi.CopyThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\x89\x04\n\x14SearchThreadsRequest\x12;\n\x07\x66ilters\x18\x01 \x03(\x0b\x32*.coreApi.SearchThreadsRequest.FiltersEntry\x12.\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12,\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12*\n\x06status\x18\x04 \x01(\x0e\x32\x15.coreApi.ThreadStatusH\x02\x88\x01\x01\x12\x12\n\x05limit\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12\x13\n\x06offset\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12,\n\x07sort_by\x18\x07 \x01(\x0e\x32\x16.coreApi.ThreadsSortByH\x05\x88\x01\x01\x12+\n\nsort_order\x18\x08 \x01(\x0e\x32\x12.coreApi.SortOrderH\x06\x88\x01\x01\x12\x0e\n\x06select\x18\t \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\t\n\x07_valuesB\t\n\x07_statusB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_order\"9\n\x15SearchThreadsResponse\x12 \n\x07threads\x18\x01 \x03(\x0b\x32\x0f.coreApi.Thread\"\xc3\x02\n\x13\x43ountThreadsRequest\x12:\n\x07\x66ilters\x18\x01 \x03(\x0b\x32).coreApi.CountThreadsRequest.FiltersEntry\x12.\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12,\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12*\n\x06status\x18\x04 \x01(\x0e\x32\x15.coreApi.ThreadStatusH\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\t\n\x07_valuesB\t\n\x07_status\";\n\x17SweepThreadsTTLResponse\x12\x0f\n\x07\x65xpired\x18\x01 \x01(\x04\x12\x0f\n\x07\x64\x65leted\x18\x02 \x01(\x04\"J\n\x16SweepThreadsTTLRequest\x12\x12\n\nbatch_size\x18\x01 \x01(\x04\x12\x12\n\x05limit\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\x08\n\x06_limit\"\x94\x02\n\x16SetThreadStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12%\n\x06status\x18\x02 \x01(\x0e\x32\x15.coreApi.ThreadStatus\x12\x33\n\ncheckpoint\x18\x03 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12/\n\texception\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x0f\x65xpected_status\x18\x05 \x03(\x0e\x32\x15.coreApi.ThreadStatusB\r\n\x0b_checkpointB\x0c\n\n_exception\"\xee\x01\n\x1bSetThreadJointStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1d\n\x06run_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x12\n\nrun_status\x18\x03 \x01(\t\x12\x10\n\x08graph_id\x18\x04 \x01(\t\x12\x33\n\ncheckpoint\x18\x05 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12\x16\n\texception\x18\x06 \x01(\tH\x01\x88\x01\x01\x42\r\n\x0b_checkpointB\x0c\n\n_exception\"\xd3\x01\n\x14JointRollbackRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1d\n\x06run_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x10\n\x08graph_id\x18\x03 \x01(\t\x12\x33\n\ncheckpoint\x18\x04 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12\x16\n\texception\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\r\n\x0b_checkpointB\x0c\n\n_exception\"\xd7\x04\n\tRunKwargs\x12,\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x17.coreApi.RunnableConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12+\n\x05input\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12-\n\x07\x63ommand\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x03\x88\x01\x01\x12(\n\x0bstream_mode\x18\x05 \x01(\x0e\x32\x13.coreApi.StreamMode\x12\x18\n\x10interrupt_before\x18\x06 \x03(\t\x12\x17\n\x0finterrupt_after\x18\x07 \x03(\t\x12\x14\n\x07webhook\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\rfeedback_keys\x18\t \x03(\t\x12\x16\n\ttemporary\x18\n \x01(\x08H\x05\x88\x01\x01\x12\x16\n\tsubgraphs\x18\x0b \x01(\x08H\x06\x88\x01\x01\x12\x16\n\tresumable\x18\x0c \x01(\x08H\x07\x88\x01\x01\x12\x1e\n\x11\x63heckpoint_during\x18\r \x01(\x08H\x08\x88\x01\x01\x12\x17\n\ndurability\x18\x0e \x01(\tH\t\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x08\n\x06_inputB\n\n\x08_commandB\n\n\x08_webhookB\x0c\n\n_temporaryB\x0c\n\n_subgraphsB\x0c\n\n_resumableB\x14\n\x12_checkpoint_duringB\r\n\x0b_durability\"\xf0\x02\n\x03Run\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12#\n\x0c\x61ssistant_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUID\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\"\n\x06status\x18\x06 \x01(\x0e\x32\x12.coreApi.RunStatus\x12#\n\x08metadata\x18\x07 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x06kwargs\x18\x08 \x01(\x0b\x32\x12.coreApi.RunKwargs\x12\x36\n\x12multitask_strategy\x18\t \x01(\x0e\x32\x1a.coreApi.MultitaskStrategy\"\x8a\x01\n\nQueueStats\x12\x11\n\tn_pending\x18\x01 \x01(\x04\x12\x11\n\tn_running\x18\x02 \x01(\x04\x12\x19\n\x0cmax_age_secs\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12\x19\n\x0cmed_age_secs\x18\x04 \x01(\x01H\x01\x88\x01\x01\x42\x0f\n\r_max_age_secsB\x0f\n\r_med_age_secs\"-\n\x0eNextRunRequest\x12\x0c\n\x04wait\x18\x01 \x01(\x08\x12\r\n\x05limit\x18\x02 \x01(\x04\"<\n\x0eRunWithAttempt\x12\x19\n\x03run\x18\x01 \x01(\x0b\x32\x0c.coreApi.Run\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x04\"8\n\x0fNextRunResponse\x12%\n\x04runs\x18\x01 \x03(\x0b\x32\x17.coreApi.RunWithAttempt\"\xe9\x05\n\x10\x43reateRunRequest\x12#\n\x0c\x61ssistant_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\'\n\x06kwargs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x37\n\x07\x66ilters\x18\x03 \x03(\x0b\x32&.coreApi.CreateRunRequest.FiltersEntry\x12%\n\tthread_id\x18\x04 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12\x14\n\x07user_id\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\"\n\x06run_id\x18\x06 \x01(\x0b\x32\r.coreApi.UUIDH\x02\x88\x01\x01\x12\'\n\x06status\x18\x07 \x01(\x0e\x32\x12.coreApi.RunStatusH\x03\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x04\x88\x01\x01\x12\'\n\x1aprevent_insert_if_inflight\x18\t \x01(\x08H\x05\x88\x01\x01\x12;\n\x12multitask_strategy\x18\n \x01(\x0e\x32\x1a.coreApi.MultitaskStrategyH\x06\x88\x01\x01\x12\x36\n\rif_not_exists\x18\x0b \x01(\x0e\x32\x1a.coreApi.CreateRunBehaviorH\x07\x88\x01\x01\x12\x1a\n\rafter_seconds\x18\x0c \x01(\x04H\x08\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0c\n\n_thread_idB\n\n\x08_user_idB\t\n\x07_run_idB\t\n\x07_statusB\x0b\n\t_metadataB\x1d\n\x1b_prevent_insert_if_inflightB\x15\n\x13_multitask_strategyB\x10\n\x0e_if_not_existsB\x10\n\x0e_after_seconds\"\xcb\x01\n\rGetRunRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x34\n\x07\x66ilters\x18\x03 \x03(\x0b\x32#.coreApi.GetRunRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xd1\x01\n\x10\x44\x65leteRunRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x37\n\x07\x66ilters\x18\x03 \x03(\x0b\x32&.coreApi.DeleteRunRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"V\n\x12\x43\x61ncelRunIdsTarget\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1e\n\x07run_ids\x18\x02 \x03(\x0b\x32\r.coreApi.UUID\">\n\x12\x43\x61ncelStatusTarget\x12(\n\x06status\x18\x01 \x01(\x0e\x32\x18.coreApi.CancelRunStatus\"\xb3\x02\n\x10\x43\x61ncelRunRequest\x12\x37\n\x07\x66ilters\x18\x01 \x03(\x0b\x32&.coreApi.CancelRunRequest.FiltersEntry\x12.\n\x07run_ids\x18\x02 \x01(\x0b\x32\x1b.coreApi.CancelRunIdsTargetH\x00\x12-\n\x06status\x18\x03 \x01(\x0b\x32\x1b.coreApi.CancelStatusTargetH\x00\x12-\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32\x18.coreApi.CancelRunActionH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x08\n\x06targetB\t\n\x07_action\"\xb6\x02\n\x11SearchRunsRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\'.coreApi.SearchRunsRequest.FiltersEntry\x12\x12\n\x05limit\x18\x03 \x01(\x04H\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\x04H\x01\x88\x01\x01\x12\'\n\x06status\x18\x05 \x01(\x0e\x32\x12.coreApi.RunStatusH\x02\x88\x01\x01\x12\x0e\n\x06select\x18\x06 \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07_status\"0\n\x12SearchRunsResponse\x12\x1a\n\x04runs\x18\x01 \x03(\x0b\x32\x0c.coreApi.Run\"X\n\x13SetRunStatusRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\"\n\x06status\x18\x02 \x01(\x0e\x32\x12.coreApi.RunStatus\"3\n\x11SweepRunsResponse\x12\x1e\n\x07run_ids\x18\x01 \x03(\x0b\x32\r.coreApi.UUID*/\n\x12OnConflictBehavior\x12\t\n\x05RAISE\x10\x00\x12\x0e\n\nDO_NOTHING\x10\x01*\x1e\n\tSortOrder\x12\x08\n\x04\x44\x45SC\x10\x00\x12\x07\n\x03\x41SC\x10\x01*m\n\x10\x41ssistantsSortBy\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x10\n\x0c\x41SSISTANT_ID\x10\x01\x12\x0c\n\x08GRAPH_ID\x10\x02\x12\x08\n\x04NAME\x10\x03\x12\x0e\n\nCREATED_AT\x10\x04\x12\x0e\n\nUPDATED_AT\x10\x05*v\n\x0cThreadStatus\x12\x16\n\x12THREAD_STATUS_IDLE\x10\x00\x12\x16\n\x12THREAD_STATUS_BUSY\x10\x01\x12\x1d\n\x19THREAD_STATUS_INTERRUPTED\x10\x02\x12\x17\n\x13THREAD_STATUS_ERROR\x10\x03*3\n\x11ThreadTTLStrategy\x12\x1e\n\x1aTHREAD_TTL_STRATEGY_DELETE\x10\x00*\xa8\x01\n\x10\x43heckpointSource\x12!\n\x1d\x43HECKPOINT_SOURCE_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x43HECKPOINT_SOURCE_INPUT\x10\x01\x12\x1a\n\x16\x43HECKPOINT_SOURCE_LOOP\x10\x02\x12\x1c\n\x18\x43HECKPOINT_SOURCE_UPDATE\x10\x03\x12\x1a\n\x16\x43HECKPOINT_SOURCE_FORK\x10\x04*\xab\x01\n\rThreadsSortBy\x12\x1f\n\x1bTHREADS_SORT_BY_UNSPECIFIED\x10\x00\x12\x1d\n\x19THREADS_SORT_BY_THREAD_ID\x10\x01\x12\x1e\n\x1aTHREADS_SORT_BY_CREATED_AT\x10\x02\x12\x1e\n\x1aTHREADS_SORT_BY_UPDATED_AT\x10\x03\x12\x1a\n\x16THREADS_SORT_BY_STATUS\x10\x04*\x9d\x01\n\tRunStatus\x12\x16\n\x12RUN_STATUS_PENDING\x10\x00\x12\x16\n\x12RUN_STATUS_RUNNING\x10\x01\x12\x14\n\x10RUN_STATUS_ERROR\x10\x02\x12\x16\n\x12RUN_STATUS_SUCCESS\x10\x03\x12\x16\n\x12RUN_STATUS_TIMEOUT\x10\x04\x12\x1a\n\x16RUN_STATUS_INTERRUPTED\x10\x05*\xb9\x01\n\x11MultitaskStrategy\x12\"\n\x1eMULTITASK_STRATEGY_UNSPECIFIED\x10\x00\x12\x1d\n\x19MULTITASK_STRATEGY_REJECT\x10\x01\x12\x1f\n\x1bMULTITASK_STRATEGY_ROLLBACK\x10\x02\x12 \n\x1cMULTITASK_STRATEGY_INTERRUPT\x10\x03\x12\x1e\n\x1aMULTITASK_STRATEGY_ENQUEUE\x10\x04*\xef\x01\n\nStreamMode\x12\x1b\n\x17STREAM_MODE_UNSPECIFIED\x10\x00\x12\x16\n\x12STREAM_MODE_VALUES\x10\x01\x12\x18\n\x14STREAM_MODE_MESSAGES\x10\x02\x12\x17\n\x13STREAM_MODE_UPDATES\x10\x03\x12\x16\n\x12STREAM_MODE_EVENTS\x10\x04\x12\x15\n\x11STREAM_MODE_DEBUG\x10\x05\x12\x15\n\x11STREAM_MODE_TASKS\x10\x06\x12\x1b\n\x17STREAM_MODE_CHECKPOINTS\x10\x07\x12\x16\n\x12STREAM_MODE_CUSTOM\x10\x08*`\n\x11\x43reateRunBehavior\x12#\n\x1fREJECT_RUN_IF_THREAD_NOT_EXISTS\x10\x00\x12&\n\"CREATE_THREAD_IF_THREAD_NOT_EXISTS\x10\x01*R\n\x0f\x43\x61ncelRunAction\x12\x1f\n\x1b\x43\x41NCEL_RUN_ACTION_INTERRUPT\x10\x00\x12\x1e\n\x1a\x43\x41NCEL_RUN_ACTION_ROLLBACK\x10\x01*j\n\x0f\x43\x61ncelRunStatus\x12\x1d\n\x19\x43\x41NCEL_RUN_STATUS_PENDING\x10\x00\x12\x1d\n\x19\x43\x41NCEL_RUN_STATUS_RUNNING\x10\x01\x12\x19\n\x15\x43\x41NCEL_RUN_STATUS_ALL\x10\x02\x32\xc1\x04\n\nAssistants\x12\x37\n\x03Get\x12\x1c.coreApi.GetAssistantRequest\x1a\x12.coreApi.Assistant\x12=\n\x06\x43reate\x12\x1f.coreApi.CreateAssistantRequest\x1a\x12.coreApi.Assistant\x12;\n\x05Patch\x12\x1e.coreApi.PatchAssistantRequest\x1a\x12.coreApi.Assistant\x12L\n\x06\x44\x65lete\x12\x1f.coreApi.DeleteAssistantRequest\x1a!.coreApi.DeleteAssistantsResponse\x12M\n\x06Search\x12 .coreApi.SearchAssistantsRequest\x1a!.coreApi.SearchAssistantsResponse\x12\x43\n\tSetLatest\x12\".coreApi.SetLatestAssistantRequest\x1a\x12.coreApi.Assistant\x12Z\n\x0bGetVersions\x12$.coreApi.GetAssistantVersionsRequest\x1a%.coreApi.GetAssistantVersionsResponse\x12@\n\x05\x43ount\x12\x1f.coreApi.CountAssistantsRequest\x1a\x16.coreApi.CountResponse2E\n\x05\x41\x64min\x12<\n\x08Truncate\x12\x18.coreApi.TruncateRequest\x1a\x16.google.protobuf.Empty2\xcd\x05\n\x07Threads\x12\x37\n\x06\x43reate\x12\x1c.coreApi.CreateThreadRequest\x1a\x0f.coreApi.Thread\x12\x31\n\x03Get\x12\x19.coreApi.GetThreadRequest\x1a\x0f.coreApi.Thread\x12\x35\n\x05Patch\x12\x1b.coreApi.PatchThreadRequest\x1a\x0f.coreApi.Thread\x12\x35\n\x06\x44\x65lete\x12\x1c.coreApi.DeleteThreadRequest\x1a\r.coreApi.UUID\x12G\n\x06Search\x12\x1d.coreApi.SearchThreadsRequest\x1a\x1e.coreApi.SearchThreadsResponse\x12=\n\x05\x43ount\x12\x1c.coreApi.CountThreadsRequest\x1a\x16.coreApi.CountResponse\x12\x33\n\x04\x43opy\x12\x1a.coreApi.CopyThreadRequest\x1a\x0f.coreApi.Thread\x12\x44\n\tSetStatus\x12\x1f.coreApi.SetThreadStatusRequest\x1a\x16.google.protobuf.Empty\x12N\n\x0eSetJointStatus\x12$.coreApi.SetThreadJointStatusRequest\x1a\x16.google.protobuf.Empty\x12\x46\n\rJointRollback\x12\x1d.coreApi.JointRollbackRequest\x1a\x16.google.protobuf.Empty\x12M\n\x08SweepTTL\x12\x1f.coreApi.SweepThreadsTTLRequest\x1a .coreApi.SweepThreadsTTLResponse2\x8b\x04\n\x04Runs\x12\x31\n\x06\x43reate\x12\x19.coreApi.CreateRunRequest\x1a\x0c.coreApi.Run\x12+\n\x03Get\x12\x16.coreApi.GetRunRequest\x1a\x0c.coreApi.Run\x12\x32\n\x06\x44\x65lete\x12\x19.coreApi.DeleteRunRequest\x1a\r.coreApi.UUID\x12\x41\n\x06Search\x12\x1a.coreApi.SearchRunsRequest\x1a\x1b.coreApi.SearchRunsResponse\x12;\n\x06\x43\x61ncel\x12\x19.coreApi.CancelRunRequest\x1a\x16.google.protobuf.Empty\x12\x41\n\tSetStatus\x12\x1c.coreApi.SetRunStatusRequest\x1a\x16.google.protobuf.Empty\x12\x34\n\x05Stats\x12\x16.google.protobuf.Empty\x1a\x13.coreApi.QueueStats\x12\x39\n\x04Next\x12\x17.coreApi.NextRunRequest\x1a\x18.coreApi.NextRunResponse\x12;\n\x05Sweep\x12\x16.google.protobuf.Empty\x1a\x1a.coreApi.SweepRunsResponseB<Z:github.com/langchain-ai/langgraph-api/core-api/internal/pbb\x06proto3')
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x63ore-api.proto\x12\x07\x63oreApi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xab\x01\n\x06\x43onfig\x12\x0c\n\x04tags\x18\x01 \x03(\t\x12\x1c\n\x0frecursion_limit\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x32\n\x0c\x63onfigurable\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x12\n\x05\x65xtra\x18\x04 \x01(\x0cH\x02\x88\x01\x01\x42\x12\n\x10_recursion_limitB\x0f\n\r_configurableB\x08\n\x06_extra\"\x1d\n\x0c\x45qAuthFilter\x12\r\n\x05match\x18\x01 \x01(\t\"=\n\x12\x43ontainsAuthFilter\x12\'\n\x07matches\x18\x01 \x03(\x0b\x32\x16.google.protobuf.Value\"l\n\nAuthFilter\x12#\n\x02\x65q\x18\x01 \x01(\x0b\x32\x15.coreApi.EqAuthFilterH\x00\x12/\n\x08\x63ontains\x18\x02 \x01(\x0b\x32\x1b.coreApi.ContainsAuthFilterH\x00\x42\x08\n\x06\x66ilter\"\x15\n\x04UUID\x12\r\n\x05value\x18\x01 \x01(\t\"\x1e\n\rCountResponse\x12\r\n\x05\x63ount\x18\x01 \x01(\x04\"\x93\x03\n\tAssistant\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12$\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\t \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\n \x01(\tH\x04\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x0b\n\t_metadataB\x07\n\x05_nameB\x0e\n\x0c_description\"\xea\x02\n\x10\x41ssistantVersion\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12$\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x08metadata\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x08 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\t \x01(\tH\x04\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x0b\n\t_metadataB\x07\n\x05_nameB\x0e\n\x0c_description\"\xc2\x03\n\x16\x43reateAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x10\n\x08graph_id\x18\x02 \x01(\t\x12=\n\x07\x66ilters\x18\x03 \x03(\x0b\x32,.coreApi.CreateAssistantRequest.FiltersEntry\x12.\n\tif_exists\x18\x04 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12\x1f\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x0f.coreApi.Config\x12(\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x11\n\x04name\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x01\x88\x01\x01\x12.\n\x08metadata\x18\t \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0b\n\t_metadata\"\xac\x01\n\x13GetAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.GetAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xc3\x03\n\x15PatchAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12<\n\x07\x66ilters\x18\x02 \x03(\x0b\x32+.coreApi.PatchAssistantRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x03 \x01(\tH\x00\x88\x01\x01\x12$\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\x0f.coreApi.ConfigH\x01\x88\x01\x01\x12-\n\x07\x63ontext\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x07 \x01(\tH\x04\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x05\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\t\n\x07_configB\n\n\x08_contextB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0b\n\t_metadata\"\xb2\x01\n\x16\x44\x65leteAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12=\n\x07\x66ilters\x18\x02 \x03(\x0b\x32,.coreApi.DeleteAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"1\n\x18\x44\x65leteAssistantsResponse\x12\x15\n\rassistant_ids\x18\x01 \x03(\t\"\xc9\x01\n\x19SetLatestAssistantRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x03\x12@\n\x07\x66ilters\x18\x03 \x03(\x0b\x32/.coreApi.SetLatestAssistantRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xc6\x03\n\x17SearchAssistantsRequest\x12>\n\x07\x66ilters\x18\x01 \x03(\x0b\x32-.coreApi.SearchAssistantsRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12/\n\x07sort_by\x18\x06 \x01(\x0e\x32\x19.coreApi.AssistantsSortByH\x04\x88\x01\x01\x12+\n\nsort_order\x18\x07 \x01(\x0e\x32\x12.coreApi.SortOrderH\x05\x88\x01\x01\x12\x0e\n\x06select\x18\x08 \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\x0b\n\t_metadataB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_order\"B\n\x18SearchAssistantsResponse\x12&\n\nassistants\x18\x01 \x03(\x0b\x32\x12.coreApi.Assistant\"\xb7\x02\n\x1bGetAssistantVersionsRequest\x12\x14\n\x0c\x61ssistant_id\x18\x01 \x01(\t\x12\x42\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x31.coreApi.GetAssistantVersionsRequest.FiltersEntry\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x04 \x01(\x04H\x01\x88\x01\x01\x12\x13\n\x06offset\x18\x05 \x01(\x04H\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x08\n\x06_limitB\t\n\x07_offset\"K\n\x1cGetAssistantVersionsResponse\x12+\n\x08versions\x18\x01 \x03(\x0b\x32\x19.coreApi.AssistantVersion\"\xfd\x01\n\x16\x43ountAssistantsRequest\x12=\n\x07\x66ilters\x18\x01 \x03(\x0b\x32,.coreApi.CountAssistantsRequest.FiltersEntry\x12\x15\n\x08graph_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_graph_idB\x0b\n\t_metadata\"i\n\x0fTruncateRequest\x12\x0c\n\x04runs\x18\x01 \x01(\x08\x12\x0f\n\x07threads\x18\x02 \x01(\x08\x12\x12\n\nassistants\x18\x03 \x01(\x08\x12\x14\n\x0c\x63heckpointer\x18\x04 \x01(\x08\x12\r\n\x05store\x18\x05 \x01(\x08\"\xbb\x01\n\x0fThreadTTLConfig\x12\x31\n\x08strategy\x18\x01 \x01(\x0e\x32\x1a.coreApi.ThreadTTLStrategyH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65\x66\x61ult_ttl\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12#\n\x16sweep_interval_minutes\x18\x03 \x01(\x05H\x02\x88\x01\x01\x42\x0b\n\t_strategyB\x0e\n\x0c_default_ttlB\x19\n\x17_sweep_interval_minutes\"\x19\n\x08\x46ragment\x12\r\n\x05value\x18\x01 \x01(\x0c\"\xac\x01\n\x0e\x43heckpointTask\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x12+\n\ninterrupts\x18\x04 \x03(\x0b\x32\x17.google.protobuf.Struct\x12+\n\x05state\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x42\x08\n\x06_errorB\x08\n\x06_state\"\xd6\x01\n\x12\x43heckpointMetadata\x12.\n\x06source\x18\x01 \x01(\x0e\x32\x19.coreApi.CheckpointSourceH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x39\n\x07parents\x18\x03 \x03(\x0b\x32(.coreApi.CheckpointMetadata.ParentsEntry\x1a.\n\x0cParentsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_sourceB\x07\n\x05_step\"\x91\x02\n\x11\x43heckpointPayload\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.coreApi.CheckpointMetadata\x12\'\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0c\n\x04next\x18\x04 \x03(\t\x12+\n\rparent_config\x18\x05 \x01(\x0b\x32\x0f.coreApi.ConfigH\x01\x88\x01\x01\x12&\n\x05tasks\x18\x06 \x03(\x0b\x32\x17.coreApi.CheckpointTaskB\t\n\x07_configB\x10\n\x0e_parent_config\"\x99\x01\n\tInterrupt\x12\x0f\n\x02id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x11\n\x04when\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tresumable\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\n\n\x02ns\x18\x05 \x03(\tB\x05\n\x03_idB\x07\n\x05_whenB\x0c\n\n_resumable\"4\n\nInterrupts\x12&\n\ninterrupts\x18\x01 \x03(\x0b\x32\x12.coreApi.Interrupt\"\xbd\x03\n\x06Thread\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x08metadata\x18\x04 \x01(\x0b\x32\x11.coreApi.Fragment\x12!\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x11.coreApi.Fragment\x12%\n\x06status\x18\x07 \x01(\x0e\x32\x15.coreApi.ThreadStatus\x12!\n\x06values\x18\x08 \x01(\x0b\x32\x11.coreApi.Fragment\x12\x33\n\ninterrupts\x18\t \x03(\x0b\x32\x1f.coreApi.Thread.InterruptsEntry\x1a\x46\n\x0fInterruptsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.Interrupts:\x02\x38\x01\"\xd9\x02\n\x13\x43reateThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.CreateThreadRequest.FiltersEntry\x12.\n\tif_exists\x18\x03 \x01(\x0e\x32\x1b.coreApi.OnConflictBehavior\x12.\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x05 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x06\n\x04_ttl\"\xb2\x01\n\x10GetThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x37\n\x07\x66ilters\x18\x02 \x03(\x0b\x32&.coreApi.GetThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xa7\x02\n\x12PatchThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x39\n\x07\x66ilters\x18\x02 \x03(\x0b\x32(.coreApi.PatchThreadRequest.FiltersEntry\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12*\n\x03ttl\x18\x04 \x01(\x0b\x32\x18.coreApi.ThreadTTLConfigH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\x06\n\x04_ttl\"\xb8\x01\n\x13\x44\x65leteThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12:\n\x07\x66ilters\x18\x02 \x03(\x0b\x32).coreApi.DeleteThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xb4\x01\n\x11\x43opyThreadRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\'.coreApi.CopyThreadRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\x89\x04\n\x14SearchThreadsRequest\x12;\n\x07\x66ilters\x18\x01 \x03(\x0b\x32*.coreApi.SearchThreadsRequest.FiltersEntry\x12.\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12,\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12*\n\x06status\x18\x04 \x01(\x0e\x32\x15.coreApi.ThreadStatusH\x02\x88\x01\x01\x12\x12\n\x05limit\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12\x13\n\x06offset\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12,\n\x07sort_by\x18\x07 \x01(\x0e\x32\x16.coreApi.ThreadsSortByH\x05\x88\x01\x01\x12+\n\nsort_order\x18\x08 \x01(\x0e\x32\x12.coreApi.SortOrderH\x06\x88\x01\x01\x12\x0e\n\x06select\x18\t \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\t\n\x07_valuesB\t\n\x07_statusB\x08\n\x06_limitB\t\n\x07_offsetB\n\n\x08_sort_byB\r\n\x0b_sort_order\"9\n\x15SearchThreadsResponse\x12 \n\x07threads\x18\x01 \x03(\x0b\x32\x0f.coreApi.Thread\"\xc3\x02\n\x13\x43ountThreadsRequest\x12:\n\x07\x66ilters\x18\x01 \x03(\x0b\x32).coreApi.CountThreadsRequest.FiltersEntry\x12.\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12,\n\x06values\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12*\n\x06status\x18\x04 \x01(\x0e\x32\x15.coreApi.ThreadStatusH\x02\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0b\n\t_metadataB\t\n\x07_valuesB\t\n\x07_status\";\n\x17SweepThreadsTTLResponse\x12\x0f\n\x07\x65xpired\x18\x01 \x01(\x04\x12\x0f\n\x07\x64\x65leted\x18\x02 \x01(\x04\"J\n\x16SweepThreadsTTLRequest\x12\x12\n\nbatch_size\x18\x01 \x01(\x04\x12\x12\n\x05limit\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\x08\n\x06_limit\"\x94\x02\n\x16SetThreadStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12%\n\x06status\x18\x02 \x01(\x0e\x32\x15.coreApi.ThreadStatus\x12\x33\n\ncheckpoint\x18\x03 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12/\n\texception\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12.\n\x0f\x65xpected_status\x18\x05 \x03(\x0e\x32\x15.coreApi.ThreadStatusB\r\n\x0b_checkpointB\x0c\n\n_exception\"\xee\x01\n\x1bSetThreadJointStatusRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1d\n\x06run_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x12\n\nrun_status\x18\x03 \x01(\t\x12\x10\n\x08graph_id\x18\x04 \x01(\t\x12\x33\n\ncheckpoint\x18\x05 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12\x16\n\texception\x18\x06 \x01(\tH\x01\x88\x01\x01\x42\r\n\x0b_checkpointB\x0c\n\n_exception\"\xd3\x01\n\x14JointRollbackRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1d\n\x06run_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x10\n\x08graph_id\x18\x03 \x01(\t\x12\x33\n\ncheckpoint\x18\x04 \x01(\x0b\x32\x1a.coreApi.CheckpointPayloadH\x00\x88\x01\x01\x12\x16\n\texception\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\r\n\x0b_checkpointB\x0c\n\n_exception\"\xcf\x04\n\tRunKwargs\x12$\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0f.coreApi.ConfigH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12+\n\x05input\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructH\x02\x88\x01\x01\x12-\n\x07\x63ommand\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x03\x88\x01\x01\x12(\n\x0bstream_mode\x18\x05 \x01(\x0e\x32\x13.coreApi.StreamMode\x12\x18\n\x10interrupt_before\x18\x06 \x03(\t\x12\x17\n\x0finterrupt_after\x18\x07 \x03(\t\x12\x14\n\x07webhook\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\rfeedback_keys\x18\t \x03(\t\x12\x16\n\ttemporary\x18\n \x01(\x08H\x05\x88\x01\x01\x12\x16\n\tsubgraphs\x18\x0b \x01(\x08H\x06\x88\x01\x01\x12\x16\n\tresumable\x18\x0c \x01(\x08H\x07\x88\x01\x01\x12\x1e\n\x11\x63heckpoint_during\x18\r \x01(\x08H\x08\x88\x01\x01\x12\x17\n\ndurability\x18\x0e \x01(\tH\t\x88\x01\x01\x42\t\n\x07_configB\n\n\x08_contextB\x08\n\x06_inputB\n\n\x08_commandB\n\n\x08_webhookB\x0c\n\n_temporaryB\x0c\n\n_subgraphsB\x0c\n\n_resumableB\x14\n\x12_checkpoint_duringB\r\n\x0b_durability\"\xf0\x02\n\x03Run\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12#\n\x0c\x61ssistant_id\x18\x03 \x01(\x0b\x32\r.coreApi.UUID\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\"\n\x06status\x18\x06 \x01(\x0e\x32\x12.coreApi.RunStatus\x12#\n\x08metadata\x18\x07 \x01(\x0b\x32\x11.coreApi.Fragment\x12\"\n\x06kwargs\x18\x08 \x01(\x0b\x32\x12.coreApi.RunKwargs\x12\x36\n\x12multitask_strategy\x18\t \x01(\x0e\x32\x1a.coreApi.MultitaskStrategy\"\x8a\x01\n\nQueueStats\x12\x11\n\tn_pending\x18\x01 \x01(\x04\x12\x11\n\tn_running\x18\x02 \x01(\x04\x12\x19\n\x0cmax_age_secs\x18\x03 \x01(\x01H\x00\x88\x01\x01\x12\x19\n\x0cmed_age_secs\x18\x04 \x01(\x01H\x01\x88\x01\x01\x42\x0f\n\r_max_age_secsB\x0f\n\r_med_age_secs\"-\n\x0eNextRunRequest\x12\x0c\n\x04wait\x18\x01 \x01(\x08\x12\r\n\x05limit\x18\x02 \x01(\x04\"<\n\x0eRunWithAttempt\x12\x19\n\x03run\x18\x01 \x01(\x0b\x32\x0c.coreApi.Run\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x04\"8\n\x0fNextRunResponse\x12%\n\x04runs\x18\x01 \x03(\x0b\x32\x17.coreApi.RunWithAttempt\"\xe9\x05\n\x10\x43reateRunRequest\x12#\n\x0c\x61ssistant_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\'\n\x06kwargs\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x37\n\x07\x66ilters\x18\x03 \x03(\x0b\x32&.coreApi.CreateRunRequest.FiltersEntry\x12%\n\tthread_id\x18\x04 \x01(\x0b\x32\r.coreApi.UUIDH\x00\x88\x01\x01\x12\x14\n\x07user_id\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\"\n\x06run_id\x18\x06 \x01(\x0b\x32\r.coreApi.UUIDH\x02\x88\x01\x01\x12\'\n\x06status\x18\x07 \x01(\x0e\x32\x12.coreApi.RunStatusH\x03\x88\x01\x01\x12.\n\x08metadata\x18\x08 \x01(\x0b\x32\x17.google.protobuf.StructH\x04\x88\x01\x01\x12\'\n\x1aprevent_insert_if_inflight\x18\t \x01(\x08H\x05\x88\x01\x01\x12;\n\x12multitask_strategy\x18\n \x01(\x0e\x32\x1a.coreApi.MultitaskStrategyH\x06\x88\x01\x01\x12\x36\n\rif_not_exists\x18\x0b \x01(\x0e\x32\x1a.coreApi.CreateRunBehaviorH\x07\x88\x01\x01\x12\x1a\n\rafter_seconds\x18\x0c \x01(\x04H\x08\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x0c\n\n_thread_idB\n\n\x08_user_idB\t\n\x07_run_idB\t\n\x07_statusB\x0b\n\t_metadataB\x1d\n\x1b_prevent_insert_if_inflightB\x15\n\x13_multitask_strategyB\x10\n\x0e_if_not_existsB\x10\n\x0e_after_seconds\"\xcb\x01\n\rGetRunRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x34\n\x07\x66ilters\x18\x03 \x03(\x0b\x32#.coreApi.GetRunRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"\xd1\x01\n\x10\x44\x65leteRunRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12 \n\tthread_id\x18\x02 \x01(\x0b\x32\r.coreApi.UUID\x12\x37\n\x07\x66ilters\x18\x03 \x03(\x0b\x32&.coreApi.DeleteRunRequest.FiltersEntry\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\"V\n\x12\x43\x61ncelRunIdsTarget\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x1e\n\x07run_ids\x18\x02 \x03(\x0b\x32\r.coreApi.UUID\">\n\x12\x43\x61ncelStatusTarget\x12(\n\x06status\x18\x01 \x01(\x0e\x32\x18.coreApi.CancelRunStatus\"\xb3\x02\n\x10\x43\x61ncelRunRequest\x12\x37\n\x07\x66ilters\x18\x01 \x03(\x0b\x32&.coreApi.CancelRunRequest.FiltersEntry\x12.\n\x07run_ids\x18\x02 \x01(\x0b\x32\x1b.coreApi.CancelRunIdsTargetH\x00\x12-\n\x06status\x18\x03 \x01(\x0b\x32\x1b.coreApi.CancelStatusTargetH\x00\x12-\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32\x18.coreApi.CancelRunActionH\x01\x88\x01\x01\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x08\n\x06targetB\t\n\x07_action\"\xb6\x02\n\x11SearchRunsRequest\x12 \n\tthread_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\x38\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\'.coreApi.SearchRunsRequest.FiltersEntry\x12\x12\n\x05limit\x18\x03 \x01(\x04H\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\x04H\x01\x88\x01\x01\x12\'\n\x06status\x18\x05 \x01(\x0e\x32\x12.coreApi.RunStatusH\x02\x88\x01\x01\x12\x0e\n\x06select\x18\x06 \x03(\t\x1a\x43\n\x0c\x46iltersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.coreApi.AuthFilter:\x02\x38\x01\x42\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07_status\"0\n\x12SearchRunsResponse\x12\x1a\n\x04runs\x18\x01 \x03(\x0b\x32\x0c.coreApi.Run\"X\n\x13SetRunStatusRequest\x12\x1d\n\x06run_id\x18\x01 \x01(\x0b\x32\r.coreApi.UUID\x12\"\n\x06status\x18\x02 \x01(\x0e\x32\x12.coreApi.RunStatus\"3\n\x11SweepRunsResponse\x12\x1e\n\x07run_ids\x18\x01 \x03(\x0b\x32\r.coreApi.UUID*/\n\x12OnConflictBehavior\x12\t\n\x05RAISE\x10\x00\x12\x0e\n\nDO_NOTHING\x10\x01*\x1e\n\tSortOrder\x12\x08\n\x04\x44\x45SC\x10\x00\x12\x07\n\x03\x41SC\x10\x01*m\n\x10\x41ssistantsSortBy\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x10\n\x0c\x41SSISTANT_ID\x10\x01\x12\x0c\n\x08GRAPH_ID\x10\x02\x12\x08\n\x04NAME\x10\x03\x12\x0e\n\nCREATED_AT\x10\x04\x12\x0e\n\nUPDATED_AT\x10\x05*v\n\x0cThreadStatus\x12\x16\n\x12THREAD_STATUS_IDLE\x10\x00\x12\x16\n\x12THREAD_STATUS_BUSY\x10\x01\x12\x1d\n\x19THREAD_STATUS_INTERRUPTED\x10\x02\x12\x17\n\x13THREAD_STATUS_ERROR\x10\x03*3\n\x11ThreadTTLStrategy\x12\x1e\n\x1aTHREAD_TTL_STRATEGY_DELETE\x10\x00*\xa8\x01\n\x10\x43heckpointSource\x12!\n\x1d\x43HECKPOINT_SOURCE_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x43HECKPOINT_SOURCE_INPUT\x10\x01\x12\x1a\n\x16\x43HECKPOINT_SOURCE_LOOP\x10\x02\x12\x1c\n\x18\x43HECKPOINT_SOURCE_UPDATE\x10\x03\x12\x1a\n\x16\x43HECKPOINT_SOURCE_FORK\x10\x04*\xab\x01\n\rThreadsSortBy\x12\x1f\n\x1bTHREADS_SORT_BY_UNSPECIFIED\x10\x00\x12\x1d\n\x19THREADS_SORT_BY_THREAD_ID\x10\x01\x12\x1e\n\x1aTHREADS_SORT_BY_CREATED_AT\x10\x02\x12\x1e\n\x1aTHREADS_SORT_BY_UPDATED_AT\x10\x03\x12\x1a\n\x16THREADS_SORT_BY_STATUS\x10\x04*\x9d\x01\n\tRunStatus\x12\x16\n\x12RUN_STATUS_PENDING\x10\x00\x12\x16\n\x12RUN_STATUS_RUNNING\x10\x01\x12\x14\n\x10RUN_STATUS_ERROR\x10\x02\x12\x16\n\x12RUN_STATUS_SUCCESS\x10\x03\x12\x16\n\x12RUN_STATUS_TIMEOUT\x10\x04\x12\x1a\n\x16RUN_STATUS_INTERRUPTED\x10\x05*\xb9\x01\n\x11MultitaskStrategy\x12\"\n\x1eMULTITASK_STRATEGY_UNSPECIFIED\x10\x00\x12\x1d\n\x19MULTITASK_STRATEGY_REJECT\x10\x01\x12\x1f\n\x1bMULTITASK_STRATEGY_ROLLBACK\x10\x02\x12 \n\x1cMULTITASK_STRATEGY_INTERRUPT\x10\x03\x12\x1e\n\x1aMULTITASK_STRATEGY_ENQUEUE\x10\x04*\xef\x01\n\nStreamMode\x12\x1b\n\x17STREAM_MODE_UNSPECIFIED\x10\x00\x12\x16\n\x12STREAM_MODE_VALUES\x10\x01\x12\x18\n\x14STREAM_MODE_MESSAGES\x10\x02\x12\x17\n\x13STREAM_MODE_UPDATES\x10\x03\x12\x16\n\x12STREAM_MODE_EVENTS\x10\x04\x12\x15\n\x11STREAM_MODE_DEBUG\x10\x05\x12\x15\n\x11STREAM_MODE_TASKS\x10\x06\x12\x1b\n\x17STREAM_MODE_CHECKPOINTS\x10\x07\x12\x16\n\x12STREAM_MODE_CUSTOM\x10\x08*`\n\x11\x43reateRunBehavior\x12#\n\x1fREJECT_RUN_IF_THREAD_NOT_EXISTS\x10\x00\x12&\n\"CREATE_THREAD_IF_THREAD_NOT_EXISTS\x10\x01*R\n\x0f\x43\x61ncelRunAction\x12\x1f\n\x1b\x43\x41NCEL_RUN_ACTION_INTERRUPT\x10\x00\x12\x1e\n\x1a\x43\x41NCEL_RUN_ACTION_ROLLBACK\x10\x01*j\n\x0f\x43\x61ncelRunStatus\x12\x1d\n\x19\x43\x41NCEL_RUN_STATUS_PENDING\x10\x00\x12\x1d\n\x19\x43\x41NCEL_RUN_STATUS_RUNNING\x10\x01\x12\x19\n\x15\x43\x41NCEL_RUN_STATUS_ALL\x10\x02\x32\xc1\x04\n\nAssistants\x12\x37\n\x03Get\x12\x1c.coreApi.GetAssistantRequest\x1a\x12.coreApi.Assistant\x12=\n\x06\x43reate\x12\x1f.coreApi.CreateAssistantRequest\x1a\x12.coreApi.Assistant\x12;\n\x05Patch\x12\x1e.coreApi.PatchAssistantRequest\x1a\x12.coreApi.Assistant\x12L\n\x06\x44\x65lete\x12\x1f.coreApi.DeleteAssistantRequest\x1a!.coreApi.DeleteAssistantsResponse\x12M\n\x06Search\x12 .coreApi.SearchAssistantsRequest\x1a!.coreApi.SearchAssistantsResponse\x12\x43\n\tSetLatest\x12\".coreApi.SetLatestAssistantRequest\x1a\x12.coreApi.Assistant\x12Z\n\x0bGetVersions\x12$.coreApi.GetAssistantVersionsRequest\x1a%.coreApi.GetAssistantVersionsResponse\x12@\n\x05\x43ount\x12\x1f.coreApi.CountAssistantsRequest\x1a\x16.coreApi.CountResponse2E\n\x05\x41\x64min\x12<\n\x08Truncate\x12\x18.coreApi.TruncateRequest\x1a\x16.google.protobuf.Empty2\xcd\x05\n\x07Threads\x12\x37\n\x06\x43reate\x12\x1c.coreApi.CreateThreadRequest\x1a\x0f.coreApi.Thread\x12\x31\n\x03Get\x12\x19.coreApi.GetThreadRequest\x1a\x0f.coreApi.Thread\x12\x35\n\x05Patch\x12\x1b.coreApi.PatchThreadRequest\x1a\x0f.coreApi.Thread\x12\x35\n\x06\x44\x65lete\x12\x1c.coreApi.DeleteThreadRequest\x1a\r.coreApi.UUID\x12G\n\x06Search\x12\x1d.coreApi.SearchThreadsRequest\x1a\x1e.coreApi.SearchThreadsResponse\x12=\n\x05\x43ount\x12\x1c.coreApi.CountThreadsRequest\x1a\x16.coreApi.CountResponse\x12\x33\n\x04\x43opy\x12\x1a.coreApi.CopyThreadRequest\x1a\x0f.coreApi.Thread\x12\x44\n\tSetStatus\x12\x1f.coreApi.SetThreadStatusRequest\x1a\x16.google.protobuf.Empty\x12N\n\x0eSetJointStatus\x12$.coreApi.SetThreadJointStatusRequest\x1a\x16.google.protobuf.Empty\x12\x46\n\rJointRollback\x12\x1d.coreApi.JointRollbackRequest\x1a\x16.google.protobuf.Empty\x12M\n\x08SweepTTL\x12\x1f.coreApi.SweepThreadsTTLRequest\x1a .coreApi.SweepThreadsTTLResponse2\x8b\x04\n\x04Runs\x12\x31\n\x06\x43reate\x12\x19.coreApi.CreateRunRequest\x1a\x0c.coreApi.Run\x12+\n\x03Get\x12\x16.coreApi.GetRunRequest\x1a\x0c.coreApi.Run\x12\x32\n\x06\x44\x65lete\x12\x19.coreApi.DeleteRunRequest\x1a\r.coreApi.UUID\x12\x41\n\x06Search\x12\x1a.coreApi.SearchRunsRequest\x1a\x1b.coreApi.SearchRunsResponse\x12;\n\x06\x43\x61ncel\x12\x19.coreApi.CancelRunRequest\x1a\x16.google.protobuf.Empty\x12\x41\n\tSetStatus\x12\x1c.coreApi.SetRunStatusRequest\x1a\x16.google.protobuf.Empty\x12\x34\n\x05Stats\x12\x16.google.protobuf.Empty\x1a\x13.coreApi.QueueStats\x12\x39\n\x04Next\x12\x17.coreApi.NextRunRequest\x1a\x18.coreApi.NextRunResponse\x12;\n\x05Sweep\x12\x16.google.protobuf.Empty\x1a\x1a.coreApi.SweepRunsResponseB<Z:github.com/langchain-ai/langgraph-api/core-api/internal/pbb\x06proto3')
31
31
 
32
32
  _globals = globals()
33
33
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -79,196 +79,196 @@ if not _descriptor._USE_C_DESCRIPTORS:
79
79
  _globals['_CANCELRUNREQUEST_FILTERSENTRY']._serialized_options = b'8\001'
80
80
  _globals['_SEARCHRUNSREQUEST_FILTERSENTRY']._loaded_options = None
81
81
  _globals['_SEARCHRUNSREQUEST_FILTERSENTRY']._serialized_options = b'8\001'
82
- _globals['_ONCONFLICTBEHAVIOR']._serialized_start=12081
83
- _globals['_ONCONFLICTBEHAVIOR']._serialized_end=12128
84
- _globals['_SORTORDER']._serialized_start=12130
85
- _globals['_SORTORDER']._serialized_end=12160
86
- _globals['_ASSISTANTSSORTBY']._serialized_start=12162
87
- _globals['_ASSISTANTSSORTBY']._serialized_end=12271
88
- _globals['_THREADSTATUS']._serialized_start=12273
89
- _globals['_THREADSTATUS']._serialized_end=12391
90
- _globals['_THREADTTLSTRATEGY']._serialized_start=12393
91
- _globals['_THREADTTLSTRATEGY']._serialized_end=12444
92
- _globals['_CHECKPOINTSOURCE']._serialized_start=12447
93
- _globals['_CHECKPOINTSOURCE']._serialized_end=12615
94
- _globals['_THREADSSORTBY']._serialized_start=12618
95
- _globals['_THREADSSORTBY']._serialized_end=12789
96
- _globals['_RUNSTATUS']._serialized_start=12792
97
- _globals['_RUNSTATUS']._serialized_end=12949
98
- _globals['_MULTITASKSTRATEGY']._serialized_start=12952
99
- _globals['_MULTITASKSTRATEGY']._serialized_end=13137
100
- _globals['_STREAMMODE']._serialized_start=13140
101
- _globals['_STREAMMODE']._serialized_end=13379
102
- _globals['_CREATERUNBEHAVIOR']._serialized_start=13381
103
- _globals['_CREATERUNBEHAVIOR']._serialized_end=13477
104
- _globals['_CANCELRUNACTION']._serialized_start=13479
105
- _globals['_CANCELRUNACTION']._serialized_end=13561
106
- _globals['_CANCELRUNSTATUS']._serialized_start=13563
107
- _globals['_CANCELRUNSTATUS']._serialized_end=13669
108
- _globals['_RUNNABLECONFIG']._serialized_start=120
109
- _globals['_RUNNABLECONFIG']._serialized_end=269
110
- _globals['_EQAUTHFILTER']._serialized_start=271
111
- _globals['_EQAUTHFILTER']._serialized_end=300
112
- _globals['_CONTAINSAUTHFILTER']._serialized_start=302
113
- _globals['_CONTAINSAUTHFILTER']._serialized_end=363
114
- _globals['_AUTHFILTER']._serialized_start=365
115
- _globals['_AUTHFILTER']._serialized_end=473
116
- _globals['_UUID']._serialized_start=475
117
- _globals['_UUID']._serialized_end=496
118
- _globals['_COUNTRESPONSE']._serialized_start=498
119
- _globals['_COUNTRESPONSE']._serialized_end=528
120
- _globals['_ASSISTANT']._serialized_start=531
121
- _globals['_ASSISTANT']._serialized_end=942
122
- _globals['_ASSISTANTVERSION']._serialized_start=945
123
- _globals['_ASSISTANTVERSION']._serialized_end=1315
124
- _globals['_CREATEASSISTANTREQUEST']._serialized_start=1318
125
- _globals['_CREATEASSISTANTREQUEST']._serialized_end=1776
126
- _globals['_CREATEASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1671
127
- _globals['_CREATEASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1738
128
- _globals['_GETASSISTANTREQUEST']._serialized_start=1779
129
- _globals['_GETASSISTANTREQUEST']._serialized_end=1951
130
- _globals['_GETASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1671
131
- _globals['_GETASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1738
132
- _globals['_PATCHASSISTANTREQUEST']._serialized_start=1954
133
- _globals['_PATCHASSISTANTREQUEST']._serialized_end=2413
134
- _globals['_PATCHASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1671
135
- _globals['_PATCHASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1738
136
- _globals['_DELETEASSISTANTREQUEST']._serialized_start=2416
137
- _globals['_DELETEASSISTANTREQUEST']._serialized_end=2594
138
- _globals['_DELETEASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1671
139
- _globals['_DELETEASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1738
140
- _globals['_DELETEASSISTANTSRESPONSE']._serialized_start=2596
141
- _globals['_DELETEASSISTANTSRESPONSE']._serialized_end=2645
142
- _globals['_SETLATESTASSISTANTREQUEST']._serialized_start=2648
143
- _globals['_SETLATESTASSISTANTREQUEST']._serialized_end=2849
144
- _globals['_SETLATESTASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1671
145
- _globals['_SETLATESTASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1738
146
- _globals['_SEARCHASSISTANTSREQUEST']._serialized_start=2852
147
- _globals['_SEARCHASSISTANTSREQUEST']._serialized_end=3306
148
- _globals['_SEARCHASSISTANTSREQUEST_FILTERSENTRY']._serialized_start=1671
149
- _globals['_SEARCHASSISTANTSREQUEST_FILTERSENTRY']._serialized_end=1738
150
- _globals['_SEARCHASSISTANTSRESPONSE']._serialized_start=3308
151
- _globals['_SEARCHASSISTANTSRESPONSE']._serialized_end=3374
152
- _globals['_GETASSISTANTVERSIONSREQUEST']._serialized_start=3377
153
- _globals['_GETASSISTANTVERSIONSREQUEST']._serialized_end=3688
154
- _globals['_GETASSISTANTVERSIONSREQUEST_FILTERSENTRY']._serialized_start=1671
155
- _globals['_GETASSISTANTVERSIONSREQUEST_FILTERSENTRY']._serialized_end=1738
156
- _globals['_GETASSISTANTVERSIONSRESPONSE']._serialized_start=3690
157
- _globals['_GETASSISTANTVERSIONSRESPONSE']._serialized_end=3765
158
- _globals['_COUNTASSISTANTSREQUEST']._serialized_start=3768
159
- _globals['_COUNTASSISTANTSREQUEST']._serialized_end=4021
160
- _globals['_COUNTASSISTANTSREQUEST_FILTERSENTRY']._serialized_start=1671
161
- _globals['_COUNTASSISTANTSREQUEST_FILTERSENTRY']._serialized_end=1738
162
- _globals['_TRUNCATEREQUEST']._serialized_start=4023
163
- _globals['_TRUNCATEREQUEST']._serialized_end=4128
164
- _globals['_THREADTTLCONFIG']._serialized_start=4131
165
- _globals['_THREADTTLCONFIG']._serialized_end=4318
166
- _globals['_FRAGMENT']._serialized_start=4320
167
- _globals['_FRAGMENT']._serialized_end=4345
168
- _globals['_CHECKPOINTTASK']._serialized_start=4348
169
- _globals['_CHECKPOINTTASK']._serialized_end=4520
170
- _globals['_CHECKPOINTMETADATA']._serialized_start=4523
171
- _globals['_CHECKPOINTMETADATA']._serialized_end=4737
172
- _globals['_CHECKPOINTMETADATA_PARENTSENTRY']._serialized_start=4671
173
- _globals['_CHECKPOINTMETADATA_PARENTSENTRY']._serialized_end=4717
174
- _globals['_CHECKPOINTPAYLOAD']._serialized_start=4740
175
- _globals['_CHECKPOINTPAYLOAD']._serialized_end=5029
176
- _globals['_INTERRUPT']._serialized_start=5032
177
- _globals['_INTERRUPT']._serialized_end=5185
178
- _globals['_INTERRUPTS']._serialized_start=5187
179
- _globals['_INTERRUPTS']._serialized_end=5239
180
- _globals['_THREAD']._serialized_start=5242
181
- _globals['_THREAD']._serialized_end=5687
182
- _globals['_THREAD_INTERRUPTSENTRY']._serialized_start=5617
183
- _globals['_THREAD_INTERRUPTSENTRY']._serialized_end=5687
184
- _globals['_CREATETHREADREQUEST']._serialized_start=5690
185
- _globals['_CREATETHREADREQUEST']._serialized_end=6035
186
- _globals['_CREATETHREADREQUEST_FILTERSENTRY']._serialized_start=1671
187
- _globals['_CREATETHREADREQUEST_FILTERSENTRY']._serialized_end=1738
188
- _globals['_GETTHREADREQUEST']._serialized_start=6038
189
- _globals['_GETTHREADREQUEST']._serialized_end=6216
190
- _globals['_GETTHREADREQUEST_FILTERSENTRY']._serialized_start=1671
191
- _globals['_GETTHREADREQUEST_FILTERSENTRY']._serialized_end=1738
192
- _globals['_PATCHTHREADREQUEST']._serialized_start=6219
193
- _globals['_PATCHTHREADREQUEST']._serialized_end=6514
194
- _globals['_PATCHTHREADREQUEST_FILTERSENTRY']._serialized_start=1671
195
- _globals['_PATCHTHREADREQUEST_FILTERSENTRY']._serialized_end=1738
196
- _globals['_DELETETHREADREQUEST']._serialized_start=6517
197
- _globals['_DELETETHREADREQUEST']._serialized_end=6701
198
- _globals['_DELETETHREADREQUEST_FILTERSENTRY']._serialized_start=1671
199
- _globals['_DELETETHREADREQUEST_FILTERSENTRY']._serialized_end=1738
200
- _globals['_COPYTHREADREQUEST']._serialized_start=6704
201
- _globals['_COPYTHREADREQUEST']._serialized_end=6884
202
- _globals['_COPYTHREADREQUEST_FILTERSENTRY']._serialized_start=1671
203
- _globals['_COPYTHREADREQUEST_FILTERSENTRY']._serialized_end=1738
204
- _globals['_SEARCHTHREADSREQUEST']._serialized_start=6887
205
- _globals['_SEARCHTHREADSREQUEST']._serialized_end=7408
206
- _globals['_SEARCHTHREADSREQUEST_FILTERSENTRY']._serialized_start=1671
207
- _globals['_SEARCHTHREADSREQUEST_FILTERSENTRY']._serialized_end=1738
208
- _globals['_SEARCHTHREADSRESPONSE']._serialized_start=7410
209
- _globals['_SEARCHTHREADSRESPONSE']._serialized_end=7467
210
- _globals['_COUNTTHREADSREQUEST']._serialized_start=7470
211
- _globals['_COUNTTHREADSREQUEST']._serialized_end=7793
212
- _globals['_COUNTTHREADSREQUEST_FILTERSENTRY']._serialized_start=1671
213
- _globals['_COUNTTHREADSREQUEST_FILTERSENTRY']._serialized_end=1738
214
- _globals['_SWEEPTHREADSTTLRESPONSE']._serialized_start=7795
215
- _globals['_SWEEPTHREADSTTLRESPONSE']._serialized_end=7854
216
- _globals['_SWEEPTHREADSTTLREQUEST']._serialized_start=7856
217
- _globals['_SWEEPTHREADSTTLREQUEST']._serialized_end=7930
218
- _globals['_SETTHREADSTATUSREQUEST']._serialized_start=7933
219
- _globals['_SETTHREADSTATUSREQUEST']._serialized_end=8209
220
- _globals['_SETTHREADJOINTSTATUSREQUEST']._serialized_start=8212
221
- _globals['_SETTHREADJOINTSTATUSREQUEST']._serialized_end=8450
222
- _globals['_JOINTROLLBACKREQUEST']._serialized_start=8453
223
- _globals['_JOINTROLLBACKREQUEST']._serialized_end=8664
224
- _globals['_RUNKWARGS']._serialized_start=8667
225
- _globals['_RUNKWARGS']._serialized_end=9266
226
- _globals['_RUN']._serialized_start=9269
227
- _globals['_RUN']._serialized_end=9637
228
- _globals['_QUEUESTATS']._serialized_start=9640
229
- _globals['_QUEUESTATS']._serialized_end=9778
230
- _globals['_NEXTRUNREQUEST']._serialized_start=9780
231
- _globals['_NEXTRUNREQUEST']._serialized_end=9825
232
- _globals['_RUNWITHATTEMPT']._serialized_start=9827
233
- _globals['_RUNWITHATTEMPT']._serialized_end=9887
234
- _globals['_NEXTRUNRESPONSE']._serialized_start=9889
235
- _globals['_NEXTRUNRESPONSE']._serialized_end=9945
236
- _globals['_CREATERUNREQUEST']._serialized_start=9948
237
- _globals['_CREATERUNREQUEST']._serialized_end=10693
238
- _globals['_CREATERUNREQUEST_FILTERSENTRY']._serialized_start=1671
239
- _globals['_CREATERUNREQUEST_FILTERSENTRY']._serialized_end=1738
240
- _globals['_GETRUNREQUEST']._serialized_start=10696
241
- _globals['_GETRUNREQUEST']._serialized_end=10899
242
- _globals['_GETRUNREQUEST_FILTERSENTRY']._serialized_start=1671
243
- _globals['_GETRUNREQUEST_FILTERSENTRY']._serialized_end=1738
244
- _globals['_DELETERUNREQUEST']._serialized_start=10902
245
- _globals['_DELETERUNREQUEST']._serialized_end=11111
246
- _globals['_DELETERUNREQUEST_FILTERSENTRY']._serialized_start=1671
247
- _globals['_DELETERUNREQUEST_FILTERSENTRY']._serialized_end=1738
248
- _globals['_CANCELRUNIDSTARGET']._serialized_start=11113
249
- _globals['_CANCELRUNIDSTARGET']._serialized_end=11199
250
- _globals['_CANCELSTATUSTARGET']._serialized_start=11201
251
- _globals['_CANCELSTATUSTARGET']._serialized_end=11263
252
- _globals['_CANCELRUNREQUEST']._serialized_start=11266
253
- _globals['_CANCELRUNREQUEST']._serialized_end=11573
254
- _globals['_CANCELRUNREQUEST_FILTERSENTRY']._serialized_start=1671
255
- _globals['_CANCELRUNREQUEST_FILTERSENTRY']._serialized_end=1738
256
- _globals['_SEARCHRUNSREQUEST']._serialized_start=11576
257
- _globals['_SEARCHRUNSREQUEST']._serialized_end=11886
258
- _globals['_SEARCHRUNSREQUEST_FILTERSENTRY']._serialized_start=1671
259
- _globals['_SEARCHRUNSREQUEST_FILTERSENTRY']._serialized_end=1738
260
- _globals['_SEARCHRUNSRESPONSE']._serialized_start=11888
261
- _globals['_SEARCHRUNSRESPONSE']._serialized_end=11936
262
- _globals['_SETRUNSTATUSREQUEST']._serialized_start=11938
263
- _globals['_SETRUNSTATUSREQUEST']._serialized_end=12026
264
- _globals['_SWEEPRUNSRESPONSE']._serialized_start=12028
265
- _globals['_SWEEPRUNSRESPONSE']._serialized_end=12079
266
- _globals['_ASSISTANTS']._serialized_start=13672
267
- _globals['_ASSISTANTS']._serialized_end=14249
268
- _globals['_ADMIN']._serialized_start=14251
269
- _globals['_ADMIN']._serialized_end=14320
270
- _globals['_THREADS']._serialized_start=14323
271
- _globals['_THREADS']._serialized_end=15040
272
- _globals['_RUNS']._serialized_start=15043
273
- _globals['_RUNS']._serialized_end=15566
82
+ _globals['_ONCONFLICTBEHAVIOR']._serialized_start=12047
83
+ _globals['_ONCONFLICTBEHAVIOR']._serialized_end=12094
84
+ _globals['_SORTORDER']._serialized_start=12096
85
+ _globals['_SORTORDER']._serialized_end=12126
86
+ _globals['_ASSISTANTSSORTBY']._serialized_start=12128
87
+ _globals['_ASSISTANTSSORTBY']._serialized_end=12237
88
+ _globals['_THREADSTATUS']._serialized_start=12239
89
+ _globals['_THREADSTATUS']._serialized_end=12357
90
+ _globals['_THREADTTLSTRATEGY']._serialized_start=12359
91
+ _globals['_THREADTTLSTRATEGY']._serialized_end=12410
92
+ _globals['_CHECKPOINTSOURCE']._serialized_start=12413
93
+ _globals['_CHECKPOINTSOURCE']._serialized_end=12581
94
+ _globals['_THREADSSORTBY']._serialized_start=12584
95
+ _globals['_THREADSSORTBY']._serialized_end=12755
96
+ _globals['_RUNSTATUS']._serialized_start=12758
97
+ _globals['_RUNSTATUS']._serialized_end=12915
98
+ _globals['_MULTITASKSTRATEGY']._serialized_start=12918
99
+ _globals['_MULTITASKSTRATEGY']._serialized_end=13103
100
+ _globals['_STREAMMODE']._serialized_start=13106
101
+ _globals['_STREAMMODE']._serialized_end=13345
102
+ _globals['_CREATERUNBEHAVIOR']._serialized_start=13347
103
+ _globals['_CREATERUNBEHAVIOR']._serialized_end=13443
104
+ _globals['_CANCELRUNACTION']._serialized_start=13445
105
+ _globals['_CANCELRUNACTION']._serialized_end=13527
106
+ _globals['_CANCELRUNSTATUS']._serialized_start=13529
107
+ _globals['_CANCELRUNSTATUS']._serialized_end=13635
108
+ _globals['_CONFIG']._serialized_start=120
109
+ _globals['_CONFIG']._serialized_end=291
110
+ _globals['_EQAUTHFILTER']._serialized_start=293
111
+ _globals['_EQAUTHFILTER']._serialized_end=322
112
+ _globals['_CONTAINSAUTHFILTER']._serialized_start=324
113
+ _globals['_CONTAINSAUTHFILTER']._serialized_end=385
114
+ _globals['_AUTHFILTER']._serialized_start=387
115
+ _globals['_AUTHFILTER']._serialized_end=495
116
+ _globals['_UUID']._serialized_start=497
117
+ _globals['_UUID']._serialized_end=518
118
+ _globals['_COUNTRESPONSE']._serialized_start=520
119
+ _globals['_COUNTRESPONSE']._serialized_end=550
120
+ _globals['_ASSISTANT']._serialized_start=553
121
+ _globals['_ASSISTANT']._serialized_end=956
122
+ _globals['_ASSISTANTVERSION']._serialized_start=959
123
+ _globals['_ASSISTANTVERSION']._serialized_end=1321
124
+ _globals['_CREATEASSISTANTREQUEST']._serialized_start=1324
125
+ _globals['_CREATEASSISTANTREQUEST']._serialized_end=1774
126
+ _globals['_CREATEASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1669
127
+ _globals['_CREATEASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1736
128
+ _globals['_GETASSISTANTREQUEST']._serialized_start=1777
129
+ _globals['_GETASSISTANTREQUEST']._serialized_end=1949
130
+ _globals['_GETASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1669
131
+ _globals['_GETASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1736
132
+ _globals['_PATCHASSISTANTREQUEST']._serialized_start=1952
133
+ _globals['_PATCHASSISTANTREQUEST']._serialized_end=2403
134
+ _globals['_PATCHASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1669
135
+ _globals['_PATCHASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1736
136
+ _globals['_DELETEASSISTANTREQUEST']._serialized_start=2406
137
+ _globals['_DELETEASSISTANTREQUEST']._serialized_end=2584
138
+ _globals['_DELETEASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1669
139
+ _globals['_DELETEASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1736
140
+ _globals['_DELETEASSISTANTSRESPONSE']._serialized_start=2586
141
+ _globals['_DELETEASSISTANTSRESPONSE']._serialized_end=2635
142
+ _globals['_SETLATESTASSISTANTREQUEST']._serialized_start=2638
143
+ _globals['_SETLATESTASSISTANTREQUEST']._serialized_end=2839
144
+ _globals['_SETLATESTASSISTANTREQUEST_FILTERSENTRY']._serialized_start=1669
145
+ _globals['_SETLATESTASSISTANTREQUEST_FILTERSENTRY']._serialized_end=1736
146
+ _globals['_SEARCHASSISTANTSREQUEST']._serialized_start=2842
147
+ _globals['_SEARCHASSISTANTSREQUEST']._serialized_end=3296
148
+ _globals['_SEARCHASSISTANTSREQUEST_FILTERSENTRY']._serialized_start=1669
149
+ _globals['_SEARCHASSISTANTSREQUEST_FILTERSENTRY']._serialized_end=1736
150
+ _globals['_SEARCHASSISTANTSRESPONSE']._serialized_start=3298
151
+ _globals['_SEARCHASSISTANTSRESPONSE']._serialized_end=3364
152
+ _globals['_GETASSISTANTVERSIONSREQUEST']._serialized_start=3367
153
+ _globals['_GETASSISTANTVERSIONSREQUEST']._serialized_end=3678
154
+ _globals['_GETASSISTANTVERSIONSREQUEST_FILTERSENTRY']._serialized_start=1669
155
+ _globals['_GETASSISTANTVERSIONSREQUEST_FILTERSENTRY']._serialized_end=1736
156
+ _globals['_GETASSISTANTVERSIONSRESPONSE']._serialized_start=3680
157
+ _globals['_GETASSISTANTVERSIONSRESPONSE']._serialized_end=3755
158
+ _globals['_COUNTASSISTANTSREQUEST']._serialized_start=3758
159
+ _globals['_COUNTASSISTANTSREQUEST']._serialized_end=4011
160
+ _globals['_COUNTASSISTANTSREQUEST_FILTERSENTRY']._serialized_start=1669
161
+ _globals['_COUNTASSISTANTSREQUEST_FILTERSENTRY']._serialized_end=1736
162
+ _globals['_TRUNCATEREQUEST']._serialized_start=4013
163
+ _globals['_TRUNCATEREQUEST']._serialized_end=4118
164
+ _globals['_THREADTTLCONFIG']._serialized_start=4121
165
+ _globals['_THREADTTLCONFIG']._serialized_end=4308
166
+ _globals['_FRAGMENT']._serialized_start=4310
167
+ _globals['_FRAGMENT']._serialized_end=4335
168
+ _globals['_CHECKPOINTTASK']._serialized_start=4338
169
+ _globals['_CHECKPOINTTASK']._serialized_end=4510
170
+ _globals['_CHECKPOINTMETADATA']._serialized_start=4513
171
+ _globals['_CHECKPOINTMETADATA']._serialized_end=4727
172
+ _globals['_CHECKPOINTMETADATA_PARENTSENTRY']._serialized_start=4661
173
+ _globals['_CHECKPOINTMETADATA_PARENTSENTRY']._serialized_end=4707
174
+ _globals['_CHECKPOINTPAYLOAD']._serialized_start=4730
175
+ _globals['_CHECKPOINTPAYLOAD']._serialized_end=5003
176
+ _globals['_INTERRUPT']._serialized_start=5006
177
+ _globals['_INTERRUPT']._serialized_end=5159
178
+ _globals['_INTERRUPTS']._serialized_start=5161
179
+ _globals['_INTERRUPTS']._serialized_end=5213
180
+ _globals['_THREAD']._serialized_start=5216
181
+ _globals['_THREAD']._serialized_end=5661
182
+ _globals['_THREAD_INTERRUPTSENTRY']._serialized_start=5591
183
+ _globals['_THREAD_INTERRUPTSENTRY']._serialized_end=5661
184
+ _globals['_CREATETHREADREQUEST']._serialized_start=5664
185
+ _globals['_CREATETHREADREQUEST']._serialized_end=6009
186
+ _globals['_CREATETHREADREQUEST_FILTERSENTRY']._serialized_start=1669
187
+ _globals['_CREATETHREADREQUEST_FILTERSENTRY']._serialized_end=1736
188
+ _globals['_GETTHREADREQUEST']._serialized_start=6012
189
+ _globals['_GETTHREADREQUEST']._serialized_end=6190
190
+ _globals['_GETTHREADREQUEST_FILTERSENTRY']._serialized_start=1669
191
+ _globals['_GETTHREADREQUEST_FILTERSENTRY']._serialized_end=1736
192
+ _globals['_PATCHTHREADREQUEST']._serialized_start=6193
193
+ _globals['_PATCHTHREADREQUEST']._serialized_end=6488
194
+ _globals['_PATCHTHREADREQUEST_FILTERSENTRY']._serialized_start=1669
195
+ _globals['_PATCHTHREADREQUEST_FILTERSENTRY']._serialized_end=1736
196
+ _globals['_DELETETHREADREQUEST']._serialized_start=6491
197
+ _globals['_DELETETHREADREQUEST']._serialized_end=6675
198
+ _globals['_DELETETHREADREQUEST_FILTERSENTRY']._serialized_start=1669
199
+ _globals['_DELETETHREADREQUEST_FILTERSENTRY']._serialized_end=1736
200
+ _globals['_COPYTHREADREQUEST']._serialized_start=6678
201
+ _globals['_COPYTHREADREQUEST']._serialized_end=6858
202
+ _globals['_COPYTHREADREQUEST_FILTERSENTRY']._serialized_start=1669
203
+ _globals['_COPYTHREADREQUEST_FILTERSENTRY']._serialized_end=1736
204
+ _globals['_SEARCHTHREADSREQUEST']._serialized_start=6861
205
+ _globals['_SEARCHTHREADSREQUEST']._serialized_end=7382
206
+ _globals['_SEARCHTHREADSREQUEST_FILTERSENTRY']._serialized_start=1669
207
+ _globals['_SEARCHTHREADSREQUEST_FILTERSENTRY']._serialized_end=1736
208
+ _globals['_SEARCHTHREADSRESPONSE']._serialized_start=7384
209
+ _globals['_SEARCHTHREADSRESPONSE']._serialized_end=7441
210
+ _globals['_COUNTTHREADSREQUEST']._serialized_start=7444
211
+ _globals['_COUNTTHREADSREQUEST']._serialized_end=7767
212
+ _globals['_COUNTTHREADSREQUEST_FILTERSENTRY']._serialized_start=1669
213
+ _globals['_COUNTTHREADSREQUEST_FILTERSENTRY']._serialized_end=1736
214
+ _globals['_SWEEPTHREADSTTLRESPONSE']._serialized_start=7769
215
+ _globals['_SWEEPTHREADSTTLRESPONSE']._serialized_end=7828
216
+ _globals['_SWEEPTHREADSTTLREQUEST']._serialized_start=7830
217
+ _globals['_SWEEPTHREADSTTLREQUEST']._serialized_end=7904
218
+ _globals['_SETTHREADSTATUSREQUEST']._serialized_start=7907
219
+ _globals['_SETTHREADSTATUSREQUEST']._serialized_end=8183
220
+ _globals['_SETTHREADJOINTSTATUSREQUEST']._serialized_start=8186
221
+ _globals['_SETTHREADJOINTSTATUSREQUEST']._serialized_end=8424
222
+ _globals['_JOINTROLLBACKREQUEST']._serialized_start=8427
223
+ _globals['_JOINTROLLBACKREQUEST']._serialized_end=8638
224
+ _globals['_RUNKWARGS']._serialized_start=8641
225
+ _globals['_RUNKWARGS']._serialized_end=9232
226
+ _globals['_RUN']._serialized_start=9235
227
+ _globals['_RUN']._serialized_end=9603
228
+ _globals['_QUEUESTATS']._serialized_start=9606
229
+ _globals['_QUEUESTATS']._serialized_end=9744
230
+ _globals['_NEXTRUNREQUEST']._serialized_start=9746
231
+ _globals['_NEXTRUNREQUEST']._serialized_end=9791
232
+ _globals['_RUNWITHATTEMPT']._serialized_start=9793
233
+ _globals['_RUNWITHATTEMPT']._serialized_end=9853
234
+ _globals['_NEXTRUNRESPONSE']._serialized_start=9855
235
+ _globals['_NEXTRUNRESPONSE']._serialized_end=9911
236
+ _globals['_CREATERUNREQUEST']._serialized_start=9914
237
+ _globals['_CREATERUNREQUEST']._serialized_end=10659
238
+ _globals['_CREATERUNREQUEST_FILTERSENTRY']._serialized_start=1669
239
+ _globals['_CREATERUNREQUEST_FILTERSENTRY']._serialized_end=1736
240
+ _globals['_GETRUNREQUEST']._serialized_start=10662
241
+ _globals['_GETRUNREQUEST']._serialized_end=10865
242
+ _globals['_GETRUNREQUEST_FILTERSENTRY']._serialized_start=1669
243
+ _globals['_GETRUNREQUEST_FILTERSENTRY']._serialized_end=1736
244
+ _globals['_DELETERUNREQUEST']._serialized_start=10868
245
+ _globals['_DELETERUNREQUEST']._serialized_end=11077
246
+ _globals['_DELETERUNREQUEST_FILTERSENTRY']._serialized_start=1669
247
+ _globals['_DELETERUNREQUEST_FILTERSENTRY']._serialized_end=1736
248
+ _globals['_CANCELRUNIDSTARGET']._serialized_start=11079
249
+ _globals['_CANCELRUNIDSTARGET']._serialized_end=11165
250
+ _globals['_CANCELSTATUSTARGET']._serialized_start=11167
251
+ _globals['_CANCELSTATUSTARGET']._serialized_end=11229
252
+ _globals['_CANCELRUNREQUEST']._serialized_start=11232
253
+ _globals['_CANCELRUNREQUEST']._serialized_end=11539
254
+ _globals['_CANCELRUNREQUEST_FILTERSENTRY']._serialized_start=1669
255
+ _globals['_CANCELRUNREQUEST_FILTERSENTRY']._serialized_end=1736
256
+ _globals['_SEARCHRUNSREQUEST']._serialized_start=11542
257
+ _globals['_SEARCHRUNSREQUEST']._serialized_end=11852
258
+ _globals['_SEARCHRUNSREQUEST_FILTERSENTRY']._serialized_start=1669
259
+ _globals['_SEARCHRUNSREQUEST_FILTERSENTRY']._serialized_end=1736
260
+ _globals['_SEARCHRUNSRESPONSE']._serialized_start=11854
261
+ _globals['_SEARCHRUNSRESPONSE']._serialized_end=11902
262
+ _globals['_SETRUNSTATUSREQUEST']._serialized_start=11904
263
+ _globals['_SETRUNSTATUSREQUEST']._serialized_end=11992
264
+ _globals['_SWEEPRUNSRESPONSE']._serialized_start=11994
265
+ _globals['_SWEEPRUNSRESPONSE']._serialized_end=12045
266
+ _globals['_ASSISTANTS']._serialized_start=13638
267
+ _globals['_ASSISTANTS']._serialized_end=14215
268
+ _globals['_ADMIN']._serialized_start=14217
269
+ _globals['_ADMIN']._serialized_end=14286
270
+ _globals['_THREADS']._serialized_start=14289
271
+ _globals['_THREADS']._serialized_end=15006
272
+ _globals['_RUNS']._serialized_start=15009
273
+ _globals['_RUNS']._serialized_end=15532
274
274
  # @@protoc_insertion_point(module_scope)
@@ -155,15 +155,17 @@ CANCEL_RUN_STATUS_PENDING: CancelRunStatus
155
155
  CANCEL_RUN_STATUS_RUNNING: CancelRunStatus
156
156
  CANCEL_RUN_STATUS_ALL: CancelRunStatus
157
157
 
158
- class RunnableConfig(_message.Message):
159
- __slots__ = ("tags", "recursion_limit", "configurable")
158
+ class Config(_message.Message):
159
+ __slots__ = ("tags", "recursion_limit", "configurable", "extra")
160
160
  TAGS_FIELD_NUMBER: _ClassVar[int]
161
161
  RECURSION_LIMIT_FIELD_NUMBER: _ClassVar[int]
162
162
  CONFIGURABLE_FIELD_NUMBER: _ClassVar[int]
163
+ EXTRA_FIELD_NUMBER: _ClassVar[int]
163
164
  tags: _containers.RepeatedScalarFieldContainer[str]
164
165
  recursion_limit: int
165
166
  configurable: _struct_pb2.Struct
166
- def __init__(self, tags: _Optional[_Iterable[str]] = ..., recursion_limit: _Optional[int] = ..., configurable: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ...
167
+ extra: bytes
168
+ def __init__(self, tags: _Optional[_Iterable[str]] = ..., recursion_limit: _Optional[int] = ..., configurable: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., extra: _Optional[bytes] = ...) -> None: ...
167
169
 
168
170
  class EqAuthFilter(_message.Message):
169
171
  __slots__ = ("match",)
@@ -214,12 +216,12 @@ class Assistant(_message.Message):
214
216
  version: int
215
217
  created_at: _timestamp_pb2.Timestamp
216
218
  updated_at: _timestamp_pb2.Timestamp
217
- config: RunnableConfig
219
+ config: Config
218
220
  context: _struct_pb2.Struct
219
221
  metadata: _struct_pb2.Struct
220
222
  name: str
221
223
  description: str
222
- def __init__(self, assistant_id: _Optional[str] = ..., graph_id: _Optional[str] = ..., version: _Optional[int] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., config: _Optional[_Union[RunnableConfig, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ...
224
+ def __init__(self, assistant_id: _Optional[str] = ..., graph_id: _Optional[str] = ..., version: _Optional[int] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., config: _Optional[_Union[Config, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ...
223
225
 
224
226
  class AssistantVersion(_message.Message):
225
227
  __slots__ = ("assistant_id", "graph_id", "version", "created_at", "config", "context", "metadata", "name", "description")
@@ -236,12 +238,12 @@ class AssistantVersion(_message.Message):
236
238
  graph_id: str
237
239
  version: int
238
240
  created_at: _timestamp_pb2.Timestamp
239
- config: RunnableConfig
241
+ config: Config
240
242
  context: _struct_pb2.Struct
241
243
  metadata: _struct_pb2.Struct
242
244
  name: str
243
245
  description: str
244
- def __init__(self, assistant_id: _Optional[str] = ..., graph_id: _Optional[str] = ..., version: _Optional[int] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., config: _Optional[_Union[RunnableConfig, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ...
246
+ def __init__(self, assistant_id: _Optional[str] = ..., graph_id: _Optional[str] = ..., version: _Optional[int] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., config: _Optional[_Union[Config, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ...) -> None: ...
245
247
 
246
248
  class CreateAssistantRequest(_message.Message):
247
249
  __slots__ = ("assistant_id", "graph_id", "filters", "if_exists", "config", "context", "name", "description", "metadata")
@@ -265,12 +267,12 @@ class CreateAssistantRequest(_message.Message):
265
267
  graph_id: str
266
268
  filters: _containers.MessageMap[str, AuthFilter]
267
269
  if_exists: OnConflictBehavior
268
- config: RunnableConfig
270
+ config: Config
269
271
  context: _struct_pb2.Struct
270
272
  name: str
271
273
  description: str
272
274
  metadata: _struct_pb2.Struct
273
- def __init__(self, assistant_id: _Optional[str] = ..., graph_id: _Optional[str] = ..., filters: _Optional[_Mapping[str, AuthFilter]] = ..., if_exists: _Optional[_Union[OnConflictBehavior, str]] = ..., config: _Optional[_Union[RunnableConfig, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ...
275
+ def __init__(self, assistant_id: _Optional[str] = ..., graph_id: _Optional[str] = ..., filters: _Optional[_Mapping[str, AuthFilter]] = ..., if_exists: _Optional[_Union[OnConflictBehavior, str]] = ..., config: _Optional[_Union[Config, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ...
274
276
 
275
277
  class GetAssistantRequest(_message.Message):
276
278
  __slots__ = ("assistant_id", "filters")
@@ -307,12 +309,12 @@ class PatchAssistantRequest(_message.Message):
307
309
  assistant_id: str
308
310
  filters: _containers.MessageMap[str, AuthFilter]
309
311
  graph_id: str
310
- config: RunnableConfig
312
+ config: Config
311
313
  context: _struct_pb2.Struct
312
314
  name: str
313
315
  description: str
314
316
  metadata: _struct_pb2.Struct
315
- def __init__(self, assistant_id: _Optional[str] = ..., filters: _Optional[_Mapping[str, AuthFilter]] = ..., graph_id: _Optional[str] = ..., config: _Optional[_Union[RunnableConfig, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ...
317
+ def __init__(self, assistant_id: _Optional[str] = ..., filters: _Optional[_Mapping[str, AuthFilter]] = ..., graph_id: _Optional[str] = ..., config: _Optional[_Union[Config, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ...
316
318
 
317
319
  class DeleteAssistantRequest(_message.Message):
318
320
  __slots__ = ("assistant_id", "filters")
@@ -498,13 +500,13 @@ class CheckpointPayload(_message.Message):
498
500
  NEXT_FIELD_NUMBER: _ClassVar[int]
499
501
  PARENT_CONFIG_FIELD_NUMBER: _ClassVar[int]
500
502
  TASKS_FIELD_NUMBER: _ClassVar[int]
501
- config: RunnableConfig
503
+ config: Config
502
504
  metadata: CheckpointMetadata
503
505
  values: _struct_pb2.Struct
504
506
  next: _containers.RepeatedScalarFieldContainer[str]
505
- parent_config: RunnableConfig
507
+ parent_config: Config
506
508
  tasks: _containers.RepeatedCompositeFieldContainer[CheckpointTask]
507
- def __init__(self, config: _Optional[_Union[RunnableConfig, _Mapping]] = ..., metadata: _Optional[_Union[CheckpointMetadata, _Mapping]] = ..., values: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., next: _Optional[_Iterable[str]] = ..., parent_config: _Optional[_Union[RunnableConfig, _Mapping]] = ..., tasks: _Optional[_Iterable[_Union[CheckpointTask, _Mapping]]] = ...) -> None: ...
509
+ def __init__(self, config: _Optional[_Union[Config, _Mapping]] = ..., metadata: _Optional[_Union[CheckpointMetadata, _Mapping]] = ..., values: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., next: _Optional[_Iterable[str]] = ..., parent_config: _Optional[_Union[Config, _Mapping]] = ..., tasks: _Optional[_Iterable[_Union[CheckpointTask, _Mapping]]] = ...) -> None: ...
508
510
 
509
511
  class Interrupt(_message.Message):
510
512
  __slots__ = ("id", "value", "when", "resumable", "ns")
@@ -770,7 +772,7 @@ class RunKwargs(_message.Message):
770
772
  RESUMABLE_FIELD_NUMBER: _ClassVar[int]
771
773
  CHECKPOINT_DURING_FIELD_NUMBER: _ClassVar[int]
772
774
  DURABILITY_FIELD_NUMBER: _ClassVar[int]
773
- config: RunnableConfig
775
+ config: Config
774
776
  context: _struct_pb2.Struct
775
777
  input: _struct_pb2.Struct
776
778
  command: _struct_pb2.Struct
@@ -784,7 +786,7 @@ class RunKwargs(_message.Message):
784
786
  resumable: bool
785
787
  checkpoint_during: bool
786
788
  durability: str
787
- def __init__(self, config: _Optional[_Union[RunnableConfig, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., input: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., command: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., stream_mode: _Optional[_Union[StreamMode, str]] = ..., interrupt_before: _Optional[_Iterable[str]] = ..., interrupt_after: _Optional[_Iterable[str]] = ..., webhook: _Optional[str] = ..., feedback_keys: _Optional[_Iterable[str]] = ..., temporary: bool = ..., subgraphs: bool = ..., resumable: bool = ..., checkpoint_during: bool = ..., durability: _Optional[str] = ...) -> None: ...
789
+ def __init__(self, config: _Optional[_Union[Config, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., input: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., command: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., stream_mode: _Optional[_Union[StreamMode, str]] = ..., interrupt_before: _Optional[_Iterable[str]] = ..., interrupt_after: _Optional[_Iterable[str]] = ..., webhook: _Optional[str] = ..., feedback_keys: _Optional[_Iterable[str]] = ..., temporary: bool = ..., subgraphs: bool = ..., resumable: bool = ..., checkpoint_during: bool = ..., durability: _Optional[str] = ...) -> None: ...
788
790
 
789
791
  class Run(_message.Message):
790
792
  __slots__ = ("run_id", "thread_id", "assistant_id", "created_at", "updated_at", "status", "metadata", "kwargs", "multitask_strategy")
@@ -9,6 +9,7 @@ from http import HTTPStatus
9
9
  from typing import Any
10
10
  from uuid import UUID
11
11
 
12
+ import orjson
12
13
  import structlog
13
14
  from google.protobuf.json_format import MessageToDict
14
15
  from google.protobuf.struct_pb2 import Struct # type: ignore[import]
@@ -44,27 +45,54 @@ def map_if_exists(if_exists: str) -> pb.OnConflictBehavior:
44
45
 
45
46
 
46
47
  def map_configurable(config: Config) -> Struct:
47
- return pb.RunnableConfig(
48
- tags=config.get("tags", []),
48
+ """Build pb.Config, placing non-standard keys into `extra` bytes.
49
+
50
+ The `extra` field mirrors any keys that are not first-class in
51
+ Config (e.g., "tags", "recursion_limit", "configurable").
52
+ It is JSON-encoded bytes to minimize serde overhead; the server will
53
+ unpack and persist them as top-level keys.
54
+ """
55
+ base_keys = {"tags", "recursion_limit", "configurable"}
56
+ extra_dict = {k: v for k, v in (config or {}).items() if k not in base_keys}
57
+
58
+ kwargs: dict[str, Any] = dict(
59
+ tags=config.get("tags"),
49
60
  recursion_limit=config.get("recursion_limit"),
50
- configurable=dict_to_struct(config.get("configurable", {}))
51
- if config.get("configurable")
52
- else None,
61
+ configurable=(
62
+ dict_to_struct(config.get("configurable", {}))
63
+ if config.get("configurable")
64
+ else None
65
+ ),
53
66
  )
67
+ if extra_dict:
68
+ kwargs["extra"] = orjson.dumps(extra_dict)
69
+
70
+ return pb.Config(**kwargs)
71
+
72
+
73
+ def consolidate_config_and_context(
74
+ config: Config | None, context: Context | None
75
+ ) -> tuple[Config, Context | None]:
76
+ """Return a new (config, context) with consistent configurable/context.
54
77
 
78
+ Does not mutate the passed-in objects. If both configurable and context
79
+ are provided, raises 400. If only one is provided, mirrors it to the other.
80
+ """
81
+ cfg: Config = dict(config or {})
82
+ ctx: Context | None = dict(context) if context is not None else None
55
83
 
56
- def consolidate_config_and_context(config: Config, context: Context | None):
57
- if config and config.get("configurable") and context:
84
+ if cfg.get("configurable") and ctx:
58
85
  raise HTTPException(
59
86
  status_code=400,
60
87
  detail="Cannot specify both configurable and context. Prefer setting context alone. Context was introduced in LangGraph 0.6.0 and is the long term planned replacement for configurable.",
61
88
  )
62
89
 
63
- # Keep config and context up to date with one another
64
- if config and config.get("configurable"):
65
- context = config["configurable"]
66
- elif context:
67
- config["configurable"] = context
90
+ if cfg.get("configurable"):
91
+ ctx = cfg["configurable"]
92
+ elif ctx is not None:
93
+ cfg["configurable"] = ctx
94
+
95
+ return cfg, ctx
68
96
 
69
97
 
70
98
  def dict_to_struct(data: dict[str, Any]) -> Struct:
@@ -80,19 +108,56 @@ def struct_to_dict(struct: Struct) -> dict[str, Any]:
80
108
  return MessageToDict(struct) if struct else {}
81
109
 
82
110
 
111
+ def _runnable_config_to_user_dict(cfg: pb.Config | None) -> dict[str, Any]:
112
+ """Convert pb.Config to user-visible dict, unpacking `extra`.
113
+
114
+ - Keeps top-level known keys: tags, recursion_limit, configurable.
115
+ - Merges keys from `extra` into the top-level dict.
116
+ """
117
+ if not cfg:
118
+ return {}
119
+
120
+ out: dict[str, Any] = {}
121
+ # tags
122
+ if cfg.tags:
123
+ out["tags"] = list(cfg.tags)
124
+ # recursion_limit (preserve presence of 0 if set)
125
+ try:
126
+ if cfg.HasField("recursion_limit"):
127
+ out["recursion_limit"] = cfg.recursion_limit
128
+ except ValueError:
129
+ # Some runtimes may not support HasField on certain builds; fallback
130
+ if getattr(cfg, "recursion_limit", None) is not None:
131
+ out["recursion_limit"] = cfg.recursion_limit
132
+ # configurable
133
+ if cfg.HasField("configurable"):
134
+ out["configurable"] = struct_to_dict(cfg.configurable)
135
+ # extra (bytes: JSON-encoded object)
136
+ if cfg.HasField("extra") and cfg.extra:
137
+ extra = orjson.loads(cfg.extra)
138
+ if isinstance(extra, dict) and extra:
139
+ out.update(extra)
140
+
141
+ return out
142
+
143
+
83
144
  def proto_to_assistant(proto_assistant: pb.Assistant) -> Assistant:
84
145
  """Convert protobuf Assistant to dictionary format."""
146
+ # Preserve None for optional scalar fields by checking presence via HasField
147
+ description = (
148
+ proto_assistant.description if proto_assistant.HasField("description") else None
149
+ )
85
150
  return {
86
151
  "assistant_id": proto_assistant.assistant_id,
87
152
  "graph_id": proto_assistant.graph_id,
88
153
  "version": proto_assistant.version,
89
154
  "created_at": proto_assistant.created_at.ToDatetime(),
90
155
  "updated_at": proto_assistant.updated_at.ToDatetime(),
91
- "config": struct_to_dict(proto_assistant.config),
156
+ "config": _runnable_config_to_user_dict(proto_assistant.config),
92
157
  "context": struct_to_dict(proto_assistant.context),
93
158
  "metadata": struct_to_dict(proto_assistant.metadata),
94
159
  "name": proto_assistant.name,
95
- "description": proto_assistant.description,
160
+ "description": description,
96
161
  }
97
162
 
98
163
 
@@ -308,7 +373,7 @@ class Assistants(Authenticated):
308
373
  },
309
374
  )
310
375
 
311
- consolidate_config_and_context(config, context)
376
+ config, context = consolidate_config_and_context(config, context)
312
377
 
313
378
  on_conflict = map_if_exists(if_exists)
314
379
 
@@ -368,7 +433,7 @@ class Assistants(Authenticated):
368
433
  },
369
434
  )
370
435
 
371
- consolidate_config_and_context(config, context)
436
+ config, context = consolidate_config_and_context(config, context)
372
437
 
373
438
  # Build the gRPC request
374
439
  request = pb.PatchAssistantRequest(
@@ -498,16 +563,20 @@ class Assistants(Authenticated):
498
563
  # Convert and yield the results
499
564
  async def generate_results():
500
565
  for version in response.versions:
566
+ # Preserve None for optional scalar fields by checking presence
567
+ version_description = (
568
+ version.description if version.HasField("description") else None
569
+ )
501
570
  yield {
502
571
  "assistant_id": version.assistant_id,
503
572
  "graph_id": version.graph_id,
504
573
  "version": version.version,
505
574
  "created_at": version.created_at.ToDatetime(),
506
- "config": struct_to_dict(version.config),
575
+ "config": _runnable_config_to_user_dict(version.config),
507
576
  "context": struct_to_dict(version.context),
508
577
  "metadata": struct_to_dict(version.metadata),
509
578
  "name": version.name,
510
- "description": version.description,
579
+ "description": version_description,
511
580
  }
512
581
 
513
582
  return generate_results()
@@ -12,22 +12,32 @@ if not (
12
12
  truststore.inject_into_ssl() # noqa: F401
13
13
 
14
14
  import asyncio
15
- import contextlib
16
15
  import json
17
16
  import logging.config
18
17
  import pathlib
19
18
  import signal
19
+ import socket
20
20
  from contextlib import asynccontextmanager
21
21
 
22
22
  import structlog
23
23
 
24
+ from langgraph_api.utils.errors import GraphLoadError, HealthServerStartupError
25
+ from langgraph_runtime import lifespan
24
26
  from langgraph_runtime.database import pool_stats
25
- from langgraph_runtime.lifespan import lifespan
26
27
  from langgraph_runtime.metrics import get_metrics
27
28
 
28
29
  logger = structlog.stdlib.get_logger(__name__)
29
30
 
30
31
 
32
+ def _ensure_port_available(host: str, port: int) -> None:
33
+ try:
34
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
35
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
36
+ sock.bind((host, port))
37
+ except OSError as exc:
38
+ raise HealthServerStartupError(host, port, exc) from exc
39
+
40
+
31
41
  async def health_and_metrics_server():
32
42
  import uvicorn
33
43
  from starlette.applications import Starlette
@@ -36,6 +46,7 @@ async def health_and_metrics_server():
36
46
  from starlette.routing import Route
37
47
 
38
48
  port = int(os.getenv("PORT", "8080"))
49
+ host = os.getenv("LANGGRAPH_SERVER_HOST", "0.0.0.0")
39
50
 
40
51
  async def health_endpoint(request):
41
52
  return JSONResponse({"status": "ok"})
@@ -96,9 +107,20 @@ async def health_and_metrics_server():
96
107
  ]
97
108
  )
98
109
 
110
+ try:
111
+ _ensure_port_available(host, port)
112
+ except HealthServerStartupError as exc:
113
+ await logger.aerror(
114
+ str(exc),
115
+ host=exc.host,
116
+ port=exc.port,
117
+ cause=str(exc.cause),
118
+ )
119
+ raise
120
+
99
121
  config = uvicorn.Config(
100
122
  app,
101
- host=os.getenv("LANGGRAPH_SERVER_HOST", "0.0.0.0"),
123
+ host=host,
102
124
  port=port,
103
125
  log_level="error",
104
126
  access_log=False,
@@ -106,8 +128,33 @@ async def health_and_metrics_server():
106
128
  # Server will run indefinitely until the process is terminated
107
129
  server = uvicorn.Server(config)
108
130
 
109
- logger.info(f"Health and metrics server started at http://0.0.0.0:{port}")
110
- await server.serve()
131
+ logger.info(f"Health and metrics server started at http://{host}:{port}")
132
+ try:
133
+ await server.serve()
134
+ except SystemExit as exc:
135
+ if exc.code == 0:
136
+ return
137
+ try:
138
+ _ensure_port_available(host, port)
139
+ except HealthServerStartupError as port_exc:
140
+ await logger.aerror(
141
+ str(port_exc),
142
+ host=port_exc.host,
143
+ port=port_exc.port,
144
+ cause=str(port_exc.cause),
145
+ )
146
+ raise port_exc from None
147
+ error = HealthServerStartupError(host, port, exc)
148
+ await logger.aerror(
149
+ str(error), host=error.host, port=error.port, cause=str(error.cause)
150
+ )
151
+ raise error from None
152
+ except OSError as exc:
153
+ error = HealthServerStartupError(host, port, exc)
154
+ await logger.aerror(
155
+ str(error), host=error.host, port=error.port, cause=str(error.cause)
156
+ )
157
+ raise error from exc
111
158
 
112
159
 
113
160
  async def entrypoint(
@@ -127,7 +174,7 @@ async def entrypoint(
127
174
  async def combined_lifespan(
128
175
  app, with_cron_scheduler=False, grpc_port=None, taskset=None
129
176
  ):
130
- async with lifespan(
177
+ async with lifespan.lifespan(
131
178
  app,
132
179
  with_cron_scheduler=with_cron_scheduler,
133
180
  grpc_port=grpc_port,
@@ -149,6 +196,7 @@ async def entrypoint(
149
196
 
150
197
  async def main(grpc_port: int | None = None, entrypoint_name: str = "python-queue"):
151
198
  """Run the queue entrypoint and shut down gracefully on SIGTERM/SIGINT."""
199
+
152
200
  loop = asyncio.get_running_loop()
153
201
  stop_event = asyncio.Event()
154
202
 
@@ -174,8 +222,23 @@ async def main(grpc_port: int | None = None, entrypoint_name: str = "python-queu
174
222
 
175
223
  logger.warning("Cancelling queue entrypoint task")
176
224
  entry_task.cancel()
177
- with contextlib.suppress(asyncio.CancelledError):
225
+ try:
178
226
  await entry_task
227
+ except asyncio.CancelledError:
228
+ pass
229
+ except (GraphLoadError, HealthServerStartupError) as exc:
230
+ raise SystemExit(1) from exc
231
+ except RuntimeError as exc:
232
+ if str(exc) == "generator didn't yield":
233
+ last_error = lifespan.get_last_error()
234
+ if last_error is not None:
235
+ logger.exception(
236
+ "Application startup failed",
237
+ error_type=type(last_error).__name__,
238
+ error_message=str(last_error),
239
+ )
240
+ raise SystemExit(1) from None
241
+ raise
179
242
 
180
243
 
181
244
  if __name__ == "__main__":
@@ -0,0 +1,77 @@
1
+ from __future__ import annotations
2
+
3
+ import traceback
4
+ from typing import TYPE_CHECKING, Any
5
+
6
+ if TYPE_CHECKING:
7
+ from langgraph_api.graph import GraphSpec
8
+
9
+
10
+ class GraphLoadError(RuntimeError):
11
+ """Raised when a user provided graph fails to load."""
12
+
13
+ def __init__(self, spec: GraphSpec, cause: Exception):
14
+ self.spec = spec
15
+ self.cause = cause
16
+ self.location = spec.module or spec.path or "<unknown>"
17
+ self.notes = tuple(getattr(cause, "__notes__", ()) or ())
18
+ self._traceback = traceback.TracebackException.from_exception(
19
+ cause, capture_locals=False
20
+ )
21
+ self._exception_only = list(self._traceback.format_exception_only())
22
+ message = f"Failed to load graph '{spec.id}' from {self.location}: {cause}"
23
+ super().__init__(message)
24
+
25
+ @property
26
+ def hint(self) -> str | None:
27
+ if isinstance(self.cause, ImportError):
28
+ return "Check that your project dependencies are installed and imports are correct."
29
+ return None
30
+
31
+ def log_fields(self) -> dict[str, Any]:
32
+ fields: dict[str, Any] = {
33
+ "graph_id": self.spec.id,
34
+ "location": self.location,
35
+ "error_type": type(self.cause).__name__,
36
+ "error_message": self.cause_message,
37
+ "error_boundary": "user_graph",
38
+ "summary": self.summary,
39
+ }
40
+ if self.hint:
41
+ fields["hint"] = self.hint
42
+ if self.notes:
43
+ fields["notes"] = "\n".join(self.notes)
44
+ fields["user_traceback"] = self.user_traceback()
45
+ return fields
46
+
47
+ @property
48
+ def cause_message(self) -> str:
49
+ if self._exception_only:
50
+ return self._exception_only[0].strip()
51
+ return str(self.cause)
52
+
53
+ @property
54
+ def summary(self) -> str:
55
+ return f"{type(self.cause).__name__}: {self.cause_message}"
56
+
57
+ def user_traceback(self) -> str:
58
+ """Return the full traceback without filtering."""
59
+ return "".join(self._traceback.format())
60
+
61
+
62
+ class HealthServerStartupError(RuntimeError):
63
+ def __init__(self, host: str, port: int, cause: BaseException):
64
+ self.host = host
65
+ self.port = port
66
+ self.cause = cause
67
+ port_desc = (
68
+ f"{host}:{port}" if host not in {"0.0.0.0", "::"} else f"port {port}"
69
+ )
70
+ if isinstance(cause, OSError) and cause.errno in {48, 98}:
71
+ message = (
72
+ f"Health/metrics server could not bind to {port_desc}: "
73
+ "address already in use. Stop the other process or set PORT to a free port."
74
+ )
75
+ else:
76
+ message = f"Health/metrics server failed to start on {port_desc}: {cause}"
77
+ super().__init__(message)
langgraph_api/worker.py CHANGED
@@ -280,6 +280,7 @@ async def worker(
280
280
  status,
281
281
  graph_id=graph_id,
282
282
  checkpoint=checkpoint,
283
+ exception=exception,
283
284
  )
284
285
  elif isinstance(exception, UserRollback):
285
286
  status = "rollback"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.4.31
3
+ Version: 0.4.33
4
4
  Author-email: Nuno Campos <nuno@langchain.dev>, Will Fu-Hinthorn <will@langchain.dev>
5
5
  License: Elastic-2.0
6
6
  License-File: LICENSE
@@ -1,4 +1,4 @@
1
- langgraph_api/__init__.py,sha256=3w2Z9VwNeAAXivgSAMMwqgJrAaUllRP_T-sKqxgdcns,23
1
+ langgraph_api/__init__.py,sha256=O_0xE0g6EcJfkv7qWx5tmF2cs2K3UCW8uX8xzUqd7Rs,23
2
2
  langgraph_api/asgi_transport.py,sha256=XtiLOu4WWsd-xizagBLzT5xUkxc9ZG9YqwvETBPjBFE,5161
3
3
  langgraph_api/asyncio.py,sha256=FEEkLm_N-15cbElo4vQ309MkDKBZuRqAYV8VJ1DocNw,9860
4
4
  langgraph_api/cli.py,sha256=o_zD2vkky06dzW87HQgkIR1_h3ZCSZ8tgNvFCK9rKVo,19669
@@ -8,14 +8,14 @@ langgraph_api/cron_scheduler.py,sha256=25wYzEQrhPEivZrAPYOmzLPDOQa-aFogU37mTXc9T
8
8
  langgraph_api/errors.py,sha256=zlnl3xXIwVG0oGNKKpXf1an9Rn_SBDHSyhe53hU6aLw,1858
9
9
  langgraph_api/executor_entrypoint.py,sha256=CaX813ygtf9CpOaBkfkQXJAHjFtmlScCkrOvTDmu4Aw,750
10
10
  langgraph_api/feature_flags.py,sha256=taZRhukeBV8r62EmEo92rxfBwYhIw56-P_UvSzQLzt8,576
11
- langgraph_api/graph.py,sha256=u10F9a8dxi7_Shx42xHOPi1Ri0occU6lUhWnTAF8_K4,25081
11
+ langgraph_api/graph.py,sha256=1lrWBjPLtYFJjI0tVanCYlLWkULfj755yEmvuyXW9_g,25166
12
12
  langgraph_api/http.py,sha256=fyK-H-0UfNy_BzuVW3aWWGvhRavmGAVMkDwDArryJ_4,5659
13
13
  langgraph_api/http_metrics.py,sha256=iOJKQW8VdgkhWp5aBjy1RUghH5noxJTVFPEmmXwgCbE,5097
14
14
  langgraph_api/http_metrics_utils.py,sha256=sjxF7SYGTzY0Wz_G0dzatsYNnWr31S6ujej4JmBG2yo,866
15
15
  langgraph_api/logging.py,sha256=qB6q_cUba31edE4_D6dBGhdiUTpW7sXAOepUjYb_R50,5216
16
16
  langgraph_api/metadata.py,sha256=0eGYhXOW6UIVDj2Y5mOdSJz_RadgJG8xmUsC9WqwsiE,8342
17
17
  langgraph_api/patch.py,sha256=J0MmcfpZG15SUVaVcI0Z4x_c0-0rbbT7Pwh9fDAQOpA,1566
18
- langgraph_api/queue_entrypoint.py,sha256=zK2V03xHsy7Y9wq_nHuCBc3_GnCuKJNR24BGv8pREnY,6372
18
+ langgraph_api/queue_entrypoint.py,sha256=z3ZUBl3CpnMm0KFPqCuGvSohPAmYQbhAdyRizSJSClM,8481
19
19
  langgraph_api/route.py,sha256=EBhELuJ1He-ZYcAnR5YTImcIeDtWthDae5CHELBxPkM,5056
20
20
  langgraph_api/schema.py,sha256=spZ_XPT4AMJfw2YatsdnMZZLzgB9Sm3YR8n0SlgGdJ8,8480
21
21
  langgraph_api/self_hosted_metrics.py,sha256=JyDGs7lTKndL_vdtGq4rbPtOGdxCkil9_u6d_wTJeds,13980
@@ -29,10 +29,10 @@ langgraph_api/thread_ttl.py,sha256=KyHnvD0e1p1cV4Z_ZvKNVzDztuI2RBCUsUO2V7GlOSw,1
29
29
  langgraph_api/traceblock.py,sha256=Qq5CUdefnMDaRDnyvBSWGBClEj-f3oO7NbH6fedxOSE,630
30
30
  langgraph_api/validation.py,sha256=86jftgOsMa7tkeshBw6imYe7zyUXPoVuf5Voh6dFiR8,5285
31
31
  langgraph_api/webhook.py,sha256=SvSM1rdnNtiH4q3JQYmAqJUk2Sable5xAcwOLuRhtlo,1723
32
- langgraph_api/worker.py,sha256=FQRw3kL9ynDv_LNgY_OjjPZQBuAvSQpsW6nECnABvDg,15354
32
+ langgraph_api/worker.py,sha256=HHgf590xElF7v02lgn0lG0iK2v2sENMjdx7TVFCvYXY,15399
33
33
  langgraph_api/api/__init__.py,sha256=raFkYH50tsO-KjRmDbGVoHCuxuH58u1lrZbr-MlITIY,6262
34
34
  langgraph_api/api/a2a.py,sha256=HIHZkLnIcM1u1FJti-L2NH-h1I9BZ_d-QW9z3gFonn8,53995
35
- langgraph_api/api/assistants.py,sha256=87FMcq8T4-7PfrAX1adOtBS_qQdomGOFpcFQw6PxZDA,17453
35
+ langgraph_api/api/assistants.py,sha256=VxndCdWSWnLY-A5C7nMGdVaDsHDi7SpKREwx5vbWPG8,17445
36
36
  langgraph_api/api/mcp.py,sha256=qe10ZRMN3f-Hli-9TI8nbQyWvMeBb72YB1PZVbyqBQw,14418
37
37
  langgraph_api/api/meta.py,sha256=464nRdZPCPG-T1rouypReI8SPLHZlEec8dIj22H1Vvo,4787
38
38
  langgraph_api/api/openapi.py,sha256=If-z1ckXt-Yu5bwQytK1LWyX_T7G46UtLfixgEP8hwc,11959
@@ -50,12 +50,11 @@ langgraph_api/auth/langsmith/backend.py,sha256=rdkz8IXLHusJqcoacvl2XuMZnQVR7PLpE
50
50
  langgraph_api/auth/langsmith/client.py,sha256=Kn9503en1tmlNtkbvqRxYSRCOUrWaVpqvxyLLb1cgzY,3908
51
51
  langgraph_api/grpc_ops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  langgraph_api/grpc_ops/client.py,sha256=VB740C9QMhJJrpAEjsADmasN-uGd0apGYtuv_ho0Rl8,2452
53
- langgraph_api/grpc_ops/ops.py,sha256=6xCWc5ylMcuTY_FFUJlnqPuRYOr0aOP96pXgx2X4I44,17139
53
+ langgraph_api/grpc_ops/ops.py,sha256=N9OqaMXdTUdQaTZ13gb0SCPkqtVy_NzhVGuqbAUBtsY,19678
54
54
  langgraph_api/grpc_ops/generated/__init__.py,sha256=dRiB_iGscPKdMpuLp9ueLwAmIfRaNjNXC64ABtb4cg8,135
55
- langgraph_api/grpc_ops/generated/core_api_pb2.py,sha256=5tvJCY00-ud-IO9OKIqRPEpUw12wjxYO3LQklMXB73o,42143
56
- langgraph_api/grpc_ops/generated/core_api_pb2.pyi,sha256=cpbtS6nf3aaOnbBbAsyCinttxiVELmje7xf0AaRcYUM,49208
55
+ langgraph_api/grpc_ops/generated/core_api_pb2.py,sha256=dDfkz_GlwEONJy6ysECWwFLhKSciBy_B0pn6rpMTE6I,42139
56
+ langgraph_api/grpc_ops/generated/core_api_pb2.pyi,sha256=-vJ6C020K9Kt44mH7-S9sy0QBLMXJsyB3T9AKIH1s4g,49184
57
57
  langgraph_api/grpc_ops/generated/core_api_pb2_grpc.py,sha256=Qav2DuCMUSmR8nP4-fVtUBbY0Vc42jqjCs3L4LdIl-0,52467
58
- langgraph_api/grpc_ops/scripts/generate_protos.sh,sha256=hSf1vgS0MoTlavbaUjiDKOSujuJ1RRN19UL6HS24JY4,1486
59
58
  langgraph_api/js/.gitignore,sha256=l5yI6G_V6F1600I1IjiUKn87f4uYIrBAYU1MOyBBhg4,59
60
59
  langgraph_api/js/.prettierrc,sha256=0es3ovvyNIqIw81rPQsdt1zCQcOdBqyR_DMbFE4Ifms,19
61
60
  langgraph_api/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -90,6 +89,7 @@ langgraph_api/tunneling/cloudflare.py,sha256=iKb6tj-VWPlDchHFjuQyep2Dpb-w2NGfJKt
90
89
  langgraph_api/utils/__init__.py,sha256=yCMq7pOMlmeNmi2Fh8U7KLiljBdOMcF0L2SfpobnKKE,5703
91
90
  langgraph_api/utils/cache.py,sha256=F23s-4BPJjuYh_PRL5pmIsSjqYWsY_b3PB7xmRwKwKw,3452
92
91
  langgraph_api/utils/config.py,sha256=Tbp4tKDSLKXQJ44EKr885wAQupY-9VWNJ6rgUU2oLOY,4162
92
+ langgraph_api/utils/errors.py,sha256=51WNBkbk1JHlTvA-J2lgkA3PDj3BEGcnhIECwAihWgU,2728
93
93
  langgraph_api/utils/future.py,sha256=lXsRQPhJwY7JUbFFZrK-94JjgsToLu-EWU896hvbUxE,7289
94
94
  langgraph_api/utils/headers.py,sha256=NDBmKSSVOOYeYN0HfK1a3xbYtAg35M_JO1G9yklpZsA,5682
95
95
  langgraph_api/utils/retriable_client.py,sha256=a50ZxfXV48C97rOCiVWAEmfOPJELwPnvUyEqo3vEixI,2379
@@ -109,8 +109,8 @@ langgraph_runtime/store.py,sha256=7mowndlsIroGHv3NpTSOZDJR0lCuaYMBoTnTrewjslw,11
109
109
  LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
110
110
  logging.json,sha256=3RNjSADZmDq38eHePMm1CbP6qZ71AmpBtLwCmKU9Zgo,379
111
111
  openapi.json,sha256=21wu-NxdxyTQwZctNcEfRkLMnSBi0QhGAfwq5kg8XNU,172618
112
- langgraph_api-0.4.31.dist-info/METADATA,sha256=RnIrgJjMUYD-Z8ZalA-w0MHjZy5TWR-7SPKQblCMrJE,4156
113
- langgraph_api-0.4.31.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
114
- langgraph_api-0.4.31.dist-info/entry_points.txt,sha256=hGedv8n7cgi41PypMfinwS_HfCwA7xJIfS0jAp8htV8,78
115
- langgraph_api-0.4.31.dist-info/licenses/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
116
- langgraph_api-0.4.31.dist-info/RECORD,,
112
+ langgraph_api-0.4.33.dist-info/METADATA,sha256=zxmiGEDYYqk7lZ6-7cp2cFjnn-uObuUknaqn0cOJBws,4156
113
+ langgraph_api-0.4.33.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
114
+ langgraph_api-0.4.33.dist-info/entry_points.txt,sha256=hGedv8n7cgi41PypMfinwS_HfCwA7xJIfS0jAp8htV8,78
115
+ langgraph_api-0.4.33.dist-info/licenses/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
116
+ langgraph_api-0.4.33.dist-info/RECORD,,
@@ -1,47 +0,0 @@
1
- #!/bin/bash
2
- # Generate Python protobuf files from core protos
3
- # Run this from the api/langgraph_api/grpc_ops directory
4
-
5
- set -e
6
-
7
- # Get the project root (three levels up from api/langgraph_api/grpc_ops)
8
- PROJECT_ROOT="$(cd ../../../ && pwd)"
9
- PROTO_DIR="${PROJECT_ROOT}/core/protos"
10
- OUTPUT_DIR="generated"
11
-
12
- # Check if proto file exists
13
- if [[ ! -f "${PROTO_DIR}/core-api.proto" ]]; then
14
- echo "Error: Proto file not found at ${PROTO_DIR}/core-api.proto"
15
- exit 1
16
- fi
17
-
18
- # Create output directory if it doesn't exist
19
- mkdir -p "${OUTPUT_DIR}"
20
-
21
- # Generate Python protobuf files
22
- echo "Generating Python protobuf files..."
23
- uv run python -m grpc_tools.protoc \
24
- -I"${PROTO_DIR}" \
25
- --python_out="${OUTPUT_DIR}" \
26
- --grpc_python_out="${OUTPUT_DIR}" \
27
- --pyi_out="${OUTPUT_DIR}" \
28
- "${PROTO_DIR}/core-api.proto"
29
-
30
- # Fix imports to be relative in the generated gRPC file
31
- echo "Fixing imports to be relative..."
32
- if [[ -f "${OUTPUT_DIR}/core_api_pb2_grpc.py" ]]; then
33
- # Make import of core_api_pb2 relative, preserving whatever alias grpc_tools chose
34
- sed -i.bak 's/^import core_api_pb2 as /from . import core_api_pb2 as /' "${OUTPUT_DIR}/core_api_pb2_grpc.py"
35
- rm -f "${OUTPUT_DIR}/core_api_pb2_grpc.py.bak"
36
- fi
37
-
38
- # Create __init__.py files
39
- cat > "${OUTPUT_DIR}/__init__.py" << 'EOF'
40
- # Generated protobuf files
41
- from . import core_api_pb2
42
- from . import core_api_pb2_grpc
43
-
44
- __all__ = ["core_api_pb2", "core_api_pb2_grpc"]
45
- EOF
46
-
47
- echo "Python protobuf files generated successfully!"