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
|
@@ -61,6 +61,8 @@ const ui_verify_1 = require("../../core/ui-verify");
|
|
|
61
61
|
// v8.3.125+: 公共同义词扩展模块(从 split.ts 提取,供全链路使用)
|
|
62
62
|
const synonyms_1 = require("../../utils/synonyms");
|
|
63
63
|
const unit_context_assembler_1 = require("../../core/unit-context-assembler");
|
|
64
|
+
// v8.3.343+: FUNCTION_MAP 解析迁至 core/function-map.ts(analyze 声明过窄检测与 taskify 共用)
|
|
65
|
+
const function_map_1 = require("../../core/function-map");
|
|
64
66
|
/**
|
|
65
67
|
* 将 AI 返回的 scope 简写映射到 CONSTITUTION.md 标准端名
|
|
66
68
|
* v6.69.3+: 解决中文简写(如 "后端"、"admin")导致目录名错误的问题
|
|
@@ -871,7 +873,7 @@ async function iterationTaskifyCommand(options) {
|
|
|
871
873
|
if (await (0, fs_extra_1.pathExists)(funcMapPath)) {
|
|
872
874
|
try {
|
|
873
875
|
const fmContent = await (0, fs_extra_1.readFile)(funcMapPath, 'utf-8');
|
|
874
|
-
const funcUnits = parseFunctionMap(fmContent, allPlatforms);
|
|
876
|
+
const funcUnits = (0, function_map_1.parseFunctionMap)(fmContent, allPlatforms);
|
|
875
877
|
if (funcUnits.length > 0) {
|
|
876
878
|
const aiUnits = new Set();
|
|
877
879
|
for (const t of tasks) {
|
|
@@ -3866,7 +3868,7 @@ subagent, contextType) {
|
|
|
3866
3868
|
let funcUnitsInjected = false;
|
|
3867
3869
|
if (await (0, fs_extra_1.pathExists)(funcMapPath)) {
|
|
3868
3870
|
const funcMapContent = await (0, fs_extra_1.readFile)(funcMapPath, 'utf-8');
|
|
3869
|
-
const funcUnits = parseFunctionMap(funcMapContent, standardPlatforms);
|
|
3871
|
+
const funcUnits = (0, function_map_1.parseFunctionMap)(funcMapContent, standardPlatforms);
|
|
3870
3872
|
if (funcUnits.length > 0) {
|
|
3871
3873
|
p += `## 🧩 功能单元上下文(CLI 从 FUNCTION_MAP.md 精准提取)\n\n`;
|
|
3872
3874
|
p += `> 以下是从 FUNCTION_MAP.md 中为每个功能单元提取的相关上下文。\n`;
|
|
@@ -4674,150 +4676,6 @@ function parseModulePlatformsBySection(content, allPlatforms) {
|
|
|
4674
4676
|
}
|
|
4675
4677
|
return modules;
|
|
4676
4678
|
}
|
|
4677
|
-
/**
|
|
4678
|
-
* v6.70.0+: 解析 FUNCTION_MAP.md 跨端功能映射表
|
|
4679
|
-
* 支持两种格式:
|
|
4680
|
-
* 1. Markdown 表格(功能单元 | 涉及端 | ...)
|
|
4681
|
-
* 2. 树形格式(├── 模块名 ... platform1 ✅ | platform2 ✅)
|
|
4682
|
-
* 返回功能单元列表,含涉及端、共享能力、依赖关系
|
|
4683
|
-
*/
|
|
4684
|
-
function parseFunctionMap(content, allPlatforms) {
|
|
4685
|
-
// v7.4.2+: 先尝试表格格式
|
|
4686
|
-
const tableResult = parseFunctionMapTable(content, allPlatforms);
|
|
4687
|
-
if (tableResult.length > 0)
|
|
4688
|
-
return tableResult;
|
|
4689
|
-
// v7.4.2+: 回退到树形格式解析
|
|
4690
|
-
return parseFunctionMapTree(content, allPlatforms);
|
|
4691
|
-
}
|
|
4692
|
-
/**
|
|
4693
|
-
* v7.4.2+: 解析 FUNCTION_MAP.md 表格格式
|
|
4694
|
-
*/
|
|
4695
|
-
function parseFunctionMapTable(content, allPlatforms) {
|
|
4696
|
-
const units = [];
|
|
4697
|
-
const lines = content.split(/\r?\n/);
|
|
4698
|
-
let inTable = false;
|
|
4699
|
-
let platformColIdx = -1;
|
|
4700
|
-
let sharedCapColIdx = -1;
|
|
4701
|
-
let dependsOnColIdx = -1;
|
|
4702
|
-
let descColIdx = -1;
|
|
4703
|
-
for (const line of lines) {
|
|
4704
|
-
if (line.includes('功能单元') && line.includes('涉及端')) {
|
|
4705
|
-
inTable = true;
|
|
4706
|
-
const headerCells = line.split('|').map(c => c.trim()).filter(Boolean);
|
|
4707
|
-
platformColIdx = headerCells.findIndex(c => c.includes('涉及端'));
|
|
4708
|
-
sharedCapColIdx = headerCells.findIndex(c => c.includes('共享能力'));
|
|
4709
|
-
dependsOnColIdx = headerCells.findIndex(c => c.includes('依赖任务'));
|
|
4710
|
-
descColIdx = headerCells.findIndex(c => c.includes('说明'));
|
|
4711
|
-
continue;
|
|
4712
|
-
}
|
|
4713
|
-
if (!inTable)
|
|
4714
|
-
continue;
|
|
4715
|
-
if (line.startsWith('## ') && !line.includes('功能映射'))
|
|
4716
|
-
break;
|
|
4717
|
-
const cells = line.split('|').map(c => c.trim()).filter(Boolean);
|
|
4718
|
-
if (cells.length < 3)
|
|
4719
|
-
continue;
|
|
4720
|
-
if (cells.every(c => /^[-:]+$/.test(c)))
|
|
4721
|
-
continue;
|
|
4722
|
-
if (cells.some(c => c.includes('功能单元')) || cells.some(c => c.includes('涉及端')))
|
|
4723
|
-
continue;
|
|
4724
|
-
// v8.3.268: 功能单元列取 cells[0](表头第一列)。此前取 cells[1] 依赖旧数据
|
|
4725
|
-
// 「| 目录名 | 名称 | 端列表 | …」的列错位(cells[1]=名称),一旦表格对齐表头
|
|
4726
|
-
// (cells[1]=涉及端)任务名就变成端列表。「dir(名称)」格式剥尾部括号注释。
|
|
4727
|
-
const unitNameRaw = cells[0] || cells[1];
|
|
4728
|
-
const unitName = unitNameRaw.replace(/[((][^))]*[))]$/, '').trim();
|
|
4729
|
-
if (!unitName || unitName === '#' || unitName === '功能单元')
|
|
4730
|
-
continue;
|
|
4731
|
-
let platforms = [];
|
|
4732
|
-
if (platformColIdx >= 0 && platformColIdx < cells.length) {
|
|
4733
|
-
const raw = cells[platformColIdx];
|
|
4734
|
-
if (raw && raw !== '无' && raw !== '—' && raw !== '-') {
|
|
4735
|
-
platforms = raw.split(/[,,]/).map(p => p.trim()).filter(p => p && allPlatforms.includes(p));
|
|
4736
|
-
}
|
|
4737
|
-
}
|
|
4738
|
-
// v8.3.268: 端列自适应——AI 落盘 FUNCTION_MAP 表格可能列错位(涉及端表头下是
|
|
4739
|
-
// 名称、端列表落在其他列),按表头解析落空时扫描整行,找「逗号分隔且 ≥2 个
|
|
4740
|
-
// 值全部属于标准端名」的单元格作为端列,避免静默回退全端平铺。
|
|
4741
|
-
if (platforms.length === 0) {
|
|
4742
|
-
for (const cell of cells) {
|
|
4743
|
-
const parts = cell.split(/[,,]/).map(p => p.trim()).filter(Boolean);
|
|
4744
|
-
if (parts.length >= 2 && parts.every(p => allPlatforms.includes(p))) {
|
|
4745
|
-
platforms = parts;
|
|
4746
|
-
break;
|
|
4747
|
-
}
|
|
4748
|
-
}
|
|
4749
|
-
}
|
|
4750
|
-
if (platforms.length === 0)
|
|
4751
|
-
platforms = [...allPlatforms];
|
|
4752
|
-
let sharedCapability = '无';
|
|
4753
|
-
if (sharedCapColIdx >= 0 && sharedCapColIdx < cells.length) {
|
|
4754
|
-
const raw = cells[sharedCapColIdx];
|
|
4755
|
-
if (raw && raw !== '无' && raw !== '—' && raw !== '-')
|
|
4756
|
-
sharedCapability = raw;
|
|
4757
|
-
}
|
|
4758
|
-
let dependsOn = [];
|
|
4759
|
-
if (dependsOnColIdx >= 0 && dependsOnColIdx < cells.length) {
|
|
4760
|
-
const raw = cells[dependsOnColIdx];
|
|
4761
|
-
if (raw && raw !== '无' && raw !== '—' && raw !== '-') {
|
|
4762
|
-
dependsOn = raw.split(/[,,]/).map(p => p.trim()).filter(Boolean);
|
|
4763
|
-
}
|
|
4764
|
-
}
|
|
4765
|
-
let description = '';
|
|
4766
|
-
if (descColIdx >= 0 && descColIdx < cells.length)
|
|
4767
|
-
description = cells[descColIdx];
|
|
4768
|
-
units.push({ name: unitName, platforms, sharedCapability, dependsOn, description });
|
|
4769
|
-
}
|
|
4770
|
-
return units;
|
|
4771
|
-
}
|
|
4772
|
-
/**
|
|
4773
|
-
* v7.4.2+: 解析 FUNCTION_MAP.md 树形格式
|
|
4774
|
-
* 匹配: ├── 会议室 CRUD .............. room-service ✅ | admin-web ✅
|
|
4775
|
-
* 提取: 模块名="会议室 CRUD", 涉及端=[room-service, admin-web]
|
|
4776
|
-
*/
|
|
4777
|
-
function parseFunctionMapTree(content, allPlatforms) {
|
|
4778
|
-
const units = [];
|
|
4779
|
-
const lines = content.split(/\r?\n/);
|
|
4780
|
-
// 树形节点正则:匹配 ├── 或 └── 开头的行
|
|
4781
|
-
const treeNodeRe = /[├└]──\s*/;
|
|
4782
|
-
// 分隔点正则:匹配连续 .... 或 ———
|
|
4783
|
-
const separatorRe = /\s*[.·]{3,}\s*/;
|
|
4784
|
-
for (const line of lines) {
|
|
4785
|
-
if (!treeNodeRe.test(line))
|
|
4786
|
-
continue;
|
|
4787
|
-
// 提取树节点后的文本
|
|
4788
|
-
const afterTree = line.replace(/.*[├└]──\s*/, '').trim();
|
|
4789
|
-
if (!afterTree)
|
|
4790
|
-
continue;
|
|
4791
|
-
// 跳过分类型节点(如 ├── 🏢 会议室管理),这些是父级分类
|
|
4792
|
-
// 父级节点通常没有 ... 分隔符和平台标记
|
|
4793
|
-
if (!separatorRe.test(afterTree) && !afterTree.includes('✅') && !afterTree.includes('❌') && !afterTree.includes('⚠️')) {
|
|
4794
|
-
continue; // 这是分类父节点,跳过
|
|
4795
|
-
}
|
|
4796
|
-
// 分割模块名和平台部分
|
|
4797
|
-
const parts = afterTree.split(separatorRe);
|
|
4798
|
-
if (parts.length < 2)
|
|
4799
|
-
continue;
|
|
4800
|
-
// 模块名:去除 emoji 和空格
|
|
4801
|
-
let unitName = parts[0].replace(/[🏢📅✅💰🔔👥📊⚙️🔑🛡️]/g, '').trim();
|
|
4802
|
-
if (!unitName || unitName.length < 2)
|
|
4803
|
-
continue;
|
|
4804
|
-
// 平台部分:提取所有标准端名
|
|
4805
|
-
const platformPart = parts.slice(1).join(' ');
|
|
4806
|
-
const platforms = [];
|
|
4807
|
-
for (const p of allPlatforms) {
|
|
4808
|
-
if (platformPart.includes(p)) {
|
|
4809
|
-
platforms.push(p);
|
|
4810
|
-
}
|
|
4811
|
-
}
|
|
4812
|
-
// 如果没匹配到标准端名,尝试匹配常见缩写
|
|
4813
|
-
if (platforms.length === 0) {
|
|
4814
|
-
// 回退全端
|
|
4815
|
-
platforms.push(...allPlatforms);
|
|
4816
|
-
}
|
|
4817
|
-
units.push({ name: unitName, platforms, sharedCapability: '无', dependsOn: [], description: '' });
|
|
4818
|
-
}
|
|
4819
|
-
return units;
|
|
4820
|
-
}
|
|
4821
4679
|
/**
|
|
4822
4680
|
* v7.5.0+: 从 ANALYSIS.md 提取功能单元清单
|
|
4823
4681
|
* 支持两种格式:
|
|
@@ -4945,7 +4803,7 @@ async function tryModuleDrivenSplit(iteration, iterationDir, options) {
|
|
|
4945
4803
|
if (await (0, fs_extra_1.pathExists)(functionMapPath)) {
|
|
4946
4804
|
try {
|
|
4947
4805
|
const content = await (0, fs_extra_1.readFile)(functionMapPath, 'utf-8');
|
|
4948
|
-
const parsed = parseFunctionMap(content, allPlatforms);
|
|
4806
|
+
const parsed = (0, function_map_1.parseFunctionMap)(content, allPlatforms);
|
|
4949
4807
|
if (parsed.length > 0) {
|
|
4950
4808
|
for (const u of parsed) {
|
|
4951
4809
|
modules.push({
|