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, 12")]
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 #[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}
172pub 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}
191pub 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}
278pub 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}
386pub 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}
411pub 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}
426pub 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}
461pub 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}
580pub 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}
605pub 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}
620pub 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}
635pub 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 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 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 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 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 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 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}
769pub 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 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 #[must_use]
834 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
835 self.inner = self.inner.send_compressed(encoding);
836 self
837 }
838 #[must_use]
840 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
841 self.inner = self.inner.accept_compressed(encoding);
842 self
843 }
844 #[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 #[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 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 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}
1206pub 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 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 #[must_use]
1273 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1274 self.inner = self.inner.send_compressed(encoding);
1275 self
1276 }
1277 #[must_use]
1279 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1280 self.inner = self.inner.accept_compressed(encoding);
1281 self
1282 }
1283 #[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 #[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 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 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}
1428pub 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 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 #[must_use]
1493 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1494 self.inner = self.inner.send_compressed(encoding);
1495 self
1496 }
1497 #[must_use]
1499 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1500 self.inner = self.inner.accept_compressed(encoding);
1501 self
1502 }
1503 #[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 #[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}
1668pub 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 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 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}
1731pub 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 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 #[must_use]
1798 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1799 self.inner = self.inner.send_compressed(encoding);
1800 self
1801 }
1802 #[must_use]
1804 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1805 self.inner = self.inner.accept_compressed(encoding);
1806 self
1807 }
1808 #[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 #[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}