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 SubmitMessageFeedbackRequest {
4    #[prost(string, tag = "1")]
5    pub conversation_rid: ::prost::alloc::string::String,
6    #[prost(string, tag = "2")]
7    pub message_id: ::prost::alloc::string::String,
8    #[prost(enumeration = "FeedbackVote", tag = "3")]
9    pub vote: i32,
10    #[prost(string, optional, tag = "4")]
11    pub comment: ::core::option::Option<::prost::alloc::string::String>,
12    #[prost(string, repeated, tag = "5")]
13    pub issue_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
14}
15#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16pub struct SubmitMessageFeedbackResponse {}
17#[derive(Clone, PartialEq, ::prost::Message)]
18pub struct CancelAgentRunRequest {
19    #[prost(string, tag = "1")]
20    pub conversation_rid: ::prost::alloc::string::String,
21    #[prost(string, tag = "2")]
22    pub agent_run_id: ::prost::alloc::string::String,
23}
24#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25pub struct CancelAgentRunResponse {}
26#[derive(Clone, PartialEq, ::prost::Message)]
27pub struct SteerAgentRunRequest {
28    #[prost(string, tag = "1")]
29    pub conversation_rid: ::prost::alloc::string::String,
30    #[prost(string, tag = "2")]
31    pub agent_run_id: ::prost::alloc::string::String,
32    #[prost(string, tag = "3")]
33    pub client_message_id: ::prost::alloc::string::String,
34    #[prost(string, tag = "4")]
35    pub text: ::prost::alloc::string::String,
36}
37#[derive(Clone, Copy, PartialEq, ::prost::Message)]
38pub struct SteerAgentRunResponse {}
39#[derive(Clone, PartialEq, ::prost::Message)]
40pub struct AnswerShouldKnowOfferRequest {
41    #[prost(string, tag = "1")]
42    pub offer_id: ::prost::alloc::string::String,
43    #[prost(enumeration = "ShouldKnowAnswer", tag = "2")]
44    pub answer: i32,
45}
46#[derive(Clone, Copy, PartialEq, ::prost::Message)]
47pub struct AnswerShouldKnowOfferResponse {}
48#[derive(Clone, PartialEq, ::prost::Message)]
49pub struct ExperimentEvent {
50    #[prost(string, tag = "1")]
51    pub experiment: ::prost::alloc::string::String,
52    #[prost(string, tag = "2")]
53    pub action: ::prost::alloc::string::String,
54    #[prost(string, tag = "3")]
55    pub subject_id: ::prost::alloc::string::String,
56    #[prost(map = "string, message", tag = "4")]
57    pub properties: ::std::collections::HashMap<
58        ::prost::alloc::string::String,
59        ExperimentEventValue,
60    >,
61    #[prost(string, tag = "5")]
62    pub arm: ::prost::alloc::string::String,
63}
64#[derive(Clone, PartialEq, ::prost::Message)]
65pub struct ExperimentEventValue {
66    #[prost(oneof = "experiment_event_value::Value", tags = "1, 2, 3")]
67    pub value: ::core::option::Option<experiment_event_value::Value>,
68}
69/// Nested message and enum types in `ExperimentEventValue`.
70pub mod experiment_event_value {
71    #[derive(Clone, PartialEq, ::prost::Oneof)]
72    pub enum Value {
73        #[prost(int64, tag = "1")]
74        IntValue(i64),
75        #[prost(bool, tag = "2")]
76        BoolValue(bool),
77        #[prost(string, tag = "3")]
78        EnumValue(::prost::alloc::string::String),
79    }
80}
81#[derive(Clone, PartialEq, ::prost::Message)]
82pub struct CreateExperimentEventRequest {
83    #[prost(message, optional, tag = "1")]
84    pub experiment_event: ::core::option::Option<ExperimentEvent>,
85}
86#[derive(Clone, PartialEq, ::prost::Message)]
87pub struct CreateExperimentEventResponse {
88    #[prost(message, optional, tag = "1")]
89    pub experiment_event: ::core::option::Option<ExperimentEvent>,
90}
91#[derive(Clone, PartialEq, ::prost::Message)]
92pub struct GetSnapshotRidByUserMessageIdRequest {
93    #[prost(string, tag = "1")]
94    pub conversation_rid: ::prost::alloc::string::String,
95    #[prost(string, tag = "2")]
96    pub message_id: ::prost::alloc::string::String,
97}
98#[derive(Clone, PartialEq, ::prost::Message)]
99pub struct GetSnapshotRidByUserMessageIdResponse {
100    #[prost(
101        oneof = "get_snapshot_rid_by_user_message_id_response::RestorePoint",
102        tags = "1, 2"
103    )]
104    pub restore_point: ::core::option::Option<
105        get_snapshot_rid_by_user_message_id_response::RestorePoint,
106    >,
107}
108/// Nested message and enum types in `GetSnapshotRidByUserMessageIdResponse`.
109pub mod get_snapshot_rid_by_user_message_id_response {
110    #[derive(Clone, PartialEq, ::prost::Oneof)]
111    pub enum RestorePoint {
112        #[prost(string, tag = "1")]
113        SnapshotRid(::prost::alloc::string::String),
114        #[prost(string, tag = "2")]
115        CommitId(::prost::alloc::string::String),
116    }
117}
118#[derive(Clone, Copy, PartialEq, ::prost::Message)]
119pub struct ReadOnlyMode {}
120#[derive(Clone, Copy, PartialEq, ::prost::Message)]
121pub struct EditMode {
122    #[prost(bool, optional, tag = "1")]
123    pub auto_accept: ::core::option::Option<bool>,
124}
125#[derive(Clone, Copy, PartialEq, ::prost::Message)]
126pub struct ConversationMode {
127    #[prost(oneof = "conversation_mode::Mode", tags = "1, 2")]
128    pub mode: ::core::option::Option<conversation_mode::Mode>,
129}
130/// Nested message and enum types in `ConversationMode`.
131pub mod conversation_mode {
132    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
133    pub enum Mode {
134        #[prost(message, tag = "1")]
135        ReadOnly(super::ReadOnlyMode),
136        #[prost(message, tag = "2")]
137        Edit(super::EditMode),
138    }
139}
140#[derive(Clone, PartialEq, ::prost::Message)]
141pub struct ToolApprovalResult {
142    #[prost(string, tag = "1")]
143    pub tool_call_id: ::prost::alloc::string::String,
144    #[prost(oneof = "tool_approval_result::Response", tags = "2, 3")]
145    pub response: ::core::option::Option<tool_approval_result::Response>,
146}
147/// Nested message and enum types in `ToolApprovalResult`.
148pub mod tool_approval_result {
149    #[derive(Clone, PartialEq, ::prost::Oneof)]
150    pub enum Response {
151        #[prost(message, tag = "2")]
152        Approved(super::ToolApprovedResponse),
153        #[prost(message, tag = "3")]
154        Denied(super::ToolDeniedResponse),
155    }
156}
157#[derive(Clone, PartialEq, ::prost::Message)]
158pub struct ToolApprovedResponse {
159    #[prost(string, optional, tag = "1")]
160    pub override_args: ::core::option::Option<::prost::alloc::string::String>,
161}
162#[derive(Clone, PartialEq, ::prost::Message)]
163pub struct ToolDeniedResponse {
164    #[prost(string, tag = "2")]
165    pub denial_reason: ::prost::alloc::string::String,
166}
167#[derive(Clone, Copy, PartialEq, ::prost::Message)]
168pub struct RetryRequest {}
169#[derive(Clone, PartialEq, ::prost::Message)]
170pub struct UserPromptRequest {
171    #[prost(message, optional, tag = "1")]
172    pub message: ::core::option::Option<UserModelMessage>,
173    #[deprecated]
174    #[prost(message, repeated, tag = "2")]
175    pub images: ::prost::alloc::vec::Vec<ImagePart>,
176}
177#[derive(Clone, PartialEq, ::prost::Message)]
178pub struct ToolApprovalRequest {
179    #[prost(message, repeated, tag = "1")]
180    pub tool_approvals: ::prost::alloc::vec::Vec<ToolApprovalResult>,
181}
182#[derive(Clone, PartialEq, ::prost::Message)]
183pub struct UserQuestionAnswer {
184    #[prost(uint32, tag = "1")]
185    pub question_index: u32,
186    #[prost(string, repeated, tag = "2")]
187    pub selected_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
188    #[prost(string, optional, tag = "3")]
189    pub other_text: ::core::option::Option<::prost::alloc::string::String>,
190}
191#[derive(Clone, Copy, PartialEq, ::prost::Message)]
192pub struct UserQuestionDeclined {}
193#[derive(Clone, PartialEq, ::prost::Message)]
194pub struct UserQuestionResponseRequest {
195    #[prost(string, tag = "1")]
196    pub tool_call_id: ::prost::alloc::string::String,
197    #[prost(uint32, tag = "2")]
198    pub question_index: u32,
199    #[prost(uint64, tag = "3")]
200    pub version: u64,
201    #[prost(oneof = "user_question_response_request::Response", tags = "4, 5")]
202    pub response: ::core::option::Option<user_question_response_request::Response>,
203}
204/// Nested message and enum types in `UserQuestionResponseRequest`.
205pub mod user_question_response_request {
206    #[derive(Clone, PartialEq, ::prost::Oneof)]
207    pub enum Response {
208        #[prost(message, tag = "4")]
209        Answered(super::UserQuestionAnswer),
210        #[prost(message, tag = "5")]
211        Declined(super::UserQuestionDeclined),
212    }
213}
214#[derive(Clone, PartialEq, ::prost::Message)]
215pub struct StreamChatRequest {
216    #[prost(string, tag = "1")]
217    pub conversation_rid: ::prost::alloc::string::String,
218    #[deprecated]
219    #[prost(message, optional, tag = "2")]
220    pub message: ::core::option::Option<UserModelMessage>,
221    #[deprecated]
222    #[prost(message, repeated, tag = "3")]
223    pub images: ::prost::alloc::vec::Vec<ImagePart>,
224    #[deprecated]
225    #[prost(message, repeated, tag = "6")]
226    pub tool_approvals: ::prost::alloc::vec::Vec<ToolApprovalResult>,
227    #[prost(bool, tag = "13")]
228    pub detach_on_disconnect: bool,
229    #[prost(bool, tag = "14")]
230    pub reattach_only: bool,
231    #[prost(message, optional, tag = "15")]
232    pub model_selection: ::core::option::Option<ModelSelection>,
233    #[prost(message, optional, tag = "16")]
234    pub page_context: ::core::option::Option<PageContext>,
235    #[prost(int64, optional, tag = "17")]
236    pub resume_after_offset: ::core::option::Option<i64>,
237    #[prost(string, optional, tag = "18")]
238    pub resume_epoch: ::core::option::Option<::prost::alloc::string::String>,
239    #[prost(oneof = "stream_chat_request::RequestType", tags = "7, 8, 9, 12")]
240    pub request_type: ::core::option::Option<stream_chat_request::RequestType>,
241}
242/// Nested message and enum types in `StreamChatRequest`.
243pub mod stream_chat_request {
244    #[derive(Clone, PartialEq, ::prost::Oneof)]
245    pub enum RequestType {
246        #[prost(message, tag = "7")]
247        Retry(super::RetryRequest),
248        #[prost(message, tag = "8")]
249        UserPrompt(super::UserPromptRequest),
250        #[prost(message, tag = "9")]
251        ToolApproval(super::ToolApprovalRequest),
252        #[prost(message, tag = "12")]
253        UserQuestionResponse(super::UserQuestionResponseRequest),
254    }
255}
256#[derive(Clone, PartialEq, ::prost::Message)]
257pub struct ComputeFunctionEditorContext {
258    #[prost(string, tag = "1")]
259    pub workbook_rid: ::prost::alloc::string::String,
260    #[prost(string, tag = "2")]
261    pub name: ::prost::alloc::string::String,
262}
263#[derive(Clone, PartialEq, ::prost::Message)]
264pub struct SqlEditorContext {
265    #[prost(string, tag = "1")]
266    pub active_tab_id: ::prost::alloc::string::String,
267    #[prost(string, tag = "2")]
268    pub editor_id: ::prost::alloc::string::String,
269}
270#[derive(Clone, PartialEq, ::prost::Message)]
271pub struct DraftEditorContext {
272    #[prost(string, tag = "1")]
273    pub branch_name: ::prost::alloc::string::String,
274    #[prost(string, tag = "2")]
275    pub reference_rid: ::prost::alloc::string::String,
276}
277#[derive(Clone, PartialEq, ::prost::Message)]
278pub struct PageContext {
279    #[prost(string, tag = "1")]
280    pub url: ::prost::alloc::string::String,
281    #[prost(string, optional, tag = "2")]
282    pub primary_rid: ::core::option::Option<::prost::alloc::string::String>,
283    #[prost(message, optional, tag = "4")]
284    pub compute_function_editor: ::core::option::Option<ComputeFunctionEditorContext>,
285    #[prost(message, optional, tag = "5")]
286    pub sql_editor: ::core::option::Option<SqlEditorContext>,
287    #[prost(message, optional, tag = "6")]
288    pub draft_editor: ::core::option::Option<DraftEditorContext>,
289    #[prost(string, repeated, tag = "3")]
290    pub in_view_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
291}
292#[derive(Clone, PartialEq, ::prost::Message)]
293pub struct ModelSelection {
294    #[prost(string, tag = "1")]
295    pub model_id: ::prost::alloc::string::String,
296    #[prost(string, optional, tag = "2")]
297    pub thinking_effort: ::core::option::Option<::prost::alloc::string::String>,
298    #[prost(uint32, optional, tag = "3")]
299    pub context_window_tokens: ::core::option::Option<u32>,
300    #[prost(uint32, optional, tag = "4")]
301    pub max_output_tokens: ::core::option::Option<u32>,
302}
303#[derive(Clone, PartialEq, ::prost::Message)]
304pub struct ThinkingEffortOption {
305    #[prost(string, tag = "1")]
306    pub effort: ::prost::alloc::string::String,
307    #[prost(uint32, tag = "2")]
308    pub default_output_tokens: u32,
309}
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct ModelOption {
312    #[prost(string, tag = "1")]
313    pub model_id: ::prost::alloc::string::String,
314    #[prost(string, tag = "2")]
315    pub label: ::prost::alloc::string::String,
316    #[prost(string, repeated, tag = "3")]
317    pub thinking_efforts: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
318    #[prost(uint32, tag = "4")]
319    pub min_context_window_tokens: u32,
320    #[prost(uint32, tag = "5")]
321    pub max_context_window_tokens: u32,
322    #[prost(uint32, tag = "6")]
323    pub default_context_window_tokens: u32,
324    #[prost(uint32, repeated, tag = "7")]
325    pub context_window_presets: ::prost::alloc::vec::Vec<u32>,
326    #[prost(uint32, tag = "8")]
327    pub min_output_tokens: u32,
328    #[prost(uint32, tag = "9")]
329    pub max_output_tokens: u32,
330    #[prost(uint32, tag = "10")]
331    pub default_output_tokens: u32,
332    #[prost(message, repeated, tag = "11")]
333    pub thinking_effort_options: ::prost::alloc::vec::Vec<ThinkingEffortOption>,
334    #[prost(bool, tag = "12")]
335    pub supports_image_input: bool,
336    #[prost(string, optional, tag = "13")]
337    pub default_thinking_effort: ::core::option::Option<::prost::alloc::string::String>,
338}
339#[derive(Clone, Copy, PartialEq, ::prost::Message)]
340pub struct ListModelsRequest {}
341#[derive(Clone, PartialEq, ::prost::Message)]
342pub struct ListModelsResponse {
343    #[prost(message, repeated, tag = "1")]
344    pub models: ::prost::alloc::vec::Vec<ModelOption>,
345}
346#[derive(Clone, PartialEq, ::prost::Message)]
347pub struct CreateConversationRequest {
348    #[prost(string, tag = "1")]
349    pub title: ::prost::alloc::string::String,
350    #[prost(string, tag = "2")]
351    pub workspace_rid: ::prost::alloc::string::String,
352    #[prost(string, optional, tag = "3")]
353    pub old_conversation_rid: ::core::option::Option<::prost::alloc::string::String>,
354    #[prost(string, optional, tag = "4")]
355    pub previous_message_id: ::core::option::Option<::prost::alloc::string::String>,
356    #[prost(message, optional, tag = "5")]
357    pub conversation_mode: ::core::option::Option<ConversationMode>,
358    #[prost(string, optional, tag = "6")]
359    pub backing_workbook_rid: ::core::option::Option<::prost::alloc::string::String>,
360    #[prost(message, repeated, tag = "7")]
361    pub resources: ::prost::alloc::vec::Vec<ConversationResource>,
362}
363#[derive(Clone, PartialEq, ::prost::Message)]
364pub struct CreateConversationResponse {
365    #[prost(string, tag = "1")]
366    pub new_conversation_rid: ::prost::alloc::string::String,
367}
368#[derive(Clone, PartialEq, ::prost::Message)]
369pub struct UpdateConversationMetadataRequest {
370    #[prost(string, optional, tag = "1")]
371    pub title: ::core::option::Option<::prost::alloc::string::String>,
372    #[prost(string, tag = "2")]
373    pub conversation_rid: ::prost::alloc::string::String,
374    #[prost(message, optional, tag = "3")]
375    pub conversation_mode: ::core::option::Option<ConversationMode>,
376}
377#[derive(Clone, Copy, PartialEq, ::prost::Message)]
378pub struct UpdateConversationMetadataResponse {}
379#[derive(Clone, PartialEq, ::prost::Message)]
380pub struct DeleteConversationRequest {
381    #[prost(string, tag = "1")]
382    pub conversation_rid: ::prost::alloc::string::String,
383}
384#[derive(Clone, Copy, PartialEq, ::prost::Message)]
385pub struct DeleteConversationResponse {}
386#[derive(Clone, PartialEq, ::prost::Message)]
387pub struct ArchiveConversationRequest {
388    #[prost(string, tag = "1")]
389    pub conversation_rid: ::prost::alloc::string::String,
390}
391#[derive(Clone, PartialEq, ::prost::Message)]
392pub struct ArchiveConversationResponse {
393    #[prost(message, optional, tag = "1")]
394    pub conversation: ::core::option::Option<ConversationMetadata>,
395}
396#[derive(Clone, PartialEq, ::prost::Message)]
397pub struct UnarchiveConversationRequest {
398    #[prost(string, tag = "1")]
399    pub conversation_rid: ::prost::alloc::string::String,
400}
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct UnarchiveConversationResponse {
403    #[prost(message, optional, tag = "1")]
404    pub conversation: ::core::option::Option<ConversationMetadata>,
405}
406#[derive(Clone, PartialEq, ::prost::Message)]
407pub struct GetConversationRequest {
408    #[prost(string, tag = "1")]
409    pub conversation_rid: ::prost::alloc::string::String,
410    #[prost(string, optional, tag = "2")]
411    pub page_start_message_id: ::core::option::Option<::prost::alloc::string::String>,
412    #[prost(int32, optional, tag = "3")]
413    pub max_message_count: ::core::option::Option<i32>,
414}
415#[derive(Clone, PartialEq, ::prost::Message)]
416pub struct CompactConversationRequest {
417    #[prost(string, tag = "1")]
418    pub conversation_rid: ::prost::alloc::string::String,
419}
420#[derive(Clone, Copy, PartialEq, ::prost::Message)]
421pub struct CompactConversationResponse {
422    #[prost(message, optional, tag = "1")]
423    pub context: ::core::option::Option<ContextStatus>,
424}
425#[derive(Clone, PartialEq, ::prost::Message)]
426pub struct ModelMessageWithId {
427    #[prost(string, tag = "3")]
428    pub message_id: ::prost::alloc::string::String,
429    #[prost(message, repeated, tag = "5")]
430    pub tool_approval_requests: ::prost::alloc::vec::Vec<ToolCallDescription>,
431    #[prost(message, repeated, tag = "8")]
432    pub user_question_calls: ::prost::alloc::vec::Vec<UserQuestionCall>,
433    #[prost(message, optional, tag = "9")]
434    pub created_at: ::core::option::Option<
435        super::super::super::google::protobuf::Timestamp,
436    >,
437    #[prost(double, optional, tag = "10")]
438    pub turn_duration_s: ::core::option::Option<f64>,
439    #[prost(oneof = "model_message_with_id::Content", tags = "1, 2, 6")]
440    pub content: ::core::option::Option<model_message_with_id::Content>,
441    #[prost(oneof = "model_message_with_id::RestorePoint", tags = "4, 7")]
442    pub restore_point: ::core::option::Option<model_message_with_id::RestorePoint>,
443}
444/// Nested message and enum types in `ModelMessageWithId`.
445pub mod model_message_with_id {
446    #[derive(Clone, PartialEq, ::prost::Oneof)]
447    pub enum Content {
448        #[prost(message, tag = "1")]
449        Message(super::ModelMessage),
450        #[prost(message, tag = "2")]
451        ToolAction(super::ToolAction),
452        #[prost(message, tag = "6")]
453        ToolActionConfirmation(super::ToolActionConfirmation),
454    }
455    #[derive(Clone, PartialEq, ::prost::Oneof)]
456    pub enum RestorePoint {
457        #[prost(string, tag = "4")]
458        SnapshotRid(::prost::alloc::string::String),
459        #[prost(string, tag = "7")]
460        CommitId(::prost::alloc::string::String),
461    }
462}
463#[derive(Clone, PartialEq, ::prost::Message)]
464pub struct GetConversationResponse {
465    #[prost(message, repeated, tag = "1")]
466    pub ordered_messages: ::prost::alloc::vec::Vec<ModelMessageWithId>,
467    #[prost(message, optional, tag = "2")]
468    pub conversation_metadata: ::core::option::Option<ConversationMetadata>,
469}
470#[derive(Clone, PartialEq, ::prost::Message)]
471pub struct GetConversationMetadataRequest {
472    #[prost(string, tag = "1")]
473    pub conversation_rid: ::prost::alloc::string::String,
474}
475#[derive(Clone, PartialEq, ::prost::Message)]
476pub struct GetConversationMetadataResponse {
477    #[prost(message, optional, tag = "1")]
478    pub conversation_metadata: ::core::option::Option<ConversationMetadata>,
479    #[prost(message, optional, tag = "2")]
480    pub active_run: ::core::option::Option<ActiveAgentRun>,
481}
482#[derive(Clone, PartialEq, ::prost::Message)]
483pub struct ActiveAgentRun {
484    #[prost(string, tag = "1")]
485    pub agent_run_id: ::prost::alloc::string::String,
486    #[prost(message, optional, tag = "2")]
487    pub started_at: ::core::option::Option<
488        super::super::super::google::protobuf::Timestamp,
489    >,
490    #[prost(enumeration = "AgentRunExecutionMode", tag = "3")]
491    pub execution_mode: i32,
492}
493#[derive(Clone, PartialEq, ::prost::Message)]
494pub struct GetConversationMessagesRequest {
495    #[prost(string, tag = "1")]
496    pub conversation_rid: ::prost::alloc::string::String,
497    #[prost(string, optional, tag = "2")]
498    pub page_start_message_id: ::core::option::Option<::prost::alloc::string::String>,
499    #[prost(int32, optional, tag = "3")]
500    pub max_message_count: ::core::option::Option<i32>,
501}
502#[derive(Clone, PartialEq, ::prost::Message)]
503pub struct GetConversationMessagesResponse {
504    #[prost(message, repeated, tag = "1")]
505    pub ordered_messages: ::prost::alloc::vec::Vec<ModelMessageWithId>,
506    #[prost(string, optional, tag = "2")]
507    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
508}
509#[derive(Clone, PartialEq, ::prost::Message)]
510pub struct ListConversationsRequest {
511    #[prost(string, tag = "1")]
512    pub workspace_rid: ::prost::alloc::string::String,
513    #[prost(string, optional, tag = "2")]
514    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
515    #[prost(int32, optional, tag = "3")]
516    pub page_size: ::core::option::Option<i32>,
517    #[prost(string, optional, tag = "4")]
518    pub title_query: ::core::option::Option<::prost::alloc::string::String>,
519    #[prost(bool, tag = "6")]
520    pub include_archived: bool,
521}
522#[derive(Clone, PartialEq, ::prost::Message)]
523pub struct ConversationResource {
524    #[prost(string, tag = "1")]
525    pub rid: ::prost::alloc::string::String,
526}
527#[derive(Clone, PartialEq, ::prost::Message)]
528pub struct UpdateConversationResourcesRequest {
529    #[prost(string, tag = "1")]
530    pub conversation_rid: ::prost::alloc::string::String,
531    #[prost(string, repeated, tag = "2")]
532    pub add_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
533    #[prost(string, repeated, tag = "3")]
534    pub remove_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
535}
536#[derive(Clone, PartialEq, ::prost::Message)]
537pub struct UpdateConversationResourcesResponse {
538    #[prost(message, repeated, tag = "1")]
539    pub resources: ::prost::alloc::vec::Vec<ConversationResource>,
540}
541#[derive(Clone, PartialEq, ::prost::Message)]
542pub struct ConversationMetadata {
543    #[prost(string, tag = "1")]
544    pub conversation_rid: ::prost::alloc::string::String,
545    #[prost(string, tag = "2")]
546    pub title: ::prost::alloc::string::String,
547    #[prost(message, optional, tag = "3")]
548    pub created_at: ::core::option::Option<
549        super::super::super::google::protobuf::Timestamp,
550    >,
551    #[prost(message, optional, tag = "4")]
552    pub last_updated_at: ::core::option::Option<
553        super::super::super::google::protobuf::Timestamp,
554    >,
555    #[prost(message, optional, tag = "5")]
556    pub mode: ::core::option::Option<ConversationMode>,
557    #[prost(message, optional, tag = "6")]
558    pub current_context: ::core::option::Option<ContextStatus>,
559    #[prost(string, optional, tag = "7")]
560    pub backing_workbook_rid: ::core::option::Option<::prost::alloc::string::String>,
561    #[prost(message, repeated, tag = "8")]
562    pub resources: ::prost::alloc::vec::Vec<ConversationResource>,
563    #[prost(message, optional, tag = "9")]
564    pub active_run: ::core::option::Option<ActiveAgentRun>,
565    #[prost(message, optional, tag = "10")]
566    pub archived_at: ::core::option::Option<
567        super::super::super::google::protobuf::Timestamp,
568    >,
569}
570#[derive(Clone, PartialEq, ::prost::Message)]
571pub struct ListConversationsResponse {
572    #[prost(message, repeated, tag = "1")]
573    pub conversations: ::prost::alloc::vec::Vec<ConversationMetadata>,
574    #[prost(string, optional, tag = "2")]
575    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
576}
577#[derive(Clone, PartialEq, ::prost::Message)]
578pub struct BatchGetConversationActiveRunsRequest {
579    #[prost(string, tag = "1")]
580    pub workspace_rid: ::prost::alloc::string::String,
581    #[prost(string, repeated, tag = "2")]
582    pub conversation_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
583}
584#[derive(Clone, PartialEq, ::prost::Message)]
585pub struct BatchGetConversationActiveRunsResponse {
586    #[prost(message, repeated, tag = "1")]
587    pub active_runs: ::prost::alloc::vec::Vec<ConversationActiveRun>,
588}
589#[derive(Clone, PartialEq, ::prost::Message)]
590pub struct ConversationActiveRun {
591    #[prost(string, tag = "1")]
592    pub conversation_rid: ::prost::alloc::string::String,
593    #[prost(message, optional, tag = "2")]
594    pub active_run: ::core::option::Option<ActiveAgentRun>,
595}
596#[derive(Clone, PartialEq, ::prost::Message)]
597pub struct BatchGetConversationSandboxesRequest {
598    #[prost(string, repeated, tag = "1")]
599    pub conversation_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
600    #[prost(string, tag = "2")]
601    pub workspace_rid: ::prost::alloc::string::String,
602}
603#[derive(Clone, PartialEq, ::prost::Message)]
604pub struct BatchGetConversationSandboxesResponse {
605    #[prost(message, repeated, tag = "1")]
606    pub conversation_sandboxes: ::prost::alloc::vec::Vec<ConversationSandbox>,
607}
608#[derive(Clone, PartialEq, ::prost::Message)]
609pub struct ResumeConversationSandboxRequest {
610    #[prost(string, tag = "1")]
611    pub workspace_rid: ::prost::alloc::string::String,
612    #[prost(string, tag = "2")]
613    pub conversation_rid: ::prost::alloc::string::String,
614}
615#[derive(Clone, Copy, PartialEq, ::prost::Message)]
616pub struct ResumeConversationSandboxResponse {}
617#[derive(Clone, PartialEq, ::prost::Message)]
618pub struct ConversationSandbox {
619    #[prost(string, tag = "1")]
620    pub conversation_rid: ::prost::alloc::string::String,
621    #[prost(enumeration = "ConversationSandboxStatus", tag = "2")]
622    pub status: i32,
623}
624#[derive(Clone, Copy, PartialEq, ::prost::Message)]
625pub struct Timestamp {
626    #[prost(int32, tag = "1")]
627    pub seconds: i32,
628    #[prost(int32, tag = "2")]
629    pub nanoseconds: i32,
630}
631#[derive(Clone, PartialEq, ::prost::Message)]
632pub struct ModelMessage {
633    #[prost(oneof = "model_message::Kind", tags = "1, 2")]
634    pub kind: ::core::option::Option<model_message::Kind>,
635}
636/// Nested message and enum types in `ModelMessage`.
637pub mod model_message {
638    #[derive(Clone, PartialEq, ::prost::Oneof)]
639    pub enum Kind {
640        #[prost(message, tag = "1")]
641        User(super::UserModelMessage),
642        #[prost(message, tag = "2")]
643        Assistant(super::AssistantModelMessage),
644    }
645}
646#[derive(Clone, PartialEq, ::prost::Message)]
647pub struct UserModelMessage {
648    #[prost(message, repeated, tag = "1")]
649    pub text: ::prost::alloc::vec::Vec<UserContentPart>,
650}
651#[derive(Clone, PartialEq, ::prost::Message)]
652pub struct AssistantModelMessage {
653    #[prost(message, repeated, tag = "1")]
654    pub content_parts: ::prost::alloc::vec::Vec<AssistantContentPart>,
655}
656#[derive(Clone, PartialEq, ::prost::Message)]
657pub struct UserContentPart {
658    #[prost(oneof = "user_content_part::Part", tags = "1, 2, 3")]
659    pub part: ::core::option::Option<user_content_part::Part>,
660}
661/// Nested message and enum types in `UserContentPart`.
662pub mod user_content_part {
663    #[derive(Clone, PartialEq, ::prost::Oneof)]
664    pub enum Part {
665        #[prost(message, tag = "1")]
666        Text(super::TextPart),
667        #[prost(message, tag = "2")]
668        Image(super::ImagePart),
669        #[prost(message, tag = "3")]
670        Attachment(super::AttachmentPart),
671    }
672}
673#[derive(Clone, PartialEq, ::prost::Message)]
674pub struct AssistantContentPart {
675    #[prost(oneof = "assistant_content_part::Part", tags = "1, 2")]
676    pub part: ::core::option::Option<assistant_content_part::Part>,
677}
678/// Nested message and enum types in `AssistantContentPart`.
679pub mod assistant_content_part {
680    #[derive(Clone, PartialEq, ::prost::Oneof)]
681    pub enum Part {
682        #[prost(message, tag = "1")]
683        Text(super::TextPart),
684        #[prost(message, tag = "2")]
685        Reasoning(super::ReasoningPart),
686    }
687}
688#[derive(Clone, PartialEq, ::prost::Message)]
689pub struct TextPart {
690    #[prost(string, tag = "1")]
691    pub text: ::prost::alloc::string::String,
692}
693#[derive(Clone, PartialEq, ::prost::Message)]
694pub struct ImagePart {
695    #[prost(string, tag = "2")]
696    pub media_type: ::prost::alloc::string::String,
697    #[prost(string, tag = "4")]
698    pub attachment_rid: ::prost::alloc::string::String,
699    #[prost(string, tag = "5")]
700    pub filename: ::prost::alloc::string::String,
701}
702#[derive(Clone, PartialEq, ::prost::Message)]
703pub struct AttachmentPart {
704    #[prost(string, tag = "1")]
705    pub attachment_rid: ::prost::alloc::string::String,
706    #[prost(string, tag = "2")]
707    pub media_type: ::prost::alloc::string::String,
708}
709#[derive(Clone, PartialEq, ::prost::Message)]
710pub struct ReasoningPart {
711    #[prost(string, tag = "1")]
712    pub reasoning: ::prost::alloc::string::String,
713    #[prost(double, optional, tag = "2")]
714    pub duration_s: ::core::option::Option<f64>,
715}
716#[derive(Clone, PartialEq, ::prost::Message)]
717pub struct StreamChatResponse {
718    #[prost(int64, optional, tag = "18")]
719    pub stream_offset: ::core::option::Option<i64>,
720    #[prost(string, optional, tag = "19")]
721    pub stream_epoch: ::core::option::Option<::prost::alloc::string::String>,
722    #[prost(
723        oneof = "stream_chat_response::Response",
724        tags = "1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21"
725    )]
726    pub response: ::core::option::Option<stream_chat_response::Response>,
727}
728/// Nested message and enum types in `StreamChatResponse`.
729pub mod stream_chat_response {
730    #[derive(Clone, PartialEq, ::prost::Oneof)]
731    pub enum Response {
732        #[prost(message, tag = "1")]
733        Finish(super::Finish),
734        #[prost(message, tag = "2")]
735        Error(super::Error),
736        #[prost(message, tag = "3")]
737        TextStart(super::TextStart),
738        #[prost(message, tag = "4")]
739        TextDelta(super::TextDelta),
740        #[prost(message, tag = "5")]
741        TextEnd(super::TextEnd),
742        #[prost(message, tag = "6")]
743        ReasoningStart(super::ReasoningStart),
744        #[prost(message, tag = "7")]
745        ReasoningDelta(super::ReasoningDelta),
746        #[prost(message, tag = "8")]
747        ReasoningEnd(super::ReasoningEnd),
748        #[prost(message, tag = "10")]
749        ToolAction(super::ToolAction),
750        #[prost(message, tag = "11")]
751        ToolActionConfirmation(super::ToolActionConfirmation),
752        #[prost(message, tag = "12")]
753        StepStart(super::StepStart),
754        #[prost(message, tag = "13")]
755        StepEnd(super::StepEnd),
756        #[prost(message, tag = "14")]
757        ClientDirective(super::ClientDirective),
758        #[prost(message, tag = "15")]
759        CompactionNotice(super::CompactionNotice),
760        #[prost(message, tag = "16")]
761        StreamReset(super::StreamReset),
762        #[prost(message, tag = "17")]
763        SteeringMessage(super::SteeringMessage),
764        #[prost(message, tag = "20")]
765        ShouldKnowOffer(super::ShouldKnowOffer),
766        #[prost(message, tag = "21")]
767        ToolCallProgress(super::ToolCallProgress),
768    }
769}
770#[derive(Clone, PartialEq, ::prost::Message)]
771pub struct ToolCallProgress {
772    #[prost(string, tag = "1")]
773    pub tool_call_id: ::prost::alloc::string::String,
774    #[prost(string, tag = "2")]
775    pub status: ::prost::alloc::string::String,
776}
777#[derive(Clone, PartialEq, ::prost::Message)]
778pub struct SteeringMessage {
779    #[prost(string, tag = "1")]
780    pub client_message_id: ::prost::alloc::string::String,
781    #[prost(string, tag = "2")]
782    pub text: ::prost::alloc::string::String,
783}
784#[derive(Clone, PartialEq, ::prost::Message)]
785pub struct ShouldKnowOffer {
786    #[prost(string, tag = "1")]
787    pub id: ::prost::alloc::string::String,
788    #[prost(enumeration = "ShouldKnowTag", tag = "2")]
789    pub tag: i32,
790    #[prost(string, tag = "3")]
791    pub line: ::prost::alloc::string::String,
792    #[prost(string, tag = "4")]
793    pub explanation_markdown: ::prost::alloc::string::String,
794}
795#[derive(Clone, Copy, PartialEq, ::prost::Message)]
796pub struct StreamReset {}
797#[derive(Clone, Copy, PartialEq, ::prost::Message)]
798pub struct StepStart {}
799#[derive(Clone, Copy, PartialEq, ::prost::Message)]
800pub struct StepEnd {}
801#[derive(Clone, Copy, PartialEq, ::prost::Message)]
802pub struct CompactionNotice {
803    #[prost(int32, tag = "1")]
804    pub tokens_before: i32,
805    #[prost(int32, tag = "2")]
806    pub estimated_checkpoint_tokens: i32,
807    #[prost(enumeration = "compaction_notice::Trigger", tag = "3")]
808    pub trigger: i32,
809}
810/// Nested message and enum types in `CompactionNotice`.
811pub mod compaction_notice {
812    #[derive(
813        Clone,
814        Copy,
815        Debug,
816        PartialEq,
817        Eq,
818        Hash,
819        PartialOrd,
820        Ord,
821        ::prost::Enumeration
822    )]
823    #[repr(i32)]
824    pub enum Trigger {
825        Unspecified = 0,
826        PreTurn = 1,
827        MidRun = 2,
828    }
829    impl Trigger {
830        /// String value of the enum field names used in the ProtoBuf definition.
831        ///
832        /// The values are not transformed in any way and thus are considered stable
833        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
834        pub fn as_str_name(&self) -> &'static str {
835            match self {
836                Self::Unspecified => "TRIGGER_UNSPECIFIED",
837                Self::PreTurn => "TRIGGER_PRE_TURN",
838                Self::MidRun => "TRIGGER_MID_RUN",
839            }
840        }
841        /// Creates an enum from field names used in the ProtoBuf definition.
842        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
843            match value {
844                "TRIGGER_UNSPECIFIED" => Some(Self::Unspecified),
845                "TRIGGER_PRE_TURN" => Some(Self::PreTurn),
846                "TRIGGER_MID_RUN" => Some(Self::MidRun),
847                _ => None,
848            }
849        }
850    }
851}
852#[derive(Clone, PartialEq, ::prost::Message)]
853pub struct ToolCallDescription {
854    #[prost(string, tag = "1")]
855    pub tool_call_id: ::prost::alloc::string::String,
856    #[prost(string, tag = "2")]
857    pub tool_name: ::prost::alloc::string::String,
858    #[prost(string, tag = "3")]
859    pub tool_args_json_string: ::prost::alloc::string::String,
860    #[prost(enumeration = "ToolCallStatus", tag = "4")]
861    pub status: i32,
862}
863#[derive(Clone, PartialEq, ::prost::Message)]
864pub struct UserQuestionCall {
865    #[prost(message, optional, tag = "1")]
866    pub tool_call: ::core::option::Option<ToolCallDescription>,
867    #[prost(uint32, tag = "2")]
868    pub current_question_index: u32,
869    #[prost(message, repeated, tag = "3")]
870    pub answers: ::prost::alloc::vec::Vec<UserQuestionAnswer>,
871    #[prost(enumeration = "UserQuestionState", tag = "4")]
872    pub state: i32,
873    #[prost(uint64, tag = "5")]
874    pub version: u64,
875}
876#[derive(Clone, PartialEq, ::prost::Message)]
877pub struct Finish {
878    #[prost(string, repeated, tag = "1")]
879    pub ordered_message_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
880    #[prost(string, optional, tag = "2")]
881    pub new_title: ::core::option::Option<::prost::alloc::string::String>,
882    #[prost(message, repeated, tag = "3")]
883    pub tool_approval_requests: ::prost::alloc::vec::Vec<ToolCallDescription>,
884    #[prost(message, optional, tag = "4")]
885    pub updated_context: ::core::option::Option<ContextStatus>,
886    #[prost(string, optional, tag = "5")]
887    pub turn_rid: ::core::option::Option<::prost::alloc::string::String>,
888    #[prost(message, repeated, tag = "6")]
889    pub user_question_calls: ::prost::alloc::vec::Vec<UserQuestionCall>,
890    #[prost(double, optional, tag = "7")]
891    pub duration_s: ::core::option::Option<f64>,
892}
893#[derive(Clone, PartialEq, ::prost::Message)]
894pub struct Error {
895    #[prost(string, tag = "1")]
896    pub message: ::prost::alloc::string::String,
897}
898#[derive(Clone, PartialEq, ::prost::Message)]
899pub struct TextStart {
900    #[prost(string, tag = "1")]
901    pub id: ::prost::alloc::string::String,
902}
903#[derive(Clone, PartialEq, ::prost::Message)]
904pub struct TextDelta {
905    #[prost(string, tag = "1")]
906    pub id: ::prost::alloc::string::String,
907    #[prost(string, tag = "2")]
908    pub delta: ::prost::alloc::string::String,
909}
910#[derive(Clone, PartialEq, ::prost::Message)]
911pub struct TextEnd {
912    #[prost(string, tag = "1")]
913    pub id: ::prost::alloc::string::String,
914}
915#[derive(Clone, PartialEq, ::prost::Message)]
916pub struct ReasoningStart {
917    #[prost(string, tag = "1")]
918    pub id: ::prost::alloc::string::String,
919}
920#[derive(Clone, PartialEq, ::prost::Message)]
921pub struct ReasoningDelta {
922    #[prost(string, tag = "1")]
923    pub id: ::prost::alloc::string::String,
924    #[prost(string, tag = "2")]
925    pub delta: ::prost::alloc::string::String,
926}
927#[derive(Clone, PartialEq, ::prost::Message)]
928pub struct ReasoningEnd {
929    #[prost(string, tag = "1")]
930    pub id: ::prost::alloc::string::String,
931    #[prost(double, tag = "2")]
932    pub duration_s: f64,
933}
934#[derive(Clone, PartialEq, ::prost::Message)]
935pub struct ToolAction {
936    #[prost(string, tag = "2")]
937    pub tool_action_verb: ::prost::alloc::string::String,
938    #[prost(string, optional, tag = "3")]
939    pub tool_target: ::core::option::Option<::prost::alloc::string::String>,
940    #[prost(message, optional, tag = "5")]
941    pub tool_call_description: ::core::option::Option<ToolCallDescription>,
942    #[deprecated]
943    #[prost(string, tag = "1")]
944    pub id: ::prost::alloc::string::String,
945    #[deprecated]
946    #[prost(string, tag = "4")]
947    pub tool_name: ::prost::alloc::string::String,
948}
949#[derive(Clone, PartialEq, ::prost::Message)]
950pub struct ToolActionConfirmation {
951    #[prost(string, tag = "1")]
952    pub id: ::prost::alloc::string::String,
953    #[prost(double, optional, tag = "4")]
954    pub duration_s: ::core::option::Option<f64>,
955    #[prost(oneof = "tool_action_confirmation::Outcome", tags = "2, 3")]
956    pub outcome: ::core::option::Option<tool_action_confirmation::Outcome>,
957}
958/// Nested message and enum types in `ToolActionConfirmation`.
959pub mod tool_action_confirmation {
960    #[derive(Clone, PartialEq, ::prost::Oneof)]
961    pub enum Outcome {
962        #[prost(message, tag = "2")]
963        Success(super::ToolActionSuccess),
964        #[prost(message, tag = "3")]
965        Failure(super::ToolActionFailure),
966    }
967}
968#[derive(Clone, PartialEq, ::prost::Message)]
969pub struct ToolActionSuccess {
970    #[prost(string, tag = "1")]
971    pub tool_success_message: ::prost::alloc::string::String,
972    #[prost(message, optional, tag = "2")]
973    pub code_cell: ::core::option::Option<CodeCellOutputs>,
974}
975#[derive(Clone, PartialEq, ::prost::Message)]
976pub struct CodeCellOutputs {
977    #[prost(message, repeated, tag = "1")]
978    pub outputs: ::prost::alloc::vec::Vec<CodeCellOutput>,
979    #[prost(bool, tag = "2")]
980    pub truncated: bool,
981    #[prost(message, repeated, tag = "3")]
982    pub files: ::prost::alloc::vec::Vec<CodeCellFile>,
983}
984#[derive(Clone, PartialEq, ::prost::Message)]
985pub struct CodeCellFile {
986    #[prost(string, tag = "1")]
987    pub attachment_rid: ::prost::alloc::string::String,
988    #[prost(string, tag = "2")]
989    pub media_type: ::prost::alloc::string::String,
990    #[prost(string, tag = "3")]
991    pub name: ::prost::alloc::string::String,
992    #[prost(uint64, tag = "4")]
993    pub size_bytes: u64,
994}
995#[derive(Clone, PartialEq, ::prost::Message)]
996pub struct CodeCellOutput {
997    #[prost(oneof = "code_cell_output::Output", tags = "1, 2, 3")]
998    pub output: ::core::option::Option<code_cell_output::Output>,
999}
1000/// Nested message and enum types in `CodeCellOutput`.
1001pub mod code_cell_output {
1002    #[derive(Clone, PartialEq, ::prost::Message)]
1003    pub struct Stream {
1004        #[prost(enumeration = "StreamName", tag = "1")]
1005        pub name: i32,
1006        #[prost(string, tag = "2")]
1007        pub text: ::prost::alloc::string::String,
1008    }
1009    #[derive(Clone, PartialEq, ::prost::Message)]
1010    pub struct Data {
1011        #[prost(string, tag = "1")]
1012        pub text_plain: ::prost::alloc::string::String,
1013    }
1014    #[derive(Clone, PartialEq, ::prost::Message)]
1015    pub struct Error {
1016        #[prost(string, tag = "1")]
1017        pub ename: ::prost::alloc::string::String,
1018        #[prost(string, tag = "2")]
1019        pub evalue: ::prost::alloc::string::String,
1020        #[prost(string, repeated, tag = "3")]
1021        pub traceback: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1022    }
1023    #[derive(
1024        Clone,
1025        Copy,
1026        Debug,
1027        PartialEq,
1028        Eq,
1029        Hash,
1030        PartialOrd,
1031        Ord,
1032        ::prost::Enumeration
1033    )]
1034    #[repr(i32)]
1035    pub enum StreamName {
1036        Unspecified = 0,
1037        Stdout = 1,
1038        Stderr = 2,
1039    }
1040    impl StreamName {
1041        /// String value of the enum field names used in the ProtoBuf definition.
1042        ///
1043        /// The values are not transformed in any way and thus are considered stable
1044        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1045        pub fn as_str_name(&self) -> &'static str {
1046            match self {
1047                Self::Unspecified => "STREAM_NAME_UNSPECIFIED",
1048                Self::Stdout => "STREAM_NAME_STDOUT",
1049                Self::Stderr => "STREAM_NAME_STDERR",
1050            }
1051        }
1052        /// Creates an enum from field names used in the ProtoBuf definition.
1053        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1054            match value {
1055                "STREAM_NAME_UNSPECIFIED" => Some(Self::Unspecified),
1056                "STREAM_NAME_STDOUT" => Some(Self::Stdout),
1057                "STREAM_NAME_STDERR" => Some(Self::Stderr),
1058                _ => None,
1059            }
1060        }
1061    }
1062    #[derive(Clone, PartialEq, ::prost::Oneof)]
1063    pub enum Output {
1064        #[prost(message, tag = "1")]
1065        Stream(Stream),
1066        #[prost(message, tag = "2")]
1067        Data(Data),
1068        #[prost(message, tag = "3")]
1069        Error(Error),
1070    }
1071}
1072#[derive(Clone, PartialEq, ::prost::Message)]
1073pub struct ToolActionFailure {
1074    #[prost(string, tag = "1")]
1075    pub tool_error_message: ::prost::alloc::string::String,
1076}
1077#[derive(Clone, PartialEq, ::prost::Message)]
1078pub struct ClientDirective {
1079    #[prost(oneof = "client_directive::Version", tags = "1")]
1080    pub version: ::core::option::Option<client_directive::Version>,
1081}
1082/// Nested message and enum types in `ClientDirective`.
1083pub mod client_directive {
1084    #[derive(Clone, PartialEq, ::prost::Oneof)]
1085    pub enum Version {
1086        #[prost(message, tag = "1")]
1087        V1(super::ClientDirectiveV1),
1088    }
1089}
1090#[derive(Clone, PartialEq, ::prost::Message)]
1091pub struct ClientDirectiveV1 {
1092    #[prost(string, tag = "1")]
1093    pub id: ::prost::alloc::string::String,
1094    #[prost(oneof = "client_directive_v1::Kind", tags = "2, 3, 4, 5")]
1095    pub kind: ::core::option::Option<client_directive_v1::Kind>,
1096}
1097/// Nested message and enum types in `ClientDirectiveV1`.
1098pub mod client_directive_v1 {
1099    #[derive(Clone, PartialEq, ::prost::Oneof)]
1100    pub enum Kind {
1101        #[prost(message, tag = "2")]
1102        ResourceEdited(super::ResourceEditedDirective),
1103        #[prost(message, tag = "3")]
1104        SetTimeRange(super::SetTimeRangeDirective),
1105        #[prost(message, tag = "4")]
1106        ResourceChanged(super::ResourceChangedDirective),
1107        #[prost(message, tag = "5")]
1108        SandboxStatus(super::SandboxStatusDirective),
1109    }
1110}
1111#[derive(Clone, PartialEq, ::prost::Message)]
1112pub struct SandboxStatusDirective {
1113    #[prost(string, tag = "1")]
1114    pub conversation_rid: ::prost::alloc::string::String,
1115    #[prost(enumeration = "ConversationSandboxStatus", tag = "2")]
1116    pub status: i32,
1117}
1118#[derive(Clone, PartialEq, ::prost::Message)]
1119pub struct ResourceEditedDirective {
1120    #[prost(oneof = "resource_edited_directive::Resource", tags = "1, 2, 3")]
1121    pub resource: ::core::option::Option<resource_edited_directive::Resource>,
1122}
1123/// Nested message and enum types in `ResourceEditedDirective`.
1124pub mod resource_edited_directive {
1125    #[derive(Clone, PartialEq, ::prost::Oneof)]
1126    pub enum Resource {
1127        #[prost(message, tag = "1")]
1128        Checklist(super::ChecklistEdited),
1129        #[prost(message, tag = "2")]
1130        Template(super::TemplateEdited),
1131        #[prost(message, tag = "3")]
1132        Workbook(super::WorkbookEdited),
1133    }
1134}
1135#[derive(Clone, PartialEq, ::prost::Message)]
1136pub struct ChecklistEdited {
1137    #[prost(string, tag = "1")]
1138    pub checklist_rid: ::prost::alloc::string::String,
1139    #[prost(string, tag = "2")]
1140    pub branch_name: ::prost::alloc::string::String,
1141    #[prost(string, optional, tag = "3")]
1142    pub check_id: ::core::option::Option<::prost::alloc::string::String>,
1143    #[prost(string, optional, tag = "4")]
1144    pub commit_id: ::core::option::Option<::prost::alloc::string::String>,
1145    #[prost(message, optional, tag = "5")]
1146    pub committed_at: ::core::option::Option<
1147        super::super::super::google::protobuf::Timestamp,
1148    >,
1149}
1150#[derive(Clone, PartialEq, ::prost::Message)]
1151pub struct TemplateEdited {
1152    #[prost(string, tag = "1")]
1153    pub template_rid: ::prost::alloc::string::String,
1154    #[prost(string, tag = "2")]
1155    pub branch_name: ::prost::alloc::string::String,
1156    #[prost(string, optional, tag = "3")]
1157    pub commit_id: ::core::option::Option<::prost::alloc::string::String>,
1158    #[prost(message, optional, tag = "4")]
1159    pub committed_at: ::core::option::Option<
1160        super::super::super::google::protobuf::Timestamp,
1161    >,
1162}
1163#[derive(Clone, PartialEq, ::prost::Message)]
1164pub struct WorkbookEdited {
1165    #[prost(string, tag = "1")]
1166    pub workbook_rid: ::prost::alloc::string::String,
1167}
1168#[derive(Clone, PartialEq, ::prost::Message)]
1169pub struct ResourceChangedDirective {
1170    #[prost(string, tag = "1")]
1171    pub resource_rid: ::prost::alloc::string::String,
1172    #[prost(enumeration = "ResourceChangeType", tag = "2")]
1173    pub change: i32,
1174    #[prost(string, optional, tag = "3")]
1175    pub branch_name: ::core::option::Option<::prost::alloc::string::String>,
1176    #[prost(string, optional, tag = "4")]
1177    pub commit_id: ::core::option::Option<::prost::alloc::string::String>,
1178    #[prost(string, repeated, tag = "5")]
1179    pub related_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1180}
1181#[derive(Clone, PartialEq, ::prost::Message)]
1182pub struct SetTimeRangeDirective {
1183    #[prost(string, tag = "1")]
1184    pub workbook_rid: ::prost::alloc::string::String,
1185    #[prost(message, optional, tag = "2")]
1186    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1187    #[prost(message, optional, tag = "3")]
1188    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1189    #[prost(enumeration = "TimeRangeType", tag = "4")]
1190    pub time_range_type: i32,
1191}
1192#[derive(Clone, PartialEq, ::prost::Message)]
1193pub struct ResourceMarkup {
1194    #[prost(oneof = "resource_markup::Kind", tags = "1, 2")]
1195    pub kind: ::core::option::Option<resource_markup::Kind>,
1196}
1197/// Nested message and enum types in `ResourceMarkup`.
1198pub mod resource_markup {
1199    #[derive(Clone, PartialEq, ::prost::Oneof)]
1200    pub enum Kind {
1201        #[prost(message, tag = "1")]
1202        Rid(super::RidResourceMarkup),
1203        #[prost(message, tag = "2")]
1204        RidList(super::RidListResourceMarkup),
1205    }
1206}
1207#[derive(Clone, PartialEq, ::prost::Message)]
1208pub struct RidResourceMarkup {
1209    #[prost(string, tag = "1")]
1210    pub rid: ::prost::alloc::string::String,
1211    #[prost(string, optional, tag = "2")]
1212    pub label: ::core::option::Option<::prost::alloc::string::String>,
1213}
1214#[derive(Clone, PartialEq, ::prost::Message)]
1215pub struct RidListResourceMarkup {
1216    #[prost(string, repeated, tag = "1")]
1217    pub rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1218    #[prost(string, optional, tag = "2")]
1219    pub label: ::core::option::Option<::prost::alloc::string::String>,
1220}
1221#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1222pub struct ContextStatus {
1223    #[prost(int32, tag = "1")]
1224    pub curr_token_count: i32,
1225    #[prost(int32, tag = "2")]
1226    pub model_context_limit: i32,
1227}
1228#[derive(Clone, PartialEq, ::prost::Message)]
1229pub struct ComputeProvenanceV1 {
1230    #[prost(string, tag = "1")]
1231    pub compute_request_json: ::prost::alloc::string::String,
1232    #[prost(string, tag = "2")]
1233    pub label: ::prost::alloc::string::String,
1234    #[prost(string, optional, tag = "3")]
1235    pub code: ::core::option::Option<::prost::alloc::string::String>,
1236    #[prost(enumeration = "ComputeOutputType", tag = "4")]
1237    pub output_type: i32,
1238}
1239#[derive(Clone, PartialEq, ::prost::Message)]
1240pub struct ComputeProvenanceListV1 {
1241    #[prost(message, repeated, tag = "1")]
1242    pub entries: ::prost::alloc::vec::Vec<ComputeProvenanceEntryV1>,
1243}
1244#[derive(Clone, PartialEq, ::prost::Message)]
1245pub struct ComputeProvenanceEntryV1 {
1246    #[prost(string, tag = "1")]
1247    pub pointer: ::prost::alloc::string::String,
1248    #[prost(message, optional, tag = "2")]
1249    pub provenance: ::core::option::Option<ComputeProvenanceV1>,
1250}
1251#[derive(Clone, PartialEq, ::prost::Message)]
1252pub struct Citation {
1253    #[prost(string, tag = "1")]
1254    pub r#ref: ::prost::alloc::string::String,
1255    #[prost(string, tag = "2")]
1256    pub label: ::prost::alloc::string::String,
1257    #[prost(message, optional, tag = "3")]
1258    pub retrieved_at: ::core::option::Option<
1259        super::super::super::google::protobuf::Timestamp,
1260    >,
1261    #[prost(uint32, optional, tag = "5")]
1262    pub number: ::core::option::Option<u32>,
1263    #[prost(oneof = "citation::Payload", tags = "4, 6, 7")]
1264    pub payload: ::core::option::Option<citation::Payload>,
1265}
1266/// Nested message and enum types in `Citation`.
1267pub mod citation {
1268    #[derive(Clone, PartialEq, ::prost::Oneof)]
1269    pub enum Payload {
1270        #[prost(message, tag = "4")]
1271        Telemetry(super::TelemetryCitation),
1272        #[prost(message, tag = "6")]
1273        File(super::DriveFileCitation),
1274        #[prost(message, tag = "7")]
1275        CodeExecution(super::CodeExecutionCitation),
1276    }
1277}
1278#[derive(Clone, PartialEq, ::prost::Message)]
1279pub struct CodeExecutionCitation {
1280    #[prost(string, tag = "1")]
1281    pub code: ::prost::alloc::string::String,
1282    #[prost(string, tag = "2")]
1283    pub output: ::prost::alloc::string::String,
1284    #[prost(string, optional, tag = "3")]
1285    pub error: ::core::option::Option<::prost::alloc::string::String>,
1286    #[prost(message, repeated, tag = "4")]
1287    pub calls: ::prost::alloc::vec::Vec<CodeExecutionCall>,
1288    #[prost(uint32, tag = "5")]
1289    pub omitted_calls: u32,
1290}
1291#[derive(Clone, PartialEq, ::prost::Message)]
1292pub struct CodeExecutionCall {
1293    #[prost(string, tag = "1")]
1294    pub method: ::prost::alloc::string::String,
1295    #[prost(string, optional, tag = "2")]
1296    pub arguments_json: ::core::option::Option<::prost::alloc::string::String>,
1297    #[prost(enumeration = "CodeExecutionCallOutcome", tag = "3")]
1298    pub outcome: i32,
1299    #[prost(string, optional, tag = "4")]
1300    pub error_code: ::core::option::Option<::prost::alloc::string::String>,
1301    #[prost(message, repeated, tag = "5")]
1302    pub sources: ::prost::alloc::vec::Vec<CodeExecutionSource>,
1303}
1304#[derive(Clone, PartialEq, ::prost::Message)]
1305pub struct CodeExecutionSource {
1306    #[prost(string, tag = "1")]
1307    pub label: ::prost::alloc::string::String,
1308    #[prost(oneof = "code_execution_source::Source", tags = "2, 3")]
1309    pub source: ::core::option::Option<code_execution_source::Source>,
1310}
1311/// Nested message and enum types in `CodeExecutionSource`.
1312pub mod code_execution_source {
1313    #[derive(Clone, PartialEq, ::prost::Oneof)]
1314    pub enum Source {
1315        #[prost(message, tag = "2")]
1316        Telemetry(super::TelemetryCitation),
1317        #[prost(message, tag = "3")]
1318        File(super::DriveFileCitation),
1319    }
1320}
1321#[derive(Clone, PartialEq, ::prost::Message)]
1322pub struct TelemetryCitation {
1323    #[prost(oneof = "telemetry_citation::Version", tags = "1")]
1324    pub version: ::core::option::Option<telemetry_citation::Version>,
1325}
1326/// Nested message and enum types in `TelemetryCitation`.
1327pub mod telemetry_citation {
1328    #[derive(Clone, PartialEq, ::prost::Oneof)]
1329    pub enum Version {
1330        #[prost(message, tag = "1")]
1331        V1(super::ComputeProvenanceV1),
1332    }
1333}
1334#[derive(Clone, PartialEq, ::prost::Message)]
1335pub struct DriveFileCitation {
1336    #[prost(string, tag = "1")]
1337    pub file_revision_rid: ::prost::alloc::string::String,
1338    #[prost(message, optional, tag = "2")]
1339    pub file_identity: ::core::option::Option<
1340        super::super::file_store::v1::LogicalFileIdentity,
1341    >,
1342    #[prost(string, tag = "3")]
1343    pub drive_rid: ::prost::alloc::string::String,
1344    #[prost(uint64, tag = "4")]
1345    pub total_size_bytes: u64,
1346    #[prost(oneof = "drive_file_citation::Kind", tags = "5, 6")]
1347    pub kind: ::core::option::Option<drive_file_citation::Kind>,
1348}
1349/// Nested message and enum types in `DriveFileCitation`.
1350pub mod drive_file_citation {
1351    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1352    pub enum Kind {
1353        #[prost(message, tag = "5")]
1354        Text(super::TextFileCitation),
1355        #[prost(message, tag = "6")]
1356        Pdf(super::PdfFileCitation),
1357    }
1358}
1359#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1360pub struct TextFileCitation {
1361    #[prost(message, optional, tag = "1")]
1362    pub byte_range: ::core::option::Option<ByteRange>,
1363}
1364#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1365pub struct PdfFileCitation {
1366    #[prost(uint32, tag = "1")]
1367    pub first_page: u32,
1368    #[prost(uint32, tag = "2")]
1369    pub page_count: u32,
1370    #[prost(uint32, tag = "3")]
1371    pub total_page_count: u32,
1372}
1373#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1374pub struct ByteRange {
1375    #[prost(uint64, tag = "1")]
1376    pub offset: u64,
1377    #[prost(uint64, tag = "2")]
1378    pub length: u64,
1379}
1380#[derive(Clone, PartialEq, ::prost::Message)]
1381pub struct BatchGetCitationsRequest {
1382    #[prost(string, tag = "1")]
1383    pub conversation_rid: ::prost::alloc::string::String,
1384    #[prost(string, repeated, tag = "2")]
1385    pub refs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1386}
1387#[derive(Clone, PartialEq, ::prost::Message)]
1388pub struct BatchGetCitationsResponse {
1389    #[prost(message, repeated, tag = "1")]
1390    pub citations: ::prost::alloc::vec::Vec<Citation>,
1391    #[prost(message, repeated, tag = "2")]
1392    pub errors: ::prost::alloc::vec::Vec<GetCitationResponseError>,
1393}
1394#[derive(Clone, PartialEq, ::prost::Message)]
1395pub struct GetCitationResponseError {
1396    #[prost(string, tag = "1")]
1397    pub r#ref: ::prost::alloc::string::String,
1398    #[prost(enumeration = "get_citation_response_error::Reason", tag = "2")]
1399    pub reason: i32,
1400}
1401/// Nested message and enum types in `GetCitationResponseError`.
1402pub mod get_citation_response_error {
1403    #[derive(
1404        Clone,
1405        Copy,
1406        Debug,
1407        PartialEq,
1408        Eq,
1409        Hash,
1410        PartialOrd,
1411        Ord,
1412        ::prost::Enumeration
1413    )]
1414    #[repr(i32)]
1415    pub enum Reason {
1416        Unspecified = 0,
1417        NotFound = 1,
1418    }
1419    impl Reason {
1420        /// String value of the enum field names used in the ProtoBuf definition.
1421        ///
1422        /// The values are not transformed in any way and thus are considered stable
1423        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1424        pub fn as_str_name(&self) -> &'static str {
1425            match self {
1426                Self::Unspecified => "REASON_UNSPECIFIED",
1427                Self::NotFound => "REASON_NOT_FOUND",
1428            }
1429        }
1430        /// Creates an enum from field names used in the ProtoBuf definition.
1431        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1432            match value {
1433                "REASON_UNSPECIFIED" => Some(Self::Unspecified),
1434                "REASON_NOT_FOUND" => Some(Self::NotFound),
1435                _ => None,
1436            }
1437        }
1438    }
1439}
1440#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1441#[repr(i32)]
1442pub enum FeedbackVote {
1443    Unspecified = 0,
1444    ThumbsUp = 1,
1445    ThumbsDown = 2,
1446}
1447impl FeedbackVote {
1448    /// String value of the enum field names used in the ProtoBuf definition.
1449    ///
1450    /// The values are not transformed in any way and thus are considered stable
1451    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1452    pub fn as_str_name(&self) -> &'static str {
1453        match self {
1454            Self::Unspecified => "FEEDBACK_VOTE_UNSPECIFIED",
1455            Self::ThumbsUp => "FEEDBACK_VOTE_THUMBS_UP",
1456            Self::ThumbsDown => "FEEDBACK_VOTE_THUMBS_DOWN",
1457        }
1458    }
1459    /// Creates an enum from field names used in the ProtoBuf definition.
1460    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1461        match value {
1462            "FEEDBACK_VOTE_UNSPECIFIED" => Some(Self::Unspecified),
1463            "FEEDBACK_VOTE_THUMBS_UP" => Some(Self::ThumbsUp),
1464            "FEEDBACK_VOTE_THUMBS_DOWN" => Some(Self::ThumbsDown),
1465            _ => None,
1466        }
1467    }
1468}
1469#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1470#[repr(i32)]
1471pub enum ShouldKnowAnswer {
1472    Unspecified = 0,
1473    LearnMore = 1,
1474    KnewIt = 2,
1475    NotNow = 3,
1476    Understood = 4,
1477    Chat = 5,
1478    Dismissed = 6,
1479    Helpful = 7,
1480    NotRelevant = 8,
1481    NotUnderstood = 9,
1482    IgnoredSubmit = 10,
1483    IgnoredTimeout = 11,
1484}
1485impl ShouldKnowAnswer {
1486    /// String value of the enum field names used in the ProtoBuf definition.
1487    ///
1488    /// The values are not transformed in any way and thus are considered stable
1489    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1490    pub fn as_str_name(&self) -> &'static str {
1491        match self {
1492            Self::Unspecified => "SHOULD_KNOW_ANSWER_UNSPECIFIED",
1493            Self::LearnMore => "SHOULD_KNOW_ANSWER_LEARN_MORE",
1494            Self::KnewIt => "SHOULD_KNOW_ANSWER_KNEW_IT",
1495            Self::NotNow => "SHOULD_KNOW_ANSWER_NOT_NOW",
1496            Self::Understood => "SHOULD_KNOW_ANSWER_UNDERSTOOD",
1497            Self::Chat => "SHOULD_KNOW_ANSWER_CHAT",
1498            Self::Dismissed => "SHOULD_KNOW_ANSWER_DISMISSED",
1499            Self::Helpful => "SHOULD_KNOW_ANSWER_HELPFUL",
1500            Self::NotRelevant => "SHOULD_KNOW_ANSWER_NOT_RELEVANT",
1501            Self::NotUnderstood => "SHOULD_KNOW_ANSWER_NOT_UNDERSTOOD",
1502            Self::IgnoredSubmit => "SHOULD_KNOW_ANSWER_IGNORED_SUBMIT",
1503            Self::IgnoredTimeout => "SHOULD_KNOW_ANSWER_IGNORED_TIMEOUT",
1504        }
1505    }
1506    /// Creates an enum from field names used in the ProtoBuf definition.
1507    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1508        match value {
1509            "SHOULD_KNOW_ANSWER_UNSPECIFIED" => Some(Self::Unspecified),
1510            "SHOULD_KNOW_ANSWER_LEARN_MORE" => Some(Self::LearnMore),
1511            "SHOULD_KNOW_ANSWER_KNEW_IT" => Some(Self::KnewIt),
1512            "SHOULD_KNOW_ANSWER_NOT_NOW" => Some(Self::NotNow),
1513            "SHOULD_KNOW_ANSWER_UNDERSTOOD" => Some(Self::Understood),
1514            "SHOULD_KNOW_ANSWER_CHAT" => Some(Self::Chat),
1515            "SHOULD_KNOW_ANSWER_DISMISSED" => Some(Self::Dismissed),
1516            "SHOULD_KNOW_ANSWER_HELPFUL" => Some(Self::Helpful),
1517            "SHOULD_KNOW_ANSWER_NOT_RELEVANT" => Some(Self::NotRelevant),
1518            "SHOULD_KNOW_ANSWER_NOT_UNDERSTOOD" => Some(Self::NotUnderstood),
1519            "SHOULD_KNOW_ANSWER_IGNORED_SUBMIT" => Some(Self::IgnoredSubmit),
1520            "SHOULD_KNOW_ANSWER_IGNORED_TIMEOUT" => Some(Self::IgnoredTimeout),
1521            _ => None,
1522        }
1523    }
1524}
1525#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1526#[repr(i32)]
1527pub enum AgentRunExecutionMode {
1528    Unspecified = 0,
1529    Inline = 1,
1530    Durable = 2,
1531}
1532impl AgentRunExecutionMode {
1533    /// String value of the enum field names used in the ProtoBuf definition.
1534    ///
1535    /// The values are not transformed in any way and thus are considered stable
1536    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1537    pub fn as_str_name(&self) -> &'static str {
1538        match self {
1539            Self::Unspecified => "AGENT_RUN_EXECUTION_MODE_UNSPECIFIED",
1540            Self::Inline => "AGENT_RUN_EXECUTION_MODE_INLINE",
1541            Self::Durable => "AGENT_RUN_EXECUTION_MODE_DURABLE",
1542        }
1543    }
1544    /// Creates an enum from field names used in the ProtoBuf definition.
1545    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1546        match value {
1547            "AGENT_RUN_EXECUTION_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1548            "AGENT_RUN_EXECUTION_MODE_INLINE" => Some(Self::Inline),
1549            "AGENT_RUN_EXECUTION_MODE_DURABLE" => Some(Self::Durable),
1550            _ => None,
1551        }
1552    }
1553}
1554#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1555#[repr(i32)]
1556pub enum ConversationSandboxStatus {
1557    Unspecified = 0,
1558    Running = 1,
1559    Idle = 2,
1560    Resuming = 3,
1561}
1562impl ConversationSandboxStatus {
1563    /// String value of the enum field names used in the ProtoBuf definition.
1564    ///
1565    /// The values are not transformed in any way and thus are considered stable
1566    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1567    pub fn as_str_name(&self) -> &'static str {
1568        match self {
1569            Self::Unspecified => "CONVERSATION_SANDBOX_STATUS_UNSPECIFIED",
1570            Self::Running => "CONVERSATION_SANDBOX_STATUS_RUNNING",
1571            Self::Idle => "CONVERSATION_SANDBOX_STATUS_IDLE",
1572            Self::Resuming => "CONVERSATION_SANDBOX_STATUS_RESUMING",
1573        }
1574    }
1575    /// Creates an enum from field names used in the ProtoBuf definition.
1576    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1577        match value {
1578            "CONVERSATION_SANDBOX_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1579            "CONVERSATION_SANDBOX_STATUS_RUNNING" => Some(Self::Running),
1580            "CONVERSATION_SANDBOX_STATUS_IDLE" => Some(Self::Idle),
1581            "CONVERSATION_SANDBOX_STATUS_RESUMING" => Some(Self::Resuming),
1582            _ => None,
1583        }
1584    }
1585}
1586#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1587#[repr(i32)]
1588pub enum ShouldKnowTag {
1589    Unspecified = 0,
1590    YouShouldKnow = 1,
1591    HeadsUp = 2,
1592}
1593impl ShouldKnowTag {
1594    /// String value of the enum field names used in the ProtoBuf definition.
1595    ///
1596    /// The values are not transformed in any way and thus are considered stable
1597    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1598    pub fn as_str_name(&self) -> &'static str {
1599        match self {
1600            Self::Unspecified => "SHOULD_KNOW_TAG_UNSPECIFIED",
1601            Self::YouShouldKnow => "SHOULD_KNOW_TAG_YOU_SHOULD_KNOW",
1602            Self::HeadsUp => "SHOULD_KNOW_TAG_HEADS_UP",
1603        }
1604    }
1605    /// Creates an enum from field names used in the ProtoBuf definition.
1606    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1607        match value {
1608            "SHOULD_KNOW_TAG_UNSPECIFIED" => Some(Self::Unspecified),
1609            "SHOULD_KNOW_TAG_YOU_SHOULD_KNOW" => Some(Self::YouShouldKnow),
1610            "SHOULD_KNOW_TAG_HEADS_UP" => Some(Self::HeadsUp),
1611            _ => None,
1612        }
1613    }
1614}
1615#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1616#[repr(i32)]
1617pub enum ToolCallStatus {
1618    Unspecified = 0,
1619    Approved = 1,
1620    Denied = 2,
1621    AwaitingApproval = 3,
1622}
1623impl ToolCallStatus {
1624    /// String value of the enum field names used in the ProtoBuf definition.
1625    ///
1626    /// The values are not transformed in any way and thus are considered stable
1627    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1628    pub fn as_str_name(&self) -> &'static str {
1629        match self {
1630            Self::Unspecified => "TOOL_CALL_STATUS_UNSPECIFIED",
1631            Self::Approved => "TOOL_CALL_STATUS_APPROVED",
1632            Self::Denied => "TOOL_CALL_STATUS_DENIED",
1633            Self::AwaitingApproval => "TOOL_CALL_STATUS_AWAITING_APPROVAL",
1634        }
1635    }
1636    /// Creates an enum from field names used in the ProtoBuf definition.
1637    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1638        match value {
1639            "TOOL_CALL_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1640            "TOOL_CALL_STATUS_APPROVED" => Some(Self::Approved),
1641            "TOOL_CALL_STATUS_DENIED" => Some(Self::Denied),
1642            "TOOL_CALL_STATUS_AWAITING_APPROVAL" => Some(Self::AwaitingApproval),
1643            _ => None,
1644        }
1645    }
1646}
1647#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1648#[repr(i32)]
1649pub enum UserQuestionState {
1650    Unspecified = 0,
1651    Pending = 1,
1652    Answered = 2,
1653    Declined = 3,
1654}
1655impl UserQuestionState {
1656    /// String value of the enum field names used in the ProtoBuf definition.
1657    ///
1658    /// The values are not transformed in any way and thus are considered stable
1659    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1660    pub fn as_str_name(&self) -> &'static str {
1661        match self {
1662            Self::Unspecified => "USER_QUESTION_STATE_UNSPECIFIED",
1663            Self::Pending => "USER_QUESTION_STATE_PENDING",
1664            Self::Answered => "USER_QUESTION_STATE_ANSWERED",
1665            Self::Declined => "USER_QUESTION_STATE_DECLINED",
1666        }
1667    }
1668    /// Creates an enum from field names used in the ProtoBuf definition.
1669    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1670        match value {
1671            "USER_QUESTION_STATE_UNSPECIFIED" => Some(Self::Unspecified),
1672            "USER_QUESTION_STATE_PENDING" => Some(Self::Pending),
1673            "USER_QUESTION_STATE_ANSWERED" => Some(Self::Answered),
1674            "USER_QUESTION_STATE_DECLINED" => Some(Self::Declined),
1675            _ => None,
1676        }
1677    }
1678}
1679#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1680#[repr(i32)]
1681pub enum ResourceChangeType {
1682    Unspecified = 0,
1683    Created = 1,
1684    Updated = 2,
1685    Archived = 3,
1686}
1687impl ResourceChangeType {
1688    /// String value of the enum field names used in the ProtoBuf definition.
1689    ///
1690    /// The values are not transformed in any way and thus are considered stable
1691    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1692    pub fn as_str_name(&self) -> &'static str {
1693        match self {
1694            Self::Unspecified => "RESOURCE_CHANGE_TYPE_UNSPECIFIED",
1695            Self::Created => "RESOURCE_CHANGE_TYPE_CREATED",
1696            Self::Updated => "RESOURCE_CHANGE_TYPE_UPDATED",
1697            Self::Archived => "RESOURCE_CHANGE_TYPE_ARCHIVED",
1698        }
1699    }
1700    /// Creates an enum from field names used in the ProtoBuf definition.
1701    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1702        match value {
1703            "RESOURCE_CHANGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1704            "RESOURCE_CHANGE_TYPE_CREATED" => Some(Self::Created),
1705            "RESOURCE_CHANGE_TYPE_UPDATED" => Some(Self::Updated),
1706            "RESOURCE_CHANGE_TYPE_ARCHIVED" => Some(Self::Archived),
1707            _ => None,
1708        }
1709    }
1710}
1711#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1712#[repr(i32)]
1713pub enum TimeRangeType {
1714    Unspecified = 0,
1715    Absolute = 1,
1716    Relative = 2,
1717}
1718impl TimeRangeType {
1719    /// String value of the enum field names used in the ProtoBuf definition.
1720    ///
1721    /// The values are not transformed in any way and thus are considered stable
1722    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1723    pub fn as_str_name(&self) -> &'static str {
1724        match self {
1725            Self::Unspecified => "TIME_RANGE_TYPE_UNSPECIFIED",
1726            Self::Absolute => "TIME_RANGE_TYPE_ABSOLUTE",
1727            Self::Relative => "TIME_RANGE_TYPE_RELATIVE",
1728        }
1729    }
1730    /// Creates an enum from field names used in the ProtoBuf definition.
1731    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1732        match value {
1733            "TIME_RANGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1734            "TIME_RANGE_TYPE_ABSOLUTE" => Some(Self::Absolute),
1735            "TIME_RANGE_TYPE_RELATIVE" => Some(Self::Relative),
1736            _ => None,
1737        }
1738    }
1739}
1740#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1741#[repr(i32)]
1742pub enum ComputeOutputType {
1743    Unspecified = 0,
1744    RangeSeries = 1,
1745    NumericSeries = 2,
1746    NumericArraySeries = 3,
1747    EnumSeries = 4,
1748    EnumArraySeries = 5,
1749    LogSeries = 6,
1750    StructSeries = 7,
1751    VideoSeries = 8,
1752    UntypedSeries = 9,
1753    GroupedSeries = 10,
1754    LastPoint = 11,
1755    LastRange = 12,
1756    CartesianPoints = 13,
1757    Cartesian3dPoints = 14,
1758    Multivariate = 15,
1759    NumericHistogram = 16,
1760    FrequencyDomain = 17,
1761    FrequencyDomainV2 = 18,
1762    BucketedFrequencyDomain = 19,
1763    NumericRangeAggregate = 20,
1764    CurveFit = 21,
1765    CurveV2 = 22,
1766}
1767impl ComputeOutputType {
1768    /// String value of the enum field names used in the ProtoBuf definition.
1769    ///
1770    /// The values are not transformed in any way and thus are considered stable
1771    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1772    pub fn as_str_name(&self) -> &'static str {
1773        match self {
1774            Self::Unspecified => "COMPUTE_OUTPUT_TYPE_UNSPECIFIED",
1775            Self::RangeSeries => "COMPUTE_OUTPUT_TYPE_RANGE_SERIES",
1776            Self::NumericSeries => "COMPUTE_OUTPUT_TYPE_NUMERIC_SERIES",
1777            Self::NumericArraySeries => "COMPUTE_OUTPUT_TYPE_NUMERIC_ARRAY_SERIES",
1778            Self::EnumSeries => "COMPUTE_OUTPUT_TYPE_ENUM_SERIES",
1779            Self::EnumArraySeries => "COMPUTE_OUTPUT_TYPE_ENUM_ARRAY_SERIES",
1780            Self::LogSeries => "COMPUTE_OUTPUT_TYPE_LOG_SERIES",
1781            Self::StructSeries => "COMPUTE_OUTPUT_TYPE_STRUCT_SERIES",
1782            Self::VideoSeries => "COMPUTE_OUTPUT_TYPE_VIDEO_SERIES",
1783            Self::UntypedSeries => "COMPUTE_OUTPUT_TYPE_UNTYPED_SERIES",
1784            Self::GroupedSeries => "COMPUTE_OUTPUT_TYPE_GROUPED_SERIES",
1785            Self::LastPoint => "COMPUTE_OUTPUT_TYPE_LAST_POINT",
1786            Self::LastRange => "COMPUTE_OUTPUT_TYPE_LAST_RANGE",
1787            Self::CartesianPoints => "COMPUTE_OUTPUT_TYPE_CARTESIAN_POINTS",
1788            Self::Cartesian3dPoints => "COMPUTE_OUTPUT_TYPE_CARTESIAN_3D_POINTS",
1789            Self::Multivariate => "COMPUTE_OUTPUT_TYPE_MULTIVARIATE",
1790            Self::NumericHistogram => "COMPUTE_OUTPUT_TYPE_NUMERIC_HISTOGRAM",
1791            Self::FrequencyDomain => "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN",
1792            Self::FrequencyDomainV2 => "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN_V2",
1793            Self::BucketedFrequencyDomain => {
1794                "COMPUTE_OUTPUT_TYPE_BUCKETED_FREQUENCY_DOMAIN"
1795            }
1796            Self::NumericRangeAggregate => "COMPUTE_OUTPUT_TYPE_NUMERIC_RANGE_AGGREGATE",
1797            Self::CurveFit => "COMPUTE_OUTPUT_TYPE_CURVE_FIT",
1798            Self::CurveV2 => "COMPUTE_OUTPUT_TYPE_CURVE_V2",
1799        }
1800    }
1801    /// Creates an enum from field names used in the ProtoBuf definition.
1802    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1803        match value {
1804            "COMPUTE_OUTPUT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1805            "COMPUTE_OUTPUT_TYPE_RANGE_SERIES" => Some(Self::RangeSeries),
1806            "COMPUTE_OUTPUT_TYPE_NUMERIC_SERIES" => Some(Self::NumericSeries),
1807            "COMPUTE_OUTPUT_TYPE_NUMERIC_ARRAY_SERIES" => Some(Self::NumericArraySeries),
1808            "COMPUTE_OUTPUT_TYPE_ENUM_SERIES" => Some(Self::EnumSeries),
1809            "COMPUTE_OUTPUT_TYPE_ENUM_ARRAY_SERIES" => Some(Self::EnumArraySeries),
1810            "COMPUTE_OUTPUT_TYPE_LOG_SERIES" => Some(Self::LogSeries),
1811            "COMPUTE_OUTPUT_TYPE_STRUCT_SERIES" => Some(Self::StructSeries),
1812            "COMPUTE_OUTPUT_TYPE_VIDEO_SERIES" => Some(Self::VideoSeries),
1813            "COMPUTE_OUTPUT_TYPE_UNTYPED_SERIES" => Some(Self::UntypedSeries),
1814            "COMPUTE_OUTPUT_TYPE_GROUPED_SERIES" => Some(Self::GroupedSeries),
1815            "COMPUTE_OUTPUT_TYPE_LAST_POINT" => Some(Self::LastPoint),
1816            "COMPUTE_OUTPUT_TYPE_LAST_RANGE" => Some(Self::LastRange),
1817            "COMPUTE_OUTPUT_TYPE_CARTESIAN_POINTS" => Some(Self::CartesianPoints),
1818            "COMPUTE_OUTPUT_TYPE_CARTESIAN_3D_POINTS" => Some(Self::Cartesian3dPoints),
1819            "COMPUTE_OUTPUT_TYPE_MULTIVARIATE" => Some(Self::Multivariate),
1820            "COMPUTE_OUTPUT_TYPE_NUMERIC_HISTOGRAM" => Some(Self::NumericHistogram),
1821            "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN" => Some(Self::FrequencyDomain),
1822            "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN_V2" => Some(Self::FrequencyDomainV2),
1823            "COMPUTE_OUTPUT_TYPE_BUCKETED_FREQUENCY_DOMAIN" => {
1824                Some(Self::BucketedFrequencyDomain)
1825            }
1826            "COMPUTE_OUTPUT_TYPE_NUMERIC_RANGE_AGGREGATE" => {
1827                Some(Self::NumericRangeAggregate)
1828            }
1829            "COMPUTE_OUTPUT_TYPE_CURVE_FIT" => Some(Self::CurveFit),
1830            "COMPUTE_OUTPUT_TYPE_CURVE_V2" => Some(Self::CurveV2),
1831            _ => None,
1832        }
1833    }
1834}
1835#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1836#[repr(i32)]
1837pub enum CodeExecutionCallOutcome {
1838    Unspecified = 0,
1839    Succeeded = 1,
1840    Failed = 2,
1841    Denied = 3,
1842}
1843impl CodeExecutionCallOutcome {
1844    /// String value of the enum field names used in the ProtoBuf definition.
1845    ///
1846    /// The values are not transformed in any way and thus are considered stable
1847    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1848    pub fn as_str_name(&self) -> &'static str {
1849        match self {
1850            Self::Unspecified => "CODE_EXECUTION_CALL_OUTCOME_UNSPECIFIED",
1851            Self::Succeeded => "CODE_EXECUTION_CALL_OUTCOME_SUCCEEDED",
1852            Self::Failed => "CODE_EXECUTION_CALL_OUTCOME_FAILED",
1853            Self::Denied => "CODE_EXECUTION_CALL_OUTCOME_DENIED",
1854        }
1855    }
1856    /// Creates an enum from field names used in the ProtoBuf definition.
1857    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1858        match value {
1859            "CODE_EXECUTION_CALL_OUTCOME_UNSPECIFIED" => Some(Self::Unspecified),
1860            "CODE_EXECUTION_CALL_OUTCOME_SUCCEEDED" => Some(Self::Succeeded),
1861            "CODE_EXECUTION_CALL_OUTCOME_FAILED" => Some(Self::Failed),
1862            "CODE_EXECUTION_CALL_OUTCOME_DENIED" => Some(Self::Denied),
1863            _ => None,
1864        }
1865    }
1866}
1867/// Generated client implementations.
1868pub mod ai_agent_service_client {
1869    #![allow(
1870        unused_variables,
1871        dead_code,
1872        missing_docs,
1873        clippy::wildcard_imports,
1874        clippy::let_unit_value,
1875    )]
1876    use tonic::codegen::*;
1877    use tonic::codegen::http::Uri;
1878    #[derive(Debug, Clone)]
1879    pub struct AiAgentServiceClient<T> {
1880        inner: tonic::client::Grpc<T>,
1881    }
1882    impl AiAgentServiceClient<tonic::transport::Channel> {
1883        /// Attempt to create a new client by connecting to a given endpoint.
1884        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1885        where
1886            D: TryInto<tonic::transport::Endpoint>,
1887            D::Error: Into<StdError>,
1888        {
1889            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1890            Ok(Self::new(conn))
1891        }
1892    }
1893    impl<T> AiAgentServiceClient<T>
1894    where
1895        T: tonic::client::GrpcService<tonic::body::Body>,
1896        T::Error: Into<StdError>,
1897        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1898        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1899    {
1900        pub fn new(inner: T) -> Self {
1901            let inner = tonic::client::Grpc::new(inner);
1902            Self { inner }
1903        }
1904        pub fn with_origin(inner: T, origin: Uri) -> Self {
1905            let inner = tonic::client::Grpc::with_origin(inner, origin);
1906            Self { inner }
1907        }
1908        pub fn with_interceptor<F>(
1909            inner: T,
1910            interceptor: F,
1911        ) -> AiAgentServiceClient<InterceptedService<T, F>>
1912        where
1913            F: tonic::service::Interceptor,
1914            T::ResponseBody: Default,
1915            T: tonic::codegen::Service<
1916                http::Request<tonic::body::Body>,
1917                Response = http::Response<
1918                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1919                >,
1920            >,
1921            <T as tonic::codegen::Service<
1922                http::Request<tonic::body::Body>,
1923            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1924        {
1925            AiAgentServiceClient::new(InterceptedService::new(inner, interceptor))
1926        }
1927        /// Compress requests with the given encoding.
1928        ///
1929        /// This requires the server to support it otherwise it might respond with an
1930        /// error.
1931        #[must_use]
1932        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1933            self.inner = self.inner.send_compressed(encoding);
1934            self
1935        }
1936        /// Enable decompressing responses.
1937        #[must_use]
1938        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1939            self.inner = self.inner.accept_compressed(encoding);
1940            self
1941        }
1942        /// Limits the maximum size of a decoded message.
1943        ///
1944        /// Default: `4MB`
1945        #[must_use]
1946        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1947            self.inner = self.inner.max_decoding_message_size(limit);
1948            self
1949        }
1950        /// Limits the maximum size of an encoded message.
1951        ///
1952        /// Default: `usize::MAX`
1953        #[must_use]
1954        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1955            self.inner = self.inner.max_encoding_message_size(limit);
1956            self
1957        }
1958        pub async fn list_models(
1959            &mut self,
1960            request: impl tonic::IntoRequest<super::ListModelsRequest>,
1961        ) -> std::result::Result<
1962            tonic::Response<super::ListModelsResponse>,
1963            tonic::Status,
1964        > {
1965            self.inner
1966                .ready()
1967                .await
1968                .map_err(|e| {
1969                    tonic::Status::unknown(
1970                        format!("Service was not ready: {}", e.into()),
1971                    )
1972                })?;
1973            let codec = tonic::codec::ProstCodec::default();
1974            let path = http::uri::PathAndQuery::from_static(
1975                "/nominal.ai.v1.AIAgentService/ListModels",
1976            );
1977            let mut req = request.into_request();
1978            req.extensions_mut()
1979                .insert(GrpcMethod::new("nominal.ai.v1.AIAgentService", "ListModels"));
1980            self.inner.unary(req, path, codec).await
1981        }
1982        pub async fn stream_chat(
1983            &mut self,
1984            request: impl tonic::IntoRequest<super::StreamChatRequest>,
1985        ) -> std::result::Result<
1986            tonic::Response<tonic::codec::Streaming<super::StreamChatResponse>>,
1987            tonic::Status,
1988        > {
1989            self.inner
1990                .ready()
1991                .await
1992                .map_err(|e| {
1993                    tonic::Status::unknown(
1994                        format!("Service was not ready: {}", e.into()),
1995                    )
1996                })?;
1997            let codec = tonic::codec::ProstCodec::default();
1998            let path = http::uri::PathAndQuery::from_static(
1999                "/nominal.ai.v1.AIAgentService/StreamChat",
2000            );
2001            let mut req = request.into_request();
2002            req.extensions_mut()
2003                .insert(GrpcMethod::new("nominal.ai.v1.AIAgentService", "StreamChat"));
2004            self.inner.server_streaming(req, path, codec).await
2005        }
2006        #[deprecated]
2007        pub async fn get_conversation(
2008            &mut self,
2009            request: impl tonic::IntoRequest<super::GetConversationRequest>,
2010        ) -> std::result::Result<
2011            tonic::Response<super::GetConversationResponse>,
2012            tonic::Status,
2013        > {
2014            self.inner
2015                .ready()
2016                .await
2017                .map_err(|e| {
2018                    tonic::Status::unknown(
2019                        format!("Service was not ready: {}", e.into()),
2020                    )
2021                })?;
2022            let codec = tonic::codec::ProstCodec::default();
2023            let path = http::uri::PathAndQuery::from_static(
2024                "/nominal.ai.v1.AIAgentService/GetConversation",
2025            );
2026            let mut req = request.into_request();
2027            req.extensions_mut()
2028                .insert(
2029                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "GetConversation"),
2030                );
2031            self.inner.unary(req, path, codec).await
2032        }
2033        pub async fn get_conversation_metadata(
2034            &mut self,
2035            request: impl tonic::IntoRequest<super::GetConversationMetadataRequest>,
2036        ) -> std::result::Result<
2037            tonic::Response<super::GetConversationMetadataResponse>,
2038            tonic::Status,
2039        > {
2040            self.inner
2041                .ready()
2042                .await
2043                .map_err(|e| {
2044                    tonic::Status::unknown(
2045                        format!("Service was not ready: {}", e.into()),
2046                    )
2047                })?;
2048            let codec = tonic::codec::ProstCodec::default();
2049            let path = http::uri::PathAndQuery::from_static(
2050                "/nominal.ai.v1.AIAgentService/GetConversationMetadata",
2051            );
2052            let mut req = request.into_request();
2053            req.extensions_mut()
2054                .insert(
2055                    GrpcMethod::new(
2056                        "nominal.ai.v1.AIAgentService",
2057                        "GetConversationMetadata",
2058                    ),
2059                );
2060            self.inner.unary(req, path, codec).await
2061        }
2062        pub async fn get_conversation_messages(
2063            &mut self,
2064            request: impl tonic::IntoRequest<super::GetConversationMessagesRequest>,
2065        ) -> std::result::Result<
2066            tonic::Response<super::GetConversationMessagesResponse>,
2067            tonic::Status,
2068        > {
2069            self.inner
2070                .ready()
2071                .await
2072                .map_err(|e| {
2073                    tonic::Status::unknown(
2074                        format!("Service was not ready: {}", e.into()),
2075                    )
2076                })?;
2077            let codec = tonic::codec::ProstCodec::default();
2078            let path = http::uri::PathAndQuery::from_static(
2079                "/nominal.ai.v1.AIAgentService/GetConversationMessages",
2080            );
2081            let mut req = request.into_request();
2082            req.extensions_mut()
2083                .insert(
2084                    GrpcMethod::new(
2085                        "nominal.ai.v1.AIAgentService",
2086                        "GetConversationMessages",
2087                    ),
2088                );
2089            self.inner.unary(req, path, codec).await
2090        }
2091        pub async fn list_conversations(
2092            &mut self,
2093            request: impl tonic::IntoRequest<super::ListConversationsRequest>,
2094        ) -> std::result::Result<
2095            tonic::Response<super::ListConversationsResponse>,
2096            tonic::Status,
2097        > {
2098            self.inner
2099                .ready()
2100                .await
2101                .map_err(|e| {
2102                    tonic::Status::unknown(
2103                        format!("Service was not ready: {}", e.into()),
2104                    )
2105                })?;
2106            let codec = tonic::codec::ProstCodec::default();
2107            let path = http::uri::PathAndQuery::from_static(
2108                "/nominal.ai.v1.AIAgentService/ListConversations",
2109            );
2110            let mut req = request.into_request();
2111            req.extensions_mut()
2112                .insert(
2113                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "ListConversations"),
2114                );
2115            self.inner.unary(req, path, codec).await
2116        }
2117        pub async fn batch_get_conversation_active_runs(
2118            &mut self,
2119            request: impl tonic::IntoRequest<
2120                super::BatchGetConversationActiveRunsRequest,
2121            >,
2122        ) -> std::result::Result<
2123            tonic::Response<super::BatchGetConversationActiveRunsResponse>,
2124            tonic::Status,
2125        > {
2126            self.inner
2127                .ready()
2128                .await
2129                .map_err(|e| {
2130                    tonic::Status::unknown(
2131                        format!("Service was not ready: {}", e.into()),
2132                    )
2133                })?;
2134            let codec = tonic::codec::ProstCodec::default();
2135            let path = http::uri::PathAndQuery::from_static(
2136                "/nominal.ai.v1.AIAgentService/BatchGetConversationActiveRuns",
2137            );
2138            let mut req = request.into_request();
2139            req.extensions_mut()
2140                .insert(
2141                    GrpcMethod::new(
2142                        "nominal.ai.v1.AIAgentService",
2143                        "BatchGetConversationActiveRuns",
2144                    ),
2145                );
2146            self.inner.unary(req, path, codec).await
2147        }
2148        pub async fn batch_get_conversation_sandboxes(
2149            &mut self,
2150            request: impl tonic::IntoRequest<super::BatchGetConversationSandboxesRequest>,
2151        ) -> std::result::Result<
2152            tonic::Response<super::BatchGetConversationSandboxesResponse>,
2153            tonic::Status,
2154        > {
2155            self.inner
2156                .ready()
2157                .await
2158                .map_err(|e| {
2159                    tonic::Status::unknown(
2160                        format!("Service was not ready: {}", e.into()),
2161                    )
2162                })?;
2163            let codec = tonic::codec::ProstCodec::default();
2164            let path = http::uri::PathAndQuery::from_static(
2165                "/nominal.ai.v1.AIAgentService/BatchGetConversationSandboxes",
2166            );
2167            let mut req = request.into_request();
2168            req.extensions_mut()
2169                .insert(
2170                    GrpcMethod::new(
2171                        "nominal.ai.v1.AIAgentService",
2172                        "BatchGetConversationSandboxes",
2173                    ),
2174                );
2175            self.inner.unary(req, path, codec).await
2176        }
2177        pub async fn resume_conversation_sandbox(
2178            &mut self,
2179            request: impl tonic::IntoRequest<super::ResumeConversationSandboxRequest>,
2180        ) -> std::result::Result<
2181            tonic::Response<super::ResumeConversationSandboxResponse>,
2182            tonic::Status,
2183        > {
2184            self.inner
2185                .ready()
2186                .await
2187                .map_err(|e| {
2188                    tonic::Status::unknown(
2189                        format!("Service was not ready: {}", e.into()),
2190                    )
2191                })?;
2192            let codec = tonic::codec::ProstCodec::default();
2193            let path = http::uri::PathAndQuery::from_static(
2194                "/nominal.ai.v1.AIAgentService/ResumeConversationSandbox",
2195            );
2196            let mut req = request.into_request();
2197            req.extensions_mut()
2198                .insert(
2199                    GrpcMethod::new(
2200                        "nominal.ai.v1.AIAgentService",
2201                        "ResumeConversationSandbox",
2202                    ),
2203                );
2204            self.inner.unary(req, path, codec).await
2205        }
2206        pub async fn create_conversation(
2207            &mut self,
2208            request: impl tonic::IntoRequest<super::CreateConversationRequest>,
2209        ) -> std::result::Result<
2210            tonic::Response<super::CreateConversationResponse>,
2211            tonic::Status,
2212        > {
2213            self.inner
2214                .ready()
2215                .await
2216                .map_err(|e| {
2217                    tonic::Status::unknown(
2218                        format!("Service was not ready: {}", e.into()),
2219                    )
2220                })?;
2221            let codec = tonic::codec::ProstCodec::default();
2222            let path = http::uri::PathAndQuery::from_static(
2223                "/nominal.ai.v1.AIAgentService/CreateConversation",
2224            );
2225            let mut req = request.into_request();
2226            req.extensions_mut()
2227                .insert(
2228                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "CreateConversation"),
2229                );
2230            self.inner.unary(req, path, codec).await
2231        }
2232        pub async fn update_conversation_metadata(
2233            &mut self,
2234            request: impl tonic::IntoRequest<super::UpdateConversationMetadataRequest>,
2235        ) -> std::result::Result<
2236            tonic::Response<super::UpdateConversationMetadataResponse>,
2237            tonic::Status,
2238        > {
2239            self.inner
2240                .ready()
2241                .await
2242                .map_err(|e| {
2243                    tonic::Status::unknown(
2244                        format!("Service was not ready: {}", e.into()),
2245                    )
2246                })?;
2247            let codec = tonic::codec::ProstCodec::default();
2248            let path = http::uri::PathAndQuery::from_static(
2249                "/nominal.ai.v1.AIAgentService/UpdateConversationMetadata",
2250            );
2251            let mut req = request.into_request();
2252            req.extensions_mut()
2253                .insert(
2254                    GrpcMethod::new(
2255                        "nominal.ai.v1.AIAgentService",
2256                        "UpdateConversationMetadata",
2257                    ),
2258                );
2259            self.inner.unary(req, path, codec).await
2260        }
2261        pub async fn delete_conversation(
2262            &mut self,
2263            request: impl tonic::IntoRequest<super::DeleteConversationRequest>,
2264        ) -> std::result::Result<
2265            tonic::Response<super::DeleteConversationResponse>,
2266            tonic::Status,
2267        > {
2268            self.inner
2269                .ready()
2270                .await
2271                .map_err(|e| {
2272                    tonic::Status::unknown(
2273                        format!("Service was not ready: {}", e.into()),
2274                    )
2275                })?;
2276            let codec = tonic::codec::ProstCodec::default();
2277            let path = http::uri::PathAndQuery::from_static(
2278                "/nominal.ai.v1.AIAgentService/DeleteConversation",
2279            );
2280            let mut req = request.into_request();
2281            req.extensions_mut()
2282                .insert(
2283                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "DeleteConversation"),
2284                );
2285            self.inner.unary(req, path, codec).await
2286        }
2287        pub async fn archive_conversation(
2288            &mut self,
2289            request: impl tonic::IntoRequest<super::ArchiveConversationRequest>,
2290        ) -> std::result::Result<
2291            tonic::Response<super::ArchiveConversationResponse>,
2292            tonic::Status,
2293        > {
2294            self.inner
2295                .ready()
2296                .await
2297                .map_err(|e| {
2298                    tonic::Status::unknown(
2299                        format!("Service was not ready: {}", e.into()),
2300                    )
2301                })?;
2302            let codec = tonic::codec::ProstCodec::default();
2303            let path = http::uri::PathAndQuery::from_static(
2304                "/nominal.ai.v1.AIAgentService/ArchiveConversation",
2305            );
2306            let mut req = request.into_request();
2307            req.extensions_mut()
2308                .insert(
2309                    GrpcMethod::new(
2310                        "nominal.ai.v1.AIAgentService",
2311                        "ArchiveConversation",
2312                    ),
2313                );
2314            self.inner.unary(req, path, codec).await
2315        }
2316        pub async fn unarchive_conversation(
2317            &mut self,
2318            request: impl tonic::IntoRequest<super::UnarchiveConversationRequest>,
2319        ) -> std::result::Result<
2320            tonic::Response<super::UnarchiveConversationResponse>,
2321            tonic::Status,
2322        > {
2323            self.inner
2324                .ready()
2325                .await
2326                .map_err(|e| {
2327                    tonic::Status::unknown(
2328                        format!("Service was not ready: {}", e.into()),
2329                    )
2330                })?;
2331            let codec = tonic::codec::ProstCodec::default();
2332            let path = http::uri::PathAndQuery::from_static(
2333                "/nominal.ai.v1.AIAgentService/UnarchiveConversation",
2334            );
2335            let mut req = request.into_request();
2336            req.extensions_mut()
2337                .insert(
2338                    GrpcMethod::new(
2339                        "nominal.ai.v1.AIAgentService",
2340                        "UnarchiveConversation",
2341                    ),
2342                );
2343            self.inner.unary(req, path, codec).await
2344        }
2345        pub async fn get_snapshot_rid_by_user_message_id(
2346            &mut self,
2347            request: impl tonic::IntoRequest<super::GetSnapshotRidByUserMessageIdRequest>,
2348        ) -> std::result::Result<
2349            tonic::Response<super::GetSnapshotRidByUserMessageIdResponse>,
2350            tonic::Status,
2351        > {
2352            self.inner
2353                .ready()
2354                .await
2355                .map_err(|e| {
2356                    tonic::Status::unknown(
2357                        format!("Service was not ready: {}", e.into()),
2358                    )
2359                })?;
2360            let codec = tonic::codec::ProstCodec::default();
2361            let path = http::uri::PathAndQuery::from_static(
2362                "/nominal.ai.v1.AIAgentService/GetSnapshotRidByUserMessageId",
2363            );
2364            let mut req = request.into_request();
2365            req.extensions_mut()
2366                .insert(
2367                    GrpcMethod::new(
2368                        "nominal.ai.v1.AIAgentService",
2369                        "GetSnapshotRidByUserMessageId",
2370                    ),
2371                );
2372            self.inner.unary(req, path, codec).await
2373        }
2374        pub async fn compact_conversation(
2375            &mut self,
2376            request: impl tonic::IntoRequest<super::CompactConversationRequest>,
2377        ) -> std::result::Result<
2378            tonic::Response<super::CompactConversationResponse>,
2379            tonic::Status,
2380        > {
2381            self.inner
2382                .ready()
2383                .await
2384                .map_err(|e| {
2385                    tonic::Status::unknown(
2386                        format!("Service was not ready: {}", e.into()),
2387                    )
2388                })?;
2389            let codec = tonic::codec::ProstCodec::default();
2390            let path = http::uri::PathAndQuery::from_static(
2391                "/nominal.ai.v1.AIAgentService/CompactConversation",
2392            );
2393            let mut req = request.into_request();
2394            req.extensions_mut()
2395                .insert(
2396                    GrpcMethod::new(
2397                        "nominal.ai.v1.AIAgentService",
2398                        "CompactConversation",
2399                    ),
2400                );
2401            self.inner.unary(req, path, codec).await
2402        }
2403        pub async fn submit_message_feedback(
2404            &mut self,
2405            request: impl tonic::IntoRequest<super::SubmitMessageFeedbackRequest>,
2406        ) -> std::result::Result<
2407            tonic::Response<super::SubmitMessageFeedbackResponse>,
2408            tonic::Status,
2409        > {
2410            self.inner
2411                .ready()
2412                .await
2413                .map_err(|e| {
2414                    tonic::Status::unknown(
2415                        format!("Service was not ready: {}", e.into()),
2416                    )
2417                })?;
2418            let codec = tonic::codec::ProstCodec::default();
2419            let path = http::uri::PathAndQuery::from_static(
2420                "/nominal.ai.v1.AIAgentService/SubmitMessageFeedback",
2421            );
2422            let mut req = request.into_request();
2423            req.extensions_mut()
2424                .insert(
2425                    GrpcMethod::new(
2426                        "nominal.ai.v1.AIAgentService",
2427                        "SubmitMessageFeedback",
2428                    ),
2429                );
2430            self.inner.unary(req, path, codec).await
2431        }
2432        pub async fn update_conversation_resources(
2433            &mut self,
2434            request: impl tonic::IntoRequest<super::UpdateConversationResourcesRequest>,
2435        ) -> std::result::Result<
2436            tonic::Response<super::UpdateConversationResourcesResponse>,
2437            tonic::Status,
2438        > {
2439            self.inner
2440                .ready()
2441                .await
2442                .map_err(|e| {
2443                    tonic::Status::unknown(
2444                        format!("Service was not ready: {}", e.into()),
2445                    )
2446                })?;
2447            let codec = tonic::codec::ProstCodec::default();
2448            let path = http::uri::PathAndQuery::from_static(
2449                "/nominal.ai.v1.AIAgentService/UpdateConversationResources",
2450            );
2451            let mut req = request.into_request();
2452            req.extensions_mut()
2453                .insert(
2454                    GrpcMethod::new(
2455                        "nominal.ai.v1.AIAgentService",
2456                        "UpdateConversationResources",
2457                    ),
2458                );
2459            self.inner.unary(req, path, codec).await
2460        }
2461        pub async fn cancel_agent_run(
2462            &mut self,
2463            request: impl tonic::IntoRequest<super::CancelAgentRunRequest>,
2464        ) -> std::result::Result<
2465            tonic::Response<super::CancelAgentRunResponse>,
2466            tonic::Status,
2467        > {
2468            self.inner
2469                .ready()
2470                .await
2471                .map_err(|e| {
2472                    tonic::Status::unknown(
2473                        format!("Service was not ready: {}", e.into()),
2474                    )
2475                })?;
2476            let codec = tonic::codec::ProstCodec::default();
2477            let path = http::uri::PathAndQuery::from_static(
2478                "/nominal.ai.v1.AIAgentService/CancelAgentRun",
2479            );
2480            let mut req = request.into_request();
2481            req.extensions_mut()
2482                .insert(
2483                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "CancelAgentRun"),
2484                );
2485            self.inner.unary(req, path, codec).await
2486        }
2487        pub async fn steer_agent_run(
2488            &mut self,
2489            request: impl tonic::IntoRequest<super::SteerAgentRunRequest>,
2490        ) -> std::result::Result<
2491            tonic::Response<super::SteerAgentRunResponse>,
2492            tonic::Status,
2493        > {
2494            self.inner
2495                .ready()
2496                .await
2497                .map_err(|e| {
2498                    tonic::Status::unknown(
2499                        format!("Service was not ready: {}", e.into()),
2500                    )
2501                })?;
2502            let codec = tonic::codec::ProstCodec::default();
2503            let path = http::uri::PathAndQuery::from_static(
2504                "/nominal.ai.v1.AIAgentService/SteerAgentRun",
2505            );
2506            let mut req = request.into_request();
2507            req.extensions_mut()
2508                .insert(
2509                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "SteerAgentRun"),
2510                );
2511            self.inner.unary(req, path, codec).await
2512        }
2513        pub async fn batch_get_citations(
2514            &mut self,
2515            request: impl tonic::IntoRequest<super::BatchGetCitationsRequest>,
2516        ) -> std::result::Result<
2517            tonic::Response<super::BatchGetCitationsResponse>,
2518            tonic::Status,
2519        > {
2520            self.inner
2521                .ready()
2522                .await
2523                .map_err(|e| {
2524                    tonic::Status::unknown(
2525                        format!("Service was not ready: {}", e.into()),
2526                    )
2527                })?;
2528            let codec = tonic::codec::ProstCodec::default();
2529            let path = http::uri::PathAndQuery::from_static(
2530                "/nominal.ai.v1.AIAgentService/BatchGetCitations",
2531            );
2532            let mut req = request.into_request();
2533            req.extensions_mut()
2534                .insert(
2535                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "BatchGetCitations"),
2536                );
2537            self.inner.unary(req, path, codec).await
2538        }
2539        pub async fn answer_should_know_offer(
2540            &mut self,
2541            request: impl tonic::IntoRequest<super::AnswerShouldKnowOfferRequest>,
2542        ) -> std::result::Result<
2543            tonic::Response<super::AnswerShouldKnowOfferResponse>,
2544            tonic::Status,
2545        > {
2546            self.inner
2547                .ready()
2548                .await
2549                .map_err(|e| {
2550                    tonic::Status::unknown(
2551                        format!("Service was not ready: {}", e.into()),
2552                    )
2553                })?;
2554            let codec = tonic::codec::ProstCodec::default();
2555            let path = http::uri::PathAndQuery::from_static(
2556                "/nominal.ai.v1.AIAgentService/AnswerShouldKnowOffer",
2557            );
2558            let mut req = request.into_request();
2559            req.extensions_mut()
2560                .insert(
2561                    GrpcMethod::new(
2562                        "nominal.ai.v1.AIAgentService",
2563                        "AnswerShouldKnowOffer",
2564                    ),
2565                );
2566            self.inner.unary(req, path, codec).await
2567        }
2568        pub async fn create_experiment_event(
2569            &mut self,
2570            request: impl tonic::IntoRequest<super::CreateExperimentEventRequest>,
2571        ) -> std::result::Result<
2572            tonic::Response<super::CreateExperimentEventResponse>,
2573            tonic::Status,
2574        > {
2575            self.inner
2576                .ready()
2577                .await
2578                .map_err(|e| {
2579                    tonic::Status::unknown(
2580                        format!("Service was not ready: {}", e.into()),
2581                    )
2582                })?;
2583            let codec = tonic::codec::ProstCodec::default();
2584            let path = http::uri::PathAndQuery::from_static(
2585                "/nominal.ai.v1.AIAgentService/CreateExperimentEvent",
2586            );
2587            let mut req = request.into_request();
2588            req.extensions_mut()
2589                .insert(
2590                    GrpcMethod::new(
2591                        "nominal.ai.v1.AIAgentService",
2592                        "CreateExperimentEvent",
2593                    ),
2594                );
2595            self.inner.unary(req, path, codec).await
2596        }
2597    }
2598}
2599#[derive(Clone, PartialEq, ::prost::Message)]
2600pub struct ClassifyErrorRequest {
2601    #[prost(string, tag = "1")]
2602    pub error_message: ::prost::alloc::string::String,
2603}
2604#[derive(Clone, PartialEq, ::prost::Message)]
2605pub struct ClassifyErrorResponse {
2606    #[prost(enumeration = "ErrorClassification", tag = "1")]
2607    pub classification: i32,
2608    #[prost(string, tag = "2")]
2609    pub reason: ::prost::alloc::string::String,
2610}
2611#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2612#[repr(i32)]
2613pub enum ErrorClassification {
2614    Unspecified = 0,
2615    Client = 1,
2616    Server = 2,
2617}
2618impl ErrorClassification {
2619    /// String value of the enum field names used in the ProtoBuf definition.
2620    ///
2621    /// The values are not transformed in any way and thus are considered stable
2622    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2623    pub fn as_str_name(&self) -> &'static str {
2624        match self {
2625            Self::Unspecified => "ERROR_CLASSIFICATION_UNSPECIFIED",
2626            Self::Client => "ERROR_CLASSIFICATION_CLIENT",
2627            Self::Server => "ERROR_CLASSIFICATION_SERVER",
2628        }
2629    }
2630    /// Creates an enum from field names used in the ProtoBuf definition.
2631    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2632        match value {
2633            "ERROR_CLASSIFICATION_UNSPECIFIED" => Some(Self::Unspecified),
2634            "ERROR_CLASSIFICATION_CLIENT" => Some(Self::Client),
2635            "ERROR_CLASSIFICATION_SERVER" => Some(Self::Server),
2636            _ => None,
2637        }
2638    }
2639}
2640/// Generated client implementations.
2641pub mod data_ingestion_error_classifier_service_client {
2642    #![allow(
2643        unused_variables,
2644        dead_code,
2645        missing_docs,
2646        clippy::wildcard_imports,
2647        clippy::let_unit_value,
2648    )]
2649    use tonic::codegen::*;
2650    use tonic::codegen::http::Uri;
2651    #[derive(Debug, Clone)]
2652    pub struct DataIngestionErrorClassifierServiceClient<T> {
2653        inner: tonic::client::Grpc<T>,
2654    }
2655    impl DataIngestionErrorClassifierServiceClient<tonic::transport::Channel> {
2656        /// Attempt to create a new client by connecting to a given endpoint.
2657        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2658        where
2659            D: TryInto<tonic::transport::Endpoint>,
2660            D::Error: Into<StdError>,
2661        {
2662            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2663            Ok(Self::new(conn))
2664        }
2665    }
2666    impl<T> DataIngestionErrorClassifierServiceClient<T>
2667    where
2668        T: tonic::client::GrpcService<tonic::body::Body>,
2669        T::Error: Into<StdError>,
2670        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2671        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2672    {
2673        pub fn new(inner: T) -> Self {
2674            let inner = tonic::client::Grpc::new(inner);
2675            Self { inner }
2676        }
2677        pub fn with_origin(inner: T, origin: Uri) -> Self {
2678            let inner = tonic::client::Grpc::with_origin(inner, origin);
2679            Self { inner }
2680        }
2681        pub fn with_interceptor<F>(
2682            inner: T,
2683            interceptor: F,
2684        ) -> DataIngestionErrorClassifierServiceClient<InterceptedService<T, F>>
2685        where
2686            F: tonic::service::Interceptor,
2687            T::ResponseBody: Default,
2688            T: tonic::codegen::Service<
2689                http::Request<tonic::body::Body>,
2690                Response = http::Response<
2691                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2692                >,
2693            >,
2694            <T as tonic::codegen::Service<
2695                http::Request<tonic::body::Body>,
2696            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2697        {
2698            DataIngestionErrorClassifierServiceClient::new(
2699                InterceptedService::new(inner, interceptor),
2700            )
2701        }
2702        /// Compress requests with the given encoding.
2703        ///
2704        /// This requires the server to support it otherwise it might respond with an
2705        /// error.
2706        #[must_use]
2707        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2708            self.inner = self.inner.send_compressed(encoding);
2709            self
2710        }
2711        /// Enable decompressing responses.
2712        #[must_use]
2713        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2714            self.inner = self.inner.accept_compressed(encoding);
2715            self
2716        }
2717        /// Limits the maximum size of a decoded message.
2718        ///
2719        /// Default: `4MB`
2720        #[must_use]
2721        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2722            self.inner = self.inner.max_decoding_message_size(limit);
2723            self
2724        }
2725        /// Limits the maximum size of an encoded message.
2726        ///
2727        /// Default: `usize::MAX`
2728        #[must_use]
2729        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2730            self.inner = self.inner.max_encoding_message_size(limit);
2731            self
2732        }
2733        pub async fn classify_error(
2734            &mut self,
2735            request: impl tonic::IntoRequest<super::ClassifyErrorRequest>,
2736        ) -> std::result::Result<
2737            tonic::Response<super::ClassifyErrorResponse>,
2738            tonic::Status,
2739        > {
2740            self.inner
2741                .ready()
2742                .await
2743                .map_err(|e| {
2744                    tonic::Status::unknown(
2745                        format!("Service was not ready: {}", e.into()),
2746                    )
2747                })?;
2748            let codec = tonic::codec::ProstCodec::default();
2749            let path = http::uri::PathAndQuery::from_static(
2750                "/nominal.ai.v1.DataIngestionErrorClassifierService/ClassifyError",
2751            );
2752            let mut req = request.into_request();
2753            req.extensions_mut()
2754                .insert(
2755                    GrpcMethod::new(
2756                        "nominal.ai.v1.DataIngestionErrorClassifierService",
2757                        "ClassifyError",
2758                    ),
2759                );
2760            self.inner.unary(req, path, codec).await
2761        }
2762    }
2763}
2764#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2765pub struct GetProviderStatusRequest {}
2766#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2767pub struct GetProviderStatusResponse {
2768    #[prost(message, optional, tag = "1")]
2769    pub timestamp: ::core::option::Option<
2770        super::super::super::google::protobuf::Timestamp,
2771    >,
2772    #[prost(message, optional, tag = "2")]
2773    pub last_status: ::core::option::Option<ProviderStatus>,
2774    #[deprecated]
2775    #[prost(message, optional, tag = "3")]
2776    pub aggregated_status_over_last_30m: ::core::option::Option<ProviderStatus>,
2777    #[prost(message, optional, tag = "4")]
2778    pub aggregated_status: ::core::option::Option<ProviderStatus>,
2779}
2780#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2781pub struct ProviderStatus {
2782    #[prost(oneof = "provider_status::Status", tags = "1, 2")]
2783    pub status: ::core::option::Option<provider_status::Status>,
2784}
2785/// Nested message and enum types in `ProviderStatus`.
2786pub mod provider_status {
2787    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
2788    pub enum Status {
2789        #[prost(message, tag = "1")]
2790        Healthy(super::Healthy),
2791        #[prost(message, tag = "2")]
2792        Degraded(super::Degraded),
2793    }
2794}
2795#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2796pub struct Healthy {}
2797#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2798pub struct Degraded {
2799    #[prost(enumeration = "DegradationReason", tag = "1")]
2800    pub reason: i32,
2801}
2802#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2803pub struct ProviderMetrics {
2804    #[prost(int32, tag = "1")]
2805    pub time_to_first_token_ms: i32,
2806    #[prost(int32, tag = "2")]
2807    pub total_time_ms: i32,
2808}
2809#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2810#[repr(i32)]
2811pub enum DegradationReason {
2812    Unspecified = 0,
2813    HighLatency = 1,
2814    Failures = 2,
2815    HighLatencyAndFailures = 3,
2816    Unavailable = 4,
2817}
2818impl DegradationReason {
2819    /// String value of the enum field names used in the ProtoBuf definition.
2820    ///
2821    /// The values are not transformed in any way and thus are considered stable
2822    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2823    pub fn as_str_name(&self) -> &'static str {
2824        match self {
2825            Self::Unspecified => "DEGRADATION_REASON_UNSPECIFIED",
2826            Self::HighLatency => "DEGRADATION_REASON_HIGH_LATENCY",
2827            Self::Failures => "DEGRADATION_REASON_FAILURES",
2828            Self::HighLatencyAndFailures => {
2829                "DEGRADATION_REASON_HIGH_LATENCY_AND_FAILURES"
2830            }
2831            Self::Unavailable => "DEGRADATION_REASON_UNAVAILABLE",
2832        }
2833    }
2834    /// Creates an enum from field names used in the ProtoBuf definition.
2835    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2836        match value {
2837            "DEGRADATION_REASON_UNSPECIFIED" => Some(Self::Unspecified),
2838            "DEGRADATION_REASON_HIGH_LATENCY" => Some(Self::HighLatency),
2839            "DEGRADATION_REASON_FAILURES" => Some(Self::Failures),
2840            "DEGRADATION_REASON_HIGH_LATENCY_AND_FAILURES" => {
2841                Some(Self::HighLatencyAndFailures)
2842            }
2843            "DEGRADATION_REASON_UNAVAILABLE" => Some(Self::Unavailable),
2844            _ => None,
2845        }
2846    }
2847}
2848/// Generated client implementations.
2849pub mod model_provider_health_service_client {
2850    #![allow(
2851        unused_variables,
2852        dead_code,
2853        missing_docs,
2854        clippy::wildcard_imports,
2855        clippy::let_unit_value,
2856    )]
2857    use tonic::codegen::*;
2858    use tonic::codegen::http::Uri;
2859    #[derive(Debug, Clone)]
2860    pub struct ModelProviderHealthServiceClient<T> {
2861        inner: tonic::client::Grpc<T>,
2862    }
2863    impl ModelProviderHealthServiceClient<tonic::transport::Channel> {
2864        /// Attempt to create a new client by connecting to a given endpoint.
2865        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2866        where
2867            D: TryInto<tonic::transport::Endpoint>,
2868            D::Error: Into<StdError>,
2869        {
2870            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2871            Ok(Self::new(conn))
2872        }
2873    }
2874    impl<T> ModelProviderHealthServiceClient<T>
2875    where
2876        T: tonic::client::GrpcService<tonic::body::Body>,
2877        T::Error: Into<StdError>,
2878        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2879        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2880    {
2881        pub fn new(inner: T) -> Self {
2882            let inner = tonic::client::Grpc::new(inner);
2883            Self { inner }
2884        }
2885        pub fn with_origin(inner: T, origin: Uri) -> Self {
2886            let inner = tonic::client::Grpc::with_origin(inner, origin);
2887            Self { inner }
2888        }
2889        pub fn with_interceptor<F>(
2890            inner: T,
2891            interceptor: F,
2892        ) -> ModelProviderHealthServiceClient<InterceptedService<T, F>>
2893        where
2894            F: tonic::service::Interceptor,
2895            T::ResponseBody: Default,
2896            T: tonic::codegen::Service<
2897                http::Request<tonic::body::Body>,
2898                Response = http::Response<
2899                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2900                >,
2901            >,
2902            <T as tonic::codegen::Service<
2903                http::Request<tonic::body::Body>,
2904            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2905        {
2906            ModelProviderHealthServiceClient::new(
2907                InterceptedService::new(inner, interceptor),
2908            )
2909        }
2910        /// Compress requests with the given encoding.
2911        ///
2912        /// This requires the server to support it otherwise it might respond with an
2913        /// error.
2914        #[must_use]
2915        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2916            self.inner = self.inner.send_compressed(encoding);
2917            self
2918        }
2919        /// Enable decompressing responses.
2920        #[must_use]
2921        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2922            self.inner = self.inner.accept_compressed(encoding);
2923            self
2924        }
2925        /// Limits the maximum size of a decoded message.
2926        ///
2927        /// Default: `4MB`
2928        #[must_use]
2929        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2930            self.inner = self.inner.max_decoding_message_size(limit);
2931            self
2932        }
2933        /// Limits the maximum size of an encoded message.
2934        ///
2935        /// Default: `usize::MAX`
2936        #[must_use]
2937        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2938            self.inner = self.inner.max_encoding_message_size(limit);
2939            self
2940        }
2941        pub async fn get_provider_status(
2942            &mut self,
2943            request: impl tonic::IntoRequest<super::GetProviderStatusRequest>,
2944        ) -> std::result::Result<
2945            tonic::Response<super::GetProviderStatusResponse>,
2946            tonic::Status,
2947        > {
2948            self.inner
2949                .ready()
2950                .await
2951                .map_err(|e| {
2952                    tonic::Status::unknown(
2953                        format!("Service was not ready: {}", e.into()),
2954                    )
2955                })?;
2956            let codec = tonic::codec::ProstCodec::default();
2957            let path = http::uri::PathAndQuery::from_static(
2958                "/nominal.ai.v1.ModelProviderHealthService/GetProviderStatus",
2959            );
2960            let mut req = request.into_request();
2961            req.extensions_mut()
2962                .insert(
2963                    GrpcMethod::new(
2964                        "nominal.ai.v1.ModelProviderHealthService",
2965                        "GetProviderStatus",
2966                    ),
2967                );
2968            self.inner.unary(req, path, codec).await
2969        }
2970    }
2971}