speccore 8.3.263 → 8.3.264

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.
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -83,6 +83,13 @@ const dispatch_loop_1 = require("../core/dispatch-loop");
83
83
  const pipeline_engine_1 = require("../core/pipeline-engine");
84
84
  const change_detection_1 = require("../core/change-detection");
85
85
  const ai_trace_1 = require("../utils/ai-trace");
86
+ // v8.3.264: AI 交棒统一出口——所有 [SPECCORE_PROMPT] 输出必留 prompt-out 轨迹,
87
+ // 与 ai-trace 飞行记录仪的 apply-in/apply-done/apply-fail 配对,形成「发起→回传→落盘」闭环证据链。
88
+ // 此前 14 处输出点仅 2 处埋点,澄清链等 12 处交棒全程无痕(ai-trace/ 目录空白即因此)。
89
+ async function emitAiPrompt(iter, prompt, meta = {}) {
90
+ await (0, ai_trace_1.recordAiTrace)(iter, 'prompt-out', { promptLength: prompt.length, ...meta, prompt });
91
+ process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
92
+ }
86
93
  const streaming_analyzer_1 = require("../core/streaming-analyzer");
87
94
  const requirement_clarifier_1 = require("../core/requirement-clarifier");
88
95
  const agents_1 = require("../core/agents");
@@ -405,7 +412,7 @@ async function analyzeCommand(options) {
405
412
  prompt += `3. 修复后重新运行 \`speccore analyze -I ${iter}\` 重新审计\n`;
406
413
  prompt += `4. 最多修复 2 轮,超过 2 轮仍有问题则标记为“需人工确认”\n`;
407
414
  prompt += `5. 写入: speccore analyze --apply '{...}' -I ${iter}\n`;
408
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
415
+ await emitAiPrompt(iter, prompt, { mode: 'audit-fix' });
409
416
  process.exitCode = 10;
410
417
  return;
411
418
  }
@@ -428,7 +435,7 @@ async function analyzeCommand(options) {
428
435
  if (options.estimateOnly) {
429
436
  // 只输出预估报告到 prompt
430
437
  const prompt = buildContextGuardPrompt(estimate, plan);
431
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
438
+ await emitAiPrompt(iter, prompt, { mode: 'context-guard' });
432
439
  process.exitCode = 10;
433
440
  return;
434
441
  }
@@ -458,7 +465,7 @@ async function analyzeCommand(options) {
458
465
  logger_1.logger.info('');
459
466
  if (options.prompt) {
460
467
  const prompt = buildIncrementalPrompt(iterDir, analysis, iter);
461
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
468
+ await emitAiPrompt(iter, prompt, { mode: 'incremental' });
462
469
  process.exitCode = 10;
463
470
  return;
464
471
  }
@@ -505,7 +512,7 @@ async function analyzeCommand(options) {
505
512
  logger_1.logger.info('');
506
513
  if (options.prompt) {
507
514
  const prompt = buildNewPlatformPrompt(iterDir, analysis, iter);
508
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
515
+ await emitAiPrompt(iter, prompt, { mode: 'new-platform' });
509
516
  process.exitCode = 10;
510
517
  return;
511
518
  }
@@ -556,7 +563,7 @@ async function analyzeCommand(options) {
556
563
  logger_1.logger.info('');
557
564
  if (options.prompt) {
558
565
  const prompt = buildModuleAnalysisPrompt(iterDir, result, iter);
559
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
566
+ await emitAiPrompt(iter, prompt, { mode: 'module-analysis' });
560
567
  process.exitCode = 10;
561
568
  return;
562
569
  }
@@ -670,7 +677,7 @@ async function analyzeCommand(options) {
670
677
  }
671
678
  // ── prompt 模式:生成 AI Prompt ──
672
679
  const prompt = buildOverviewPrompt(overviewInput, coverage, crossApis, phase);
673
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
680
+ await emitAiPrompt(iter, prompt, { mode: 'overview' });
674
681
  process.exitCode = 10;
675
682
  return;
676
683
  }
@@ -717,7 +724,7 @@ async function analyzeCommand(options) {
717
724
  }
718
725
  const report = await consolidateUnitAnalyses(iter, units, analyses);
719
726
  if (options.prompt) {
720
- process.stdout.write(`[SPECCORE_PROMPT]\n${report}\n\n## 操作选项\n\n**选项 A:确认通过,写入所有文档**\n\`\`\`bash\nspeccore analyze --apply '[DOC:...]' -I ${iter}\n\`\`\`\n`);
727
+ await emitAiPrompt(iter, `${report}\n\n## 操作选项\n\n**选项 A:确认通过,写入所有文档**\n\`\`\`bash\nspeccore analyze --apply '[DOC:...]' -I ${iter}\n\`\`\`\n`, { mode: 'consolidate-report' });
721
728
  process.exitCode = 10;
722
729
  return;
723
730
  }
@@ -769,7 +776,7 @@ async function analyzeCommand(options) {
769
776
  await printUnitLoopSummary(iter, iterDir, units, loopResult);
770
777
  return;
771
778
  }
772
- process.stdout.write(`[SPECCORE_PROMPT]\n${loopResult.prompt}\n\n## 完成后继续\n\n落盘后运行以下命令,CLI 将校验产出并自动推进到下一个单元:\n\n\`\`\`bash\nspeccore analyze --resume-units -I ${iter}\n\`\`\`\n`);
779
+ await emitAiPrompt(iter, `${loopResult.prompt}\n\n## 完成后继续\n\n落盘后运行以下命令,CLI 将校验产出并自动推进到下一个单元:\n\n\`\`\`bash\nspeccore analyze --resume-units -I ${iter}\n\`\`\`\n`, { mode: 'resume-units-loop' });
773
780
  process.exitCode = 10;
774
781
  return;
775
782
  }
@@ -806,8 +813,7 @@ async function analyzeCommand(options) {
806
813
  const targetUnit = targetUnits[0];
807
814
  if (options.prompt) {
808
815
  const prompt = await buildUnitAnalysisPrompt(iterDir, iter, targetUnit, units);
809
- await (0, ai_trace_1.recordAiTrace)(iter, 'prompt-out', { mode: 'unit', unit: targetUnit.id, promptLength: prompt.length, prompt });
810
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
816
+ await emitAiPrompt(iter, prompt, { mode: 'unit', unit: targetUnit.id });
811
817
  process.exitCode = 10;
812
818
  return;
813
819
  }
@@ -1464,7 +1470,7 @@ async function analyzeCommand(options) {
1464
1470
  process.stdout.write(`[SPECCORE_CONTEXT_BUDGET: 8000]\n`);
1465
1471
  process.stdout.write(`[SPECCORE_CONTEXT_TYPE: platform-only]\n\n`);
1466
1472
  }
1467
- process.stdout.write(`[SPECCORE_PROMPT]\n${finalPrompt}`);
1473
+ await emitAiPrompt(iter, finalPrompt, { mode: 'subagent-final' });
1468
1474
  process.exitCode = 10;
1469
1475
  return;
1470
1476
  }
@@ -1494,7 +1500,7 @@ async function analyzeCommand(options) {
1494
1500
  if (shouldClarify) {
1495
1501
  // 需要澄清,先执行 clarify(内部已生成质量报告)
1496
1502
  const clarifyPrompt = await buildClarifyPhasePrompt(iter);
1497
- process.stdout.write(`[SPECCORE_PROMPT]\n${clarifyPrompt}`);
1503
+ await emitAiPrompt(iter, clarifyPrompt, { mode: 'clarify-phase' });
1498
1504
  process.exitCode = 10;
1499
1505
  return;
1500
1506
  }
@@ -1508,7 +1514,7 @@ async function analyzeCommand(options) {
1508
1514
  analyzeOptions: options,
1509
1515
  });
1510
1516
  const prompt = (0, prompt_builder_1.buildPromptText)(promptObj);
1511
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
1517
+ await emitAiPrompt(iter, prompt, { mode: 'analyze-host' });
1512
1518
  process.exitCode = 10;
1513
1519
  return;
1514
1520
  }
@@ -1939,7 +1945,7 @@ async function analyzeCommand(options) {
1939
1945
  logger_1.logger.info(` 1. 读取上述问题文档的当前内容`);
1940
1946
  logger_1.logger.info(` 2. 根据质量报告中的错误信息补充/修正内容`);
1941
1947
  logger_1.logger.info(` 3. 用 speccore global analyze --apply '{"文件路径":"修正后内容"}' 重新写入`);
1942
- process.stdout.write(`\n[SPECCORE_PROMPT]\n# 质量门禁修复任务\n\n以下全局分析文档未通过质量校验,请修复后重新写入:\n\n`);
1948
+ await emitAiPrompt(options.iteration || 'GLOBAL', `\n# 质量门禁修复任务\n\n以下全局分析文档未通过质量校验,请修复后重新写入:\n\n`, { mode: 'global-gate-fix' });
1943
1949
  for (const r of criticalErrors.slice(0, 5)) {
1944
1950
  const fname = r.file.split('/').slice(-2).join('/');
1945
1951
  const errs = r.issues.filter(i => i.severity === 'error').map(i => `- ${i.message}`).join('\n');
@@ -2656,8 +2662,7 @@ async function analyzeCommand(options) {
2656
2662
  catch { /* ignore */ }
2657
2663
  }
2658
2664
  const prompt = await buildMultiDocPrompt('analyze', { iteration: iter, scope: options.scope, withCode: options.withCode, platform: options.platform, phase: options.phase, autoMode: options.auto }, options, needsClarify ? { needsClarify, clarifyTargets } : undefined);
2659
- await (0, ai_trace_1.recordAiTrace)(iter, 'prompt-out', { mode: 'analyze-main', scope: options.scope, promptLength: prompt.length, prompt });
2660
- process.stdout.write(`[SPECCORE_PROMPT]\n${prompt}`);
2665
+ await emitAiPrompt(iter, prompt, { mode: 'analyze-main', scope: options.scope });
2661
2666
  // v7.2.0+: 全局分析完成后输出下一步引导
2662
2667
  if (options.scope === 'global') {
2663
2668
  const guide = await buildGlobalAnalysisGuide(options);