@coralai/sps-cli 0.58.23 → 0.58.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/cardAdd.d.ts.map +1 -1
- package/dist/commands/cardAdd.js +11 -2
- package/dist/commands/cardAdd.js.map +1 -1
- package/dist/commands/cardInsert.d.ts +2 -0
- package/dist/commands/cardInsert.d.ts.map +1 -0
- package/dist/commands/cardInsert.js +70 -0
- package/dist/commands/cardInsert.js.map +1 -0
- package/dist/commands/projectInit.d.ts +5 -0
- package/dist/commands/projectInit.d.ts.map +1 -1
- package/dist/commands/projectInit.js +17 -0
- package/dist/commands/projectInit.js.map +1 -1
- package/dist/commands/tick.d.ts +2 -0
- package/dist/commands/tick.d.ts.map +1 -1
- package/dist/commands/tick.js +45 -0
- package/dist/commands/tick.js.map +1 -1
- package/dist/console/routes/chat.d.ts.map +1 -1
- package/dist/console/routes/chat.js +8 -3
- package/dist/console/routes/chat.js.map +1 -1
- package/dist/console/routes/projects.d.ts.map +1 -1
- package/dist/console/routes/projects.js +1 -0
- package/dist/console/routes/projects.js.map +1 -1
- package/dist/console-assets/assets/{index-B_CpD8k2.js → index-CokfLuTe.js} +3 -3
- package/dist/console-assets/index.html +1 -1
- package/dist/core/config.d.ts +2 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +1 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/memory2/external/importTranscript.d.ts +7 -0
- package/dist/core/memory2/external/importTranscript.d.ts.map +1 -0
- package/dist/core/memory2/external/importTranscript.js +44 -0
- package/dist/core/memory2/external/importTranscript.js.map +1 -0
- package/dist/core/skills/SkillsManager.d.ts +2 -0
- package/dist/core/skills/SkillsManager.d.ts.map +1 -1
- package/dist/core/skills/SkillsManager.js +7 -0
- package/dist/core/skills/SkillsManager.js.map +1 -1
- package/dist/core/skills/index.d.ts +1 -1
- package/dist/core/skills/index.d.ts.map +1 -1
- package/dist/core/skills/index.js +1 -1
- package/dist/core/skills/index.js.map +1 -1
- package/dist/core/skills/types.d.ts +5 -0
- package/dist/core/skills/types.d.ts.map +1 -1
- package/dist/engines/ReviewEngine.d.ts +68 -0
- package/dist/engines/ReviewEngine.d.ts.map +1 -0
- package/dist/engines/ReviewEngine.js +125 -0
- package/dist/engines/ReviewEngine.js.map +1 -0
- package/dist/engines/StageEngine.d.ts +5 -1
- package/dist/engines/StageEngine.d.ts.map +1 -1
- package/dist/engines/StageEngine.js +14 -2
- package/dist/engines/StageEngine.js.map +1 -1
- package/dist/main.js +12 -2
- package/dist/main.js.map +1 -1
- package/dist/manager/worker-manager-impl.d.ts.map +1 -1
- package/dist/manager/worker-manager-impl.js +4 -0
- package/dist/manager/worker-manager-impl.js.map +1 -1
- package/dist/providers/LLMClient.d.ts +23 -0
- package/dist/providers/LLMClient.d.ts.map +1 -1
- package/dist/providers/LLMClient.js +53 -4
- package/dist/providers/LLMClient.js.map +1 -1
- package/dist/providers/llm/chatTools.d.ts +1 -0
- package/dist/providers/llm/chatTools.d.ts.map +1 -1
- package/dist/providers/llm/chatTools.js +6 -4
- package/dist/providers/llm/chatTools.js.map +1 -1
- package/dist/providers/llm/monitorSkills.d.ts +9 -3
- package/dist/providers/llm/monitorSkills.d.ts.map +1 -1
- package/dist/providers/llm/monitorSkills.js +42 -23
- package/dist/providers/llm/monitorSkills.js.map +1 -1
- package/dist/providers/llm/probeTools.d.ts +5 -1
- package/dist/providers/llm/probeTools.d.ts.map +1 -1
- package/dist/providers/llm/probeTools.js +9 -5
- package/dist/providers/llm/probeTools.js.map +1 -1
- package/dist/providers/llm/skillTools.d.ts.map +1 -1
- package/dist/providers/llm/skillTools.js +5 -3
- package/dist/providers/llm/skillTools.js.map +1 -1
- package/dist/providers/mcp/spsMcpServer.d.ts.map +1 -1
- package/dist/providers/mcp/spsMcpServer.js +5 -3
- package/dist/providers/mcp/spsMcpServer.js.map +1 -1
- package/dist/services/CardService.d.ts +6 -0
- package/dist/services/CardService.d.ts.map +1 -1
- package/dist/services/CardService.js +28 -1
- package/dist/services/CardService.js.map +1 -1
- package/dist/services/ProjectService.d.ts +2 -0
- package/dist/services/ProjectService.d.ts.map +1 -1
- package/dist/services/ProjectService.js.map +1 -1
- package/package.json +4 -2
- package/skills/checklist-review/SKILL.md +44 -0
- package/{monitor-skills → skills}/probe-playbook/SKILL.md +3 -2
- package/skills/sps-pipeline/SKILL.md +48 -1
- package/{monitor-skills → skills}/visual-rubric/SKILL.md +3 -2
|
@@ -23,6 +23,29 @@ export declare class LLMClient {
|
|
|
23
23
|
draft: PlanDraft;
|
|
24
24
|
usage: RunUsage;
|
|
25
25
|
}>;
|
|
26
|
+
/**
|
|
27
|
+
* 清单验收(review pass 用):对着**真实项目产物**逐条核验一张卡的验收清单。
|
|
28
|
+
* 验收员 = OpenAI 三方角色(去相关盲点)+ 只读探查工具(自己看项目,不依赖 git)
|
|
29
|
+
* + reviewer 判据(.sps/monitor-skills)+ 本卡自身 skills 的 SOP(worker 被要求遵循的标准)
|
|
30
|
+
* + 注入的项目/全局记忆。既懂项目、又客观。
|
|
31
|
+
* @returns 每条 { index, pass, reason }。失败静默由调用方(ReviewEngine)兜底。
|
|
32
|
+
*/
|
|
33
|
+
reviewChecklist(input: {
|
|
34
|
+
cardTitle: string;
|
|
35
|
+
cardDesc: string;
|
|
36
|
+
items: string[];
|
|
37
|
+
/** 本卡自身的 skills 名(加载其 SOP 给验收员当验收标准依据)。 */
|
|
38
|
+
cardSkills?: string[];
|
|
39
|
+
/** 预构造的记忆注入块(<memory>…</memory>);由调用方按 project+global 作用域构造。 */
|
|
40
|
+
memory?: string;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
results: {
|
|
43
|
+
index: number;
|
|
44
|
+
pass: boolean;
|
|
45
|
+
reason: string;
|
|
46
|
+
}[];
|
|
47
|
+
usage: RunUsage;
|
|
48
|
+
}>;
|
|
26
49
|
/** 常规轮:评审 + 决策(带持久 session)。images=本轮预喂的实战截图(可选,游戏类)。 */
|
|
27
50
|
orchestrate(input: OrchestratorInput, session: Session, images?: string[]): Promise<{
|
|
28
51
|
decision: OrchestratorDecision;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMClient.d.ts","sourceRoot":"","sources":["../../src/providers/LLMClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI1D,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACV,MAAM,wBAAwB,CAAC;AAQhC,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"LLMClient.d.ts","sourceRoot":"","sources":["../../src/providers/LLMClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI1D,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACV,MAAM,wBAAwB,CAAC;AAQhC,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAgGD,qBAAa,SAAS;IAMlB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAL5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAGxC,MAAM,EAAE,YAAY,EACH,QAAQ,CAAC,EAAE,MAAM,YAAA;IAepC,0BAA0B;IACpB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAC;IAO7E;;;;;;OAMG;IACG,eAAe,CAAC,KAAK,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,2CAA2C;QAC3C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,gEAAgE;QAChE,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAC;IA8B7F,yDAAyD;IACnD,WAAW,CACf,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC;QAAE,QAAQ,EAAE,oBAAoB,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAC;CAOhE"}
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
import { Agent, run } from '@openai/agents';
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import { useLocalTracing } from '../core/agents/localTracing.js';
|
|
13
|
-
import { SkillsManager } from '../core/skills/index.js';
|
|
13
|
+
import { isReviewerSkill, SkillsManager } from '../core/skills/index.js';
|
|
14
14
|
import { createReviewerModel } from './llm/modelFactory.js';
|
|
15
|
-
import {
|
|
15
|
+
import { loadReviewerSkills } from './llm/monitorSkills.js';
|
|
16
16
|
import { probeTools } from './llm/probeTools.js';
|
|
17
17
|
// 用本地 trace 处理器替换默认 OpenAI 导出器:trace 只落本地,绝不发 OpenAI 后端。
|
|
18
18
|
useLocalTracing();
|
|
@@ -34,6 +34,19 @@ const DecisionSchema = z.object({
|
|
|
34
34
|
z.object({ kind: z.literal('done') }),
|
|
35
35
|
]),
|
|
36
36
|
});
|
|
37
|
+
// 验收员逐条判定(index 对应清单条目序号,从 0 起)。
|
|
38
|
+
const ReviewSchema = z.object({
|
|
39
|
+
results: z.array(z.object({
|
|
40
|
+
index: z.number(),
|
|
41
|
+
pass: z.boolean(),
|
|
42
|
+
reason: z.string(),
|
|
43
|
+
})),
|
|
44
|
+
});
|
|
45
|
+
const REVIEW_INSTRUCTIONS = '你是一名**独立的第三方验收员**(不写代码,只验收)。你拿到一张已完成卡片的**验收清单**——每条是一个"这张卡怎样才算做完"的验收点。\n' +
|
|
46
|
+
'**你有只读探查工具(read_file / list_dir)——必须先亲自看项目里的真实产物,再逐条判定。别凭卡片描述或想象下结论,产物就在项目目录里,自己去看。**\n' +
|
|
47
|
+
'逐条给:pass(真达标)/ fail(未做或未达标)+ reason(基于你**亲眼看到的具体证据**,例如某文件某函数存在且实现了什么)。\n' +
|
|
48
|
+
'🔴 保守判定:某条需要**真跑起来/运行时**才能确认(而你只能只读看代码),又无法从产物明确推断达标 → 判 fail 并在 reason 说明"需运行时验证,静态无法确认"。宁可打回也别放水。\n' +
|
|
49
|
+
'只读,绝不改任何文件。对每条清单项都要给出一条 result(index 用清单里的序号)。';
|
|
37
50
|
const PLAN_INSTRUCTIONS = '你是严谨的技术规划者。把用户的自然语言总目标拆成一份**有序、粗粒度的任务清单**:每项是一个"小节/阶段"' +
|
|
38
51
|
'(不是细到一次提交的卡片——后续每项会被动态拆成多张执行卡)。可给每项一个 group 分组标签。' +
|
|
39
52
|
'只规划,不实现。覆盖目标全貌、顺序合理、颗粒度均匀。\n' +
|
|
@@ -90,10 +103,12 @@ export class LLMClient {
|
|
|
90
103
|
// 监工技能池(探查 SOP / 视觉评分卡)拼进编排指令——OpenAI agent 不自动发现 SKILL.md。
|
|
91
104
|
// 另注入「可指派给卡片的 worker skills」目录(name: description),让监工的 next.skills 有据可填。
|
|
92
105
|
const skills = new SkillsManager({ cwd: probeCwd ?? process.cwd() });
|
|
93
|
-
|
|
106
|
+
// 可指派给 worker 的 skill 目录:排除 audience=reviewer 的(那些是审核判据,不派给 worker)。
|
|
107
|
+
const assignable = skills.catalog(skills.discover('skills').filter((m) => !isReviewerSkill(m)));
|
|
94
108
|
this.orchInstructions =
|
|
95
109
|
ORCH_INSTRUCTIONS +
|
|
96
|
-
|
|
110
|
+
// orchestrator 拿 probe + visual 判据,排除 checklist(那是逐条清单验收专用)。
|
|
111
|
+
loadReviewerSkills(probeCwd, { excludeTags: ['checklist'] }) +
|
|
97
112
|
(assignable ? `\n\n【可指派 skills(填入 next.skills,只用下面有的名字)】${assignable}` : '');
|
|
98
113
|
}
|
|
99
114
|
/** 首轮:把 goal 拆成任务清单草案。 */
|
|
@@ -103,6 +118,40 @@ export class LLMClient {
|
|
|
103
118
|
await r.completed;
|
|
104
119
|
return { draft: r.finalOutput, usage: extractUsage(r) };
|
|
105
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* 清单验收(review pass 用):对着**真实项目产物**逐条核验一张卡的验收清单。
|
|
123
|
+
* 验收员 = OpenAI 三方角色(去相关盲点)+ 只读探查工具(自己看项目,不依赖 git)
|
|
124
|
+
* + reviewer 判据(.sps/monitor-skills)+ 本卡自身 skills 的 SOP(worker 被要求遵循的标准)
|
|
125
|
+
* + 注入的项目/全局记忆。既懂项目、又客观。
|
|
126
|
+
* @returns 每条 { index, pass, reason }。失败静默由调用方(ReviewEngine)兜底。
|
|
127
|
+
*/
|
|
128
|
+
async reviewChecklist(input) {
|
|
129
|
+
// 清单验收走"不靠 git":只挂 read_file/list_dir,不挂 git_diff(免无 git 时吐噪音/白烧 token)。
|
|
130
|
+
const tools = this.probeCwd ? probeTools(this.probeCwd, { git: false }) : [];
|
|
131
|
+
// 本卡 worker 被指派的 skills 的正文 SOP —— 让验收员知道"worker 本该按什么标准做"。
|
|
132
|
+
const skillMgr = new SkillsManager({ cwd: this.probeCwd ?? process.cwd() });
|
|
133
|
+
const skillSops = (input.cardSkills ?? [])
|
|
134
|
+
.map((n) => {
|
|
135
|
+
const body = skillMgr.load(n);
|
|
136
|
+
return body ? `【skill: ${n}】\n${body}` : '';
|
|
137
|
+
})
|
|
138
|
+
.filter(Boolean)
|
|
139
|
+
.join('\n\n');
|
|
140
|
+
const instructions = REVIEW_INSTRUCTIONS +
|
|
141
|
+
// checklist reviewer 拿 probe + checklist-review 手册,排除 visual(截图评分,静态清单验收用不上)。
|
|
142
|
+
loadReviewerSkills(this.probeCwd, { excludeTags: ['visual'] }) +
|
|
143
|
+
(skillSops ? `\n\n=== 本卡 worker 被要求遵循的 skills SOP(据此定验收尺度)===\n${skillSops}` : '') +
|
|
144
|
+
(input.memory ? `\n\n=== 相关项目记忆(参考,非验收点)===\n${input.memory}` : '');
|
|
145
|
+
const agent = new Agent({ name: 'reviewer', instructions, model: this.model, outputType: ReviewSchema, tools });
|
|
146
|
+
const numbered = input.items.map((t, i) => `${i}. ${t}`).join('\n');
|
|
147
|
+
const prompt = `【被验收的卡】"${input.cardTitle}"\n${input.cardDesc || '(无描述)'}\n\n` +
|
|
148
|
+
`【验收清单 —— 逐条核验,index 从 0 起】\n${numbered}\n\n` +
|
|
149
|
+
'用只读工具亲自看项目产物,对每条给出 pass/fail + reason。';
|
|
150
|
+
const r = await run(agent, prompt, { stream: true });
|
|
151
|
+
await r.completed;
|
|
152
|
+
const out = r.finalOutput;
|
|
153
|
+
return { results: out?.results ?? [], usage: extractUsage(r) };
|
|
154
|
+
}
|
|
106
155
|
/** 常规轮:评审 + 决策(带持久 session)。images=本轮预喂的实战截图(可选,游戏类)。 */
|
|
107
156
|
async orchestrate(input, session, images) {
|
|
108
157
|
const tools = this.probeCwd ? probeTools(this.probeCwd) : [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMClient.js","sourceRoot":"","sources":["../../src/providers/LLMClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,EAAE,GAAG,EAAgB,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"LLMClient.js","sourceRoot":"","sources":["../../src/providers/LLMClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export declare function chatTools(): (import("@openai/agents").FunctionTool<unkn
|
|
|
7
7
|
smartArrange: "smartArrange";
|
|
8
8
|
}>;
|
|
9
9
|
goal: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
10
|
+
enableReview: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
10
11
|
}, z.core.$strip>, string> | import("@openai/agents").FunctionTool<unknown, z.ZodObject<{
|
|
11
12
|
dir: z.ZodString;
|
|
12
13
|
}, z.core.$strip>, string>)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatTools.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/chatTools.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,wBAAgB,SAAS
|
|
1
|
+
{"version":3,"file":"chatTools.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/chatTools.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,wBAAgB,SAAS;;;;;;;;;;;8BA0ExB"}
|
|
@@ -20,14 +20,16 @@ export function chatTools() {
|
|
|
20
20
|
tool({
|
|
21
21
|
name: 'create_project',
|
|
22
22
|
description: '创建一个新项目。项目会建在「父目录/项目名」专属子目录(类似 git clone,防污染共享目录)。' +
|
|
23
|
-
'mode=pipeline(固定阶段流水线)或 smartArrange(智能编排,OpenAI 监工动态派卡 + claude worker);smartArrange 需要 goal。'
|
|
23
|
+
'mode=pipeline(固定阶段流水线)或 smartArrange(智能编排,OpenAI 监工动态派卡 + claude worker);smartArrange 需要 goal。' +
|
|
24
|
+
'enableReview=是否开清单验收(每卡完成后独立 agent 逐条审核卡内检查清单,不过自动插修正卡)——**建项目前必须先问用户要不要开**,再据其回答传入。',
|
|
24
25
|
parameters: z.object({
|
|
25
26
|
name: z.string().describe('项目名,仅字母数字 _ -'),
|
|
26
27
|
parentDir: z.string().describe('父目录绝对路径(项目建在 父目录/项目名)'),
|
|
27
28
|
mode: z.enum(['pipeline', 'smartArrange']).describe('执行模式'),
|
|
28
29
|
goal: z.string().nullable().optional().describe('smartArrange 总目标,写入 docs/GOAL.md'),
|
|
30
|
+
enableReview: z.boolean().nullable().optional().describe('是否开清单验收(SPS_REVIEW)。必须先问过用户再传'),
|
|
29
31
|
}),
|
|
30
|
-
async execute({ name, parentDir, mode, goal }) {
|
|
32
|
+
async execute({ name, parentDir, mode, goal, enableReview }) {
|
|
31
33
|
if (!/^[a-zA-Z0-9_-]+$/.test(name))
|
|
32
34
|
return '项目名非法:只允许 a-z A-Z 0-9 _ -';
|
|
33
35
|
if (!parentDir?.startsWith('/'))
|
|
@@ -37,8 +39,8 @@ export function chatTools() {
|
|
|
37
39
|
return 'smartArrange 模式需要提供 goal(总目标)';
|
|
38
40
|
try {
|
|
39
41
|
const { executeProjectInit } = await import('../../commands/projectInit.js');
|
|
40
|
-
await executeProjectInit(name, {}, { projectDir, mergeBranch: 'main', maxWorkers: '1', enableGit: false, createIfMissing: true, pipelineMode: mode, goal: goal ?? undefined });
|
|
41
|
-
return `已创建项目「${name}」(${mode})于 ${projectDir}。${mode === 'smartArrange' ? '去编排页选它点「启动」即可跑。' : '去看板加卡片后启动。'}`;
|
|
42
|
+
await executeProjectInit(name, {}, { projectDir, mergeBranch: 'main', maxWorkers: '1', enableGit: false, createIfMissing: true, pipelineMode: mode, goal: goal ?? undefined, enableReview: enableReview === true });
|
|
43
|
+
return `已创建项目「${name}」(${mode}${enableReview === true ? ',清单验收 on' : ''})于 ${projectDir}。${mode === 'smartArrange' ? '去编排页选它点「启动」即可跑。' : '去看板加卡片后启动。'}`;
|
|
42
44
|
}
|
|
43
45
|
catch (e) {
|
|
44
46
|
return `创建失败: ${e instanceof Error ? e.message : String(e)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatTools.js","sourceRoot":"","sources":["../../../src/providers/llm/chatTools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC;AAE/C,uDAAuD;AACvD,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,IAAI,CAAC;YACH,IAAI,EAAE,gBAAgB;YACtB,WAAW,EACT,oDAAoD;gBACpD,gGAAgG;
|
|
1
|
+
{"version":3,"file":"chatTools.js","sourceRoot":"","sources":["../../../src/providers/llm/chatTools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC;AAE/C,uDAAuD;AACvD,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,IAAI,CAAC;YACH,IAAI,EAAE,gBAAgB;YACtB,WAAW,EACT,oDAAoD;gBACpD,gGAAgG;gBAChG,sFAAsF;YACxF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBACvD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;gBACnF,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;aAC1F,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;gBACzD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,OAAO,2BAA2B,CAAC;gBACvE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,OAAO,YAAY,CAAC;gBACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACpF,IAAI,IAAI,KAAK,cAAc,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;oBAAE,OAAO,+BAA+B,CAAC;gBACrF,IAAI,CAAC;oBACH,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;oBAC7E,MAAM,kBAAkB,CACtB,IAAI,EACJ,EAAE,EACF,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,YAAY,EAAE,YAAY,KAAK,IAAI,EAAE,CAChL,CAAC;oBACF,OAAO,SAAS,IAAI,KAAK,IAAI,GAAG,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,UAAU,IAAI,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;gBAC1J,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,SAAS,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,CAAC;YACH,CAAC;SACF,CAAC;QACF,IAAI,CAAC;YACH,IAAI,EAAE,eAAe;YACrB,WAAW,EACT,iEAAiE;gBACjE,gFAAgF;gBAChF,sCAAsC;YACxC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;aACjD,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE;gBACnB,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,OAAO,WAAW,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,OAAO,UAAU,GAAG,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpE,IAAI,CAAC,IAAI;oBAAE,OAAO,mCAAmC,CAAC;gBACtD,IAAI,CAAC;oBACH,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;oBAC7E,iFAAiF;oBACjF,yCAAyC;oBACzC,MAAM,kBAAkB,CACtB,IAAI,EACJ,EAAE,EACF,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CACtF,CAAC;oBACF,OAAO,iBAAiB,IAAI,MAAM,GAAG,mCAAmC,CAAC;gBAC3E,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,SAAS,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,CAAC;YACH,CAAC;SACF,CAAC;QACF,IAAI,CAAC;YACH,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,YAAY;YACzB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,OAAO;gBACX,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,OAAO,OAAO,CAAC;gBACrC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC1G,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
export interface LoadReviewerSkillsOpts {
|
|
2
|
+
/** 排除带这些 tag 的审核 skill(checklist reviewer 排 'visual';orchestrator 排 'checklist')。 */
|
|
3
|
+
excludeTags?: string[];
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
6
|
+
* 加载审核侧技能**正文**拼成一段可塞进 reviewer 指令的文本。无任何 → 空串。
|
|
7
|
+
* @param projectDir 项目根(读 <cwd>/.sps/skills + .sps/monitor-skills 覆盖);缺省只剩用户 + 内建。
|
|
4
8
|
*/
|
|
5
|
-
export declare function
|
|
9
|
+
export declare function loadReviewerSkills(projectDir?: string, opts?: LoadReviewerSkillsOpts): string;
|
|
10
|
+
/** @deprecated 改用 loadReviewerSkills。保留别名避免遗漏引用断裂。 */
|
|
11
|
+
export declare const loadMonitorSkills: typeof loadReviewerSkills;
|
|
6
12
|
//# sourceMappingURL=monitorSkills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitorSkills.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/monitorSkills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"monitorSkills.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/monitorSkills.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,sBAAsB;IACrC,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B,GAAG,MAAM,CAwBjG;AAED,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,2BAAqB,CAAC"}
|
|
@@ -1,37 +1,56 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module providers/llm/monitorSkills
|
|
3
|
-
* @description
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
3
|
+
* @description 审核侧技能加载器。OpenAI reviewer/监工不像 claude 自动发现 SKILL.md,所以把
|
|
4
|
+
* 「审核判据」(探查 SOP / 视觉评分卡 / 清单验收 SOP)的**正文全量**读出、拼进 reviewer 指令
|
|
5
|
+
* (reviewer 是"推"模型,sps 显式 push,不 browse catalog)。
|
|
6
|
+
*
|
|
7
|
+
* 统一到 `skills` 库(北极星:单一 skills 来源):审核 skill = `skills` 命名空间里
|
|
8
|
+
* **frontmatter `audience: reviewer`** 的那些(内建 skills/ > 用户 ~/.coral/skills > 项目 <cwd>/.sps/skills)。
|
|
9
|
+
* 另兼容读老的 `monitor-skills` 命名空间(项目 <cwd>/.sps/monitor-skills;gameforge roleSource 写入)。
|
|
10
|
+
* excludeTags 让不同消费者只取相关手册(checklist reviewer 排 'visual';orchestrator 排 'checklist')。
|
|
8
11
|
* @layer provider
|
|
9
|
-
* @boundedContext
|
|
12
|
+
* @boundedContext review
|
|
10
13
|
*/
|
|
11
14
|
import { dirname, resolve } from 'node:path';
|
|
12
15
|
import { fileURLToPath } from 'node:url';
|
|
13
|
-
import { SkillsManager } from '../../core/skills/index.js';
|
|
14
|
-
/**
|
|
15
|
-
function
|
|
16
|
+
import { isReviewerSkill, SkillsManager } from '../../core/skills/index.js';
|
|
17
|
+
/** 随包内建统一 skills 库目录:dist/providers/llm/monitorSkills.js → 包根 skills/。 */
|
|
18
|
+
function bundledSkillsDir() {
|
|
16
19
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
17
|
-
return resolve(here, '..', '..', '..', '
|
|
20
|
+
return resolve(here, '..', '..', '..', 'skills');
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
23
|
+
* 加载审核侧技能**正文**拼成一段可塞进 reviewer 指令的文本。无任何 → 空串。
|
|
24
|
+
* @param projectDir 项目根(读 <cwd>/.sps/skills + .sps/monitor-skills 覆盖);缺省只剩用户 + 内建。
|
|
22
25
|
*/
|
|
23
|
-
export function
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
export function loadReviewerSkills(projectDir, opts = {}) {
|
|
27
|
+
const cwd = projectDir ?? '/__sps_no_project__';
|
|
28
|
+
const exclude = new Set((opts.excludeTags ?? []).map((t) => t.toLowerCase()));
|
|
29
|
+
const hasExcludedTag = (tags) => tags.some((t) => exclude.has(t.toLowerCase()));
|
|
30
|
+
const byName = new Map(); // name → body(高优先级先到先得)
|
|
31
|
+
// ① 统一 skills 库里 audience=reviewer 的(项目 .sps/skills > 用户 ~/.coral/skills > 内建 skills/)。
|
|
32
|
+
const skillsMgr = new SkillsManager({ cwd, bundledSkillsDir: bundledSkillsDir() });
|
|
33
|
+
for (const m of skillsMgr.discover('skills')) {
|
|
34
|
+
if (!isReviewerSkill(m) || hasExcludedTag(m.tags))
|
|
35
|
+
continue;
|
|
36
|
+
const body = skillsMgr.load(m.name, 'skills');
|
|
37
|
+
if (body && !byName.has(m.name))
|
|
38
|
+
byName.set(m.name, body);
|
|
39
|
+
}
|
|
40
|
+
// ② 兼容:老 monitor-skills 命名空间(项目 .sps/monitor-skills + 用户覆盖;gameforge roleSource 写入)。
|
|
41
|
+
const monMgr = new SkillsManager({ cwd });
|
|
42
|
+
for (const m of monMgr.discover('monitor-skills')) {
|
|
43
|
+
if (hasExcludedTag(m.tags))
|
|
44
|
+
continue;
|
|
45
|
+
const body = monMgr.load(m.name, 'monitor-skills');
|
|
46
|
+
if (body && !byName.has(m.name))
|
|
47
|
+
byName.set(m.name, body);
|
|
48
|
+
}
|
|
49
|
+
const bodies = [...byName.values()];
|
|
33
50
|
if (!bodies.length)
|
|
34
51
|
return '';
|
|
35
|
-
return ['\n\n===
|
|
52
|
+
return ['\n\n=== 审核技能手册(务必遵守)===', ...bodies].join('\n\n');
|
|
36
53
|
}
|
|
54
|
+
/** @deprecated 改用 loadReviewerSkills。保留别名避免遗漏引用断裂。 */
|
|
55
|
+
export const loadMonitorSkills = loadReviewerSkills;
|
|
37
56
|
//# sourceMappingURL=monitorSkills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitorSkills.js","sourceRoot":"","sources":["../../../src/providers/llm/monitorSkills.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"monitorSkills.js","sourceRoot":"","sources":["../../../src/providers/llm/monitorSkills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE5E,0EAA0E;AAC1E,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAmB,EAAE,OAA+B,EAAE;IACvF,MAAM,GAAG,GAAG,UAAU,IAAI,qBAAqB,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,wBAAwB;IAElE,wFAAwF;IACxF,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACnF,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QAC5D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,qFAAqF;IACrF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClD,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACnD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,yBAAyB,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export
|
|
2
|
+
export interface ProbeToolsOpts {
|
|
3
|
+
/** 是否挂 git_diff 工具。清单验收员走"不靠 git",传 false 只留 read_file/list_dir(免无 git 时吐噪音/白烧 token)。默认 true。 */
|
|
4
|
+
git?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function probeTools(cwd: string, opts?: ProbeToolsOpts): (import("@openai/agents").FunctionTool<unknown, z.ZodObject<{
|
|
3
7
|
path: z.ZodString;
|
|
4
8
|
}, z.core.$strip>, string> | import("@openai/agents").FunctionTool<unknown, z.ZodObject<{
|
|
5
9
|
path: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probeTools.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/probeTools.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"probeTools.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/probeTools.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,WAAW,cAAc;IAC7B,kGAAkG;IAClG,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB;;;;8BAsEhE"}
|
|
@@ -12,7 +12,7 @@ import { resolve } from 'node:path';
|
|
|
12
12
|
import { tool } from '@openai/agents';
|
|
13
13
|
import { z } from 'zod';
|
|
14
14
|
const MAX = 16000; // 单次返回上限,防爆上下文(超出用 offset 分段续读)
|
|
15
|
-
export function probeTools(cwd) {
|
|
15
|
+
export function probeTools(cwd, opts = {}) {
|
|
16
16
|
const root = resolve(cwd);
|
|
17
17
|
const safe = (p) => {
|
|
18
18
|
const abs = resolve(root, p || '.');
|
|
@@ -20,7 +20,7 @@ export function probeTools(cwd) {
|
|
|
20
20
|
throw new Error(`越界:${p} 不在项目目录内`);
|
|
21
21
|
return abs;
|
|
22
22
|
};
|
|
23
|
-
|
|
23
|
+
const tools = [
|
|
24
24
|
tool({
|
|
25
25
|
name: 'read_file',
|
|
26
26
|
description: '读项目内一个文件的【全部内容】(只读,不截断)。用于核验产物是否真实存在、内容是否达标。',
|
|
@@ -65,7 +65,10 @@ export function probeTools(cwd) {
|
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
}),
|
|
68
|
-
|
|
68
|
+
];
|
|
69
|
+
// git_diff 默认挂;清单验收员(git:false)不挂——它不靠 git,只读 read_file/list_dir。
|
|
70
|
+
if (opts.git !== false) {
|
|
71
|
+
tools.push(tool({
|
|
69
72
|
name: 'git_diff',
|
|
70
73
|
description: '看工作区相对上次提交的改动(git diff)。用于审查上一卡到底改了什么。',
|
|
71
74
|
parameters: z.object({}),
|
|
@@ -78,7 +81,8 @@ export function probeTools(cwd) {
|
|
|
78
81
|
return `git diff 失败: ${e instanceof Error ? e.message : String(e)}`;
|
|
79
82
|
}
|
|
80
83
|
},
|
|
81
|
-
})
|
|
82
|
-
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
return tools;
|
|
83
87
|
}
|
|
84
88
|
//# sourceMappingURL=probeTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probeTools.js","sourceRoot":"","sources":["../../../src/providers/llm/probeTools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gCAAgC;
|
|
1
|
+
{"version":3,"file":"probeTools.js","sourceRoot":"","sources":["../../../src/providers/llm/probeTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillTools.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/skillTools.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"skillTools.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/skillTools.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,4FA8BtC"}
|
|
@@ -8,17 +8,19 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { tool } from '@openai/agents';
|
|
10
10
|
import { z } from 'zod';
|
|
11
|
-
import { SkillsManager } from '../../core/skills/index.js';
|
|
11
|
+
import { isReviewerSkill, SkillsManager } from '../../core/skills/index.js';
|
|
12
12
|
/** cwd = 会话/项目工作目录(决定项目级 .sps/skills);无 cwd → 只读全局 HQ(~/.coral/skills)。 */
|
|
13
13
|
export function skillTools(cwd) {
|
|
14
14
|
const skills = new SkillsManager({ cwd: cwd ?? '/__sps_no_project__' });
|
|
15
|
+
// worker/chat 的 catalog 排除 audience=reviewer 的(那是审核判据,由 sps 显式 push 给 reviewer,不该出现在这里)。
|
|
16
|
+
const workerMetas = () => skills.discover().filter((m) => !isReviewerSkill(m));
|
|
15
17
|
return [
|
|
16
18
|
tool({
|
|
17
19
|
name: 'list_skills',
|
|
18
20
|
description: '列出可用 skill 的名字与用途(name: description);据此再 load_skill 拉正文。',
|
|
19
21
|
parameters: z.object({}),
|
|
20
22
|
async execute() {
|
|
21
|
-
return skills.catalog(
|
|
23
|
+
return skills.catalog(workerMetas()) || '(无可用 skill)';
|
|
22
24
|
},
|
|
23
25
|
}),
|
|
24
26
|
tool({
|
|
@@ -26,7 +28,7 @@ export function skillTools(cwd) {
|
|
|
26
28
|
description: '按关键词查找相关 skill(返回 name: description 候选),供挑选后 load_skill。',
|
|
27
29
|
parameters: z.object({ query: z.string().describe('关键词,如「血条 HUD」') }),
|
|
28
30
|
async execute({ query }) {
|
|
29
|
-
return skills.catalog(skills.search(query,
|
|
31
|
+
return skills.catalog(skills.search(query, workerMetas())) || `(无匹配 skill: ${query})`;
|
|
30
32
|
},
|
|
31
33
|
}),
|
|
32
34
|
tool({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillTools.js","sourceRoot":"","sources":["../../../src/providers/llm/skillTools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"skillTools.js","sourceRoot":"","sources":["../../../src/providers/llm/skillTools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE5E,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,qBAAqB,EAAE,CAAC,CAAC;IACxE,yFAAyF;IACzF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO;QACL,IAAI,CAAC;YACH,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,0DAA0D;YACvE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,OAAO;gBACX,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,aAAa,CAAC;YACxD,CAAC;SACF,CAAC;QACF,IAAI,CAAC;YACH,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,0DAA0D;YACvE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;gBACrB,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,eAAe,KAAK,GAAG,CAAC;YACxF,CAAC;SACF,CAAC;QACF,IAAI,CAAC;YACH,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,6DAA6D;YAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE;gBACpB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,IAAI,GAAG,CAAC;YACpD,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spsMcpServer.d.ts","sourceRoot":"","sources":["../../../src/providers/mcp/spsMcpServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"spsMcpServer.d.ts","sourceRoot":"","sources":["../../../src/providers/mcp/spsMcpServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAiL9D"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
12
12
|
import { z } from 'zod';
|
|
13
|
-
import { SkillsManager } from '../../core/skills/index.js';
|
|
13
|
+
import { isReviewerSkill, SkillsManager } from '../../core/skills/index.js';
|
|
14
14
|
import { readEntry, saveEntry } from '../../core/memory2/store.js';
|
|
15
15
|
import { RedactedEntryDropped } from '../../core/memory2/redact.js';
|
|
16
16
|
import { recallFederated } from '../../core/memory2/external/federate.js';
|
|
@@ -23,12 +23,14 @@ export function createSpsMcpServer(opts) {
|
|
|
23
23
|
const server = new McpServer({ name: 'sps', version: '1.0.0' });
|
|
24
24
|
// skill 发现/加载经 SkillsManager(读 HQ = ~/.coral/skills + <cwd>/.sps/skills,**不读 .claude**)。
|
|
25
25
|
const skills = new SkillsManager({ cwd: opts.cwd });
|
|
26
|
+
// worker 的 catalog 排除 audience=reviewer 的(审核判据由 sps 显式 push 给 reviewer,不出现在 worker 工具里)。
|
|
27
|
+
const workerMetas = () => skills.discover().filter((m) => !isReviewerSkill(m));
|
|
26
28
|
server.registerTool('list_skills', { description: '列出可用 skill 的名字与用途(name: description),据此再 load_skill 拉正文', inputSchema: {} }, async () => {
|
|
27
|
-
const cat = skills.catalog(
|
|
29
|
+
const cat = skills.catalog(workerMetas());
|
|
28
30
|
return text(cat || '(无可用 skill)');
|
|
29
31
|
});
|
|
30
32
|
server.registerTool('search_skills', { description: '按关键词查找相关 skill(返回 name: description 候选),供挑选后 load_skill', inputSchema: { query: z.string() } }, async ({ query }) => {
|
|
31
|
-
const hits = skills.search(query,
|
|
33
|
+
const hits = skills.search(query, workerMetas());
|
|
32
34
|
return text(skills.catalog(hits) || `(无匹配 skill: ${query})`);
|
|
33
35
|
});
|
|
34
36
|
server.registerTool('load_skill', { description: '加载一个 skill 的 SOP 正文(按名字,读 HQ:.sps/skills 盖 ~/.coral/skills)', inputSchema: { name: z.string() } }, async ({ name }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spsMcpServer.js","sourceRoot":"","sources":["../../../src/providers/mcp/spsMcpServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"spsMcpServer.js","sourceRoot":"","sources":["../../../src/providers/mcp/spsMcpServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,12 @@ export interface CreateCardInput {
|
|
|
45
45
|
/** 初始 labels —— 例如 `['AI-PIPELINE']` 让卡走流水线,空数组/缺省则不走 */
|
|
46
46
|
labels?: string[];
|
|
47
47
|
initialState?: string;
|
|
48
|
+
/**
|
|
49
|
+
* 验收清单(审核点)—— 建卡的 agent 在此写入"这张卡怎样才算做完"的可验证条目。
|
|
50
|
+
* 卡完成时若有非空清单,pipeline 会派 reviewer 逐条验收(有清单=开审核,per-card)。
|
|
51
|
+
* 修正卡不带清单 → 不触发审核 → 审核链终止。
|
|
52
|
+
*/
|
|
53
|
+
checklist?: string[];
|
|
48
54
|
}
|
|
49
55
|
export interface UpdateCardPatch {
|
|
50
56
|
title?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardService.d.ts","sourceRoot":"","sources":["../../src/services/CardService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAQ,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;CACpC;AAED,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"CardService.d.ts","sourceRoot":"","sources":["../../src/services/CardService.ts"],"names":[],"mappings":"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"}
|