mirror of
https://github.com/cjo4m06/mcp-shrimp-task-manager.git
synced 2025-09-01 20:51:29 +08:00
76 lines
1.8 KiB
TypeScript
76 lines
1.8 KiB
TypeScript
/**
|
|
* verifyTask prompt 生成器
|
|
* 負責將模板和參數組合成最終的 prompt
|
|
*/
|
|
|
|
import {
|
|
loadPrompt,
|
|
generatePrompt,
|
|
loadPromptFromTemplate,
|
|
} from "../loader.js";
|
|
import { Task } from "../../types/index.js";
|
|
|
|
/**
|
|
* verifyTask prompt 參數介面
|
|
*/
|
|
export interface VerifyTaskPromptParams {
|
|
task: Task;
|
|
score: number;
|
|
summary: string;
|
|
}
|
|
|
|
/**
|
|
* 提取摘要內容
|
|
* @param content 原始內容
|
|
* @param maxLength 最大長度
|
|
* @returns 提取的摘要
|
|
*/
|
|
function extractSummary(
|
|
content: string | undefined,
|
|
maxLength: number
|
|
): string {
|
|
if (!content) return "";
|
|
|
|
if (content.length <= maxLength) {
|
|
return content;
|
|
}
|
|
|
|
// 簡單的摘要提取:截取前 maxLength 個字符並添加省略號
|
|
return content.substring(0, maxLength) + "...";
|
|
}
|
|
|
|
/**
|
|
* 獲取 verifyTask 的完整 prompt
|
|
* @param params prompt 參數
|
|
* @returns 生成的 prompt
|
|
*/
|
|
export function getVerifyTaskPrompt(params: VerifyTaskPromptParams): string {
|
|
const { task, score, summary } = params;
|
|
if (score < 80) {
|
|
const noPassTemplate = loadPromptFromTemplate("verifyTask/noPass.md");
|
|
const prompt = generatePrompt(noPassTemplate, {
|
|
name: task.name,
|
|
id: task.id,
|
|
summary,
|
|
});
|
|
return prompt;
|
|
}
|
|
const indexTemplate = loadPromptFromTemplate("verifyTask/index.md");
|
|
const prompt = generatePrompt(indexTemplate, {
|
|
name: task.name,
|
|
id: task.id,
|
|
description: task.description,
|
|
notes: task.notes || "no notes",
|
|
verificationCriteria:
|
|
task.verificationCriteria || "no verification criteria",
|
|
implementationGuideSummary:
|
|
extractSummary(task.implementationGuide, 200) ||
|
|
"no implementation guide",
|
|
analysisResult:
|
|
extractSummary(task.analysisResult, 300) || "no analysis result",
|
|
});
|
|
|
|
// 載入可能的自定義 prompt
|
|
return loadPrompt(prompt, "VERIFY_TASK");
|
|
}
|