speccore 8.3.340 → 8.3.345
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/.agents/skills/speccore-router/SKILL.md +0 -2
- package/README.en.md +3 -11
- package/README.md +3 -13
- package/dist/cli.js +1 -187
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +583 -502
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/ask.d.ts +1 -0
- package/dist/commands/ask.d.ts.map +1 -1
- package/dist/commands/ask.js +5 -18
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +9 -7
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/doctor.js +3 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/done.js +1 -5
- package/dist/commands/done.js.map +1 -1
- package/dist/commands/execute.js +2 -2
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/help.js +5 -54
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -31
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration/taskify.d.ts.map +1 -1
- package/dist/commands/iteration/taskify.js +5 -147
- package/dist/commands/iteration/taskify.js.map +1 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +3 -5
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/search.js +1 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/update-env-configs.d.ts.map +1 -1
- package/dist/commands/update-env-configs.js +2 -1
- package/dist/commands/update-env-configs.js.map +1 -1
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +41 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/welcome.d.ts.map +1 -1
- package/dist/commands/welcome.js +37 -36
- package/dist/commands/welcome.js.map +1 -1
- package/dist/core/analyze-engine.js +3 -3
- package/dist/core/analyze-engine.js.map +1 -1
- package/dist/core/arbitration/l3-human-arbiter.js +1 -1
- package/dist/core/arbitration/l3-human-arbiter.js.map +1 -1
- package/dist/core/arbitration/verdict-generator.js +1 -1
- package/dist/core/arbitration/verdict-generator.js.map +1 -1
- package/dist/core/ask-engine.d.ts.map +1 -1
- package/dist/core/ask-engine.js +16 -42
- package/dist/core/ask-engine.js.map +1 -1
- package/dist/core/code-graph/reporter.d.ts.map +1 -1
- package/dist/core/code-graph/reporter.js +3 -12
- package/dist/core/code-graph/reporter.js.map +1 -1
- package/dist/core/code-graph/requirement-linker.js +1 -1
- package/dist/core/code-graph/requirement-linker.js.map +1 -1
- package/dist/core/code-scanner.js +1 -1
- package/dist/core/code-scanner.js.map +1 -1
- package/dist/core/deploy/engine.d.ts.map +1 -1
- package/dist/core/deploy/engine.js +58 -44
- package/dist/core/deploy/engine.js.map +1 -1
- package/dist/core/environment-config.d.ts +2 -0
- package/dist/core/environment-config.d.ts.map +1 -1
- package/dist/core/environment-config.js +6 -1
- package/dist/core/environment-config.js.map +1 -1
- package/dist/core/error-diagnosis.js +2 -2
- package/dist/core/error-diagnosis.js.map +1 -1
- package/dist/core/function-map.d.ts +49 -0
- package/dist/core/function-map.d.ts.map +1 -0
- package/dist/core/function-map.js +280 -0
- package/dist/core/function-map.js.map +1 -0
- package/dist/core/git-integration.d.ts +6 -0
- package/dist/core/git-integration.d.ts.map +1 -1
- package/dist/core/git-integration.js +11 -0
- package/dist/core/git-integration.js.map +1 -1
- package/dist/core/global-knowledge.js +1 -1
- package/dist/core/index-guard.d.ts.map +1 -1
- package/dist/core/index-guard.js +4 -26
- package/dist/core/index-guard.js.map +1 -1
- package/dist/core/intent-recognition.d.ts +1 -1
- package/dist/core/intent-recognition.d.ts.map +1 -1
- package/dist/core/intent-recognition.js +5 -63
- package/dist/core/intent-recognition.js.map +1 -1
- package/dist/core/page-bundle.d.ts +25 -0
- package/dist/core/page-bundle.d.ts.map +1 -0
- package/dist/core/page-bundle.js +144 -0
- package/dist/core/page-bundle.js.map +1 -0
- package/dist/core/prompt-builder.d.ts +9 -0
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +135 -3
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/core/prompt-plugins/analyze-graph-plugin.js +1 -1
- package/dist/core/prompt-plugins/analyze-graph-plugin.js.map +1 -1
- package/dist/core/structured-extractor.d.ts +6 -0
- package/dist/core/structured-extractor.d.ts.map +1 -1
- package/dist/core/structured-extractor.js +6 -0
- package/dist/core/structured-extractor.js.map +1 -1
- package/dist/core/unified-config.d.ts.map +1 -1
- package/dist/core/unified-config.js +29 -19
- package/dist/core/unified-config.js.map +1 -1
- package/dist/core/usage-analytics.js +1 -1
- package/dist/core/usage-analytics.js.map +1 -1
- package/package.json +1 -1
- package/templates/html/speccore-ask-guide.html +1 -1
- package/templates/html/speccore-ask-pipeline.html +1 -1
- package/templates/html/speccore-ask-result.html +1 -1
- package/templates/html/speccore-help.html +2 -2
- package/templates/speccore-yml-example.yml +24 -24
- package/dist/commands/audit.d.ts +0 -12
- package/dist/commands/audit.d.ts.map +0 -1
- package/dist/commands/audit.js +0 -540
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/backup.d.ts +0 -18
- package/dist/commands/backup.d.ts.map +0 -1
- package/dist/commands/backup.js +0 -102
- package/dist/commands/backup.js.map +0 -1
- package/dist/commands/baseline.d.ts +0 -13
- package/dist/commands/baseline.d.ts.map +0 -1
- package/dist/commands/baseline.js +0 -227
- package/dist/commands/baseline.js.map +0 -1
- package/dist/commands/chain.d.ts +0 -55
- package/dist/commands/chain.d.ts.map +0 -1
- package/dist/commands/chain.js +0 -501
- package/dist/commands/chain.js.map +0 -1
- package/dist/commands/clarify.d.ts +0 -17
- package/dist/commands/clarify.d.ts.map +0 -1
- package/dist/commands/clarify.js +0 -351
- package/dist/commands/clarify.js.map +0 -1
- package/dist/commands/code-index.d.ts +0 -21
- package/dist/commands/code-index.d.ts.map +0 -1
- package/dist/commands/code-index.js +0 -193
- package/dist/commands/code-index.js.map +0 -1
- package/dist/commands/context.d.ts +0 -10
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -213
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/current.d.ts +0 -10
- package/dist/commands/current.d.ts.map +0 -1
- package/dist/commands/current.js +0 -53
- package/dist/commands/current.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -18
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -854
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/diff.d.ts +0 -10
- package/dist/commands/diff.d.ts.map +0 -1
- package/dist/commands/diff.js +0 -160
- package/dist/commands/diff.js.map +0 -1
- package/dist/commands/global-status.d.ts +0 -9
- package/dist/commands/global-status.d.ts.map +0 -1
- package/dist/commands/global-status.js +0 -135
- package/dist/commands/global-status.js.map +0 -1
- package/dist/commands/graph.d.ts +0 -25
- package/dist/commands/graph.d.ts.map +0 -1
- package/dist/commands/graph.js +0 -523
- package/dist/commands/graph.js.map +0 -1
- package/dist/commands/handover.d.ts +0 -11
- package/dist/commands/handover.d.ts.map +0 -1
- package/dist/commands/handover.js +0 -170
- package/dist/commands/handover.js.map +0 -1
- package/dist/commands/health.d.ts +0 -7
- package/dist/commands/health.d.ts.map +0 -1
- package/dist/commands/health.js +0 -80
- package/dist/commands/health.js.map +0 -1
- package/dist/commands/history.d.ts +0 -9
- package/dist/commands/history.d.ts.map +0 -1
- package/dist/commands/history.js +0 -117
- package/dist/commands/history.js.map +0 -1
- package/dist/commands/impact.d.ts +0 -12
- package/dist/commands/impact.d.ts.map +0 -1
- package/dist/commands/impact.js +0 -238
- package/dist/commands/impact.js.map +0 -1
- package/dist/commands/import.d.ts +0 -19
- package/dist/commands/import.d.ts.map +0 -1
- package/dist/commands/import.js +0 -673
- package/dist/commands/import.js.map +0 -1
- package/dist/commands/knowledge.d.ts +0 -6
- package/dist/commands/knowledge.d.ts.map +0 -1
- package/dist/commands/knowledge.js +0 -94
- package/dist/commands/knowledge.js.map +0 -1
- package/dist/commands/lifecycle.d.ts +0 -9
- package/dist/commands/lifecycle.d.ts.map +0 -1
- package/dist/commands/lifecycle.js +0 -288
- package/dist/commands/lifecycle.js.map +0 -1
- package/dist/commands/merge-check.d.ts +0 -10
- package/dist/commands/merge-check.d.ts.map +0 -1
- package/dist/commands/merge-check.js +0 -183
- package/dist/commands/merge-check.js.map +0 -1
- package/dist/commands/notify.d.ts +0 -13
- package/dist/commands/notify.d.ts.map +0 -1
- package/dist/commands/notify.js +0 -63
- package/dist/commands/notify.js.map +0 -1
- package/dist/commands/rag-index.d.ts +0 -19
- package/dist/commands/rag-index.d.ts.map +0 -1
- package/dist/commands/rag-index.js +0 -286
- package/dist/commands/rag-index.js.map +0 -1
- package/dist/commands/recommend.d.ts +0 -13
- package/dist/commands/recommend.d.ts.map +0 -1
- package/dist/commands/recommend.js +0 -37
- package/dist/commands/recommend.js.map +0 -1
- package/dist/commands/refresh.d.ts +0 -21
- package/dist/commands/refresh.d.ts.map +0 -1
- package/dist/commands/refresh.js +0 -211
- package/dist/commands/refresh.js.map +0 -1
- package/dist/commands/rollback.d.ts +0 -8
- package/dist/commands/rollback.d.ts.map +0 -1
- package/dist/commands/rollback.js +0 -113
- package/dist/commands/rollback.js.map +0 -1
- package/dist/commands/status.d.ts +0 -7
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -262
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/trace.d.ts +0 -12
- package/dist/commands/trace.d.ts.map +0 -1
- package/dist/commands/trace.js +0 -163
- package/dist/commands/trace.js.map +0 -1
- package/dist/commands/tracker.d.ts +0 -2
- package/dist/commands/tracker.d.ts.map +0 -1
- package/dist/commands/tracker.js +0 -28
- package/dist/commands/tracker.js.map +0 -1
- package/dist/commands/verdict.d.ts +0 -16
- package/dist/commands/verdict.d.ts.map +0 -1
- package/dist/commands/verdict.js +0 -189
- package/dist/commands/verdict.js.map +0 -1
- package/dist/commands/workspace.d.ts +0 -20
- package/dist/commands/workspace.d.ts.map +0 -1
- package/dist/commands/workspace.js +0 -142
- package/dist/commands/workspace.js.map +0 -1
- package/dist/core/constraint-set.d.ts +0 -67
- package/dist/core/constraint-set.d.ts.map +0 -1
- package/dist/core/constraint-set.js +0 -151
- package/dist/core/constraint-set.js.map +0 -1
- package/dist/core/smart-recommend.d.ts +0 -16
- package/dist/core/smart-recommend.d.ts.map +0 -1
- package/dist/core/smart-recommend.js +0 -149
- package/dist/core/smart-recommend.js.map +0 -1
- package/dist/core/task-type-registry.d.ts +0 -110
- package/dist/core/task-type-registry.d.ts.map +0 -1
- package/dist/core/task-type-registry.js +0 -334
- package/dist/core/task-type-registry.js.map +0 -1
- package/dist/utils/mermaid-render.d.ts +0 -39
- package/dist/utils/mermaid-render.d.ts.map +0 -1
- package/dist/utils/mermaid-render.js +0 -284
- package/dist/utils/mermaid-render.js.map +0 -1
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateRecommendations = generateRecommendations;
|
|
4
|
-
exports.printRecommendations = printRecommendations;
|
|
5
|
-
/**
|
|
6
|
-
* Smart Recommend — 智能推荐
|
|
7
|
-
* v6.96.0: 基于项目状态和使用模式,给出操作建议
|
|
8
|
-
*/
|
|
9
|
-
const path_1 = require("path");
|
|
10
|
-
const fs_extra_1 = require("fs-extra");
|
|
11
|
-
const logger_1 = require("../utils/logger");
|
|
12
|
-
const code_graph_1 = require("./code-graph");
|
|
13
|
-
const notification_1 = require("./notification");
|
|
14
|
-
const lock_manager_1 = require("./lock-manager");
|
|
15
|
-
const usage_analytics_1 = require("./usage-analytics");
|
|
16
|
-
/**
|
|
17
|
-
* 基于项目状态生成智能推荐
|
|
18
|
-
*/
|
|
19
|
-
async function generateRecommendations(cwd) {
|
|
20
|
-
const recommendations = [];
|
|
21
|
-
// 1. 检查代码图谱时效性
|
|
22
|
-
try {
|
|
23
|
-
const graph = await (0, code_graph_1.loadCodeGraph)(cwd);
|
|
24
|
-
if (!graph) {
|
|
25
|
-
recommendations.push({
|
|
26
|
-
priority: 'high',
|
|
27
|
-
icon: '🗺️',
|
|
28
|
-
title: '构建代码知识图谱',
|
|
29
|
-
description: '代码知识图谱缺失,analyze/execute 无法利用图谱上下文',
|
|
30
|
-
action: 'speccore code-index --graph',
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
const generatedAt = new Date(graph.metadata.generatedAt).getTime();
|
|
35
|
-
const daysOld = (Date.now() - generatedAt) / (24 * 60 * 60 * 1000);
|
|
36
|
-
if (daysOld > 7) {
|
|
37
|
-
recommendations.push({
|
|
38
|
-
priority: 'medium',
|
|
39
|
-
icon: '🗺️',
|
|
40
|
-
title: '更新代码知识图谱',
|
|
41
|
-
description: `图谱已 ${Math.round(daysOld)} 天未更新,可能遗漏最新代码变更`,
|
|
42
|
-
action: 'speccore code-index --graph --incremental',
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch { /* 忽略 */ }
|
|
48
|
-
// 2. 检查未读通知
|
|
49
|
-
try {
|
|
50
|
-
const unread = await (0, notification_1.getNotifications)(cwd, { unreadOnly: true });
|
|
51
|
-
if (unread.length > 5) {
|
|
52
|
-
recommendations.push({
|
|
53
|
-
priority: 'medium',
|
|
54
|
-
icon: '🔔',
|
|
55
|
-
title: '处理未读通知',
|
|
56
|
-
description: `有 ${unread.length} 条未读变更通知,可能包含重要信息`,
|
|
57
|
-
action: 'speccore notify',
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch { /* 忽略 */ }
|
|
62
|
-
// 3. 检查活跃锁
|
|
63
|
-
try {
|
|
64
|
-
const lock = await (0, lock_manager_1.checkLock)(cwd, 'iteration');
|
|
65
|
-
if (lock) {
|
|
66
|
-
recommendations.push({
|
|
67
|
-
priority: 'high',
|
|
68
|
-
icon: '🔒',
|
|
69
|
-
title: '迭代被锁定',
|
|
70
|
-
description: `迭代被 ${lock.holder} 锁定(任务: ${lock.task || 'unknown'}),可能阻塞其他操作`,
|
|
71
|
-
action: 'speccore status 查看详情,或联系锁持有者',
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch { /* 忽略 */ }
|
|
76
|
-
// 4. 检查需求↔代码关联
|
|
77
|
-
try {
|
|
78
|
-
const linkPath = (0, path_1.join)(cwd, '.speccore', 'code-graph', 'REQ_CODE_LINK.json');
|
|
79
|
-
if (!(await (0, fs_extra_1.pathExists)(linkPath))) {
|
|
80
|
-
recommendations.push({
|
|
81
|
-
priority: 'low',
|
|
82
|
-
icon: '🔗',
|
|
83
|
-
title: '建立需求↔代码关联',
|
|
84
|
-
description: '需求与代码的关联映射尚未生成',
|
|
85
|
-
action: '在代码图谱构建后,调用 linkRequirementsToCode()',
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
catch { /* 忽略 */ }
|
|
90
|
-
// 5. 检查 CONSTITUTION.md 更新
|
|
91
|
-
try {
|
|
92
|
-
const constPath = (0, path_1.join)(cwd, '.speccore', 'CONSTITUTION.md');
|
|
93
|
-
if (await (0, fs_extra_1.pathExists)(constPath)) {
|
|
94
|
-
const s = await (0, fs_extra_1.stat)(constPath);
|
|
95
|
-
const daysOld = (Date.now() - s.mtime.getTime()) / (24 * 60 * 60 * 1000);
|
|
96
|
-
if (daysOld > 30) {
|
|
97
|
-
recommendations.push({
|
|
98
|
-
priority: 'low',
|
|
99
|
-
icon: '📜',
|
|
100
|
-
title: '更新项目宪法',
|
|
101
|
-
description: `CONSTITUTION.md 已 ${Math.round(daysOld)} 天未更新,建议 review 技术栈和端列表`,
|
|
102
|
-
action: 'review .speccore/CONSTITUTION.md',
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
catch { /* 忽略 */ }
|
|
108
|
-
// 6. 使用模式推荐
|
|
109
|
-
try {
|
|
110
|
-
const report = await (0, usage_analytics_1.generateUsageReport)(cwd, 7);
|
|
111
|
-
for (const rec of report.recommendations.slice(0, 2)) {
|
|
112
|
-
if (rec.includes('code-index')) {
|
|
113
|
-
// 已在上面的图谱检查中覆盖
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
recommendations.push({
|
|
117
|
-
priority: 'medium',
|
|
118
|
-
icon: '📊',
|
|
119
|
-
title: '使用模式建议',
|
|
120
|
-
description: rec,
|
|
121
|
-
action: 'speccore recommend --analytics 查看详细报告',
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
catch { /* 忽略 */ }
|
|
126
|
-
// 按优先级排序
|
|
127
|
-
const priorityOrder = { high: 0, medium: 1, low: 2 };
|
|
128
|
-
return recommendations.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* 打印推荐列表
|
|
132
|
-
*/
|
|
133
|
-
function printRecommendations(recommendations) {
|
|
134
|
-
if (recommendations.length === 0) {
|
|
135
|
-
logger_1.logger.info('✅ 暂无待处理建议,项目状态良好');
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
logger_1.logger.info('');
|
|
139
|
-
logger_1.logger.info(`💡 智能推荐 (${recommendations.length} 条)`);
|
|
140
|
-
logger_1.logger.info('');
|
|
141
|
-
for (const rec of recommendations) {
|
|
142
|
-
const priorityLabel = rec.priority === 'high' ? '【高】' : rec.priority === 'medium' ? '【中】' : '【低】';
|
|
143
|
-
logger_1.logger.info(`${rec.icon} ${priorityLabel} ${rec.title}`);
|
|
144
|
-
logger_1.logger.info(` ${rec.description}`);
|
|
145
|
-
logger_1.logger.info(` 👉 ${rec.action}`);
|
|
146
|
-
logger_1.logger.info('');
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=smart-recommend.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smart-recommend.js","sourceRoot":"","sources":["../../src/core/smart-recommend.ts"],"names":[],"mappings":";;AAuBA,0DA8GC;AAKD,oDAiBC;AA3JD;;;GAGG;AACH,+BAA4B;AAC5B,uCAA4C;AAC5C,4CAAyC;AACzC,6CAA6C;AAC7C,iDAAkD;AAClD,iDAA2C;AAC3C,uDAAwD;AAUxD;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAAC,GAAW;IACvD,MAAM,eAAe,GAAqB,EAAE,CAAC;IAE7C,eAAe;IACf,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,eAAe,CAAC,IAAI,CAAC;gBACnB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,oCAAoC;gBACjD,MAAM,EAAE,6BAA6B;aACtC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;YACnE,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACnE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,eAAe,CAAC,IAAI,CAAC;oBACnB,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB;oBACzD,MAAM,EAAE,2CAA2C;iBACpD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpB,YAAY;IACZ,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAgB,EAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,eAAe,CAAC,IAAI,CAAC;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,KAAK,MAAM,CAAC,MAAM,mBAAmB;gBAClD,MAAM,EAAE,iBAAiB;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpB,WAAW;IACX,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAS,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,eAAe,CAAC,IAAI,CAAC;gBACnB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,OAAO,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,IAAI,IAAI,SAAS,YAAY;gBAC5E,MAAM,EAAE,8BAA8B;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpB,eAAe;IACf,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;QAC5E,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAClC,eAAe,CAAC,IAAI,CAAC;gBACnB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,gBAAgB;gBAC7B,MAAM,EAAE,sCAAsC;aAC/C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpB,2BAA2B;IAC3B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC5D,IAAI,MAAM,IAAA,qBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,MAAM,IAAA,eAAI,EAAC,SAAS,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACzE,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;gBACjB,eAAe,CAAC,IAAI,CAAC;oBACnB,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,qBAAqB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB;oBAC9E,MAAM,EAAE,kCAAkC;iBAC3C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpB,YAAY;IACZ,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,qCAAmB,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/B,eAAe;gBACf,SAAS;YACX,CAAC;YACD,eAAe,CAAC,IAAI,CAAC;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,GAAG;gBAChB,MAAM,EAAE,uCAAuC;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpB,SAAS;IACT,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACrD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,eAAiC;IACpE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,eAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,eAAM,CAAC,IAAI,CAAC,YAAY,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC;IACrD,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAClG,eAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,aAAa,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,eAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,eAAM,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnC,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TaskChain 任务类型注册表(v8.3.307+,v8.3.308 开放类型系统)
|
|
3
|
-
*
|
|
4
|
-
* 背景:SpecCore 传统任务是「代码类迭代任务」(feature/bugfix/refactor/research),
|
|
5
|
-
* 但长任务链场景下用户会混排「编码 / 写文档 / 写脚本 / 数据处理 / 做 PPT」等
|
|
6
|
-
* 异质任务。本注册表把任务类型泛化:每种类型声明自身的产出位置、验收方式、
|
|
7
|
-
* 分支策略与默认约束集,让 taskify/execute/chain 等命令按类型差异调度。
|
|
8
|
-
*
|
|
9
|
-
* v8.3.308 开放类型系统:
|
|
10
|
-
* - 内置类型(8 种)由本文件定义,语义向后兼容
|
|
11
|
-
* - 用户自定义类型:在 .speccore/GLOBAL/TASK_TYPES/{类型名}.md 中声明定义,
|
|
12
|
-
* resolveTaskTypeDefinition 按「内置 → 自定义定义文件 → 通用非代码回退」解析
|
|
13
|
-
* - 关键原则:非系统定义的类型默认与代码世界绝缘——不建分支、不需要端拆分、
|
|
14
|
-
* 不需要技术规格,除非任务 spec 中显式声明 code: true(parseSpecCodeDeclaration)
|
|
15
|
-
*
|
|
16
|
-
* 设计原则:
|
|
17
|
-
* - 原有 4 种代码类型语义完全不变(向后兼容)
|
|
18
|
-
* - 非代码类型走同一调度链路,但跳过分支/端拆分/技术规格
|
|
19
|
-
* - 约束集(constraints)是「共同前提约束」的声明载体:执行同类任务时
|
|
20
|
-
* 约束集加载器(constraint-set.ts)会重新读取,保证上下文不随会话漂移
|
|
21
|
-
*/
|
|
22
|
-
export type TaskCategory = 'code' | 'doc' | 'research' | 'script' | 'data' | 'custom';
|
|
23
|
-
export interface TaskTypeDefinition {
|
|
24
|
-
/** 类型 ID(与 TASK_TYPES / .meta/type 对齐) */
|
|
25
|
-
type: string;
|
|
26
|
-
/** 泛化类别(决定执行形态) */
|
|
27
|
-
category: TaskCategory;
|
|
28
|
-
/** 中文显示名 */
|
|
29
|
-
label: string;
|
|
30
|
-
/** 产出目录(相对项目根,如 src/、docs/、scripts/、presentations/) */
|
|
31
|
-
outputDir: string;
|
|
32
|
-
/** 验收方式描述(写入任务 spec,供执行 AI 与 chain 校验参照) */
|
|
33
|
-
acceptance: string;
|
|
34
|
-
/** Git 分支类型(needsBranch=true 时用于创建分支,如 feature/bugfix/docs) */
|
|
35
|
-
branchType: string;
|
|
36
|
-
/** 是否创建 git 分支(v8.3.308: 非代码类型默认 false,spec code: true 可覆盖) */
|
|
37
|
-
needsBranch: boolean;
|
|
38
|
-
/** 是否需要端子目录(代码类需要按端拆分,文档/脚本类不需要) */
|
|
39
|
-
needsPlatforms: boolean;
|
|
40
|
-
/** 是否需要 00-specs 技术规格(文档/脚本类只需 REQ.md) */
|
|
41
|
-
needsTechSpec: boolean;
|
|
42
|
-
/** 默认约束集(执行时自动注入,任务 spec 可额外声明追加) */
|
|
43
|
-
defaultConstraints: string[];
|
|
44
|
-
/** 是否内置类型(false = 用户自定义) */
|
|
45
|
-
builtin: boolean;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* 任务类型注册表 — 内置类型单一事实来源
|
|
49
|
-
*
|
|
50
|
-
* 约束集命名约定:`{约束名}` 对应 .speccore/GLOBAL/CONSTRAINTS/{约束名}.md,
|
|
51
|
-
* 内置约束由 init 生成,用户可按团队规范增改。
|
|
52
|
-
*/
|
|
53
|
-
export declare const TASK_TYPE_REGISTRY: Record<string, TaskTypeDefinition>;
|
|
54
|
-
/** 全部内置任务类型 ID 列表 */
|
|
55
|
-
export declare const ALL_TASK_TYPES: string[];
|
|
56
|
-
/**
|
|
57
|
-
* 获取任务类型定义(同步版:内置 → 通用非代码回退)
|
|
58
|
-
*
|
|
59
|
-
* 不读自定义定义文件(需 I/O),供 task new 等创建侧使用;执行侧请用
|
|
60
|
-
* resolveTaskTypeDefinition(异步,含自定义定义文件解析)。
|
|
61
|
-
*/
|
|
62
|
-
export declare function getTaskTypeDefinition(type: string): TaskTypeDefinition;
|
|
63
|
-
/**
|
|
64
|
-
* 通用非代码回退定义 —— 未知类型一律按「与代码世界绝缘」处理
|
|
65
|
-
*
|
|
66
|
-
* v8.3.308 核心原则:只要不是系统定义的类型,默认不建分支、不需要端拆分、
|
|
67
|
-
* 不需要技术规格;spec 显式声明 code: true 才切换为代码形态。
|
|
68
|
-
*/
|
|
69
|
-
export declare function buildGenericDefinition(type: string): TaskTypeDefinition;
|
|
70
|
-
/** 自定义类型定义目录(相对项目根) */
|
|
71
|
-
export declare const CUSTOM_TYPES_DIR = ".speccore/GLOBAL/TASK_TYPES";
|
|
72
|
-
/**
|
|
73
|
-
* 解析自定义类型定义文件(.speccore/GLOBAL/TASK_TYPES/{类型名}.md)
|
|
74
|
-
*
|
|
75
|
-
* 格式:YAML frontmatter 声明字段,正文为类型说明(可选)。示例:
|
|
76
|
-
*
|
|
77
|
-
* ---
|
|
78
|
-
* label: 演示文稿
|
|
79
|
-
* category: doc
|
|
80
|
-
* outputDir: presentations/
|
|
81
|
-
* acceptance: 页数达标 + 每页含标题要点
|
|
82
|
-
* needsBranch: false
|
|
83
|
-
* needsPlatforms: false
|
|
84
|
-
* needsTechSpec: false
|
|
85
|
-
* constraints: [doc-standards, ppt-style]
|
|
86
|
-
* ---
|
|
87
|
-
* 正文说明……
|
|
88
|
-
*/
|
|
89
|
-
export declare function parseCustomTypeDefinition(type: string, content: string): TaskTypeDefinition | null;
|
|
90
|
-
/**
|
|
91
|
-
* 解析任务类型定义(异步版,执行侧使用)
|
|
92
|
-
*
|
|
93
|
-
* 优先级:内置注册表 → 用户自定义定义文件 → 通用非代码回退。
|
|
94
|
-
* 自定义定义文件不存在/无 frontmatter 时静默回退,不阻断调度。
|
|
95
|
-
*/
|
|
96
|
-
export declare function resolveTaskTypeDefinition(type: string, cwd?: string): Promise<TaskTypeDefinition>;
|
|
97
|
-
/**
|
|
98
|
-
* 解析任务 spec 中的「写代码」显式声明(v8.3.308)
|
|
99
|
-
*
|
|
100
|
-
* 非系统定义类型默认与代码世界绝缘;任务 spec 声明 code: true(或 needsCode: true)
|
|
101
|
-
* 时切换为代码形态(建分支、写源码路径、注入编码约束)。
|
|
102
|
-
*
|
|
103
|
-
* 支持两种声明:
|
|
104
|
-
* - YAML frontmatter: code: true / needsCode: true
|
|
105
|
-
* - 行内声明: - 需要写代码: true
|
|
106
|
-
*/
|
|
107
|
-
export declare function parseSpecCodeDeclaration(specContent: string): boolean;
|
|
108
|
-
/** 内置约束集清单(init 时生成到 .speccore/GLOBAL/CONSTRAINTS/) */
|
|
109
|
-
export declare const BUILTIN_CONSTRAINTS: Record<string, string>;
|
|
110
|
-
//# sourceMappingURL=task-type-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-type-registry.d.ts","sourceRoot":"","sources":["../../src/core/task-type-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,WAAW,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,0CAA0C;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,4BAA4B;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CA0GjE,CAAC;AAEF,qBAAqB;AACrB,eAAO,MAAM,cAAc,UAAkC,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAcvE;AAMD,uBAAuB;AACvB,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAE9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAiClG;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAUvG;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CASrE;AAED,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuDtD,CAAC"}
|
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* TaskChain 任务类型注册表(v8.3.307+,v8.3.308 开放类型系统)
|
|
4
|
-
*
|
|
5
|
-
* 背景:SpecCore 传统任务是「代码类迭代任务」(feature/bugfix/refactor/research),
|
|
6
|
-
* 但长任务链场景下用户会混排「编码 / 写文档 / 写脚本 / 数据处理 / 做 PPT」等
|
|
7
|
-
* 异质任务。本注册表把任务类型泛化:每种类型声明自身的产出位置、验收方式、
|
|
8
|
-
* 分支策略与默认约束集,让 taskify/execute/chain 等命令按类型差异调度。
|
|
9
|
-
*
|
|
10
|
-
* v8.3.308 开放类型系统:
|
|
11
|
-
* - 内置类型(8 种)由本文件定义,语义向后兼容
|
|
12
|
-
* - 用户自定义类型:在 .speccore/GLOBAL/TASK_TYPES/{类型名}.md 中声明定义,
|
|
13
|
-
* resolveTaskTypeDefinition 按「内置 → 自定义定义文件 → 通用非代码回退」解析
|
|
14
|
-
* - 关键原则:非系统定义的类型默认与代码世界绝缘——不建分支、不需要端拆分、
|
|
15
|
-
* 不需要技术规格,除非任务 spec 中显式声明 code: true(parseSpecCodeDeclaration)
|
|
16
|
-
*
|
|
17
|
-
* 设计原则:
|
|
18
|
-
* - 原有 4 种代码类型语义完全不变(向后兼容)
|
|
19
|
-
* - 非代码类型走同一调度链路,但跳过分支/端拆分/技术规格
|
|
20
|
-
* - 约束集(constraints)是「共同前提约束」的声明载体:执行同类任务时
|
|
21
|
-
* 约束集加载器(constraint-set.ts)会重新读取,保证上下文不随会话漂移
|
|
22
|
-
*/
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.BUILTIN_CONSTRAINTS = exports.CUSTOM_TYPES_DIR = exports.ALL_TASK_TYPES = exports.TASK_TYPE_REGISTRY = void 0;
|
|
25
|
-
exports.getTaskTypeDefinition = getTaskTypeDefinition;
|
|
26
|
-
exports.buildGenericDefinition = buildGenericDefinition;
|
|
27
|
-
exports.parseCustomTypeDefinition = parseCustomTypeDefinition;
|
|
28
|
-
exports.resolveTaskTypeDefinition = resolveTaskTypeDefinition;
|
|
29
|
-
exports.parseSpecCodeDeclaration = parseSpecCodeDeclaration;
|
|
30
|
-
const path_1 = require("path");
|
|
31
|
-
const fs_extra_1 = require("fs-extra");
|
|
32
|
-
const task_utils_1 = require("../utils/task-utils");
|
|
33
|
-
/**
|
|
34
|
-
* 任务类型注册表 — 内置类型单一事实来源
|
|
35
|
-
*
|
|
36
|
-
* 约束集命名约定:`{约束名}` 对应 .speccore/GLOBAL/CONSTRAINTS/{约束名}.md,
|
|
37
|
-
* 内置约束由 init 生成,用户可按团队规范增改。
|
|
38
|
-
*/
|
|
39
|
-
exports.TASK_TYPE_REGISTRY = {
|
|
40
|
-
feature: {
|
|
41
|
-
type: 'feature',
|
|
42
|
-
category: 'code',
|
|
43
|
-
label: '功能开发',
|
|
44
|
-
outputDir: '{code_path}', // 由 CONSTITUTION/PROJECT.yaml 源码路径解析
|
|
45
|
-
acceptance: '编译通过 + 单元测试通过 + 接口契约一致',
|
|
46
|
-
branchType: 'feature',
|
|
47
|
-
needsBranch: true,
|
|
48
|
-
needsPlatforms: true,
|
|
49
|
-
needsTechSpec: true,
|
|
50
|
-
defaultConstraints: ['coding-standards'],
|
|
51
|
-
builtin: true,
|
|
52
|
-
},
|
|
53
|
-
bugfix: {
|
|
54
|
-
type: 'bugfix',
|
|
55
|
-
category: 'code',
|
|
56
|
-
label: '缺陷修复',
|
|
57
|
-
outputDir: '{code_path}',
|
|
58
|
-
acceptance: '复现步骤修复 + 回归测试通过 + 无新缺陷引入',
|
|
59
|
-
branchType: 'bugfix',
|
|
60
|
-
needsBranch: true,
|
|
61
|
-
needsPlatforms: true,
|
|
62
|
-
needsTechSpec: true,
|
|
63
|
-
defaultConstraints: ['coding-standards'],
|
|
64
|
-
builtin: true,
|
|
65
|
-
},
|
|
66
|
-
refactor: {
|
|
67
|
-
type: 'refactor',
|
|
68
|
-
category: 'code',
|
|
69
|
-
label: '代码重构',
|
|
70
|
-
outputDir: '{code_path}',
|
|
71
|
-
acceptance: '行为不变(原测试全过)+ 结构改善',
|
|
72
|
-
branchType: 'refactor',
|
|
73
|
-
needsBranch: true,
|
|
74
|
-
needsPlatforms: true,
|
|
75
|
-
needsTechSpec: true,
|
|
76
|
-
defaultConstraints: ['coding-standards'],
|
|
77
|
-
builtin: true,
|
|
78
|
-
},
|
|
79
|
-
research: {
|
|
80
|
-
type: 'research',
|
|
81
|
-
category: 'research',
|
|
82
|
-
label: '技术调研',
|
|
83
|
-
outputDir: '{iteration_dir}/research/',
|
|
84
|
-
acceptance: '调研报告完整(背景/假设/结论/建议)+ 结论可执行',
|
|
85
|
-
branchType: 'research',
|
|
86
|
-
needsBranch: true,
|
|
87
|
-
needsPlatforms: false,
|
|
88
|
-
needsTechSpec: false,
|
|
89
|
-
defaultConstraints: ['research-standards'],
|
|
90
|
-
builtin: true,
|
|
91
|
-
},
|
|
92
|
-
doc: {
|
|
93
|
-
type: 'doc',
|
|
94
|
-
category: 'doc',
|
|
95
|
-
label: '文档编写',
|
|
96
|
-
outputDir: 'docs/',
|
|
97
|
-
acceptance: '文档结构完整 + 内容准确 + 无死链/占位符残留',
|
|
98
|
-
branchType: 'docs',
|
|
99
|
-
needsBranch: false,
|
|
100
|
-
needsPlatforms: false,
|
|
101
|
-
needsTechSpec: false,
|
|
102
|
-
defaultConstraints: ['doc-standards'],
|
|
103
|
-
builtin: true,
|
|
104
|
-
},
|
|
105
|
-
script: {
|
|
106
|
-
type: 'script',
|
|
107
|
-
category: 'script',
|
|
108
|
-
label: '脚本开发',
|
|
109
|
-
outputDir: 'scripts/',
|
|
110
|
-
acceptance: '脚本可运行 + 输入校验完整 + 失败有明确退出码',
|
|
111
|
-
branchType: 'feature',
|
|
112
|
-
needsBranch: false,
|
|
113
|
-
needsPlatforms: false,
|
|
114
|
-
needsTechSpec: false,
|
|
115
|
-
defaultConstraints: ['script-standards'],
|
|
116
|
-
builtin: true,
|
|
117
|
-
},
|
|
118
|
-
data: {
|
|
119
|
-
type: 'data',
|
|
120
|
-
category: 'data',
|
|
121
|
-
label: '数据处理',
|
|
122
|
-
outputDir: 'outputs/',
|
|
123
|
-
acceptance: '数据完整性校验通过 + 结果可复现 + 异常数据有隔离',
|
|
124
|
-
branchType: 'feature',
|
|
125
|
-
needsBranch: false,
|
|
126
|
-
needsPlatforms: false,
|
|
127
|
-
needsTechSpec: false,
|
|
128
|
-
defaultConstraints: ['data-standards'],
|
|
129
|
-
builtin: true,
|
|
130
|
-
},
|
|
131
|
-
// v8.3.308+: 演示文稿(PPT)——Markdown 大纲 + 逐页内容,渲染交给用户
|
|
132
|
-
presentation: {
|
|
133
|
-
type: 'presentation',
|
|
134
|
-
category: 'doc',
|
|
135
|
-
label: '演示文稿',
|
|
136
|
-
outputDir: 'presentations/',
|
|
137
|
-
acceptance: '页数达标(spec 声明,未声明默认 ≥8 页)+ 每页含标题与 3-5 要点 + 无占位符残留',
|
|
138
|
-
branchType: '',
|
|
139
|
-
needsBranch: false,
|
|
140
|
-
needsPlatforms: false,
|
|
141
|
-
needsTechSpec: false,
|
|
142
|
-
defaultConstraints: ['doc-standards', 'presentation-standards'],
|
|
143
|
-
builtin: true,
|
|
144
|
-
},
|
|
145
|
-
};
|
|
146
|
-
/** 全部内置任务类型 ID 列表 */
|
|
147
|
-
exports.ALL_TASK_TYPES = Object.keys(exports.TASK_TYPE_REGISTRY);
|
|
148
|
-
/**
|
|
149
|
-
* 获取任务类型定义(同步版:内置 → 通用非代码回退)
|
|
150
|
-
*
|
|
151
|
-
* 不读自定义定义文件(需 I/O),供 task new 等创建侧使用;执行侧请用
|
|
152
|
-
* resolveTaskTypeDefinition(异步,含自定义定义文件解析)。
|
|
153
|
-
*/
|
|
154
|
-
function getTaskTypeDefinition(type) {
|
|
155
|
-
return exports.TASK_TYPE_REGISTRY[type] || buildGenericDefinition(type);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* 通用非代码回退定义 —— 未知类型一律按「与代码世界绝缘」处理
|
|
159
|
-
*
|
|
160
|
-
* v8.3.308 核心原则:只要不是系统定义的类型,默认不建分支、不需要端拆分、
|
|
161
|
-
* 不需要技术规格;spec 显式声明 code: true 才切换为代码形态。
|
|
162
|
-
*/
|
|
163
|
-
function buildGenericDefinition(type) {
|
|
164
|
-
return {
|
|
165
|
-
type: type || 'custom',
|
|
166
|
-
category: 'custom',
|
|
167
|
-
label: type || '自定义任务',
|
|
168
|
-
outputDir: 'outputs/',
|
|
169
|
-
acceptance: '按任务 spec 描述的交付物与验收标准完成(见 REQ.md 验收标准节)',
|
|
170
|
-
branchType: '',
|
|
171
|
-
needsBranch: false,
|
|
172
|
-
needsPlatforms: false,
|
|
173
|
-
needsTechSpec: false,
|
|
174
|
-
defaultConstraints: [],
|
|
175
|
-
builtin: false,
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
// ═══════════════════════════════════════════════════════════
|
|
179
|
-
// 用户自定义类型定义文件(v8.3.308)
|
|
180
|
-
// ═══════════════════════════════════════════════════════════
|
|
181
|
-
/** 自定义类型定义目录(相对项目根) */
|
|
182
|
-
exports.CUSTOM_TYPES_DIR = '.speccore/GLOBAL/TASK_TYPES';
|
|
183
|
-
/**
|
|
184
|
-
* 解析自定义类型定义文件(.speccore/GLOBAL/TASK_TYPES/{类型名}.md)
|
|
185
|
-
*
|
|
186
|
-
* 格式:YAML frontmatter 声明字段,正文为类型说明(可选)。示例:
|
|
187
|
-
*
|
|
188
|
-
* ---
|
|
189
|
-
* label: 演示文稿
|
|
190
|
-
* category: doc
|
|
191
|
-
* outputDir: presentations/
|
|
192
|
-
* acceptance: 页数达标 + 每页含标题要点
|
|
193
|
-
* needsBranch: false
|
|
194
|
-
* needsPlatforms: false
|
|
195
|
-
* needsTechSpec: false
|
|
196
|
-
* constraints: [doc-standards, ppt-style]
|
|
197
|
-
* ---
|
|
198
|
-
* 正文说明……
|
|
199
|
-
*/
|
|
200
|
-
function parseCustomTypeDefinition(type, content) {
|
|
201
|
-
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
202
|
-
if (!fmMatch)
|
|
203
|
-
return null;
|
|
204
|
-
const fm = fmMatch[1];
|
|
205
|
-
const pick = (key) => {
|
|
206
|
-
const m = fm.match(new RegExp(`^${key}\\s*:\\s*(.+)$`, 'm'));
|
|
207
|
-
return m ? m[1].trim().replace(/^['"]|['"]$/g, '') : undefined;
|
|
208
|
-
};
|
|
209
|
-
const pickBool = (key) => {
|
|
210
|
-
const v = pick(key);
|
|
211
|
-
if (v === undefined)
|
|
212
|
-
return undefined;
|
|
213
|
-
return ['true', 'yes', '1'].includes(v.toLowerCase());
|
|
214
|
-
};
|
|
215
|
-
const pickList = (key) => {
|
|
216
|
-
const v = pick(key);
|
|
217
|
-
if (v === undefined)
|
|
218
|
-
return undefined;
|
|
219
|
-
return v.replace(/^\[|\]$/g, '').split(',').map(s => s.trim().replace(/['"]/g, '')).filter(Boolean);
|
|
220
|
-
};
|
|
221
|
-
const label = pick('label') || type;
|
|
222
|
-
const base = buildGenericDefinition(type);
|
|
223
|
-
return {
|
|
224
|
-
...base,
|
|
225
|
-
category: pick('category') || 'custom',
|
|
226
|
-
label,
|
|
227
|
-
outputDir: pick('outputDir') || 'outputs/',
|
|
228
|
-
acceptance: pick('acceptance') || base.acceptance,
|
|
229
|
-
branchType: pick('branchType') || '',
|
|
230
|
-
needsBranch: pickBool('needsBranch') ?? false,
|
|
231
|
-
needsPlatforms: pickBool('needsPlatforms') ?? false,
|
|
232
|
-
needsTechSpec: pickBool('needsTechSpec') ?? false,
|
|
233
|
-
defaultConstraints: pickList('constraints') ?? [],
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* 解析任务类型定义(异步版,执行侧使用)
|
|
238
|
-
*
|
|
239
|
-
* 优先级:内置注册表 → 用户自定义定义文件 → 通用非代码回退。
|
|
240
|
-
* 自定义定义文件不存在/无 frontmatter 时静默回退,不阻断调度。
|
|
241
|
-
*/
|
|
242
|
-
async function resolveTaskTypeDefinition(type, cwd) {
|
|
243
|
-
if (exports.TASK_TYPE_REGISTRY[type])
|
|
244
|
-
return exports.TASK_TYPE_REGISTRY[type];
|
|
245
|
-
try {
|
|
246
|
-
const fp = (0, path_1.join)(cwd || (0, task_utils_1.getProjectRoot)(), exports.CUSTOM_TYPES_DIR, `${type}.md`);
|
|
247
|
-
if (await (0, fs_extra_1.pathExists)(fp)) {
|
|
248
|
-
const parsed = parseCustomTypeDefinition(type, await (0, fs_extra_1.readFile)(fp, 'utf-8'));
|
|
249
|
-
if (parsed)
|
|
250
|
-
return parsed;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
catch { /* 忽略,回退通用定义 */ }
|
|
254
|
-
return buildGenericDefinition(type);
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* 解析任务 spec 中的「写代码」显式声明(v8.3.308)
|
|
258
|
-
*
|
|
259
|
-
* 非系统定义类型默认与代码世界绝缘;任务 spec 声明 code: true(或 needsCode: true)
|
|
260
|
-
* 时切换为代码形态(建分支、写源码路径、注入编码约束)。
|
|
261
|
-
*
|
|
262
|
-
* 支持两种声明:
|
|
263
|
-
* - YAML frontmatter: code: true / needsCode: true
|
|
264
|
-
* - 行内声明: - 需要写代码: true
|
|
265
|
-
*/
|
|
266
|
-
function parseSpecCodeDeclaration(specContent) {
|
|
267
|
-
const fmMatch = specContent.match(/^---\n([\s\S]*?)\n---/);
|
|
268
|
-
if (fmMatch) {
|
|
269
|
-
const fm = fmMatch[1];
|
|
270
|
-
const m = fm.match(/^(code|needsCode)\s*:\s*true\s*$/m);
|
|
271
|
-
if (m)
|
|
272
|
-
return true;
|
|
273
|
-
}
|
|
274
|
-
const inline = specContent.match(/^[-•]\s*\*{0,2}(需要写代码|需要编码|写代码)\*{0,2}\s*[::]\s*(true|是|yes)\s*$/im);
|
|
275
|
-
return !!inline;
|
|
276
|
-
}
|
|
277
|
-
/** 内置约束集清单(init 时生成到 .speccore/GLOBAL/CONSTRAINTS/) */
|
|
278
|
-
exports.BUILTIN_CONSTRAINTS = {
|
|
279
|
-
'coding-standards': `# 编码标准约束(内置)
|
|
280
|
-
|
|
281
|
-
> 本约束在每次执行代码类任务(feature/bugfix/refactor)前自动注入,保证上下文一致。
|
|
282
|
-
|
|
283
|
-
- 遵循 CONSTITUTION.md 的命名规范、端名标准与错误码体系
|
|
284
|
-
- 代码写入 PROJECT.yaml 声明的源码路径,禁止写入迭代目录
|
|
285
|
-
- 改动前先读对应模块的技术文档与业务规则(RULES/ + BUSINESS_RULES/)
|
|
286
|
-
- 每个任务完成后保证编译通过、单元测试全绿
|
|
287
|
-
`,
|
|
288
|
-
'doc-standards': `# 文档标准约束(内置)
|
|
289
|
-
|
|
290
|
-
> 本约束在每次执行文档类任务(doc/presentation)前自动注入。
|
|
291
|
-
|
|
292
|
-
- 使用标准 Markdown,标题层级清晰,表格对齐
|
|
293
|
-
- 术语与既有文档保持一致,引用使用相对路径
|
|
294
|
-
- 禁止占位符残留(TODO、待补充、xxx)
|
|
295
|
-
- 所有链接必须有效(本地文件存在、外链可访问)
|
|
296
|
-
`,
|
|
297
|
-
'presentation-standards': `# 演示文稿约束(内置)
|
|
298
|
-
|
|
299
|
-
> 本约束在每次执行演示文稿任务(presentation)前自动注入。
|
|
300
|
-
|
|
301
|
-
- 产出 Markdown 大纲 + 逐页内容(presentation.md),不生成二进制 PPT
|
|
302
|
-
- 每页必须有标题与 3-5 个要点,禁止整段文字上页
|
|
303
|
-
- 页数按 spec 要求(未声明时 ≥ 8 页),首页为封面、末页为总结
|
|
304
|
-
- 配图以文字建议描述("此处配图:…"),不嵌入实际图片
|
|
305
|
-
- 演讲稿与页内容分离:页内容精简,口播内容放每页的「口播备注」小节
|
|
306
|
-
`,
|
|
307
|
-
'script-standards': `# 脚本标准约束(内置)
|
|
308
|
-
|
|
309
|
-
> 本约束在每次执行脚本类任务(script)前自动注入。
|
|
310
|
-
|
|
311
|
-
- 脚本入口明确,支持 --help 与参数校验
|
|
312
|
-
- 失败时输出明确错误信息并以非零退出码退出
|
|
313
|
-
- 幂等可重跑,不产生脏数据
|
|
314
|
-
- 不在脚本内硬编码密钥/令牌
|
|
315
|
-
`,
|
|
316
|
-
'data-standards': `# 数据处理约束(内置)
|
|
317
|
-
|
|
318
|
-
> 本约束在每次执行数据处理任务(data)前自动注入。
|
|
319
|
-
|
|
320
|
-
- 处理前校验数据完整性(行数/字段/编码)
|
|
321
|
-
- 结果可复现:记录输入快照与处理参数
|
|
322
|
-
- 异常数据隔离输出(不静默丢弃),并给出异常统计
|
|
323
|
-
- 产出物落盘 outputs/ 并附带说明文件
|
|
324
|
-
`,
|
|
325
|
-
'research-standards': `# 调研约束(内置)
|
|
326
|
-
|
|
327
|
-
> 本约束在每次执行调研任务(research)前自动注入。
|
|
328
|
-
|
|
329
|
-
- 结论必须基于可验证的来源(文档/代码/实验),禁止臆测
|
|
330
|
-
- 每个候选方案给出利弊对比与推荐理由
|
|
331
|
-
- 调研产出为决策服务:结论 + 建议 + 风险
|
|
332
|
-
`,
|
|
333
|
-
};
|
|
334
|
-
//# sourceMappingURL=task-type-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-type-registry.js","sourceRoot":"","sources":["../../src/core/task-type-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* mermaid-render — Mermaid 图表渲染工具
|
|
3
|
-
* v7.0.0+: 将 .mmd 文件或 Markdown 中的 Mermaid 代码块渲染为 HTML
|
|
4
|
-
*
|
|
5
|
-
* 用法:
|
|
6
|
-
* speccore graph render <file.mmd> 渲染单个 .mmd 文件
|
|
7
|
-
* speccore graph render --all 批量渲染 diagrams/ 目录下所有 .mmd
|
|
8
|
-
* speccore graph render --extract <file.md> 从 Markdown 提取 Mermaid 并渲染
|
|
9
|
-
*/
|
|
10
|
-
/** 渲染选项 */
|
|
11
|
-
export interface RenderOptions {
|
|
12
|
-
/** 输出目录 */
|
|
13
|
-
outputDir?: string;
|
|
14
|
-
/** 页面标题 */
|
|
15
|
-
title?: string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* 渲染单个 .mmd 文件为 HTML
|
|
19
|
-
*/
|
|
20
|
-
export declare function renderMmdFile(filePath: string, options?: RenderOptions): Promise<string | null>;
|
|
21
|
-
/**
|
|
22
|
-
* 从 Markdown 文件提取 Mermaid 代码块并渲染
|
|
23
|
-
*/
|
|
24
|
-
export declare function renderFromMarkdown(mdFilePath: string, options?: RenderOptions): Promise<string | null>;
|
|
25
|
-
/**
|
|
26
|
-
* 批量渲染目录下所有 .mmd 文件
|
|
27
|
-
*/
|
|
28
|
-
export declare function renderAllMmdInDir(dirPath: string, options?: RenderOptions): Promise<{
|
|
29
|
-
file: string;
|
|
30
|
-
output: string;
|
|
31
|
-
}[]>;
|
|
32
|
-
/**
|
|
33
|
-
* 批量渲染目录下所有 Markdown 文件中的 Mermaid
|
|
34
|
-
*/
|
|
35
|
-
export declare function renderAllMarkdownInDir(dirPath: string, options?: RenderOptions): Promise<{
|
|
36
|
-
file: string;
|
|
37
|
-
output: string;
|
|
38
|
-
}[]>;
|
|
39
|
-
//# sourceMappingURL=mermaid-render.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid-render.d.ts","sourceRoot":"","sources":["../../src/utils/mermaid-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuHH,WAAW;AACX,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CA2B7C;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CA2B7C"}
|