speccore 8.3.304 → 8.3.305
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/change.d.ts.map +1 -1
- package/dist/commands/change.js +2 -1
- package/dist/commands/change.js.map +1 -1
- package/dist/commands/doctor.js +7 -6
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +2 -1
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/welcome.d.ts.map +1 -1
- package/dist/commands/welcome.js +3 -2
- package/dist/commands/welcome.js.map +1 -1
- package/dist/core/analyze-engine.js +8 -8
- package/dist/core/analyze-engine.js.map +1 -1
- package/dist/core/ask-config.d.ts.map +1 -1
- package/dist/core/ask-config.js +8 -6
- package/dist/core/ask-config.js.map +1 -1
- package/dist/core/capabilities.d.ts.map +1 -1
- package/dist/core/capabilities.js +2 -1
- package/dist/core/capabilities.js.map +1 -1
- package/dist/core/change-detection.d.ts.map +1 -1
- package/dist/core/change-detection.js +6 -5
- package/dist/core/change-detection.js.map +1 -1
- package/dist/core/change-inbox.d.ts.map +1 -1
- package/dist/core/change-inbox.js +2 -1
- package/dist/core/change-inbox.js.map +1 -1
- package/dist/core/code-graph/incremental-build.d.ts.map +1 -1
- package/dist/core/code-graph/incremental-build.js +2 -1
- package/dist/core/code-graph/incremental-build.js.map +1 -1
- package/dist/core/code-graph/index.d.ts.map +1 -1
- package/dist/core/code-graph/index.js +2 -1
- package/dist/core/code-graph/index.js.map +1 -1
- package/dist/core/code-graph/requirement-linker.d.ts.map +1 -1
- package/dist/core/code-graph/requirement-linker.js +2 -1
- package/dist/core/code-graph/requirement-linker.js.map +1 -1
- package/dist/core/code-index-markdown.d.ts.map +1 -1
- package/dist/core/code-index-markdown.js +5 -4
- package/dist/core/code-index-markdown.js.map +1 -1
- package/dist/core/code-scanner.d.ts.map +1 -1
- package/dist/core/code-scanner.js +6 -5
- package/dist/core/code-scanner.js.map +1 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +7 -6
- package/dist/core/context.js.map +1 -1
- package/dist/core/doc-cross-reference.d.ts.map +1 -1
- package/dist/core/doc-cross-reference.js +2 -1
- package/dist/core/doc-cross-reference.js.map +1 -1
- package/dist/core/doc-quality-gate.d.ts.map +1 -1
- package/dist/core/doc-quality-gate.js +2 -1
- package/dist/core/doc-quality-gate.js.map +1 -1
- package/dist/core/environment-config.d.ts.map +1 -1
- package/dist/core/environment-config.js +3 -2
- package/dist/core/environment-config.js.map +1 -1
- package/dist/core/git-integration.d.ts.map +1 -1
- package/dist/core/git-integration.js +11 -10
- package/dist/core/git-integration.js.map +1 -1
- package/dist/core/global-artifacts.d.ts.map +1 -1
- package/dist/core/global-artifacts.js +2 -1
- package/dist/core/global-artifacts.js.map +1 -1
- package/dist/core/global-counters.d.ts.map +1 -1
- package/dist/core/global-counters.js +2 -1
- package/dist/core/global-counters.js.map +1 -1
- package/dist/core/global-layer.d.ts.map +1 -1
- package/dist/core/global-layer.js +2 -1
- package/dist/core/global-layer.js.map +1 -1
- package/dist/core/handoff-generator.d.ts.map +1 -1
- package/dist/core/handoff-generator.js +4 -3
- package/dist/core/handoff-generator.js.map +1 -1
- package/dist/core/html-prototype.d.ts.map +1 -1
- package/dist/core/html-prototype.js +2 -1
- package/dist/core/html-prototype.js.map +1 -1
- package/dist/core/inbox.d.ts.map +1 -1
- package/dist/core/inbox.js +4 -2
- package/dist/core/inbox.js.map +1 -1
- package/dist/core/incremental-analyzer.d.ts.map +1 -1
- package/dist/core/incremental-analyzer.js +2 -1
- package/dist/core/incremental-analyzer.js.map +1 -1
- package/dist/core/iteration-cache.d.ts.map +1 -1
- package/dist/core/iteration-cache.js +2 -1
- package/dist/core/iteration-cache.js.map +1 -1
- package/dist/core/notification.d.ts.map +1 -1
- package/dist/core/notification.js +2 -1
- package/dist/core/notification.js.map +1 -1
- package/dist/core/operation-log.d.ts.map +1 -1
- package/dist/core/operation-log.js +2 -1
- package/dist/core/operation-log.js.map +1 -1
- package/dist/core/pattern-detector.d.ts.map +1 -1
- package/dist/core/pattern-detector.js +3 -2
- package/dist/core/pattern-detector.js.map +1 -1
- package/dist/core/pipeline-engine.d.ts.map +1 -1
- package/dist/core/pipeline-engine.js +2 -1
- package/dist/core/pipeline-engine.js.map +1 -1
- package/dist/core/plan-store.d.ts.map +1 -1
- package/dist/core/plan-store.js +4 -2
- package/dist/core/plan-store.js.map +1 -1
- package/dist/core/questions.d.ts.map +1 -1
- package/dist/core/questions.js +3 -2
- package/dist/core/questions.js.map +1 -1
- package/dist/core/rag-engine.d.ts.map +1 -1
- package/dist/core/rag-engine.js +2 -1
- package/dist/core/rag-engine.js.map +1 -1
- package/dist/core/refresh-scheduler.d.ts.map +1 -1
- package/dist/core/refresh-scheduler.js +4 -3
- package/dist/core/refresh-scheduler.js.map +1 -1
- package/dist/core/session-state.d.ts.map +1 -1
- package/dist/core/session-state.js +7 -5
- package/dist/core/session-state.js.map +1 -1
- package/dist/core/spec-rules.d.ts.map +1 -1
- package/dist/core/spec-rules.js +3 -2
- package/dist/core/spec-rules.js.map +1 -1
- package/dist/core/structured-extractor.d.ts.map +1 -1
- package/dist/core/structured-extractor.js +10 -9
- 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 +20 -19
- package/dist/core/unified-config.js.map +1 -1
- package/dist/core/validator.d.ts.map +1 -1
- package/dist/core/validator.js +2 -1
- package/dist/core/validator.js.map +1 -1
- package/dist/utils/task-utils.d.ts +7 -0
- package/dist/utils/task-utils.d.ts.map +1 -1
- package/dist/utils/task-utils.js +11 -1
- package/dist/utils/task-utils.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
|
@@ -85,7 +85,7 @@ async function runAnalysis(input) {
|
|
|
85
85
|
// 自动检测: 都没指定 → 从 01-产品需求/ 递归读取产品原始需求
|
|
86
86
|
if (requirements.length === 0 && sources.length === 0) {
|
|
87
87
|
if (input.scope === 'iteration' && input.iteration) {
|
|
88
|
-
const productReqDir = (0, path_1.join)(`Iteration-${input.iteration}`, '010-requirements');
|
|
88
|
+
const productReqDir = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), `Iteration-${input.iteration}`, '010-requirements');
|
|
89
89
|
if (await (0, fs_extra_1.pathExists)(productReqDir)) {
|
|
90
90
|
// 递归扫描子目录 ({端名}/ 等)
|
|
91
91
|
const scanDir = async (dir) => {
|
|
@@ -104,7 +104,7 @@ async function runAnalysis(input) {
|
|
|
104
104
|
}
|
|
105
105
|
// 回退路径: 如果没有 01-产品需求/, 回退到 010-requirements/REQUIREMENT.md
|
|
106
106
|
if (requirements.length === 0) {
|
|
107
|
-
const legacyReq = (0, path_1.join)(`Iteration-${input.iteration}`, '010-requirements', 'REQUIREMENT.md');
|
|
107
|
+
const legacyReq = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), `Iteration-${input.iteration}`, '010-requirements', 'REQUIREMENT.md');
|
|
108
108
|
if (await (0, fs_extra_1.pathExists)(legacyReq)) {
|
|
109
109
|
requirements = [legacyReq];
|
|
110
110
|
}
|
|
@@ -216,12 +216,12 @@ async function analyzeRequirements(input) {
|
|
|
216
216
|
let outputPath;
|
|
217
217
|
let report;
|
|
218
218
|
if (input.scope === 'global') {
|
|
219
|
-
outputPath = (0, path_1.join)('.speccore', 'GLOBAL', input.output || 'REQ_CONSISTENCY.md');
|
|
219
|
+
outputPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'GLOBAL', input.output || 'REQ_CONSISTENCY.md');
|
|
220
220
|
report = buildReqConsistencyReport(input, issues, archImpact);
|
|
221
221
|
}
|
|
222
222
|
else if (input.scope === 'task') {
|
|
223
223
|
// task scope — 已在入口校验
|
|
224
|
-
outputPath = (0, path_1.join)(`Iteration-${input.iteration}`, '030-tasks', input.taskId, '00-specs', input.output || 'ANALYSIS.md');
|
|
224
|
+
outputPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), `Iteration-${input.iteration}`, '030-tasks', input.taskId, '00-specs', input.output || 'ANALYSIS.md');
|
|
225
225
|
report = buildTaskReqReport(input, issues, archImpact, sourceContents, sourceSummaries);
|
|
226
226
|
}
|
|
227
227
|
else {
|
|
@@ -285,7 +285,7 @@ async function analyzeCodebase(input) {
|
|
|
285
285
|
}
|
|
286
286
|
else if (input.scope === 'task') {
|
|
287
287
|
// task scope — 已在入口校验
|
|
288
|
-
outputPath = (0, path_1.join)(`Iteration-${input.iteration}`, '030-tasks', input.taskId, '00-specs', input.output || 'CODE_REVIEW.md');
|
|
288
|
+
outputPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), `Iteration-${input.iteration}`, '030-tasks', input.taskId, '00-specs', input.output || 'CODE_REVIEW.md');
|
|
289
289
|
report = buildTaskCodeReport(input, fileStats, apiInventory, hotspots);
|
|
290
290
|
}
|
|
291
291
|
else {
|
|
@@ -377,7 +377,7 @@ async function analyzeCombined(input) {
|
|
|
377
377
|
report = await buildAIEnhancedReport(input, 'global', { issues, archImpact, fileStats, apiInventory, aiContext, sourceContents });
|
|
378
378
|
}
|
|
379
379
|
else if (input.scope === 'task') {
|
|
380
|
-
outputPath = (0, path_1.join)(`Iteration-${input.iteration}`, '030-tasks', input.taskId, '00-specs', input.output || 'ANALYSIS.md');
|
|
380
|
+
outputPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), `Iteration-${input.iteration}`, '030-tasks', input.taskId, '00-specs', input.output || 'ANALYSIS.md');
|
|
381
381
|
report = await buildAIEnhancedReport(input, 'task', { issues, archImpact, fileStats, apiInventory, aiContext, sourceContents });
|
|
382
382
|
}
|
|
383
383
|
else {
|
|
@@ -728,7 +728,7 @@ function scanCompleteness(content) {
|
|
|
728
728
|
}
|
|
729
729
|
async function analyzeArchitectureImpact(content) {
|
|
730
730
|
const impact = { modules: [], newDependencies: [], risks: [], apis: [] };
|
|
731
|
-
const archPath = (0, path_1.join)(
|
|
731
|
+
const archPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'GLOBAL', 'ARCHITECTURE.md');
|
|
732
732
|
if (await (0, fs_extra_1.pathExists)(archPath)) {
|
|
733
733
|
const archContent = await (0, fs_extra_1.readFile)(archPath, 'utf-8');
|
|
734
734
|
if (archContent.match(/## 模块|## 系统边界|## 服务列表/)) {
|
|
@@ -1765,7 +1765,7 @@ async function detectPlatformsFromConstitution() {
|
|
|
1765
1765
|
_detectedBackendPlatforms = explicitPlatforms.filter(p => /service|server|api|backend|后台|服务|后端/i.test(p));
|
|
1766
1766
|
return explicitPlatforms;
|
|
1767
1767
|
}
|
|
1768
|
-
const constitutionPath = (0, path_1.join)(
|
|
1768
|
+
const constitutionPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'CONSTITUTION.md');
|
|
1769
1769
|
if (require('fs').existsSync(constitutionPath)) {
|
|
1770
1770
|
const content = require('fs').readFileSync(constitutionPath, 'utf-8');
|
|
1771
1771
|
const lines = content.split('\n');
|