langgraph-executor 0.0.1a0__py3-none-any.whl → 0.0.1a2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langgraph_executor/__init__.py +1 -1
- langgraph_executor/execute_task.py +24 -14
- langgraph_executor/executor.py +132 -311
- langgraph_executor/executor_base.py +473 -0
- langgraph_executor/extract_graph.py +2 -5
- langgraph_executor/info_logger.py +3 -3
- langgraph_executor/pb/executor_pb2.py +44 -39
- langgraph_executor/pb/executor_pb2.pyi +49 -5
- langgraph_executor/pb/executor_pb2_grpc.py +44 -0
- langgraph_executor/pb/executor_pb2_grpc.pyi +20 -0
- langgraph_executor/pb/graph_pb2.py +12 -16
- langgraph_executor/pb/graph_pb2.pyi +2 -20
- langgraph_executor/pb/runtime_pb2.py +22 -22
- langgraph_executor/pb/runtime_pb2.pyi +4 -4
- langgraph_executor/server.py +22 -25
- {langgraph_executor-0.0.1a0.dist-info → langgraph_executor-0.0.1a2.dist-info}/METADATA +1 -1
- langgraph_executor-0.0.1a2.dist-info/RECORD +32 -0
- langgraph_executor-0.0.1a0.dist-info/RECORD +0 -31
- {langgraph_executor-0.0.1a0.dist-info → langgraph_executor-0.0.1a2.dist-info}/WHEEL +0 -0
@@ -8,6 +8,7 @@ import collections.abc
|
|
8
8
|
import google.protobuf.descriptor
|
9
9
|
import google.protobuf.internal.containers
|
10
10
|
import google.protobuf.message
|
11
|
+
import google.protobuf.struct_pb2
|
11
12
|
import graph_pb2
|
12
13
|
import types_pb2
|
13
14
|
import typing
|
@@ -64,18 +65,40 @@ class GetGraphResponse(google.protobuf.message.Message):
|
|
64
65
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
65
66
|
|
66
67
|
GRAPH_DEFINITION_FIELD_NUMBER: builtins.int
|
68
|
+
PARENT_NAME_FIELD_NUMBER: builtins.int
|
69
|
+
CHECKPOINTER_FIELD_NUMBER: builtins.int
|
70
|
+
parent_name: builtins.str
|
71
|
+
checkpointer: builtins.bool
|
67
72
|
@property
|
68
73
|
def graph_definition(self) -> graph_pb2.GraphDefinition: ...
|
69
74
|
def __init__(
|
70
75
|
self,
|
71
76
|
*,
|
72
77
|
graph_definition: graph_pb2.GraphDefinition | None = ...,
|
78
|
+
parent_name: builtins.str | None = ...,
|
79
|
+
checkpointer: builtins.bool | None = ...,
|
73
80
|
) -> None: ...
|
74
|
-
def HasField(self, field_name: typing.Literal["graph_definition", b"graph_definition"]) -> builtins.bool: ...
|
75
|
-
def ClearField(self, field_name: typing.Literal["graph_definition", b"graph_definition"]) -> None: ...
|
81
|
+
def HasField(self, field_name: typing.Literal["_checkpointer", b"_checkpointer", "_parent_name", b"_parent_name", "checkpointer", b"checkpointer", "graph_definition", b"graph_definition", "parent_name", b"parent_name"]) -> builtins.bool: ...
|
82
|
+
def ClearField(self, field_name: typing.Literal["_checkpointer", b"_checkpointer", "_parent_name", b"_parent_name", "checkpointer", b"checkpointer", "graph_definition", b"graph_definition", "parent_name", b"parent_name"]) -> None: ...
|
83
|
+
@typing.overload
|
84
|
+
def WhichOneof(self, oneof_group: typing.Literal["_checkpointer", b"_checkpointer"]) -> typing.Literal["checkpointer"] | None: ...
|
85
|
+
@typing.overload
|
86
|
+
def WhichOneof(self, oneof_group: typing.Literal["_parent_name", b"_parent_name"]) -> typing.Literal["parent_name"] | None: ...
|
76
87
|
|
77
88
|
global___GetGraphResponse = GetGraphResponse
|
78
89
|
|
90
|
+
@typing.final
|
91
|
+
class GetAllGraphsRequest(google.protobuf.message.Message):
|
92
|
+
"""GetAllGraphs"""
|
93
|
+
|
94
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
95
|
+
|
96
|
+
def __init__(
|
97
|
+
self,
|
98
|
+
) -> None: ...
|
99
|
+
|
100
|
+
global___GetAllGraphsRequest = GetAllGraphsRequest
|
101
|
+
|
79
102
|
@typing.final
|
80
103
|
class ChannelsFromCheckpointRequest(google.protobuf.message.Message):
|
81
104
|
"""GetChannelsFromCheckpoint"""
|
@@ -214,22 +237,26 @@ class ExecuteTaskResponse(google.protobuf.message.Message):
|
|
214
237
|
TASK_RESULT_FIELD_NUMBER: builtins.int
|
215
238
|
MESSAGE_OR_MESSAGE_CHUNK_FIELD_NUMBER: builtins.int
|
216
239
|
CACHE_CHECK_REQUEST_FIELD_NUMBER: builtins.int
|
240
|
+
CUSTOM_STREAM_EVENT_FIELD_NUMBER: builtins.int
|
217
241
|
@property
|
218
242
|
def task_result(self) -> global___TaskResult: ...
|
219
243
|
@property
|
220
244
|
def message_or_message_chunk(self) -> types_pb2.Message: ...
|
221
245
|
@property
|
222
246
|
def cache_check_request(self) -> global___CacheCheckRequest: ...
|
247
|
+
@property
|
248
|
+
def custom_stream_event(self) -> global___CustomStreamEvent: ...
|
223
249
|
def __init__(
|
224
250
|
self,
|
225
251
|
*,
|
226
252
|
task_result: global___TaskResult | None = ...,
|
227
253
|
message_or_message_chunk: types_pb2.Message | None = ...,
|
228
254
|
cache_check_request: global___CacheCheckRequest | None = ...,
|
255
|
+
custom_stream_event: global___CustomStreamEvent | None = ...,
|
229
256
|
) -> None: ...
|
230
|
-
def HasField(self, field_name: typing.Literal["cache_check_request", b"cache_check_request", "message", b"message", "message_or_message_chunk", b"message_or_message_chunk", "task_result", b"task_result"]) -> builtins.bool: ...
|
231
|
-
def ClearField(self, field_name: typing.Literal["cache_check_request", b"cache_check_request", "message", b"message", "message_or_message_chunk", b"message_or_message_chunk", "task_result", b"task_result"]) -> None: ...
|
232
|
-
def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.Literal["task_result", "message_or_message_chunk", "cache_check_request"] | None: ...
|
257
|
+
def HasField(self, field_name: typing.Literal["cache_check_request", b"cache_check_request", "custom_stream_event", b"custom_stream_event", "message", b"message", "message_or_message_chunk", b"message_or_message_chunk", "task_result", b"task_result"]) -> builtins.bool: ...
|
258
|
+
def ClearField(self, field_name: typing.Literal["cache_check_request", b"cache_check_request", "custom_stream_event", b"custom_stream_event", "message", b"message", "message_or_message_chunk", b"message_or_message_chunk", "task_result", b"task_result"]) -> None: ...
|
259
|
+
def WhichOneof(self, oneof_group: typing.Literal["message", b"message"]) -> typing.Literal["task_result", "message_or_message_chunk", "cache_check_request", "custom_stream_event"] | None: ...
|
233
260
|
|
234
261
|
global___ExecuteTaskResponse = ExecuteTaskResponse
|
235
262
|
|
@@ -255,6 +282,23 @@ class TaskResult(google.protobuf.message.Message):
|
|
255
282
|
|
256
283
|
global___TaskResult = TaskResult
|
257
284
|
|
285
|
+
@typing.final
|
286
|
+
class CustomStreamEvent(google.protobuf.message.Message):
|
287
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
288
|
+
|
289
|
+
PAYLOAD_FIELD_NUMBER: builtins.int
|
290
|
+
@property
|
291
|
+
def payload(self) -> google.protobuf.struct_pb2.Struct: ...
|
292
|
+
def __init__(
|
293
|
+
self,
|
294
|
+
*,
|
295
|
+
payload: google.protobuf.struct_pb2.Struct | None = ...,
|
296
|
+
) -> None: ...
|
297
|
+
def HasField(self, field_name: typing.Literal["payload", b"payload"]) -> builtins.bool: ...
|
298
|
+
def ClearField(self, field_name: typing.Literal["payload", b"payload"]) -> None: ...
|
299
|
+
|
300
|
+
global___CustomStreamEvent = CustomStreamEvent
|
301
|
+
|
258
302
|
@typing.final
|
259
303
|
class ApplyWritesRequest(google.protobuf.message.Message):
|
260
304
|
"""Apply Writes"""
|
@@ -45,6 +45,11 @@ class LangGraphExecutorStub(object):
|
|
45
45
|
request_serializer=executor__pb2.GetGraphRequest.SerializeToString,
|
46
46
|
response_deserializer=executor__pb2.GetGraphResponse.FromString,
|
47
47
|
_registered_method=True)
|
48
|
+
self.GetAllGraphs = channel.unary_stream(
|
49
|
+
'/executor.LangGraphExecutor/GetAllGraphs',
|
50
|
+
request_serializer=executor__pb2.GetAllGraphsRequest.SerializeToString,
|
51
|
+
response_deserializer=executor__pb2.GetGraphResponse.FromString,
|
52
|
+
_registered_method=True)
|
48
53
|
self.ChannelsFromCheckpoint = channel.unary_unary(
|
49
54
|
'/executor.LangGraphExecutor/ChannelsFromCheckpoint',
|
50
55
|
request_serializer=executor__pb2.ChannelsFromCheckpointRequest.SerializeToString,
|
@@ -85,6 +90,13 @@ class LangGraphExecutorServicer(object):
|
|
85
90
|
context.set_details('Method not implemented!')
|
86
91
|
raise NotImplementedError('Method not implemented!')
|
87
92
|
|
93
|
+
def GetAllGraphs(self, request, context):
|
94
|
+
"""Get all supported graph definitions
|
95
|
+
"""
|
96
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
97
|
+
context.set_details('Method not implemented!')
|
98
|
+
raise NotImplementedError('Method not implemented!')
|
99
|
+
|
88
100
|
def ChannelsFromCheckpoint(self, request, context):
|
89
101
|
"""Get channels initialized from checkpoint
|
90
102
|
"""
|
@@ -126,6 +138,11 @@ def add_LangGraphExecutorServicer_to_server(servicer, server):
|
|
126
138
|
request_deserializer=executor__pb2.GetGraphRequest.FromString,
|
127
139
|
response_serializer=executor__pb2.GetGraphResponse.SerializeToString,
|
128
140
|
),
|
141
|
+
'GetAllGraphs': grpc.unary_stream_rpc_method_handler(
|
142
|
+
servicer.GetAllGraphs,
|
143
|
+
request_deserializer=executor__pb2.GetAllGraphsRequest.FromString,
|
144
|
+
response_serializer=executor__pb2.GetGraphResponse.SerializeToString,
|
145
|
+
),
|
129
146
|
'ChannelsFromCheckpoint': grpc.unary_unary_rpc_method_handler(
|
130
147
|
servicer.ChannelsFromCheckpoint,
|
131
148
|
request_deserializer=executor__pb2.ChannelsFromCheckpointRequest.FromString,
|
@@ -212,6 +229,33 @@ class LangGraphExecutor(object):
|
|
212
229
|
metadata,
|
213
230
|
_registered_method=True)
|
214
231
|
|
232
|
+
@staticmethod
|
233
|
+
def GetAllGraphs(request,
|
234
|
+
target,
|
235
|
+
options=(),
|
236
|
+
channel_credentials=None,
|
237
|
+
call_credentials=None,
|
238
|
+
insecure=False,
|
239
|
+
compression=None,
|
240
|
+
wait_for_ready=None,
|
241
|
+
timeout=None,
|
242
|
+
metadata=None):
|
243
|
+
return grpc.experimental.unary_stream(
|
244
|
+
request,
|
245
|
+
target,
|
246
|
+
'/executor.LangGraphExecutor/GetAllGraphs',
|
247
|
+
executor__pb2.GetAllGraphsRequest.SerializeToString,
|
248
|
+
executor__pb2.GetGraphResponse.FromString,
|
249
|
+
options,
|
250
|
+
channel_credentials,
|
251
|
+
insecure,
|
252
|
+
call_credentials,
|
253
|
+
compression,
|
254
|
+
wait_for_ready,
|
255
|
+
timeout,
|
256
|
+
metadata,
|
257
|
+
_registered_method=True)
|
258
|
+
|
215
259
|
@staticmethod
|
216
260
|
def ChannelsFromCheckpoint(request,
|
217
261
|
target,
|
@@ -33,6 +33,12 @@ class LangGraphExecutorStub:
|
|
33
33
|
]
|
34
34
|
"""Get graph definition"""
|
35
35
|
|
36
|
+
GetAllGraphs: grpc.UnaryStreamMultiCallable[
|
37
|
+
executor_pb2.GetAllGraphsRequest,
|
38
|
+
executor_pb2.GetGraphResponse,
|
39
|
+
]
|
40
|
+
"""Get all supported graph definitions"""
|
41
|
+
|
36
42
|
ChannelsFromCheckpoint: grpc.UnaryUnaryMultiCallable[
|
37
43
|
executor_pb2.ChannelsFromCheckpointRequest,
|
38
44
|
executor_pb2.ChannelsFromCheckpointResponse,
|
@@ -72,6 +78,12 @@ class LangGraphExecutorAsyncStub:
|
|
72
78
|
]
|
73
79
|
"""Get graph definition"""
|
74
80
|
|
81
|
+
GetAllGraphs: grpc.aio.UnaryStreamMultiCallable[
|
82
|
+
executor_pb2.GetAllGraphsRequest,
|
83
|
+
executor_pb2.GetGraphResponse,
|
84
|
+
]
|
85
|
+
"""Get all supported graph definitions"""
|
86
|
+
|
75
87
|
ChannelsFromCheckpoint: grpc.aio.UnaryUnaryMultiCallable[
|
76
88
|
executor_pb2.ChannelsFromCheckpointRequest,
|
77
89
|
executor_pb2.ChannelsFromCheckpointResponse,
|
@@ -115,6 +127,14 @@ class LangGraphExecutorServicer(metaclass=abc.ABCMeta):
|
|
115
127
|
) -> typing.Union[executor_pb2.GetGraphResponse, collections.abc.Awaitable[executor_pb2.GetGraphResponse]]:
|
116
128
|
"""Get graph definition"""
|
117
129
|
|
130
|
+
@abc.abstractmethod
|
131
|
+
def GetAllGraphs(
|
132
|
+
self,
|
133
|
+
request: executor_pb2.GetAllGraphsRequest,
|
134
|
+
context: _ServicerContext,
|
135
|
+
) -> typing.Union[collections.abc.Iterator[executor_pb2.GetGraphResponse], collections.abc.AsyncIterator[executor_pb2.GetGraphResponse]]:
|
136
|
+
"""Get all supported graph definitions"""
|
137
|
+
|
118
138
|
@abc.abstractmethod
|
119
139
|
def ChannelsFromCheckpoint(
|
120
140
|
self,
|
@@ -26,7 +26,7 @@ from . import types_pb2 as types__pb2
|
|
26
26
|
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
27
27
|
|
28
28
|
|
29
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bgraph.proto\x12\x05graph\x1a\x0btypes.proto\x1a\x1cgoogle/protobuf/struct.proto\"\
|
29
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bgraph.proto\x12\x05graph\x1a\x0btypes.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x84\x05\n\x0fGraphDefinition\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x05nodes\x18\x02 \x03(\x0b\x32\x15.graph.NodeDefinition\x12!\n\x08\x63hannels\x18\x03 \x01(\x0b\x32\x0f.types.Channels\x12\x16\n\x0einput_channels\x18\x04 \x03(\t\x12\x17\n\x0foutput_channels\x18\x05 \x03(\t\x12\x1e\n\x16input_channels_is_list\x18\x06 \x01(\x08\x12\x1f\n\x17output_channels_is_list\x18\x07 \x01(\x08\x12\x1e\n\x16interrupt_before_nodes\x18\x08 \x03(\t\x12\x1d\n\x15interrupt_after_nodes\x18\t \x03(\t\x12\x44\n\x10trigger_to_nodes\x18\n \x03(\x0b\x32*.graph.GraphDefinition.TriggerToNodesEntry\x12\x13\n\x0bstream_mode\x18\x0b \x03(\t\x12\x14\n\x0cstream_eager\x18\x0c \x01(\x08\x12\x17\n\x0fstream_channels\x18\r \x03(\t\x12\x14\n\x0cstep_timeout\x18\x0e \x01(\x02\x12\r\n\x05\x64\x65\x62ug\x18\x0f \x01(\x08\x12\x1b\n\x05\x63\x61\x63he\x18\x10 \x01(\x0b\x32\x0c.graph.Cache\x12(\n\x0cretry_policy\x18\x11 \x01(\x0b\x32\x12.graph.RetryPolicy\x12%\n\x06\x63onfig\x18\x12 \x01(\x0b\x32\x15.types.RunnableConfig\x1aL\n\x13TriggerToNodesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.graph.TriggerMapping:\x02\x38\x01\"\x8c\x01\n\x0eNodeDefinition\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08triggers\x18\x02 \x03(\t\x12\x0f\n\x07writers\x18\x03 \x03(\t\x12\x0c\n\x04tags\x18\x04 \x03(\t\x12)\n\x08metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x63hannels\x18\x06 \x03(\t\"{\n\x0bRetryPolicy\x12\x18\n\x10initial_interval\x18\x01 \x01(\x02\x12\x16\n\x0e\x62\x61\x63koff_factor\x18\x02 \x01(\x02\x12\x14\n\x0cmax_interval\x18\x03 \x01(\x02\x12\x14\n\x0cmax_attempts\x18\x04 \x01(\x05\x12\x0e\n\x06jitter\x18\x05 \x01(\x08\"\x1b\n\x05\x43\x61\x63he\x12\x12\n\ncache_type\x18\x01 \x01(\t\"\x1f\n\x0eTriggerMapping\x12\r\n\x05nodes\x18\x01 \x03(\tB1Z/github.com/langchain-ai/langgraph-go/runtime/pbb\x06proto3')
|
30
30
|
|
31
31
|
_globals = globals()
|
32
32
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -34,22 +34,18 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'graph_pb2', _globals)
|
|
34
34
|
if not _descriptor._USE_C_DESCRIPTORS:
|
35
35
|
_globals['DESCRIPTOR']._loaded_options = None
|
36
36
|
_globals['DESCRIPTOR']._serialized_options = b'Z/github.com/langchain-ai/langgraph-go/runtime/pb'
|
37
|
-
_globals['_GRAPHDEFINITION_NODESENTRY']._loaded_options = None
|
38
|
-
_globals['_GRAPHDEFINITION_NODESENTRY']._serialized_options = b'8\001'
|
39
37
|
_globals['_GRAPHDEFINITION_TRIGGERTONODESENTRY']._loaded_options = None
|
40
38
|
_globals['_GRAPHDEFINITION_TRIGGERTONODESENTRY']._serialized_options = b'8\001'
|
41
39
|
_globals['_GRAPHDEFINITION']._serialized_start=66
|
42
|
-
_globals['_GRAPHDEFINITION']._serialized_end=
|
43
|
-
_globals['
|
44
|
-
_globals['
|
45
|
-
_globals['
|
46
|
-
_globals['
|
47
|
-
_globals['
|
48
|
-
_globals['
|
49
|
-
_globals['
|
50
|
-
_globals['
|
51
|
-
_globals['
|
52
|
-
_globals['
|
53
|
-
_globals['_TRIGGERMAPPING']._serialized_start=1090
|
54
|
-
_globals['_TRIGGERMAPPING']._serialized_end=1121
|
40
|
+
_globals['_GRAPHDEFINITION']._serialized_end=710
|
41
|
+
_globals['_GRAPHDEFINITION_TRIGGERTONODESENTRY']._serialized_start=634
|
42
|
+
_globals['_GRAPHDEFINITION_TRIGGERTONODESENTRY']._serialized_end=710
|
43
|
+
_globals['_NODEDEFINITION']._serialized_start=713
|
44
|
+
_globals['_NODEDEFINITION']._serialized_end=853
|
45
|
+
_globals['_RETRYPOLICY']._serialized_start=855
|
46
|
+
_globals['_RETRYPOLICY']._serialized_end=978
|
47
|
+
_globals['_CACHE']._serialized_start=980
|
48
|
+
_globals['_CACHE']._serialized_end=1007
|
49
|
+
_globals['_TRIGGERMAPPING']._serialized_start=1009
|
50
|
+
_globals['_TRIGGERMAPPING']._serialized_end=1040
|
55
51
|
# @@protoc_insertion_point(module_scope)
|
@@ -18,24 +18,6 @@ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
18
18
|
class GraphDefinition(google.protobuf.message.Message):
|
19
19
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
20
20
|
|
21
|
-
@typing.final
|
22
|
-
class NodesEntry(google.protobuf.message.Message):
|
23
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
24
|
-
|
25
|
-
KEY_FIELD_NUMBER: builtins.int
|
26
|
-
VALUE_FIELD_NUMBER: builtins.int
|
27
|
-
key: builtins.str
|
28
|
-
@property
|
29
|
-
def value(self) -> global___NodeDefinition: ...
|
30
|
-
def __init__(
|
31
|
-
self,
|
32
|
-
*,
|
33
|
-
key: builtins.str = ...,
|
34
|
-
value: global___NodeDefinition | None = ...,
|
35
|
-
) -> None: ...
|
36
|
-
def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
|
37
|
-
def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
|
38
|
-
|
39
21
|
@typing.final
|
40
22
|
class TriggerToNodesEntry(google.protobuf.message.Message):
|
41
23
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
@@ -79,7 +61,7 @@ class GraphDefinition(google.protobuf.message.Message):
|
|
79
61
|
step_timeout: builtins.float
|
80
62
|
debug: builtins.bool
|
81
63
|
@property
|
82
|
-
def nodes(self) -> google.protobuf.internal.containers.
|
64
|
+
def nodes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NodeDefinition]: ...
|
83
65
|
@property
|
84
66
|
def channels(self) -> types_pb2.Channels: ...
|
85
67
|
@property
|
@@ -106,7 +88,7 @@ class GraphDefinition(google.protobuf.message.Message):
|
|
106
88
|
self,
|
107
89
|
*,
|
108
90
|
name: builtins.str = ...,
|
109
|
-
nodes: collections.abc.
|
91
|
+
nodes: collections.abc.Iterable[global___NodeDefinition] | None = ...,
|
110
92
|
channels: types_pb2.Channels | None = ...,
|
111
93
|
input_channels: collections.abc.Iterable[builtins.str] | None = ...,
|
112
94
|
output_channels: collections.abc.Iterable[builtins.str] | None = ...,
|
@@ -27,7 +27,7 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
|
|
27
27
|
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
28
28
|
|
29
29
|
|
30
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rruntime.proto\x12\x07runtime\x1a\x0btypes.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\"%\n\x12\x41\x64\x64\x45xecutorRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\"L\n\x0f\x41\x64\x64GraphRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12+\n\x0c\x63heckpointer\x18\x02 \x01(\x0b\x32\x15.runtime.Checkpointer\"}\n\x0c\x43heckpointer\x12/\n\x06memory\x18\x02 \x01(\x0b\x32\x1d.runtime.InMemoryCheckpointerH\x00\x12\x31\n\x08postgres\x18\x03 \x01(\x0b\x32\x1d.runtime.PostgresCheckpointerH\x00\x42\t\n\x07message\"\x16\n\x14InMemoryCheckpointer\"
|
30
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rruntime.proto\x12\x07runtime\x1a\x0btypes.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\"%\n\x12\x41\x64\x64\x45xecutorRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\"L\n\x0f\x41\x64\x64GraphRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12+\n\x0c\x63heckpointer\x18\x02 \x01(\x0b\x32\x15.runtime.Checkpointer\"}\n\x0c\x43heckpointer\x12/\n\x06memory\x18\x02 \x01(\x0b\x32\x1d.runtime.InMemoryCheckpointerH\x00\x12\x31\n\x08postgres\x18\x03 \x01(\x0b\x32\x1d.runtime.PostgresCheckpointerH\x00\x42\t\n\x07message\"\x16\n\x14InMemoryCheckpointer\",\n\x14PostgresCheckpointer\x12\x14\n\x0c\x64\x61tabase_uri\x18\x01 \x01(\t\"\xcf\x01\n\rInvokeRequest\x12\x12\n\ngraph_name\x18\x01 \x01(\t\x12\x1b\n\x05input\x18\x02 \x01(\x0b\x32\x0c.types.Value\x12%\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x15.types.RunnableConfig\x12\'\n\x08run_opts\x18\x04 \x01(\x0b\x32\x10.runtime.RunOptsH\x00\x88\x01\x01\x12$\n\x07\x63ontext\x18\x05 \x01(\x0b\x32\x0e.types.ContextH\x01\x88\x01\x01\x42\x0b\n\t_run_optsB\n\n\x08_context\"\xcf\x01\n\rStreamRequest\x12\x12\n\ngraph_name\x18\x01 \x01(\t\x12\x1b\n\x05input\x18\x02 \x01(\x0b\x32\x0c.types.Value\x12%\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x15.types.RunnableConfig\x12\'\n\x08run_opts\x18\x04 \x01(\x0b\x32\x10.runtime.RunOptsH\x00\x88\x01\x01\x12$\n\x07\x63ontext\x18\x05 \x01(\x0b\x32\x0e.types.ContextH\x01\x88\x01\x01\x42\x0b\n\t_run_optsB\n\n\x08_context\"\xd2\x01\n\x07RunOpts\x12\x13\n\x0boutput_keys\x18\x01 \x03(\t\x12\x18\n\x10interrupt_before\x18\x02 \x03(\t\x12\x17\n\x0finterrupt_after\x18\x03 \x03(\t\x12\x17\n\ndurability\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05\x64\x65\x62ug\x18\x05 \x01(\x08H\x01\x88\x01\x01\x12\x16\n\tsubgraphs\x18\x06 \x01(\x08H\x02\x88\x01\x01\x12\x13\n\x0bstream_mode\x18\x07 \x03(\tB\r\n\x0b_durabilityB\x08\n\x06_debugB\x0c\n\n_subgraphs\"1\n\tChunkList\x12$\n\x06\x63hunks\x18\x01 \x03(\x0b\x32\x14.runtime.OutputChunk\"\x86\x01\n\x0bOutputChunk\x12#\n\x05\x63hunk\x18\x01 \x01(\x0b\x32\x12.types.StreamChunkH\x00\x12\x1d\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x0c.types.ValueH\x00\x12(\n\nchunk_list\x18\x05 \x01(\x0b\x32\x12.runtime.ChunkListH\x00\x42\t\n\x07message\"_\n\x0fGetStateRequest\x12\x12\n\ngraph_name\x18\x01 \x01(\t\x12%\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x15.types.RunnableConfig\x12\x11\n\tsubgraphs\x18\x03 \x01(\x08\"7\n\x10GetStateResponse\x12#\n\x05state\x18\x01 \x01(\x0b\x32\x14.types.StateSnapshot\"\xb2\x01\n\x16GetStateHistoryRequest\x12\x12\n\ngraph_name\x18\x01 \x01(\t\x12%\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x15.types.RunnableConfig\x12\'\n\x06\x66ilter\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12%\n\x06\x62\x65\x66ore\x18\x04 \x01(\x0b\x32\x15.types.RunnableConfig\x12\r\n\x05limit\x18\x05 \x01(\x03\"@\n\x17GetStateHistoryResponse\x12%\n\x07history\x18\x01 \x03(\x0b\x32\x14.types.StateSnapshot2\x9d\x03\n\x10LangGraphRuntime\x12\x42\n\x0b\x41\x64\x64\x45xecutor\x12\x1b.runtime.AddExecutorRequest\x1a\x16.google.protobuf.Empty\x12<\n\x08\x41\x64\x64Graph\x12\x18.runtime.AddGraphRequest\x1a\x16.google.protobuf.Empty\x12\x36\n\x06Invoke\x12\x16.runtime.InvokeRequest\x1a\x14.runtime.OutputChunk\x12\x38\n\x06Stream\x12\x16.runtime.StreamRequest\x1a\x14.runtime.OutputChunk0\x01\x12?\n\x08GetState\x12\x18.runtime.GetStateRequest\x1a\x19.runtime.GetStateResponse\x12T\n\x0fGetStateHistory\x12\x1f.runtime.GetStateHistoryRequest\x1a .runtime.GetStateHistoryResponseB1Z/github.com/langchain-ai/langgraph-go/runtime/pbb\x06proto3')
|
31
31
|
|
32
32
|
_globals = globals()
|
33
33
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -44,25 +44,25 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
44
44
|
_globals['_INMEMORYCHECKPOINTER']._serialized_start=342
|
45
45
|
_globals['_INMEMORYCHECKPOINTER']._serialized_end=364
|
46
46
|
_globals['_POSTGRESCHECKPOINTER']._serialized_start=366
|
47
|
-
_globals['_POSTGRESCHECKPOINTER']._serialized_end=
|
48
|
-
_globals['_INVOKEREQUEST']._serialized_start=
|
49
|
-
_globals['_INVOKEREQUEST']._serialized_end=
|
50
|
-
_globals['_STREAMREQUEST']._serialized_start=
|
51
|
-
_globals['_STREAMREQUEST']._serialized_end=
|
52
|
-
_globals['_RUNOPTS']._serialized_start=
|
53
|
-
_globals['_RUNOPTS']._serialized_end=
|
54
|
-
_globals['_CHUNKLIST']._serialized_start=
|
55
|
-
_globals['_CHUNKLIST']._serialized_end=
|
56
|
-
_globals['_OUTPUTCHUNK']._serialized_start=
|
57
|
-
_globals['_OUTPUTCHUNK']._serialized_end=
|
58
|
-
_globals['_GETSTATEREQUEST']._serialized_start=
|
59
|
-
_globals['_GETSTATEREQUEST']._serialized_end=
|
60
|
-
_globals['_GETSTATERESPONSE']._serialized_start=
|
61
|
-
_globals['_GETSTATERESPONSE']._serialized_end=
|
62
|
-
_globals['_GETSTATEHISTORYREQUEST']._serialized_start=
|
63
|
-
_globals['_GETSTATEHISTORYREQUEST']._serialized_end=
|
64
|
-
_globals['_GETSTATEHISTORYRESPONSE']._serialized_start=
|
65
|
-
_globals['_GETSTATEHISTORYRESPONSE']._serialized_end=
|
66
|
-
_globals['_LANGGRAPHRUNTIME']._serialized_start=
|
67
|
-
_globals['_LANGGRAPHRUNTIME']._serialized_end=
|
47
|
+
_globals['_POSTGRESCHECKPOINTER']._serialized_end=410
|
48
|
+
_globals['_INVOKEREQUEST']._serialized_start=413
|
49
|
+
_globals['_INVOKEREQUEST']._serialized_end=620
|
50
|
+
_globals['_STREAMREQUEST']._serialized_start=623
|
51
|
+
_globals['_STREAMREQUEST']._serialized_end=830
|
52
|
+
_globals['_RUNOPTS']._serialized_start=833
|
53
|
+
_globals['_RUNOPTS']._serialized_end=1043
|
54
|
+
_globals['_CHUNKLIST']._serialized_start=1045
|
55
|
+
_globals['_CHUNKLIST']._serialized_end=1094
|
56
|
+
_globals['_OUTPUTCHUNK']._serialized_start=1097
|
57
|
+
_globals['_OUTPUTCHUNK']._serialized_end=1231
|
58
|
+
_globals['_GETSTATEREQUEST']._serialized_start=1233
|
59
|
+
_globals['_GETSTATEREQUEST']._serialized_end=1328
|
60
|
+
_globals['_GETSTATERESPONSE']._serialized_start=1330
|
61
|
+
_globals['_GETSTATERESPONSE']._serialized_end=1385
|
62
|
+
_globals['_GETSTATEHISTORYREQUEST']._serialized_start=1388
|
63
|
+
_globals['_GETSTATEHISTORYREQUEST']._serialized_end=1566
|
64
|
+
_globals['_GETSTATEHISTORYRESPONSE']._serialized_start=1568
|
65
|
+
_globals['_GETSTATEHISTORYRESPONSE']._serialized_end=1632
|
66
|
+
_globals['_LANGGRAPHRUNTIME']._serialized_start=1635
|
67
|
+
_globals['_LANGGRAPHRUNTIME']._serialized_end=2048
|
68
68
|
# @@protoc_insertion_point(module_scope)
|
@@ -91,14 +91,14 @@ global___InMemoryCheckpointer = InMemoryCheckpointer
|
|
91
91
|
class PostgresCheckpointer(google.protobuf.message.Message):
|
92
92
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
93
93
|
|
94
|
-
|
95
|
-
|
94
|
+
DATABASE_URI_FIELD_NUMBER: builtins.int
|
95
|
+
database_uri: builtins.str
|
96
96
|
def __init__(
|
97
97
|
self,
|
98
98
|
*,
|
99
|
-
|
99
|
+
database_uri: builtins.str = ...,
|
100
100
|
) -> None: ...
|
101
|
-
def ClearField(self, field_name: typing.Literal["
|
101
|
+
def ClearField(self, field_name: typing.Literal["database_uri", b"database_uri"]) -> None: ...
|
102
102
|
|
103
103
|
global___PostgresCheckpointer = PostgresCheckpointer
|
104
104
|
|
langgraph_executor/server.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import argparse
|
2
|
+
import asyncio
|
2
3
|
import logging
|
3
4
|
import os
|
4
5
|
import pathlib
|
@@ -6,18 +7,13 @@ import signal
|
|
6
7
|
import sys
|
7
8
|
import time
|
8
9
|
import uuid
|
9
|
-
from concurrent import futures
|
10
10
|
|
11
|
-
import grpc
|
12
11
|
from langgraph.pregel import Pregel
|
13
12
|
|
14
|
-
from langgraph_executor.executor import
|
13
|
+
from langgraph_executor.executor import create_server
|
15
14
|
from langgraph_executor.info_logger import ExecutorInfo, ExecutorInfoLogger
|
16
|
-
from langgraph_executor.pb.executor_pb2_grpc import (
|
17
|
-
add_LangGraphExecutorServicer_to_server,
|
18
|
-
)
|
19
15
|
|
20
|
-
|
16
|
+
DEFAULT_EXECUTOR_ADDRESS = "127.0.0.1:50052"
|
21
17
|
|
22
18
|
EXECUTOR_INFO_FILE_NAME = "info.json"
|
23
19
|
|
@@ -43,7 +39,6 @@ def setup_server_logging(component_id: str, debug=False, color=YELLOW):
|
|
43
39
|
root_logger = logging.getLogger()
|
44
40
|
for handler in root_logger.handlers[:]:
|
45
41
|
root_logger.removeHandler(handler)
|
46
|
-
|
47
42
|
# Configure logging
|
48
43
|
logging.basicConfig(
|
49
44
|
level=level,
|
@@ -63,11 +58,11 @@ def setup_server_logging(component_id: str, debug=False, color=YELLOW):
|
|
63
58
|
)
|
64
59
|
|
65
60
|
|
66
|
-
def create_executor_info(
|
61
|
+
def create_executor_info(address: str, id: str):
|
67
62
|
return ExecutorInfo(
|
68
63
|
id=id,
|
69
64
|
pid=os.getpid(),
|
70
|
-
|
65
|
+
address=address,
|
71
66
|
start_time=time.time(),
|
72
67
|
status="starting",
|
73
68
|
error_message=None,
|
@@ -82,10 +77,11 @@ def signum_to_name(signum):
|
|
82
77
|
return f"UNKNOWN_SIGNAL_{signum}"
|
83
78
|
|
84
79
|
|
85
|
-
def serve(
|
80
|
+
async def serve(
|
86
81
|
graphs: dict[str, Pregel],
|
87
|
-
|
88
|
-
|
82
|
+
*,
|
83
|
+
address: str = DEFAULT_EXECUTOR_ADDRESS,
|
84
|
+
debug: bool = False,
|
89
85
|
id: str | None = None,
|
90
86
|
log_dir: pathlib.Path | None = None,
|
91
87
|
):
|
@@ -107,16 +103,17 @@ def serve(
|
|
107
103
|
log_dir or pathlib.Path(__file__).resolve().parent.parent / "logs",
|
108
104
|
)
|
109
105
|
|
110
|
-
server =
|
111
|
-
add_LangGraphExecutorServicer_to_server(LangGraphExecutorServicer(graphs), server)
|
112
|
-
port = server.add_insecure_port(f"[::]:{port}")
|
106
|
+
server = create_server(graphs, address)
|
113
107
|
|
114
|
-
server.start()
|
108
|
+
await server.start()
|
109
|
+
loop = asyncio.get_event_loop()
|
115
110
|
|
116
111
|
# Signal handler for graceful shutdown
|
117
112
|
def signal_handler(signum, frame):
|
118
113
|
logger.info(f"Received signal {signum_to_name(signum)}. Shutting down...")
|
119
|
-
|
114
|
+
asyncio.run_coroutine_threadsafe(
|
115
|
+
server.stop(5), loop
|
116
|
+
) # Give 5 seconds for graceful shutdown
|
120
117
|
info_logger.update_executor_info(
|
121
118
|
executor_info.id,
|
122
119
|
status="stopped",
|
@@ -130,16 +127,16 @@ def serve(
|
|
130
127
|
signal.signal(signal.SIGINT, signal_handler)
|
131
128
|
signal.signal(signal.SIGTERM, signal_handler)
|
132
129
|
|
133
|
-
executor_info = create_executor_info(
|
130
|
+
executor_info = create_executor_info(address, id_)
|
134
131
|
info_logger.write_executor_info(executor_info)
|
135
132
|
|
136
133
|
try:
|
137
134
|
info_logger.update_executor_info(executor_info.id, status="running")
|
138
|
-
logger.info("Listening...")
|
139
|
-
server.wait_for_termination()
|
135
|
+
logger.info(f"Listening at address {address}...")
|
136
|
+
await server.wait_for_termination()
|
140
137
|
except Exception as e:
|
141
138
|
logger.exception("Unexpected error in executor")
|
142
|
-
server.stop(0)
|
139
|
+
await server.stop(0)
|
143
140
|
info_logger.update_executor_info(
|
144
141
|
executor_info.id,
|
145
142
|
status="error",
|
@@ -152,8 +149,8 @@ def serve(
|
|
152
149
|
def main():
|
153
150
|
"""Start a LangGraph executor server."""
|
154
151
|
parser = argparse.ArgumentParser()
|
155
|
-
parser.add_argument("--
|
156
|
-
parser.add_argument("--debug", action="
|
152
|
+
parser.add_argument("--address", type=int, default=DEFAULT_EXECUTOR_ADDRESS)
|
153
|
+
parser.add_argument("--debug", action="store_false")
|
157
154
|
parser.add_argument(
|
158
155
|
"--log-dir",
|
159
156
|
type=pathlib.Path,
|
@@ -179,7 +176,7 @@ def main():
|
|
179
176
|
graphs = GRAPHS
|
180
177
|
|
181
178
|
# serve
|
182
|
-
serve(graphs, args.
|
179
|
+
serve(graphs, address=args.address, debug=args.debug, log_dir=args.log_dir)
|
183
180
|
|
184
181
|
|
185
182
|
if __name__ == "__main__":
|
@@ -0,0 +1,32 @@
|
|
1
|
+
langgraph_executor/__init__.py,sha256=3EXaFnXv1z-8AVCGrDM9MpCrpg8I15YhcHCsHzX3iGI,24
|
2
|
+
langgraph_executor/common.py,sha256=w75Bqbrj5LOtiWoOOdIi45yVB05xYXDAnokwg7MgDQE,13688
|
3
|
+
langgraph_executor/example.py,sha256=TcfxgC9VfpZFliWnuVdJMllCDa8ji7vrSCRWnmdsUA8,900
|
4
|
+
langgraph_executor/execute_task.py,sha256=_m-WyVODhShI29qzkK0DXSPoTY4E_izbuaT7F_fVZVw,7262
|
5
|
+
langgraph_executor/executor.py,sha256=oUg6q8WWjAIwuh2ik76IbCPMKfmegT5ePZsWFnvR4WE,5296
|
6
|
+
langgraph_executor/executor_base.py,sha256=OpFhZNd-FehaTkSlnmD4bw9cAQ3FF8nWO9mim5YL0Cg,18509
|
7
|
+
langgraph_executor/extract_graph.py,sha256=f7NNeZigRQlTAYg_-mV8eBgQ9q8kuThCDwLjRO6wReQ,6365
|
8
|
+
langgraph_executor/info_logger.py,sha256=kgoVnMxm_aloHal89NHfH_Qb9eixrqD0dHmgnrm_vL4,3110
|
9
|
+
langgraph_executor/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
+
langgraph_executor/server.py,sha256=EVwZjsO2S0qhhU9C_4e85gfrxyOCo3H72bBi28vSFIw,5134
|
11
|
+
langgraph_executor/setup.sh,sha256=QI505EIya8sjEIohom6GDfFckFqOMF8bIEX-hSWcLUI,627
|
12
|
+
langgraph_executor/stream_utils.py,sha256=snxlEoZe0d4ae3h_6Ct3zNzLV_ugvPANcr4VECYofwk,2974
|
13
|
+
langgraph_executor/pb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
|
+
langgraph_executor/pb/executor_pb2.py,sha256=ny5SLOq4VqbZ-1XxPdytfi3Y-H5FuQwL4CK3fgMh_EI,8617
|
15
|
+
langgraph_executor/pb/executor_pb2.pyi,sha256=iVySzUzD9REkvJzet00YOL9Be3YCRizCqnsvGU_oYD4,18612
|
16
|
+
langgraph_executor/pb/executor_pb2_grpc.py,sha256=tsYWd0X0hmGPOO_Vf-4Pv0-vgMutzaTOTM_UnDjUeIc,13938
|
17
|
+
langgraph_executor/pb/executor_pb2_grpc.pyi,sha256=5ipWaunudj0rGP1yoRRf3V-2kjKiMkr4HHIuGqUa24s,5979
|
18
|
+
langgraph_executor/pb/graph_pb2.py,sha256=V4by2e0nEN-oF6AeX-SSzgN96d8BbE923p91Cp91UFQ,4021
|
19
|
+
langgraph_executor/pb/graph_pb2.pyi,sha256=xmhlJdwZ6g-ckwxjLKEIs7pJPiGIbin9m2rqdKMOWyI,9470
|
20
|
+
langgraph_executor/pb/graph_pb2_grpc.py,sha256=8j8j0GTUo21GL7RO-_UgVPN27DRnAfus0lhTWKI49no,886
|
21
|
+
langgraph_executor/pb/graph_pb2_grpc.pyi,sha256=Dl8kkjhqb6F1Kt24mcFg7ppish4iKVfjRiiBxEjsMMA,413
|
22
|
+
langgraph_executor/pb/runtime_pb2.py,sha256=o6g0hem5Izqslbgy4yQgVrxERaaUTrsOVZfLVD1W0zw,6443
|
23
|
+
langgraph_executor/pb/runtime_pb2.pyi,sha256=mcej7UAR7Pxpkl_3Pw4ENg3oGjln6L5-_XHqkpzZFoU,14373
|
24
|
+
langgraph_executor/pb/runtime_pb2_grpc.py,sha256=HKn8fgGT9zTDAS-ZGCk-1AO2QForvCZH_BVnufTS0sM,11791
|
25
|
+
langgraph_executor/pb/runtime_pb2_grpc.pyi,sha256=TeEHQYvJDdypawBFA6JP4OiQ9NFa_RNVKzGwHBSlFNs,4614
|
26
|
+
langgraph_executor/pb/types_pb2.py,sha256=rUboWBthlLM-iJOmZZta-HSekwTNFuXfWLaYHes1918,15570
|
27
|
+
langgraph_executor/pb/types_pb2.pyi,sha256=tBX4LzmfWZ-IYscIeAEBTDC02GWWKEAQVB2JPNHChDc,40957
|
28
|
+
langgraph_executor/pb/types_pb2_grpc.py,sha256=EPv87wCc-6BNJ2xTNcb9d3ictDerK5cBt7qhd7EmJiQ,886
|
29
|
+
langgraph_executor/pb/types_pb2_grpc.pyi,sha256=Dl8kkjhqb6F1Kt24mcFg7ppish4iKVfjRiiBxEjsMMA,413
|
30
|
+
langgraph_executor-0.0.1a2.dist-info/METADATA,sha256=-xr_G-Z1Huy6YMjYSJHYZZkPD_tu7Q-ZwDgLluOmkTo,433
|
31
|
+
langgraph_executor-0.0.1a2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
32
|
+
langgraph_executor-0.0.1a2.dist-info/RECORD,,
|
@@ -1,31 +0,0 @@
|
|
1
|
-
langgraph_executor/__init__.py,sha256=508eDu4nPCyqYyg_NQBRjRZmK_68ggYywDmqDMXRF1I,24
|
2
|
-
langgraph_executor/common.py,sha256=w75Bqbrj5LOtiWoOOdIi45yVB05xYXDAnokwg7MgDQE,13688
|
3
|
-
langgraph_executor/example.py,sha256=TcfxgC9VfpZFliWnuVdJMllCDa8ji7vrSCRWnmdsUA8,900
|
4
|
-
langgraph_executor/execute_task.py,sha256=DmsLHhkfhBYhZeHFq2eWHCkJuK9WfcDSkUQ8a0nwCB0,6932
|
5
|
-
langgraph_executor/executor.py,sha256=9YI_-meJHz9ei9azWQjZGLzhgHDpa7Xj6Sb9HO01s_w,13242
|
6
|
-
langgraph_executor/extract_graph.py,sha256=VlbQ6KausNd7ZPtivItMP1g4bYDwhZtttOHtbuFy4Hc,6407
|
7
|
-
langgraph_executor/info_logger.py,sha256=BUcrg_nui_dN4JBUVyO7jurmCnt8gQ0TOubUNbyvYBk,3095
|
8
|
-
langgraph_executor/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
|
-
langgraph_executor/server.py,sha256=avtZzStLiIDvNCKyytFU3E2Li1_TBgz5oyWUBRbPzFk,5200
|
10
|
-
langgraph_executor/setup.sh,sha256=QI505EIya8sjEIohom6GDfFckFqOMF8bIEX-hSWcLUI,627
|
11
|
-
langgraph_executor/stream_utils.py,sha256=snxlEoZe0d4ae3h_6Ct3zNzLV_ugvPANcr4VECYofwk,2974
|
12
|
-
langgraph_executor/pb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
-
langgraph_executor/pb/executor_pb2.py,sha256=G9BI0TLB39yACBo2QX3eT0jDbeNFJyEY0IlGuOAeEH8,7783
|
14
|
-
langgraph_executor/pb/executor_pb2.pyi,sha256=bW6TYrLG8SySVqx1ie-5igw2PEdvHiQLIvnyb59GATc,16575
|
15
|
-
langgraph_executor/pb/executor_pb2_grpc.py,sha256=IvKDVBWxrWU7Rcntall4KAvpQ8CdLkbljKaCEloimQE,12224
|
16
|
-
langgraph_executor/pb/executor_pb2_grpc.pyi,sha256=iGHLqEpl7FFrBvBmBfbacvl0YgtZf8dH5pBkAaB0d64,5270
|
17
|
-
langgraph_executor/pb/graph_pb2.py,sha256=FyhQlHv1lIivUL_HoKVxB6x1oXxgdugV2bsKJd55A8o,4430
|
18
|
-
langgraph_executor/pb/graph_pb2.pyi,sha256=inoFjgLD42hxkG1ORIU3Lrrk57ubdmZZtRw53JZUsGI,10161
|
19
|
-
langgraph_executor/pb/graph_pb2_grpc.py,sha256=8j8j0GTUo21GL7RO-_UgVPN27DRnAfus0lhTWKI49no,886
|
20
|
-
langgraph_executor/pb/graph_pb2_grpc.pyi,sha256=Dl8kkjhqb6F1Kt24mcFg7ppish4iKVfjRiiBxEjsMMA,413
|
21
|
-
langgraph_executor/pb/runtime_pb2.py,sha256=tYVvki3PixSiXnrBh53izR9IynGJxtynKtkZs6Aoeu4,6445
|
22
|
-
langgraph_executor/pb/runtime_pb2.pyi,sha256=QNkLw4OV3IJQjpX3j-t_s6_zkcxMyuYnJCwVPGaBcJ0,14398
|
23
|
-
langgraph_executor/pb/runtime_pb2_grpc.py,sha256=HKn8fgGT9zTDAS-ZGCk-1AO2QForvCZH_BVnufTS0sM,11791
|
24
|
-
langgraph_executor/pb/runtime_pb2_grpc.pyi,sha256=TeEHQYvJDdypawBFA6JP4OiQ9NFa_RNVKzGwHBSlFNs,4614
|
25
|
-
langgraph_executor/pb/types_pb2.py,sha256=rUboWBthlLM-iJOmZZta-HSekwTNFuXfWLaYHes1918,15570
|
26
|
-
langgraph_executor/pb/types_pb2.pyi,sha256=tBX4LzmfWZ-IYscIeAEBTDC02GWWKEAQVB2JPNHChDc,40957
|
27
|
-
langgraph_executor/pb/types_pb2_grpc.py,sha256=EPv87wCc-6BNJ2xTNcb9d3ictDerK5cBt7qhd7EmJiQ,886
|
28
|
-
langgraph_executor/pb/types_pb2_grpc.pyi,sha256=Dl8kkjhqb6F1Kt24mcFg7ppish4iKVfjRiiBxEjsMMA,413
|
29
|
-
langgraph_executor-0.0.1a0.dist-info/METADATA,sha256=0v94S42MrwYAAitdIL1UfZGCHb5BVwtcDeFev_I8Ptk,433
|
30
|
-
langgraph_executor-0.0.1a0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
31
|
-
langgraph_executor-0.0.1a0.dist-info/RECORD,,
|
File without changes
|