1#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct QueuedMessage {
4 #[prost(string, tag = "1")]
5 pub id: ::prost::alloc::string::String,
6 #[prost(string, tag = "2")]
7 pub conversation_rid: ::prost::alloc::string::String,
8 #[prost(string, tag = "3")]
9 pub client_message_id: ::prost::alloc::string::String,
10 #[prost(message, optional, tag = "4")]
11 pub message: ::core::option::Option<StreamChatRequest>,
12 #[prost(enumeration = "QueuedMessageState", tag = "5")]
13 pub state: i32,
14 #[prost(string, tag = "6")]
15 pub failure_code: ::prost::alloc::string::String,
16 #[prost(message, optional, tag = "7")]
17 pub created_at: ::core::option::Option<
18 super::super::super::google::protobuf::Timestamp,
19 >,
20}
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct CreateQueuedMessageRequest {
23 #[prost(string, tag = "1")]
24 pub conversation_rid: ::prost::alloc::string::String,
25 #[prost(string, tag = "2")]
26 pub client_message_id: ::prost::alloc::string::String,
27 #[prost(message, optional, tag = "3")]
28 pub message: ::core::option::Option<StreamChatRequest>,
29}
30#[derive(Clone, PartialEq, ::prost::Message)]
31pub struct CreateQueuedMessageResponse {
32 #[prost(message, optional, tag = "1")]
33 pub queued_message: ::core::option::Option<QueuedMessage>,
34}
35#[derive(Clone, PartialEq, ::prost::Message)]
36pub struct ListQueuedMessagesRequest {
37 #[prost(string, tag = "1")]
38 pub conversation_rid: ::prost::alloc::string::String,
39 #[prost(int32, tag = "2")]
40 pub page_size: i32,
41 #[prost(string, tag = "3")]
42 pub page_token: ::prost::alloc::string::String,
43}
44#[derive(Clone, PartialEq, ::prost::Message)]
45pub struct ListQueuedMessagesResponse {
46 #[prost(message, repeated, tag = "1")]
47 pub queued_messages: ::prost::alloc::vec::Vec<QueuedMessage>,
48 #[prost(string, tag = "2")]
49 pub next_page_token: ::prost::alloc::string::String,
50}
51#[derive(Clone, PartialEq, ::prost::Message)]
52pub struct DeleteQueuedMessageRequest {
53 #[prost(string, tag = "1")]
54 pub conversation_rid: ::prost::alloc::string::String,
55 #[prost(string, tag = "2")]
56 pub queued_message_id: ::prost::alloc::string::String,
57}
58#[derive(Clone, Copy, PartialEq, ::prost::Message)]
59pub struct DeleteQueuedMessageResponse {}
60#[derive(Clone, PartialEq, ::prost::Message)]
61pub struct SubmitMessageFeedbackRequest {
62 #[prost(string, tag = "1")]
63 pub conversation_rid: ::prost::alloc::string::String,
64 #[prost(string, tag = "2")]
65 pub message_id: ::prost::alloc::string::String,
66 #[prost(enumeration = "FeedbackVote", tag = "3")]
67 pub vote: i32,
68 #[prost(string, optional, tag = "4")]
69 pub comment: ::core::option::Option<::prost::alloc::string::String>,
70 #[prost(string, repeated, tag = "5")]
71 pub issue_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
72}
73#[derive(Clone, Copy, PartialEq, ::prost::Message)]
74pub struct SubmitMessageFeedbackResponse {}
75#[derive(Clone, PartialEq, ::prost::Message)]
76pub struct CancelAgentRunRequest {
77 #[prost(string, tag = "1")]
78 pub conversation_rid: ::prost::alloc::string::String,
79 #[prost(string, tag = "2")]
80 pub agent_run_id: ::prost::alloc::string::String,
81}
82#[derive(Clone, Copy, PartialEq, ::prost::Message)]
83pub struct CancelAgentRunResponse {}
84#[derive(Clone, PartialEq, ::prost::Message)]
85pub struct GetSnapshotRidByUserMessageIdRequest {
86 #[prost(string, tag = "1")]
87 pub conversation_rid: ::prost::alloc::string::String,
88 #[prost(string, tag = "2")]
89 pub message_id: ::prost::alloc::string::String,
90}
91#[derive(Clone, PartialEq, ::prost::Message)]
92pub struct GetSnapshotRidByUserMessageIdResponse {
93 #[prost(
94 oneof = "get_snapshot_rid_by_user_message_id_response::RestorePoint",
95 tags = "1, 2"
96 )]
97 pub restore_point: ::core::option::Option<
98 get_snapshot_rid_by_user_message_id_response::RestorePoint,
99 >,
100}
101pub mod get_snapshot_rid_by_user_message_id_response {
103 #[derive(Clone, PartialEq, ::prost::Oneof)]
104 pub enum RestorePoint {
105 #[prost(string, tag = "1")]
106 SnapshotRid(::prost::alloc::string::String),
107 #[prost(string, tag = "2")]
108 CommitId(::prost::alloc::string::String),
109 }
110}
111#[derive(Clone, Copy, PartialEq, ::prost::Message)]
112pub struct ReadOnlyMode {}
113#[derive(Clone, Copy, PartialEq, ::prost::Message)]
114pub struct EditMode {
115 #[prost(bool, optional, tag = "1")]
116 pub auto_accept: ::core::option::Option<bool>,
117}
118#[derive(Clone, Copy, PartialEq, ::prost::Message)]
119pub struct ConversationMode {
120 #[prost(oneof = "conversation_mode::Mode", tags = "1, 2")]
121 pub mode: ::core::option::Option<conversation_mode::Mode>,
122}
123pub mod conversation_mode {
125 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
126 pub enum Mode {
127 #[prost(message, tag = "1")]
128 ReadOnly(super::ReadOnlyMode),
129 #[prost(message, tag = "2")]
130 Edit(super::EditMode),
131 }
132}
133#[derive(Clone, PartialEq, ::prost::Message)]
134pub struct ToolApprovalResult {
135 #[prost(string, tag = "1")]
136 pub tool_call_id: ::prost::alloc::string::String,
137 #[prost(oneof = "tool_approval_result::Response", tags = "2, 3")]
138 pub response: ::core::option::Option<tool_approval_result::Response>,
139}
140pub mod tool_approval_result {
142 #[derive(Clone, PartialEq, ::prost::Oneof)]
143 pub enum Response {
144 #[prost(message, tag = "2")]
145 Approved(super::ToolApprovedResponse),
146 #[prost(message, tag = "3")]
147 Denied(super::ToolDeniedResponse),
148 }
149}
150#[derive(Clone, PartialEq, ::prost::Message)]
151pub struct ToolApprovedResponse {
152 #[prost(string, optional, tag = "1")]
153 pub override_args: ::core::option::Option<::prost::alloc::string::String>,
154}
155#[derive(Clone, PartialEq, ::prost::Message)]
156pub struct ToolDeniedResponse {
157 #[prost(string, tag = "2")]
158 pub denial_reason: ::prost::alloc::string::String,
159}
160#[derive(Clone, Copy, PartialEq, ::prost::Message)]
161pub struct RetryRequest {}
162#[derive(Clone, PartialEq, ::prost::Message)]
163pub struct UserPromptRequest {
164 #[prost(message, optional, tag = "1")]
165 pub message: ::core::option::Option<UserModelMessage>,
166 #[prost(message, repeated, tag = "2")]
167 pub images: ::prost::alloc::vec::Vec<ImagePart>,
168}
169#[derive(Clone, PartialEq, ::prost::Message)]
170pub struct ToolApprovalRequest {
171 #[prost(message, repeated, tag = "1")]
172 pub tool_approvals: ::prost::alloc::vec::Vec<ToolApprovalResult>,
173}
174#[derive(Clone, PartialEq, ::prost::Message)]
175pub struct UserQuestionAnswer {
176 #[prost(uint32, tag = "1")]
177 pub question_index: u32,
178 #[prost(string, repeated, tag = "2")]
179 pub selected_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
180 #[prost(string, optional, tag = "3")]
181 pub other_text: ::core::option::Option<::prost::alloc::string::String>,
182}
183#[derive(Clone, Copy, PartialEq, ::prost::Message)]
184pub struct UserQuestionDeclined {}
185#[derive(Clone, PartialEq, ::prost::Message)]
186pub struct UserQuestionResponseRequest {
187 #[prost(string, tag = "1")]
188 pub tool_call_id: ::prost::alloc::string::String,
189 #[prost(uint32, tag = "2")]
190 pub question_index: u32,
191 #[prost(uint64, tag = "3")]
192 pub version: u64,
193 #[prost(oneof = "user_question_response_request::Response", tags = "4, 5")]
194 pub response: ::core::option::Option<user_question_response_request::Response>,
195}
196pub mod user_question_response_request {
198 #[derive(Clone, PartialEq, ::prost::Oneof)]
199 pub enum Response {
200 #[prost(message, tag = "4")]
201 Answered(super::UserQuestionAnswer),
202 #[prost(message, tag = "5")]
203 Declined(super::UserQuestionDeclined),
204 }
205}
206#[derive(Clone, PartialEq, ::prost::Message)]
207pub struct StreamChatRequest {
208 #[prost(string, tag = "1")]
209 pub conversation_rid: ::prost::alloc::string::String,
210 #[deprecated]
211 #[prost(message, optional, tag = "2")]
212 pub message: ::core::option::Option<UserModelMessage>,
213 #[deprecated]
214 #[prost(message, repeated, tag = "3")]
215 pub images: ::prost::alloc::vec::Vec<ImagePart>,
216 #[deprecated]
217 #[prost(message, repeated, tag = "6")]
218 pub tool_approvals: ::prost::alloc::vec::Vec<ToolApprovalResult>,
219 #[prost(bool, tag = "13")]
220 pub detach_on_disconnect: bool,
221 #[prost(bool, tag = "14")]
222 pub reattach_only: bool,
223 #[prost(message, optional, tag = "15")]
224 pub model_selection: ::core::option::Option<ModelSelection>,
225 #[prost(oneof = "stream_chat_request::RequestType", tags = "7, 8, 9, 12")]
226 pub request_type: ::core::option::Option<stream_chat_request::RequestType>,
227 #[prost(oneof = "stream_chat_request::Context", tags = "4, 5, 10, 11")]
228 pub context: ::core::option::Option<stream_chat_request::Context>,
229}
230pub mod stream_chat_request {
232 #[derive(Clone, PartialEq, ::prost::Oneof)]
233 pub enum RequestType {
234 #[prost(message, tag = "7")]
235 Retry(super::RetryRequest),
236 #[prost(message, tag = "8")]
237 UserPrompt(super::UserPromptRequest),
238 #[prost(message, tag = "9")]
239 ToolApproval(super::ToolApprovalRequest),
240 #[prost(message, tag = "12")]
241 UserQuestionResponse(super::UserQuestionResponseRequest),
242 }
243 #[derive(Clone, PartialEq, ::prost::Oneof)]
244 pub enum Context {
245 #[prost(message, tag = "4")]
246 Workbook(super::WorkbookContext),
247 #[prost(message, tag = "5")]
248 Global(super::GlobalContext),
249 #[prost(message, tag = "10")]
250 Checklist(super::ChecklistContext),
251 #[prost(message, tag = "11")]
252 Template(super::TemplateContext),
253 }
254}
255#[derive(Clone, PartialEq, ::prost::Message)]
256pub struct ModelSelection {
257 #[prost(string, tag = "1")]
258 pub model_id: ::prost::alloc::string::String,
259 #[prost(string, optional, tag = "2")]
260 pub thinking_effort: ::core::option::Option<::prost::alloc::string::String>,
261 #[prost(uint32, optional, tag = "3")]
262 pub context_window_tokens: ::core::option::Option<u32>,
263 #[prost(uint32, optional, tag = "4")]
264 pub max_output_tokens: ::core::option::Option<u32>,
265}
266#[derive(Clone, PartialEq, ::prost::Message)]
267pub struct ThinkingEffortOption {
268 #[prost(string, tag = "1")]
269 pub effort: ::prost::alloc::string::String,
270 #[prost(uint32, tag = "2")]
271 pub default_output_tokens: u32,
272}
273#[derive(Clone, PartialEq, ::prost::Message)]
274pub struct ModelOption {
275 #[prost(string, tag = "1")]
276 pub model_id: ::prost::alloc::string::String,
277 #[prost(string, tag = "2")]
278 pub label: ::prost::alloc::string::String,
279 #[prost(string, repeated, tag = "3")]
280 pub thinking_efforts: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
281 #[prost(uint32, tag = "4")]
282 pub min_context_window_tokens: u32,
283 #[prost(uint32, tag = "5")]
284 pub max_context_window_tokens: u32,
285 #[prost(uint32, tag = "6")]
286 pub default_context_window_tokens: u32,
287 #[prost(uint32, repeated, tag = "7")]
288 pub context_window_presets: ::prost::alloc::vec::Vec<u32>,
289 #[prost(uint32, tag = "8")]
290 pub min_output_tokens: u32,
291 #[prost(uint32, tag = "9")]
292 pub max_output_tokens: u32,
293 #[prost(uint32, tag = "10")]
294 pub default_output_tokens: u32,
295 #[prost(message, repeated, tag = "11")]
296 pub thinking_effort_options: ::prost::alloc::vec::Vec<ThinkingEffortOption>,
297 #[prost(bool, tag = "12")]
298 pub supports_image_input: bool,
299 #[prost(string, optional, tag = "13")]
300 pub default_thinking_effort: ::core::option::Option<::prost::alloc::string::String>,
301}
302#[derive(Clone, Copy, PartialEq, ::prost::Message)]
303pub struct ListModelsRequest {}
304#[derive(Clone, PartialEq, ::prost::Message)]
305pub struct ListModelsResponse {
306 #[prost(message, repeated, tag = "1")]
307 pub models: ::prost::alloc::vec::Vec<ModelOption>,
308}
309#[derive(Clone, PartialEq, ::prost::Message)]
310pub struct WorkbookContext {
311 #[prost(string, tag = "1")]
312 pub workbook_rid: ::prost::alloc::string::String,
313 #[deprecated]
314 #[prost(message, optional, tag = "2")]
315 pub user_presence: ::core::option::Option<WorkbookUserPresence>,
316 #[prost(string, optional, tag = "3")]
317 pub active_tab_id: ::core::option::Option<::prost::alloc::string::String>,
318 #[prost(message, optional, tag = "5")]
319 pub visible_time_range: ::core::option::Option<TimeRange>,
320}
321#[derive(Clone, PartialEq, ::prost::Message)]
322pub struct ChecklistContext {
323 #[prost(string, tag = "1")]
324 pub checklist_rid: ::prost::alloc::string::String,
325 #[prost(string, tag = "2")]
326 pub branch_name: ::prost::alloc::string::String,
327 #[prost(oneof = "checklist_context::ReferenceRid", tags = "3, 4")]
328 pub reference_rid: ::core::option::Option<checklist_context::ReferenceRid>,
329}
330pub mod checklist_context {
332 #[derive(Clone, PartialEq, ::prost::Oneof)]
333 pub enum ReferenceRid {
334 #[prost(string, tag = "3")]
335 Asset(::prost::alloc::string::String),
336 #[prost(string, tag = "4")]
337 Run(::prost::alloc::string::String),
338 }
339}
340#[derive(Clone, PartialEq, ::prost::Message)]
341pub struct TemplateContext {
342 #[prost(string, tag = "1")]
343 pub template_rid: ::prost::alloc::string::String,
344 #[prost(string, tag = "2")]
345 pub branch_name: ::prost::alloc::string::String,
346 #[prost(oneof = "template_context::ReferenceRid", tags = "3, 4")]
347 pub reference_rid: ::core::option::Option<template_context::ReferenceRid>,
348}
349pub mod template_context {
351 #[derive(Clone, PartialEq, ::prost::Oneof)]
352 pub enum ReferenceRid {
353 #[prost(string, tag = "3")]
354 Asset(::prost::alloc::string::String),
355 #[prost(string, tag = "4")]
356 Run(::prost::alloc::string::String),
357 }
358}
359#[derive(Clone, Copy, PartialEq, ::prost::Message)]
360pub struct GlobalContext {}
361#[derive(Clone, Copy, PartialEq, ::prost::Message)]
362pub struct WorkbookUserPresence {
363 #[prost(int32, tag = "1")]
364 pub tab_index: i32,
365 #[prost(message, optional, tag = "2")]
366 pub range: ::core::option::Option<TimeRange>,
367}
368#[derive(Clone, PartialEq, ::prost::Message)]
369pub struct CreateConversationRequest {
370 #[prost(string, tag = "1")]
371 pub title: ::prost::alloc::string::String,
372 #[prost(string, tag = "2")]
373 pub workspace_rid: ::prost::alloc::string::String,
374 #[prost(string, optional, tag = "3")]
375 pub old_conversation_rid: ::core::option::Option<::prost::alloc::string::String>,
376 #[prost(string, optional, tag = "4")]
377 pub previous_message_id: ::core::option::Option<::prost::alloc::string::String>,
378 #[prost(message, optional, tag = "5")]
379 pub conversation_mode: ::core::option::Option<ConversationMode>,
380 #[prost(string, optional, tag = "6")]
381 pub backing_workbook_rid: ::core::option::Option<::prost::alloc::string::String>,
382 #[prost(message, repeated, tag = "7")]
383 pub resources: ::prost::alloc::vec::Vec<ConversationResource>,
384}
385#[derive(Clone, PartialEq, ::prost::Message)]
386pub struct CreateConversationResponse {
387 #[prost(string, tag = "1")]
388 pub new_conversation_rid: ::prost::alloc::string::String,
389}
390#[derive(Clone, PartialEq, ::prost::Message)]
391pub struct UpdateConversationMetadataRequest {
392 #[prost(string, optional, tag = "1")]
393 pub title: ::core::option::Option<::prost::alloc::string::String>,
394 #[prost(string, tag = "2")]
395 pub conversation_rid: ::prost::alloc::string::String,
396 #[prost(message, optional, tag = "3")]
397 pub conversation_mode: ::core::option::Option<ConversationMode>,
398}
399#[derive(Clone, Copy, PartialEq, ::prost::Message)]
400pub struct UpdateConversationMetadataResponse {}
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct DeleteConversationRequest {
403 #[prost(string, tag = "1")]
404 pub conversation_rid: ::prost::alloc::string::String,
405}
406#[derive(Clone, Copy, PartialEq, ::prost::Message)]
407pub struct DeleteConversationResponse {}
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct ArchiveConversationRequest {
410 #[prost(string, tag = "1")]
411 pub conversation_rid: ::prost::alloc::string::String,
412}
413#[derive(Clone, PartialEq, ::prost::Message)]
414pub struct ArchiveConversationResponse {
415 #[prost(message, optional, tag = "1")]
416 pub conversation: ::core::option::Option<ConversationMetadata>,
417}
418#[derive(Clone, PartialEq, ::prost::Message)]
419pub struct UnarchiveConversationRequest {
420 #[prost(string, tag = "1")]
421 pub conversation_rid: ::prost::alloc::string::String,
422}
423#[derive(Clone, PartialEq, ::prost::Message)]
424pub struct UnarchiveConversationResponse {
425 #[prost(message, optional, tag = "1")]
426 pub conversation: ::core::option::Option<ConversationMetadata>,
427}
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct GetConversationRequest {
430 #[prost(string, tag = "1")]
431 pub conversation_rid: ::prost::alloc::string::String,
432 #[prost(string, optional, tag = "2")]
433 pub page_start_message_id: ::core::option::Option<::prost::alloc::string::String>,
434 #[prost(int32, optional, tag = "3")]
435 pub max_message_count: ::core::option::Option<i32>,
436}
437#[derive(Clone, PartialEq, ::prost::Message)]
438pub struct CompactConversationRequest {
439 #[prost(string, tag = "1")]
440 pub conversation_rid: ::prost::alloc::string::String,
441}
442#[derive(Clone, Copy, PartialEq, ::prost::Message)]
443pub struct CompactConversationResponse {
444 #[prost(message, optional, tag = "1")]
445 pub context: ::core::option::Option<ContextStatus>,
446}
447#[derive(Clone, PartialEq, ::prost::Message)]
448pub struct ModelMessageWithId {
449 #[prost(string, tag = "3")]
450 pub message_id: ::prost::alloc::string::String,
451 #[prost(message, repeated, tag = "5")]
452 pub tool_approval_requests: ::prost::alloc::vec::Vec<ToolCallDescription>,
453 #[prost(message, repeated, tag = "8")]
454 pub user_question_calls: ::prost::alloc::vec::Vec<UserQuestionCall>,
455 #[prost(message, optional, tag = "9")]
456 pub created_at: ::core::option::Option<
457 super::super::super::google::protobuf::Timestamp,
458 >,
459 #[prost(double, optional, tag = "10")]
460 pub turn_duration_s: ::core::option::Option<f64>,
461 #[prost(oneof = "model_message_with_id::Content", tags = "1, 2, 6")]
462 pub content: ::core::option::Option<model_message_with_id::Content>,
463 #[prost(oneof = "model_message_with_id::RestorePoint", tags = "4, 7")]
464 pub restore_point: ::core::option::Option<model_message_with_id::RestorePoint>,
465}
466pub mod model_message_with_id {
468 #[derive(Clone, PartialEq, ::prost::Oneof)]
469 pub enum Content {
470 #[prost(message, tag = "1")]
471 Message(super::ModelMessage),
472 #[prost(message, tag = "2")]
473 ToolAction(super::ToolAction),
474 #[prost(message, tag = "6")]
475 ToolActionConfirmation(super::ToolActionConfirmation),
476 }
477 #[derive(Clone, PartialEq, ::prost::Oneof)]
478 pub enum RestorePoint {
479 #[prost(string, tag = "4")]
480 SnapshotRid(::prost::alloc::string::String),
481 #[prost(string, tag = "7")]
482 CommitId(::prost::alloc::string::String),
483 }
484}
485#[derive(Clone, PartialEq, ::prost::Message)]
486pub struct GetConversationResponse {
487 #[prost(message, repeated, tag = "1")]
488 pub ordered_messages: ::prost::alloc::vec::Vec<ModelMessageWithId>,
489 #[prost(message, optional, tag = "2")]
490 pub conversation_metadata: ::core::option::Option<ConversationMetadata>,
491}
492#[derive(Clone, PartialEq, ::prost::Message)]
493pub struct GetConversationMetadataRequest {
494 #[prost(string, tag = "1")]
495 pub conversation_rid: ::prost::alloc::string::String,
496}
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct GetConversationMetadataResponse {
499 #[prost(message, optional, tag = "1")]
500 pub conversation_metadata: ::core::option::Option<ConversationMetadata>,
501 #[prost(message, optional, tag = "2")]
502 pub active_run: ::core::option::Option<ActiveAgentRun>,
503}
504#[derive(Clone, PartialEq, ::prost::Message)]
505pub struct ActiveAgentRun {
506 #[prost(string, tag = "1")]
507 pub agent_run_id: ::prost::alloc::string::String,
508 #[prost(message, optional, tag = "2")]
509 pub started_at: ::core::option::Option<
510 super::super::super::google::protobuf::Timestamp,
511 >,
512 #[prost(enumeration = "AgentRunExecutionMode", tag = "3")]
513 pub execution_mode: i32,
514}
515#[derive(Clone, PartialEq, ::prost::Message)]
516pub struct GetConversationMessagesRequest {
517 #[prost(string, tag = "1")]
518 pub conversation_rid: ::prost::alloc::string::String,
519 #[prost(string, optional, tag = "2")]
520 pub page_start_message_id: ::core::option::Option<::prost::alloc::string::String>,
521 #[prost(int32, optional, tag = "3")]
522 pub max_message_count: ::core::option::Option<i32>,
523}
524#[derive(Clone, PartialEq, ::prost::Message)]
525pub struct GetConversationMessagesResponse {
526 #[prost(message, repeated, tag = "1")]
527 pub ordered_messages: ::prost::alloc::vec::Vec<ModelMessageWithId>,
528 #[prost(string, optional, tag = "2")]
529 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
530}
531#[derive(Clone, PartialEq, ::prost::Message)]
532pub struct ListConversationsRequest {
533 #[prost(string, tag = "1")]
534 pub workspace_rid: ::prost::alloc::string::String,
535 #[prost(string, optional, tag = "2")]
536 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
537 #[prost(int32, optional, tag = "3")]
538 pub page_size: ::core::option::Option<i32>,
539 #[prost(string, optional, tag = "4")]
540 pub title_query: ::core::option::Option<::prost::alloc::string::String>,
541 #[prost(bool, tag = "6")]
542 pub include_archived: bool,
543}
544#[derive(Clone, PartialEq, ::prost::Message)]
545pub struct ConversationResource {
546 #[prost(string, tag = "1")]
547 pub rid: ::prost::alloc::string::String,
548}
549#[derive(Clone, PartialEq, ::prost::Message)]
550pub struct UpdateConversationResourcesRequest {
551 #[prost(string, tag = "1")]
552 pub conversation_rid: ::prost::alloc::string::String,
553 #[prost(string, repeated, tag = "2")]
554 pub add_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
555 #[prost(string, repeated, tag = "3")]
556 pub remove_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
557}
558#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct UpdateConversationResourcesResponse {
560 #[prost(message, repeated, tag = "1")]
561 pub resources: ::prost::alloc::vec::Vec<ConversationResource>,
562}
563#[derive(Clone, PartialEq, ::prost::Message)]
564pub struct ConversationMetadata {
565 #[prost(string, tag = "1")]
566 pub conversation_rid: ::prost::alloc::string::String,
567 #[prost(string, tag = "2")]
568 pub title: ::prost::alloc::string::String,
569 #[prost(message, optional, tag = "3")]
570 pub created_at: ::core::option::Option<
571 super::super::super::google::protobuf::Timestamp,
572 >,
573 #[prost(message, optional, tag = "4")]
574 pub last_updated_at: ::core::option::Option<
575 super::super::super::google::protobuf::Timestamp,
576 >,
577 #[prost(message, optional, tag = "5")]
578 pub mode: ::core::option::Option<ConversationMode>,
579 #[prost(message, optional, tag = "6")]
580 pub current_context: ::core::option::Option<ContextStatus>,
581 #[prost(string, optional, tag = "7")]
582 pub backing_workbook_rid: ::core::option::Option<::prost::alloc::string::String>,
583 #[prost(message, repeated, tag = "8")]
584 pub resources: ::prost::alloc::vec::Vec<ConversationResource>,
585 #[prost(message, optional, tag = "9")]
586 pub active_run: ::core::option::Option<ActiveAgentRun>,
587 #[prost(message, optional, tag = "10")]
588 pub archived_at: ::core::option::Option<
589 super::super::super::google::protobuf::Timestamp,
590 >,
591}
592#[derive(Clone, PartialEq, ::prost::Message)]
593pub struct ListConversationsResponse {
594 #[prost(message, repeated, tag = "1")]
595 pub conversations: ::prost::alloc::vec::Vec<ConversationMetadata>,
596 #[prost(string, optional, tag = "2")]
597 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
598}
599#[derive(Clone, PartialEq, ::prost::Message)]
600pub struct BatchGetConversationActiveRunsRequest {
601 #[prost(string, tag = "1")]
602 pub workspace_rid: ::prost::alloc::string::String,
603 #[prost(string, repeated, tag = "2")]
604 pub conversation_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
605}
606#[derive(Clone, PartialEq, ::prost::Message)]
607pub struct BatchGetConversationActiveRunsResponse {
608 #[prost(message, repeated, tag = "1")]
609 pub active_runs: ::prost::alloc::vec::Vec<ConversationActiveRun>,
610}
611#[derive(Clone, PartialEq, ::prost::Message)]
612pub struct ConversationActiveRun {
613 #[prost(string, tag = "1")]
614 pub conversation_rid: ::prost::alloc::string::String,
615 #[prost(message, optional, tag = "2")]
616 pub active_run: ::core::option::Option<ActiveAgentRun>,
617}
618#[derive(Clone, Copy, PartialEq, ::prost::Message)]
619pub struct TimeRange {
620 #[prost(message, optional, tag = "1")]
621 pub range_start: ::core::option::Option<Timestamp>,
622 #[prost(message, optional, tag = "2")]
623 pub range_end: ::core::option::Option<Timestamp>,
624}
625#[derive(Clone, Copy, PartialEq, ::prost::Message)]
626pub struct Timestamp {
627 #[prost(int32, tag = "1")]
628 pub seconds: i32,
629 #[prost(int32, tag = "2")]
630 pub nanoseconds: i32,
631}
632#[derive(Clone, PartialEq, ::prost::Message)]
633pub struct ModelMessage {
634 #[prost(oneof = "model_message::Kind", tags = "1, 2")]
635 pub kind: ::core::option::Option<model_message::Kind>,
636}
637pub mod model_message {
639 #[derive(Clone, PartialEq, ::prost::Oneof)]
640 pub enum Kind {
641 #[prost(message, tag = "1")]
642 User(super::UserModelMessage),
643 #[prost(message, tag = "2")]
644 Assistant(super::AssistantModelMessage),
645 }
646}
647#[derive(Clone, PartialEq, ::prost::Message)]
648pub struct UserModelMessage {
649 #[prost(message, repeated, tag = "1")]
650 pub text: ::prost::alloc::vec::Vec<UserContentPart>,
651}
652#[derive(Clone, PartialEq, ::prost::Message)]
653pub struct AssistantModelMessage {
654 #[prost(message, repeated, tag = "1")]
655 pub content_parts: ::prost::alloc::vec::Vec<AssistantContentPart>,
656}
657#[derive(Clone, PartialEq, ::prost::Message)]
658pub struct UserContentPart {
659 #[prost(oneof = "user_content_part::Part", tags = "1, 2")]
660 pub part: ::core::option::Option<user_content_part::Part>,
661}
662pub mod user_content_part {
664 #[derive(Clone, PartialEq, ::prost::Oneof)]
665 pub enum Part {
666 #[prost(message, tag = "1")]
667 Text(super::TextPart),
668 #[prost(message, tag = "2")]
669 Image(super::ImagePart),
670 }
671}
672#[derive(Clone, PartialEq, ::prost::Message)]
673pub struct AssistantContentPart {
674 #[prost(oneof = "assistant_content_part::Part", tags = "1, 2")]
675 pub part: ::core::option::Option<assistant_content_part::Part>,
676}
677pub mod assistant_content_part {
679 #[derive(Clone, PartialEq, ::prost::Oneof)]
680 pub enum Part {
681 #[prost(message, tag = "1")]
682 Text(super::TextPart),
683 #[prost(message, tag = "2")]
684 Reasoning(super::ReasoningPart),
685 }
686}
687#[derive(Clone, PartialEq, ::prost::Message)]
688pub struct TextPart {
689 #[prost(string, tag = "1")]
690 pub text: ::prost::alloc::string::String,
691}
692#[derive(Clone, PartialEq, ::prost::Message)]
693pub struct ImagePart {
694 #[prost(string, tag = "2")]
695 pub media_type: ::prost::alloc::string::String,
696 #[prost(string, tag = "4")]
697 pub attachment_rid: ::prost::alloc::string::String,
698}
699#[derive(Clone, PartialEq, ::prost::Message)]
700pub struct ReasoningPart {
701 #[prost(string, tag = "1")]
702 pub reasoning: ::prost::alloc::string::String,
703 #[prost(double, optional, tag = "2")]
704 pub duration_s: ::core::option::Option<f64>,
705}
706#[derive(Clone, PartialEq, ::prost::Message)]
707pub struct StreamChatResponse {
708 #[prost(
709 oneof = "stream_chat_response::Response",
710 tags = "1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16"
711 )]
712 pub response: ::core::option::Option<stream_chat_response::Response>,
713}
714pub mod stream_chat_response {
716 #[derive(Clone, PartialEq, ::prost::Oneof)]
717 pub enum Response {
718 #[prost(message, tag = "1")]
719 Finish(super::Finish),
720 #[prost(message, tag = "2")]
721 Error(super::Error),
722 #[prost(message, tag = "3")]
723 TextStart(super::TextStart),
724 #[prost(message, tag = "4")]
725 TextDelta(super::TextDelta),
726 #[prost(message, tag = "5")]
727 TextEnd(super::TextEnd),
728 #[prost(message, tag = "6")]
729 ReasoningStart(super::ReasoningStart),
730 #[prost(message, tag = "7")]
731 ReasoningDelta(super::ReasoningDelta),
732 #[prost(message, tag = "8")]
733 ReasoningEnd(super::ReasoningEnd),
734 #[prost(message, tag = "10")]
735 ToolAction(super::ToolAction),
736 #[prost(message, tag = "11")]
737 ToolActionConfirmation(super::ToolActionConfirmation),
738 #[prost(message, tag = "12")]
739 StepStart(super::StepStart),
740 #[prost(message, tag = "13")]
741 StepEnd(super::StepEnd),
742 #[prost(message, tag = "14")]
743 ClientDirective(super::ClientDirective),
744 #[prost(message, tag = "15")]
745 CompactionNotice(super::CompactionNotice),
746 #[prost(message, tag = "16")]
747 StreamReset(super::StreamReset),
748 }
749}
750#[derive(Clone, Copy, PartialEq, ::prost::Message)]
751pub struct StreamReset {}
752#[derive(Clone, Copy, PartialEq, ::prost::Message)]
753pub struct StepStart {}
754#[derive(Clone, Copy, PartialEq, ::prost::Message)]
755pub struct StepEnd {}
756#[derive(Clone, Copy, PartialEq, ::prost::Message)]
757pub struct CompactionNotice {
758 #[prost(int32, tag = "1")]
759 pub tokens_before: i32,
760 #[prost(int32, tag = "2")]
761 pub estimated_checkpoint_tokens: i32,
762 #[prost(enumeration = "compaction_notice::Trigger", tag = "3")]
763 pub trigger: i32,
764}
765pub mod compaction_notice {
767 #[derive(
768 Clone,
769 Copy,
770 Debug,
771 PartialEq,
772 Eq,
773 Hash,
774 PartialOrd,
775 Ord,
776 ::prost::Enumeration
777 )]
778 #[repr(i32)]
779 pub enum Trigger {
780 Unspecified = 0,
781 PreTurn = 1,
782 MidRun = 2,
783 }
784 impl Trigger {
785 pub fn as_str_name(&self) -> &'static str {
790 match self {
791 Self::Unspecified => "TRIGGER_UNSPECIFIED",
792 Self::PreTurn => "TRIGGER_PRE_TURN",
793 Self::MidRun => "TRIGGER_MID_RUN",
794 }
795 }
796 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
798 match value {
799 "TRIGGER_UNSPECIFIED" => Some(Self::Unspecified),
800 "TRIGGER_PRE_TURN" => Some(Self::PreTurn),
801 "TRIGGER_MID_RUN" => Some(Self::MidRun),
802 _ => None,
803 }
804 }
805 }
806}
807#[derive(Clone, PartialEq, ::prost::Message)]
808pub struct ToolCallDescription {
809 #[prost(string, tag = "1")]
810 pub tool_call_id: ::prost::alloc::string::String,
811 #[prost(string, tag = "2")]
812 pub tool_name: ::prost::alloc::string::String,
813 #[prost(string, tag = "3")]
814 pub tool_args_json_string: ::prost::alloc::string::String,
815 #[prost(enumeration = "ToolCallStatus", tag = "4")]
816 pub status: i32,
817}
818#[derive(Clone, PartialEq, ::prost::Message)]
819pub struct UserQuestionCall {
820 #[prost(message, optional, tag = "1")]
821 pub tool_call: ::core::option::Option<ToolCallDescription>,
822 #[prost(uint32, tag = "2")]
823 pub current_question_index: u32,
824 #[prost(message, repeated, tag = "3")]
825 pub answers: ::prost::alloc::vec::Vec<UserQuestionAnswer>,
826 #[prost(enumeration = "UserQuestionState", tag = "4")]
827 pub state: i32,
828 #[prost(uint64, tag = "5")]
829 pub version: u64,
830}
831#[derive(Clone, PartialEq, ::prost::Message)]
832pub struct Finish {
833 #[prost(string, repeated, tag = "1")]
834 pub ordered_message_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
835 #[prost(string, optional, tag = "2")]
836 pub new_title: ::core::option::Option<::prost::alloc::string::String>,
837 #[prost(message, repeated, tag = "3")]
838 pub tool_approval_requests: ::prost::alloc::vec::Vec<ToolCallDescription>,
839 #[prost(message, optional, tag = "4")]
840 pub updated_context: ::core::option::Option<ContextStatus>,
841 #[prost(string, optional, tag = "5")]
842 pub turn_rid: ::core::option::Option<::prost::alloc::string::String>,
843 #[prost(message, repeated, tag = "6")]
844 pub user_question_calls: ::prost::alloc::vec::Vec<UserQuestionCall>,
845 #[prost(double, optional, tag = "7")]
846 pub duration_s: ::core::option::Option<f64>,
847}
848#[derive(Clone, PartialEq, ::prost::Message)]
849pub struct Error {
850 #[prost(string, tag = "1")]
851 pub message: ::prost::alloc::string::String,
852}
853#[derive(Clone, PartialEq, ::prost::Message)]
854pub struct TextStart {
855 #[prost(string, tag = "1")]
856 pub id: ::prost::alloc::string::String,
857}
858#[derive(Clone, PartialEq, ::prost::Message)]
859pub struct TextDelta {
860 #[prost(string, tag = "1")]
861 pub id: ::prost::alloc::string::String,
862 #[prost(string, tag = "2")]
863 pub delta: ::prost::alloc::string::String,
864}
865#[derive(Clone, PartialEq, ::prost::Message)]
866pub struct TextEnd {
867 #[prost(string, tag = "1")]
868 pub id: ::prost::alloc::string::String,
869}
870#[derive(Clone, PartialEq, ::prost::Message)]
871pub struct ReasoningStart {
872 #[prost(string, tag = "1")]
873 pub id: ::prost::alloc::string::String,
874}
875#[derive(Clone, PartialEq, ::prost::Message)]
876pub struct ReasoningDelta {
877 #[prost(string, tag = "1")]
878 pub id: ::prost::alloc::string::String,
879 #[prost(string, tag = "2")]
880 pub delta: ::prost::alloc::string::String,
881}
882#[derive(Clone, PartialEq, ::prost::Message)]
883pub struct ReasoningEnd {
884 #[prost(string, tag = "1")]
885 pub id: ::prost::alloc::string::String,
886 #[prost(double, tag = "2")]
887 pub duration_s: f64,
888}
889#[derive(Clone, PartialEq, ::prost::Message)]
890pub struct ToolAction {
891 #[prost(string, tag = "2")]
892 pub tool_action_verb: ::prost::alloc::string::String,
893 #[prost(string, optional, tag = "3")]
894 pub tool_target: ::core::option::Option<::prost::alloc::string::String>,
895 #[prost(message, optional, tag = "5")]
896 pub tool_call_description: ::core::option::Option<ToolCallDescription>,
897 #[deprecated]
898 #[prost(string, tag = "1")]
899 pub id: ::prost::alloc::string::String,
900 #[deprecated]
901 #[prost(string, tag = "4")]
902 pub tool_name: ::prost::alloc::string::String,
903}
904#[derive(Clone, PartialEq, ::prost::Message)]
905pub struct ToolActionConfirmation {
906 #[prost(string, tag = "1")]
907 pub id: ::prost::alloc::string::String,
908 #[prost(double, optional, tag = "4")]
909 pub duration_s: ::core::option::Option<f64>,
910 #[prost(oneof = "tool_action_confirmation::Outcome", tags = "2, 3")]
911 pub outcome: ::core::option::Option<tool_action_confirmation::Outcome>,
912}
913pub mod tool_action_confirmation {
915 #[derive(Clone, PartialEq, ::prost::Oneof)]
916 pub enum Outcome {
917 #[prost(message, tag = "2")]
918 Success(super::ToolActionSuccess),
919 #[prost(message, tag = "3")]
920 Failure(super::ToolActionFailure),
921 }
922}
923#[derive(Clone, PartialEq, ::prost::Message)]
924pub struct ToolActionSuccess {
925 #[prost(string, tag = "1")]
926 pub tool_success_message: ::prost::alloc::string::String,
927}
928#[derive(Clone, PartialEq, ::prost::Message)]
929pub struct ToolActionFailure {
930 #[prost(string, tag = "1")]
931 pub tool_error_message: ::prost::alloc::string::String,
932}
933#[derive(Clone, PartialEq, ::prost::Message)]
934pub struct ClientDirective {
935 #[prost(oneof = "client_directive::Version", tags = "1")]
936 pub version: ::core::option::Option<client_directive::Version>,
937}
938pub mod client_directive {
940 #[derive(Clone, PartialEq, ::prost::Oneof)]
941 pub enum Version {
942 #[prost(message, tag = "1")]
943 V1(super::ClientDirectiveV1),
944 }
945}
946#[derive(Clone, PartialEq, ::prost::Message)]
947pub struct ClientDirectiveV1 {
948 #[prost(string, tag = "1")]
949 pub id: ::prost::alloc::string::String,
950 #[prost(oneof = "client_directive_v1::Kind", tags = "2, 3")]
951 pub kind: ::core::option::Option<client_directive_v1::Kind>,
952}
953pub mod client_directive_v1 {
955 #[derive(Clone, PartialEq, ::prost::Oneof)]
956 pub enum Kind {
957 #[prost(message, tag = "2")]
958 ResourceEdited(super::ResourceEditedDirective),
959 #[prost(message, tag = "3")]
960 SetTimeRange(super::SetTimeRangeDirective),
961 }
962}
963#[derive(Clone, PartialEq, ::prost::Message)]
964pub struct ResourceEditedDirective {
965 #[prost(oneof = "resource_edited_directive::Resource", tags = "1, 2, 3")]
966 pub resource: ::core::option::Option<resource_edited_directive::Resource>,
967}
968pub mod resource_edited_directive {
970 #[derive(Clone, PartialEq, ::prost::Oneof)]
971 pub enum Resource {
972 #[prost(message, tag = "1")]
973 Checklist(super::ChecklistEdited),
974 #[prost(message, tag = "2")]
975 Template(super::TemplateEdited),
976 #[prost(message, tag = "3")]
977 Workbook(super::WorkbookEdited),
978 }
979}
980#[derive(Clone, PartialEq, ::prost::Message)]
981pub struct ChecklistEdited {
982 #[prost(string, tag = "1")]
983 pub checklist_rid: ::prost::alloc::string::String,
984 #[prost(string, tag = "2")]
985 pub branch_name: ::prost::alloc::string::String,
986 #[prost(string, optional, tag = "3")]
987 pub check_id: ::core::option::Option<::prost::alloc::string::String>,
988 #[prost(string, optional, tag = "4")]
989 pub commit_id: ::core::option::Option<::prost::alloc::string::String>,
990 #[prost(message, optional, tag = "5")]
991 pub committed_at: ::core::option::Option<
992 super::super::super::google::protobuf::Timestamp,
993 >,
994}
995#[derive(Clone, PartialEq, ::prost::Message)]
996pub struct TemplateEdited {
997 #[prost(string, tag = "1")]
998 pub template_rid: ::prost::alloc::string::String,
999 #[prost(string, tag = "2")]
1000 pub branch_name: ::prost::alloc::string::String,
1001 #[prost(string, optional, tag = "3")]
1002 pub commit_id: ::core::option::Option<::prost::alloc::string::String>,
1003 #[prost(message, optional, tag = "4")]
1004 pub committed_at: ::core::option::Option<
1005 super::super::super::google::protobuf::Timestamp,
1006 >,
1007}
1008#[derive(Clone, PartialEq, ::prost::Message)]
1009pub struct WorkbookEdited {
1010 #[prost(string, tag = "1")]
1011 pub workbook_rid: ::prost::alloc::string::String,
1012}
1013#[derive(Clone, PartialEq, ::prost::Message)]
1014pub struct SetTimeRangeDirective {
1015 #[prost(string, tag = "1")]
1016 pub workbook_rid: ::prost::alloc::string::String,
1017 #[prost(message, optional, tag = "2")]
1018 pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1019 #[prost(message, optional, tag = "3")]
1020 pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1021 #[prost(enumeration = "TimeRangeType", tag = "4")]
1022 pub time_range_type: i32,
1023}
1024#[derive(Clone, PartialEq, ::prost::Message)]
1025pub struct ResourceMarkup {
1026 #[prost(oneof = "resource_markup::Kind", tags = "1, 2")]
1027 pub kind: ::core::option::Option<resource_markup::Kind>,
1028}
1029pub mod resource_markup {
1031 #[derive(Clone, PartialEq, ::prost::Oneof)]
1032 pub enum Kind {
1033 #[prost(message, tag = "1")]
1034 Rid(super::RidResourceMarkup),
1035 #[prost(message, tag = "2")]
1036 RidList(super::RidListResourceMarkup),
1037 }
1038}
1039#[derive(Clone, PartialEq, ::prost::Message)]
1040pub struct RidResourceMarkup {
1041 #[prost(string, tag = "1")]
1042 pub rid: ::prost::alloc::string::String,
1043 #[prost(string, optional, tag = "2")]
1044 pub label: ::core::option::Option<::prost::alloc::string::String>,
1045}
1046#[derive(Clone, PartialEq, ::prost::Message)]
1047pub struct RidListResourceMarkup {
1048 #[prost(string, repeated, tag = "1")]
1049 pub rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1050 #[prost(string, optional, tag = "2")]
1051 pub label: ::core::option::Option<::prost::alloc::string::String>,
1052}
1053#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1054pub struct ContextStatus {
1055 #[prost(int32, tag = "1")]
1056 pub curr_token_count: i32,
1057 #[prost(int32, tag = "2")]
1058 pub model_context_limit: i32,
1059}
1060#[derive(Clone, PartialEq, ::prost::Message)]
1061pub struct ComputeProvenanceV1 {
1062 #[prost(string, tag = "1")]
1063 pub compute_request_json: ::prost::alloc::string::String,
1064 #[prost(string, tag = "2")]
1065 pub label: ::prost::alloc::string::String,
1066 #[prost(string, optional, tag = "3")]
1067 pub code: ::core::option::Option<::prost::alloc::string::String>,
1068 #[prost(enumeration = "ComputeOutputType", tag = "4")]
1069 pub output_type: i32,
1070}
1071#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1072#[repr(i32)]
1073pub enum QueuedMessageState {
1074 Unspecified = 0,
1075 Queued = 1,
1076 Dispatching = 2,
1077 Failed = 3,
1078}
1079impl QueuedMessageState {
1080 pub fn as_str_name(&self) -> &'static str {
1085 match self {
1086 Self::Unspecified => "QUEUED_MESSAGE_STATE_UNSPECIFIED",
1087 Self::Queued => "QUEUED_MESSAGE_STATE_QUEUED",
1088 Self::Dispatching => "QUEUED_MESSAGE_STATE_DISPATCHING",
1089 Self::Failed => "QUEUED_MESSAGE_STATE_FAILED",
1090 }
1091 }
1092 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1094 match value {
1095 "QUEUED_MESSAGE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
1096 "QUEUED_MESSAGE_STATE_QUEUED" => Some(Self::Queued),
1097 "QUEUED_MESSAGE_STATE_DISPATCHING" => Some(Self::Dispatching),
1098 "QUEUED_MESSAGE_STATE_FAILED" => Some(Self::Failed),
1099 _ => None,
1100 }
1101 }
1102}
1103#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1104#[repr(i32)]
1105pub enum FeedbackVote {
1106 Unspecified = 0,
1107 ThumbsUp = 1,
1108 ThumbsDown = 2,
1109}
1110impl FeedbackVote {
1111 pub fn as_str_name(&self) -> &'static str {
1116 match self {
1117 Self::Unspecified => "FEEDBACK_VOTE_UNSPECIFIED",
1118 Self::ThumbsUp => "FEEDBACK_VOTE_THUMBS_UP",
1119 Self::ThumbsDown => "FEEDBACK_VOTE_THUMBS_DOWN",
1120 }
1121 }
1122 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1124 match value {
1125 "FEEDBACK_VOTE_UNSPECIFIED" => Some(Self::Unspecified),
1126 "FEEDBACK_VOTE_THUMBS_UP" => Some(Self::ThumbsUp),
1127 "FEEDBACK_VOTE_THUMBS_DOWN" => Some(Self::ThumbsDown),
1128 _ => None,
1129 }
1130 }
1131}
1132#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1133#[repr(i32)]
1134pub enum AgentRunExecutionMode {
1135 Unspecified = 0,
1136 Inline = 1,
1137 Durable = 2,
1138}
1139impl AgentRunExecutionMode {
1140 pub fn as_str_name(&self) -> &'static str {
1145 match self {
1146 Self::Unspecified => "AGENT_RUN_EXECUTION_MODE_UNSPECIFIED",
1147 Self::Inline => "AGENT_RUN_EXECUTION_MODE_INLINE",
1148 Self::Durable => "AGENT_RUN_EXECUTION_MODE_DURABLE",
1149 }
1150 }
1151 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1153 match value {
1154 "AGENT_RUN_EXECUTION_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1155 "AGENT_RUN_EXECUTION_MODE_INLINE" => Some(Self::Inline),
1156 "AGENT_RUN_EXECUTION_MODE_DURABLE" => Some(Self::Durable),
1157 _ => None,
1158 }
1159 }
1160}
1161#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1162#[repr(i32)]
1163pub enum ToolCallStatus {
1164 Unspecified = 0,
1165 Approved = 1,
1166 Denied = 2,
1167 AwaitingApproval = 3,
1168}
1169impl ToolCallStatus {
1170 pub fn as_str_name(&self) -> &'static str {
1175 match self {
1176 Self::Unspecified => "TOOL_CALL_STATUS_UNSPECIFIED",
1177 Self::Approved => "TOOL_CALL_STATUS_APPROVED",
1178 Self::Denied => "TOOL_CALL_STATUS_DENIED",
1179 Self::AwaitingApproval => "TOOL_CALL_STATUS_AWAITING_APPROVAL",
1180 }
1181 }
1182 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1184 match value {
1185 "TOOL_CALL_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1186 "TOOL_CALL_STATUS_APPROVED" => Some(Self::Approved),
1187 "TOOL_CALL_STATUS_DENIED" => Some(Self::Denied),
1188 "TOOL_CALL_STATUS_AWAITING_APPROVAL" => Some(Self::AwaitingApproval),
1189 _ => None,
1190 }
1191 }
1192}
1193#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1194#[repr(i32)]
1195pub enum UserQuestionState {
1196 Unspecified = 0,
1197 Pending = 1,
1198 Answered = 2,
1199 Declined = 3,
1200}
1201impl UserQuestionState {
1202 pub fn as_str_name(&self) -> &'static str {
1207 match self {
1208 Self::Unspecified => "USER_QUESTION_STATE_UNSPECIFIED",
1209 Self::Pending => "USER_QUESTION_STATE_PENDING",
1210 Self::Answered => "USER_QUESTION_STATE_ANSWERED",
1211 Self::Declined => "USER_QUESTION_STATE_DECLINED",
1212 }
1213 }
1214 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1216 match value {
1217 "USER_QUESTION_STATE_UNSPECIFIED" => Some(Self::Unspecified),
1218 "USER_QUESTION_STATE_PENDING" => Some(Self::Pending),
1219 "USER_QUESTION_STATE_ANSWERED" => Some(Self::Answered),
1220 "USER_QUESTION_STATE_DECLINED" => Some(Self::Declined),
1221 _ => None,
1222 }
1223 }
1224}
1225#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1226#[repr(i32)]
1227pub enum TimeRangeType {
1228 Unspecified = 0,
1229 Absolute = 1,
1230 Relative = 2,
1231}
1232impl TimeRangeType {
1233 pub fn as_str_name(&self) -> &'static str {
1238 match self {
1239 Self::Unspecified => "TIME_RANGE_TYPE_UNSPECIFIED",
1240 Self::Absolute => "TIME_RANGE_TYPE_ABSOLUTE",
1241 Self::Relative => "TIME_RANGE_TYPE_RELATIVE",
1242 }
1243 }
1244 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1246 match value {
1247 "TIME_RANGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1248 "TIME_RANGE_TYPE_ABSOLUTE" => Some(Self::Absolute),
1249 "TIME_RANGE_TYPE_RELATIVE" => Some(Self::Relative),
1250 _ => None,
1251 }
1252 }
1253}
1254#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1255#[repr(i32)]
1256pub enum ComputeOutputType {
1257 Unspecified = 0,
1258 RangeSeries = 1,
1259 NumericSeries = 2,
1260 NumericArraySeries = 3,
1261 EnumSeries = 4,
1262 EnumArraySeries = 5,
1263 LogSeries = 6,
1264 StructSeries = 7,
1265 VideoSeries = 8,
1266 UntypedSeries = 9,
1267 GroupedSeries = 10,
1268 LastPoint = 11,
1269 LastRange = 12,
1270 CartesianPoints = 13,
1271 Cartesian3dPoints = 14,
1272 Multivariate = 15,
1273 NumericHistogram = 16,
1274 FrequencyDomain = 17,
1275 FrequencyDomainV2 = 18,
1276 BucketedFrequencyDomain = 19,
1277 NumericRangeAggregate = 20,
1278 CurveFit = 21,
1279 CurveV2 = 22,
1280}
1281impl ComputeOutputType {
1282 pub fn as_str_name(&self) -> &'static str {
1287 match self {
1288 Self::Unspecified => "COMPUTE_OUTPUT_TYPE_UNSPECIFIED",
1289 Self::RangeSeries => "COMPUTE_OUTPUT_TYPE_RANGE_SERIES",
1290 Self::NumericSeries => "COMPUTE_OUTPUT_TYPE_NUMERIC_SERIES",
1291 Self::NumericArraySeries => "COMPUTE_OUTPUT_TYPE_NUMERIC_ARRAY_SERIES",
1292 Self::EnumSeries => "COMPUTE_OUTPUT_TYPE_ENUM_SERIES",
1293 Self::EnumArraySeries => "COMPUTE_OUTPUT_TYPE_ENUM_ARRAY_SERIES",
1294 Self::LogSeries => "COMPUTE_OUTPUT_TYPE_LOG_SERIES",
1295 Self::StructSeries => "COMPUTE_OUTPUT_TYPE_STRUCT_SERIES",
1296 Self::VideoSeries => "COMPUTE_OUTPUT_TYPE_VIDEO_SERIES",
1297 Self::UntypedSeries => "COMPUTE_OUTPUT_TYPE_UNTYPED_SERIES",
1298 Self::GroupedSeries => "COMPUTE_OUTPUT_TYPE_GROUPED_SERIES",
1299 Self::LastPoint => "COMPUTE_OUTPUT_TYPE_LAST_POINT",
1300 Self::LastRange => "COMPUTE_OUTPUT_TYPE_LAST_RANGE",
1301 Self::CartesianPoints => "COMPUTE_OUTPUT_TYPE_CARTESIAN_POINTS",
1302 Self::Cartesian3dPoints => "COMPUTE_OUTPUT_TYPE_CARTESIAN_3D_POINTS",
1303 Self::Multivariate => "COMPUTE_OUTPUT_TYPE_MULTIVARIATE",
1304 Self::NumericHistogram => "COMPUTE_OUTPUT_TYPE_NUMERIC_HISTOGRAM",
1305 Self::FrequencyDomain => "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN",
1306 Self::FrequencyDomainV2 => "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN_V2",
1307 Self::BucketedFrequencyDomain => {
1308 "COMPUTE_OUTPUT_TYPE_BUCKETED_FREQUENCY_DOMAIN"
1309 }
1310 Self::NumericRangeAggregate => "COMPUTE_OUTPUT_TYPE_NUMERIC_RANGE_AGGREGATE",
1311 Self::CurveFit => "COMPUTE_OUTPUT_TYPE_CURVE_FIT",
1312 Self::CurveV2 => "COMPUTE_OUTPUT_TYPE_CURVE_V2",
1313 }
1314 }
1315 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1317 match value {
1318 "COMPUTE_OUTPUT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1319 "COMPUTE_OUTPUT_TYPE_RANGE_SERIES" => Some(Self::RangeSeries),
1320 "COMPUTE_OUTPUT_TYPE_NUMERIC_SERIES" => Some(Self::NumericSeries),
1321 "COMPUTE_OUTPUT_TYPE_NUMERIC_ARRAY_SERIES" => Some(Self::NumericArraySeries),
1322 "COMPUTE_OUTPUT_TYPE_ENUM_SERIES" => Some(Self::EnumSeries),
1323 "COMPUTE_OUTPUT_TYPE_ENUM_ARRAY_SERIES" => Some(Self::EnumArraySeries),
1324 "COMPUTE_OUTPUT_TYPE_LOG_SERIES" => Some(Self::LogSeries),
1325 "COMPUTE_OUTPUT_TYPE_STRUCT_SERIES" => Some(Self::StructSeries),
1326 "COMPUTE_OUTPUT_TYPE_VIDEO_SERIES" => Some(Self::VideoSeries),
1327 "COMPUTE_OUTPUT_TYPE_UNTYPED_SERIES" => Some(Self::UntypedSeries),
1328 "COMPUTE_OUTPUT_TYPE_GROUPED_SERIES" => Some(Self::GroupedSeries),
1329 "COMPUTE_OUTPUT_TYPE_LAST_POINT" => Some(Self::LastPoint),
1330 "COMPUTE_OUTPUT_TYPE_LAST_RANGE" => Some(Self::LastRange),
1331 "COMPUTE_OUTPUT_TYPE_CARTESIAN_POINTS" => Some(Self::CartesianPoints),
1332 "COMPUTE_OUTPUT_TYPE_CARTESIAN_3D_POINTS" => Some(Self::Cartesian3dPoints),
1333 "COMPUTE_OUTPUT_TYPE_MULTIVARIATE" => Some(Self::Multivariate),
1334 "COMPUTE_OUTPUT_TYPE_NUMERIC_HISTOGRAM" => Some(Self::NumericHistogram),
1335 "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN" => Some(Self::FrequencyDomain),
1336 "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN_V2" => Some(Self::FrequencyDomainV2),
1337 "COMPUTE_OUTPUT_TYPE_BUCKETED_FREQUENCY_DOMAIN" => {
1338 Some(Self::BucketedFrequencyDomain)
1339 }
1340 "COMPUTE_OUTPUT_TYPE_NUMERIC_RANGE_AGGREGATE" => {
1341 Some(Self::NumericRangeAggregate)
1342 }
1343 "COMPUTE_OUTPUT_TYPE_CURVE_FIT" => Some(Self::CurveFit),
1344 "COMPUTE_OUTPUT_TYPE_CURVE_V2" => Some(Self::CurveV2),
1345 _ => None,
1346 }
1347 }
1348}
1349pub mod ai_agent_service_client {
1351 #![allow(
1352 unused_variables,
1353 dead_code,
1354 missing_docs,
1355 clippy::wildcard_imports,
1356 clippy::let_unit_value,
1357 )]
1358 use tonic::codegen::*;
1359 use tonic::codegen::http::Uri;
1360 #[derive(Debug, Clone)]
1361 pub struct AiAgentServiceClient<T> {
1362 inner: tonic::client::Grpc<T>,
1363 }
1364 impl AiAgentServiceClient<tonic::transport::Channel> {
1365 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1367 where
1368 D: TryInto<tonic::transport::Endpoint>,
1369 D::Error: Into<StdError>,
1370 {
1371 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1372 Ok(Self::new(conn))
1373 }
1374 }
1375 impl<T> AiAgentServiceClient<T>
1376 where
1377 T: tonic::client::GrpcService<tonic::body::Body>,
1378 T::Error: Into<StdError>,
1379 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1380 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1381 {
1382 pub fn new(inner: T) -> Self {
1383 let inner = tonic::client::Grpc::new(inner);
1384 Self { inner }
1385 }
1386 pub fn with_origin(inner: T, origin: Uri) -> Self {
1387 let inner = tonic::client::Grpc::with_origin(inner, origin);
1388 Self { inner }
1389 }
1390 pub fn with_interceptor<F>(
1391 inner: T,
1392 interceptor: F,
1393 ) -> AiAgentServiceClient<InterceptedService<T, F>>
1394 where
1395 F: tonic::service::Interceptor,
1396 T::ResponseBody: Default,
1397 T: tonic::codegen::Service<
1398 http::Request<tonic::body::Body>,
1399 Response = http::Response<
1400 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1401 >,
1402 >,
1403 <T as tonic::codegen::Service<
1404 http::Request<tonic::body::Body>,
1405 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1406 {
1407 AiAgentServiceClient::new(InterceptedService::new(inner, interceptor))
1408 }
1409 #[must_use]
1414 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1415 self.inner = self.inner.send_compressed(encoding);
1416 self
1417 }
1418 #[must_use]
1420 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1421 self.inner = self.inner.accept_compressed(encoding);
1422 self
1423 }
1424 #[must_use]
1428 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1429 self.inner = self.inner.max_decoding_message_size(limit);
1430 self
1431 }
1432 #[must_use]
1436 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1437 self.inner = self.inner.max_encoding_message_size(limit);
1438 self
1439 }
1440 pub async fn list_models(
1441 &mut self,
1442 request: impl tonic::IntoRequest<super::ListModelsRequest>,
1443 ) -> std::result::Result<
1444 tonic::Response<super::ListModelsResponse>,
1445 tonic::Status,
1446 > {
1447 self.inner
1448 .ready()
1449 .await
1450 .map_err(|e| {
1451 tonic::Status::unknown(
1452 format!("Service was not ready: {}", e.into()),
1453 )
1454 })?;
1455 let codec = tonic::codec::ProstCodec::default();
1456 let path = http::uri::PathAndQuery::from_static(
1457 "/nominal.ai.v1.AIAgentService/ListModels",
1458 );
1459 let mut req = request.into_request();
1460 req.extensions_mut()
1461 .insert(GrpcMethod::new("nominal.ai.v1.AIAgentService", "ListModels"));
1462 self.inner.unary(req, path, codec).await
1463 }
1464 pub async fn stream_chat(
1465 &mut self,
1466 request: impl tonic::IntoRequest<super::StreamChatRequest>,
1467 ) -> std::result::Result<
1468 tonic::Response<tonic::codec::Streaming<super::StreamChatResponse>>,
1469 tonic::Status,
1470 > {
1471 self.inner
1472 .ready()
1473 .await
1474 .map_err(|e| {
1475 tonic::Status::unknown(
1476 format!("Service was not ready: {}", e.into()),
1477 )
1478 })?;
1479 let codec = tonic::codec::ProstCodec::default();
1480 let path = http::uri::PathAndQuery::from_static(
1481 "/nominal.ai.v1.AIAgentService/StreamChat",
1482 );
1483 let mut req = request.into_request();
1484 req.extensions_mut()
1485 .insert(GrpcMethod::new("nominal.ai.v1.AIAgentService", "StreamChat"));
1486 self.inner.server_streaming(req, path, codec).await
1487 }
1488 #[deprecated]
1489 pub async fn get_conversation(
1490 &mut self,
1491 request: impl tonic::IntoRequest<super::GetConversationRequest>,
1492 ) -> std::result::Result<
1493 tonic::Response<super::GetConversationResponse>,
1494 tonic::Status,
1495 > {
1496 self.inner
1497 .ready()
1498 .await
1499 .map_err(|e| {
1500 tonic::Status::unknown(
1501 format!("Service was not ready: {}", e.into()),
1502 )
1503 })?;
1504 let codec = tonic::codec::ProstCodec::default();
1505 let path = http::uri::PathAndQuery::from_static(
1506 "/nominal.ai.v1.AIAgentService/GetConversation",
1507 );
1508 let mut req = request.into_request();
1509 req.extensions_mut()
1510 .insert(
1511 GrpcMethod::new("nominal.ai.v1.AIAgentService", "GetConversation"),
1512 );
1513 self.inner.unary(req, path, codec).await
1514 }
1515 pub async fn get_conversation_metadata(
1516 &mut self,
1517 request: impl tonic::IntoRequest<super::GetConversationMetadataRequest>,
1518 ) -> std::result::Result<
1519 tonic::Response<super::GetConversationMetadataResponse>,
1520 tonic::Status,
1521 > {
1522 self.inner
1523 .ready()
1524 .await
1525 .map_err(|e| {
1526 tonic::Status::unknown(
1527 format!("Service was not ready: {}", e.into()),
1528 )
1529 })?;
1530 let codec = tonic::codec::ProstCodec::default();
1531 let path = http::uri::PathAndQuery::from_static(
1532 "/nominal.ai.v1.AIAgentService/GetConversationMetadata",
1533 );
1534 let mut req = request.into_request();
1535 req.extensions_mut()
1536 .insert(
1537 GrpcMethod::new(
1538 "nominal.ai.v1.AIAgentService",
1539 "GetConversationMetadata",
1540 ),
1541 );
1542 self.inner.unary(req, path, codec).await
1543 }
1544 pub async fn get_conversation_messages(
1545 &mut self,
1546 request: impl tonic::IntoRequest<super::GetConversationMessagesRequest>,
1547 ) -> std::result::Result<
1548 tonic::Response<super::GetConversationMessagesResponse>,
1549 tonic::Status,
1550 > {
1551 self.inner
1552 .ready()
1553 .await
1554 .map_err(|e| {
1555 tonic::Status::unknown(
1556 format!("Service was not ready: {}", e.into()),
1557 )
1558 })?;
1559 let codec = tonic::codec::ProstCodec::default();
1560 let path = http::uri::PathAndQuery::from_static(
1561 "/nominal.ai.v1.AIAgentService/GetConversationMessages",
1562 );
1563 let mut req = request.into_request();
1564 req.extensions_mut()
1565 .insert(
1566 GrpcMethod::new(
1567 "nominal.ai.v1.AIAgentService",
1568 "GetConversationMessages",
1569 ),
1570 );
1571 self.inner.unary(req, path, codec).await
1572 }
1573 pub async fn list_conversations(
1574 &mut self,
1575 request: impl tonic::IntoRequest<super::ListConversationsRequest>,
1576 ) -> std::result::Result<
1577 tonic::Response<super::ListConversationsResponse>,
1578 tonic::Status,
1579 > {
1580 self.inner
1581 .ready()
1582 .await
1583 .map_err(|e| {
1584 tonic::Status::unknown(
1585 format!("Service was not ready: {}", e.into()),
1586 )
1587 })?;
1588 let codec = tonic::codec::ProstCodec::default();
1589 let path = http::uri::PathAndQuery::from_static(
1590 "/nominal.ai.v1.AIAgentService/ListConversations",
1591 );
1592 let mut req = request.into_request();
1593 req.extensions_mut()
1594 .insert(
1595 GrpcMethod::new("nominal.ai.v1.AIAgentService", "ListConversations"),
1596 );
1597 self.inner.unary(req, path, codec).await
1598 }
1599 pub async fn batch_get_conversation_active_runs(
1600 &mut self,
1601 request: impl tonic::IntoRequest<
1602 super::BatchGetConversationActiveRunsRequest,
1603 >,
1604 ) -> std::result::Result<
1605 tonic::Response<super::BatchGetConversationActiveRunsResponse>,
1606 tonic::Status,
1607 > {
1608 self.inner
1609 .ready()
1610 .await
1611 .map_err(|e| {
1612 tonic::Status::unknown(
1613 format!("Service was not ready: {}", e.into()),
1614 )
1615 })?;
1616 let codec = tonic::codec::ProstCodec::default();
1617 let path = http::uri::PathAndQuery::from_static(
1618 "/nominal.ai.v1.AIAgentService/BatchGetConversationActiveRuns",
1619 );
1620 let mut req = request.into_request();
1621 req.extensions_mut()
1622 .insert(
1623 GrpcMethod::new(
1624 "nominal.ai.v1.AIAgentService",
1625 "BatchGetConversationActiveRuns",
1626 ),
1627 );
1628 self.inner.unary(req, path, codec).await
1629 }
1630 pub async fn create_conversation(
1631 &mut self,
1632 request: impl tonic::IntoRequest<super::CreateConversationRequest>,
1633 ) -> std::result::Result<
1634 tonic::Response<super::CreateConversationResponse>,
1635 tonic::Status,
1636 > {
1637 self.inner
1638 .ready()
1639 .await
1640 .map_err(|e| {
1641 tonic::Status::unknown(
1642 format!("Service was not ready: {}", e.into()),
1643 )
1644 })?;
1645 let codec = tonic::codec::ProstCodec::default();
1646 let path = http::uri::PathAndQuery::from_static(
1647 "/nominal.ai.v1.AIAgentService/CreateConversation",
1648 );
1649 let mut req = request.into_request();
1650 req.extensions_mut()
1651 .insert(
1652 GrpcMethod::new("nominal.ai.v1.AIAgentService", "CreateConversation"),
1653 );
1654 self.inner.unary(req, path, codec).await
1655 }
1656 pub async fn update_conversation_metadata(
1657 &mut self,
1658 request: impl tonic::IntoRequest<super::UpdateConversationMetadataRequest>,
1659 ) -> std::result::Result<
1660 tonic::Response<super::UpdateConversationMetadataResponse>,
1661 tonic::Status,
1662 > {
1663 self.inner
1664 .ready()
1665 .await
1666 .map_err(|e| {
1667 tonic::Status::unknown(
1668 format!("Service was not ready: {}", e.into()),
1669 )
1670 })?;
1671 let codec = tonic::codec::ProstCodec::default();
1672 let path = http::uri::PathAndQuery::from_static(
1673 "/nominal.ai.v1.AIAgentService/UpdateConversationMetadata",
1674 );
1675 let mut req = request.into_request();
1676 req.extensions_mut()
1677 .insert(
1678 GrpcMethod::new(
1679 "nominal.ai.v1.AIAgentService",
1680 "UpdateConversationMetadata",
1681 ),
1682 );
1683 self.inner.unary(req, path, codec).await
1684 }
1685 pub async fn delete_conversation(
1686 &mut self,
1687 request: impl tonic::IntoRequest<super::DeleteConversationRequest>,
1688 ) -> std::result::Result<
1689 tonic::Response<super::DeleteConversationResponse>,
1690 tonic::Status,
1691 > {
1692 self.inner
1693 .ready()
1694 .await
1695 .map_err(|e| {
1696 tonic::Status::unknown(
1697 format!("Service was not ready: {}", e.into()),
1698 )
1699 })?;
1700 let codec = tonic::codec::ProstCodec::default();
1701 let path = http::uri::PathAndQuery::from_static(
1702 "/nominal.ai.v1.AIAgentService/DeleteConversation",
1703 );
1704 let mut req = request.into_request();
1705 req.extensions_mut()
1706 .insert(
1707 GrpcMethod::new("nominal.ai.v1.AIAgentService", "DeleteConversation"),
1708 );
1709 self.inner.unary(req, path, codec).await
1710 }
1711 pub async fn archive_conversation(
1712 &mut self,
1713 request: impl tonic::IntoRequest<super::ArchiveConversationRequest>,
1714 ) -> std::result::Result<
1715 tonic::Response<super::ArchiveConversationResponse>,
1716 tonic::Status,
1717 > {
1718 self.inner
1719 .ready()
1720 .await
1721 .map_err(|e| {
1722 tonic::Status::unknown(
1723 format!("Service was not ready: {}", e.into()),
1724 )
1725 })?;
1726 let codec = tonic::codec::ProstCodec::default();
1727 let path = http::uri::PathAndQuery::from_static(
1728 "/nominal.ai.v1.AIAgentService/ArchiveConversation",
1729 );
1730 let mut req = request.into_request();
1731 req.extensions_mut()
1732 .insert(
1733 GrpcMethod::new(
1734 "nominal.ai.v1.AIAgentService",
1735 "ArchiveConversation",
1736 ),
1737 );
1738 self.inner.unary(req, path, codec).await
1739 }
1740 pub async fn unarchive_conversation(
1741 &mut self,
1742 request: impl tonic::IntoRequest<super::UnarchiveConversationRequest>,
1743 ) -> std::result::Result<
1744 tonic::Response<super::UnarchiveConversationResponse>,
1745 tonic::Status,
1746 > {
1747 self.inner
1748 .ready()
1749 .await
1750 .map_err(|e| {
1751 tonic::Status::unknown(
1752 format!("Service was not ready: {}", e.into()),
1753 )
1754 })?;
1755 let codec = tonic::codec::ProstCodec::default();
1756 let path = http::uri::PathAndQuery::from_static(
1757 "/nominal.ai.v1.AIAgentService/UnarchiveConversation",
1758 );
1759 let mut req = request.into_request();
1760 req.extensions_mut()
1761 .insert(
1762 GrpcMethod::new(
1763 "nominal.ai.v1.AIAgentService",
1764 "UnarchiveConversation",
1765 ),
1766 );
1767 self.inner.unary(req, path, codec).await
1768 }
1769 pub async fn get_snapshot_rid_by_user_message_id(
1770 &mut self,
1771 request: impl tonic::IntoRequest<super::GetSnapshotRidByUserMessageIdRequest>,
1772 ) -> std::result::Result<
1773 tonic::Response<super::GetSnapshotRidByUserMessageIdResponse>,
1774 tonic::Status,
1775 > {
1776 self.inner
1777 .ready()
1778 .await
1779 .map_err(|e| {
1780 tonic::Status::unknown(
1781 format!("Service was not ready: {}", e.into()),
1782 )
1783 })?;
1784 let codec = tonic::codec::ProstCodec::default();
1785 let path = http::uri::PathAndQuery::from_static(
1786 "/nominal.ai.v1.AIAgentService/GetSnapshotRidByUserMessageId",
1787 );
1788 let mut req = request.into_request();
1789 req.extensions_mut()
1790 .insert(
1791 GrpcMethod::new(
1792 "nominal.ai.v1.AIAgentService",
1793 "GetSnapshotRidByUserMessageId",
1794 ),
1795 );
1796 self.inner.unary(req, path, codec).await
1797 }
1798 pub async fn compact_conversation(
1799 &mut self,
1800 request: impl tonic::IntoRequest<super::CompactConversationRequest>,
1801 ) -> std::result::Result<
1802 tonic::Response<super::CompactConversationResponse>,
1803 tonic::Status,
1804 > {
1805 self.inner
1806 .ready()
1807 .await
1808 .map_err(|e| {
1809 tonic::Status::unknown(
1810 format!("Service was not ready: {}", e.into()),
1811 )
1812 })?;
1813 let codec = tonic::codec::ProstCodec::default();
1814 let path = http::uri::PathAndQuery::from_static(
1815 "/nominal.ai.v1.AIAgentService/CompactConversation",
1816 );
1817 let mut req = request.into_request();
1818 req.extensions_mut()
1819 .insert(
1820 GrpcMethod::new(
1821 "nominal.ai.v1.AIAgentService",
1822 "CompactConversation",
1823 ),
1824 );
1825 self.inner.unary(req, path, codec).await
1826 }
1827 pub async fn submit_message_feedback(
1828 &mut self,
1829 request: impl tonic::IntoRequest<super::SubmitMessageFeedbackRequest>,
1830 ) -> std::result::Result<
1831 tonic::Response<super::SubmitMessageFeedbackResponse>,
1832 tonic::Status,
1833 > {
1834 self.inner
1835 .ready()
1836 .await
1837 .map_err(|e| {
1838 tonic::Status::unknown(
1839 format!("Service was not ready: {}", e.into()),
1840 )
1841 })?;
1842 let codec = tonic::codec::ProstCodec::default();
1843 let path = http::uri::PathAndQuery::from_static(
1844 "/nominal.ai.v1.AIAgentService/SubmitMessageFeedback",
1845 );
1846 let mut req = request.into_request();
1847 req.extensions_mut()
1848 .insert(
1849 GrpcMethod::new(
1850 "nominal.ai.v1.AIAgentService",
1851 "SubmitMessageFeedback",
1852 ),
1853 );
1854 self.inner.unary(req, path, codec).await
1855 }
1856 pub async fn update_conversation_resources(
1857 &mut self,
1858 request: impl tonic::IntoRequest<super::UpdateConversationResourcesRequest>,
1859 ) -> std::result::Result<
1860 tonic::Response<super::UpdateConversationResourcesResponse>,
1861 tonic::Status,
1862 > {
1863 self.inner
1864 .ready()
1865 .await
1866 .map_err(|e| {
1867 tonic::Status::unknown(
1868 format!("Service was not ready: {}", e.into()),
1869 )
1870 })?;
1871 let codec = tonic::codec::ProstCodec::default();
1872 let path = http::uri::PathAndQuery::from_static(
1873 "/nominal.ai.v1.AIAgentService/UpdateConversationResources",
1874 );
1875 let mut req = request.into_request();
1876 req.extensions_mut()
1877 .insert(
1878 GrpcMethod::new(
1879 "nominal.ai.v1.AIAgentService",
1880 "UpdateConversationResources",
1881 ),
1882 );
1883 self.inner.unary(req, path, codec).await
1884 }
1885 pub async fn create_queued_message(
1886 &mut self,
1887 request: impl tonic::IntoRequest<super::CreateQueuedMessageRequest>,
1888 ) -> std::result::Result<
1889 tonic::Response<super::CreateQueuedMessageResponse>,
1890 tonic::Status,
1891 > {
1892 self.inner
1893 .ready()
1894 .await
1895 .map_err(|e| {
1896 tonic::Status::unknown(
1897 format!("Service was not ready: {}", e.into()),
1898 )
1899 })?;
1900 let codec = tonic::codec::ProstCodec::default();
1901 let path = http::uri::PathAndQuery::from_static(
1902 "/nominal.ai.v1.AIAgentService/CreateQueuedMessage",
1903 );
1904 let mut req = request.into_request();
1905 req.extensions_mut()
1906 .insert(
1907 GrpcMethod::new(
1908 "nominal.ai.v1.AIAgentService",
1909 "CreateQueuedMessage",
1910 ),
1911 );
1912 self.inner.unary(req, path, codec).await
1913 }
1914 pub async fn list_queued_messages(
1915 &mut self,
1916 request: impl tonic::IntoRequest<super::ListQueuedMessagesRequest>,
1917 ) -> std::result::Result<
1918 tonic::Response<super::ListQueuedMessagesResponse>,
1919 tonic::Status,
1920 > {
1921 self.inner
1922 .ready()
1923 .await
1924 .map_err(|e| {
1925 tonic::Status::unknown(
1926 format!("Service was not ready: {}", e.into()),
1927 )
1928 })?;
1929 let codec = tonic::codec::ProstCodec::default();
1930 let path = http::uri::PathAndQuery::from_static(
1931 "/nominal.ai.v1.AIAgentService/ListQueuedMessages",
1932 );
1933 let mut req = request.into_request();
1934 req.extensions_mut()
1935 .insert(
1936 GrpcMethod::new("nominal.ai.v1.AIAgentService", "ListQueuedMessages"),
1937 );
1938 self.inner.unary(req, path, codec).await
1939 }
1940 pub async fn delete_queued_message(
1941 &mut self,
1942 request: impl tonic::IntoRequest<super::DeleteQueuedMessageRequest>,
1943 ) -> std::result::Result<
1944 tonic::Response<super::DeleteQueuedMessageResponse>,
1945 tonic::Status,
1946 > {
1947 self.inner
1948 .ready()
1949 .await
1950 .map_err(|e| {
1951 tonic::Status::unknown(
1952 format!("Service was not ready: {}", e.into()),
1953 )
1954 })?;
1955 let codec = tonic::codec::ProstCodec::default();
1956 let path = http::uri::PathAndQuery::from_static(
1957 "/nominal.ai.v1.AIAgentService/DeleteQueuedMessage",
1958 );
1959 let mut req = request.into_request();
1960 req.extensions_mut()
1961 .insert(
1962 GrpcMethod::new(
1963 "nominal.ai.v1.AIAgentService",
1964 "DeleteQueuedMessage",
1965 ),
1966 );
1967 self.inner.unary(req, path, codec).await
1968 }
1969 pub async fn cancel_agent_run(
1970 &mut self,
1971 request: impl tonic::IntoRequest<super::CancelAgentRunRequest>,
1972 ) -> std::result::Result<
1973 tonic::Response<super::CancelAgentRunResponse>,
1974 tonic::Status,
1975 > {
1976 self.inner
1977 .ready()
1978 .await
1979 .map_err(|e| {
1980 tonic::Status::unknown(
1981 format!("Service was not ready: {}", e.into()),
1982 )
1983 })?;
1984 let codec = tonic::codec::ProstCodec::default();
1985 let path = http::uri::PathAndQuery::from_static(
1986 "/nominal.ai.v1.AIAgentService/CancelAgentRun",
1987 );
1988 let mut req = request.into_request();
1989 req.extensions_mut()
1990 .insert(
1991 GrpcMethod::new("nominal.ai.v1.AIAgentService", "CancelAgentRun"),
1992 );
1993 self.inner.unary(req, path, codec).await
1994 }
1995 }
1996}
1997#[derive(Clone, PartialEq, ::prost::Message)]
1998pub struct ClassifyErrorRequest {
1999 #[prost(string, tag = "1")]
2000 pub error_message: ::prost::alloc::string::String,
2001}
2002#[derive(Clone, PartialEq, ::prost::Message)]
2003pub struct ClassifyErrorResponse {
2004 #[prost(enumeration = "ErrorClassification", tag = "1")]
2005 pub classification: i32,
2006 #[prost(string, tag = "2")]
2007 pub reason: ::prost::alloc::string::String,
2008}
2009#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2010#[repr(i32)]
2011pub enum ErrorClassification {
2012 Unspecified = 0,
2013 Client = 1,
2014 Server = 2,
2015}
2016impl ErrorClassification {
2017 pub fn as_str_name(&self) -> &'static str {
2022 match self {
2023 Self::Unspecified => "ERROR_CLASSIFICATION_UNSPECIFIED",
2024 Self::Client => "ERROR_CLASSIFICATION_CLIENT",
2025 Self::Server => "ERROR_CLASSIFICATION_SERVER",
2026 }
2027 }
2028 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2030 match value {
2031 "ERROR_CLASSIFICATION_UNSPECIFIED" => Some(Self::Unspecified),
2032 "ERROR_CLASSIFICATION_CLIENT" => Some(Self::Client),
2033 "ERROR_CLASSIFICATION_SERVER" => Some(Self::Server),
2034 _ => None,
2035 }
2036 }
2037}
2038pub mod data_ingestion_error_classifier_service_client {
2040 #![allow(
2041 unused_variables,
2042 dead_code,
2043 missing_docs,
2044 clippy::wildcard_imports,
2045 clippy::let_unit_value,
2046 )]
2047 use tonic::codegen::*;
2048 use tonic::codegen::http::Uri;
2049 #[derive(Debug, Clone)]
2050 pub struct DataIngestionErrorClassifierServiceClient<T> {
2051 inner: tonic::client::Grpc<T>,
2052 }
2053 impl DataIngestionErrorClassifierServiceClient<tonic::transport::Channel> {
2054 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2056 where
2057 D: TryInto<tonic::transport::Endpoint>,
2058 D::Error: Into<StdError>,
2059 {
2060 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2061 Ok(Self::new(conn))
2062 }
2063 }
2064 impl<T> DataIngestionErrorClassifierServiceClient<T>
2065 where
2066 T: tonic::client::GrpcService<tonic::body::Body>,
2067 T::Error: Into<StdError>,
2068 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2069 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2070 {
2071 pub fn new(inner: T) -> Self {
2072 let inner = tonic::client::Grpc::new(inner);
2073 Self { inner }
2074 }
2075 pub fn with_origin(inner: T, origin: Uri) -> Self {
2076 let inner = tonic::client::Grpc::with_origin(inner, origin);
2077 Self { inner }
2078 }
2079 pub fn with_interceptor<F>(
2080 inner: T,
2081 interceptor: F,
2082 ) -> DataIngestionErrorClassifierServiceClient<InterceptedService<T, F>>
2083 where
2084 F: tonic::service::Interceptor,
2085 T::ResponseBody: Default,
2086 T: tonic::codegen::Service<
2087 http::Request<tonic::body::Body>,
2088 Response = http::Response<
2089 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2090 >,
2091 >,
2092 <T as tonic::codegen::Service<
2093 http::Request<tonic::body::Body>,
2094 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2095 {
2096 DataIngestionErrorClassifierServiceClient::new(
2097 InterceptedService::new(inner, interceptor),
2098 )
2099 }
2100 #[must_use]
2105 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2106 self.inner = self.inner.send_compressed(encoding);
2107 self
2108 }
2109 #[must_use]
2111 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2112 self.inner = self.inner.accept_compressed(encoding);
2113 self
2114 }
2115 #[must_use]
2119 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2120 self.inner = self.inner.max_decoding_message_size(limit);
2121 self
2122 }
2123 #[must_use]
2127 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2128 self.inner = self.inner.max_encoding_message_size(limit);
2129 self
2130 }
2131 pub async fn classify_error(
2132 &mut self,
2133 request: impl tonic::IntoRequest<super::ClassifyErrorRequest>,
2134 ) -> std::result::Result<
2135 tonic::Response<super::ClassifyErrorResponse>,
2136 tonic::Status,
2137 > {
2138 self.inner
2139 .ready()
2140 .await
2141 .map_err(|e| {
2142 tonic::Status::unknown(
2143 format!("Service was not ready: {}", e.into()),
2144 )
2145 })?;
2146 let codec = tonic::codec::ProstCodec::default();
2147 let path = http::uri::PathAndQuery::from_static(
2148 "/nominal.ai.v1.DataIngestionErrorClassifierService/ClassifyError",
2149 );
2150 let mut req = request.into_request();
2151 req.extensions_mut()
2152 .insert(
2153 GrpcMethod::new(
2154 "nominal.ai.v1.DataIngestionErrorClassifierService",
2155 "ClassifyError",
2156 ),
2157 );
2158 self.inner.unary(req, path, codec).await
2159 }
2160 }
2161}
2162#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2163pub struct GetProviderStatusRequest {}
2164#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2165pub struct GetProviderStatusResponse {
2166 #[prost(message, optional, tag = "1")]
2167 pub timestamp: ::core::option::Option<
2168 super::super::super::google::protobuf::Timestamp,
2169 >,
2170 #[prost(message, optional, tag = "2")]
2171 pub last_status: ::core::option::Option<ProviderStatus>,
2172 #[deprecated]
2173 #[prost(message, optional, tag = "3")]
2174 pub aggregated_status_over_last_30m: ::core::option::Option<ProviderStatus>,
2175 #[prost(message, optional, tag = "4")]
2176 pub aggregated_status: ::core::option::Option<ProviderStatus>,
2177}
2178#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2179pub struct ProviderStatus {
2180 #[prost(oneof = "provider_status::Status", tags = "1, 2")]
2181 pub status: ::core::option::Option<provider_status::Status>,
2182}
2183pub mod provider_status {
2185 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
2186 pub enum Status {
2187 #[prost(message, tag = "1")]
2188 Healthy(super::Healthy),
2189 #[prost(message, tag = "2")]
2190 Degraded(super::Degraded),
2191 }
2192}
2193#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2194pub struct Healthy {}
2195#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2196pub struct Degraded {
2197 #[prost(enumeration = "DegradationReason", tag = "1")]
2198 pub reason: i32,
2199}
2200#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2201pub struct ProviderMetrics {
2202 #[prost(int32, tag = "1")]
2203 pub time_to_first_token_ms: i32,
2204 #[prost(int32, tag = "2")]
2205 pub total_time_ms: i32,
2206}
2207#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2208#[repr(i32)]
2209pub enum DegradationReason {
2210 Unspecified = 0,
2211 HighLatency = 1,
2212 Failures = 2,
2213 HighLatencyAndFailures = 3,
2214 Unavailable = 4,
2215}
2216impl DegradationReason {
2217 pub fn as_str_name(&self) -> &'static str {
2222 match self {
2223 Self::Unspecified => "DEGRADATION_REASON_UNSPECIFIED",
2224 Self::HighLatency => "DEGRADATION_REASON_HIGH_LATENCY",
2225 Self::Failures => "DEGRADATION_REASON_FAILURES",
2226 Self::HighLatencyAndFailures => {
2227 "DEGRADATION_REASON_HIGH_LATENCY_AND_FAILURES"
2228 }
2229 Self::Unavailable => "DEGRADATION_REASON_UNAVAILABLE",
2230 }
2231 }
2232 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2234 match value {
2235 "DEGRADATION_REASON_UNSPECIFIED" => Some(Self::Unspecified),
2236 "DEGRADATION_REASON_HIGH_LATENCY" => Some(Self::HighLatency),
2237 "DEGRADATION_REASON_FAILURES" => Some(Self::Failures),
2238 "DEGRADATION_REASON_HIGH_LATENCY_AND_FAILURES" => {
2239 Some(Self::HighLatencyAndFailures)
2240 }
2241 "DEGRADATION_REASON_UNAVAILABLE" => Some(Self::Unavailable),
2242 _ => None,
2243 }
2244 }
2245}
2246pub mod model_provider_health_service_client {
2248 #![allow(
2249 unused_variables,
2250 dead_code,
2251 missing_docs,
2252 clippy::wildcard_imports,
2253 clippy::let_unit_value,
2254 )]
2255 use tonic::codegen::*;
2256 use tonic::codegen::http::Uri;
2257 #[derive(Debug, Clone)]
2258 pub struct ModelProviderHealthServiceClient<T> {
2259 inner: tonic::client::Grpc<T>,
2260 }
2261 impl ModelProviderHealthServiceClient<tonic::transport::Channel> {
2262 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2264 where
2265 D: TryInto<tonic::transport::Endpoint>,
2266 D::Error: Into<StdError>,
2267 {
2268 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2269 Ok(Self::new(conn))
2270 }
2271 }
2272 impl<T> ModelProviderHealthServiceClient<T>
2273 where
2274 T: tonic::client::GrpcService<tonic::body::Body>,
2275 T::Error: Into<StdError>,
2276 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2277 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2278 {
2279 pub fn new(inner: T) -> Self {
2280 let inner = tonic::client::Grpc::new(inner);
2281 Self { inner }
2282 }
2283 pub fn with_origin(inner: T, origin: Uri) -> Self {
2284 let inner = tonic::client::Grpc::with_origin(inner, origin);
2285 Self { inner }
2286 }
2287 pub fn with_interceptor<F>(
2288 inner: T,
2289 interceptor: F,
2290 ) -> ModelProviderHealthServiceClient<InterceptedService<T, F>>
2291 where
2292 F: tonic::service::Interceptor,
2293 T::ResponseBody: Default,
2294 T: tonic::codegen::Service<
2295 http::Request<tonic::body::Body>,
2296 Response = http::Response<
2297 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2298 >,
2299 >,
2300 <T as tonic::codegen::Service<
2301 http::Request<tonic::body::Body>,
2302 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2303 {
2304 ModelProviderHealthServiceClient::new(
2305 InterceptedService::new(inner, interceptor),
2306 )
2307 }
2308 #[must_use]
2313 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2314 self.inner = self.inner.send_compressed(encoding);
2315 self
2316 }
2317 #[must_use]
2319 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2320 self.inner = self.inner.accept_compressed(encoding);
2321 self
2322 }
2323 #[must_use]
2327 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2328 self.inner = self.inner.max_decoding_message_size(limit);
2329 self
2330 }
2331 #[must_use]
2335 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2336 self.inner = self.inner.max_encoding_message_size(limit);
2337 self
2338 }
2339 pub async fn get_provider_status(
2340 &mut self,
2341 request: impl tonic::IntoRequest<super::GetProviderStatusRequest>,
2342 ) -> std::result::Result<
2343 tonic::Response<super::GetProviderStatusResponse>,
2344 tonic::Status,
2345 > {
2346 self.inner
2347 .ready()
2348 .await
2349 .map_err(|e| {
2350 tonic::Status::unknown(
2351 format!("Service was not ready: {}", e.into()),
2352 )
2353 })?;
2354 let codec = tonic::codec::ProstCodec::default();
2355 let path = http::uri::PathAndQuery::from_static(
2356 "/nominal.ai.v1.ModelProviderHealthService/GetProviderStatus",
2357 );
2358 let mut req = request.into_request();
2359 req.extensions_mut()
2360 .insert(
2361 GrpcMethod::new(
2362 "nominal.ai.v1.ModelProviderHealthService",
2363 "GetProviderStatus",
2364 ),
2365 );
2366 self.inner.unary(req, path, codec).await
2367 }
2368 }
2369}