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}
13#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14pub struct SubmitMessageFeedbackResponse {}
15#[derive(Clone, PartialEq, ::prost::Message)]
16pub struct GetSnapshotRidByUserMessageIdRequest {
17    #[prost(string, tag = "1")]
18    pub conversation_rid: ::prost::alloc::string::String,
19    #[prost(string, tag = "2")]
20    pub message_id: ::prost::alloc::string::String,
21}
22#[derive(Clone, PartialEq, ::prost::Message)]
23pub struct GetSnapshotRidByUserMessageIdResponse {
24    #[prost(
25        oneof = "get_snapshot_rid_by_user_message_id_response::RestorePoint",
26        tags = "1, 2"
27    )]
28    pub restore_point: ::core::option::Option<
29        get_snapshot_rid_by_user_message_id_response::RestorePoint,
30    >,
31}
32/// Nested message and enum types in `GetSnapshotRidByUserMessageIdResponse`.
33pub mod get_snapshot_rid_by_user_message_id_response {
34    #[derive(Clone, PartialEq, ::prost::Oneof)]
35    pub enum RestorePoint {
36        #[prost(string, tag = "1")]
37        SnapshotRid(::prost::alloc::string::String),
38        #[prost(string, tag = "2")]
39        CommitId(::prost::alloc::string::String),
40    }
41}
42#[derive(Clone, Copy, PartialEq, ::prost::Message)]
43pub struct ReadOnlyMode {}
44#[derive(Clone, Copy, PartialEq, ::prost::Message)]
45pub struct EditMode {
46    #[prost(bool, optional, tag = "1")]
47    pub auto_accept: ::core::option::Option<bool>,
48}
49#[derive(Clone, Copy, PartialEq, ::prost::Message)]
50pub struct ConversationMode {
51    #[prost(oneof = "conversation_mode::Mode", tags = "1, 2")]
52    pub mode: ::core::option::Option<conversation_mode::Mode>,
53}
54/// Nested message and enum types in `ConversationMode`.
55pub mod conversation_mode {
56    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
57    pub enum Mode {
58        #[prost(message, tag = "1")]
59        ReadOnly(super::ReadOnlyMode),
60        #[prost(message, tag = "2")]
61        Edit(super::EditMode),
62    }
63}
64#[derive(Clone, PartialEq, ::prost::Message)]
65pub struct ToolApprovalResult {
66    #[prost(string, tag = "1")]
67    pub tool_call_id: ::prost::alloc::string::String,
68    #[prost(oneof = "tool_approval_result::Response", tags = "2, 3")]
69    pub response: ::core::option::Option<tool_approval_result::Response>,
70}
71/// Nested message and enum types in `ToolApprovalResult`.
72pub mod tool_approval_result {
73    #[derive(Clone, PartialEq, ::prost::Oneof)]
74    pub enum Response {
75        #[prost(message, tag = "2")]
76        Approved(super::ToolApprovedResponse),
77        #[prost(message, tag = "3")]
78        Denied(super::ToolDeniedResponse),
79    }
80}
81#[derive(Clone, PartialEq, ::prost::Message)]
82pub struct ToolApprovedResponse {
83    #[prost(string, optional, tag = "1")]
84    pub override_args: ::core::option::Option<::prost::alloc::string::String>,
85}
86#[derive(Clone, PartialEq, ::prost::Message)]
87pub struct ToolDeniedResponse {
88    #[prost(string, tag = "2")]
89    pub denial_reason: ::prost::alloc::string::String,
90}
91#[derive(Clone, Copy, PartialEq, ::prost::Message)]
92pub struct RetryRequest {}
93#[derive(Clone, PartialEq, ::prost::Message)]
94pub struct UserPromptRequest {
95    #[prost(message, optional, tag = "1")]
96    pub message: ::core::option::Option<UserModelMessage>,
97    #[prost(message, repeated, tag = "2")]
98    pub images: ::prost::alloc::vec::Vec<ImagePart>,
99}
100#[derive(Clone, PartialEq, ::prost::Message)]
101pub struct ToolApprovalRequest {
102    #[prost(message, repeated, tag = "1")]
103    pub tool_approvals: ::prost::alloc::vec::Vec<ToolApprovalResult>,
104}
105#[derive(Clone, PartialEq, ::prost::Message)]
106pub struct StreamChatRequest {
107    #[prost(string, tag = "1")]
108    pub conversation_rid: ::prost::alloc::string::String,
109    #[deprecated]
110    #[prost(message, optional, tag = "2")]
111    pub message: ::core::option::Option<UserModelMessage>,
112    #[deprecated]
113    #[prost(message, repeated, tag = "3")]
114    pub images: ::prost::alloc::vec::Vec<ImagePart>,
115    #[deprecated]
116    #[prost(message, repeated, tag = "6")]
117    pub tool_approvals: ::prost::alloc::vec::Vec<ToolApprovalResult>,
118    #[prost(oneof = "stream_chat_request::RequestType", tags = "7, 8, 9")]
119    pub request_type: ::core::option::Option<stream_chat_request::RequestType>,
120    #[prost(oneof = "stream_chat_request::Context", tags = "4, 5, 10, 11, 12")]
121    pub context: ::core::option::Option<stream_chat_request::Context>,
122}
123/// Nested message and enum types in `StreamChatRequest`.
124pub mod stream_chat_request {
125    #[derive(Clone, PartialEq, ::prost::Oneof)]
126    pub enum RequestType {
127        #[prost(message, tag = "7")]
128        Retry(super::RetryRequest),
129        #[prost(message, tag = "8")]
130        UserPrompt(super::UserPromptRequest),
131        #[prost(message, tag = "9")]
132        ToolApproval(super::ToolApprovalRequest),
133    }
134    #[derive(Clone, PartialEq, ::prost::Oneof)]
135    pub enum Context {
136        #[prost(message, tag = "4")]
137        Workbook(super::WorkbookContext),
138        #[prost(message, tag = "5")]
139        Global(super::GlobalContext),
140        #[prost(message, tag = "10")]
141        Checklist(super::ChecklistContext),
142        #[prost(message, tag = "11")]
143        Template(super::TemplateContext),
144        #[prost(message, tag = "12")]
145        Headless(super::HeadlessWorkbookContext),
146    }
147}
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct WorkbookContext {
150    #[prost(string, tag = "1")]
151    pub workbook_rid: ::prost::alloc::string::String,
152    #[deprecated]
153    #[prost(message, optional, tag = "2")]
154    pub user_presence: ::core::option::Option<WorkbookUserPresence>,
155    #[prost(string, optional, tag = "3")]
156    pub active_tab_id: ::core::option::Option<::prost::alloc::string::String>,
157}
158#[derive(Clone, PartialEq, ::prost::Message)]
159pub struct HeadlessWorkbookContext {
160    #[prost(string, tag = "1")]
161    pub ghost_workbook_rid: ::prost::alloc::string::String,
162}
163#[derive(Clone, PartialEq, ::prost::Message)]
164pub struct ChecklistContext {
165    #[prost(string, tag = "1")]
166    pub checklist_rid: ::prost::alloc::string::String,
167    #[prost(string, tag = "2")]
168    pub branch_name: ::prost::alloc::string::String,
169    #[prost(oneof = "checklist_context::ReferenceRid", tags = "3, 4")]
170    pub reference_rid: ::core::option::Option<checklist_context::ReferenceRid>,
171}
172/// Nested message and enum types in `ChecklistContext`.
173pub mod checklist_context {
174    #[derive(Clone, PartialEq, ::prost::Oneof)]
175    pub enum ReferenceRid {
176        #[prost(string, tag = "3")]
177        Asset(::prost::alloc::string::String),
178        #[prost(string, tag = "4")]
179        Run(::prost::alloc::string::String),
180    }
181}
182#[derive(Clone, PartialEq, ::prost::Message)]
183pub struct TemplateContext {
184    #[prost(string, tag = "1")]
185    pub template_rid: ::prost::alloc::string::String,
186    #[prost(string, tag = "2")]
187    pub branch_name: ::prost::alloc::string::String,
188    #[prost(oneof = "template_context::ReferenceRid", tags = "3, 4")]
189    pub reference_rid: ::core::option::Option<template_context::ReferenceRid>,
190}
191/// Nested message and enum types in `TemplateContext`.
192pub mod template_context {
193    #[derive(Clone, PartialEq, ::prost::Oneof)]
194    pub enum ReferenceRid {
195        #[prost(string, tag = "3")]
196        Asset(::prost::alloc::string::String),
197        #[prost(string, tag = "4")]
198        Run(::prost::alloc::string::String),
199    }
200}
201#[derive(Clone, Copy, PartialEq, ::prost::Message)]
202pub struct GlobalContext {}
203#[derive(Clone, Copy, PartialEq, ::prost::Message)]
204pub struct WorkbookUserPresence {
205    #[prost(int32, tag = "1")]
206    pub tab_index: i32,
207    #[prost(message, optional, tag = "2")]
208    pub range: ::core::option::Option<TimeRange>,
209}
210#[derive(Clone, PartialEq, ::prost::Message)]
211pub struct CreateConversationRequest {
212    #[prost(string, tag = "1")]
213    pub title: ::prost::alloc::string::String,
214    #[prost(string, tag = "2")]
215    pub workspace_rid: ::prost::alloc::string::String,
216    #[prost(string, optional, tag = "3")]
217    pub old_conversation_rid: ::core::option::Option<::prost::alloc::string::String>,
218    #[prost(string, optional, tag = "4")]
219    pub previous_message_id: ::core::option::Option<::prost::alloc::string::String>,
220    #[prost(message, optional, tag = "5")]
221    pub conversation_mode: ::core::option::Option<ConversationMode>,
222    #[prost(string, optional, tag = "6")]
223    pub backing_workbook_rid: ::core::option::Option<::prost::alloc::string::String>,
224}
225#[derive(Clone, PartialEq, ::prost::Message)]
226pub struct CreateConversationResponse {
227    #[prost(string, tag = "1")]
228    pub new_conversation_rid: ::prost::alloc::string::String,
229}
230#[derive(Clone, PartialEq, ::prost::Message)]
231pub struct UpdateConversationMetadataRequest {
232    #[prost(string, optional, tag = "1")]
233    pub title: ::core::option::Option<::prost::alloc::string::String>,
234    #[prost(string, tag = "2")]
235    pub conversation_rid: ::prost::alloc::string::String,
236    #[prost(message, optional, tag = "3")]
237    pub conversation_mode: ::core::option::Option<ConversationMode>,
238}
239#[derive(Clone, Copy, PartialEq, ::prost::Message)]
240pub struct UpdateConversationMetadataResponse {}
241#[derive(Clone, PartialEq, ::prost::Message)]
242pub struct DeleteConversationRequest {
243    #[prost(string, tag = "1")]
244    pub conversation_rid: ::prost::alloc::string::String,
245}
246#[derive(Clone, Copy, PartialEq, ::prost::Message)]
247pub struct DeleteConversationResponse {}
248#[derive(Clone, PartialEq, ::prost::Message)]
249pub struct GetConversationRequest {
250    #[prost(string, tag = "1")]
251    pub conversation_rid: ::prost::alloc::string::String,
252    #[prost(string, optional, tag = "2")]
253    pub page_start_message_id: ::core::option::Option<::prost::alloc::string::String>,
254    #[prost(int32, optional, tag = "3")]
255    pub max_message_count: ::core::option::Option<i32>,
256}
257#[derive(Clone, PartialEq, ::prost::Message)]
258pub struct CompactConversationRequest {
259    #[prost(string, tag = "1")]
260    pub conversation_rid: ::prost::alloc::string::String,
261}
262#[derive(Clone, Copy, PartialEq, ::prost::Message)]
263pub struct CompactConversationResponse {
264    #[prost(message, optional, tag = "1")]
265    pub context: ::core::option::Option<ContextStatus>,
266}
267#[derive(Clone, PartialEq, ::prost::Message)]
268pub struct ModelMessageWithId {
269    #[prost(string, tag = "3")]
270    pub message_id: ::prost::alloc::string::String,
271    #[prost(message, repeated, tag = "5")]
272    pub tool_approval_requests: ::prost::alloc::vec::Vec<ToolCallDescription>,
273    #[prost(oneof = "model_message_with_id::Content", tags = "1, 2, 6")]
274    pub content: ::core::option::Option<model_message_with_id::Content>,
275    #[prost(oneof = "model_message_with_id::RestorePoint", tags = "4, 7")]
276    pub restore_point: ::core::option::Option<model_message_with_id::RestorePoint>,
277}
278/// Nested message and enum types in `ModelMessageWithId`.
279pub mod model_message_with_id {
280    #[derive(Clone, PartialEq, ::prost::Oneof)]
281    pub enum Content {
282        #[prost(message, tag = "1")]
283        Message(super::ModelMessage),
284        #[prost(message, tag = "2")]
285        ToolAction(super::ToolAction),
286        #[prost(message, tag = "6")]
287        ToolActionConfirmation(super::ToolActionConfirmation),
288    }
289    #[derive(Clone, PartialEq, ::prost::Oneof)]
290    pub enum RestorePoint {
291        #[prost(string, tag = "4")]
292        SnapshotRid(::prost::alloc::string::String),
293        #[prost(string, tag = "7")]
294        CommitId(::prost::alloc::string::String),
295    }
296}
297#[derive(Clone, PartialEq, ::prost::Message)]
298pub struct GetConversationResponse {
299    #[prost(message, repeated, tag = "1")]
300    pub ordered_messages: ::prost::alloc::vec::Vec<ModelMessageWithId>,
301    #[prost(message, optional, tag = "2")]
302    pub conversation_metadata: ::core::option::Option<ConversationMetadata>,
303}
304#[derive(Clone, PartialEq, ::prost::Message)]
305pub struct GetConversationMetadataRequest {
306    #[prost(string, tag = "1")]
307    pub conversation_rid: ::prost::alloc::string::String,
308}
309#[derive(Clone, PartialEq, ::prost::Message)]
310pub struct GetConversationMetadataResponse {
311    #[prost(message, optional, tag = "1")]
312    pub conversation_metadata: ::core::option::Option<ConversationMetadata>,
313}
314#[derive(Clone, PartialEq, ::prost::Message)]
315pub struct GetConversationMessagesRequest {
316    #[prost(string, tag = "1")]
317    pub conversation_rid: ::prost::alloc::string::String,
318    #[prost(string, optional, tag = "2")]
319    pub page_start_message_id: ::core::option::Option<::prost::alloc::string::String>,
320    #[prost(int32, optional, tag = "3")]
321    pub max_message_count: ::core::option::Option<i32>,
322}
323#[derive(Clone, PartialEq, ::prost::Message)]
324pub struct GetConversationMessagesResponse {
325    #[prost(message, repeated, tag = "1")]
326    pub ordered_messages: ::prost::alloc::vec::Vec<ModelMessageWithId>,
327    #[prost(string, optional, tag = "2")]
328    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
329}
330#[derive(Clone, PartialEq, ::prost::Message)]
331pub struct ListConversationsRequest {
332    #[prost(string, tag = "1")]
333    pub workspace_rid: ::prost::alloc::string::String,
334    #[prost(string, optional, tag = "2")]
335    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
336    #[prost(int32, optional, tag = "3")]
337    pub page_size: ::core::option::Option<i32>,
338}
339#[derive(Clone, PartialEq, ::prost::Message)]
340pub struct ConversationMetadata {
341    #[prost(string, tag = "1")]
342    pub conversation_rid: ::prost::alloc::string::String,
343    #[prost(string, tag = "2")]
344    pub title: ::prost::alloc::string::String,
345    #[prost(message, optional, tag = "3")]
346    pub created_at: ::core::option::Option<
347        super::super::super::google::protobuf::Timestamp,
348    >,
349    #[prost(message, optional, tag = "4")]
350    pub last_updated_at: ::core::option::Option<
351        super::super::super::google::protobuf::Timestamp,
352    >,
353    #[prost(message, optional, tag = "5")]
354    pub mode: ::core::option::Option<ConversationMode>,
355    #[prost(message, optional, tag = "6")]
356    pub current_context: ::core::option::Option<ContextStatus>,
357    #[prost(string, optional, tag = "7")]
358    pub backing_workbook_rid: ::core::option::Option<::prost::alloc::string::String>,
359}
360#[derive(Clone, PartialEq, ::prost::Message)]
361pub struct ListConversationsResponse {
362    #[prost(message, repeated, tag = "1")]
363    pub conversations: ::prost::alloc::vec::Vec<ConversationMetadata>,
364    #[prost(string, optional, tag = "2")]
365    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
366}
367#[derive(Clone, Copy, PartialEq, ::prost::Message)]
368pub struct TimeRange {
369    #[prost(message, optional, tag = "1")]
370    pub range_start: ::core::option::Option<Timestamp>,
371    #[prost(message, optional, tag = "2")]
372    pub range_end: ::core::option::Option<Timestamp>,
373}
374#[derive(Clone, Copy, PartialEq, ::prost::Message)]
375pub struct Timestamp {
376    #[prost(int32, tag = "1")]
377    pub seconds: i32,
378    #[prost(int32, tag = "2")]
379    pub nanoseconds: i32,
380}
381#[derive(Clone, PartialEq, ::prost::Message)]
382pub struct ModelMessage {
383    #[prost(oneof = "model_message::Kind", tags = "1, 2")]
384    pub kind: ::core::option::Option<model_message::Kind>,
385}
386/// Nested message and enum types in `ModelMessage`.
387pub mod model_message {
388    #[derive(Clone, PartialEq, ::prost::Oneof)]
389    pub enum Kind {
390        #[prost(message, tag = "1")]
391        User(super::UserModelMessage),
392        #[prost(message, tag = "2")]
393        Assistant(super::AssistantModelMessage),
394    }
395}
396#[derive(Clone, PartialEq, ::prost::Message)]
397pub struct UserModelMessage {
398    #[prost(message, repeated, tag = "1")]
399    pub text: ::prost::alloc::vec::Vec<UserContentPart>,
400}
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct AssistantModelMessage {
403    #[prost(message, repeated, tag = "1")]
404    pub content_parts: ::prost::alloc::vec::Vec<AssistantContentPart>,
405}
406#[derive(Clone, PartialEq, ::prost::Message)]
407pub struct UserContentPart {
408    #[prost(oneof = "user_content_part::Part", tags = "1, 2")]
409    pub part: ::core::option::Option<user_content_part::Part>,
410}
411/// Nested message and enum types in `UserContentPart`.
412pub mod user_content_part {
413    #[derive(Clone, PartialEq, ::prost::Oneof)]
414    pub enum Part {
415        #[prost(message, tag = "1")]
416        Text(super::TextPart),
417        #[prost(message, tag = "2")]
418        Image(super::ImagePart),
419    }
420}
421#[derive(Clone, PartialEq, ::prost::Message)]
422pub struct AssistantContentPart {
423    #[prost(oneof = "assistant_content_part::Part", tags = "1, 2")]
424    pub part: ::core::option::Option<assistant_content_part::Part>,
425}
426/// Nested message and enum types in `AssistantContentPart`.
427pub mod assistant_content_part {
428    #[derive(Clone, PartialEq, ::prost::Oneof)]
429    pub enum Part {
430        #[prost(message, tag = "1")]
431        Text(super::TextPart),
432        #[prost(message, tag = "2")]
433        Reasoning(super::ReasoningPart),
434    }
435}
436#[derive(Clone, PartialEq, ::prost::Message)]
437pub struct TextPart {
438    #[prost(string, tag = "1")]
439    pub text: ::prost::alloc::string::String,
440}
441#[derive(Clone, PartialEq, ::prost::Message)]
442pub struct ImagePart {
443    #[prost(string, tag = "2")]
444    pub media_type: ::prost::alloc::string::String,
445    #[prost(string, tag = "4")]
446    pub attachment_rid: ::prost::alloc::string::String,
447}
448#[derive(Clone, PartialEq, ::prost::Message)]
449pub struct ReasoningPart {
450    #[prost(string, tag = "1")]
451    pub reasoning: ::prost::alloc::string::String,
452}
453#[derive(Clone, PartialEq, ::prost::Message)]
454pub struct StreamChatResponse {
455    #[prost(
456        oneof = "stream_chat_response::Response",
457        tags = "1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14"
458    )]
459    pub response: ::core::option::Option<stream_chat_response::Response>,
460}
461/// Nested message and enum types in `StreamChatResponse`.
462pub mod stream_chat_response {
463    #[derive(Clone, PartialEq, ::prost::Oneof)]
464    pub enum Response {
465        #[prost(message, tag = "1")]
466        Finish(super::Finish),
467        #[prost(message, tag = "2")]
468        Error(super::Error),
469        #[prost(message, tag = "3")]
470        TextStart(super::TextStart),
471        #[prost(message, tag = "4")]
472        TextDelta(super::TextDelta),
473        #[prost(message, tag = "5")]
474        TextEnd(super::TextEnd),
475        #[prost(message, tag = "6")]
476        ReasoningStart(super::ReasoningStart),
477        #[prost(message, tag = "7")]
478        ReasoningDelta(super::ReasoningDelta),
479        #[prost(message, tag = "8")]
480        ReasoningEnd(super::ReasoningEnd),
481        #[prost(message, tag = "10")]
482        ToolAction(super::ToolAction),
483        #[prost(message, tag = "11")]
484        ToolActionConfirmation(super::ToolActionConfirmation),
485        #[prost(message, tag = "12")]
486        StepStart(super::StepStart),
487        #[prost(message, tag = "13")]
488        StepEnd(super::StepEnd),
489        #[prost(message, tag = "14")]
490        ClientDirective(super::ClientDirective),
491    }
492}
493#[derive(Clone, Copy, PartialEq, ::prost::Message)]
494pub struct StepStart {}
495#[derive(Clone, Copy, PartialEq, ::prost::Message)]
496pub struct StepEnd {}
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct ToolCallDescription {
499    #[prost(string, tag = "1")]
500    pub tool_call_id: ::prost::alloc::string::String,
501    #[prost(string, tag = "2")]
502    pub tool_name: ::prost::alloc::string::String,
503    #[prost(string, tag = "3")]
504    pub tool_args_json_string: ::prost::alloc::string::String,
505    #[prost(enumeration = "ToolCallStatus", tag = "4")]
506    pub status: i32,
507}
508#[derive(Clone, PartialEq, ::prost::Message)]
509pub struct Finish {
510    #[prost(string, repeated, tag = "1")]
511    pub ordered_message_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
512    #[prost(string, optional, tag = "2")]
513    pub new_title: ::core::option::Option<::prost::alloc::string::String>,
514    #[prost(message, repeated, tag = "3")]
515    pub tool_approval_requests: ::prost::alloc::vec::Vec<ToolCallDescription>,
516    #[prost(message, optional, tag = "4")]
517    pub updated_context: ::core::option::Option<ContextStatus>,
518}
519#[derive(Clone, PartialEq, ::prost::Message)]
520pub struct Error {
521    #[prost(string, tag = "1")]
522    pub message: ::prost::alloc::string::String,
523}
524#[derive(Clone, PartialEq, ::prost::Message)]
525pub struct TextStart {
526    #[prost(string, tag = "1")]
527    pub id: ::prost::alloc::string::String,
528}
529#[derive(Clone, PartialEq, ::prost::Message)]
530pub struct TextDelta {
531    #[prost(string, tag = "1")]
532    pub id: ::prost::alloc::string::String,
533    #[prost(string, tag = "2")]
534    pub delta: ::prost::alloc::string::String,
535}
536#[derive(Clone, PartialEq, ::prost::Message)]
537pub struct TextEnd {
538    #[prost(string, tag = "1")]
539    pub id: ::prost::alloc::string::String,
540}
541#[derive(Clone, PartialEq, ::prost::Message)]
542pub struct ReasoningStart {
543    #[prost(string, tag = "1")]
544    pub id: ::prost::alloc::string::String,
545}
546#[derive(Clone, PartialEq, ::prost::Message)]
547pub struct ReasoningDelta {
548    #[prost(string, tag = "1")]
549    pub id: ::prost::alloc::string::String,
550    #[prost(string, tag = "2")]
551    pub delta: ::prost::alloc::string::String,
552}
553#[derive(Clone, PartialEq, ::prost::Message)]
554pub struct ReasoningEnd {
555    #[prost(string, tag = "1")]
556    pub id: ::prost::alloc::string::String,
557}
558#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct ToolAction {
560    #[prost(string, tag = "2")]
561    pub tool_action_verb: ::prost::alloc::string::String,
562    #[prost(string, optional, tag = "3")]
563    pub tool_target: ::core::option::Option<::prost::alloc::string::String>,
564    #[prost(message, optional, tag = "5")]
565    pub tool_call_description: ::core::option::Option<ToolCallDescription>,
566    #[deprecated]
567    #[prost(string, tag = "1")]
568    pub id: ::prost::alloc::string::String,
569    #[deprecated]
570    #[prost(string, tag = "4")]
571    pub tool_name: ::prost::alloc::string::String,
572}
573#[derive(Clone, PartialEq, ::prost::Message)]
574pub struct ToolActionConfirmation {
575    #[prost(string, tag = "1")]
576    pub id: ::prost::alloc::string::String,
577    #[prost(oneof = "tool_action_confirmation::Outcome", tags = "2, 3")]
578    pub outcome: ::core::option::Option<tool_action_confirmation::Outcome>,
579}
580/// Nested message and enum types in `ToolActionConfirmation`.
581pub mod tool_action_confirmation {
582    #[derive(Clone, PartialEq, ::prost::Oneof)]
583    pub enum Outcome {
584        #[prost(message, tag = "2")]
585        Success(super::ToolActionSuccess),
586        #[prost(message, tag = "3")]
587        Failure(super::ToolActionFailure),
588    }
589}
590#[derive(Clone, PartialEq, ::prost::Message)]
591pub struct ToolActionSuccess {
592    #[prost(string, tag = "1")]
593    pub tool_success_message: ::prost::alloc::string::String,
594}
595#[derive(Clone, PartialEq, ::prost::Message)]
596pub struct ToolActionFailure {
597    #[prost(string, tag = "1")]
598    pub tool_error_message: ::prost::alloc::string::String,
599}
600#[derive(Clone, PartialEq, ::prost::Message)]
601pub struct ClientDirective {
602    #[prost(oneof = "client_directive::Version", tags = "1")]
603    pub version: ::core::option::Option<client_directive::Version>,
604}
605/// Nested message and enum types in `ClientDirective`.
606pub mod client_directive {
607    #[derive(Clone, PartialEq, ::prost::Oneof)]
608    pub enum Version {
609        #[prost(message, tag = "1")]
610        V1(super::ClientDirectiveV1),
611    }
612}
613#[derive(Clone, PartialEq, ::prost::Message)]
614pub struct ClientDirectiveV1 {
615    #[prost(string, tag = "1")]
616    pub id: ::prost::alloc::string::String,
617    #[prost(oneof = "client_directive_v1::Kind", tags = "2, 3")]
618    pub kind: ::core::option::Option<client_directive_v1::Kind>,
619}
620/// Nested message and enum types in `ClientDirectiveV1`.
621pub mod client_directive_v1 {
622    #[derive(Clone, PartialEq, ::prost::Oneof)]
623    pub enum Kind {
624        #[prost(message, tag = "2")]
625        ResourceEdited(super::ResourceEditedDirective),
626        #[prost(message, tag = "3")]
627        SetTimeRange(super::SetTimeRangeDirective),
628    }
629}
630#[derive(Clone, PartialEq, ::prost::Message)]
631pub struct ResourceEditedDirective {
632    #[prost(oneof = "resource_edited_directive::Resource", tags = "1, 2")]
633    pub resource: ::core::option::Option<resource_edited_directive::Resource>,
634}
635/// Nested message and enum types in `ResourceEditedDirective`.
636pub mod resource_edited_directive {
637    #[derive(Clone, PartialEq, ::prost::Oneof)]
638    pub enum Resource {
639        #[prost(message, tag = "1")]
640        Checklist(super::ChecklistEdited),
641        #[prost(message, tag = "2")]
642        Template(super::TemplateEdited),
643    }
644}
645#[derive(Clone, PartialEq, ::prost::Message)]
646pub struct ChecklistEdited {
647    #[prost(string, tag = "1")]
648    pub checklist_rid: ::prost::alloc::string::String,
649    #[prost(string, tag = "2")]
650    pub branch_name: ::prost::alloc::string::String,
651    #[prost(string, optional, tag = "3")]
652    pub check_id: ::core::option::Option<::prost::alloc::string::String>,
653}
654#[derive(Clone, PartialEq, ::prost::Message)]
655pub struct TemplateEdited {
656    #[prost(string, tag = "1")]
657    pub template_rid: ::prost::alloc::string::String,
658    #[prost(string, tag = "2")]
659    pub branch_name: ::prost::alloc::string::String,
660}
661#[derive(Clone, PartialEq, ::prost::Message)]
662pub struct SetTimeRangeDirective {
663    #[prost(string, tag = "1")]
664    pub workbook_rid: ::prost::alloc::string::String,
665    #[prost(message, optional, tag = "2")]
666    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
667    #[prost(message, optional, tag = "3")]
668    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
669    #[prost(enumeration = "TimeRangeType", tag = "4")]
670    pub time_range_type: i32,
671}
672#[derive(Clone, Copy, PartialEq, ::prost::Message)]
673pub struct ContextStatus {
674    #[prost(int32, tag = "1")]
675    pub curr_token_count: i32,
676    #[prost(int32, tag = "2")]
677    pub model_context_limit: i32,
678}
679#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
680#[repr(i32)]
681pub enum FeedbackVote {
682    Unspecified = 0,
683    ThumbsUp = 1,
684    ThumbsDown = 2,
685}
686impl FeedbackVote {
687    /// String value of the enum field names used in the ProtoBuf definition.
688    ///
689    /// The values are not transformed in any way and thus are considered stable
690    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
691    pub fn as_str_name(&self) -> &'static str {
692        match self {
693            Self::Unspecified => "FEEDBACK_VOTE_UNSPECIFIED",
694            Self::ThumbsUp => "FEEDBACK_VOTE_THUMBS_UP",
695            Self::ThumbsDown => "FEEDBACK_VOTE_THUMBS_DOWN",
696        }
697    }
698    /// Creates an enum from field names used in the ProtoBuf definition.
699    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
700        match value {
701            "FEEDBACK_VOTE_UNSPECIFIED" => Some(Self::Unspecified),
702            "FEEDBACK_VOTE_THUMBS_UP" => Some(Self::ThumbsUp),
703            "FEEDBACK_VOTE_THUMBS_DOWN" => Some(Self::ThumbsDown),
704            _ => None,
705        }
706    }
707}
708#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
709#[repr(i32)]
710pub enum ToolCallStatus {
711    Unspecified = 0,
712    Approved = 1,
713    Denied = 2,
714    AwaitingApproval = 3,
715}
716impl ToolCallStatus {
717    /// String value of the enum field names used in the ProtoBuf definition.
718    ///
719    /// The values are not transformed in any way and thus are considered stable
720    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
721    pub fn as_str_name(&self) -> &'static str {
722        match self {
723            Self::Unspecified => "TOOL_CALL_STATUS_UNSPECIFIED",
724            Self::Approved => "TOOL_CALL_STATUS_APPROVED",
725            Self::Denied => "TOOL_CALL_STATUS_DENIED",
726            Self::AwaitingApproval => "TOOL_CALL_STATUS_AWAITING_APPROVAL",
727        }
728    }
729    /// Creates an enum from field names used in the ProtoBuf definition.
730    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
731        match value {
732            "TOOL_CALL_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
733            "TOOL_CALL_STATUS_APPROVED" => Some(Self::Approved),
734            "TOOL_CALL_STATUS_DENIED" => Some(Self::Denied),
735            "TOOL_CALL_STATUS_AWAITING_APPROVAL" => Some(Self::AwaitingApproval),
736            _ => None,
737        }
738    }
739}
740#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
741#[repr(i32)]
742pub enum TimeRangeType {
743    Unspecified = 0,
744    Absolute = 1,
745    Relative = 2,
746}
747impl TimeRangeType {
748    /// String value of the enum field names used in the ProtoBuf definition.
749    ///
750    /// The values are not transformed in any way and thus are considered stable
751    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
752    pub fn as_str_name(&self) -> &'static str {
753        match self {
754            Self::Unspecified => "TIME_RANGE_TYPE_UNSPECIFIED",
755            Self::Absolute => "TIME_RANGE_TYPE_ABSOLUTE",
756            Self::Relative => "TIME_RANGE_TYPE_RELATIVE",
757        }
758    }
759    /// Creates an enum from field names used in the ProtoBuf definition.
760    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
761        match value {
762            "TIME_RANGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
763            "TIME_RANGE_TYPE_ABSOLUTE" => Some(Self::Absolute),
764            "TIME_RANGE_TYPE_RELATIVE" => Some(Self::Relative),
765            _ => None,
766        }
767    }
768}
769/// Generated client implementations.
770pub mod ai_agent_service_client {
771    #![allow(
772        unused_variables,
773        dead_code,
774        missing_docs,
775        clippy::wildcard_imports,
776        clippy::let_unit_value,
777    )]
778    use tonic::codegen::*;
779    use tonic::codegen::http::Uri;
780    #[derive(Debug, Clone)]
781    pub struct AiAgentServiceClient<T> {
782        inner: tonic::client::Grpc<T>,
783    }
784    impl AiAgentServiceClient<tonic::transport::Channel> {
785        /// Attempt to create a new client by connecting to a given endpoint.
786        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
787        where
788            D: TryInto<tonic::transport::Endpoint>,
789            D::Error: Into<StdError>,
790        {
791            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
792            Ok(Self::new(conn))
793        }
794    }
795    impl<T> AiAgentServiceClient<T>
796    where
797        T: tonic::client::GrpcService<tonic::body::Body>,
798        T::Error: Into<StdError>,
799        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
800        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
801    {
802        pub fn new(inner: T) -> Self {
803            let inner = tonic::client::Grpc::new(inner);
804            Self { inner }
805        }
806        pub fn with_origin(inner: T, origin: Uri) -> Self {
807            let inner = tonic::client::Grpc::with_origin(inner, origin);
808            Self { inner }
809        }
810        pub fn with_interceptor<F>(
811            inner: T,
812            interceptor: F,
813        ) -> AiAgentServiceClient<InterceptedService<T, F>>
814        where
815            F: tonic::service::Interceptor,
816            T::ResponseBody: Default,
817            T: tonic::codegen::Service<
818                http::Request<tonic::body::Body>,
819                Response = http::Response<
820                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
821                >,
822            >,
823            <T as tonic::codegen::Service<
824                http::Request<tonic::body::Body>,
825            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
826        {
827            AiAgentServiceClient::new(InterceptedService::new(inner, interceptor))
828        }
829        /// Compress requests with the given encoding.
830        ///
831        /// This requires the server to support it otherwise it might respond with an
832        /// error.
833        #[must_use]
834        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
835            self.inner = self.inner.send_compressed(encoding);
836            self
837        }
838        /// Enable decompressing responses.
839        #[must_use]
840        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
841            self.inner = self.inner.accept_compressed(encoding);
842            self
843        }
844        /// Limits the maximum size of a decoded message.
845        ///
846        /// Default: `4MB`
847        #[must_use]
848        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
849            self.inner = self.inner.max_decoding_message_size(limit);
850            self
851        }
852        /// Limits the maximum size of an encoded message.
853        ///
854        /// Default: `usize::MAX`
855        #[must_use]
856        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
857            self.inner = self.inner.max_encoding_message_size(limit);
858            self
859        }
860        pub async fn stream_chat(
861            &mut self,
862            request: impl tonic::IntoRequest<super::StreamChatRequest>,
863        ) -> std::result::Result<
864            tonic::Response<tonic::codec::Streaming<super::StreamChatResponse>>,
865            tonic::Status,
866        > {
867            self.inner
868                .ready()
869                .await
870                .map_err(|e| {
871                    tonic::Status::unknown(
872                        format!("Service was not ready: {}", e.into()),
873                    )
874                })?;
875            let codec = tonic::codec::ProstCodec::default();
876            let path = http::uri::PathAndQuery::from_static(
877                "/nominal.ai.v1.AIAgentService/StreamChat",
878            );
879            let mut req = request.into_request();
880            req.extensions_mut()
881                .insert(GrpcMethod::new("nominal.ai.v1.AIAgentService", "StreamChat"));
882            self.inner.server_streaming(req, path, codec).await
883        }
884        #[deprecated]
885        pub async fn get_conversation(
886            &mut self,
887            request: impl tonic::IntoRequest<super::GetConversationRequest>,
888        ) -> std::result::Result<
889            tonic::Response<super::GetConversationResponse>,
890            tonic::Status,
891        > {
892            self.inner
893                .ready()
894                .await
895                .map_err(|e| {
896                    tonic::Status::unknown(
897                        format!("Service was not ready: {}", e.into()),
898                    )
899                })?;
900            let codec = tonic::codec::ProstCodec::default();
901            let path = http::uri::PathAndQuery::from_static(
902                "/nominal.ai.v1.AIAgentService/GetConversation",
903            );
904            let mut req = request.into_request();
905            req.extensions_mut()
906                .insert(
907                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "GetConversation"),
908                );
909            self.inner.unary(req, path, codec).await
910        }
911        pub async fn get_conversation_metadata(
912            &mut self,
913            request: impl tonic::IntoRequest<super::GetConversationMetadataRequest>,
914        ) -> std::result::Result<
915            tonic::Response<super::GetConversationMetadataResponse>,
916            tonic::Status,
917        > {
918            self.inner
919                .ready()
920                .await
921                .map_err(|e| {
922                    tonic::Status::unknown(
923                        format!("Service was not ready: {}", e.into()),
924                    )
925                })?;
926            let codec = tonic::codec::ProstCodec::default();
927            let path = http::uri::PathAndQuery::from_static(
928                "/nominal.ai.v1.AIAgentService/GetConversationMetadata",
929            );
930            let mut req = request.into_request();
931            req.extensions_mut()
932                .insert(
933                    GrpcMethod::new(
934                        "nominal.ai.v1.AIAgentService",
935                        "GetConversationMetadata",
936                    ),
937                );
938            self.inner.unary(req, path, codec).await
939        }
940        pub async fn get_conversation_messages(
941            &mut self,
942            request: impl tonic::IntoRequest<super::GetConversationMessagesRequest>,
943        ) -> std::result::Result<
944            tonic::Response<super::GetConversationMessagesResponse>,
945            tonic::Status,
946        > {
947            self.inner
948                .ready()
949                .await
950                .map_err(|e| {
951                    tonic::Status::unknown(
952                        format!("Service was not ready: {}", e.into()),
953                    )
954                })?;
955            let codec = tonic::codec::ProstCodec::default();
956            let path = http::uri::PathAndQuery::from_static(
957                "/nominal.ai.v1.AIAgentService/GetConversationMessages",
958            );
959            let mut req = request.into_request();
960            req.extensions_mut()
961                .insert(
962                    GrpcMethod::new(
963                        "nominal.ai.v1.AIAgentService",
964                        "GetConversationMessages",
965                    ),
966                );
967            self.inner.unary(req, path, codec).await
968        }
969        pub async fn list_conversations(
970            &mut self,
971            request: impl tonic::IntoRequest<super::ListConversationsRequest>,
972        ) -> std::result::Result<
973            tonic::Response<super::ListConversationsResponse>,
974            tonic::Status,
975        > {
976            self.inner
977                .ready()
978                .await
979                .map_err(|e| {
980                    tonic::Status::unknown(
981                        format!("Service was not ready: {}", e.into()),
982                    )
983                })?;
984            let codec = tonic::codec::ProstCodec::default();
985            let path = http::uri::PathAndQuery::from_static(
986                "/nominal.ai.v1.AIAgentService/ListConversations",
987            );
988            let mut req = request.into_request();
989            req.extensions_mut()
990                .insert(
991                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "ListConversations"),
992                );
993            self.inner.unary(req, path, codec).await
994        }
995        pub async fn create_conversation(
996            &mut self,
997            request: impl tonic::IntoRequest<super::CreateConversationRequest>,
998        ) -> std::result::Result<
999            tonic::Response<super::CreateConversationResponse>,
1000            tonic::Status,
1001        > {
1002            self.inner
1003                .ready()
1004                .await
1005                .map_err(|e| {
1006                    tonic::Status::unknown(
1007                        format!("Service was not ready: {}", e.into()),
1008                    )
1009                })?;
1010            let codec = tonic::codec::ProstCodec::default();
1011            let path = http::uri::PathAndQuery::from_static(
1012                "/nominal.ai.v1.AIAgentService/CreateConversation",
1013            );
1014            let mut req = request.into_request();
1015            req.extensions_mut()
1016                .insert(
1017                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "CreateConversation"),
1018                );
1019            self.inner.unary(req, path, codec).await
1020        }
1021        pub async fn update_conversation_metadata(
1022            &mut self,
1023            request: impl tonic::IntoRequest<super::UpdateConversationMetadataRequest>,
1024        ) -> std::result::Result<
1025            tonic::Response<super::UpdateConversationMetadataResponse>,
1026            tonic::Status,
1027        > {
1028            self.inner
1029                .ready()
1030                .await
1031                .map_err(|e| {
1032                    tonic::Status::unknown(
1033                        format!("Service was not ready: {}", e.into()),
1034                    )
1035                })?;
1036            let codec = tonic::codec::ProstCodec::default();
1037            let path = http::uri::PathAndQuery::from_static(
1038                "/nominal.ai.v1.AIAgentService/UpdateConversationMetadata",
1039            );
1040            let mut req = request.into_request();
1041            req.extensions_mut()
1042                .insert(
1043                    GrpcMethod::new(
1044                        "nominal.ai.v1.AIAgentService",
1045                        "UpdateConversationMetadata",
1046                    ),
1047                );
1048            self.inner.unary(req, path, codec).await
1049        }
1050        pub async fn delete_conversation(
1051            &mut self,
1052            request: impl tonic::IntoRequest<super::DeleteConversationRequest>,
1053        ) -> std::result::Result<
1054            tonic::Response<super::DeleteConversationResponse>,
1055            tonic::Status,
1056        > {
1057            self.inner
1058                .ready()
1059                .await
1060                .map_err(|e| {
1061                    tonic::Status::unknown(
1062                        format!("Service was not ready: {}", e.into()),
1063                    )
1064                })?;
1065            let codec = tonic::codec::ProstCodec::default();
1066            let path = http::uri::PathAndQuery::from_static(
1067                "/nominal.ai.v1.AIAgentService/DeleteConversation",
1068            );
1069            let mut req = request.into_request();
1070            req.extensions_mut()
1071                .insert(
1072                    GrpcMethod::new("nominal.ai.v1.AIAgentService", "DeleteConversation"),
1073                );
1074            self.inner.unary(req, path, codec).await
1075        }
1076        pub async fn get_snapshot_rid_by_user_message_id(
1077            &mut self,
1078            request: impl tonic::IntoRequest<super::GetSnapshotRidByUserMessageIdRequest>,
1079        ) -> std::result::Result<
1080            tonic::Response<super::GetSnapshotRidByUserMessageIdResponse>,
1081            tonic::Status,
1082        > {
1083            self.inner
1084                .ready()
1085                .await
1086                .map_err(|e| {
1087                    tonic::Status::unknown(
1088                        format!("Service was not ready: {}", e.into()),
1089                    )
1090                })?;
1091            let codec = tonic::codec::ProstCodec::default();
1092            let path = http::uri::PathAndQuery::from_static(
1093                "/nominal.ai.v1.AIAgentService/GetSnapshotRidByUserMessageId",
1094            );
1095            let mut req = request.into_request();
1096            req.extensions_mut()
1097                .insert(
1098                    GrpcMethod::new(
1099                        "nominal.ai.v1.AIAgentService",
1100                        "GetSnapshotRidByUserMessageId",
1101                    ),
1102                );
1103            self.inner.unary(req, path, codec).await
1104        }
1105        pub async fn compact_conversation(
1106            &mut self,
1107            request: impl tonic::IntoRequest<super::CompactConversationRequest>,
1108        ) -> std::result::Result<
1109            tonic::Response<super::CompactConversationResponse>,
1110            tonic::Status,
1111        > {
1112            self.inner
1113                .ready()
1114                .await
1115                .map_err(|e| {
1116                    tonic::Status::unknown(
1117                        format!("Service was not ready: {}", e.into()),
1118                    )
1119                })?;
1120            let codec = tonic::codec::ProstCodec::default();
1121            let path = http::uri::PathAndQuery::from_static(
1122                "/nominal.ai.v1.AIAgentService/CompactConversation",
1123            );
1124            let mut req = request.into_request();
1125            req.extensions_mut()
1126                .insert(
1127                    GrpcMethod::new(
1128                        "nominal.ai.v1.AIAgentService",
1129                        "CompactConversation",
1130                    ),
1131                );
1132            self.inner.unary(req, path, codec).await
1133        }
1134        pub async fn submit_message_feedback(
1135            &mut self,
1136            request: impl tonic::IntoRequest<super::SubmitMessageFeedbackRequest>,
1137        ) -> std::result::Result<
1138            tonic::Response<super::SubmitMessageFeedbackResponse>,
1139            tonic::Status,
1140        > {
1141            self.inner
1142                .ready()
1143                .await
1144                .map_err(|e| {
1145                    tonic::Status::unknown(
1146                        format!("Service was not ready: {}", e.into()),
1147                    )
1148                })?;
1149            let codec = tonic::codec::ProstCodec::default();
1150            let path = http::uri::PathAndQuery::from_static(
1151                "/nominal.ai.v1.AIAgentService/SubmitMessageFeedback",
1152            );
1153            let mut req = request.into_request();
1154            req.extensions_mut()
1155                .insert(
1156                    GrpcMethod::new(
1157                        "nominal.ai.v1.AIAgentService",
1158                        "SubmitMessageFeedback",
1159                    ),
1160                );
1161            self.inner.unary(req, path, codec).await
1162        }
1163    }
1164}
1165#[derive(Clone, PartialEq, ::prost::Message)]
1166pub struct ClassifyErrorRequest {
1167    #[prost(string, tag = "1")]
1168    pub error_message: ::prost::alloc::string::String,
1169}
1170#[derive(Clone, PartialEq, ::prost::Message)]
1171pub struct ClassifyErrorResponse {
1172    #[prost(enumeration = "ErrorClassification", tag = "1")]
1173    pub classification: i32,
1174    #[prost(string, tag = "2")]
1175    pub reason: ::prost::alloc::string::String,
1176}
1177#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1178#[repr(i32)]
1179pub enum ErrorClassification {
1180    Unspecified = 0,
1181    Client = 1,
1182    Server = 2,
1183}
1184impl ErrorClassification {
1185    /// String value of the enum field names used in the ProtoBuf definition.
1186    ///
1187    /// The values are not transformed in any way and thus are considered stable
1188    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1189    pub fn as_str_name(&self) -> &'static str {
1190        match self {
1191            Self::Unspecified => "ERROR_CLASSIFICATION_UNSPECIFIED",
1192            Self::Client => "ERROR_CLASSIFICATION_CLIENT",
1193            Self::Server => "ERROR_CLASSIFICATION_SERVER",
1194        }
1195    }
1196    /// Creates an enum from field names used in the ProtoBuf definition.
1197    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1198        match value {
1199            "ERROR_CLASSIFICATION_UNSPECIFIED" => Some(Self::Unspecified),
1200            "ERROR_CLASSIFICATION_CLIENT" => Some(Self::Client),
1201            "ERROR_CLASSIFICATION_SERVER" => Some(Self::Server),
1202            _ => None,
1203        }
1204    }
1205}
1206/// Generated client implementations.
1207pub mod data_ingestion_error_classifier_service_client {
1208    #![allow(
1209        unused_variables,
1210        dead_code,
1211        missing_docs,
1212        clippy::wildcard_imports,
1213        clippy::let_unit_value,
1214    )]
1215    use tonic::codegen::*;
1216    use tonic::codegen::http::Uri;
1217    #[derive(Debug, Clone)]
1218    pub struct DataIngestionErrorClassifierServiceClient<T> {
1219        inner: tonic::client::Grpc<T>,
1220    }
1221    impl DataIngestionErrorClassifierServiceClient<tonic::transport::Channel> {
1222        /// Attempt to create a new client by connecting to a given endpoint.
1223        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1224        where
1225            D: TryInto<tonic::transport::Endpoint>,
1226            D::Error: Into<StdError>,
1227        {
1228            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1229            Ok(Self::new(conn))
1230        }
1231    }
1232    impl<T> DataIngestionErrorClassifierServiceClient<T>
1233    where
1234        T: tonic::client::GrpcService<tonic::body::Body>,
1235        T::Error: Into<StdError>,
1236        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1237        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1238    {
1239        pub fn new(inner: T) -> Self {
1240            let inner = tonic::client::Grpc::new(inner);
1241            Self { inner }
1242        }
1243        pub fn with_origin(inner: T, origin: Uri) -> Self {
1244            let inner = tonic::client::Grpc::with_origin(inner, origin);
1245            Self { inner }
1246        }
1247        pub fn with_interceptor<F>(
1248            inner: T,
1249            interceptor: F,
1250        ) -> DataIngestionErrorClassifierServiceClient<InterceptedService<T, F>>
1251        where
1252            F: tonic::service::Interceptor,
1253            T::ResponseBody: Default,
1254            T: tonic::codegen::Service<
1255                http::Request<tonic::body::Body>,
1256                Response = http::Response<
1257                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1258                >,
1259            >,
1260            <T as tonic::codegen::Service<
1261                http::Request<tonic::body::Body>,
1262            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1263        {
1264            DataIngestionErrorClassifierServiceClient::new(
1265                InterceptedService::new(inner, interceptor),
1266            )
1267        }
1268        /// Compress requests with the given encoding.
1269        ///
1270        /// This requires the server to support it otherwise it might respond with an
1271        /// error.
1272        #[must_use]
1273        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1274            self.inner = self.inner.send_compressed(encoding);
1275            self
1276        }
1277        /// Enable decompressing responses.
1278        #[must_use]
1279        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1280            self.inner = self.inner.accept_compressed(encoding);
1281            self
1282        }
1283        /// Limits the maximum size of a decoded message.
1284        ///
1285        /// Default: `4MB`
1286        #[must_use]
1287        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1288            self.inner = self.inner.max_decoding_message_size(limit);
1289            self
1290        }
1291        /// Limits the maximum size of an encoded message.
1292        ///
1293        /// Default: `usize::MAX`
1294        #[must_use]
1295        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1296            self.inner = self.inner.max_encoding_message_size(limit);
1297            self
1298        }
1299        pub async fn classify_error(
1300            &mut self,
1301            request: impl tonic::IntoRequest<super::ClassifyErrorRequest>,
1302        ) -> std::result::Result<
1303            tonic::Response<super::ClassifyErrorResponse>,
1304            tonic::Status,
1305        > {
1306            self.inner
1307                .ready()
1308                .await
1309                .map_err(|e| {
1310                    tonic::Status::unknown(
1311                        format!("Service was not ready: {}", e.into()),
1312                    )
1313                })?;
1314            let codec = tonic::codec::ProstCodec::default();
1315            let path = http::uri::PathAndQuery::from_static(
1316                "/nominal.ai.v1.DataIngestionErrorClassifierService/ClassifyError",
1317            );
1318            let mut req = request.into_request();
1319            req.extensions_mut()
1320                .insert(
1321                    GrpcMethod::new(
1322                        "nominal.ai.v1.DataIngestionErrorClassifierService",
1323                        "ClassifyError",
1324                    ),
1325                );
1326            self.inner.unary(req, path, codec).await
1327        }
1328    }
1329}
1330#[derive(Clone, PartialEq, ::prost::Message)]
1331pub struct CreateOrUpdateKnowledgeBaseRequest {
1332    #[prost(string, tag = "1")]
1333    pub attachment_rid: ::prost::alloc::string::String,
1334    #[prost(string, tag = "2")]
1335    pub summary_description: ::prost::alloc::string::String,
1336    #[prost(enumeration = "KnowledgeBaseType", optional, tag = "3")]
1337    pub r#type: ::core::option::Option<i32>,
1338}
1339#[derive(Clone, PartialEq, ::prost::Message)]
1340pub struct CreateOrUpdateKnowledgeBaseResponse {
1341    #[prost(string, tag = "1")]
1342    pub knowledge_base_rid: ::prost::alloc::string::String,
1343}
1344#[derive(Clone, PartialEq, ::prost::Message)]
1345pub struct KnowledgeBase {
1346    #[prost(string, tag = "1")]
1347    pub knowledge_base_rid: ::prost::alloc::string::String,
1348    #[prost(string, tag = "2")]
1349    pub attachment_rid: ::prost::alloc::string::String,
1350    #[prost(string, tag = "3")]
1351    pub workspace_rid: ::prost::alloc::string::String,
1352    #[prost(string, tag = "4")]
1353    pub summary_description: ::prost::alloc::string::String,
1354    #[prost(enumeration = "KnowledgeBaseType", tag = "5")]
1355    pub r#type: i32,
1356    #[prost(int32, tag = "6")]
1357    pub version: i32,
1358}
1359#[derive(Clone, PartialEq, ::prost::Message)]
1360pub struct ListRequest {
1361    #[prost(string, tag = "1")]
1362    pub workspace_rid: ::prost::alloc::string::String,
1363}
1364#[derive(Clone, PartialEq, ::prost::Message)]
1365pub struct ListResponse {
1366    #[prost(message, repeated, tag = "1")]
1367    pub knowledge_bases: ::prost::alloc::vec::Vec<KnowledgeBase>,
1368}
1369#[derive(Clone, PartialEq, ::prost::Message)]
1370pub struct DeleteRequest {
1371    #[prost(string, tag = "1")]
1372    pub knowledge_base_rid: ::prost::alloc::string::String,
1373}
1374#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1375pub struct DeleteResponse {
1376    #[prost(bool, tag = "1")]
1377    pub success: bool,
1378}
1379#[derive(Clone, PartialEq, ::prost::Message)]
1380pub struct GetBatchRequest {
1381    #[prost(string, repeated, tag = "1")]
1382    pub knowledge_base_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1383}
1384#[derive(Clone, PartialEq, ::prost::Message)]
1385pub struct GetBatchResponse {
1386    #[prost(message, repeated, tag = "1")]
1387    pub knowledge_bases: ::prost::alloc::vec::Vec<KnowledgeBase>,
1388}
1389#[derive(Clone, PartialEq, ::prost::Message)]
1390pub struct GenerateSummaryDescriptionRequest {
1391    #[prost(string, tag = "1")]
1392    pub attachment_rid: ::prost::alloc::string::String,
1393}
1394#[derive(Clone, PartialEq, ::prost::Message)]
1395pub struct GenerateSummaryDescriptionResponse {
1396    #[prost(string, tag = "1")]
1397    pub summary_description: ::prost::alloc::string::String,
1398}
1399#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1400#[repr(i32)]
1401pub enum KnowledgeBaseType {
1402    Unspecified = 0,
1403    Prompt = 1,
1404    Embedding = 2,
1405}
1406impl KnowledgeBaseType {
1407    /// String value of the enum field names used in the ProtoBuf definition.
1408    ///
1409    /// The values are not transformed in any way and thus are considered stable
1410    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1411    pub fn as_str_name(&self) -> &'static str {
1412        match self {
1413            Self::Unspecified => "KNOWLEDGE_BASE_TYPE_UNSPECIFIED",
1414            Self::Prompt => "KNOWLEDGE_BASE_TYPE_PROMPT",
1415            Self::Embedding => "KNOWLEDGE_BASE_TYPE_EMBEDDING",
1416        }
1417    }
1418    /// Creates an enum from field names used in the ProtoBuf definition.
1419    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1420        match value {
1421            "KNOWLEDGE_BASE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1422            "KNOWLEDGE_BASE_TYPE_PROMPT" => Some(Self::Prompt),
1423            "KNOWLEDGE_BASE_TYPE_EMBEDDING" => Some(Self::Embedding),
1424            _ => None,
1425        }
1426    }
1427}
1428/// Generated client implementations.
1429pub mod knowledge_base_service_client {
1430    #![allow(
1431        unused_variables,
1432        dead_code,
1433        missing_docs,
1434        clippy::wildcard_imports,
1435        clippy::let_unit_value,
1436    )]
1437    use tonic::codegen::*;
1438    use tonic::codegen::http::Uri;
1439    #[derive(Debug, Clone)]
1440    pub struct KnowledgeBaseServiceClient<T> {
1441        inner: tonic::client::Grpc<T>,
1442    }
1443    impl KnowledgeBaseServiceClient<tonic::transport::Channel> {
1444        /// Attempt to create a new client by connecting to a given endpoint.
1445        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1446        where
1447            D: TryInto<tonic::transport::Endpoint>,
1448            D::Error: Into<StdError>,
1449        {
1450            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1451            Ok(Self::new(conn))
1452        }
1453    }
1454    impl<T> KnowledgeBaseServiceClient<T>
1455    where
1456        T: tonic::client::GrpcService<tonic::body::Body>,
1457        T::Error: Into<StdError>,
1458        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1459        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1460    {
1461        pub fn new(inner: T) -> Self {
1462            let inner = tonic::client::Grpc::new(inner);
1463            Self { inner }
1464        }
1465        pub fn with_origin(inner: T, origin: Uri) -> Self {
1466            let inner = tonic::client::Grpc::with_origin(inner, origin);
1467            Self { inner }
1468        }
1469        pub fn with_interceptor<F>(
1470            inner: T,
1471            interceptor: F,
1472        ) -> KnowledgeBaseServiceClient<InterceptedService<T, F>>
1473        where
1474            F: tonic::service::Interceptor,
1475            T::ResponseBody: Default,
1476            T: tonic::codegen::Service<
1477                http::Request<tonic::body::Body>,
1478                Response = http::Response<
1479                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1480                >,
1481            >,
1482            <T as tonic::codegen::Service<
1483                http::Request<tonic::body::Body>,
1484            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1485        {
1486            KnowledgeBaseServiceClient::new(InterceptedService::new(inner, interceptor))
1487        }
1488        /// Compress requests with the given encoding.
1489        ///
1490        /// This requires the server to support it otherwise it might respond with an
1491        /// error.
1492        #[must_use]
1493        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1494            self.inner = self.inner.send_compressed(encoding);
1495            self
1496        }
1497        /// Enable decompressing responses.
1498        #[must_use]
1499        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1500            self.inner = self.inner.accept_compressed(encoding);
1501            self
1502        }
1503        /// Limits the maximum size of a decoded message.
1504        ///
1505        /// Default: `4MB`
1506        #[must_use]
1507        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1508            self.inner = self.inner.max_decoding_message_size(limit);
1509            self
1510        }
1511        /// Limits the maximum size of an encoded message.
1512        ///
1513        /// Default: `usize::MAX`
1514        #[must_use]
1515        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1516            self.inner = self.inner.max_encoding_message_size(limit);
1517            self
1518        }
1519        pub async fn create_or_update_knowledge_base(
1520            &mut self,
1521            request: impl tonic::IntoRequest<super::CreateOrUpdateKnowledgeBaseRequest>,
1522        ) -> std::result::Result<
1523            tonic::Response<super::CreateOrUpdateKnowledgeBaseResponse>,
1524            tonic::Status,
1525        > {
1526            self.inner
1527                .ready()
1528                .await
1529                .map_err(|e| {
1530                    tonic::Status::unknown(
1531                        format!("Service was not ready: {}", e.into()),
1532                    )
1533                })?;
1534            let codec = tonic::codec::ProstCodec::default();
1535            let path = http::uri::PathAndQuery::from_static(
1536                "/nominal.ai.v1.KnowledgeBaseService/CreateOrUpdateKnowledgeBase",
1537            );
1538            let mut req = request.into_request();
1539            req.extensions_mut()
1540                .insert(
1541                    GrpcMethod::new(
1542                        "nominal.ai.v1.KnowledgeBaseService",
1543                        "CreateOrUpdateKnowledgeBase",
1544                    ),
1545                );
1546            self.inner.unary(req, path, codec).await
1547        }
1548        pub async fn list(
1549            &mut self,
1550            request: impl tonic::IntoRequest<super::ListRequest>,
1551        ) -> std::result::Result<tonic::Response<super::ListResponse>, tonic::Status> {
1552            self.inner
1553                .ready()
1554                .await
1555                .map_err(|e| {
1556                    tonic::Status::unknown(
1557                        format!("Service was not ready: {}", e.into()),
1558                    )
1559                })?;
1560            let codec = tonic::codec::ProstCodec::default();
1561            let path = http::uri::PathAndQuery::from_static(
1562                "/nominal.ai.v1.KnowledgeBaseService/List",
1563            );
1564            let mut req = request.into_request();
1565            req.extensions_mut()
1566                .insert(GrpcMethod::new("nominal.ai.v1.KnowledgeBaseService", "List"));
1567            self.inner.unary(req, path, codec).await
1568        }
1569        pub async fn delete(
1570            &mut self,
1571            request: impl tonic::IntoRequest<super::DeleteRequest>,
1572        ) -> std::result::Result<tonic::Response<super::DeleteResponse>, tonic::Status> {
1573            self.inner
1574                .ready()
1575                .await
1576                .map_err(|e| {
1577                    tonic::Status::unknown(
1578                        format!("Service was not ready: {}", e.into()),
1579                    )
1580                })?;
1581            let codec = tonic::codec::ProstCodec::default();
1582            let path = http::uri::PathAndQuery::from_static(
1583                "/nominal.ai.v1.KnowledgeBaseService/Delete",
1584            );
1585            let mut req = request.into_request();
1586            req.extensions_mut()
1587                .insert(GrpcMethod::new("nominal.ai.v1.KnowledgeBaseService", "Delete"));
1588            self.inner.unary(req, path, codec).await
1589        }
1590        pub async fn get_batch(
1591            &mut self,
1592            request: impl tonic::IntoRequest<super::GetBatchRequest>,
1593        ) -> std::result::Result<
1594            tonic::Response<super::GetBatchResponse>,
1595            tonic::Status,
1596        > {
1597            self.inner
1598                .ready()
1599                .await
1600                .map_err(|e| {
1601                    tonic::Status::unknown(
1602                        format!("Service was not ready: {}", e.into()),
1603                    )
1604                })?;
1605            let codec = tonic::codec::ProstCodec::default();
1606            let path = http::uri::PathAndQuery::from_static(
1607                "/nominal.ai.v1.KnowledgeBaseService/GetBatch",
1608            );
1609            let mut req = request.into_request();
1610            req.extensions_mut()
1611                .insert(
1612                    GrpcMethod::new("nominal.ai.v1.KnowledgeBaseService", "GetBatch"),
1613                );
1614            self.inner.unary(req, path, codec).await
1615        }
1616        pub async fn generate_summary_description(
1617            &mut self,
1618            request: impl tonic::IntoRequest<super::GenerateSummaryDescriptionRequest>,
1619        ) -> std::result::Result<
1620            tonic::Response<super::GenerateSummaryDescriptionResponse>,
1621            tonic::Status,
1622        > {
1623            self.inner
1624                .ready()
1625                .await
1626                .map_err(|e| {
1627                    tonic::Status::unknown(
1628                        format!("Service was not ready: {}", e.into()),
1629                    )
1630                })?;
1631            let codec = tonic::codec::ProstCodec::default();
1632            let path = http::uri::PathAndQuery::from_static(
1633                "/nominal.ai.v1.KnowledgeBaseService/GenerateSummaryDescription",
1634            );
1635            let mut req = request.into_request();
1636            req.extensions_mut()
1637                .insert(
1638                    GrpcMethod::new(
1639                        "nominal.ai.v1.KnowledgeBaseService",
1640                        "GenerateSummaryDescription",
1641                    ),
1642                );
1643            self.inner.unary(req, path, codec).await
1644        }
1645    }
1646}
1647#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1648pub struct GetProviderStatusRequest {}
1649#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1650pub struct GetProviderStatusResponse {
1651    #[prost(message, optional, tag = "1")]
1652    pub timestamp: ::core::option::Option<
1653        super::super::super::google::protobuf::Timestamp,
1654    >,
1655    #[prost(message, optional, tag = "2")]
1656    pub last_status: ::core::option::Option<ProviderStatus>,
1657    #[deprecated]
1658    #[prost(message, optional, tag = "3")]
1659    pub aggregated_status_over_last_30m: ::core::option::Option<ProviderStatus>,
1660    #[prost(message, optional, tag = "4")]
1661    pub aggregated_status: ::core::option::Option<ProviderStatus>,
1662}
1663#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1664pub struct ProviderStatus {
1665    #[prost(oneof = "provider_status::Status", tags = "1, 2")]
1666    pub status: ::core::option::Option<provider_status::Status>,
1667}
1668/// Nested message and enum types in `ProviderStatus`.
1669pub mod provider_status {
1670    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1671    pub enum Status {
1672        #[prost(message, tag = "1")]
1673        Healthy(super::Healthy),
1674        #[prost(message, tag = "2")]
1675        Degraded(super::Degraded),
1676    }
1677}
1678#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1679pub struct Healthy {}
1680#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1681pub struct Degraded {
1682    #[prost(enumeration = "DegradationReason", tag = "1")]
1683    pub reason: i32,
1684}
1685#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1686pub struct ProviderMetrics {
1687    #[prost(int32, tag = "1")]
1688    pub time_to_first_token_ms: i32,
1689    #[prost(int32, tag = "2")]
1690    pub total_time_ms: i32,
1691}
1692#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1693#[repr(i32)]
1694pub enum DegradationReason {
1695    Unspecified = 0,
1696    HighLatency = 1,
1697    Failures = 2,
1698    HighLatencyAndFailures = 3,
1699    Unavailable = 4,
1700}
1701impl DegradationReason {
1702    /// String value of the enum field names used in the ProtoBuf definition.
1703    ///
1704    /// The values are not transformed in any way and thus are considered stable
1705    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1706    pub fn as_str_name(&self) -> &'static str {
1707        match self {
1708            Self::Unspecified => "DEGRADATION_REASON_UNSPECIFIED",
1709            Self::HighLatency => "DEGRADATION_REASON_HIGH_LATENCY",
1710            Self::Failures => "DEGRADATION_REASON_FAILURES",
1711            Self::HighLatencyAndFailures => {
1712                "DEGRADATION_REASON_HIGH_LATENCY_AND_FAILURES"
1713            }
1714            Self::Unavailable => "DEGRADATION_REASON_UNAVAILABLE",
1715        }
1716    }
1717    /// Creates an enum from field names used in the ProtoBuf definition.
1718    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1719        match value {
1720            "DEGRADATION_REASON_UNSPECIFIED" => Some(Self::Unspecified),
1721            "DEGRADATION_REASON_HIGH_LATENCY" => Some(Self::HighLatency),
1722            "DEGRADATION_REASON_FAILURES" => Some(Self::Failures),
1723            "DEGRADATION_REASON_HIGH_LATENCY_AND_FAILURES" => {
1724                Some(Self::HighLatencyAndFailures)
1725            }
1726            "DEGRADATION_REASON_UNAVAILABLE" => Some(Self::Unavailable),
1727            _ => None,
1728        }
1729    }
1730}
1731/// Generated client implementations.
1732pub mod model_provider_health_service_client {
1733    #![allow(
1734        unused_variables,
1735        dead_code,
1736        missing_docs,
1737        clippy::wildcard_imports,
1738        clippy::let_unit_value,
1739    )]
1740    use tonic::codegen::*;
1741    use tonic::codegen::http::Uri;
1742    #[derive(Debug, Clone)]
1743    pub struct ModelProviderHealthServiceClient<T> {
1744        inner: tonic::client::Grpc<T>,
1745    }
1746    impl ModelProviderHealthServiceClient<tonic::transport::Channel> {
1747        /// Attempt to create a new client by connecting to a given endpoint.
1748        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1749        where
1750            D: TryInto<tonic::transport::Endpoint>,
1751            D::Error: Into<StdError>,
1752        {
1753            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1754            Ok(Self::new(conn))
1755        }
1756    }
1757    impl<T> ModelProviderHealthServiceClient<T>
1758    where
1759        T: tonic::client::GrpcService<tonic::body::Body>,
1760        T::Error: Into<StdError>,
1761        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1762        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1763    {
1764        pub fn new(inner: T) -> Self {
1765            let inner = tonic::client::Grpc::new(inner);
1766            Self { inner }
1767        }
1768        pub fn with_origin(inner: T, origin: Uri) -> Self {
1769            let inner = tonic::client::Grpc::with_origin(inner, origin);
1770            Self { inner }
1771        }
1772        pub fn with_interceptor<F>(
1773            inner: T,
1774            interceptor: F,
1775        ) -> ModelProviderHealthServiceClient<InterceptedService<T, F>>
1776        where
1777            F: tonic::service::Interceptor,
1778            T::ResponseBody: Default,
1779            T: tonic::codegen::Service<
1780                http::Request<tonic::body::Body>,
1781                Response = http::Response<
1782                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1783                >,
1784            >,
1785            <T as tonic::codegen::Service<
1786                http::Request<tonic::body::Body>,
1787            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1788        {
1789            ModelProviderHealthServiceClient::new(
1790                InterceptedService::new(inner, interceptor),
1791            )
1792        }
1793        /// Compress requests with the given encoding.
1794        ///
1795        /// This requires the server to support it otherwise it might respond with an
1796        /// error.
1797        #[must_use]
1798        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1799            self.inner = self.inner.send_compressed(encoding);
1800            self
1801        }
1802        /// Enable decompressing responses.
1803        #[must_use]
1804        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1805            self.inner = self.inner.accept_compressed(encoding);
1806            self
1807        }
1808        /// Limits the maximum size of a decoded message.
1809        ///
1810        /// Default: `4MB`
1811        #[must_use]
1812        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1813            self.inner = self.inner.max_decoding_message_size(limit);
1814            self
1815        }
1816        /// Limits the maximum size of an encoded message.
1817        ///
1818        /// Default: `usize::MAX`
1819        #[must_use]
1820        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1821            self.inner = self.inner.max_encoding_message_size(limit);
1822            self
1823        }
1824        pub async fn get_provider_status(
1825            &mut self,
1826            request: impl tonic::IntoRequest<super::GetProviderStatusRequest>,
1827        ) -> std::result::Result<
1828            tonic::Response<super::GetProviderStatusResponse>,
1829            tonic::Status,
1830        > {
1831            self.inner
1832                .ready()
1833                .await
1834                .map_err(|e| {
1835                    tonic::Status::unknown(
1836                        format!("Service was not ready: {}", e.into()),
1837                    )
1838                })?;
1839            let codec = tonic::codec::ProstCodec::default();
1840            let path = http::uri::PathAndQuery::from_static(
1841                "/nominal.ai.v1.ModelProviderHealthService/GetProviderStatus",
1842            );
1843            let mut req = request.into_request();
1844            req.extensions_mut()
1845                .insert(
1846                    GrpcMethod::new(
1847                        "nominal.ai.v1.ModelProviderHealthService",
1848                        "GetProviderStatus",
1849                    ),
1850                );
1851            self.inner.unary(req, path, codec).await
1852        }
1853    }
1854}