1use crate::cli::command::CommandRequest;
12
13pub mod attach;
14pub mod config;
15pub mod create;
16pub mod delete;
17pub mod detach;
18pub mod kill;
19pub mod list;
20pub mod spawn;
21
22#[derive(clap::Subcommand)]
23pub enum Command {
24 Attach(attach::Command),
26 Config {
28 #[command(subcommand)]
29 command: config::Command,
30 },
31 Create(create::Command),
33 Delete(delete::Command),
35 Detach(detach::Command),
37 Kill(kill::Command),
39 List(list::Command),
41 Spawn(spawn::Command),
43}
44
45#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)]
46#[serde(untagged)]
47#[schemars(rename = "cli.command.laboratories.Request")]
48pub enum Request {
49 #[schemars(title = "Attach")]
50 Attach(attach::Request),
51 #[schemars(title = "AttachRequestSchema")]
52 AttachRequestSchema(attach::request_schema::Request),
53 #[schemars(title = "AttachResponseSchema")]
54 AttachResponseSchema(attach::response_schema::Request),
55 #[schemars(title = "Config")]
56 Config(config::Request),
57 #[schemars(title = "Create")]
58 Create(create::Request),
59 #[schemars(title = "CreateRequestSchema")]
60 CreateRequestSchema(create::request_schema::Request),
61 #[schemars(title = "CreateResponseSchema")]
62 CreateResponseSchema(create::response_schema::Request),
63 #[schemars(title = "Delete")]
64 Delete(delete::Request),
65 #[schemars(title = "DeleteRequestSchema")]
66 DeleteRequestSchema(delete::request_schema::Request),
67 #[schemars(title = "DeleteResponseSchema")]
68 DeleteResponseSchema(delete::response_schema::Request),
69 #[schemars(title = "Detach")]
70 Detach(detach::Request),
71 #[schemars(title = "DetachRequestSchema")]
72 DetachRequestSchema(detach::request_schema::Request),
73 #[schemars(title = "DetachResponseSchema")]
74 DetachResponseSchema(detach::response_schema::Request),
75 #[schemars(title = "Kill")]
76 Kill(kill::Request),
77 #[schemars(title = "KillRequestSchema")]
78 KillRequestSchema(kill::request_schema::Request),
79 #[schemars(title = "KillResponseSchema")]
80 KillResponseSchema(kill::response_schema::Request),
81 #[schemars(title = "List")]
82 List(list::Request),
83 #[schemars(title = "ListRequestSchema")]
84 ListRequestSchema(list::request_schema::Request),
85 #[schemars(title = "ListResponseSchema")]
86 ListResponseSchema(list::response_schema::Request),
87 #[schemars(title = "Spawn")]
88 Spawn(spawn::Request),
89 #[schemars(title = "SpawnRequestSchema")]
90 SpawnRequestSchema(spawn::request_schema::Request),
91 #[schemars(title = "SpawnResponseSchema")]
92 SpawnResponseSchema(spawn::response_schema::Request),
93}
94
95#[objectiveai_sdk_macros::json_schema_ignore]
98#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)]
99#[schemars(rename = "cli.command.laboratories.ResponseItem")]
100#[serde(untagged)]
101pub enum ResponseItem {
102 #[schemars(title = "Attach")]
103 Attach(attach::Response),
104 #[schemars(title = "AttachRequestSchema")]
105 AttachRequestSchema(attach::request_schema::Response),
106 #[schemars(title = "AttachResponseSchema")]
107 AttachResponseSchema(attach::response_schema::Response),
108 #[schemars(title = "Config")]
109 Config(config::Response),
110 #[schemars(title = "Create")]
111 Create(create::Response),
112 #[schemars(title = "CreateRequestSchema")]
113 CreateRequestSchema(create::request_schema::Response),
114 #[schemars(title = "CreateResponseSchema")]
115 CreateResponseSchema(create::response_schema::Response),
116 #[schemars(title = "Delete")]
117 Delete(delete::Response),
118 #[schemars(title = "DeleteRequestSchema")]
119 DeleteRequestSchema(delete::request_schema::Response),
120 #[schemars(title = "DeleteResponseSchema")]
121 DeleteResponseSchema(delete::response_schema::Response),
122 #[schemars(title = "Detach")]
123 Detach(detach::Response),
124 #[schemars(title = "DetachRequestSchema")]
125 DetachRequestSchema(detach::request_schema::Response),
126 #[schemars(title = "DetachResponseSchema")]
127 DetachResponseSchema(detach::response_schema::Response),
128 #[schemars(title = "Kill")]
129 Kill(kill::Response),
130 #[schemars(title = "KillRequestSchema")]
131 KillRequestSchema(kill::request_schema::Response),
132 #[schemars(title = "KillResponseSchema")]
133 KillResponseSchema(kill::response_schema::Response),
134 #[schemars(title = "List")]
135 List(list::ResponseItem),
136 #[schemars(title = "ListRequestSchema")]
137 ListRequestSchema(list::request_schema::Response),
138 #[schemars(title = "ListResponseSchema")]
139 ListResponseSchema(list::response_schema::Response),
140 #[schemars(title = "Spawn")]
141 Spawn(spawn::Response),
142 #[schemars(title = "SpawnRequestSchema")]
143 SpawnRequestSchema(spawn::request_schema::Response),
144 #[schemars(title = "SpawnResponseSchema")]
145 SpawnResponseSchema(spawn::response_schema::Response),
146}
147
148#[cfg(feature = "mcp")]
149impl crate::cli::command::CommandResponse for ResponseItem {
150 fn into_mcp(self) -> crate::cli::command::McpResponseItem {
151 match self {
152 ResponseItem::Attach(v) => v.into_mcp(),
153 ResponseItem::AttachRequestSchema(v) => v.into_mcp(),
154 ResponseItem::AttachResponseSchema(v) => v.into_mcp(),
155 ResponseItem::Config(v) => v.into_mcp(),
156 ResponseItem::Create(v) => v.into_mcp(),
157 ResponseItem::CreateRequestSchema(v) => v.into_mcp(),
158 ResponseItem::CreateResponseSchema(v) => v.into_mcp(),
159 ResponseItem::Delete(v) => v.into_mcp(),
160 ResponseItem::DeleteRequestSchema(v) => v.into_mcp(),
161 ResponseItem::DeleteResponseSchema(v) => v.into_mcp(),
162 ResponseItem::Detach(v) => v.into_mcp(),
163 ResponseItem::DetachRequestSchema(v) => v.into_mcp(),
164 ResponseItem::DetachResponseSchema(v) => v.into_mcp(),
165 ResponseItem::Kill(v) => v.into_mcp(),
166 ResponseItem::KillRequestSchema(v) => v.into_mcp(),
167 ResponseItem::KillResponseSchema(v) => v.into_mcp(),
168 ResponseItem::List(v) => v.into_mcp(),
169 ResponseItem::ListRequestSchema(v) => v.into_mcp(),
170 ResponseItem::ListResponseSchema(v) => v.into_mcp(),
171 ResponseItem::Spawn(v) => v.into_mcp(),
172 ResponseItem::SpawnRequestSchema(v) => v.into_mcp(),
173 ResponseItem::SpawnResponseSchema(v) => v.into_mcp(),
174 }
175 }
176}
177
178impl TryFrom<Command> for Request {
179 type Error = crate::cli::command::FromArgsError;
180 fn try_from(command: Command) -> Result<Self, Self::Error> {
181 match command {
182 Command::Attach(cmd) => match cmd.schema {
183 None => Ok(Request::Attach(attach::Request::try_from(cmd.args)?)),
184 Some(attach::Schema::RequestSchema(args)) => Ok(Request::AttachRequestSchema(
185 attach::request_schema::Request::try_from(args)?,
186 )),
187 Some(attach::Schema::ResponseSchema(args)) => Ok(Request::AttachResponseSchema(
188 attach::response_schema::Request::try_from(args)?,
189 )),
190 },
191 Command::Config { command } => {
192 Ok(Request::Config(config::Request::try_from(command)?))
193 }
194 Command::Create(cmd) => match cmd.schema {
195 None => Ok(Request::Create(create::Request::try_from(cmd.args)?)),
196 Some(create::Schema::RequestSchema(args)) => Ok(Request::CreateRequestSchema(
197 create::request_schema::Request::try_from(args)?,
198 )),
199 Some(create::Schema::ResponseSchema(args)) => Ok(Request::CreateResponseSchema(
200 create::response_schema::Request::try_from(args)?,
201 )),
202 },
203 Command::Delete(cmd) => match cmd.schema {
204 None => Ok(Request::Delete(delete::Request::try_from(cmd.args)?)),
205 Some(delete::Schema::RequestSchema(args)) => Ok(Request::DeleteRequestSchema(
206 delete::request_schema::Request::try_from(args)?,
207 )),
208 Some(delete::Schema::ResponseSchema(args)) => Ok(Request::DeleteResponseSchema(
209 delete::response_schema::Request::try_from(args)?,
210 )),
211 },
212 Command::Detach(cmd) => match cmd.schema {
213 None => Ok(Request::Detach(detach::Request::try_from(cmd.args)?)),
214 Some(detach::Schema::RequestSchema(args)) => Ok(Request::DetachRequestSchema(
215 detach::request_schema::Request::try_from(args)?,
216 )),
217 Some(detach::Schema::ResponseSchema(args)) => Ok(Request::DetachResponseSchema(
218 detach::response_schema::Request::try_from(args)?,
219 )),
220 },
221 Command::Kill(cmd) => match cmd.schema {
222 None => Ok(Request::Kill(kill::Request::try_from(cmd.args)?)),
223 Some(kill::Schema::RequestSchema(args)) => Ok(Request::KillRequestSchema(
224 kill::request_schema::Request::try_from(args)?,
225 )),
226 Some(kill::Schema::ResponseSchema(args)) => Ok(Request::KillResponseSchema(
227 kill::response_schema::Request::try_from(args)?,
228 )),
229 },
230 Command::Spawn(cmd) => match cmd.schema {
231 None => Ok(Request::Spawn(spawn::Request::try_from(cmd.args)?)),
232 Some(spawn::Schema::RequestSchema(args)) => Ok(Request::SpawnRequestSchema(
233 spawn::request_schema::Request::try_from(args)?,
234 )),
235 Some(spawn::Schema::ResponseSchema(args)) => Ok(Request::SpawnResponseSchema(
236 spawn::response_schema::Request::try_from(args)?,
237 )),
238 },
239 Command::List(cmd) => match cmd.schema {
240 None => Ok(Request::List(list::Request::try_from(cmd.args)?)),
241 Some(list::Schema::RequestSchema(args)) => Ok(Request::ListRequestSchema(
242 list::request_schema::Request::try_from(args)?,
243 )),
244 Some(list::Schema::ResponseSchema(args)) => Ok(Request::ListResponseSchema(
245 list::response_schema::Request::try_from(args)?,
246 )),
247 },
248 }
249 }
250}
251
252impl CommandRequest for Request {
253 fn request_base(&self) -> &crate::cli::command::RequestBase {
254 match self {
255 Request::Attach(inner) => inner.request_base(),
256 Request::AttachRequestSchema(inner) => inner.request_base(),
257 Request::AttachResponseSchema(inner) => inner.request_base(),
258 Request::Config(inner) => inner.request_base(),
259 Request::Kill(inner) => inner.request_base(),
260 Request::KillRequestSchema(inner) => inner.request_base(),
261 Request::KillResponseSchema(inner) => inner.request_base(),
262 Request::Spawn(inner) => inner.request_base(),
263 Request::SpawnRequestSchema(inner) => inner.request_base(),
264 Request::SpawnResponseSchema(inner) => inner.request_base(),
265 Request::Create(inner) => inner.request_base(),
266 Request::CreateRequestSchema(inner) => inner.request_base(),
267 Request::CreateResponseSchema(inner) => inner.request_base(),
268 Request::Delete(inner) => inner.request_base(),
269 Request::DeleteRequestSchema(inner) => inner.request_base(),
270 Request::DeleteResponseSchema(inner) => inner.request_base(),
271 Request::Detach(inner) => inner.request_base(),
272 Request::DetachRequestSchema(inner) => inner.request_base(),
273 Request::DetachResponseSchema(inner) => inner.request_base(),
274 Request::List(inner) => inner.request_base(),
275 Request::ListRequestSchema(inner) => inner.request_base(),
276 Request::ListResponseSchema(inner) => inner.request_base(),
277 }
278 }
279
280 fn request_base_mut(&mut self) -> Option<&mut crate::cli::command::RequestBase> {
281 match self {
282 Request::Attach(inner) => inner.request_base_mut(),
283 Request::AttachRequestSchema(inner) => inner.request_base_mut(),
284 Request::AttachResponseSchema(inner) => inner.request_base_mut(),
285 Request::Config(inner) => inner.request_base_mut(),
286 Request::Kill(inner) => inner.request_base_mut(),
287 Request::KillRequestSchema(inner) => inner.request_base_mut(),
288 Request::KillResponseSchema(inner) => inner.request_base_mut(),
289 Request::Spawn(inner) => inner.request_base_mut(),
290 Request::SpawnRequestSchema(inner) => inner.request_base_mut(),
291 Request::SpawnResponseSchema(inner) => inner.request_base_mut(),
292 Request::Create(inner) => inner.request_base_mut(),
293 Request::CreateRequestSchema(inner) => inner.request_base_mut(),
294 Request::CreateResponseSchema(inner) => inner.request_base_mut(),
295 Request::Delete(inner) => inner.request_base_mut(),
296 Request::DeleteRequestSchema(inner) => inner.request_base_mut(),
297 Request::DeleteResponseSchema(inner) => inner.request_base_mut(),
298 Request::Detach(inner) => inner.request_base_mut(),
299 Request::DetachRequestSchema(inner) => inner.request_base_mut(),
300 Request::DetachResponseSchema(inner) => inner.request_base_mut(),
301 Request::List(inner) => inner.request_base_mut(),
302 Request::ListRequestSchema(inner) => inner.request_base_mut(),
303 Request::ListResponseSchema(inner) => inner.request_base_mut(),
304 }
305 }
306}
307
308#[cfg(feature = "cli-executor")]
309pub async fn execute<E: crate::cli::command::CommandExecutor>(
310 executor: &E,
311 request: Request,
312 agent_arguments: Option<&crate::cli::command::AgentArguments>,
313) -> Result<
314 std::pin::Pin<Box<dyn futures::Stream<Item = Result<ResponseItem, E::Error>> + Send>>,
315 E::Error,
316> {
317 use futures::StreamExt as _;
318 let stream: std::pin::Pin<
319 Box<dyn futures::Stream<Item = Result<ResponseItem, E::Error>> + Send>,
320 > = match request {
321 Request::Attach(req) => {
322 let value = attach::execute(executor, req, agent_arguments).await?;
323 Box::pin(crate::cli::command::StreamOnce::new(Ok(
324 ResponseItem::Attach(value),
325 )))
326 }
327 Request::AttachRequestSchema(req) => {
328 let value = attach::request_schema::execute(executor, req, agent_arguments).await?;
329 Box::pin(crate::cli::command::StreamOnce::new(Ok(
330 ResponseItem::AttachRequestSchema(value),
331 )))
332 }
333 Request::AttachResponseSchema(req) => {
334 let value = attach::response_schema::execute(executor, req, agent_arguments).await?;
335 Box::pin(crate::cli::command::StreamOnce::new(Ok(
336 ResponseItem::AttachResponseSchema(value),
337 )))
338 }
339 Request::Config(req) => {
340 let inner = config::execute(executor, req, agent_arguments).await?;
341 Box::pin(inner.map(|r| r.map(ResponseItem::Config)))
342 }
343 Request::Kill(req) => {
344 let value = kill::execute(executor, req, agent_arguments).await?;
345 Box::pin(crate::cli::command::StreamOnce::new(Ok(
346 ResponseItem::Kill(value),
347 )))
348 }
349 Request::KillRequestSchema(req) => {
350 let value = kill::request_schema::execute(executor, req, agent_arguments).await?;
351 Box::pin(crate::cli::command::StreamOnce::new(Ok(
352 ResponseItem::KillRequestSchema(value),
353 )))
354 }
355 Request::KillResponseSchema(req) => {
356 let value = kill::response_schema::execute(executor, req, agent_arguments).await?;
357 Box::pin(crate::cli::command::StreamOnce::new(Ok(
358 ResponseItem::KillResponseSchema(value),
359 )))
360 }
361 Request::Spawn(req) => {
362 let value = spawn::execute(executor, req, agent_arguments).await?;
363 Box::pin(crate::cli::command::StreamOnce::new(Ok(
364 ResponseItem::Spawn(value),
365 )))
366 }
367 Request::SpawnRequestSchema(req) => {
368 let value = spawn::request_schema::execute(executor, req, agent_arguments).await?;
369 Box::pin(crate::cli::command::StreamOnce::new(Ok(
370 ResponseItem::SpawnRequestSchema(value),
371 )))
372 }
373 Request::SpawnResponseSchema(req) => {
374 let value = spawn::response_schema::execute(executor, req, agent_arguments).await?;
375 Box::pin(crate::cli::command::StreamOnce::new(Ok(
376 ResponseItem::SpawnResponseSchema(value),
377 )))
378 }
379 Request::Create(req) => {
380 let value = create::execute(executor, req, agent_arguments).await?;
381 Box::pin(crate::cli::command::StreamOnce::new(Ok(
382 ResponseItem::Create(value),
383 )))
384 }
385 Request::CreateRequestSchema(req) => {
386 let value = create::request_schema::execute(executor, req, agent_arguments).await?;
387 Box::pin(crate::cli::command::StreamOnce::new(Ok(
388 ResponseItem::CreateRequestSchema(value),
389 )))
390 }
391 Request::CreateResponseSchema(req) => {
392 let value = create::response_schema::execute(executor, req, agent_arguments).await?;
393 Box::pin(crate::cli::command::StreamOnce::new(Ok(
394 ResponseItem::CreateResponseSchema(value),
395 )))
396 }
397 Request::Delete(req) => {
398 let value = delete::execute(executor, req, agent_arguments).await?;
399 Box::pin(crate::cli::command::StreamOnce::new(Ok(
400 ResponseItem::Delete(value),
401 )))
402 }
403 Request::DeleteRequestSchema(req) => {
404 let value = delete::request_schema::execute(executor, req, agent_arguments).await?;
405 Box::pin(crate::cli::command::StreamOnce::new(Ok(
406 ResponseItem::DeleteRequestSchema(value),
407 )))
408 }
409 Request::DeleteResponseSchema(req) => {
410 let value = delete::response_schema::execute(executor, req, agent_arguments).await?;
411 Box::pin(crate::cli::command::StreamOnce::new(Ok(
412 ResponseItem::DeleteResponseSchema(value),
413 )))
414 }
415 Request::Detach(req) => {
416 let value = detach::execute(executor, req, agent_arguments).await?;
417 Box::pin(crate::cli::command::StreamOnce::new(Ok(
418 ResponseItem::Detach(value),
419 )))
420 }
421 Request::DetachRequestSchema(req) => {
422 let value = detach::request_schema::execute(executor, req, agent_arguments).await?;
423 Box::pin(crate::cli::command::StreamOnce::new(Ok(
424 ResponseItem::DetachRequestSchema(value),
425 )))
426 }
427 Request::DetachResponseSchema(req) => {
428 let value = detach::response_schema::execute(executor, req, agent_arguments).await?;
429 Box::pin(crate::cli::command::StreamOnce::new(Ok(
430 ResponseItem::DetachResponseSchema(value),
431 )))
432 }
433 Request::List(req) => {
434 let inner = list::execute(executor, req, agent_arguments).await?;
435 Box::pin(inner.map(|r| r.map(ResponseItem::List)))
436 }
437 Request::ListRequestSchema(req) => {
438 let value = list::request_schema::execute(executor, req, agent_arguments).await?;
439 Box::pin(crate::cli::command::StreamOnce::new(Ok(
440 ResponseItem::ListRequestSchema(value),
441 )))
442 }
443 Request::ListResponseSchema(req) => {
444 let value = list::response_schema::execute(executor, req, agent_arguments).await?;
445 Box::pin(crate::cli::command::StreamOnce::new(Ok(
446 ResponseItem::ListResponseSchema(value),
447 )))
448 }
449 };
450 Ok(stream)
451}
452
453#[cfg(feature = "cli-executor")]
454pub async fn execute_transform<E: crate::cli::command::CommandExecutor>(
455 executor: &E,
456 request: Request,
457 transform: crate::cli::command::Transform,
458 agent_arguments: Option<&crate::cli::command::AgentArguments>,
459) -> Result<
460 std::pin::Pin<Box<dyn futures::Stream<Item = Result<serde_json::Value, E::Error>> + Send>>,
461 E::Error,
462> {
463 let stream: std::pin::Pin<
464 Box<dyn futures::Stream<Item = Result<serde_json::Value, E::Error>> + Send>,
465 > = match request {
466 Request::Attach(req) => {
467 let value = attach::execute_transform(executor, req, transform, agent_arguments).await?;
468 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
469 }
470 Request::AttachRequestSchema(req) => {
471 let value = attach::request_schema::execute_transform(
472 executor,
473 req,
474 transform,
475 agent_arguments,
476 )
477 .await?;
478 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
479 }
480 Request::AttachResponseSchema(req) => {
481 let value = attach::response_schema::execute_transform(
482 executor,
483 req,
484 transform,
485 agent_arguments,
486 )
487 .await?;
488 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
489 }
490 Request::Config(req) => {
491 let inner = config::execute_transform(executor, req, transform, agent_arguments).await?;
492 Box::pin(inner)
493 }
494 Request::Kill(req) => {
495 let value = kill::execute_transform(executor, req, transform, agent_arguments).await?;
496 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
497 }
498 Request::KillRequestSchema(req) => {
499 let value = kill::request_schema::execute_transform(
500 executor,
501 req,
502 transform,
503 agent_arguments,
504 )
505 .await?;
506 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
507 }
508 Request::KillResponseSchema(req) => {
509 let value = kill::response_schema::execute_transform(
510 executor,
511 req,
512 transform,
513 agent_arguments,
514 )
515 .await?;
516 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
517 }
518 Request::Spawn(req) => {
519 let value = spawn::execute_transform(executor, req, transform, agent_arguments).await?;
520 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
521 }
522 Request::SpawnRequestSchema(req) => {
523 let value = spawn::request_schema::execute_transform(
524 executor,
525 req,
526 transform,
527 agent_arguments,
528 )
529 .await?;
530 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
531 }
532 Request::SpawnResponseSchema(req) => {
533 let value = spawn::response_schema::execute_transform(
534 executor,
535 req,
536 transform,
537 agent_arguments,
538 )
539 .await?;
540 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
541 }
542 Request::Create(req) => {
543 let value = create::execute_transform(executor, req, transform, agent_arguments).await?;
544 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
545 }
546 Request::CreateRequestSchema(req) => {
547 let value = create::request_schema::execute_transform(
548 executor,
549 req,
550 transform,
551 agent_arguments,
552 )
553 .await?;
554 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
555 }
556 Request::CreateResponseSchema(req) => {
557 let value = create::response_schema::execute_transform(
558 executor,
559 req,
560 transform,
561 agent_arguments,
562 )
563 .await?;
564 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
565 }
566 Request::Delete(req) => {
567 let value = delete::execute_transform(executor, req, transform, agent_arguments).await?;
568 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
569 }
570 Request::DeleteRequestSchema(req) => {
571 let value = delete::request_schema::execute_transform(
572 executor,
573 req,
574 transform,
575 agent_arguments,
576 )
577 .await?;
578 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
579 }
580 Request::DeleteResponseSchema(req) => {
581 let value = delete::response_schema::execute_transform(
582 executor,
583 req,
584 transform,
585 agent_arguments,
586 )
587 .await?;
588 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
589 }
590 Request::Detach(req) => {
591 let value = detach::execute_transform(executor, req, transform, agent_arguments).await?;
592 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
593 }
594 Request::DetachRequestSchema(req) => {
595 let value = detach::request_schema::execute_transform(
596 executor,
597 req,
598 transform,
599 agent_arguments,
600 )
601 .await?;
602 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
603 }
604 Request::DetachResponseSchema(req) => {
605 let value = detach::response_schema::execute_transform(
606 executor,
607 req,
608 transform,
609 agent_arguments,
610 )
611 .await?;
612 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
613 }
614 Request::List(req) => {
615 let inner = list::execute_transform(executor, req, transform, agent_arguments).await?;
616 Box::pin(inner)
617 }
618 Request::ListRequestSchema(req) => {
619 let value = list::request_schema::execute_transform(
620 executor,
621 req,
622 transform,
623 agent_arguments,
624 )
625 .await?;
626 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
627 }
628 Request::ListResponseSchema(req) => {
629 let value = list::response_schema::execute_transform(
630 executor,
631 req,
632 transform,
633 agent_arguments,
634 )
635 .await?;
636 Box::pin(crate::cli::command::StreamOnce::new(Ok(value)))
637 }
638 };
639 Ok(stream)
640}
641
642#[cfg(feature = "cli-listener")]
645pub enum ListenerExecution {
646 Attach(attach::ListenerExecution),
647 AttachRequestSchema(attach::request_schema::ListenerExecution),
648 AttachResponseSchema(attach::response_schema::ListenerExecution),
649 Config(config::ListenerExecution),
650 Kill(kill::ListenerExecution),
651 KillRequestSchema(kill::request_schema::ListenerExecution),
652 KillResponseSchema(kill::response_schema::ListenerExecution),
653 Spawn(spawn::ListenerExecution),
654 SpawnRequestSchema(spawn::request_schema::ListenerExecution),
655 SpawnResponseSchema(spawn::response_schema::ListenerExecution),
656 Create(create::ListenerExecution),
657 CreateRequestSchema(create::request_schema::ListenerExecution),
658 CreateResponseSchema(create::response_schema::ListenerExecution),
659 Delete(delete::ListenerExecution),
660 DeleteRequestSchema(delete::request_schema::ListenerExecution),
661 DeleteResponseSchema(delete::response_schema::ListenerExecution),
662 Detach(detach::ListenerExecution),
663 DetachRequestSchema(detach::request_schema::ListenerExecution),
664 DetachResponseSchema(detach::response_schema::ListenerExecution),
665 List(list::ListenerExecution),
666 ListRequestSchema(list::request_schema::ListenerExecution),
667 ListResponseSchema(list::response_schema::ListenerExecution),
668}