feat: task_list priority filter, session delete confirm, spawn_agent tool restrictions
- task_list: add priority param ('low'/'normal'/'high') alongside existing status filter
- Session delete: inline confirm row (Delete / Cancel) instead of immediate delete
- spawn_agent: allow_tools and deny_tools per-call params; role config remains ceiling;
deny_tools falls back to confirm_deny gate when no explicit tool_list is set
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -60,13 +60,15 @@ def _format_task(t: dict) -> str:
|
||||
# Sync implementations — called via asyncio.to_thread
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def _task_list(status: str | None) -> str:
|
||||
def _task_list(status: str | None, priority: str | None) -> str:
|
||||
tasks = _load()
|
||||
if status:
|
||||
tasks = [t for t in tasks if t["status"] == status]
|
||||
if priority:
|
||||
tasks = [t for t in tasks if t.get("priority") == priority]
|
||||
if not tasks:
|
||||
label = f"No {status} tasks." if status else "No tasks yet."
|
||||
return label
|
||||
filters = " ".join(f for f in [status, priority] if f)
|
||||
return f"No {filters} tasks." if filters else "No tasks yet."
|
||||
lines = [f"Tasks ({len(tasks)}):\n"]
|
||||
for t in tasks:
|
||||
lines.append(_format_task(t))
|
||||
@@ -118,8 +120,8 @@ def _task_complete(task_id: str) -> str:
|
||||
# Async wrappers
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
async def task_list(status: str | None = None) -> str:
|
||||
return await asyncio.to_thread(_task_list, status)
|
||||
async def task_list(status: str | None = None, priority: str | None = None) -> str:
|
||||
return await asyncio.to_thread(_task_list, status, priority)
|
||||
|
||||
|
||||
async def task_create(title: str, description: str | None = None,
|
||||
@@ -148,6 +150,7 @@ DECLARATIONS = [
|
||||
type=types.Type.OBJECT,
|
||||
properties={
|
||||
"status": types.Schema(type=types.Type.STRING, description="Filter by status: 'todo', 'in_progress', or 'done'. Omit to list all."),
|
||||
"priority": types.Schema(type=types.Type.STRING, description="Filter by priority: 'low', 'normal', or 'high'. Omit to list all priorities."),
|
||||
},
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user