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