speccore 8.3.165 → 8.3.167
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/analyze.d.ts +1 -0
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +65 -8
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/execute.js +91 -2
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/iteration/split.d.ts.map +1 -1
- package/dist/commands/iteration/split.js +34 -1
- package/dist/commands/iteration/split.js.map +1 -1
- package/dist/core/execution-state.d.ts +4 -0
- package/dist/core/execution-state.d.ts.map +1 -1
- package/dist/core/execution-state.js +4 -2
- package/dist/core/execution-state.js.map +1 -1
- package/dist/core/pipeline-engine.d.ts +2 -0
- package/dist/core/pipeline-engine.d.ts.map +1 -1
- package/dist/core/pipeline-engine.js +47 -6
- package/dist/core/pipeline-engine.js.map +1 -1
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +13 -2
- package/dist/core/prompt-builder.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAuEA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAuGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/analyze.js
CHANGED
|
@@ -844,11 +844,26 @@ async function analyzeCommand(options) {
|
|
|
844
844
|
initStep = 'init';
|
|
845
845
|
}
|
|
846
846
|
else {
|
|
847
|
-
// 迭代层:使用 createAnalyzePipeline(支持契约先行 + 逐端推进 + 变更感知 + 关键路径优先 +
|
|
847
|
+
// 迭代层:使用 createAnalyzePipeline(支持契约先行 + 逐端推进 + 变更感知 + 关键路径优先 + 需求澄清 + 功能模块分批)
|
|
848
|
+
// v8.3.167+: 大项目自动启用功能模块分批
|
|
849
|
+
let features;
|
|
850
|
+
try {
|
|
851
|
+
const iterDirForFeatures = await (0, context_1.getIterationDir)(iter);
|
|
852
|
+
if (iterDirForFeatures) {
|
|
853
|
+
const { parseFeatureList } = await Promise.resolve().then(() => __importStar(require('../core/spec-paths')));
|
|
854
|
+
const featureList = await parseFeatureList(iterDirForFeatures);
|
|
855
|
+
if (featureList.length > 2) {
|
|
856
|
+
features = featureList;
|
|
857
|
+
logger_1.logger.info(`📦 检测到 ${featureList.length} 个功能模块,启用分批分析模式`);
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
catch { /* 忽略功能模块检测失败 */ }
|
|
848
862
|
const result = await (0, pipeline_engine_1.createAnalyzePipeline)(iter, _projectRoot, {
|
|
849
863
|
affectedPlatforms: affectedPlatforms && affectedPlatforms.length > 0 ? affectedPlatforms : undefined,
|
|
850
864
|
platformOrder: platformOrder && platformOrder.length > 0 ? platformOrder : undefined,
|
|
851
865
|
skipClarify: options.skipClarify,
|
|
866
|
+
features,
|
|
852
867
|
});
|
|
853
868
|
engine = result.engine;
|
|
854
869
|
steps = result.steps;
|
|
@@ -871,6 +886,8 @@ async function analyzeCommand(options) {
|
|
|
871
886
|
// 根据当前步骤生成对应的 prompt
|
|
872
887
|
let prompt;
|
|
873
888
|
const platformMatch = currentStep.match(/^platform-(.+)-prompt$/);
|
|
889
|
+
// v8.3.167+: 检测功能模块步骤
|
|
890
|
+
const featureMatch = currentStep.match(/^feature-(.+)-prompt$/);
|
|
874
891
|
if (isGlobalScope) {
|
|
875
892
|
// 全局层 Pipeline 步骤映射
|
|
876
893
|
if (currentStep === 'init' || currentStep === 'discovery') {
|
|
@@ -913,6 +930,14 @@ async function analyzeCommand(options) {
|
|
|
913
930
|
analyzeOptions: options,
|
|
914
931
|
}));
|
|
915
932
|
}
|
|
933
|
+
else if (featureMatch) {
|
|
934
|
+
// v8.3.167+: 功能模块级分析步骤
|
|
935
|
+
const featureName = featureMatch[1];
|
|
936
|
+
prompt = (0, prompt_builder_1.buildPromptText)(await (0, prompt_builder_1.buildPrompt)('analyze', {
|
|
937
|
+
iteration: iter,
|
|
938
|
+
analyzeOptions: { ...options, feature: featureName, phase: '1' },
|
|
939
|
+
}));
|
|
940
|
+
}
|
|
916
941
|
else if (currentStep === 'contract-prompt') {
|
|
917
942
|
// 契约先行阶段:基于 Phase 1 文档生成跨端契约
|
|
918
943
|
prompt = await buildContractFirstPrompt(iter);
|
|
@@ -955,17 +980,33 @@ async function analyzeCommand(options) {
|
|
|
955
980
|
? 'Phase 0/3: 需求确认'
|
|
956
981
|
: currentStep === 'phase1-prompt'
|
|
957
982
|
? 'Phase 1/3: 迭代综合文档'
|
|
958
|
-
:
|
|
959
|
-
?
|
|
960
|
-
:
|
|
961
|
-
?
|
|
962
|
-
:
|
|
983
|
+
: featureMatch
|
|
984
|
+
? `Phase 1b/3: ${featureMatch[1]} 功能模块分析`
|
|
985
|
+
: currentStep === 'contract-prompt'
|
|
986
|
+
? 'Phase 2/3: 契约定义'
|
|
987
|
+
: platformMatch
|
|
988
|
+
? `Phase 2/3: ${platformMatch[1]} 端专属文档`
|
|
989
|
+
: 'Pipeline';
|
|
963
990
|
}
|
|
964
991
|
// v8.3.160+: 步骤隔离模式,每步完成后需新会话继续
|
|
965
992
|
const finalPrompt = prompt + `\n\n## ⚠️ Pipeline 模式:步骤隔离 (${progressLabel})\n\n` +
|
|
966
993
|
`当前是 Pipeline 模式(步骤 ${currentStepIndex + 1}/${totalSteps})。` +
|
|
967
994
|
`当你通过 --apply 写入文档后,CLI 会自动输出 [SPECCORE_STEP_DONE] 标记和下一步命令。\n\n` +
|
|
968
995
|
`**看到 [SPECCORE_STEP_DONE] 后,请在新会话中执行提示的命令**,继续下一步。\n`;
|
|
996
|
+
// v8.3.166+: Phase 2 端级步骤输出端级 subagent 标记
|
|
997
|
+
// v8.3.167+: 功能模块步骤输出功能模块级 subagent 标记
|
|
998
|
+
const platformSubagent = platformMatch ? `spec-analyzer-${platformMatch[1]}` : undefined;
|
|
999
|
+
const featureSubagent = featureMatch ? `spec-analyzer-feature` : undefined;
|
|
1000
|
+
if (featureSubagent) {
|
|
1001
|
+
process.stdout.write(`[SPECCORE_SUBAGENT: ${featureSubagent}]\n`);
|
|
1002
|
+
process.stdout.write(`[SPECCORE_CONTEXT_BUDGET: 10000]\n`);
|
|
1003
|
+
process.stdout.write(`[SPECCORE_CONTEXT_TYPE: full]\n\n`);
|
|
1004
|
+
}
|
|
1005
|
+
else if (platformSubagent) {
|
|
1006
|
+
process.stdout.write(`[SPECCORE_SUBAGENT: ${platformSubagent}]\n`);
|
|
1007
|
+
process.stdout.write(`[SPECCORE_CONTEXT_BUDGET: 8000]\n`);
|
|
1008
|
+
process.stdout.write(`[SPECCORE_CONTEXT_TYPE: platform-only]\n\n`);
|
|
1009
|
+
}
|
|
969
1010
|
process.stdout.write(`[SPECCORE_PROMPT]\n${finalPrompt}`);
|
|
970
1011
|
process.exitCode = 10;
|
|
971
1012
|
return;
|
|
@@ -4468,7 +4509,13 @@ sequenceDiagram
|
|
|
4468
4509
|
const GLOBAL_DOCS = [...GLOBAL_INDEX_DOCS, ...FEATURE_OVERVIEW_DOCS_LIST];
|
|
4469
4510
|
let taskDocs = docs.filter(([n]) => includeDocs.includes(n));
|
|
4470
4511
|
if (ctx.phase === '1') {
|
|
4471
|
-
|
|
4512
|
+
if (ctx.feature) {
|
|
4513
|
+
// v8.3.167+: 功能模块级分析,只生成该模块的 overview 文档(不含全局索引)
|
|
4514
|
+
taskDocs = taskDocs.filter(([n]) => FEATURE_OVERVIEW_DOCS_LIST.includes(n));
|
|
4515
|
+
}
|
|
4516
|
+
else {
|
|
4517
|
+
taskDocs = taskDocs.filter(([n]) => GLOBAL_DOCS.includes(n));
|
|
4518
|
+
}
|
|
4472
4519
|
}
|
|
4473
4520
|
else if (ctx.phase === '2') {
|
|
4474
4521
|
taskDocs = taskDocs.filter(([n]) => PLATFORM_DOCS.includes(n));
|
|
@@ -4657,7 +4704,8 @@ sequenceDiagram
|
|
|
4657
4704
|
// overview/TECH.md: 整体架构
|
|
4658
4705
|
techDoc[1] = `# 技术架构(跨端全局)\n\n> ${iter}\n\n## 写作要求\n撰写整体技术架构,覆盖所有端的交互关系:\n- 系统整体分层设计(各端在架构中的位置)\n- 跨端交互协议(前端↔后端通信方式、数据流向)\n- 中间件选型(缓存、消息队列、网关等)\n- 数据库整体设计(核心表结构、ER 关系)\n- 技术栈选型及理由\n`;
|
|
4659
4706
|
}
|
|
4660
|
-
|
|
4707
|
+
const featureLabel = ctx.feature ? ` · 功能模块:${ctx.feature}` : '';
|
|
4708
|
+
let prompt = `\n# 任务: ${command}${task} (${taskDocs.length}个文档 · ${isTask ? `类型:${taskType}` : '迭代全量'}${ctx.phase ? ` · Phase ${ctx.phase}` : ''}${featureLabel})\n\n`;
|
|
4661
4709
|
// v8.3.160+: 注入子 Agent 角色定义
|
|
4662
4710
|
if (agentContextText) {
|
|
4663
4711
|
prompt = agentContextText + '\n\n' + prompt;
|
|
@@ -4891,6 +4939,15 @@ status: "clarified"
|
|
|
4891
4939
|
prompt += `- 如果文档内容不完整,标注"文档未提及",不要自行脑补\n`;
|
|
4892
4940
|
prompt += `- 分析过程中,始终把迭代名称当作透明信息处理,不做任何功能推断\n\n`;
|
|
4893
4941
|
prompt += `## 分析范围说明\n`;
|
|
4942
|
+
// v8.3.167+: 功能模块级分析专属指令
|
|
4943
|
+
if (ctx.feature && !isTask) {
|
|
4944
|
+
prompt += `- 当前是**功能模块级分析**,只分析「**${ctx.feature}**」功能模块\n`;
|
|
4945
|
+
prompt += `- **只生成该功能模块的 overview/ 文档**,不要分析其他功能模块\n`;
|
|
4946
|
+
prompt += `- 文档写入路径格式:\`${ctx.feature}/overview/{文件名}\`(如 \`${ctx.feature}/overview/REQUIREMENT.md\`)\n`;
|
|
4947
|
+
prompt += `- **全局索引文档(FUNCTION_MAP.md / INTERACTION_MAP.md / PLATFORMS.md)已在 Phase 1 主步骤生成,不要重复生成**\n`;
|
|
4948
|
+
prompt += `- 分析前请先 Read 全局索引文档,确保本模块内容与全局文档一致\n`;
|
|
4949
|
+
prompt += `- 如果需求文档中该模块的描述不完整,标注"文档未充分描述",不要自行脑补\n\n`;
|
|
4950
|
+
}
|
|
4894
4951
|
if (isTask) {
|
|
4895
4952
|
prompt += `- 当前是**任务级分析**,类型为 \`${taskType}\`,只需产出 ${taskDocs.length} 个文档:${taskDocs.map(([n]) => n).join('、')}\n`;
|
|
4896
4953
|
prompt += `- bugfix: 聚焦根因分析和修复验证;research: 聚焦技术调研;review: 聚焦代码审查\n`;
|