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, repeated, tag = "1")]
1247    pub pointers: ::prost::alloc::vec::Vec<::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, 8")]
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        #[prost(message, tag = "8")]
1277        UserMessage(super::UserMessageCitation),
1278    }
1279}
1280#[derive(Clone, PartialEq, ::prost::Message)]
1281pub struct UserMessageCitation {
1282    #[prost(string, tag = "1")]
1283    pub message_id: ::prost::alloc::string::String,
1284}
1285#[derive(Clone, PartialEq, ::prost::Message)]
1286pub struct CodeExecutionCitation {
1287    #[prost(string, tag = "1")]
1288    pub code: ::prost::alloc::string::String,
1289    #[prost(string, tag = "2")]
1290    pub output: ::prost::alloc::string::String,
1291    #[prost(string, optional, tag = "3")]
1292    pub error: ::core::option::Option<::prost::alloc::string::String>,
1293    #[prost(message, repeated, tag = "4")]
1294    pub calls: ::prost::alloc::vec::Vec<CodeExecutionCall>,
1295    #[prost(uint32, tag = "5")]
1296    pub omitted_calls: u32,
1297}
1298#[derive(Clone, PartialEq, ::prost::Message)]
1299pub struct CodeExecutionCall {
1300    #[prost(string, tag = "1")]
1301    pub method: ::prost::alloc::string::String,
1302    #[prost(string, optional, tag = "2")]
1303    pub arguments_json: ::core::option::Option<::prost::alloc::string::String>,
1304    #[prost(enumeration = "CodeExecutionCallOutcome", tag = "3")]
1305    pub outcome: i32,
1306    #[prost(string, optional, tag = "4")]
1307    pub error_code: ::core::option::Option<::prost::alloc::string::String>,
1308    #[prost(message, repeated, tag = "5")]
1309    pub sources: ::prost::alloc::vec::Vec<CodeExecutionSource>,
1310}
1311#[derive(Clone, PartialEq, ::prost::Message)]
1312pub struct CodeExecutionSource {
1313    #[prost(string, tag = "1")]
1314    pub label: ::prost::alloc::string::String,
1315    #[prost(oneof = "code_execution_source::Source", tags = "2, 3")]
1316    pub source: ::core::option::Option<code_execution_source::Source>,
1317}
1318/// Nested message and enum types in `CodeExecutionSource`.
1319pub mod code_execution_source {
1320    #[derive(Clone, PartialEq, ::prost::Oneof)]
1321    pub enum Source {
1322        #[prost(message, tag = "2")]
1323        Telemetry(super::TelemetryCitation),
1324        #[prost(message, tag = "3")]
1325        File(super::DriveFileCitation),
1326    }
1327}
1328#[derive(Clone, PartialEq, ::prost::Message)]
1329pub struct TelemetryCitation {
1330    #[prost(oneof = "telemetry_citation::Version", tags = "1")]
1331    pub version: ::core::option::Option<telemetry_citation::Version>,
1332}
1333/// Nested message and enum types in `TelemetryCitation`.
1334pub mod telemetry_citation {
1335    #[derive(Clone, PartialEq, ::prost::Oneof)]
1336    pub enum Version {
1337        #[prost(message, tag = "1")]
1338        V1(super::ComputeProvenanceV1),
1339    }
1340}
1341#[derive(Clone, PartialEq, ::prost::Message)]
1342pub struct DriveFileCitation {
1343    #[prost(string, tag = "1")]
1344    pub file_revision_rid: ::prost::alloc::string::String,
1345    #[prost(message, optional, tag = "2")]
1346    pub file_identity: ::core::option::Option<
1347        super::super::file_store::v1::LogicalFileIdentity,
1348    >,
1349    #[prost(string, tag = "3")]
1350    pub drive_rid: ::prost::alloc::string::String,
1351    #[prost(uint64, tag = "4")]
1352    pub total_size_bytes: u64,
1353    #[prost(oneof = "drive_file_citation::Kind", tags = "5, 6")]
1354    pub kind: ::core::option::Option<drive_file_citation::Kind>,
1355}
1356/// Nested message and enum types in `DriveFileCitation`.
1357pub mod drive_file_citation {
1358    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1359    pub enum Kind {
1360        #[prost(message, tag = "5")]
1361        Text(super::TextFileCitation),
1362        #[prost(message, tag = "6")]
1363        Pdf(super::PdfFileCitation),
1364    }
1365}
1366#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1367pub struct TextFileCitation {
1368    #[prost(message, optional, tag = "1")]
1369    pub byte_range: ::core::option::Option<ByteRange>,
1370}
1371#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1372pub struct PdfFileCitation {
1373    #[prost(uint32, tag = "1")]
1374    pub first_page: u32,
1375    #[prost(uint32, tag = "2")]
1376    pub page_count: u32,
1377    #[prost(uint32, tag = "3")]
1378    pub total_page_count: u32,
1379}
1380#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1381pub struct ByteRange {
1382    #[prost(uint64, tag = "1")]
1383    pub offset: u64,
1384    #[prost(uint64, tag = "2")]
1385    pub length: u64,
1386}
1387#[derive(Clone, PartialEq, ::prost::Message)]
1388pub struct BatchGetCitationsRequest {
1389    #[prost(string, tag = "1")]
1390    pub conversation_rid: ::prost::alloc::string::String,
1391    #[prost(string, repeated, tag = "2")]
1392    pub refs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1393}
1394#[derive(Clone, PartialEq, ::prost::Message)]
1395pub struct BatchGetCitationsResponse {
1396    #[prost(message, repeated, tag = "1")]
1397    pub citations: ::prost::alloc::vec::Vec<Citation>,
1398    #[prost(message, repeated, tag = "2")]
1399    pub errors: ::prost::alloc::vec::Vec<GetCitationResponseError>,
1400}
1401#[derive(Clone, PartialEq, ::prost::Message)]
1402pub struct GetCitationResponseError {
1403    #[prost(string, tag = "1")]
1404    pub r#ref: ::prost::alloc::string::String,
1405    #[prost(enumeration = "get_citation_response_error::Reason", tag = "2")]
1406    pub reason: i32,
1407}
1408/// Nested message and enum types in `GetCitationResponseError`.
1409pub mod get_citation_response_error {
1410    #[derive(
1411        Clone,
1412        Copy,
1413        Debug,
1414        PartialEq,
1415        Eq,
1416        Hash,
1417        PartialOrd,
1418        Ord,
1419        ::prost::Enumeration
1420    )]
1421    #[repr(i32)]
1422    pub enum Reason {
1423        Unspecified = 0,
1424        NotFound = 1,
1425    }
1426    impl Reason {
1427        /// String value of the enum field names used in the ProtoBuf definition.
1428        ///
1429        /// The values are not transformed in any way and thus are considered stable
1430        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1431        pub fn as_str_name(&self) -> &'static str {
1432            match self {
1433                Self::Unspecified => "REASON_UNSPECIFIED",
1434                Self::NotFound => "REASON_NOT_FOUND",
1435            }
1436        }
1437        /// Creates an enum from field names used in the ProtoBuf definition.
1438        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1439            match value {
1440                "REASON_UNSPECIFIED" => Some(Self::Unspecified),
1441                "REASON_NOT_FOUND" => Some(Self::NotFound),
1442                _ => None,
1443            }
1444        }
1445    }
1446}
1447#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1448#[repr(i32)]
1449pub enum FeedbackVote {
1450    Unspecified = 0,
1451    ThumbsUp = 1,
1452    ThumbsDown = 2,
1453}
1454impl FeedbackVote {
1455    /// String value of the enum field names used in the ProtoBuf definition.
1456    ///
1457    /// The values are not transformed in any way and thus are considered stable
1458    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1459    pub fn as_str_name(&self) -> &'static str {
1460        match self {
1461            Self::Unspecified => "FEEDBACK_VOTE_UNSPECIFIED",
1462            Self::ThumbsUp => "FEEDBACK_VOTE_THUMBS_UP",
1463            Self::ThumbsDown => "FEEDBACK_VOTE_THUMBS_DOWN",
1464        }
1465    }
1466    /// Creates an enum from field names used in the ProtoBuf definition.
1467    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1468        match value {
1469            "FEEDBACK_VOTE_UNSPECIFIED" => Some(Self::Unspecified),
1470            "FEEDBACK_VOTE_THUMBS_UP" => Some(Self::ThumbsUp),
1471            "FEEDBACK_VOTE_THUMBS_DOWN" => Some(Self::ThumbsDown),
1472            _ => None,
1473        }
1474    }
1475}
1476#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1477#[repr(i32)]
1478pub enum ShouldKnowAnswer {
1479    Unspecified = 0,
1480    LearnMore = 1,
1481    KnewIt = 2,
1482    NotNow = 3,
1483    Understood = 4,
1484    Chat = 5,
1485    Dismissed = 6,
1486    Helpful = 7,
1487    NotRelevant = 8,
1488    NotUnderstood = 9,
1489    IgnoredSubmit = 10,
1490    IgnoredTimeout = 11,
1491}
1492impl ShouldKnowAnswer {
1493    /// String value of the enum field names used in the ProtoBuf definition.
1494    ///
1495    /// The values are not transformed in any way and thus are considered stable
1496    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1497    pub fn as_str_name(&self) -> &'static str {
1498        match self {
1499            Self::Unspecified => "SHOULD_KNOW_ANSWER_UNSPECIFIED",
1500            Self::LearnMore => "SHOULD_KNOW_ANSWER_LEARN_MORE",
1501            Self::KnewIt => "SHOULD_KNOW_ANSWER_KNEW_IT",
1502            Self::NotNow => "SHOULD_KNOW_ANSWER_NOT_NOW",
1503            Self::Understood => "SHOULD_KNOW_ANSWER_UNDERSTOOD",
1504            Self::Chat => "SHOULD_KNOW_ANSWER_CHAT",
1505            Self::Dismissed => "SHOULD_KNOW_ANSWER_DISMISSED",
1506            Self::Helpful => "SHOULD_KNOW_ANSWER_HELPFUL",
1507            Self::NotRelevant => "SHOULD_KNOW_ANSWER_NOT_RELEVANT",
1508            Self::NotUnderstood => "SHOULD_KNOW_ANSWER_NOT_UNDERSTOOD",
1509            Self::IgnoredSubmit => "SHOULD_KNOW_ANSWER_IGNORED_SUBMIT",
1510            Self::IgnoredTimeout => "SHOULD_KNOW_ANSWER_IGNORED_TIMEOUT",
1511        }
1512    }
1513    /// Creates an enum from field names used in the ProtoBuf definition.
1514    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1515        match value {
1516            "SHOULD_KNOW_ANSWER_UNSPECIFIED" => Some(Self::Unspecified),
1517            "SHOULD_KNOW_ANSWER_LEARN_MORE" => Some(Self::LearnMore),
1518            "SHOULD_KNOW_ANSWER_KNEW_IT" => Some(Self::KnewIt),
1519            "SHOULD_KNOW_ANSWER_NOT_NOW" => Some(Self::NotNow),
1520            "SHOULD_KNOW_ANSWER_UNDERSTOOD" => Some(Self::Understood),
1521            "SHOULD_KNOW_ANSWER_CHAT" => Some(Self::Chat),
1522            "SHOULD_KNOW_ANSWER_DISMISSED" => Some(Self::Dismissed),
1523            "SHOULD_KNOW_ANSWER_HELPFUL" => Some(Self::Helpful),
1524            "SHOULD_KNOW_ANSWER_NOT_RELEVANT" => Some(Self::NotRelevant),
1525            "SHOULD_KNOW_ANSWER_NOT_UNDERSTOOD" => Some(Self::NotUnderstood),
1526            "SHOULD_KNOW_ANSWER_IGNORED_SUBMIT" => Some(Self::IgnoredSubmit),
1527            "SHOULD_KNOW_ANSWER_IGNORED_TIMEOUT" => Some(Self::IgnoredTimeout),
1528            _ => None,
1529        }
1530    }
1531}
1532#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1533#[repr(i32)]
1534pub enum AgentRunExecutionMode {
1535    Unspecified = 0,
1536    Inline = 1,
1537    Durable = 2,
1538}
1539impl AgentRunExecutionMode {
1540    /// String value of the enum field names used in the ProtoBuf definition.
1541    ///
1542    /// The values are not transformed in any way and thus are considered stable
1543    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1544    pub fn as_str_name(&self) -> &'static str {
1545        match self {
1546            Self::Unspecified => "AGENT_RUN_EXECUTION_MODE_UNSPECIFIED",
1547            Self::Inline => "AGENT_RUN_EXECUTION_MODE_INLINE",
1548            Self::Durable => "AGENT_RUN_EXECUTION_MODE_DURABLE",
1549        }
1550    }
1551    /// Creates an enum from field names used in the ProtoBuf definition.
1552    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1553        match value {
1554            "AGENT_RUN_EXECUTION_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1555            "AGENT_RUN_EXECUTION_MODE_INLINE" => Some(Self::Inline),
1556            "AGENT_RUN_EXECUTION_MODE_DURABLE" => Some(Self::Durable),
1557            _ => None,
1558        }
1559    }
1560}
1561#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1562#[repr(i32)]
1563pub enum ConversationSandboxStatus {
1564    Unspecified = 0,
1565    Running = 1,
1566    Idle = 2,
1567    Resuming = 3,
1568}
1569impl ConversationSandboxStatus {
1570    /// String value of the enum field names used in the ProtoBuf definition.
1571    ///
1572    /// The values are not transformed in any way and thus are considered stable
1573    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1574    pub fn as_str_name(&self) -> &'static str {
1575        match self {
1576            Self::Unspecified => "CONVERSATION_SANDBOX_STATUS_UNSPECIFIED",
1577            Self::Running => "CONVERSATION_SANDBOX_STATUS_RUNNING",
1578            Self::Idle => "CONVERSATION_SANDBOX_STATUS_IDLE",
1579            Self::Resuming => "CONVERSATION_SANDBOX_STATUS_RESUMING",
1580        }
1581    }
1582    /// Creates an enum from field names used in the ProtoBuf definition.
1583    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1584        match value {
1585            "CONVERSATION_SANDBOX_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1586            "CONVERSATION_SANDBOX_STATUS_RUNNING" => Some(Self::Running),
1587            "CONVERSATION_SANDBOX_STATUS_IDLE" => Some(Self::Idle),
1588            "CONVERSATION_SANDBOX_STATUS_RESUMING" => Some(Self::Resuming),
1589            _ => None,
1590        }
1591    }
1592}
1593#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1594#[repr(i32)]
1595pub enum ShouldKnowTag {
1596    Unspecified = 0,
1597    YouShouldKnow = 1,
1598    HeadsUp = 2,
1599}
1600impl ShouldKnowTag {
1601    /// String value of the enum field names used in the ProtoBuf definition.
1602    ///
1603    /// The values are not transformed in any way and thus are considered stable
1604    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1605    pub fn as_str_name(&self) -> &'static str {
1606        match self {
1607            Self::Unspecified => "SHOULD_KNOW_TAG_UNSPECIFIED",
1608            Self::YouShouldKnow => "SHOULD_KNOW_TAG_YOU_SHOULD_KNOW",
1609            Self::HeadsUp => "SHOULD_KNOW_TAG_HEADS_UP",
1610        }
1611    }
1612    /// Creates an enum from field names used in the ProtoBuf definition.
1613    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1614        match value {
1615            "SHOULD_KNOW_TAG_UNSPECIFIED" => Some(Self::Unspecified),
1616            "SHOULD_KNOW_TAG_YOU_SHOULD_KNOW" => Some(Self::YouShouldKnow),
1617            "SHOULD_KNOW_TAG_HEADS_UP" => Some(Self::HeadsUp),
1618            _ => None,
1619        }
1620    }
1621}
1622#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1623#[repr(i32)]
1624pub enum ToolCallStatus {
1625    Unspecified = 0,
1626    Approved = 1,
1627    Denied = 2,
1628    AwaitingApproval = 3,
1629}
1630impl ToolCallStatus {
1631    /// String value of the enum field names used in the ProtoBuf definition.
1632    ///
1633    /// The values are not transformed in any way and thus are considered stable
1634    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1635    pub fn as_str_name(&self) -> &'static str {
1636        match self {
1637            Self::Unspecified => "TOOL_CALL_STATUS_UNSPECIFIED",
1638            Self::Approved => "TOOL_CALL_STATUS_APPROVED",
1639            Self::Denied => "TOOL_CALL_STATUS_DENIED",
1640            Self::AwaitingApproval => "TOOL_CALL_STATUS_AWAITING_APPROVAL",
1641        }
1642    }
1643    /// Creates an enum from field names used in the ProtoBuf definition.
1644    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1645        match value {
1646            "TOOL_CALL_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1647            "TOOL_CALL_STATUS_APPROVED" => Some(Self::Approved),
1648            "TOOL_CALL_STATUS_DENIED" => Some(Self::Denied),
1649            "TOOL_CALL_STATUS_AWAITING_APPROVAL" => Some(Self::AwaitingApproval),
1650            _ => None,
1651        }
1652    }
1653}
1654#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1655#[repr(i32)]
1656pub enum UserQuestionState {
1657    Unspecified = 0,
1658    Pending = 1,
1659    Answered = 2,
1660    Declined = 3,
1661}
1662impl UserQuestionState {
1663    /// String value of the enum field names used in the ProtoBuf definition.
1664    ///
1665    /// The values are not transformed in any way and thus are considered stable
1666    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1667    pub fn as_str_name(&self) -> &'static str {
1668        match self {
1669            Self::Unspecified => "USER_QUESTION_STATE_UNSPECIFIED",
1670            Self::Pending => "USER_QUESTION_STATE_PENDING",
1671            Self::Answered => "USER_QUESTION_STATE_ANSWERED",
1672            Self::Declined => "USER_QUESTION_STATE_DECLINED",
1673        }
1674    }
1675    /// Creates an enum from field names used in the ProtoBuf definition.
1676    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1677        match value {
1678            "USER_QUESTION_STATE_UNSPECIFIED" => Some(Self::Unspecified),
1679            "USER_QUESTION_STATE_PENDING" => Some(Self::Pending),
1680            "USER_QUESTION_STATE_ANSWERED" => Some(Self::Answered),
1681            "USER_QUESTION_STATE_DECLINED" => Some(Self::Declined),
1682            _ => None,
1683        }
1684    }
1685}
1686#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1687#[repr(i32)]
1688pub enum ResourceChangeType {
1689    Unspecified = 0,
1690    Created = 1,
1691    Updated = 2,
1692    Archived = 3,
1693}
1694impl ResourceChangeType {
1695    /// String value of the enum field names used in the ProtoBuf definition.
1696    ///
1697    /// The values are not transformed in any way and thus are considered stable
1698    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1699    pub fn as_str_name(&self) -> &'static str {
1700        match self {
1701            Self::Unspecified => "RESOURCE_CHANGE_TYPE_UNSPECIFIED",
1702            Self::Created => "RESOURCE_CHANGE_TYPE_CREATED",
1703            Self::Updated => "RESOURCE_CHANGE_TYPE_UPDATED",
1704            Self::Archived => "RESOURCE_CHANGE_TYPE_ARCHIVED",
1705        }
1706    }
1707    /// Creates an enum from field names used in the ProtoBuf definition.
1708    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1709        match value {
1710            "RESOURCE_CHANGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1711            "RESOURCE_CHANGE_TYPE_CREATED" => Some(Self::Created),
1712            "RESOURCE_CHANGE_TYPE_UPDATED" => Some(Self::Updated),
1713            "RESOURCE_CHANGE_TYPE_ARCHIVED" => Some(Self::Archived),
1714            _ => None,
1715        }
1716    }
1717}
1718#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1719#[repr(i32)]
1720pub enum TimeRangeType {
1721    Unspecified = 0,
1722    Absolute = 1,
1723    Relative = 2,
1724}
1725impl TimeRangeType {
1726    /// String value of the enum field names used in the ProtoBuf definition.
1727    ///
1728    /// The values are not transformed in any way and thus are considered stable
1729    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1730    pub fn as_str_name(&self) -> &'static str {
1731        match self {
1732            Self::Unspecified => "TIME_RANGE_TYPE_UNSPECIFIED",
1733            Self::Absolute => "TIME_RANGE_TYPE_ABSOLUTE",
1734            Self::Relative => "TIME_RANGE_TYPE_RELATIVE",
1735        }
1736    }
1737    /// Creates an enum from field names used in the ProtoBuf definition.
1738    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1739        match value {
1740            "TIME_RANGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1741            "TIME_RANGE_TYPE_ABSOLUTE" => Some(Self::Absolute),
1742            "TIME_RANGE_TYPE_RELATIVE" => Some(Self::Relative),
1743            _ => None,
1744        }
1745    }
1746}
1747#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1748#[repr(i32)]
1749pub enum ComputeOutputType {
1750    Unspecified = 0,
1751    RangeSeries = 1,
1752    NumericSeries = 2,
1753    NumericArraySeries = 3,
1754    EnumSeries = 4,
1755    EnumArraySeries = 5,
1756    LogSeries = 6,
1757    StructSeries = 7,
1758    VideoSeries = 8,
1759    UntypedSeries = 9,
1760    GroupedSeries = 10,
1761    LastPoint = 11,
1762    LastRange = 12,
1763    CartesianPoints = 13,
1764    Cartesian3dPoints = 14,
1765    Multivariate = 15,
1766    NumericHistogram = 16,
1767    FrequencyDomain = 17,
1768    FrequencyDomainV2 = 18,
1769    BucketedFrequencyDomain = 19,
1770    NumericRangeAggregate = 20,
1771    CurveFit = 21,
1772    CurveV2 = 22,
1773}
1774impl ComputeOutputType {
1775    /// String value of the enum field names used in the ProtoBuf definition.
1776    ///
1777    /// The values are not transformed in any way and thus are considered stable
1778    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1779    pub fn as_str_name(&self) -> &'static str {
1780        match self {
1781            Self::Unspecified => "COMPUTE_OUTPUT_TYPE_UNSPECIFIED",
1782            Self::RangeSeries => "COMPUTE_OUTPUT_TYPE_RANGE_SERIES",
1783            Self::NumericSeries => "COMPUTE_OUTPUT_TYPE_NUMERIC_SERIES",
1784            Self::NumericArraySeries => "COMPUTE_OUTPUT_TYPE_NUMERIC_ARRAY_SERIES",
1785            Self::EnumSeries => "COMPUTE_OUTPUT_TYPE_ENUM_SERIES",
1786            Self::EnumArraySeries => "COMPUTE_OUTPUT_TYPE_ENUM_ARRAY_SERIES",
1787            Self::LogSeries => "COMPUTE_OUTPUT_TYPE_LOG_SERIES",
1788            Self::StructSeries => "COMPUTE_OUTPUT_TYPE_STRUCT_SERIES",
1789            Self::VideoSeries => "COMPUTE_OUTPUT_TYPE_VIDEO_SERIES",
1790            Self::UntypedSeries => "COMPUTE_OUTPUT_TYPE_UNTYPED_SERIES",
1791            Self::GroupedSeries => "COMPUTE_OUTPUT_TYPE_GROUPED_SERIES",
1792            Self::LastPoint => "COMPUTE_OUTPUT_TYPE_LAST_POINT",
1793            Self::LastRange => "COMPUTE_OUTPUT_TYPE_LAST_RANGE",
1794            Self::CartesianPoints => "COMPUTE_OUTPUT_TYPE_CARTESIAN_POINTS",
1795            Self::Cartesian3dPoints => "COMPUTE_OUTPUT_TYPE_CARTESIAN_3D_POINTS",
1796            Self::Multivariate => "COMPUTE_OUTPUT_TYPE_MULTIVARIATE",
1797            Self::NumericHistogram => "COMPUTE_OUTPUT_TYPE_NUMERIC_HISTOGRAM",
1798            Self::FrequencyDomain => "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN",
1799            Self::FrequencyDomainV2 => "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN_V2",
1800            Self::BucketedFrequencyDomain => {
1801                "COMPUTE_OUTPUT_TYPE_BUCKETED_FREQUENCY_DOMAIN"
1802            }
1803            Self::NumericRangeAggregate => "COMPUTE_OUTPUT_TYPE_NUMERIC_RANGE_AGGREGATE",
1804            Self::CurveFit => "COMPUTE_OUTPUT_TYPE_CURVE_FIT",
1805            Self::CurveV2 => "COMPUTE_OUTPUT_TYPE_CURVE_V2",
1806        }
1807    }
1808    /// Creates an enum from field names used in the ProtoBuf definition.
1809    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1810        match value {
1811            "COMPUTE_OUTPUT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1812            "COMPUTE_OUTPUT_TYPE_RANGE_SERIES" => Some(Self::RangeSeries),
1813            "COMPUTE_OUTPUT_TYPE_NUMERIC_SERIES" => Some(Self::NumericSeries),
1814            "COMPUTE_OUTPUT_TYPE_NUMERIC_ARRAY_SERIES" => Some(Self::NumericArraySeries),
1815            "COMPUTE_OUTPUT_TYPE_ENUM_SERIES" => Some(Self::EnumSeries),
1816            "COMPUTE_OUTPUT_TYPE_ENUM_ARRAY_SERIES" => Some(Self::EnumArraySeries),
1817            "COMPUTE_OUTPUT_TYPE_LOG_SERIES" => Some(Self::LogSeries),
1818            "COMPUTE_OUTPUT_TYPE_STRUCT_SERIES" => Some(Self::StructSeries),
1819            "COMPUTE_OUTPUT_TYPE_VIDEO_SERIES" => Some(Self::VideoSeries),
1820            "COMPUTE_OUTPUT_TYPE_UNTYPED_SERIES" => Some(Self::UntypedSeries),
1821            "COMPUTE_OUTPUT_TYPE_GROUPED_SERIES" => Some(Self::GroupedSeries),
1822            "COMPUTE_OUTPUT_TYPE_LAST_POINT" => Some(Self::LastPoint),
1823            "COMPUTE_OUTPUT_TYPE_LAST_RANGE" => Some(Self::LastRange),
1824            "COMPUTE_OUTPUT_TYPE_CARTESIAN_POINTS" => Some(Self::CartesianPoints),
1825            "COMPUTE_OUTPUT_TYPE_CARTESIAN_3D_POINTS" => Some(Self::Cartesian3dPoints),
1826            "COMPUTE_OUTPUT_TYPE_MULTIVARIATE" => Some(Self::Multivariate),
1827            "COMPUTE_OUTPUT_TYPE_NUMERIC_HISTOGRAM" => Some(Self::NumericHistogram),
1828            "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN" => Some(Self::FrequencyDomain),
1829            "COMPUTE_OUTPUT_TYPE_FREQUENCY_DOMAIN_V2" => Some(Self::FrequencyDomainV2),
1830            "COMPUTE_OUTPUT_TYPE_BUCKETED_FREQUENCY_DOMAIN" => {
1831                Some(Self::BucketedFrequencyDomain)
1832            }
1833            "COMPUTE_OUTPUT_TYPE_NUMERIC_RANGE_AGGREGATE" => {
1834                Some(Self::NumericRangeAggregate)
1835            }
1836            "COMPUTE_OUTPUT_TYPE_CURVE_FIT" => Some(Self::CurveFit),
1837            "COMPUTE_OUTPUT_TYPE_CURVE_V2" => Some(Self::CurveV2),
1838            _ => None,
1839        }
1840    }
1841}
1842#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1843#[repr(i32)]
1844pub enum CodeExecutionCallOutcome {
1845    Unspecified = 0,
1846    Succeeded = 1,
1847    Failed = 2,
1848    Denied = 3,
1849}
1850impl CodeExecutionCallOutcome {
1851    /// String value of the enum field names used in the ProtoBuf definition.
1852    ///
1853    /// The values are not transformed in any way and thus are considered stable
1854    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1855    pub fn as_str_name(&self) -> &'static str {
1856        match self {
1857            Self::Unspecified => "CODE_EXECUTION_CALL_OUTCOME_UNSPECIFIED",
1858            Self::Succeeded => "CODE_EXECUTION_CALL_OUTCOME_SUCCEEDED",
1859            Self::Failed => "CODE_EXECUTION_CALL_OUTCOME_FAILED",
1860            Self::Denied => "CODE_EXECUTION_CALL_OUTCOME_DENIED",
1861        }
1862    }
1863    /// Creates an enum from field names used in the ProtoBuf definition.
1864    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1865        match value {
1866            "CODE_EXECUTION_CALL_OUTCOME_UNSPECIFIED" => Some(Self::Unspecified),
1867            "CODE_EXECUTION_CALL_OUTCOME_SUCCEEDED" => Some(Self::Succeeded),
1868            "CODE_EXECUTION_CALL_OUTCOME_FAILED" => Some(Self::Failed),
1869            "CODE_EXECUTION_CALL_OUTCOME_DENIED" => Some(Self::Denied),
1870            _ => None,
1871        }
1872    }
1873}
1874/// Generated client implementations.
1875pub mod ai_agent_service_client {
1876    #![allow(
1877        unused_variables,
1878        dead_code,
1879        missing_docs,
1880        clippy::wildcard_imports,
1881        clippy::let_unit_value,
1882    )]
1883    use tonic::codegen::*;
1884    use tonic::codegen::http::Uri;
1885    #[derive(Debug, Clone)]
1886    pub struct AiAgentServiceClient<T> {
1887        inner: tonic::client::Grpc<T>,
1888    }
1889    impl AiAgentServiceClient<tonic::transport::Channel> {
1890        /// Attempt to create a new client by connecting to a given endpoint.
1891        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1892        where
1893            D: TryInto<tonic::transport::Endpoint>,
1894            D::Error: Into<StdError>,
1895        {
1896            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1897            Ok(Self::new(conn))
1898        }
1899    }
1900    impl<T> AiAgentServiceClient<T>
1901    where
1902        T: tonic::client::GrpcService<tonic::body::Body>,
1903        T::Error: Into<StdError>,
1904        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1905        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1906    {
1907        pub fn new(inner: T) -> Self {
1908            let inner = tonic::client::Grpc::new(inner);
1909            Self { inner }
1910        }
1911        pub fn with_origin(inner: T, origin: Uri) -> Self {
1912            let inner = tonic::client::Grpc::with_origin(inner, origin);
1913            Self { inner }
1914        }
1915        pub fn with_interceptor<F>(
1916            inner: T,
1917            interceptor: F,
1918        ) -> AiAgentServiceClient<InterceptedService<T, F>>
1919        where
1920            F: tonic::service::Interceptor,
1921            T::ResponseBody: Default,
1922            T: tonic::codegen::Service<
1923                http::Request<tonic::body::Body>,
1924                Response = http::Response<
1925                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1926                >,
1927            >,
1928            <T as tonic::codegen::Service<
1929                http::Request<tonic::body::Body>,
1930            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1931        {
1932            AiAgentServiceClient::new(InterceptedService::new(inner, interceptor))
1933        }
1934        /// Compress requests with the given encoding.
1935        ///
1936        /// This requires the server to support it otherwise it might respond with an
1937        /// error.
1938        #[must_use]
1939        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1940            self.inner = self.inner.send_compressed(encoding);
1941            self
1942        }
1943        /// Enable decompressing responses.
1944        #[must_use]
1945        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1946            self.inner = self.inner.accept_compressed(encoding);
1947            self
1948        }
1949        /// Limits the maximum size of a decoded message.
1950        ///
1951        /// Default: `4MB`
1952        #[must_use]
1953        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1954            self.inner = self.inner.max_decoding_message_size(limit);
1955            self
1956        }
1957        /// Limits the maximum size of an encoded message.
1958        ///
1959        /// Default: `usize::MAX`
1960        #[must_use]
1961        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1962            self.inner = self.inner.max_encoding_message_size(limit);
1963            self
1964        }
1965        pub async fn list_models(
1966            &mut self,
1967            request: impl tonic::IntoRequest<super::ListModelsRequest>,
1968        ) -> std::result::Result<
1969            tonic::Response<super::ListModelsResponse>,
1970            tonic::Status,
1971        > {
1972            self.inner
1973                .ready()
1974                .await
1975                .map_err(|e| {
1976                    tonic::Status::unknown(
1977                        format!("Service was not ready: {}", e.into()),
1978                    )
1979                })?;
1980            let codec = tonic::codec::ProstCodec::default();
1981            let path = http::uri::PathAndQuery::from_static(
1982                "/nominal.ai.v1.AIAgentService/ListModels",
1983            );
1984            let mut req = request.into_request();
1985            req.extensions_mut()
1986                .insert(GrpcMethod::new("nominal.ai.v1.AIAgentService", "ListModels"));
1987            self.inner.unary(req, path, codec).await
1988        }
1989        pub async fn stream_chat(
1990            &mut self,
1991            request: impl tonic::IntoRequest<super::StreamChatRequest>,
1992        ) -> std::result::Result<
1993            tonic::Response<tonic::codec::Streaming<super::StreamChatResponse>>,
1994            tonic::Status,
1995        > {
1996            self.inner
1997                .ready()
1998                .await
1999                .map_err(|e| {
2000                    tonic::Status::unknown(
2001                        format!("Service was not ready: {}", e.into()),
2002                    )
2003                })?;
2004            let codec = tonic::codec::ProstCodec::default();
2005            let path = http::uri::PathAndQuery::from_static(
2006                "/nominal.ai.v1.AIAgentService/StreamChat",
2007            );
2008            let mut req = request.into_request();
2009            req.extensions_mut()
2010                .insert(GrpcMethod::new("nominal.ai.v1.AIAgentService", "StreamChat"));
2011            self.inner.server_streaming(req, path, codec).await
2012        }
2013        #[deprecated]
2014        pub async fn get_conversation(
2015            &mut self,
2016            request: impl tonic::IntoRequest<super::GetConversationRequest>,
2017        ) -> std::result::Result<
2018            tonic::Response<super::GetConversationResponse>,
2019            tonic::Status,
2020        > {
2021            self.inner
2022                .ready()
2023                .await
2024                .map_err(|e| {
2025                    tonic::Status::unknown(
2026                        format!("Service was not ready: {}", e.into()),
2027                    )
2028                })?;
2029            let codec = tonic::codec::ProstCodec::default();
2030            let path = http::uri::PathAndQuery::from_static(
2031                "/nominal.ai.v1.AIAgentService/GetConversation",
2032            );
2033            let mut req = request.into_request();
2034            req.extensions_mut()
2035                .insert(
2036                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "GetConversation"),
2037                );
2038            self.inner.unary(req, path, codec).await
2039        }
2040        pub async fn get_conversation_metadata(
2041            &mut self,
2042            request: impl tonic::IntoRequest<super::GetConversationMetadataRequest>,
2043        ) -> std::result::Result<
2044            tonic::Response<super::GetConversationMetadataResponse>,
2045            tonic::Status,
2046        > {
2047            self.inner
2048                .ready()
2049                .await
2050                .map_err(|e| {
2051                    tonic::Status::unknown(
2052                        format!("Service was not ready: {}", e.into()),
2053                    )
2054                })?;
2055            let codec = tonic::codec::ProstCodec::default();
2056            let path = http::uri::PathAndQuery::from_static(
2057                "/nominal.ai.v1.AIAgentService/GetConversationMetadata",
2058            );
2059            let mut req = request.into_request();
2060            req.extensions_mut()
2061                .insert(
2062                    GrpcMethod::new(
2063                        "nominal.ai.v1.AIAgentService",
2064                        "GetConversationMetadata",
2065                    ),
2066                );
2067            self.inner.unary(req, path, codec).await
2068        }
2069        pub async fn get_conversation_messages(
2070            &mut self,
2071            request: impl tonic::IntoRequest<super::GetConversationMessagesRequest>,
2072        ) -> std::result::Result<
2073            tonic::Response<super::GetConversationMessagesResponse>,
2074            tonic::Status,
2075        > {
2076            self.inner
2077                .ready()
2078                .await
2079                .map_err(|e| {
2080                    tonic::Status::unknown(
2081                        format!("Service was not ready: {}", e.into()),
2082                    )
2083                })?;
2084            let codec = tonic::codec::ProstCodec::default();
2085            let path = http::uri::PathAndQuery::from_static(
2086                "/nominal.ai.v1.AIAgentService/GetConversationMessages",
2087            );
2088            let mut req = request.into_request();
2089            req.extensions_mut()
2090                .insert(
2091                    GrpcMethod::new(
2092                        "nominal.ai.v1.AIAgentService",
2093                        "GetConversationMessages",
2094                    ),
2095                );
2096            self.inner.unary(req, path, codec).await
2097        }
2098        pub async fn list_conversations(
2099            &mut self,
2100            request: impl tonic::IntoRequest<super::ListConversationsRequest>,
2101        ) -> std::result::Result<
2102            tonic::Response<super::ListConversationsResponse>,
2103            tonic::Status,
2104        > {
2105            self.inner
2106                .ready()
2107                .await
2108                .map_err(|e| {
2109                    tonic::Status::unknown(
2110                        format!("Service was not ready: {}", e.into()),
2111                    )
2112                })?;
2113            let codec = tonic::codec::ProstCodec::default();
2114            let path = http::uri::PathAndQuery::from_static(
2115                "/nominal.ai.v1.AIAgentService/ListConversations",
2116            );
2117            let mut req = request.into_request();
2118            req.extensions_mut()
2119                .insert(
2120                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "ListConversations"),
2121                );
2122            self.inner.unary(req, path, codec).await
2123        }
2124        pub async fn batch_get_conversation_active_runs(
2125            &mut self,
2126            request: impl tonic::IntoRequest<
2127                super::BatchGetConversationActiveRunsRequest,
2128            >,
2129        ) -> std::result::Result<
2130            tonic::Response<super::BatchGetConversationActiveRunsResponse>,
2131            tonic::Status,
2132        > {
2133            self.inner
2134                .ready()
2135                .await
2136                .map_err(|e| {
2137                    tonic::Status::unknown(
2138                        format!("Service was not ready: {}", e.into()),
2139                    )
2140                })?;
2141            let codec = tonic::codec::ProstCodec::default();
2142            let path = http::uri::PathAndQuery::from_static(
2143                "/nominal.ai.v1.AIAgentService/BatchGetConversationActiveRuns",
2144            );
2145            let mut req = request.into_request();
2146            req.extensions_mut()
2147                .insert(
2148                    GrpcMethod::new(
2149                        "nominal.ai.v1.AIAgentService",
2150                        "BatchGetConversationActiveRuns",
2151                    ),
2152                );
2153            self.inner.unary(req, path, codec).await
2154        }
2155        pub async fn batch_get_conversation_sandboxes(
2156            &mut self,
2157            request: impl tonic::IntoRequest<super::BatchGetConversationSandboxesRequest>,
2158        ) -> std::result::Result<
2159            tonic::Response<super::BatchGetConversationSandboxesResponse>,
2160            tonic::Status,
2161        > {
2162            self.inner
2163                .ready()
2164                .await
2165                .map_err(|e| {
2166                    tonic::Status::unknown(
2167                        format!("Service was not ready: {}", e.into()),
2168                    )
2169                })?;
2170            let codec = tonic::codec::ProstCodec::default();
2171            let path = http::uri::PathAndQuery::from_static(
2172                "/nominal.ai.v1.AIAgentService/BatchGetConversationSandboxes",
2173            );
2174            let mut req = request.into_request();
2175            req.extensions_mut()
2176                .insert(
2177                    GrpcMethod::new(
2178                        "nominal.ai.v1.AIAgentService",
2179                        "BatchGetConversationSandboxes",
2180                    ),
2181                );
2182            self.inner.unary(req, path, codec).await
2183        }
2184        pub async fn resume_conversation_sandbox(
2185            &mut self,
2186            request: impl tonic::IntoRequest<super::ResumeConversationSandboxRequest>,
2187        ) -> std::result::Result<
2188            tonic::Response<super::ResumeConversationSandboxResponse>,
2189            tonic::Status,
2190        > {
2191            self.inner
2192                .ready()
2193                .await
2194                .map_err(|e| {
2195                    tonic::Status::unknown(
2196                        format!("Service was not ready: {}", e.into()),
2197                    )
2198                })?;
2199            let codec = tonic::codec::ProstCodec::default();
2200            let path = http::uri::PathAndQuery::from_static(
2201                "/nominal.ai.v1.AIAgentService/ResumeConversationSandbox",
2202            );
2203            let mut req = request.into_request();
2204            req.extensions_mut()
2205                .insert(
2206                    GrpcMethod::new(
2207                        "nominal.ai.v1.AIAgentService",
2208                        "ResumeConversationSandbox",
2209                    ),
2210                );
2211            self.inner.unary(req, path, codec).await
2212        }
2213        pub async fn create_conversation(
2214            &mut self,
2215            request: impl tonic::IntoRequest<super::CreateConversationRequest>,
2216        ) -> std::result::Result<
2217            tonic::Response<super::CreateConversationResponse>,
2218            tonic::Status,
2219        > {
2220            self.inner
2221                .ready()
2222                .await
2223                .map_err(|e| {
2224                    tonic::Status::unknown(
2225                        format!("Service was not ready: {}", e.into()),
2226                    )
2227                })?;
2228            let codec = tonic::codec::ProstCodec::default();
2229            let path = http::uri::PathAndQuery::from_static(
2230                "/nominal.ai.v1.AIAgentService/CreateConversation",
2231            );
2232            let mut req = request.into_request();
2233            req.extensions_mut()
2234                .insert(
2235                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "CreateConversation"),
2236                );
2237            self.inner.unary(req, path, codec).await
2238        }
2239        pub async fn update_conversation_metadata(
2240            &mut self,
2241            request: impl tonic::IntoRequest<super::UpdateConversationMetadataRequest>,
2242        ) -> std::result::Result<
2243            tonic::Response<super::UpdateConversationMetadataResponse>,
2244            tonic::Status,
2245        > {
2246            self.inner
2247                .ready()
2248                .await
2249                .map_err(|e| {
2250                    tonic::Status::unknown(
2251                        format!("Service was not ready: {}", e.into()),
2252                    )
2253                })?;
2254            let codec = tonic::codec::ProstCodec::default();
2255            let path = http::uri::PathAndQuery::from_static(
2256                "/nominal.ai.v1.AIAgentService/UpdateConversationMetadata",
2257            );
2258            let mut req = request.into_request();
2259            req.extensions_mut()
2260                .insert(
2261                    GrpcMethod::new(
2262                        "nominal.ai.v1.AIAgentService",
2263                        "UpdateConversationMetadata",
2264                    ),
2265                );
2266            self.inner.unary(req, path, codec).await
2267        }
2268        pub async fn delete_conversation(
2269            &mut self,
2270            request: impl tonic::IntoRequest<super::DeleteConversationRequest>,
2271        ) -> std::result::Result<
2272            tonic::Response<super::DeleteConversationResponse>,
2273            tonic::Status,
2274        > {
2275            self.inner
2276                .ready()
2277                .await
2278                .map_err(|e| {
2279                    tonic::Status::unknown(
2280                        format!("Service was not ready: {}", e.into()),
2281                    )
2282                })?;
2283            let codec = tonic::codec::ProstCodec::default();
2284            let path = http::uri::PathAndQuery::from_static(
2285                "/nominal.ai.v1.AIAgentService/DeleteConversation",
2286            );
2287            let mut req = request.into_request();
2288            req.extensions_mut()
2289                .insert(
2290                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "DeleteConversation"),
2291                );
2292            self.inner.unary(req, path, codec).await
2293        }
2294        pub async fn archive_conversation(
2295            &mut self,
2296            request: impl tonic::IntoRequest<super::ArchiveConversationRequest>,
2297        ) -> std::result::Result<
2298            tonic::Response<super::ArchiveConversationResponse>,
2299            tonic::Status,
2300        > {
2301            self.inner
2302                .ready()
2303                .await
2304                .map_err(|e| {
2305                    tonic::Status::unknown(
2306                        format!("Service was not ready: {}", e.into()),
2307                    )
2308                })?;
2309            let codec = tonic::codec::ProstCodec::default();
2310            let path = http::uri::PathAndQuery::from_static(
2311                "/nominal.ai.v1.AIAgentService/ArchiveConversation",
2312            );
2313            let mut req = request.into_request();
2314            req.extensions_mut()
2315                .insert(
2316                    GrpcMethod::new(
2317                        "nominal.ai.v1.AIAgentService",
2318                        "ArchiveConversation",
2319                    ),
2320                );
2321            self.inner.unary(req, path, codec).await
2322        }
2323        pub async fn unarchive_conversation(
2324            &mut self,
2325            request: impl tonic::IntoRequest<super::UnarchiveConversationRequest>,
2326        ) -> std::result::Result<
2327            tonic::Response<super::UnarchiveConversationResponse>,
2328            tonic::Status,
2329        > {
2330            self.inner
2331                .ready()
2332                .await
2333                .map_err(|e| {
2334                    tonic::Status::unknown(
2335                        format!("Service was not ready: {}", e.into()),
2336                    )
2337                })?;
2338            let codec = tonic::codec::ProstCodec::default();
2339            let path = http::uri::PathAndQuery::from_static(
2340                "/nominal.ai.v1.AIAgentService/UnarchiveConversation",
2341            );
2342            let mut req = request.into_request();
2343            req.extensions_mut()
2344                .insert(
2345                    GrpcMethod::new(
2346                        "nominal.ai.v1.AIAgentService",
2347                        "UnarchiveConversation",
2348                    ),
2349                );
2350            self.inner.unary(req, path, codec).await
2351        }
2352        pub async fn get_snapshot_rid_by_user_message_id(
2353            &mut self,
2354            request: impl tonic::IntoRequest<super::GetSnapshotRidByUserMessageIdRequest>,
2355        ) -> std::result::Result<
2356            tonic::Response<super::GetSnapshotRidByUserMessageIdResponse>,
2357            tonic::Status,
2358        > {
2359            self.inner
2360                .ready()
2361                .await
2362                .map_err(|e| {
2363                    tonic::Status::unknown(
2364                        format!("Service was not ready: {}", e.into()),
2365                    )
2366                })?;
2367            let codec = tonic::codec::ProstCodec::default();
2368            let path = http::uri::PathAndQuery::from_static(
2369                "/nominal.ai.v1.AIAgentService/GetSnapshotRidByUserMessageId",
2370            );
2371            let mut req = request.into_request();
2372            req.extensions_mut()
2373                .insert(
2374                    GrpcMethod::new(
2375                        "nominal.ai.v1.AIAgentService",
2376                        "GetSnapshotRidByUserMessageId",
2377                    ),
2378                );
2379            self.inner.unary(req, path, codec).await
2380        }
2381        pub async fn compact_conversation(
2382            &mut self,
2383            request: impl tonic::IntoRequest<super::CompactConversationRequest>,
2384        ) -> std::result::Result<
2385            tonic::Response<super::CompactConversationResponse>,
2386            tonic::Status,
2387        > {
2388            self.inner
2389                .ready()
2390                .await
2391                .map_err(|e| {
2392                    tonic::Status::unknown(
2393                        format!("Service was not ready: {}", e.into()),
2394                    )
2395                })?;
2396            let codec = tonic::codec::ProstCodec::default();
2397            let path = http::uri::PathAndQuery::from_static(
2398                "/nominal.ai.v1.AIAgentService/CompactConversation",
2399            );
2400            let mut req = request.into_request();
2401            req.extensions_mut()
2402                .insert(
2403                    GrpcMethod::new(
2404                        "nominal.ai.v1.AIAgentService",
2405                        "CompactConversation",
2406                    ),
2407                );
2408            self.inner.unary(req, path, codec).await
2409        }
2410        pub async fn submit_message_feedback(
2411            &mut self,
2412            request: impl tonic::IntoRequest<super::SubmitMessageFeedbackRequest>,
2413        ) -> std::result::Result<
2414            tonic::Response<super::SubmitMessageFeedbackResponse>,
2415            tonic::Status,
2416        > {
2417            self.inner
2418                .ready()
2419                .await
2420                .map_err(|e| {
2421                    tonic::Status::unknown(
2422                        format!("Service was not ready: {}", e.into()),
2423                    )
2424                })?;
2425            let codec = tonic::codec::ProstCodec::default();
2426            let path = http::uri::PathAndQuery::from_static(
2427                "/nominal.ai.v1.AIAgentService/SubmitMessageFeedback",
2428            );
2429            let mut req = request.into_request();
2430            req.extensions_mut()
2431                .insert(
2432                    GrpcMethod::new(
2433                        "nominal.ai.v1.AIAgentService",
2434                        "SubmitMessageFeedback",
2435                    ),
2436                );
2437            self.inner.unary(req, path, codec).await
2438        }
2439        pub async fn update_conversation_resources(
2440            &mut self,
2441            request: impl tonic::IntoRequest<super::UpdateConversationResourcesRequest>,
2442        ) -> std::result::Result<
2443            tonic::Response<super::UpdateConversationResourcesResponse>,
2444            tonic::Status,
2445        > {
2446            self.inner
2447                .ready()
2448                .await
2449                .map_err(|e| {
2450                    tonic::Status::unknown(
2451                        format!("Service was not ready: {}", e.into()),
2452                    )
2453                })?;
2454            let codec = tonic::codec::ProstCodec::default();
2455            let path = http::uri::PathAndQuery::from_static(
2456                "/nominal.ai.v1.AIAgentService/UpdateConversationResources",
2457            );
2458            let mut req = request.into_request();
2459            req.extensions_mut()
2460                .insert(
2461                    GrpcMethod::new(
2462                        "nominal.ai.v1.AIAgentService",
2463                        "UpdateConversationResources",
2464                    ),
2465                );
2466            self.inner.unary(req, path, codec).await
2467        }
2468        pub async fn cancel_agent_run(
2469            &mut self,
2470            request: impl tonic::IntoRequest<super::CancelAgentRunRequest>,
2471        ) -> std::result::Result<
2472            tonic::Response<super::CancelAgentRunResponse>,
2473            tonic::Status,
2474        > {
2475            self.inner
2476                .ready()
2477                .await
2478                .map_err(|e| {
2479                    tonic::Status::unknown(
2480                        format!("Service was not ready: {}", e.into()),
2481                    )
2482                })?;
2483            let codec = tonic::codec::ProstCodec::default();
2484            let path = http::uri::PathAndQuery::from_static(
2485                "/nominal.ai.v1.AIAgentService/CancelAgentRun",
2486            );
2487            let mut req = request.into_request();
2488            req.extensions_mut()
2489                .insert(
2490                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "CancelAgentRun"),
2491                );
2492            self.inner.unary(req, path, codec).await
2493        }
2494        pub async fn steer_agent_run(
2495            &mut self,
2496            request: impl tonic::IntoRequest<super::SteerAgentRunRequest>,
2497        ) -> std::result::Result<
2498            tonic::Response<super::SteerAgentRunResponse>,
2499            tonic::Status,
2500        > {
2501            self.inner
2502                .ready()
2503                .await
2504                .map_err(|e| {
2505                    tonic::Status::unknown(
2506                        format!("Service was not ready: {}", e.into()),
2507                    )
2508                })?;
2509            let codec = tonic::codec::ProstCodec::default();
2510            let path = http::uri::PathAndQuery::from_static(
2511                "/nominal.ai.v1.AIAgentService/SteerAgentRun",
2512            );
2513            let mut req = request.into_request();
2514            req.extensions_mut()
2515                .insert(
2516                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "SteerAgentRun"),
2517                );
2518            self.inner.unary(req, path, codec).await
2519        }
2520        pub async fn batch_get_citations(
2521            &mut self,
2522            request: impl tonic::IntoRequest<super::BatchGetCitationsRequest>,
2523        ) -> std::result::Result<
2524            tonic::Response<super::BatchGetCitationsResponse>,
2525            tonic::Status,
2526        > {
2527            self.inner
2528                .ready()
2529                .await
2530                .map_err(|e| {
2531                    tonic::Status::unknown(
2532                        format!("Service was not ready: {}", e.into()),
2533                    )
2534                })?;
2535            let codec = tonic::codec::ProstCodec::default();
2536            let path = http::uri::PathAndQuery::from_static(
2537                "/nominal.ai.v1.AIAgentService/BatchGetCitations",
2538            );
2539            let mut req = request.into_request();
2540            req.extensions_mut()
2541                .insert(
2542                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "BatchGetCitations"),
2543                );
2544            self.inner.unary(req, path, codec).await
2545        }
2546        pub async fn answer_should_know_offer(
2547            &mut self,
2548            request: impl tonic::IntoRequest<super::AnswerShouldKnowOfferRequest>,
2549        ) -> std::result::Result<
2550            tonic::Response<super::AnswerShouldKnowOfferResponse>,
2551            tonic::Status,
2552        > {
2553            self.inner
2554                .ready()
2555                .await
2556                .map_err(|e| {
2557                    tonic::Status::unknown(
2558                        format!("Service was not ready: {}", e.into()),
2559                    )
2560                })?;
2561            let codec = tonic::codec::ProstCodec::default();
2562            let path = http::uri::PathAndQuery::from_static(
2563                "/nominal.ai.v1.AIAgentService/AnswerShouldKnowOffer",
2564            );
2565            let mut req = request.into_request();
2566            req.extensions_mut()
2567                .insert(
2568                    GrpcMethod::new(
2569                        "nominal.ai.v1.AIAgentService",
2570                        "AnswerShouldKnowOffer",
2571                    ),
2572                );
2573            self.inner.unary(req, path, codec).await
2574        }
2575        pub async fn create_experiment_event(
2576            &mut self,
2577            request: impl tonic::IntoRequest<super::CreateExperimentEventRequest>,
2578        ) -> std::result::Result<
2579            tonic::Response<super::CreateExperimentEventResponse>,
2580            tonic::Status,
2581        > {
2582            self.inner
2583                .ready()
2584                .await
2585                .map_err(|e| {
2586                    tonic::Status::unknown(
2587                        format!("Service was not ready: {}", e.into()),
2588                    )
2589                })?;
2590            let codec = tonic::codec::ProstCodec::default();
2591            let path = http::uri::PathAndQuery::from_static(
2592                "/nominal.ai.v1.AIAgentService/CreateExperimentEvent",
2593            );
2594            let mut req = request.into_request();
2595            req.extensions_mut()
2596                .insert(
2597                    GrpcMethod::new(
2598                        "nominal.ai.v1.AIAgentService",
2599                        "CreateExperimentEvent",
2600                    ),
2601                );
2602            self.inner.unary(req, path, codec).await
2603        }
2604    }
2605}
2606#[derive(Clone, PartialEq, ::prost::Message)]
2607pub struct ClassifyErrorRequest {
2608    #[prost(string, tag = "1")]
2609    pub error_message: ::prost::alloc::string::String,
2610}
2611#[derive(Clone, PartialEq, ::prost::Message)]
2612pub struct ClassifyErrorResponse {
2613    #[prost(enumeration = "ErrorClassification", tag = "1")]
2614    pub classification: i32,
2615    #[prost(string, tag = "2")]
2616    pub reason: ::prost::alloc::string::String,
2617}
2618#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2619#[repr(i32)]
2620pub enum ErrorClassification {
2621    Unspecified = 0,
2622    Client = 1,
2623    Server = 2,
2624}
2625impl ErrorClassification {
2626    /// String value of the enum field names used in the ProtoBuf definition.
2627    ///
2628    /// The values are not transformed in any way and thus are considered stable
2629    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2630    pub fn as_str_name(&self) -> &'static str {
2631        match self {
2632            Self::Unspecified => "ERROR_CLASSIFICATION_UNSPECIFIED",
2633            Self::Client => "ERROR_CLASSIFICATION_CLIENT",
2634            Self::Server => "ERROR_CLASSIFICATION_SERVER",
2635        }
2636    }
2637    /// Creates an enum from field names used in the ProtoBuf definition.
2638    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2639        match value {
2640            "ERROR_CLASSIFICATION_UNSPECIFIED" => Some(Self::Unspecified),
2641            "ERROR_CLASSIFICATION_CLIENT" => Some(Self::Client),
2642            "ERROR_CLASSIFICATION_SERVER" => Some(Self::Server),
2643            _ => None,
2644        }
2645    }
2646}
2647/// Generated client implementations.
2648pub mod data_ingestion_error_classifier_service_client {
2649    #![allow(
2650        unused_variables,
2651        dead_code,
2652        missing_docs,
2653        clippy::wildcard_imports,
2654        clippy::let_unit_value,
2655    )]
2656    use tonic::codegen::*;
2657    use tonic::codegen::http::Uri;
2658    #[derive(Debug, Clone)]
2659    pub struct DataIngestionErrorClassifierServiceClient<T> {
2660        inner: tonic::client::Grpc<T>,
2661    }
2662    impl DataIngestionErrorClassifierServiceClient<tonic::transport::Channel> {
2663        /// Attempt to create a new client by connecting to a given endpoint.
2664        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2665        where
2666            D: TryInto<tonic::transport::Endpoint>,
2667            D::Error: Into<StdError>,
2668        {
2669            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2670            Ok(Self::new(conn))
2671        }
2672    }
2673    impl<T> DataIngestionErrorClassifierServiceClient<T>
2674    where
2675        T: tonic::client::GrpcService<tonic::body::Body>,
2676        T::Error: Into<StdError>,
2677        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2678        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2679    {
2680        pub fn new(inner: T) -> Self {
2681            let inner = tonic::client::Grpc::new(inner);
2682            Self { inner }
2683        }
2684        pub fn with_origin(inner: T, origin: Uri) -> Self {
2685            let inner = tonic::client::Grpc::with_origin(inner, origin);
2686            Self { inner }
2687        }
2688        pub fn with_interceptor<F>(
2689            inner: T,
2690            interceptor: F,
2691        ) -> DataIngestionErrorClassifierServiceClient<InterceptedService<T, F>>
2692        where
2693            F: tonic::service::Interceptor,
2694            T::ResponseBody: Default,
2695            T: tonic::codegen::Service<
2696                http::Request<tonic::body::Body>,
2697                Response = http::Response<
2698                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2699                >,
2700            >,
2701            <T as tonic::codegen::Service<
2702                http::Request<tonic::body::Body>,
2703            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2704        {
2705            DataIngestionErrorClassifierServiceClient::new(
2706                InterceptedService::new(inner, interceptor),
2707            )
2708        }
2709        /// Compress requests with the given encoding.
2710        ///
2711        /// This requires the server to support it otherwise it might respond with an
2712        /// error.
2713        #[must_use]
2714        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2715            self.inner = self.inner.send_compressed(encoding);
2716            self
2717        }
2718        /// Enable decompressing responses.
2719        #[must_use]
2720        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2721            self.inner = self.inner.accept_compressed(encoding);
2722            self
2723        }
2724        /// Limits the maximum size of a decoded message.
2725        ///
2726        /// Default: `4MB`
2727        #[must_use]
2728        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2729            self.inner = self.inner.max_decoding_message_size(limit);
2730            self
2731        }
2732        /// Limits the maximum size of an encoded message.
2733        ///
2734        /// Default: `usize::MAX`
2735        #[must_use]
2736        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2737            self.inner = self.inner.max_encoding_message_size(limit);
2738            self
2739        }
2740        pub async fn classify_error(
2741            &mut self,
2742            request: impl tonic::IntoRequest<super::ClassifyErrorRequest>,
2743        ) -> std::result::Result<
2744            tonic::Response<super::ClassifyErrorResponse>,
2745            tonic::Status,
2746        > {
2747            self.inner
2748                .ready()
2749                .await
2750                .map_err(|e| {
2751                    tonic::Status::unknown(
2752                        format!("Service was not ready: {}", e.into()),
2753                    )
2754                })?;
2755            let codec = tonic::codec::ProstCodec::default();
2756            let path = http::uri::PathAndQuery::from_static(
2757                "/nominal.ai.v1.DataIngestionErrorClassifierService/ClassifyError",
2758            );
2759            let mut req = request.into_request();
2760            req.extensions_mut()
2761                .insert(
2762                    GrpcMethod::new(
2763                        "nominal.ai.v1.DataIngestionErrorClassifierService",
2764                        "ClassifyError",
2765                    ),
2766                );
2767            self.inner.unary(req, path, codec).await
2768        }
2769    }
2770}
2771#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2772pub struct GetProviderStatusRequest {}
2773#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2774pub struct GetProviderStatusResponse {
2775    #[prost(message, optional, tag = "1")]
2776    pub timestamp: ::core::option::Option<
2777        super::super::super::google::protobuf::Timestamp,
2778    >,
2779    #[prost(message, optional, tag = "2")]
2780    pub last_status: ::core::option::Option<ProviderStatus>,
2781    #[deprecated]
2782    #[prost(message, optional, tag = "3")]
2783    pub aggregated_status_over_last_30m: ::core::option::Option<ProviderStatus>,
2784    #[prost(message, optional, tag = "4")]
2785    pub aggregated_status: ::core::option::Option<ProviderStatus>,
2786}
2787#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2788pub struct ProviderStatus {
2789    #[prost(oneof = "provider_status::Status", tags = "1, 2")]
2790    pub status: ::core::option::Option<provider_status::Status>,
2791}
2792/// Nested message and enum types in `ProviderStatus`.
2793pub mod provider_status {
2794    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
2795    pub enum Status {
2796        #[prost(message, tag = "1")]
2797        Healthy(super::Healthy),
2798        #[prost(message, tag = "2")]
2799        Degraded(super::Degraded),
2800    }
2801}
2802#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2803pub struct Healthy {}
2804#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2805pub struct Degraded {
2806    #[prost(enumeration = "DegradationReason", tag = "1")]
2807    pub reason: i32,
2808}
2809#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2810pub struct ProviderMetrics {
2811    #[prost(int32, tag = "1")]
2812    pub time_to_first_token_ms: i32,
2813    #[prost(int32, tag = "2")]
2814    pub total_time_ms: i32,
2815}
2816#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2817#[repr(i32)]
2818pub enum DegradationReason {
2819    Unspecified = 0,
2820    HighLatency = 1,
2821    Failures = 2,
2822    HighLatencyAndFailures = 3,
2823    Unavailable = 4,
2824}
2825impl DegradationReason {
2826    /// String value of the enum field names used in the ProtoBuf definition.
2827    ///
2828    /// The values are not transformed in any way and thus are considered stable
2829    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2830    pub fn as_str_name(&self) -> &'static str {
2831        match self {
2832            Self::Unspecified => "DEGRADATION_REASON_UNSPECIFIED",
2833            Self::HighLatency => "DEGRADATION_REASON_HIGH_LATENCY",
2834            Self::Failures => "DEGRADATION_REASON_FAILURES",
2835            Self::HighLatencyAndFailures => {
2836                "DEGRADATION_REASON_HIGH_LATENCY_AND_FAILURES"
2837            }
2838            Self::Unavailable => "DEGRADATION_REASON_UNAVAILABLE",
2839        }
2840    }
2841    /// Creates an enum from field names used in the ProtoBuf definition.
2842    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2843        match value {
2844            "DEGRADATION_REASON_UNSPECIFIED" => Some(Self::Unspecified),
2845            "DEGRADATION_REASON_HIGH_LATENCY" => Some(Self::HighLatency),
2846            "DEGRADATION_REASON_FAILURES" => Some(Self::Failures),
2847            "DEGRADATION_REASON_HIGH_LATENCY_AND_FAILURES" => {
2848                Some(Self::HighLatencyAndFailures)
2849            }
2850            "DEGRADATION_REASON_UNAVAILABLE" => Some(Self::Unavailable),
2851            _ => None,
2852        }
2853    }
2854}
2855/// Generated client implementations.
2856pub mod model_provider_health_service_client {
2857    #![allow(
2858        unused_variables,
2859        dead_code,
2860        missing_docs,
2861        clippy::wildcard_imports,
2862        clippy::let_unit_value,
2863    )]
2864    use tonic::codegen::*;
2865    use tonic::codegen::http::Uri;
2866    #[derive(Debug, Clone)]
2867    pub struct ModelProviderHealthServiceClient<T> {
2868        inner: tonic::client::Grpc<T>,
2869    }
2870    impl ModelProviderHealthServiceClient<tonic::transport::Channel> {
2871        /// Attempt to create a new client by connecting to a given endpoint.
2872        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2873        where
2874            D: TryInto<tonic::transport::Endpoint>,
2875            D::Error: Into<StdError>,
2876        {
2877            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2878            Ok(Self::new(conn))
2879        }
2880    }
2881    impl<T> ModelProviderHealthServiceClient<T>
2882    where
2883        T: tonic::client::GrpcService<tonic::body::Body>,
2884        T::Error: Into<StdError>,
2885        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2886        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2887    {
2888        pub fn new(inner: T) -> Self {
2889            let inner = tonic::client::Grpc::new(inner);
2890            Self { inner }
2891        }
2892        pub fn with_origin(inner: T, origin: Uri) -> Self {
2893            let inner = tonic::client::Grpc::with_origin(inner, origin);
2894            Self { inner }
2895        }
2896        pub fn with_interceptor<F>(
2897            inner: T,
2898            interceptor: F,
2899        ) -> ModelProviderHealthServiceClient<InterceptedService<T, F>>
2900        where
2901            F: tonic::service::Interceptor,
2902            T::ResponseBody: Default,
2903            T: tonic::codegen::Service<
2904                http::Request<tonic::body::Body>,
2905                Response = http::Response<
2906                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2907                >,
2908            >,
2909            <T as tonic::codegen::Service<
2910                http::Request<tonic::body::Body>,
2911            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2912        {
2913            ModelProviderHealthServiceClient::new(
2914                InterceptedService::new(inner, interceptor),
2915            )
2916        }
2917        /// Compress requests with the given encoding.
2918        ///
2919        /// This requires the server to support it otherwise it might respond with an
2920        /// error.
2921        #[must_use]
2922        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2923            self.inner = self.inner.send_compressed(encoding);
2924            self
2925        }
2926        /// Enable decompressing responses.
2927        #[must_use]
2928        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2929            self.inner = self.inner.accept_compressed(encoding);
2930            self
2931        }
2932        /// Limits the maximum size of a decoded message.
2933        ///
2934        /// Default: `4MB`
2935        #[must_use]
2936        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2937            self.inner = self.inner.max_decoding_message_size(limit);
2938            self
2939        }
2940        /// Limits the maximum size of an encoded message.
2941        ///
2942        /// Default: `usize::MAX`
2943        #[must_use]
2944        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2945            self.inner = self.inner.max_encoding_message_size(limit);
2946            self
2947        }
2948        pub async fn get_provider_status(
2949            &mut self,
2950            request: impl tonic::IntoRequest<super::GetProviderStatusRequest>,
2951        ) -> std::result::Result<
2952            tonic::Response<super::GetProviderStatusResponse>,
2953            tonic::Status,
2954        > {
2955            self.inner
2956                .ready()
2957                .await
2958                .map_err(|e| {
2959                    tonic::Status::unknown(
2960                        format!("Service was not ready: {}", e.into()),
2961                    )
2962                })?;
2963            let codec = tonic::codec::ProstCodec::default();
2964            let path = http::uri::PathAndQuery::from_static(
2965                "/nominal.ai.v1.ModelProviderHealthService/GetProviderStatus",
2966            );
2967            let mut req = request.into_request();
2968            req.extensions_mut()
2969                .insert(
2970                    GrpcMethod::new(
2971                        "nominal.ai.v1.ModelProviderHealthService",
2972                        "GetProviderStatus",
2973                    ),
2974                );
2975            self.inner.unary(req, path, codec).await
2976        }
2977    }
2978}