feat(backend): MCP d'édition de templates (#81)
Ajoute le MCP dédié à l'édition de templates : catalogue et classification des templates (mcp/templates.rs infrastructure + app-tauri), use cases et provider (application/template), enforcement de la policy des tools (mod.rs, server.rs, tools.rs), avec la parité côté chemin OpenAI-compatible (openai_tools.rs x2). Lots B1 (catalogue/classification), B2 (use cases/provider) et B3 (enforcement policy) livrés en un seul commit cohérent. QA vert (seul l'échec de bind loopback #80, connu et non-régression, écarté). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@ -134,9 +134,47 @@ impl UpdateTemplate {
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// ListTemplates / DeleteTemplate
|
||||
// ReadTemplate / ListTemplates / DeleteTemplate
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/// Input for [`ReadTemplate::execute`].
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct ReadTemplateInput {
|
||||
/// Template to read.
|
||||
pub template_id: TemplateId,
|
||||
}
|
||||
|
||||
/// Output of [`ReadTemplate::execute`].
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct ReadTemplateOutput {
|
||||
/// The requested template.
|
||||
pub template: AgentTemplate,
|
||||
}
|
||||
|
||||
/// Reads one template from the global store.
|
||||
pub struct ReadTemplate {
|
||||
templates: Arc<dyn TemplateStore>,
|
||||
}
|
||||
|
||||
impl ReadTemplate {
|
||||
/// Builds the use case.
|
||||
#[must_use]
|
||||
pub fn new(templates: Arc<dyn TemplateStore>) -> Self {
|
||||
Self { templates }
|
||||
}
|
||||
|
||||
/// Reads one template.
|
||||
///
|
||||
/// # Errors
|
||||
/// - [`AppError::NotFound`] if the template is unknown,
|
||||
/// - [`AppError::Store`] on persistence failure.
|
||||
pub async fn execute(&self, input: ReadTemplateInput) -> Result<ReadTemplateOutput, AppError> {
|
||||
Ok(ReadTemplateOutput {
|
||||
template: self.templates.get(input.template_id).await?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/// Output of [`ListTemplates::execute`].
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct ListTemplatesOutput {
|
||||
|
||||
Reference in New Issue
Block a user