use crate::cm_tools::clarification_questionnaire::{
ClarificationQuestionnaireBody as ToolsBody, parse_present_clarification_body,
};
use crate::cm_sse_protocol::sse::{ClarificationQuestionField, ClarificationQuestionnaireBody};
fn to_sse_body(body: ToolsBody) -> ClarificationQuestionnaireBody {
ClarificationQuestionnaireBody {
questionnaire_id: body.questionnaire_id,
intro: body.intro,
questions: body
.questions
.into_iter()
.map(|q| ClarificationQuestionField {
id: q.id,
label: q.label,
hint: q.hint,
required: q.required,
kind: q.kind,
})
.collect(),
}
}
pub fn clarification_questionnaire_body_if_tool_ok(
tool_name: &str,
args_json: &str,
tool_output: &str,
) -> Option<ClarificationQuestionnaireBody> {
if tool_name != "present_clarification_questionnaire" {
return None;
}
if !tool_output.trim_start().starts_with("退出码:0") {
return None;
}
parse_present_clarification_body(args_json)
.ok()
.map(to_sse_body)
}