Add delete_decision tool for removing redundant ADRs

This commit is contained in:
Riz Ashraf committed 2026-09-27 09:57:04 +01:00
1 parent 08e0cc390a
commit 70edfa4389
3 files changed
+39

No files matched your search

+31
View File
@@ -76,6 +76,37 @@ impl McpTool for QueryDecisionsHandler {
} }
} }
pub struct DeleteDecisionHandler;
#[async_trait]
impl McpTool for DeleteDecisionHandler {
fn name(&self) -> &'static str {
"delete_decision"
}
fn schema(&self) -> Value {
crate::mcp::tool_def::<crate::tools::DeleteDecisionTool>("delete_decision", "Delete an architectural decision record")
}
async fn execute(&self, args: Value, state: Arc<MemoryState>) -> Result<String, String> {
let req: crate::tools::DeleteDecisionTool = serde_json::from_value(args).map_err(|e| e.to_string())?;
let mut found = false;
state.adrs.modify(|adrs| {
if let Some(pos) = adrs.iter().position(|a| a.id == req.id) {
adrs.remove(pos);
found = true;
}
});
if found {
state.rebuild_index().await;
Ok("Decision deleted successfully".to_string())
} else {
Err("Decision not found".to_string())
}
}
}
pub struct LogErrorFixHandler; pub struct LogErrorFixHandler;
#[async_trait] #[async_trait]
+1
View File
@@ -69,6 +69,7 @@ impl MemoryHandler {
register!(meta::LogDecisionHandler); register!(meta::LogDecisionHandler);
register!(meta::QueryDecisionsHandler); register!(meta::QueryDecisionsHandler);
register!(meta::DeleteDecisionHandler);
register!(meta::LogErrorFixHandler); register!(meta::LogErrorFixHandler);
register!(meta::SearchErrorFixesHandler); register!(meta::SearchErrorFixesHandler);
register!(meta::LogCodeChangeHandler); register!(meta::LogCodeChangeHandler);
+7
View File
@@ -233,6 +233,13 @@ pub struct QueryDecisionsTool {
pub include_body: Option<bool>, pub include_body: Option<bool>,
} }
/// Delete an architectural decision record (ADR).
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
pub struct DeleteDecisionTool {
/// The ID of the decision to delete.
pub id: String,
}
/// Merge two entities in the knowledge graph into one. /// Merge two entities in the knowledge graph into one.
#[derive(Debug, Deserialize, Serialize, JsonSchema)] #[derive(Debug, Deserialize, Serialize, JsonSchema)]
pub struct MergeEntitiesTool { pub struct MergeEntitiesTool {