filter-tasks
Filter and organize tasks in Todo.txt files by priority, context, or project using specific criteria, enabling efficient task management and focus on relevant activities.
Instructions
Filter tasks by specific criteria (priority, context, project).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| criteria | Yes |
Implementation Reference
- src/tools.ts:191-219 (registration)Full registration of the 'filter-tasks' tool, including name, description, input schema, and handler function.server.tool( "filter-tasks", "Filter tasks by specific criteria (priority, context, project).", { criteria: z.object({ priority: z.string().optional(), context: z.string().optional(), project: z.string().optional(), }), }, async ({ criteria }) => { const tasks = await loadTasks(); let filteredTasks = tasks; if (criteria.priority) { filteredTasks = filteredTasks.filter(task => task.priority() === criteria.priority); } if (criteria.context) { filteredTasks = filteredTasks.filter(task => criteria.context && task.contexts().includes(criteria.context)); } if (criteria.project) { filteredTasks = filteredTasks.filter(task => criteria.project && task.projects().includes(criteria.project)); } return { content: [ { type: "text", text: filteredTasks.map(task => task.toString()).join("\n") }, ], }; } );
- src/tools.ts:201-218 (handler)Handler function that loads tasks, applies filters based on criteria (priority, context, project), and returns the filtered tasks as a newline-separated string.async ({ criteria }) => { const tasks = await loadTasks(); let filteredTasks = tasks; if (criteria.priority) { filteredTasks = filteredTasks.filter(task => task.priority() === criteria.priority); } if (criteria.context) { filteredTasks = filteredTasks.filter(task => criteria.context && task.contexts().includes(criteria.context)); } if (criteria.project) { filteredTasks = filteredTasks.filter(task => criteria.project && task.projects().includes(criteria.project)); } return { content: [ { type: "text", text: filteredTasks.map(task => task.toString()).join("\n") }, ], }; }
- src/tools.ts:194-200 (schema)Input schema defining the 'criteria' object with optional priority, context, and project fields using Zod validation.{ criteria: z.object({ priority: z.string().optional(), context: z.string().optional(), project: z.string().optional(), }), },