Add delete_decision tool for removing redundant ADRs
This commit is contained in:
1 parent
08e0cc390a
commit
70edfa4389
3 files changed
+39
No files matched your search
@@ -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]
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in new issue
Block a user