feat(trash): MCP delete tools soft-delete via trash; add delete_task/project/milestone

This commit is contained in:
2026-05-28 21:10:13 -04:00
parent eb41e772cd
commit c3af24ef51
6 changed files with 63 additions and 17 deletions
@@ -13,6 +13,7 @@ from __future__ import annotations
from fabledassistant.mcp._context import current_user_id
from fabledassistant.services import milestones as milestones_svc
from fabledassistant.services import trash as trash_svc
async def list_milestones(project_id: int) -> dict:
@@ -86,10 +87,22 @@ async def update_milestone(
return milestone.to_dict()
async def delete_milestone(milestone_id: int) -> dict:
"""Move a milestone to the trash (recoverable). Its tasks go with it as one batch.
Restore via restore(batch_id)."""
uid = current_user_id()
batch = await trash_svc.delete(uid, "milestone", milestone_id)
if batch is None:
raise ValueError(f"milestone {milestone_id} not found")
return {"deleted_batch_id": batch,
"message": f"Milestone {milestone_id} + its tasks moved to trash. Restore with restore('{batch}')."}
def register(mcp) -> None:
for fn in (
list_milestones,
create_milestone,
update_milestone,
delete_milestone,
):
mcp.tool(name=fn.__name__)(fn)