1#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct StreamChatRequest {
5 #[prost(message, repeated, tag = "1")]
6 pub messages: ::prost::alloc::vec::Vec<ModelMessage>,
7 #[prost(string, optional, tag = "2")]
9 pub notebook_as_json: ::core::option::Option<::prost::alloc::string::String>,
10 #[prost(int32, optional, tag = "3")]
12 pub selected_tab_index: ::core::option::Option<i32>,
13 #[prost(message, repeated, tag = "4")]
15 pub images: ::prost::alloc::vec::Vec<ImagePart>,
16 #[prost(message, optional, tag = "5")]
18 pub range: ::core::option::Option<TimeRange>,
19}
20#[derive(Clone, Copy, PartialEq, ::prost::Message)]
21pub struct TimeRange {
22 #[prost(message, optional, tag = "1")]
23 pub range_start: ::core::option::Option<Timestamp>,
24 #[prost(message, optional, tag = "2")]
25 pub range_end: ::core::option::Option<Timestamp>,
26}
27#[derive(Clone, Copy, PartialEq, ::prost::Message)]
28pub struct Timestamp {
29 #[prost(int32, tag = "1")]
30 pub seconds: i32,
31 #[prost(int32, tag = "2")]
32 pub nanoseconds: i32,
33}
34#[derive(Clone, PartialEq, ::prost::Message)]
37pub struct ModelMessage {
38 #[prost(oneof = "model_message::Kind", tags = "1, 2")]
39 pub kind: ::core::option::Option<model_message::Kind>,
40}
41pub mod model_message {
43 #[derive(Clone, PartialEq, ::prost::Oneof)]
44 pub enum Kind {
45 #[prost(message, tag = "1")]
46 User(super::UserModelMessage),
47 #[prost(message, tag = "2")]
48 Assistant(super::AssistantModelMessage),
49 }
50}
51#[derive(Clone, PartialEq, ::prost::Message)]
53pub struct UserModelMessage {
54 #[prost(message, repeated, tag = "1")]
55 pub text: ::prost::alloc::vec::Vec<UserContentPart>,
56}
57#[derive(Clone, PartialEq, ::prost::Message)]
59pub struct AssistantModelMessage {
60 #[prost(message, repeated, tag = "1")]
61 pub content_parts: ::prost::alloc::vec::Vec<AssistantContentPart>,
62}
63#[derive(Clone, PartialEq, ::prost::Message)]
64pub struct UserContentPart {
65 #[prost(oneof = "user_content_part::Part", tags = "1")]
66 pub part: ::core::option::Option<user_content_part::Part>,
67}
68pub mod user_content_part {
70 #[derive(Clone, PartialEq, ::prost::Oneof)]
71 pub enum Part {
72 #[prost(message, tag = "1")]
73 Text(super::TextPart),
74 }
75}
76#[derive(Clone, PartialEq, ::prost::Message)]
78pub struct AssistantContentPart {
79 #[prost(oneof = "assistant_content_part::Part", tags = "1, 2")]
80 pub part: ::core::option::Option<assistant_content_part::Part>,
81}
82pub mod assistant_content_part {
84 #[derive(Clone, PartialEq, ::prost::Oneof)]
85 pub enum Part {
86 #[prost(message, tag = "1")]
87 Text(super::TextPart),
88 #[prost(message, tag = "2")]
89 Reasoning(super::ReasoningPart),
90 }
91}
92#[derive(Clone, PartialEq, ::prost::Message)]
94pub struct TextPart {
95 #[prost(string, tag = "1")]
96 pub text: ::prost::alloc::string::String,
97}
98#[derive(Clone, PartialEq, ::prost::Message)]
100pub struct ImagePart {
101 #[prost(bytes = "vec", tag = "1")]
103 pub data: ::prost::alloc::vec::Vec<u8>,
104 #[prost(string, optional, tag = "2")]
106 pub media_type: ::core::option::Option<::prost::alloc::string::String>,
107 #[prost(string, optional, tag = "3")]
109 pub filename: ::core::option::Option<::prost::alloc::string::String>,
110}
111#[derive(Clone, PartialEq, ::prost::Message)]
113pub struct ReasoningPart {
114 #[prost(string, tag = "1")]
115 pub reasoning: ::prost::alloc::string::String,
116}
117#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct StreamChatResponse {
120 #[prost(
121 oneof = "stream_chat_response::Response",
122 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10"
123 )]
124 pub response: ::core::option::Option<stream_chat_response::Response>,
125}
126pub mod stream_chat_response {
128 #[derive(Clone, PartialEq, ::prost::Oneof)]
129 pub enum Response {
130 #[prost(message, tag = "1")]
131 Finish(super::Finish),
132 #[prost(message, tag = "2")]
133 Error(super::Error),
134 #[prost(message, tag = "3")]
135 TextStart(super::TextStart),
136 #[prost(message, tag = "4")]
137 TextDelta(super::TextDelta),
138 #[prost(message, tag = "5")]
139 TextEnd(super::TextEnd),
140 #[prost(message, tag = "6")]
141 ReasoningStart(super::ReasoningStart),
142 #[prost(message, tag = "7")]
143 ReasoningDelta(super::ReasoningDelta),
144 #[prost(message, tag = "8")]
145 ReasoningEnd(super::ReasoningEnd),
146 #[prost(message, tag = "9")]
147 WorkbookMutation(super::WorkbookMutation),
148 #[prost(message, tag = "10")]
149 ToolAction(super::ToolAction),
150 }
151}
152#[derive(Clone, Copy, PartialEq, ::prost::Message)]
154pub struct Finish {}
155#[derive(Clone, PartialEq, ::prost::Message)]
157pub struct Error {
158 #[prost(string, tag = "1")]
159 pub message: ::prost::alloc::string::String,
160}
161#[derive(Clone, PartialEq, ::prost::Message)]
163pub struct TextStart {
164 #[prost(string, tag = "1")]
167 pub id: ::prost::alloc::string::String,
168}
169#[derive(Clone, PartialEq, ::prost::Message)]
171pub struct TextDelta {
172 #[prost(string, tag = "1")]
173 pub id: ::prost::alloc::string::String,
174 #[prost(string, tag = "2")]
176 pub delta: ::prost::alloc::string::String,
177}
178#[derive(Clone, PartialEq, ::prost::Message)]
180pub struct TextEnd {
181 #[prost(string, tag = "1")]
182 pub id: ::prost::alloc::string::String,
183}
184#[derive(Clone, PartialEq, ::prost::Message)]
186pub struct ReasoningStart {
187 #[prost(string, tag = "1")]
188 pub id: ::prost::alloc::string::String,
189}
190#[derive(Clone, PartialEq, ::prost::Message)]
192pub struct ReasoningDelta {
193 #[prost(string, tag = "1")]
194 pub id: ::prost::alloc::string::String,
195 #[prost(string, tag = "2")]
197 pub delta: ::prost::alloc::string::String,
198}
199#[derive(Clone, PartialEq, ::prost::Message)]
201pub struct ReasoningEnd {
202 #[prost(string, tag = "1")]
203 pub id: ::prost::alloc::string::String,
204}
205#[derive(Clone, PartialEq, ::prost::Message)]
207pub struct AddTabMutation {
208 #[prost(string, optional, tag = "1")]
210 pub tab_name: ::core::option::Option<::prost::alloc::string::String>,
211}
212#[derive(Clone, PartialEq, ::prost::Message)]
214pub struct AddOrUpdatePanelMutation {
215 #[prost(string, tag = "1")]
217 pub panel_as_json: ::prost::alloc::string::String,
218 #[prost(string, tag = "2")]
219 pub panel_id: ::prost::alloc::string::String,
220 #[prost(int32, tag = "3")]
221 pub tab_index: i32,
222}
223#[derive(Clone, PartialEq, ::prost::Message)]
224pub struct RemovePanelsMutation {
225 #[prost(string, repeated, tag = "1")]
226 pub panel_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
227}
228#[derive(Clone, PartialEq, ::prost::Message)]
230pub struct AddOrReplaceVariableMutation {
231 #[prost(string, tag = "1")]
235 pub compute_spec_as_json: ::prost::alloc::string::String,
236 #[prost(string, optional, tag = "2")]
238 pub variable_name: ::core::option::Option<::prost::alloc::string::String>,
239 #[prost(string, optional, tag = "3")]
240 pub display_name: ::core::option::Option<::prost::alloc::string::String>,
241}
242#[derive(Clone, PartialEq, ::prost::Message)]
244pub struct DeleteVariablesMutation {
245 #[prost(string, repeated, tag = "1")]
246 pub variable_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
247}
248#[derive(Clone, PartialEq, ::prost::Message)]
250pub struct WorkbookMutation {
251 #[prost(string, tag = "1")]
252 pub id: ::prost::alloc::string::String,
253 #[prost(oneof = "workbook_mutation::Mutation", tags = "2, 3, 4, 5, 6")]
254 pub mutation: ::core::option::Option<workbook_mutation::Mutation>,
255}
256pub mod workbook_mutation {
258 #[derive(Clone, PartialEq, ::prost::Oneof)]
259 pub enum Mutation {
260 #[prost(message, tag = "2")]
261 AddTab(super::AddTabMutation),
262 #[prost(message, tag = "3")]
263 AddOrUpdatePanel(super::AddOrUpdatePanelMutation),
264 #[prost(message, tag = "4")]
265 RemovePanels(super::RemovePanelsMutation),
266 #[prost(message, tag = "5")]
267 AddOrReplaceVariable(super::AddOrReplaceVariableMutation),
268 #[prost(message, tag = "6")]
269 DeleteVariables(super::DeleteVariablesMutation),
270 }
271}
272#[derive(Clone, PartialEq, ::prost::Message)]
277pub struct ToolAction {
278 #[prost(string, tag = "1")]
279 pub id: ::prost::alloc::string::String,
280 #[prost(string, tag = "2")]
282 pub tool_action_verb: ::prost::alloc::string::String,
283 #[prost(string, optional, tag = "3")]
285 pub tool_target: ::core::option::Option<::prost::alloc::string::String>,
286}
287pub mod workbook_agent_service_client {
289 #![allow(
290 unused_variables,
291 dead_code,
292 missing_docs,
293 clippy::wildcard_imports,
294 clippy::let_unit_value,
295 )]
296 use tonic::codegen::*;
297 use tonic::codegen::http::Uri;
298 #[derive(Debug, Clone)]
300 pub struct WorkbookAgentServiceClient<T> {
301 inner: tonic::client::Grpc<T>,
302 }
303 impl WorkbookAgentServiceClient<tonic::transport::Channel> {
304 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
306 where
307 D: TryInto<tonic::transport::Endpoint>,
308 D::Error: Into<StdError>,
309 {
310 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
311 Ok(Self::new(conn))
312 }
313 }
314 impl<T> WorkbookAgentServiceClient<T>
315 where
316 T: tonic::client::GrpcService<tonic::body::Body>,
317 T::Error: Into<StdError>,
318 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
319 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
320 {
321 pub fn new(inner: T) -> Self {
322 let inner = tonic::client::Grpc::new(inner);
323 Self { inner }
324 }
325 pub fn with_origin(inner: T, origin: Uri) -> Self {
326 let inner = tonic::client::Grpc::with_origin(inner, origin);
327 Self { inner }
328 }
329 pub fn with_interceptor<F>(
330 inner: T,
331 interceptor: F,
332 ) -> WorkbookAgentServiceClient<InterceptedService<T, F>>
333 where
334 F: tonic::service::Interceptor,
335 T::ResponseBody: Default,
336 T: tonic::codegen::Service<
337 http::Request<tonic::body::Body>,
338 Response = http::Response<
339 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
340 >,
341 >,
342 <T as tonic::codegen::Service<
343 http::Request<tonic::body::Body>,
344 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
345 {
346 WorkbookAgentServiceClient::new(InterceptedService::new(inner, interceptor))
347 }
348 #[must_use]
353 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
354 self.inner = self.inner.send_compressed(encoding);
355 self
356 }
357 #[must_use]
359 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
360 self.inner = self.inner.accept_compressed(encoding);
361 self
362 }
363 #[must_use]
367 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
368 self.inner = self.inner.max_decoding_message_size(limit);
369 self
370 }
371 #[must_use]
375 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
376 self.inner = self.inner.max_encoding_message_size(limit);
377 self
378 }
379 pub async fn stream_chat(
381 &mut self,
382 request: impl tonic::IntoRequest<super::StreamChatRequest>,
383 ) -> std::result::Result<
384 tonic::Response<tonic::codec::Streaming<super::StreamChatResponse>>,
385 tonic::Status,
386 > {
387 self.inner
388 .ready()
389 .await
390 .map_err(|e| {
391 tonic::Status::unknown(
392 format!("Service was not ready: {}", e.into()),
393 )
394 })?;
395 let codec = tonic::codec::ProstCodec::default();
396 let path = http::uri::PathAndQuery::from_static(
397 "/nominal.ai.v1.WorkbookAgentService/StreamChat",
398 );
399 let mut req = request.into_request();
400 req.extensions_mut()
401 .insert(
402 GrpcMethod::new("nominal.ai.v1.WorkbookAgentService", "StreamChat"),
403 );
404 self.inner.server_streaming(req, path, codec).await
405 }
406 }
407}
408#[derive(Clone, PartialEq, ::prost::Message)]
411pub struct CreateOrUpdateKnowledgeBaseRequest {
412 #[prost(string, tag = "1")]
413 pub attachment_rid: ::prost::alloc::string::String,
414 #[prost(string, tag = "2")]
416 pub summary_description: ::prost::alloc::string::String,
417 #[prost(enumeration = "KnowledgeBaseType", tag = "3")]
418 pub r#type: i32,
419}
420#[derive(Clone, PartialEq, ::prost::Message)]
422pub struct CreateOrUpdateKnowledgeBaseResponse {
423 #[prost(string, tag = "1")]
424 pub knowledge_base_rid: ::prost::alloc::string::String,
425}
426#[derive(Clone, PartialEq, ::prost::Message)]
428pub struct KnowledgeBase {
429 #[prost(string, tag = "1")]
430 pub knowledge_base_rid: ::prost::alloc::string::String,
431 #[prost(string, tag = "2")]
432 pub attachment_rid: ::prost::alloc::string::String,
433 #[prost(string, tag = "3")]
434 pub workspace_rid: ::prost::alloc::string::String,
435 #[prost(string, tag = "4")]
436 pub summary_description: ::prost::alloc::string::String,
437 #[prost(enumeration = "KnowledgeBaseType", tag = "5")]
438 pub r#type: i32,
439 #[prost(int32, tag = "6")]
440 pub version: i32,
441}
442#[derive(Clone, PartialEq, ::prost::Message)]
443pub struct ListRequest {
444 #[prost(string, tag = "1")]
445 pub workspace_rid: ::prost::alloc::string::String,
446}
447#[derive(Clone, PartialEq, ::prost::Message)]
448pub struct ListResponse {
449 #[prost(message, repeated, tag = "1")]
450 pub knowledge_bases: ::prost::alloc::vec::Vec<KnowledgeBase>,
451}
452#[derive(Clone, PartialEq, ::prost::Message)]
453pub struct DeleteRequest {
454 #[prost(string, tag = "1")]
455 pub knowledge_base_rid: ::prost::alloc::string::String,
456}
457#[derive(Clone, Copy, PartialEq, ::prost::Message)]
458pub struct DeleteResponse {
459 #[prost(bool, tag = "1")]
460 pub success: bool,
461}
462#[derive(Clone, PartialEq, ::prost::Message)]
463pub struct GetBatchRequest {
464 #[prost(string, repeated, tag = "1")]
465 pub knowledge_base_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
466}
467#[derive(Clone, PartialEq, ::prost::Message)]
468pub struct GetBatchResponse {
469 #[prost(message, repeated, tag = "1")]
470 pub knowledge_bases: ::prost::alloc::vec::Vec<KnowledgeBase>,
471}
472#[derive(Clone, PartialEq, ::prost::Message)]
475pub struct GenerateSummaryDescriptionRequest {
476 #[prost(string, tag = "1")]
477 pub attachment_rid: ::prost::alloc::string::String,
478}
479#[derive(Clone, PartialEq, ::prost::Message)]
480pub struct GenerateSummaryDescriptionResponse {
481 #[prost(string, tag = "1")]
482 pub summary_description: ::prost::alloc::string::String,
483}
484#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
486#[repr(i32)]
487pub enum KnowledgeBaseType {
488 Unspecified = 0,
490 Prompt = 1,
492 Embedding = 2,
494}
495impl KnowledgeBaseType {
496 pub fn as_str_name(&self) -> &'static str {
501 match self {
502 Self::Unspecified => "KNOWLEDGE_BASE_TYPE_UNSPECIFIED",
503 Self::Prompt => "KNOWLEDGE_BASE_TYPE_PROMPT",
504 Self::Embedding => "KNOWLEDGE_BASE_TYPE_EMBEDDING",
505 }
506 }
507 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
509 match value {
510 "KNOWLEDGE_BASE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
511 "KNOWLEDGE_BASE_TYPE_PROMPT" => Some(Self::Prompt),
512 "KNOWLEDGE_BASE_TYPE_EMBEDDING" => Some(Self::Embedding),
513 _ => None,
514 }
515 }
516}
517pub mod knowledge_base_service_client {
519 #![allow(
520 unused_variables,
521 dead_code,
522 missing_docs,
523 clippy::wildcard_imports,
524 clippy::let_unit_value,
525 )]
526 use tonic::codegen::*;
527 use tonic::codegen::http::Uri;
528 #[derive(Debug, Clone)]
530 pub struct KnowledgeBaseServiceClient<T> {
531 inner: tonic::client::Grpc<T>,
532 }
533 impl KnowledgeBaseServiceClient<tonic::transport::Channel> {
534 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
536 where
537 D: TryInto<tonic::transport::Endpoint>,
538 D::Error: Into<StdError>,
539 {
540 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
541 Ok(Self::new(conn))
542 }
543 }
544 impl<T> KnowledgeBaseServiceClient<T>
545 where
546 T: tonic::client::GrpcService<tonic::body::Body>,
547 T::Error: Into<StdError>,
548 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
549 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
550 {
551 pub fn new(inner: T) -> Self {
552 let inner = tonic::client::Grpc::new(inner);
553 Self { inner }
554 }
555 pub fn with_origin(inner: T, origin: Uri) -> Self {
556 let inner = tonic::client::Grpc::with_origin(inner, origin);
557 Self { inner }
558 }
559 pub fn with_interceptor<F>(
560 inner: T,
561 interceptor: F,
562 ) -> KnowledgeBaseServiceClient<InterceptedService<T, F>>
563 where
564 F: tonic::service::Interceptor,
565 T::ResponseBody: Default,
566 T: tonic::codegen::Service<
567 http::Request<tonic::body::Body>,
568 Response = http::Response<
569 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
570 >,
571 >,
572 <T as tonic::codegen::Service<
573 http::Request<tonic::body::Body>,
574 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
575 {
576 KnowledgeBaseServiceClient::new(InterceptedService::new(inner, interceptor))
577 }
578 #[must_use]
583 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
584 self.inner = self.inner.send_compressed(encoding);
585 self
586 }
587 #[must_use]
589 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
590 self.inner = self.inner.accept_compressed(encoding);
591 self
592 }
593 #[must_use]
597 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
598 self.inner = self.inner.max_decoding_message_size(limit);
599 self
600 }
601 #[must_use]
605 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
606 self.inner = self.inner.max_encoding_message_size(limit);
607 self
608 }
609 pub async fn create_or_update_knowledge_base(
611 &mut self,
612 request: impl tonic::IntoRequest<super::CreateOrUpdateKnowledgeBaseRequest>,
613 ) -> std::result::Result<
614 tonic::Response<super::CreateOrUpdateKnowledgeBaseResponse>,
615 tonic::Status,
616 > {
617 self.inner
618 .ready()
619 .await
620 .map_err(|e| {
621 tonic::Status::unknown(
622 format!("Service was not ready: {}", e.into()),
623 )
624 })?;
625 let codec = tonic::codec::ProstCodec::default();
626 let path = http::uri::PathAndQuery::from_static(
627 "/nominal.ai.v1.KnowledgeBaseService/CreateOrUpdateKnowledgeBase",
628 );
629 let mut req = request.into_request();
630 req.extensions_mut()
631 .insert(
632 GrpcMethod::new(
633 "nominal.ai.v1.KnowledgeBaseService",
634 "CreateOrUpdateKnowledgeBase",
635 ),
636 );
637 self.inner.unary(req, path, codec).await
638 }
639 pub async fn list(
641 &mut self,
642 request: impl tonic::IntoRequest<super::ListRequest>,
643 ) -> std::result::Result<tonic::Response<super::ListResponse>, tonic::Status> {
644 self.inner
645 .ready()
646 .await
647 .map_err(|e| {
648 tonic::Status::unknown(
649 format!("Service was not ready: {}", e.into()),
650 )
651 })?;
652 let codec = tonic::codec::ProstCodec::default();
653 let path = http::uri::PathAndQuery::from_static(
654 "/nominal.ai.v1.KnowledgeBaseService/List",
655 );
656 let mut req = request.into_request();
657 req.extensions_mut()
658 .insert(GrpcMethod::new("nominal.ai.v1.KnowledgeBaseService", "List"));
659 self.inner.unary(req, path, codec).await
660 }
661 pub async fn delete(
663 &mut self,
664 request: impl tonic::IntoRequest<super::DeleteRequest>,
665 ) -> std::result::Result<tonic::Response<super::DeleteResponse>, tonic::Status> {
666 self.inner
667 .ready()
668 .await
669 .map_err(|e| {
670 tonic::Status::unknown(
671 format!("Service was not ready: {}", e.into()),
672 )
673 })?;
674 let codec = tonic::codec::ProstCodec::default();
675 let path = http::uri::PathAndQuery::from_static(
676 "/nominal.ai.v1.KnowledgeBaseService/Delete",
677 );
678 let mut req = request.into_request();
679 req.extensions_mut()
680 .insert(GrpcMethod::new("nominal.ai.v1.KnowledgeBaseService", "Delete"));
681 self.inner.unary(req, path, codec).await
682 }
683 pub async fn get_batch(
685 &mut self,
686 request: impl tonic::IntoRequest<super::GetBatchRequest>,
687 ) -> std::result::Result<
688 tonic::Response<super::GetBatchResponse>,
689 tonic::Status,
690 > {
691 self.inner
692 .ready()
693 .await
694 .map_err(|e| {
695 tonic::Status::unknown(
696 format!("Service was not ready: {}", e.into()),
697 )
698 })?;
699 let codec = tonic::codec::ProstCodec::default();
700 let path = http::uri::PathAndQuery::from_static(
701 "/nominal.ai.v1.KnowledgeBaseService/GetBatch",
702 );
703 let mut req = request.into_request();
704 req.extensions_mut()
705 .insert(
706 GrpcMethod::new("nominal.ai.v1.KnowledgeBaseService", "GetBatch"),
707 );
708 self.inner.unary(req, path, codec).await
709 }
710 pub async fn generate_summary_description(
712 &mut self,
713 request: impl tonic::IntoRequest<super::GenerateSummaryDescriptionRequest>,
714 ) -> std::result::Result<
715 tonic::Response<super::GenerateSummaryDescriptionResponse>,
716 tonic::Status,
717 > {
718 self.inner
719 .ready()
720 .await
721 .map_err(|e| {
722 tonic::Status::unknown(
723 format!("Service was not ready: {}", e.into()),
724 )
725 })?;
726 let codec = tonic::codec::ProstCodec::default();
727 let path = http::uri::PathAndQuery::from_static(
728 "/nominal.ai.v1.KnowledgeBaseService/GenerateSummaryDescription",
729 );
730 let mut req = request.into_request();
731 req.extensions_mut()
732 .insert(
733 GrpcMethod::new(
734 "nominal.ai.v1.KnowledgeBaseService",
735 "GenerateSummaryDescription",
736 ),
737 );
738 self.inner.unary(req, path, codec).await
739 }
740 }
741}