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