objectiveai_cli/command/agents/instances/
get.rs1use std::collections::BTreeMap;
7use std::pin::Pin;
8
9use futures::Stream;
10use objectiveai_sdk::cli::command::agents::instances::get::{Request, ResponseItem};
11
12use crate::context::Context;
13use crate::error::Error;
14
15type ItemStream = Pin<Box<dyn Stream<Item = Result<ResponseItem, Error>> + Send>>;
16
17pub async fn execute(ctx: &Context, request: Request) -> Result<ItemStream, Error> {
18 let default_parent = ctx.config.agent_instance_hierarchy.clone();
19
20 let mut aihs: Vec<String> = Vec::new();
23 for target in request.targets {
24 if let Some(aih) = super::resolve_target(ctx.db_client().await?, target, &default_parent).await? {
25 if !aihs.contains(&aih) {
26 aihs.push(aih);
27 }
28 }
29 }
30
31 let mut merged: BTreeMap<String, ResponseItem> = BTreeMap::new();
34 for aih in aihs {
35 let item = crate::db::instances::get_exact(ctx.db_client().await?, &aih).await?;
36 merged.insert(item.agent_instance_hierarchy.clone(), item);
37 }
38
39 let items: Vec<Result<ResponseItem, Error>> =
40 merged.into_values().map(Ok).collect();
41 Ok(Box::pin(futures::stream::iter(items)))
42}
43
44pub mod request_schema {
45 use objectiveai_sdk::cli::command::agents::instances::get as sdk;
46 use objectiveai_sdk::cli::command::agents::instances::get::request_schema::{Request, Response};
47
48 use crate::context::Context;
49 use crate::error::Error;
50
51 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
52 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::Request)))
53 }
54}
55
56pub mod response_schema {
57 use objectiveai_sdk::cli::command::agents::instances::get as sdk;
58 use objectiveai_sdk::cli::command::agents::instances::get::response_schema::{Request, Response};
59
60 use crate::context::Context;
61 use crate::error::Error;
62
63 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
64 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::ResponseItem)))
65 }
66}