Skip to main content

nominal_api_proto/proto/
nominal.ai.v1.rs

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