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
View File
@@ -20,6 +20,7 @@ from fabledassistant.mcp._context import current_user_id
from fabledassistant.services import milestones as milestones_svc
from fabledassistant.services import projects as projects_svc
from fabledassistant.services import rulebooks as rulebooks_svc
from fabledassistant.services import trash as trash_svc
async def list_projects() -> dict:
@@ -121,11 +122,23 @@ async def update_project(
return project.to_dict()
async def delete_project(project_id: int) -> dict:
"""Move a project to the trash (recoverable). Its milestones, tasks, and notes
go with it as one batch. Restore via restore(batch_id)."""
uid = current_user_id()
batch = await trash_svc.delete(uid, "project", project_id)
if batch is None:
raise ValueError(f"project {project_id} not found")
return {"deleted_batch_id": batch,
"message": f"Project {project_id} + its contents moved to trash. Restore with restore('{batch}')."}
def register(mcp) -> None:
for fn in (
list_projects,
get_project,
create_project,
update_project,
delete_project,
):
mcp.tool(name=fn.__name__)(fn)