objectiveai_cli/command/agents/
publish.rs1use objectiveai_sdk::agent::RemoteAgentBaseWithFallbacks;
9use objectiveai_sdk::cli::command::agents::publish::{
10 Request, RequestBody, RequestPublishMessage, Response,
11};
12
13use crate::context::Context;
14use crate::error::Error;
15
16pub async fn execute(ctx: &Context, request: Request) -> Result<Response, Error> {
17 let body = resolve_body(ctx, request.body).await?;
18 let message = resolve_publish_message(request.message)?;
19 let sha = crate::filesystem::publish::publish_agent(
20 &ctx.filesystem,
21 &request.repository,
22 &body,
23 &message,
24 request.overwrite,
25 )
26 .await?;
27 Ok(Response { sha })
28}
29
30async fn resolve_body(
31 ctx: &Context,
32 body: RequestBody,
33) -> Result<RemoteAgentBaseWithFallbacks, Error> {
34 match body {
35 RequestBody::Inline(v) => Ok(v),
36 RequestBody::File(p) => crate::source_resolver::resolve_source(
37 ctx, None, None, Some(p), None, None,
38 |_| unreachable!(),
39 ).await,
40 RequestBody::PythonInline(s) => crate::source_resolver::resolve_source(
41 ctx, None, None, None, Some(s), None,
42 |_| unreachable!(),
43 ).await,
44 RequestBody::PythonFile(p) => crate::source_resolver::resolve_source(
45 ctx, None, None, None, None, Some(p),
46 |_| unreachable!(),
47 ).await,
48 }
49}
50
51fn resolve_publish_message(m: RequestPublishMessage) -> Result<String, Error> {
52 match m {
53 RequestPublishMessage::Inline(s) => Ok(s),
54 RequestPublishMessage::File(p) => std::fs::read_to_string(&p)
55 .map_err(|e| Error::PromptFileRead(p, e)),
56 }
57}
58
59pub mod request_schema {
60 use objectiveai_sdk::cli::command::agents::publish as sdk;
61 use objectiveai_sdk::cli::command::agents::publish::request_schema::{Request, Response};
62
63 use crate::context::Context;
64 use crate::error::Error;
65
66 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
67 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::Request)))
68 }
69}
70
71pub mod response_schema {
72 use objectiveai_sdk::cli::command::agents::publish as sdk;
73 use objectiveai_sdk::cli::command::agents::publish::response_schema::{Request, Response};
74
75 use crate::context::Context;
76 use crate::error::Error;
77
78 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
79 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::Response)))
80 }
81}