Skip to main content

nominal_api_proto/proto/
nominal.ai.v1.rs

1// This file is @generated by prost-build.
2#[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}
101/// Nested message and enum types in `GetSnapshotRidByUserMessageIdResponse`.
102pub 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}
123/// Nested message and enum types in `ConversationMode`.
124pub 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}
140/// Nested message and enum types in `ToolApprovalResult`.
141pub 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}
196/// Nested message and enum types in `UserQuestionResponseRequest`.
197pub 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}
230/// Nested message and enum types in `StreamChatRequest`.
231pub 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}
330/// Nested message and enum types in `ChecklistContext`.
331pub 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}
349/// Nested message and enum types in `TemplateContext`.
350pub 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}
466/// Nested message and enum types in `ModelMessageWithId`.
467pub 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}
637/// Nested message and enum types in `ModelMessage`.
638pub 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}
662/// Nested message and enum types in `UserContentPart`.
663pub 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}
677/// Nested message and enum types in `AssistantContentPart`.
678pub 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}
714/// Nested message and enum types in `StreamChatResponse`.
715pub 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}
765/// Nested message and enum types in `CompactionNotice`.
766pub 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        /// String value of the enum field names used in the ProtoBuf definition.
786        ///
787        /// The values are not transformed in any way and thus are considered stable
788        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
789        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        /// Creates an enum from field names used in the ProtoBuf definition.
797        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}
913/// Nested message and enum types in `ToolActionConfirmation`.
914pub 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}
938/// Nested message and enum types in `ClientDirective`.
939pub 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}
953/// Nested message and enum types in `ClientDirectiveV1`.
954pub 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}
968/// Nested message and enum types in `ResourceEditedDirective`.
969pub 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}
1029/// Nested message and enum types in `ResourceMarkup`.
1030pub 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    /// String value of the enum field names used in the ProtoBuf definition.
1081    ///
1082    /// The values are not transformed in any way and thus are considered stable
1083    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1084    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    /// Creates an enum from field names used in the ProtoBuf definition.
1093    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    /// String value of the enum field names used in the ProtoBuf definition.
1112    ///
1113    /// The values are not transformed in any way and thus are considered stable
1114    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1115    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    /// Creates an enum from field names used in the ProtoBuf definition.
1123    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    /// String value of the enum field names used in the ProtoBuf definition.
1141    ///
1142    /// The values are not transformed in any way and thus are considered stable
1143    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1144    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    /// Creates an enum from field names used in the ProtoBuf definition.
1152    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    /// String value of the enum field names used in the ProtoBuf definition.
1171    ///
1172    /// The values are not transformed in any way and thus are considered stable
1173    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1174    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    /// Creates an enum from field names used in the ProtoBuf definition.
1183    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    /// String value of the enum field names used in the ProtoBuf definition.
1203    ///
1204    /// The values are not transformed in any way and thus are considered stable
1205    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1206    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    /// Creates an enum from field names used in the ProtoBuf definition.
1215    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    /// String value of the enum field names used in the ProtoBuf definition.
1234    ///
1235    /// The values are not transformed in any way and thus are considered stable
1236    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1237    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    /// Creates an enum from field names used in the ProtoBuf definition.
1245    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    /// String value of the enum field names used in the ProtoBuf definition.
1283    ///
1284    /// The values are not transformed in any way and thus are considered stable
1285    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1286    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    /// Creates an enum from field names used in the ProtoBuf definition.
1316    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}
1349/// Generated client implementations.
1350pub 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        /// Attempt to create a new client by connecting to a given endpoint.
1366        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        /// Compress requests with the given encoding.
1410        ///
1411        /// This requires the server to support it otherwise it might respond with an
1412        /// error.
1413        #[must_use]
1414        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1415            self.inner = self.inner.send_compressed(encoding);
1416            self
1417        }
1418        /// Enable decompressing responses.
1419        #[must_use]
1420        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1421            self.inner = self.inner.accept_compressed(encoding);
1422            self
1423        }
1424        /// Limits the maximum size of a decoded message.
1425        ///
1426        /// Default: `4MB`
1427        #[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        /// Limits the maximum size of an encoded message.
1433        ///
1434        /// Default: `usize::MAX`
1435        #[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    /// String value of the enum field names used in the ProtoBuf definition.
2018    ///
2019    /// The values are not transformed in any way and thus are considered stable
2020    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2021    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    /// Creates an enum from field names used in the ProtoBuf definition.
2029    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}
2038/// Generated client implementations.
2039pub 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        /// Attempt to create a new client by connecting to a given endpoint.
2055        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        /// Compress requests with the given encoding.
2101        ///
2102        /// This requires the server to support it otherwise it might respond with an
2103        /// error.
2104        #[must_use]
2105        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2106            self.inner = self.inner.send_compressed(encoding);
2107            self
2108        }
2109        /// Enable decompressing responses.
2110        #[must_use]
2111        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2112            self.inner = self.inner.accept_compressed(encoding);
2113            self
2114        }
2115        /// Limits the maximum size of a decoded message.
2116        ///
2117        /// Default: `4MB`
2118        #[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        /// Limits the maximum size of an encoded message.
2124        ///
2125        /// Default: `usize::MAX`
2126        #[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}
2183/// Nested message and enum types in `ProviderStatus`.
2184pub 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    /// String value of the enum field names used in the ProtoBuf definition.
2218    ///
2219    /// The values are not transformed in any way and thus are considered stable
2220    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2221    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    /// Creates an enum from field names used in the ProtoBuf definition.
2233    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}
2246/// Generated client implementations.
2247pub 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        /// Attempt to create a new client by connecting to a given endpoint.
2263        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        /// Compress requests with the given encoding.
2309        ///
2310        /// This requires the server to support it otherwise it might respond with an
2311        /// error.
2312        #[must_use]
2313        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2314            self.inner = self.inner.send_compressed(encoding);
2315            self
2316        }
2317        /// Enable decompressing responses.
2318        #[must_use]
2319        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2320            self.inner = self.inner.accept_compressed(encoding);
2321            self
2322        }
2323        /// Limits the maximum size of a decoded message.
2324        ///
2325        /// Default: `4MB`
2326        #[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        /// Limits the maximum size of an encoded message.
2332        ///
2333        /// Default: `usize::MAX`
2334        #[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}