trytilde 3.0.1__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.
- tilde/__init__.py +114 -0
- tilde/__main__.py +9 -0
- tilde/_cancel.py +50 -0
- tilde/_inference.py +106 -0
- tilde/_invocation.py +26 -0
- tilde/_otlp.py +35 -0
- tilde/_tools.py +182 -0
- tilde/_transport.py +28 -0
- tilde/agent_event_ingress/__init__.py +0 -0
- tilde/agent_event_ingress/v1/__init__.py +0 -0
- tilde/agent_event_ingress/v1/sidecars_connect.py +748 -0
- tilde/agent_event_ingress/v1/sidecars_pb2.py +128 -0
- tilde/agent_event_ingress/v1/sidecars_pb2.pyi +471 -0
- tilde/agent_host/__init__.py +0 -0
- tilde/agent_host/v1/__init__.py +0 -0
- tilde/agent_host/v1/agent_pb2.py +43 -0
- tilde/agent_host/v1/agent_pb2.pyi +56 -0
- tilde/channels.py +212 -0
- tilde/chat_proxy.py +295 -0
- tilde/clients.py +127 -0
- tilde/context.py +1006 -0
- tilde/deploy.py +420 -0
- tilde/discovery.py +127 -0
- tilde/fastapi.py +69 -0
- tilde/host.py +481 -0
- tilde/logging.py +213 -0
- tilde/management/__init__.py +0 -0
- tilde/management/v1/__init__.py +0 -0
- tilde/management/v1/access_connect.py +465 -0
- tilde/management/v1/access_pb2.py +57 -0
- tilde/management/v1/access_pb2.pyi +102 -0
- tilde/management/v1/agents_connect.py +668 -0
- tilde/management/v1/agents_pb2.py +73 -0
- tilde/management/v1/agents_pb2.pyi +132 -0
- tilde/management/v1/connections_connect.py +806 -0
- tilde/management/v1/connections_pb2.py +93 -0
- tilde/management/v1/connections_pb2.pyi +186 -0
- tilde/management/v1/deployments_connect.py +919 -0
- tilde/management/v1/deployments_pb2.py +109 -0
- tilde/management/v1/deployments_pb2.pyi +306 -0
- tilde/management/v1/identities_connect.py +660 -0
- tilde/management/v1/identities_pb2.py +74 -0
- tilde/management/v1/identities_pb2.pyi +167 -0
- tilde/management/v1/inference_connect.py +424 -0
- tilde/management/v1/inference_pb2.py +69 -0
- tilde/management/v1/inference_pb2.pyi +158 -0
- tilde/management/v1/logs_connect.py +278 -0
- tilde/management/v1/logs_pb2.py +56 -0
- tilde/management/v1/logs_pb2.pyi +123 -0
- tilde/management/v1/prompts_connect.py +290 -0
- tilde/management/v1/prompts_pb2.py +49 -0
- tilde/management/v1/prompts_pb2.pyi +36 -0
- tilde/management/v1/skills_connect.py +1815 -0
- tilde/management/v1/skills_pb2.py +147 -0
- tilde/management/v1/skills_pb2.pyi +324 -0
- tilde/management/v1/tilde_chat_connect.py +290 -0
- tilde/management/v1/tilde_chat_pb2.py +48 -0
- tilde/management/v1/tilde_chat_pb2.pyi +29 -0
- tilde/management/v1/tools_connect.py +1416 -0
- tilde/management/v1/tools_pb2.py +135 -0
- tilde/management/v1/tools_pb2.pyi +341 -0
- tilde/management/v1/tracing_connect.py +513 -0
- tilde/management/v1/tracing_pb2.py +78 -0
- tilde/management/v1/tracing_pb2.pyi +231 -0
- tilde/messages.py +129 -0
- tilde/prompts.py +130 -0
- tilde/provider/__init__.py +0 -0
- tilde/provider/tilde/__init__.py +0 -0
- tilde/provider/tilde/v1/__init__.py +0 -0
- tilde/provider/tilde/v1/chat_connect.py +2090 -0
- tilde/provider/tilde/v1/chat_pb2.py +165 -0
- tilde/provider/tilde/v1/chat_pb2.pyi +478 -0
- tilde/provider/v1/__init__.py +0 -0
- tilde/provider/v1/connections_connect.py +205 -0
- tilde/provider/v1/connections_pb2.py +49 -0
- tilde/provider/v1/connections_pb2.pyi +58 -0
- tilde/run/__init__.py +0 -0
- tilde/run/v1/__init__.py +0 -0
- tilde/run/v1/run_connect.py +367 -0
- tilde/run/v1/run_pb2.py +57 -0
- tilde/run/v1/run_pb2.pyi +80 -0
- tilde/runtime/__init__.py +0 -0
- tilde/runtime/v1/__init__.py +0 -0
- tilde/runtime/v1/agents_connect.py +473 -0
- tilde/runtime/v1/agents_pb2.py +61 -0
- tilde/runtime/v1/agents_pb2.pyi +86 -0
- tilde/runtime/v1/cache_pb2.py +38 -0
- tilde/runtime/v1/cache_pb2.pyi +13 -0
- tilde/runtime/v1/chat_connect.py +1460 -0
- tilde/runtime/v1/chat_pb2.py +130 -0
- tilde/runtime/v1/chat_pb2.pyi +275 -0
- tilde/runtime/v1/controls_connect.py +282 -0
- tilde/runtime/v1/controls_pb2.py +47 -0
- tilde/runtime/v1/controls_pb2.pyi +49 -0
- tilde/runtime/v1/prompts_connect.py +225 -0
- tilde/runtime/v1/prompts_pb2.py +43 -0
- tilde/runtime/v1/prompts_pb2.pyi +20 -0
- tilde/runtime/v1/skills_connect.py +655 -0
- tilde/runtime/v1/skills_pb2.py +77 -0
- tilde/runtime/v1/skills_pb2.pyi +154 -0
- tilde/setup/__init__.py +0 -0
- tilde/setup/v1/__init__.py +0 -0
- tilde/setup/v1/connections_connect.py +595 -0
- tilde/setup/v1/connections_pb2.py +101 -0
- tilde/setup/v1/connections_pb2.pyi +232 -0
- tilde/setup/v1/identity_verification_connect.py +282 -0
- tilde/setup/v1/identity_verification_pb2.py +49 -0
- tilde/setup/v1/identity_verification_pb2.pyi +35 -0
- tilde/skills.py +383 -0
- tilde/tool_host/v1/tool_host_connect.py +314 -0
- tilde/tool_host/v1/tool_host_pb2.py +66 -0
- tilde/tool_host/v1/tool_host_pb2.pyi +115 -0
- tilde/tool_hosts.py +515 -0
- tilde/tracing.py +147 -0
- tilde/types/__init__.py +0 -0
- tilde/types/v1/__init__.py +0 -0
- tilde/types/v1/access_pb2.py +47 -0
- tilde/types/v1/access_pb2.pyi +123 -0
- tilde/types/v1/agent_pb2.py +53 -0
- tilde/types/v1/agent_pb2.pyi +151 -0
- tilde/types/v1/chat_pb2.py +81 -0
- tilde/types/v1/chat_pb2.pyi +316 -0
- tilde/types/v1/connections_pb2.py +79 -0
- tilde/types/v1/connections_pb2.pyi +268 -0
- tilde/types/v1/deployment_pb2.py +51 -0
- tilde/types/v1/deployment_pb2.pyi +129 -0
- tilde/types/v1/prompt_pb2.py +45 -0
- tilde/types/v1/prompt_pb2.pyi +96 -0
- tilde/types/v1/runtime_event_pb2.py +62 -0
- tilde/types/v1/runtime_event_pb2.pyi +243 -0
- tilde/types/v1/skill_pb2.py +49 -0
- tilde/types/v1/skill_pb2.pyi +150 -0
- trytilde-3.0.1.dist-info/METADATA +325 -0
- trytilde-3.0.1.dist-info/RECORD +135 -0
- trytilde-3.0.1.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,748 @@
|
|
|
1
|
+
# Generated from tilde/agent_event_ingress/v1/sidecars.proto. DO NOT EDIT.
|
|
2
|
+
# Generated by protoc-gen-connectrpc-py v0.12.1 with parameter "protobuf=google".
|
|
3
|
+
# ruff: noqa: PGH004
|
|
4
|
+
# ruff: noqa
|
|
5
|
+
# fmt: off
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from typing import Protocol, TYPE_CHECKING
|
|
10
|
+
|
|
11
|
+
from connectrpc.client import ConnectClient, ConnectClientSync
|
|
12
|
+
from connectrpc.code import Code
|
|
13
|
+
from connectrpc.compat import google_protobuf_binary_codec, google_protobuf_codecs
|
|
14
|
+
from connectrpc.compression.gzip import GzipCompression
|
|
15
|
+
from connectrpc.errors import ConnectError
|
|
16
|
+
from connectrpc.method import IdempotencyLevel, MethodInfo
|
|
17
|
+
from connectrpc.protocol import ProtocolType
|
|
18
|
+
from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, DEFAULT_READ_MAX_BYTES, Endpoint, EndpointSync
|
|
19
|
+
from pyqwest import Client, SyncClient
|
|
20
|
+
|
|
21
|
+
from .sidecars_pb2 import DownloadAttachmentRequest, DownloadAttachmentResponse, ForwardRequest, ForwardResponse, HydrateRequest, HydrateResponse, PublishRequest, PublishResponse, RelayRequest, RelayResponse, ResolveParticipantRequest, ResolveParticipantResponse, UploadAttachmentRequest, UploadAttachmentResponse, WatchRequest, WatchResponse
|
|
22
|
+
|
|
23
|
+
if TYPE_CHECKING:
|
|
24
|
+
from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping
|
|
25
|
+
|
|
26
|
+
from connectrpc.codec import Codec
|
|
27
|
+
from connectrpc.compression import Compression
|
|
28
|
+
from connectrpc.interceptor import Interceptor, InterceptorSync
|
|
29
|
+
from connectrpc.request import Headers, RequestContext
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
_DEFAULT_CODECS = google_protobuf_codecs()
|
|
34
|
+
_PROTO_BINARY_CODEC = google_protobuf_binary_codec()
|
|
35
|
+
_GZIP_COMPRESSION = GzipCompression()
|
|
36
|
+
|
|
37
|
+
class SidecarService(Protocol):
|
|
38
|
+
"""
|
|
39
|
+
Sidecars dial the gateway; every call authenticates one agent deployment token.
|
|
40
|
+
The gateway never opens a connection to a sidecar. Postgres is the record; a
|
|
41
|
+
replica is a cache plus a write-behind queue plus the executor for the threads
|
|
42
|
+
it holds a lease on.
|
|
43
|
+
"""
|
|
44
|
+
def watch(self, request: WatchRequest, ctx: RequestContext[WatchRequest, WatchResponse], /) -> AsyncIterator[WatchResponse]:
|
|
45
|
+
"""
|
|
46
|
+
Held open for the life of a replica: a snapshot first, then configuration,
|
|
47
|
+
lease changes and directives as they change.
|
|
48
|
+
"""
|
|
49
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
50
|
+
|
|
51
|
+
async def publish(self, request: PublishRequest, ctx: RequestContext[PublishRequest, PublishResponse], /) -> PublishResponse:
|
|
52
|
+
"""
|
|
53
|
+
Heartbeats, typed events, directive results, lease releases and telemetry, in order.
|
|
54
|
+
"""
|
|
55
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
56
|
+
|
|
57
|
+
async def hydrate(self, request: HydrateRequest, ctx: RequestContext[HydrateRequest, HydrateResponse], /) -> HydrateResponse:
|
|
58
|
+
"""
|
|
59
|
+
Conversation state from the projection, taking the thread lease in the same call when asked.
|
|
60
|
+
"""
|
|
61
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
62
|
+
|
|
63
|
+
async def forward(self, request: ForwardRequest, ctx: RequestContext[ForwardRequest, ForwardResponse], /) -> ForwardResponse:
|
|
64
|
+
"""
|
|
65
|
+
Run one ingress call on a live replica and relay its answer.
|
|
66
|
+
"""
|
|
67
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
68
|
+
|
|
69
|
+
async def upload_attachment(self, request: UploadAttachmentRequest, ctx: RequestContext[UploadAttachmentRequest, UploadAttachmentResponse], /) -> UploadAttachmentResponse:
|
|
70
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
71
|
+
|
|
72
|
+
async def download_attachment(self, request: DownloadAttachmentRequest, ctx: RequestContext[DownloadAttachmentRequest, DownloadAttachmentResponse], /) -> DownloadAttachmentResponse:
|
|
73
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
74
|
+
|
|
75
|
+
async def resolve_participant(self, request: ResolveParticipantRequest, ctx: RequestContext[ResolveParticipantRequest, ResolveParticipantResponse], /) -> ResolveParticipantResponse:
|
|
76
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
77
|
+
|
|
78
|
+
async def relay(self, request: RelayRequest, ctx: RequestContext[RelayRequest, RelayResponse], /) -> RelayResponse:
|
|
79
|
+
"""
|
|
80
|
+
Registry RPCs from the agent process, re-verified at the gateway.
|
|
81
|
+
"""
|
|
82
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class SidecarServiceASGIApplication(ConnectASGIApplication[SidecarService]):
|
|
86
|
+
def __init__(
|
|
87
|
+
self,
|
|
88
|
+
service: SidecarService | AsyncGenerator[SidecarService],
|
|
89
|
+
*,
|
|
90
|
+
interceptors: Iterable[Interceptor] = (),
|
|
91
|
+
read_max_bytes: int | None = DEFAULT_READ_MAX_BYTES,
|
|
92
|
+
compressions: Iterable[Compression] | None = None,
|
|
93
|
+
codecs: Iterable[Codec] | None = _DEFAULT_CODECS,
|
|
94
|
+
) -> None:
|
|
95
|
+
super().__init__(
|
|
96
|
+
service=service,
|
|
97
|
+
endpoints=lambda svc: {
|
|
98
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Watch": Endpoint.server_stream(
|
|
99
|
+
method=MethodInfo(
|
|
100
|
+
name="Watch",
|
|
101
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
102
|
+
input=WatchRequest,
|
|
103
|
+
output=WatchResponse,
|
|
104
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
105
|
+
),
|
|
106
|
+
function=svc.watch,
|
|
107
|
+
),
|
|
108
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Publish": Endpoint.unary(
|
|
109
|
+
method=MethodInfo(
|
|
110
|
+
name="Publish",
|
|
111
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
112
|
+
input=PublishRequest,
|
|
113
|
+
output=PublishResponse,
|
|
114
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
115
|
+
),
|
|
116
|
+
function=svc.publish,
|
|
117
|
+
),
|
|
118
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Hydrate": Endpoint.unary(
|
|
119
|
+
method=MethodInfo(
|
|
120
|
+
name="Hydrate",
|
|
121
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
122
|
+
input=HydrateRequest,
|
|
123
|
+
output=HydrateResponse,
|
|
124
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
125
|
+
),
|
|
126
|
+
function=svc.hydrate,
|
|
127
|
+
),
|
|
128
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Forward": Endpoint.unary(
|
|
129
|
+
method=MethodInfo(
|
|
130
|
+
name="Forward",
|
|
131
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
132
|
+
input=ForwardRequest,
|
|
133
|
+
output=ForwardResponse,
|
|
134
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
135
|
+
),
|
|
136
|
+
function=svc.forward,
|
|
137
|
+
),
|
|
138
|
+
"/tilde.agent_event_ingress.v1.SidecarService/UploadAttachment": Endpoint.unary(
|
|
139
|
+
method=MethodInfo(
|
|
140
|
+
name="UploadAttachment",
|
|
141
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
142
|
+
input=UploadAttachmentRequest,
|
|
143
|
+
output=UploadAttachmentResponse,
|
|
144
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
145
|
+
),
|
|
146
|
+
function=svc.upload_attachment,
|
|
147
|
+
),
|
|
148
|
+
"/tilde.agent_event_ingress.v1.SidecarService/DownloadAttachment": Endpoint.unary(
|
|
149
|
+
method=MethodInfo(
|
|
150
|
+
name="DownloadAttachment",
|
|
151
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
152
|
+
input=DownloadAttachmentRequest,
|
|
153
|
+
output=DownloadAttachmentResponse,
|
|
154
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
155
|
+
),
|
|
156
|
+
function=svc.download_attachment,
|
|
157
|
+
),
|
|
158
|
+
"/tilde.agent_event_ingress.v1.SidecarService/ResolveParticipant": Endpoint.unary(
|
|
159
|
+
method=MethodInfo(
|
|
160
|
+
name="ResolveParticipant",
|
|
161
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
162
|
+
input=ResolveParticipantRequest,
|
|
163
|
+
output=ResolveParticipantResponse,
|
|
164
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
165
|
+
),
|
|
166
|
+
function=svc.resolve_participant,
|
|
167
|
+
),
|
|
168
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Relay": Endpoint.unary(
|
|
169
|
+
method=MethodInfo(
|
|
170
|
+
name="Relay",
|
|
171
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
172
|
+
input=RelayRequest,
|
|
173
|
+
output=RelayResponse,
|
|
174
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
175
|
+
),
|
|
176
|
+
function=svc.relay,
|
|
177
|
+
),
|
|
178
|
+
},
|
|
179
|
+
interceptors=interceptors,
|
|
180
|
+
read_max_bytes=read_max_bytes,
|
|
181
|
+
compressions=compressions,
|
|
182
|
+
codecs=codecs,
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
@property
|
|
186
|
+
def path(self) -> str:
|
|
187
|
+
"""Returns the URL path to mount the application to when serving multiple applications."""
|
|
188
|
+
return "/tilde.agent_event_ingress.v1.SidecarService"
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
class SidecarServiceClient(ConnectClient):
|
|
192
|
+
"""
|
|
193
|
+
Sidecars dial the gateway; every call authenticates one agent deployment token.
|
|
194
|
+
The gateway never opens a connection to a sidecar. Postgres is the record; a
|
|
195
|
+
replica is a cache plus a write-behind queue plus the executor for the threads
|
|
196
|
+
it holds a lease on.
|
|
197
|
+
"""
|
|
198
|
+
def __init__(
|
|
199
|
+
self,
|
|
200
|
+
address: str,
|
|
201
|
+
*,
|
|
202
|
+
codec: Codec | None = _PROTO_BINARY_CODEC,
|
|
203
|
+
protocol: ProtocolType = ProtocolType.CONNECT,
|
|
204
|
+
accept_compression: Iterable[Compression] | None = None,
|
|
205
|
+
send_compression: Compression | None = _GZIP_COMPRESSION,
|
|
206
|
+
timeout_ms: int | None = None,
|
|
207
|
+
read_max_bytes: int | None = None,
|
|
208
|
+
interceptors: Iterable[Interceptor] = (),
|
|
209
|
+
http_client: Client | None = None,
|
|
210
|
+
) -> None:
|
|
211
|
+
super().__init__(
|
|
212
|
+
address=address,
|
|
213
|
+
codec=codec,
|
|
214
|
+
protocol=protocol,
|
|
215
|
+
accept_compression=accept_compression,
|
|
216
|
+
send_compression=send_compression,
|
|
217
|
+
timeout_ms=timeout_ms,
|
|
218
|
+
read_max_bytes=read_max_bytes,
|
|
219
|
+
interceptors=interceptors,
|
|
220
|
+
http_client=http_client,
|
|
221
|
+
)
|
|
222
|
+
def watch(
|
|
223
|
+
self,
|
|
224
|
+
request: WatchRequest,
|
|
225
|
+
*,
|
|
226
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
227
|
+
timeout_ms: int | None = None,
|
|
228
|
+
) -> AsyncIterator[WatchResponse]:
|
|
229
|
+
"""
|
|
230
|
+
Held open for the life of a replica: a snapshot first, then configuration,
|
|
231
|
+
lease changes and directives as they change.
|
|
232
|
+
"""
|
|
233
|
+
return self.execute_server_stream(
|
|
234
|
+
request=request,
|
|
235
|
+
method=MethodInfo(
|
|
236
|
+
name="Watch",
|
|
237
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
238
|
+
input=WatchRequest,
|
|
239
|
+
output=WatchResponse,
|
|
240
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
241
|
+
),
|
|
242
|
+
headers=headers,
|
|
243
|
+
timeout_ms=timeout_ms,
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
async def publish(
|
|
247
|
+
self,
|
|
248
|
+
request: PublishRequest,
|
|
249
|
+
*,
|
|
250
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
251
|
+
timeout_ms: int | None = None,
|
|
252
|
+
) -> PublishResponse:
|
|
253
|
+
"""
|
|
254
|
+
Heartbeats, typed events, directive results, lease releases and telemetry, in order.
|
|
255
|
+
"""
|
|
256
|
+
return await self.execute_unary(
|
|
257
|
+
request=request,
|
|
258
|
+
method=MethodInfo(
|
|
259
|
+
name="Publish",
|
|
260
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
261
|
+
input=PublishRequest,
|
|
262
|
+
output=PublishResponse,
|
|
263
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
264
|
+
),
|
|
265
|
+
headers=headers,
|
|
266
|
+
timeout_ms=timeout_ms,
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
async def hydrate(
|
|
270
|
+
self,
|
|
271
|
+
request: HydrateRequest,
|
|
272
|
+
*,
|
|
273
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
274
|
+
timeout_ms: int | None = None,
|
|
275
|
+
) -> HydrateResponse:
|
|
276
|
+
"""
|
|
277
|
+
Conversation state from the projection, taking the thread lease in the same call when asked.
|
|
278
|
+
"""
|
|
279
|
+
return await self.execute_unary(
|
|
280
|
+
request=request,
|
|
281
|
+
method=MethodInfo(
|
|
282
|
+
name="Hydrate",
|
|
283
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
284
|
+
input=HydrateRequest,
|
|
285
|
+
output=HydrateResponse,
|
|
286
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
287
|
+
),
|
|
288
|
+
headers=headers,
|
|
289
|
+
timeout_ms=timeout_ms,
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
async def forward(
|
|
293
|
+
self,
|
|
294
|
+
request: ForwardRequest,
|
|
295
|
+
*,
|
|
296
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
297
|
+
timeout_ms: int | None = None,
|
|
298
|
+
) -> ForwardResponse:
|
|
299
|
+
"""
|
|
300
|
+
Run one ingress call on a live replica and relay its answer.
|
|
301
|
+
"""
|
|
302
|
+
return await self.execute_unary(
|
|
303
|
+
request=request,
|
|
304
|
+
method=MethodInfo(
|
|
305
|
+
name="Forward",
|
|
306
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
307
|
+
input=ForwardRequest,
|
|
308
|
+
output=ForwardResponse,
|
|
309
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
310
|
+
),
|
|
311
|
+
headers=headers,
|
|
312
|
+
timeout_ms=timeout_ms,
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
async def upload_attachment(
|
|
316
|
+
self,
|
|
317
|
+
request: UploadAttachmentRequest,
|
|
318
|
+
*,
|
|
319
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
320
|
+
timeout_ms: int | None = None,
|
|
321
|
+
) -> UploadAttachmentResponse:
|
|
322
|
+
return await self.execute_unary(
|
|
323
|
+
request=request,
|
|
324
|
+
method=MethodInfo(
|
|
325
|
+
name="UploadAttachment",
|
|
326
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
327
|
+
input=UploadAttachmentRequest,
|
|
328
|
+
output=UploadAttachmentResponse,
|
|
329
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
330
|
+
),
|
|
331
|
+
headers=headers,
|
|
332
|
+
timeout_ms=timeout_ms,
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
async def download_attachment(
|
|
336
|
+
self,
|
|
337
|
+
request: DownloadAttachmentRequest,
|
|
338
|
+
*,
|
|
339
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
340
|
+
timeout_ms: int | None = None,
|
|
341
|
+
) -> DownloadAttachmentResponse:
|
|
342
|
+
return await self.execute_unary(
|
|
343
|
+
request=request,
|
|
344
|
+
method=MethodInfo(
|
|
345
|
+
name="DownloadAttachment",
|
|
346
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
347
|
+
input=DownloadAttachmentRequest,
|
|
348
|
+
output=DownloadAttachmentResponse,
|
|
349
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
350
|
+
),
|
|
351
|
+
headers=headers,
|
|
352
|
+
timeout_ms=timeout_ms,
|
|
353
|
+
)
|
|
354
|
+
|
|
355
|
+
async def resolve_participant(
|
|
356
|
+
self,
|
|
357
|
+
request: ResolveParticipantRequest,
|
|
358
|
+
*,
|
|
359
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
360
|
+
timeout_ms: int | None = None,
|
|
361
|
+
) -> ResolveParticipantResponse:
|
|
362
|
+
return await self.execute_unary(
|
|
363
|
+
request=request,
|
|
364
|
+
method=MethodInfo(
|
|
365
|
+
name="ResolveParticipant",
|
|
366
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
367
|
+
input=ResolveParticipantRequest,
|
|
368
|
+
output=ResolveParticipantResponse,
|
|
369
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
370
|
+
),
|
|
371
|
+
headers=headers,
|
|
372
|
+
timeout_ms=timeout_ms,
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
async def relay(
|
|
376
|
+
self,
|
|
377
|
+
request: RelayRequest,
|
|
378
|
+
*,
|
|
379
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
380
|
+
timeout_ms: int | None = None,
|
|
381
|
+
) -> RelayResponse:
|
|
382
|
+
"""
|
|
383
|
+
Registry RPCs from the agent process, re-verified at the gateway.
|
|
384
|
+
"""
|
|
385
|
+
return await self.execute_unary(
|
|
386
|
+
request=request,
|
|
387
|
+
method=MethodInfo(
|
|
388
|
+
name="Relay",
|
|
389
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
390
|
+
input=RelayRequest,
|
|
391
|
+
output=RelayResponse,
|
|
392
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
393
|
+
),
|
|
394
|
+
headers=headers,
|
|
395
|
+
timeout_ms=timeout_ms,
|
|
396
|
+
)
|
|
397
|
+
|
|
398
|
+
class SidecarServiceSync(Protocol):
|
|
399
|
+
"""
|
|
400
|
+
Sidecars dial the gateway; every call authenticates one agent deployment token.
|
|
401
|
+
The gateway never opens a connection to a sidecar. Postgres is the record; a
|
|
402
|
+
replica is a cache plus a write-behind queue plus the executor for the threads
|
|
403
|
+
it holds a lease on.
|
|
404
|
+
"""
|
|
405
|
+
def watch(self, request: WatchRequest, ctx: RequestContext[WatchRequest, WatchResponse], /) -> Iterator[WatchResponse]:
|
|
406
|
+
"""
|
|
407
|
+
Held open for the life of a replica: a snapshot first, then configuration,
|
|
408
|
+
lease changes and directives as they change.
|
|
409
|
+
"""
|
|
410
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
411
|
+
|
|
412
|
+
def publish(self, request: PublishRequest, ctx: RequestContext[PublishRequest, PublishResponse], /) -> PublishResponse:
|
|
413
|
+
"""
|
|
414
|
+
Heartbeats, typed events, directive results, lease releases and telemetry, in order.
|
|
415
|
+
"""
|
|
416
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
417
|
+
|
|
418
|
+
def hydrate(self, request: HydrateRequest, ctx: RequestContext[HydrateRequest, HydrateResponse], /) -> HydrateResponse:
|
|
419
|
+
"""
|
|
420
|
+
Conversation state from the projection, taking the thread lease in the same call when asked.
|
|
421
|
+
"""
|
|
422
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
423
|
+
|
|
424
|
+
def forward(self, request: ForwardRequest, ctx: RequestContext[ForwardRequest, ForwardResponse], /) -> ForwardResponse:
|
|
425
|
+
"""
|
|
426
|
+
Run one ingress call on a live replica and relay its answer.
|
|
427
|
+
"""
|
|
428
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
429
|
+
|
|
430
|
+
def upload_attachment(self, request: UploadAttachmentRequest, ctx: RequestContext[UploadAttachmentRequest, UploadAttachmentResponse], /) -> UploadAttachmentResponse:
|
|
431
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
432
|
+
|
|
433
|
+
def download_attachment(self, request: DownloadAttachmentRequest, ctx: RequestContext[DownloadAttachmentRequest, DownloadAttachmentResponse], /) -> DownloadAttachmentResponse:
|
|
434
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
435
|
+
|
|
436
|
+
def resolve_participant(self, request: ResolveParticipantRequest, ctx: RequestContext[ResolveParticipantRequest, ResolveParticipantResponse], /) -> ResolveParticipantResponse:
|
|
437
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
438
|
+
|
|
439
|
+
def relay(self, request: RelayRequest, ctx: RequestContext[RelayRequest, RelayResponse], /) -> RelayResponse:
|
|
440
|
+
"""
|
|
441
|
+
Registry RPCs from the agent process, re-verified at the gateway.
|
|
442
|
+
"""
|
|
443
|
+
raise ConnectError(Code.UNIMPLEMENTED, 'Not implemented')
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
class SidecarServiceWSGIApplication(ConnectWSGIApplication):
|
|
447
|
+
def __init__(
|
|
448
|
+
self,
|
|
449
|
+
service: SidecarServiceSync,
|
|
450
|
+
interceptors: Iterable[InterceptorSync] = (),
|
|
451
|
+
read_max_bytes: int | None = DEFAULT_READ_MAX_BYTES,
|
|
452
|
+
compressions: Iterable[Compression] | None = None,
|
|
453
|
+
codecs: Iterable[Codec] | None = _DEFAULT_CODECS,
|
|
454
|
+
) -> None:
|
|
455
|
+
super().__init__(
|
|
456
|
+
endpoints={
|
|
457
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Watch": EndpointSync.server_stream(
|
|
458
|
+
method=MethodInfo(
|
|
459
|
+
name="Watch",
|
|
460
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
461
|
+
input=WatchRequest,
|
|
462
|
+
output=WatchResponse,
|
|
463
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
464
|
+
),
|
|
465
|
+
function=service.watch,
|
|
466
|
+
),
|
|
467
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Publish": EndpointSync.unary(
|
|
468
|
+
method=MethodInfo(
|
|
469
|
+
name="Publish",
|
|
470
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
471
|
+
input=PublishRequest,
|
|
472
|
+
output=PublishResponse,
|
|
473
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
474
|
+
),
|
|
475
|
+
function=service.publish,
|
|
476
|
+
),
|
|
477
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Hydrate": EndpointSync.unary(
|
|
478
|
+
method=MethodInfo(
|
|
479
|
+
name="Hydrate",
|
|
480
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
481
|
+
input=HydrateRequest,
|
|
482
|
+
output=HydrateResponse,
|
|
483
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
484
|
+
),
|
|
485
|
+
function=service.hydrate,
|
|
486
|
+
),
|
|
487
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Forward": EndpointSync.unary(
|
|
488
|
+
method=MethodInfo(
|
|
489
|
+
name="Forward",
|
|
490
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
491
|
+
input=ForwardRequest,
|
|
492
|
+
output=ForwardResponse,
|
|
493
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
494
|
+
),
|
|
495
|
+
function=service.forward,
|
|
496
|
+
),
|
|
497
|
+
"/tilde.agent_event_ingress.v1.SidecarService/UploadAttachment": EndpointSync.unary(
|
|
498
|
+
method=MethodInfo(
|
|
499
|
+
name="UploadAttachment",
|
|
500
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
501
|
+
input=UploadAttachmentRequest,
|
|
502
|
+
output=UploadAttachmentResponse,
|
|
503
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
504
|
+
),
|
|
505
|
+
function=service.upload_attachment,
|
|
506
|
+
),
|
|
507
|
+
"/tilde.agent_event_ingress.v1.SidecarService/DownloadAttachment": EndpointSync.unary(
|
|
508
|
+
method=MethodInfo(
|
|
509
|
+
name="DownloadAttachment",
|
|
510
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
511
|
+
input=DownloadAttachmentRequest,
|
|
512
|
+
output=DownloadAttachmentResponse,
|
|
513
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
514
|
+
),
|
|
515
|
+
function=service.download_attachment,
|
|
516
|
+
),
|
|
517
|
+
"/tilde.agent_event_ingress.v1.SidecarService/ResolveParticipant": EndpointSync.unary(
|
|
518
|
+
method=MethodInfo(
|
|
519
|
+
name="ResolveParticipant",
|
|
520
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
521
|
+
input=ResolveParticipantRequest,
|
|
522
|
+
output=ResolveParticipantResponse,
|
|
523
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
524
|
+
),
|
|
525
|
+
function=service.resolve_participant,
|
|
526
|
+
),
|
|
527
|
+
"/tilde.agent_event_ingress.v1.SidecarService/Relay": EndpointSync.unary(
|
|
528
|
+
method=MethodInfo(
|
|
529
|
+
name="Relay",
|
|
530
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
531
|
+
input=RelayRequest,
|
|
532
|
+
output=RelayResponse,
|
|
533
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
534
|
+
),
|
|
535
|
+
function=service.relay,
|
|
536
|
+
),
|
|
537
|
+
},
|
|
538
|
+
interceptors=interceptors,
|
|
539
|
+
read_max_bytes=read_max_bytes,
|
|
540
|
+
compressions=compressions,
|
|
541
|
+
codecs=codecs,
|
|
542
|
+
)
|
|
543
|
+
|
|
544
|
+
@property
|
|
545
|
+
def path(self) -> str:
|
|
546
|
+
"""Returns the URL path to mount the application to when serving multiple applications."""
|
|
547
|
+
return "/tilde.agent_event_ingress.v1.SidecarService"
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
class SidecarServiceClientSync(ConnectClientSync):
|
|
551
|
+
"""
|
|
552
|
+
Sidecars dial the gateway; every call authenticates one agent deployment token.
|
|
553
|
+
The gateway never opens a connection to a sidecar. Postgres is the record; a
|
|
554
|
+
replica is a cache plus a write-behind queue plus the executor for the threads
|
|
555
|
+
it holds a lease on.
|
|
556
|
+
"""
|
|
557
|
+
def __init__(
|
|
558
|
+
self,
|
|
559
|
+
address: str,
|
|
560
|
+
*,
|
|
561
|
+
codec: Codec | None = _PROTO_BINARY_CODEC,
|
|
562
|
+
protocol: ProtocolType = ProtocolType.CONNECT,
|
|
563
|
+
accept_compression: Iterable[Compression] | None = None,
|
|
564
|
+
send_compression: Compression | None = _GZIP_COMPRESSION,
|
|
565
|
+
timeout_ms: int | None = None,
|
|
566
|
+
read_max_bytes: int | None = None,
|
|
567
|
+
interceptors: Iterable[InterceptorSync] = (),
|
|
568
|
+
http_client: SyncClient | None = None,
|
|
569
|
+
) -> None:
|
|
570
|
+
super().__init__(
|
|
571
|
+
address=address,
|
|
572
|
+
codec=codec,
|
|
573
|
+
protocol=protocol,
|
|
574
|
+
accept_compression=accept_compression,
|
|
575
|
+
send_compression=send_compression,
|
|
576
|
+
timeout_ms=timeout_ms,
|
|
577
|
+
read_max_bytes=read_max_bytes,
|
|
578
|
+
interceptors=interceptors,
|
|
579
|
+
http_client=http_client,
|
|
580
|
+
)
|
|
581
|
+
def watch(
|
|
582
|
+
self,
|
|
583
|
+
request: WatchRequest,
|
|
584
|
+
*,
|
|
585
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
586
|
+
timeout_ms: int | None = None,
|
|
587
|
+
) -> Iterator[WatchResponse]:
|
|
588
|
+
"""
|
|
589
|
+
Held open for the life of a replica: a snapshot first, then configuration,
|
|
590
|
+
lease changes and directives as they change.
|
|
591
|
+
"""
|
|
592
|
+
return self.execute_server_stream(
|
|
593
|
+
request=request,
|
|
594
|
+
method=MethodInfo(
|
|
595
|
+
name="Watch",
|
|
596
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
597
|
+
input=WatchRequest,
|
|
598
|
+
output=WatchResponse,
|
|
599
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
600
|
+
),
|
|
601
|
+
headers=headers,
|
|
602
|
+
timeout_ms=timeout_ms,
|
|
603
|
+
)
|
|
604
|
+
def publish(
|
|
605
|
+
self,
|
|
606
|
+
request: PublishRequest,
|
|
607
|
+
*,
|
|
608
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
609
|
+
timeout_ms: int | None = None,
|
|
610
|
+
) -> PublishResponse:
|
|
611
|
+
"""
|
|
612
|
+
Heartbeats, typed events, directive results, lease releases and telemetry, in order.
|
|
613
|
+
"""
|
|
614
|
+
return self.execute_unary(
|
|
615
|
+
request=request,
|
|
616
|
+
method=MethodInfo(
|
|
617
|
+
name="Publish",
|
|
618
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
619
|
+
input=PublishRequest,
|
|
620
|
+
output=PublishResponse,
|
|
621
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
622
|
+
),
|
|
623
|
+
headers=headers,
|
|
624
|
+
timeout_ms=timeout_ms,
|
|
625
|
+
)
|
|
626
|
+
def hydrate(
|
|
627
|
+
self,
|
|
628
|
+
request: HydrateRequest,
|
|
629
|
+
*,
|
|
630
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
631
|
+
timeout_ms: int | None = None,
|
|
632
|
+
) -> HydrateResponse:
|
|
633
|
+
"""
|
|
634
|
+
Conversation state from the projection, taking the thread lease in the same call when asked.
|
|
635
|
+
"""
|
|
636
|
+
return self.execute_unary(
|
|
637
|
+
request=request,
|
|
638
|
+
method=MethodInfo(
|
|
639
|
+
name="Hydrate",
|
|
640
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
641
|
+
input=HydrateRequest,
|
|
642
|
+
output=HydrateResponse,
|
|
643
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
644
|
+
),
|
|
645
|
+
headers=headers,
|
|
646
|
+
timeout_ms=timeout_ms,
|
|
647
|
+
)
|
|
648
|
+
def forward(
|
|
649
|
+
self,
|
|
650
|
+
request: ForwardRequest,
|
|
651
|
+
*,
|
|
652
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
653
|
+
timeout_ms: int | None = None,
|
|
654
|
+
) -> ForwardResponse:
|
|
655
|
+
"""
|
|
656
|
+
Run one ingress call on a live replica and relay its answer.
|
|
657
|
+
"""
|
|
658
|
+
return self.execute_unary(
|
|
659
|
+
request=request,
|
|
660
|
+
method=MethodInfo(
|
|
661
|
+
name="Forward",
|
|
662
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
663
|
+
input=ForwardRequest,
|
|
664
|
+
output=ForwardResponse,
|
|
665
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
666
|
+
),
|
|
667
|
+
headers=headers,
|
|
668
|
+
timeout_ms=timeout_ms,
|
|
669
|
+
)
|
|
670
|
+
def upload_attachment(
|
|
671
|
+
self,
|
|
672
|
+
request: UploadAttachmentRequest,
|
|
673
|
+
*,
|
|
674
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
675
|
+
timeout_ms: int | None = None,
|
|
676
|
+
) -> UploadAttachmentResponse:
|
|
677
|
+
return self.execute_unary(
|
|
678
|
+
request=request,
|
|
679
|
+
method=MethodInfo(
|
|
680
|
+
name="UploadAttachment",
|
|
681
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
682
|
+
input=UploadAttachmentRequest,
|
|
683
|
+
output=UploadAttachmentResponse,
|
|
684
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
685
|
+
),
|
|
686
|
+
headers=headers,
|
|
687
|
+
timeout_ms=timeout_ms,
|
|
688
|
+
)
|
|
689
|
+
def download_attachment(
|
|
690
|
+
self,
|
|
691
|
+
request: DownloadAttachmentRequest,
|
|
692
|
+
*,
|
|
693
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
694
|
+
timeout_ms: int | None = None,
|
|
695
|
+
) -> DownloadAttachmentResponse:
|
|
696
|
+
return self.execute_unary(
|
|
697
|
+
request=request,
|
|
698
|
+
method=MethodInfo(
|
|
699
|
+
name="DownloadAttachment",
|
|
700
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
701
|
+
input=DownloadAttachmentRequest,
|
|
702
|
+
output=DownloadAttachmentResponse,
|
|
703
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
704
|
+
),
|
|
705
|
+
headers=headers,
|
|
706
|
+
timeout_ms=timeout_ms,
|
|
707
|
+
)
|
|
708
|
+
def resolve_participant(
|
|
709
|
+
self,
|
|
710
|
+
request: ResolveParticipantRequest,
|
|
711
|
+
*,
|
|
712
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
713
|
+
timeout_ms: int | None = None,
|
|
714
|
+
) -> ResolveParticipantResponse:
|
|
715
|
+
return self.execute_unary(
|
|
716
|
+
request=request,
|
|
717
|
+
method=MethodInfo(
|
|
718
|
+
name="ResolveParticipant",
|
|
719
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
720
|
+
input=ResolveParticipantRequest,
|
|
721
|
+
output=ResolveParticipantResponse,
|
|
722
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
723
|
+
),
|
|
724
|
+
headers=headers,
|
|
725
|
+
timeout_ms=timeout_ms,
|
|
726
|
+
)
|
|
727
|
+
def relay(
|
|
728
|
+
self,
|
|
729
|
+
request: RelayRequest,
|
|
730
|
+
*,
|
|
731
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
732
|
+
timeout_ms: int | None = None,
|
|
733
|
+
) -> RelayResponse:
|
|
734
|
+
"""
|
|
735
|
+
Registry RPCs from the agent process, re-verified at the gateway.
|
|
736
|
+
"""
|
|
737
|
+
return self.execute_unary(
|
|
738
|
+
request=request,
|
|
739
|
+
method=MethodInfo(
|
|
740
|
+
name="Relay",
|
|
741
|
+
service_name="tilde.agent_event_ingress.v1.SidecarService",
|
|
742
|
+
input=RelayRequest,
|
|
743
|
+
output=RelayResponse,
|
|
744
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
745
|
+
),
|
|
746
|
+
headers=headers,
|
|
747
|
+
timeout_ms=timeout_ms,
|
|
748
|
+
)
|