194c44c
use axum::extract::{Json, Path, State};
use export::rest::{AppResponseData, NoData};
use jwt::Session;
use jwt::share::session::require_uid;
use crate::errors::ApiError;
use crate::services::builder::{BuilderChatCmd, BuilderChatResult};
use crate::services::collections::AgentCollectionPath;
use crate::services::service::AgentsService;
#[utoipa::path(
post,
path = "/agents/{space_name}/collections/{collection_id}/builder",
tag = "agents",
description = "智能体构建器对话:结合构建对话返回回复与更新后的智能体草稿。",
params(AgentCollectionPath),
request_body = BuilderChatCmd,
responses(
(status = 200, description = "builder reply and draft", body = AppResponseData<BuilderChatResult>),
(status = 400, description = "bad request", body = AppResponseData<NoData>),
(status = 403, description = "forbidden", body = AppResponseData<NoData>),
(status = 503, description = "ai unavailable", body = AppResponseData<NoData>)
)
)]
pub async fn builder_chat(
State(service): State<AgentsService>,
session: Session,
Path(path): Path<AgentCollectionPath>,
Json(cmd): Json<BuilderChatCmd>,
) -> Result<AppResponseData<BuilderChatResult>, ApiError> {
let uid = require_uid(&session)?;
let result = service
.builder_chat(uid, &path.space_name, path.collection_id, cmd)
.await?;
Ok(AppResponseData::ok(result))
}