feat(trash): MCP delete tools soft-delete via trash; add delete_task/project/milestone
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user