mcp-shrimp-task-manager
Version:
Shrimp Task Manager is a task tool built for AI Agents, emphasizing chain-of-thought, reflection, and style consistency. It converts natural language into structured dev tasks with dependency tracking and iterative refinement, enabling agent-like develope
63 lines • 2.34 kB
JavaScript
import { z } from "zod";
import path from "path";
import { fileURLToPath } from "url";
import { getAllTasks } from "../../models/taskModel.js";
import { TaskStatus } from "../../types/index.js";
import { getPlanTaskPrompt } from "../../prompts/index.js";
import { getMemoryDir } from "../../utils/paths.js";
// 開始規劃工具
export const planTaskSchema = z.object({
description: z
.string()
.min(10, {
message: "任務描述不能少於10個字符,請提供更詳細的描述以確保任務目標明確",
})
.describe("完整詳細的任務問題描述,應包含任務目標、背景及預期成果"),
requirements: z
.string()
.optional()
.describe("任務的特定技術要求、業務約束條件或品質標準(選填)"),
existingTasksReference: z
.boolean()
.optional()
.default(false)
.describe("是否參考現有任務作為規劃基礎,用於任務調整和延續性規劃"),
});
export async function planTask({ description, requirements, existingTasksReference = false, }) {
// 獲取基礎目錄路徑
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const PROJECT_ROOT = path.resolve(__dirname, "../../..");
const MEMORY_DIR = await getMemoryDir();
// 準備所需參數
let completedTasks = [];
let pendingTasks = [];
// 當 existingTasksReference 為 true 時,從數據庫中載入所有任務作為參考
if (existingTasksReference) {
try {
const allTasks = await getAllTasks();
// 將任務分為已完成和未完成兩類
completedTasks = allTasks.filter((task) => task.status === TaskStatus.COMPLETED);
pendingTasks = allTasks.filter((task) => task.status !== TaskStatus.COMPLETED);
}
catch (error) { }
}
// 使用prompt生成器獲取最終prompt
const prompt = await getPlanTaskPrompt({
description,
requirements,
existingTasksReference,
completedTasks,
pendingTasks,
memoryDir: MEMORY_DIR,
});
return {
content: [
{
type: "text",
text: prompt,
},
],
};
}
//# sourceMappingURL=planTask.js.map