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