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