objectiveai_cli/command/plugins/
list.rs1use std::pin::Pin;
4
5use futures::Stream;
6use objectiveai_sdk::cli::command::plugins::list::{Request, ResponseItem};
7
8use crate::context::Context;
9use crate::error::Error;
10
11type ItemStream = Pin<Box<dyn Stream<Item = Result<ResponseItem, Error>> + Send>>;
12
13pub async fn execute(ctx: &Context, request: Request) -> Result<ItemStream, Error> {
14 let offset = request.offset.unwrap_or(0);
15 let limit = request.limit.unwrap_or(usize::MAX);
16 let fs = ctx.filesystem.clone();
17 let stream = async_stream::stream! {
18 let manifests = fs.list_plugins(offset, limit).await;
19 for m in manifests {
20 yield Ok(ResponseItem::from(m));
21 }
22 };
23 Ok(Box::pin(stream))
24}
25
26pub mod request_schema {
27 use objectiveai_sdk::cli::command::plugins::list as sdk;
28 use objectiveai_sdk::cli::command::plugins::list::request_schema::{Request, Response};
29
30 use crate::context::Context;
31 use crate::error::Error;
32
33 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
34 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::Request)))
35 }
36}
37
38pub mod response_schema {
39 use objectiveai_sdk::cli::command::plugins::list as sdk;
40 use objectiveai_sdk::cli::command::plugins::list::response_schema::{Request, Response};
41
42 use crate::context::Context;
43 use crate::error::Error;
44
45 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
46 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::ResponseItem)))
47 }
48}