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