corvo-worker 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ Metadata-Version: 2.4
2
+ Name: corvo-worker
3
+ Version: 0.2.0
4
+ Summary: Python worker runtime for Corvo
5
+ License-Expression: MIT
6
+ Requires-Python: >=3.9
7
+ Description-Content-Type: text/plain
8
+ Requires-Dist: corvo-client>=0.1.0
9
+ Requires-Dist: grpcio>=1.62.0
10
+ Requires-Dist: protobuf>=4.25.0
11
+ Provides-Extra: dev
12
+ Requires-Dist: grpcio-tools>=1.62.0; extra == "dev"
@@ -0,0 +1,4 @@
1
+ from .worker import CorvoWorker, WorkerConfig, JobContext
2
+ from corvo_client import PayloadTooLargeError
3
+
4
+ __all__ = ["CorvoWorker", "WorkerConfig", "JobContext", "PayloadTooLargeError"]
File without changes
File without changes
@@ -0,0 +1,93 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: corvo/v1/worker.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'corvo/v1/worker.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
26
+
27
+
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x63orvo/v1/worker.proto\x12\x08\x63orvo.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"[\n\x0e\x45nqueueRequest\x12\r\n\x05queue\x18\x01 \x01(\t\x12\x14\n\x0cpayload_json\x18\x02 \x01(\t\x12$\n\x05\x61gent\x18\x03 \x01(\x0b\x32\x15.corvo.v1.AgentConfig\"J\n\x0f\x45nqueueResponse\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x17\n\x0funique_existing\x18\x03 \x01(\x08\"[\n\x0c\x46\x65tchRequest\x12\x0e\n\x06queues\x18\x01 \x03(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\x10\n\x08hostname\x18\x03 \x01(\t\x12\x16\n\x0elease_duration\x18\x04 \x01(\x05\"\xe2\x01\n\rFetchResponse\x12\r\n\x05\x66ound\x18\x01 \x01(\x08\x12\x0e\n\x06job_id\x18\x02 \x01(\t\x12\r\n\x05queue\x18\x03 \x01(\t\x12\x14\n\x0cpayload_json\x18\x04 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x05 \x01(\x05\x12\x13\n\x0bmax_retries\x18\x06 \x01(\x05\x12\x16\n\x0elease_duration\x18\x07 \x01(\x05\x12\x17\n\x0f\x63heckpoint_json\x18\x08 \x01(\t\x12\x11\n\ttags_json\x18\t \x01(\t\x12#\n\x05\x61gent\x18\n \x01(\x0b\x32\x14.corvo.v1.AgentState\"o\n\x11\x46\x65tchBatchRequest\x12\x0e\n\x06queues\x18\x01 \x03(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\x10\n\x08hostname\x18\x03 \x01(\t\x12\x16\n\x0elease_duration\x18\x04 \x01(\x05\x12\r\n\x05\x63ount\x18\x05 \x01(\x05\"\xd3\x01\n\rFetchBatchJob\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\r\n\x05queue\x18\x02 \x01(\t\x12\x14\n\x0cpayload_json\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x05\x12\x13\n\x0bmax_retries\x18\x05 \x01(\x05\x12\x16\n\x0elease_duration\x18\x06 \x01(\x05\x12\x17\n\x0f\x63heckpoint_json\x18\x07 \x01(\t\x12\x11\n\ttags_json\x18\x08 \x01(\t\x12#\n\x05\x61gent\x18\t \x01(\x0b\x32\x14.corvo.v1.AgentState\";\n\x12\x46\x65tchBatchResponse\x12%\n\x04jobs\x18\x01 \x03(\x0b\x32\x17.corvo.v1.FetchBatchJob\"\xa7\x01\n\x0bUsageReport\x12\x14\n\x0cinput_tokens\x18\x01 \x01(\x03\x12\x15\n\routput_tokens\x18\x02 \x01(\x03\x12\x1d\n\x15\x63\x61\x63he_creation_tokens\x18\x03 \x01(\x03\x12\x19\n\x11\x63\x61\x63he_read_tokens\x18\x04 \x01(\x03\x12\r\n\x05model\x18\x05 \x01(\t\x12\x10\n\x08provider\x18\x06 \x01(\t\x12\x10\n\x08\x63ost_usd\x18\x07 \x01(\x01\"\xaf\x01\n\nAckRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\x13\n\x0bresult_json\x18\x02 \x01(\t\x12$\n\x05usage\x18\x03 \x01(\x0b\x32\x15.corvo.v1.UsageReport\x12\x17\n\x0f\x63heckpoint_json\x18\x04 \x01(\t\x12\x14\n\x0c\x61gent_status\x18\x05 \x01(\t\x12\x13\n\x0bhold_reason\x18\x06 \x01(\t\x12\x12\n\ntrace_json\x18\x07 \x01(\t\"\r\n\x0b\x41\x63kResponse\"Y\n\x0c\x41\x63kBatchItem\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\x13\n\x0bresult_json\x18\x02 \x01(\t\x12$\n\x05usage\x18\x03 \x01(\x0b\x32\x15.corvo.v1.UsageReport\"8\n\x0f\x41\x63kBatchRequest\x12%\n\x05items\x18\x01 \x03(\x0b\x32\x16.corvo.v1.AckBatchItem\"!\n\x10\x41\x63kBatchResponse\x12\r\n\x05\x61\x63ked\x18\x01 \x01(\x05\"\xe6\x01\n\x16LifecycleStreamRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12\x0e\n\x06queues\x18\x02 \x03(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x10\n\x08hostname\x18\x04 \x01(\t\x12\x16\n\x0elease_duration\x18\x05 \x01(\x05\x12\x13\n\x0b\x66\x65tch_count\x18\x06 \x01(\x05\x12$\n\x04\x61\x63ks\x18\x07 \x03(\x0b\x32\x16.corvo.v1.AckBatchItem\x12\x30\n\x08\x65nqueues\x18\x08 \x03(\x0b\x32\x1e.corvo.v1.LifecycleEnqueueItem\"a\n\x14LifecycleEnqueueItem\x12\r\n\x05queue\x18\x01 \x01(\t\x12\x14\n\x0cpayload_json\x18\x02 \x01(\t\x12$\n\x05\x61gent\x18\x03 \x01(\x0b\x32\x15.corvo.v1.AgentConfig\"V\n\x0b\x41gentConfig\x12\x16\n\x0emax_iterations\x18\x01 \x01(\x05\x12\x14\n\x0cmax_cost_usd\x18\x02 \x01(\x01\x12\x19\n\x11iteration_timeout\x18\x03 \x01(\t\"\x80\x01\n\nAgentState\x12\x16\n\x0emax_iterations\x18\x01 \x01(\x05\x12\x14\n\x0cmax_cost_usd\x18\x02 \x01(\x01\x12\x19\n\x11iteration_timeout\x18\x03 \x01(\t\x12\x11\n\titeration\x18\x04 \x01(\x05\x12\x16\n\x0etotal_cost_usd\x18\x05 \x01(\x01\"\xa1\x01\n\x17LifecycleStreamResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12%\n\x04jobs\x18\x02 \x03(\x0b\x32\x17.corvo.v1.FetchBatchJob\x12\r\n\x05\x61\x63ked\x18\x03 \x01(\x05\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x18\n\x10\x65nqueued_job_ids\x18\x05 \x03(\t\x12\x13\n\x0bleader_addr\x18\x06 \x01(\t\"?\n\x0b\x46\x61ilRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\x11\n\tbacktrace\x18\x03 \x01(\t\"o\n\x0c\x46\x61ilResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x33\n\x0fnext_attempt_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1a\n\x12\x61ttempts_remaining\x18\x03 \x01(\x05\"\x80\x01\n\x12HeartbeatJobUpdate\x12\x15\n\rprogress_json\x18\x01 \x01(\t\x12\x17\n\x0f\x63heckpoint_json\x18\x02 \x01(\t\x12$\n\x05usage\x18\x03 \x01(\x0b\x32\x15.corvo.v1.UsageReport\x12\x14\n\x0cstream_delta\x18\x04 \x01(\t\"\x91\x01\n\x10HeartbeatRequest\x12\x32\n\x04jobs\x18\x01 \x03(\x0b\x32$.corvo.v1.HeartbeatRequest.JobsEntry\x1aI\n\tJobsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.corvo.v1.HeartbeatJobUpdate:\x02\x38\x01\"&\n\x14HeartbeatJobResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\"\x95\x01\n\x11HeartbeatResponse\x12\x33\n\x04jobs\x18\x01 \x03(\x0b\x32%.corvo.v1.HeartbeatResponse.JobsEntry\x1aK\n\tJobsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.corvo.v1.HeartbeatJobResponse:\x02\x38\x01\x32\xb2\x04\n\rWorkerService\x12@\n\x07\x45nqueue\x12\x18.corvo.v1.EnqueueRequest\x1a\x19.corvo.v1.EnqueueResponse\"\x00\x12:\n\x05\x46\x65tch\x12\x16.corvo.v1.FetchRequest\x1a\x17.corvo.v1.FetchResponse\"\x00\x12I\n\nFetchBatch\x12\x1b.corvo.v1.FetchBatchRequest\x1a\x1c.corvo.v1.FetchBatchResponse\"\x00\x12\x34\n\x03\x41\x63k\x12\x14.corvo.v1.AckRequest\x1a\x15.corvo.v1.AckResponse\"\x00\x12\x43\n\x08\x41\x63kBatch\x12\x19.corvo.v1.AckBatchRequest\x1a\x1a.corvo.v1.AckBatchResponse\"\x00\x12\\\n\x0fStreamLifecycle\x12 .corvo.v1.LifecycleStreamRequest\x1a!.corvo.v1.LifecycleStreamResponse\"\x00(\x01\x30\x01\x12\x37\n\x04\x46\x61il\x12\x15.corvo.v1.FailRequest\x1a\x16.corvo.v1.FailResponse\"\x00\x12\x46\n\tHeartbeat\x12\x1a.corvo.v1.HeartbeatRequest\x1a\x1b.corvo.v1.HeartbeatResponse\"\x00\x62\x06proto3')
29
+
30
+ _globals = globals()
31
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
32
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'corvo.v1.worker_pb2', _globals)
33
+ if not _descriptor._USE_C_DESCRIPTORS:
34
+ DESCRIPTOR._loaded_options = None
35
+ _globals['_HEARTBEATREQUEST_JOBSENTRY']._loaded_options = None
36
+ _globals['_HEARTBEATREQUEST_JOBSENTRY']._serialized_options = b'8\001'
37
+ _globals['_HEARTBEATRESPONSE_JOBSENTRY']._loaded_options = None
38
+ _globals['_HEARTBEATRESPONSE_JOBSENTRY']._serialized_options = b'8\001'
39
+ _globals['_ENQUEUEREQUEST']._serialized_start=68
40
+ _globals['_ENQUEUEREQUEST']._serialized_end=159
41
+ _globals['_ENQUEUERESPONSE']._serialized_start=161
42
+ _globals['_ENQUEUERESPONSE']._serialized_end=235
43
+ _globals['_FETCHREQUEST']._serialized_start=237
44
+ _globals['_FETCHREQUEST']._serialized_end=328
45
+ _globals['_FETCHRESPONSE']._serialized_start=331
46
+ _globals['_FETCHRESPONSE']._serialized_end=557
47
+ _globals['_FETCHBATCHREQUEST']._serialized_start=559
48
+ _globals['_FETCHBATCHREQUEST']._serialized_end=670
49
+ _globals['_FETCHBATCHJOB']._serialized_start=673
50
+ _globals['_FETCHBATCHJOB']._serialized_end=884
51
+ _globals['_FETCHBATCHRESPONSE']._serialized_start=886
52
+ _globals['_FETCHBATCHRESPONSE']._serialized_end=945
53
+ _globals['_USAGEREPORT']._serialized_start=948
54
+ _globals['_USAGEREPORT']._serialized_end=1115
55
+ _globals['_ACKREQUEST']._serialized_start=1118
56
+ _globals['_ACKREQUEST']._serialized_end=1293
57
+ _globals['_ACKRESPONSE']._serialized_start=1295
58
+ _globals['_ACKRESPONSE']._serialized_end=1308
59
+ _globals['_ACKBATCHITEM']._serialized_start=1310
60
+ _globals['_ACKBATCHITEM']._serialized_end=1399
61
+ _globals['_ACKBATCHREQUEST']._serialized_start=1401
62
+ _globals['_ACKBATCHREQUEST']._serialized_end=1457
63
+ _globals['_ACKBATCHRESPONSE']._serialized_start=1459
64
+ _globals['_ACKBATCHRESPONSE']._serialized_end=1492
65
+ _globals['_LIFECYCLESTREAMREQUEST']._serialized_start=1495
66
+ _globals['_LIFECYCLESTREAMREQUEST']._serialized_end=1725
67
+ _globals['_LIFECYCLEENQUEUEITEM']._serialized_start=1727
68
+ _globals['_LIFECYCLEENQUEUEITEM']._serialized_end=1824
69
+ _globals['_AGENTCONFIG']._serialized_start=1826
70
+ _globals['_AGENTCONFIG']._serialized_end=1912
71
+ _globals['_AGENTSTATE']._serialized_start=1915
72
+ _globals['_AGENTSTATE']._serialized_end=2043
73
+ _globals['_LIFECYCLESTREAMRESPONSE']._serialized_start=2046
74
+ _globals['_LIFECYCLESTREAMRESPONSE']._serialized_end=2207
75
+ _globals['_FAILREQUEST']._serialized_start=2209
76
+ _globals['_FAILREQUEST']._serialized_end=2272
77
+ _globals['_FAILRESPONSE']._serialized_start=2274
78
+ _globals['_FAILRESPONSE']._serialized_end=2385
79
+ _globals['_HEARTBEATJOBUPDATE']._serialized_start=2388
80
+ _globals['_HEARTBEATJOBUPDATE']._serialized_end=2516
81
+ _globals['_HEARTBEATREQUEST']._serialized_start=2519
82
+ _globals['_HEARTBEATREQUEST']._serialized_end=2664
83
+ _globals['_HEARTBEATREQUEST_JOBSENTRY']._serialized_start=2591
84
+ _globals['_HEARTBEATREQUEST_JOBSENTRY']._serialized_end=2664
85
+ _globals['_HEARTBEATJOBRESPONSE']._serialized_start=2666
86
+ _globals['_HEARTBEATJOBRESPONSE']._serialized_end=2704
87
+ _globals['_HEARTBEATRESPONSE']._serialized_start=2707
88
+ _globals['_HEARTBEATRESPONSE']._serialized_end=2856
89
+ _globals['_HEARTBEATRESPONSE_JOBSENTRY']._serialized_start=2781
90
+ _globals['_HEARTBEATRESPONSE_JOBSENTRY']._serialized_end=2856
91
+ _globals['_WORKERSERVICE']._serialized_start=2859
92
+ _globals['_WORKERSERVICE']._serialized_end=3421
93
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,304 @@
1
+ import datetime
2
+
3
+ from google.protobuf import timestamp_pb2 as _timestamp_pb2
4
+ from google.protobuf.internal import containers as _containers
5
+ from google.protobuf import descriptor as _descriptor
6
+ from google.protobuf import message as _message
7
+ from collections.abc import Iterable as _Iterable, Mapping as _Mapping
8
+ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
9
+
10
+ DESCRIPTOR: _descriptor.FileDescriptor
11
+
12
+ class EnqueueRequest(_message.Message):
13
+ __slots__ = ("queue", "payload_json", "agent")
14
+ QUEUE_FIELD_NUMBER: _ClassVar[int]
15
+ PAYLOAD_JSON_FIELD_NUMBER: _ClassVar[int]
16
+ AGENT_FIELD_NUMBER: _ClassVar[int]
17
+ queue: str
18
+ payload_json: str
19
+ agent: AgentConfig
20
+ def __init__(self, queue: _Optional[str] = ..., payload_json: _Optional[str] = ..., agent: _Optional[_Union[AgentConfig, _Mapping]] = ...) -> None: ...
21
+
22
+ class EnqueueResponse(_message.Message):
23
+ __slots__ = ("job_id", "status", "unique_existing")
24
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
25
+ STATUS_FIELD_NUMBER: _ClassVar[int]
26
+ UNIQUE_EXISTING_FIELD_NUMBER: _ClassVar[int]
27
+ job_id: str
28
+ status: str
29
+ unique_existing: bool
30
+ def __init__(self, job_id: _Optional[str] = ..., status: _Optional[str] = ..., unique_existing: bool = ...) -> None: ...
31
+
32
+ class FetchRequest(_message.Message):
33
+ __slots__ = ("queues", "worker_id", "hostname", "lease_duration")
34
+ QUEUES_FIELD_NUMBER: _ClassVar[int]
35
+ WORKER_ID_FIELD_NUMBER: _ClassVar[int]
36
+ HOSTNAME_FIELD_NUMBER: _ClassVar[int]
37
+ LEASE_DURATION_FIELD_NUMBER: _ClassVar[int]
38
+ queues: _containers.RepeatedScalarFieldContainer[str]
39
+ worker_id: str
40
+ hostname: str
41
+ lease_duration: int
42
+ def __init__(self, queues: _Optional[_Iterable[str]] = ..., worker_id: _Optional[str] = ..., hostname: _Optional[str] = ..., lease_duration: _Optional[int] = ...) -> None: ...
43
+
44
+ class FetchResponse(_message.Message):
45
+ __slots__ = ("found", "job_id", "queue", "payload_json", "attempt", "max_retries", "lease_duration", "checkpoint_json", "tags_json", "agent")
46
+ FOUND_FIELD_NUMBER: _ClassVar[int]
47
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
48
+ QUEUE_FIELD_NUMBER: _ClassVar[int]
49
+ PAYLOAD_JSON_FIELD_NUMBER: _ClassVar[int]
50
+ ATTEMPT_FIELD_NUMBER: _ClassVar[int]
51
+ MAX_RETRIES_FIELD_NUMBER: _ClassVar[int]
52
+ LEASE_DURATION_FIELD_NUMBER: _ClassVar[int]
53
+ CHECKPOINT_JSON_FIELD_NUMBER: _ClassVar[int]
54
+ TAGS_JSON_FIELD_NUMBER: _ClassVar[int]
55
+ AGENT_FIELD_NUMBER: _ClassVar[int]
56
+ found: bool
57
+ job_id: str
58
+ queue: str
59
+ payload_json: str
60
+ attempt: int
61
+ max_retries: int
62
+ lease_duration: int
63
+ checkpoint_json: str
64
+ tags_json: str
65
+ agent: AgentState
66
+ def __init__(self, found: bool = ..., job_id: _Optional[str] = ..., queue: _Optional[str] = ..., payload_json: _Optional[str] = ..., attempt: _Optional[int] = ..., max_retries: _Optional[int] = ..., lease_duration: _Optional[int] = ..., checkpoint_json: _Optional[str] = ..., tags_json: _Optional[str] = ..., agent: _Optional[_Union[AgentState, _Mapping]] = ...) -> None: ...
67
+
68
+ class FetchBatchRequest(_message.Message):
69
+ __slots__ = ("queues", "worker_id", "hostname", "lease_duration", "count")
70
+ QUEUES_FIELD_NUMBER: _ClassVar[int]
71
+ WORKER_ID_FIELD_NUMBER: _ClassVar[int]
72
+ HOSTNAME_FIELD_NUMBER: _ClassVar[int]
73
+ LEASE_DURATION_FIELD_NUMBER: _ClassVar[int]
74
+ COUNT_FIELD_NUMBER: _ClassVar[int]
75
+ queues: _containers.RepeatedScalarFieldContainer[str]
76
+ worker_id: str
77
+ hostname: str
78
+ lease_duration: int
79
+ count: int
80
+ def __init__(self, queues: _Optional[_Iterable[str]] = ..., worker_id: _Optional[str] = ..., hostname: _Optional[str] = ..., lease_duration: _Optional[int] = ..., count: _Optional[int] = ...) -> None: ...
81
+
82
+ class FetchBatchJob(_message.Message):
83
+ __slots__ = ("job_id", "queue", "payload_json", "attempt", "max_retries", "lease_duration", "checkpoint_json", "tags_json", "agent")
84
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
85
+ QUEUE_FIELD_NUMBER: _ClassVar[int]
86
+ PAYLOAD_JSON_FIELD_NUMBER: _ClassVar[int]
87
+ ATTEMPT_FIELD_NUMBER: _ClassVar[int]
88
+ MAX_RETRIES_FIELD_NUMBER: _ClassVar[int]
89
+ LEASE_DURATION_FIELD_NUMBER: _ClassVar[int]
90
+ CHECKPOINT_JSON_FIELD_NUMBER: _ClassVar[int]
91
+ TAGS_JSON_FIELD_NUMBER: _ClassVar[int]
92
+ AGENT_FIELD_NUMBER: _ClassVar[int]
93
+ job_id: str
94
+ queue: str
95
+ payload_json: str
96
+ attempt: int
97
+ max_retries: int
98
+ lease_duration: int
99
+ checkpoint_json: str
100
+ tags_json: str
101
+ agent: AgentState
102
+ def __init__(self, job_id: _Optional[str] = ..., queue: _Optional[str] = ..., payload_json: _Optional[str] = ..., attempt: _Optional[int] = ..., max_retries: _Optional[int] = ..., lease_duration: _Optional[int] = ..., checkpoint_json: _Optional[str] = ..., tags_json: _Optional[str] = ..., agent: _Optional[_Union[AgentState, _Mapping]] = ...) -> None: ...
103
+
104
+ class FetchBatchResponse(_message.Message):
105
+ __slots__ = ("jobs",)
106
+ JOBS_FIELD_NUMBER: _ClassVar[int]
107
+ jobs: _containers.RepeatedCompositeFieldContainer[FetchBatchJob]
108
+ def __init__(self, jobs: _Optional[_Iterable[_Union[FetchBatchJob, _Mapping]]] = ...) -> None: ...
109
+
110
+ class UsageReport(_message.Message):
111
+ __slots__ = ("input_tokens", "output_tokens", "cache_creation_tokens", "cache_read_tokens", "model", "provider", "cost_usd")
112
+ INPUT_TOKENS_FIELD_NUMBER: _ClassVar[int]
113
+ OUTPUT_TOKENS_FIELD_NUMBER: _ClassVar[int]
114
+ CACHE_CREATION_TOKENS_FIELD_NUMBER: _ClassVar[int]
115
+ CACHE_READ_TOKENS_FIELD_NUMBER: _ClassVar[int]
116
+ MODEL_FIELD_NUMBER: _ClassVar[int]
117
+ PROVIDER_FIELD_NUMBER: _ClassVar[int]
118
+ COST_USD_FIELD_NUMBER: _ClassVar[int]
119
+ input_tokens: int
120
+ output_tokens: int
121
+ cache_creation_tokens: int
122
+ cache_read_tokens: int
123
+ model: str
124
+ provider: str
125
+ cost_usd: float
126
+ def __init__(self, input_tokens: _Optional[int] = ..., output_tokens: _Optional[int] = ..., cache_creation_tokens: _Optional[int] = ..., cache_read_tokens: _Optional[int] = ..., model: _Optional[str] = ..., provider: _Optional[str] = ..., cost_usd: _Optional[float] = ...) -> None: ...
127
+
128
+ class AckRequest(_message.Message):
129
+ __slots__ = ("job_id", "result_json", "usage", "checkpoint_json", "agent_status", "hold_reason", "trace_json")
130
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
131
+ RESULT_JSON_FIELD_NUMBER: _ClassVar[int]
132
+ USAGE_FIELD_NUMBER: _ClassVar[int]
133
+ CHECKPOINT_JSON_FIELD_NUMBER: _ClassVar[int]
134
+ AGENT_STATUS_FIELD_NUMBER: _ClassVar[int]
135
+ HOLD_REASON_FIELD_NUMBER: _ClassVar[int]
136
+ TRACE_JSON_FIELD_NUMBER: _ClassVar[int]
137
+ job_id: str
138
+ result_json: str
139
+ usage: UsageReport
140
+ checkpoint_json: str
141
+ agent_status: str
142
+ hold_reason: str
143
+ trace_json: str
144
+ def __init__(self, job_id: _Optional[str] = ..., result_json: _Optional[str] = ..., usage: _Optional[_Union[UsageReport, _Mapping]] = ..., checkpoint_json: _Optional[str] = ..., agent_status: _Optional[str] = ..., hold_reason: _Optional[str] = ..., trace_json: _Optional[str] = ...) -> None: ...
145
+
146
+ class AckResponse(_message.Message):
147
+ __slots__ = ()
148
+ def __init__(self) -> None: ...
149
+
150
+ class AckBatchItem(_message.Message):
151
+ __slots__ = ("job_id", "result_json", "usage")
152
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
153
+ RESULT_JSON_FIELD_NUMBER: _ClassVar[int]
154
+ USAGE_FIELD_NUMBER: _ClassVar[int]
155
+ job_id: str
156
+ result_json: str
157
+ usage: UsageReport
158
+ def __init__(self, job_id: _Optional[str] = ..., result_json: _Optional[str] = ..., usage: _Optional[_Union[UsageReport, _Mapping]] = ...) -> None: ...
159
+
160
+ class AckBatchRequest(_message.Message):
161
+ __slots__ = ("items",)
162
+ ITEMS_FIELD_NUMBER: _ClassVar[int]
163
+ items: _containers.RepeatedCompositeFieldContainer[AckBatchItem]
164
+ def __init__(self, items: _Optional[_Iterable[_Union[AckBatchItem, _Mapping]]] = ...) -> None: ...
165
+
166
+ class AckBatchResponse(_message.Message):
167
+ __slots__ = ("acked",)
168
+ ACKED_FIELD_NUMBER: _ClassVar[int]
169
+ acked: int
170
+ def __init__(self, acked: _Optional[int] = ...) -> None: ...
171
+
172
+ class LifecycleStreamRequest(_message.Message):
173
+ __slots__ = ("request_id", "queues", "worker_id", "hostname", "lease_duration", "fetch_count", "acks", "enqueues")
174
+ REQUEST_ID_FIELD_NUMBER: _ClassVar[int]
175
+ QUEUES_FIELD_NUMBER: _ClassVar[int]
176
+ WORKER_ID_FIELD_NUMBER: _ClassVar[int]
177
+ HOSTNAME_FIELD_NUMBER: _ClassVar[int]
178
+ LEASE_DURATION_FIELD_NUMBER: _ClassVar[int]
179
+ FETCH_COUNT_FIELD_NUMBER: _ClassVar[int]
180
+ ACKS_FIELD_NUMBER: _ClassVar[int]
181
+ ENQUEUES_FIELD_NUMBER: _ClassVar[int]
182
+ request_id: int
183
+ queues: _containers.RepeatedScalarFieldContainer[str]
184
+ worker_id: str
185
+ hostname: str
186
+ lease_duration: int
187
+ fetch_count: int
188
+ acks: _containers.RepeatedCompositeFieldContainer[AckBatchItem]
189
+ enqueues: _containers.RepeatedCompositeFieldContainer[LifecycleEnqueueItem]
190
+ def __init__(self, request_id: _Optional[int] = ..., queues: _Optional[_Iterable[str]] = ..., worker_id: _Optional[str] = ..., hostname: _Optional[str] = ..., lease_duration: _Optional[int] = ..., fetch_count: _Optional[int] = ..., acks: _Optional[_Iterable[_Union[AckBatchItem, _Mapping]]] = ..., enqueues: _Optional[_Iterable[_Union[LifecycleEnqueueItem, _Mapping]]] = ...) -> None: ...
191
+
192
+ class LifecycleEnqueueItem(_message.Message):
193
+ __slots__ = ("queue", "payload_json", "agent")
194
+ QUEUE_FIELD_NUMBER: _ClassVar[int]
195
+ PAYLOAD_JSON_FIELD_NUMBER: _ClassVar[int]
196
+ AGENT_FIELD_NUMBER: _ClassVar[int]
197
+ queue: str
198
+ payload_json: str
199
+ agent: AgentConfig
200
+ def __init__(self, queue: _Optional[str] = ..., payload_json: _Optional[str] = ..., agent: _Optional[_Union[AgentConfig, _Mapping]] = ...) -> None: ...
201
+
202
+ class AgentConfig(_message.Message):
203
+ __slots__ = ("max_iterations", "max_cost_usd", "iteration_timeout")
204
+ MAX_ITERATIONS_FIELD_NUMBER: _ClassVar[int]
205
+ MAX_COST_USD_FIELD_NUMBER: _ClassVar[int]
206
+ ITERATION_TIMEOUT_FIELD_NUMBER: _ClassVar[int]
207
+ max_iterations: int
208
+ max_cost_usd: float
209
+ iteration_timeout: str
210
+ def __init__(self, max_iterations: _Optional[int] = ..., max_cost_usd: _Optional[float] = ..., iteration_timeout: _Optional[str] = ...) -> None: ...
211
+
212
+ class AgentState(_message.Message):
213
+ __slots__ = ("max_iterations", "max_cost_usd", "iteration_timeout", "iteration", "total_cost_usd")
214
+ MAX_ITERATIONS_FIELD_NUMBER: _ClassVar[int]
215
+ MAX_COST_USD_FIELD_NUMBER: _ClassVar[int]
216
+ ITERATION_TIMEOUT_FIELD_NUMBER: _ClassVar[int]
217
+ ITERATION_FIELD_NUMBER: _ClassVar[int]
218
+ TOTAL_COST_USD_FIELD_NUMBER: _ClassVar[int]
219
+ max_iterations: int
220
+ max_cost_usd: float
221
+ iteration_timeout: str
222
+ iteration: int
223
+ total_cost_usd: float
224
+ def __init__(self, max_iterations: _Optional[int] = ..., max_cost_usd: _Optional[float] = ..., iteration_timeout: _Optional[str] = ..., iteration: _Optional[int] = ..., total_cost_usd: _Optional[float] = ...) -> None: ...
225
+
226
+ class LifecycleStreamResponse(_message.Message):
227
+ __slots__ = ("request_id", "jobs", "acked", "error", "enqueued_job_ids", "leader_addr")
228
+ REQUEST_ID_FIELD_NUMBER: _ClassVar[int]
229
+ JOBS_FIELD_NUMBER: _ClassVar[int]
230
+ ACKED_FIELD_NUMBER: _ClassVar[int]
231
+ ERROR_FIELD_NUMBER: _ClassVar[int]
232
+ ENQUEUED_JOB_IDS_FIELD_NUMBER: _ClassVar[int]
233
+ LEADER_ADDR_FIELD_NUMBER: _ClassVar[int]
234
+ request_id: int
235
+ jobs: _containers.RepeatedCompositeFieldContainer[FetchBatchJob]
236
+ acked: int
237
+ error: str
238
+ enqueued_job_ids: _containers.RepeatedScalarFieldContainer[str]
239
+ leader_addr: str
240
+ def __init__(self, request_id: _Optional[int] = ..., jobs: _Optional[_Iterable[_Union[FetchBatchJob, _Mapping]]] = ..., acked: _Optional[int] = ..., error: _Optional[str] = ..., enqueued_job_ids: _Optional[_Iterable[str]] = ..., leader_addr: _Optional[str] = ...) -> None: ...
241
+
242
+ class FailRequest(_message.Message):
243
+ __slots__ = ("job_id", "error", "backtrace")
244
+ JOB_ID_FIELD_NUMBER: _ClassVar[int]
245
+ ERROR_FIELD_NUMBER: _ClassVar[int]
246
+ BACKTRACE_FIELD_NUMBER: _ClassVar[int]
247
+ job_id: str
248
+ error: str
249
+ backtrace: str
250
+ def __init__(self, job_id: _Optional[str] = ..., error: _Optional[str] = ..., backtrace: _Optional[str] = ...) -> None: ...
251
+
252
+ class FailResponse(_message.Message):
253
+ __slots__ = ("status", "next_attempt_at", "attempts_remaining")
254
+ STATUS_FIELD_NUMBER: _ClassVar[int]
255
+ NEXT_ATTEMPT_AT_FIELD_NUMBER: _ClassVar[int]
256
+ ATTEMPTS_REMAINING_FIELD_NUMBER: _ClassVar[int]
257
+ status: str
258
+ next_attempt_at: _timestamp_pb2.Timestamp
259
+ attempts_remaining: int
260
+ def __init__(self, status: _Optional[str] = ..., next_attempt_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., attempts_remaining: _Optional[int] = ...) -> None: ...
261
+
262
+ class HeartbeatJobUpdate(_message.Message):
263
+ __slots__ = ("progress_json", "checkpoint_json", "usage", "stream_delta")
264
+ PROGRESS_JSON_FIELD_NUMBER: _ClassVar[int]
265
+ CHECKPOINT_JSON_FIELD_NUMBER: _ClassVar[int]
266
+ USAGE_FIELD_NUMBER: _ClassVar[int]
267
+ STREAM_DELTA_FIELD_NUMBER: _ClassVar[int]
268
+ progress_json: str
269
+ checkpoint_json: str
270
+ usage: UsageReport
271
+ stream_delta: str
272
+ def __init__(self, progress_json: _Optional[str] = ..., checkpoint_json: _Optional[str] = ..., usage: _Optional[_Union[UsageReport, _Mapping]] = ..., stream_delta: _Optional[str] = ...) -> None: ...
273
+
274
+ class HeartbeatRequest(_message.Message):
275
+ __slots__ = ("jobs",)
276
+ class JobsEntry(_message.Message):
277
+ __slots__ = ("key", "value")
278
+ KEY_FIELD_NUMBER: _ClassVar[int]
279
+ VALUE_FIELD_NUMBER: _ClassVar[int]
280
+ key: str
281
+ value: HeartbeatJobUpdate
282
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[HeartbeatJobUpdate, _Mapping]] = ...) -> None: ...
283
+ JOBS_FIELD_NUMBER: _ClassVar[int]
284
+ jobs: _containers.MessageMap[str, HeartbeatJobUpdate]
285
+ def __init__(self, jobs: _Optional[_Mapping[str, HeartbeatJobUpdate]] = ...) -> None: ...
286
+
287
+ class HeartbeatJobResponse(_message.Message):
288
+ __slots__ = ("status",)
289
+ STATUS_FIELD_NUMBER: _ClassVar[int]
290
+ status: str
291
+ def __init__(self, status: _Optional[str] = ...) -> None: ...
292
+
293
+ class HeartbeatResponse(_message.Message):
294
+ __slots__ = ("jobs",)
295
+ class JobsEntry(_message.Message):
296
+ __slots__ = ("key", "value")
297
+ KEY_FIELD_NUMBER: _ClassVar[int]
298
+ VALUE_FIELD_NUMBER: _ClassVar[int]
299
+ key: str
300
+ value: HeartbeatJobResponse
301
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[HeartbeatJobResponse, _Mapping]] = ...) -> None: ...
302
+ JOBS_FIELD_NUMBER: _ClassVar[int]
303
+ jobs: _containers.MessageMap[str, HeartbeatJobResponse]
304
+ def __init__(self, jobs: _Optional[_Mapping[str, HeartbeatJobResponse]] = ...) -> None: ...