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