speccore 8.3.193 → 8.3.194

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.
Files changed (66) hide show
  1. package/README.en.md +212 -60
  2. package/README.md +183 -331
  3. package/dist/cli.js +16 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/analyze.d.ts +1 -0
  6. package/dist/commands/analyze.d.ts.map +1 -1
  7. package/dist/commands/analyze.js +160 -25
  8. package/dist/commands/analyze.js.map +1 -1
  9. package/dist/commands/change.js +51 -13
  10. package/dist/commands/change.js.map +1 -1
  11. package/dist/commands/doc2spec.d.ts.map +1 -1
  12. package/dist/commands/doc2spec.js +201 -7
  13. package/dist/commands/doc2spec.js.map +1 -1
  14. package/dist/commands/execute.js +38 -1
  15. package/dist/commands/execute.js.map +1 -1
  16. package/dist/commands/iteration/split.d.ts.map +1 -1
  17. package/dist/commands/iteration/split.js +51 -12
  18. package/dist/commands/iteration/split.js.map +1 -1
  19. package/dist/commands/plan.d.ts.map +1 -1
  20. package/dist/commands/plan.js +84 -12
  21. package/dist/commands/plan.js.map +1 -1
  22. package/dist/commands/pr.d.ts.map +1 -1
  23. package/dist/commands/pr.js +63 -3
  24. package/dist/commands/pr.js.map +1 -1
  25. package/dist/commands/req-doc.d.ts +1 -0
  26. package/dist/commands/req-doc.d.ts.map +1 -1
  27. package/dist/commands/req-doc.js +145 -54
  28. package/dist/commands/req-doc.js.map +1 -1
  29. package/dist/commands/run.d.ts +2 -0
  30. package/dist/commands/run.d.ts.map +1 -1
  31. package/dist/commands/run.js +45 -8
  32. package/dist/commands/run.js.map +1 -1
  33. package/dist/core/ask-engine.d.ts.map +1 -1
  34. package/dist/core/ask-engine.js +30 -4
  35. package/dist/core/ask-engine.js.map +1 -1
  36. package/dist/core/ask-llm.d.ts +12 -0
  37. package/dist/core/ask-llm.d.ts.map +1 -1
  38. package/dist/core/ask-llm.js +101 -4
  39. package/dist/core/ask-llm.js.map +1 -1
  40. package/dist/core/content-delivery.d.ts +9 -1
  41. package/dist/core/content-delivery.d.ts.map +1 -1
  42. package/dist/core/content-delivery.js +11 -0
  43. package/dist/core/content-delivery.js.map +1 -1
  44. package/dist/core/context-budget.d.ts +62 -0
  45. package/dist/core/context-budget.d.ts.map +1 -0
  46. package/dist/core/context-budget.js +128 -0
  47. package/dist/core/context-budget.js.map +1 -0
  48. package/dist/core/intent-recognition.d.ts.map +1 -1
  49. package/dist/core/intent-recognition.js +24 -6
  50. package/dist/core/intent-recognition.js.map +1 -1
  51. package/dist/core/pipeline-engine.d.ts +2 -0
  52. package/dist/core/pipeline-engine.d.ts.map +1 -1
  53. package/dist/core/pipeline-engine.js +9 -1
  54. package/dist/core/pipeline-engine.js.map +1 -1
  55. package/dist/core/prompt-builder.d.ts.map +1 -1
  56. package/dist/core/prompt-builder.js +18 -68
  57. package/dist/core/prompt-builder.js.map +1 -1
  58. package/dist/core/spec-paths.js +1 -1
  59. package/dist/core/spec-paths.js.map +1 -1
  60. package/dist/core/unified-config.d.ts +16 -0
  61. package/dist/core/unified-config.d.ts.map +1 -1
  62. package/dist/core/unified-config.js +57 -0
  63. package/dist/core/unified-config.js.map +1 -1
  64. package/dist/core/unit-context-assembler.js +21 -14
  65. package/dist/core/unit-context-assembler.js.map +1 -1
  66. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAoD,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAgDtG,gBAAgB;AAChB,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAErE,YAAY;AACZ,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAe;AACf,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,WAAW;AACX,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/D;AAED,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gBAAgB;AAChB,MAAM,WAAW,QAAQ;IACvB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,0BAA0B;AAC1B,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,0BAA0B;IAC1B,GAAG,EAAE,QAAQ,EAAE,CAAC;CACjB;AAED,0BAA0B;AAC1B,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4hCD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,aAAa,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CA8DxB;AAsCD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAwHjF;AAmVD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,cAAc,CAAC,EAAE,GAAG,CAAC;IAErB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GACA,OAAO,CAAC,cAAc,CAAC,CAioBzB;AAiBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA0D/E;AAoBD,4BAA4B;AAC5B,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAuI9D;AAED;;GAEG;AACH,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAsB5H;AAMD,YAAY;AACZ,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AA8DD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,IAAI,CAgF3E;AAkND;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EACtB,YAAY,CAAC,EAAE,iBAAiB,EAChC,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,MAAM,CAAC,CAejB"}
@@ -60,6 +60,8 @@ const spec_paths_1 = require("./spec-paths");
60
60
  const context_1 = require("./context");
61
61
  const rag_engine_1 = require("./rag-engine");
62
62
  const unified_retrieval_1 = require("./unified-retrieval");
63
+ // v8.3.194+: 统一内容分级 + 预算(单一事实源,替代本地 isSpecContent/getPriority)
64
+ const context_budget_1 = require("./context-budget");
63
65
  // v8.3.183+: 统一内容供给管线(md 大纲摘要,替代链接全文内联)
64
66
  const content_delivery_1 = require("./content-delivery");
65
67
  // v8.3.183+: HTML 原型渲染(Playwright 截图 + accessibility tree,替代纯文本)
@@ -567,13 +569,19 @@ function getPlatformExtraFiles(platform) {
567
569
  return new Set();
568
570
  }
569
571
  // v8.3.181+: 按文件类型细分预算(必须完整 vs 可以截断)
572
+ // 需求/Spec 类一律 mode='error'(超限只告警不截断),落实「Spec 优先」原则
570
573
  const FILE_BUDGETS = {
571
574
  'CONSTITUTION.md': { limit: 6000, mode: 'error' },
572
- 'REQ.md': { limit: 2000, mode: 'error' },
573
- 'API_CONTRACT.yaml': { limit: 2000, mode: 'error' },
575
+ 'REQ.md': { limit: 4000, mode: 'error' },
576
+ 'REQUIREMENT.md': { limit: 4000, mode: 'error' },
577
+ 'SCHEMA.md': { limit: 4000, mode: 'error' },
578
+ 'ANALYSIS.md': { limit: 4000, mode: 'error' },
579
+ 'DESIGN.md': { limit: 4000, mode: 'error' },
580
+ 'TECH.md': { limit: 4000, mode: 'error' },
581
+ 'DEV_GUIDE.md': { limit: 3000, mode: 'error' },
582
+ 'CONTEXT.md': { limit: 2000, mode: 'error' },
583
+ 'API_CONTRACT.yaml': { limit: 3000, mode: 'error' },
574
584
  'TASK.md': { limit: 1500, mode: 'truncate' },
575
- 'TECH.md': { limit: 3000, mode: 'truncate' },
576
- 'DEV_GUIDE.md': { limit: 2000, mode: 'truncate' },
577
585
  };
578
586
  const DEFAULT_BUDGET = { limit: 1000, mode: 'truncate' };
579
587
  function getFileBudget(fileName) {
@@ -2320,75 +2328,17 @@ function formatPrompt(prompt, maxTokens) {
2320
2328
  return result;
2321
2329
  }
2322
2330
  }
2323
- // Level 2: 分层预算控制 extraSpecs(v8.3.125+ unit-context-assembler)
2324
- // 优先级: P1(结构化卡片/源码/INFO_GAP) > P2(KG上下文) > P3(全局规范/一致性检查)
2331
+ // Level 2: 分层预算控制 extraSpecs(v8.3.194+: 收敛到 context-budget 统一分级 + 预算)
2332
+ // 优先级: P0(需求/Spec 不裁剪) > P1(结构化卡片/源码/前端结构/INFO_GAP) > P2(KG/任务链) > P3(其他)
2325
2333
  if (prompt.extraSpecs.length > 0) {
2326
- const BUDGET_P1 = 10000; // 高优先级: 结构化卡片、关联源码、INFO_GAP补充
2327
- const BUDGET_P2 = 5000; // 中优先级: 知识图谱上下文、任务关联链
2328
- const BUDGET_P3 = 3000; // 低优先级: 全局规范、一致性检查、项目路径
2329
- function getPriority(spec) {
2330
- const n = spec.name;
2331
- if (n.includes('结构化代码事实') || n.includes('INFO_GAP') || n.includes('关联源码'))
2332
- return 1;
2333
- if (n.includes('知识图谱') || n.includes('任务关联上下文'))
2334
- return 2;
2335
- return 3; // CONSISTENCY_CHECK、工程路径、全局规范等
2336
- }
2337
- const sorted = [...prompt.extraSpecs].sort((a, b) => getPriority(a) - getPriority(b));
2338
- const budgeted = [];
2339
- let usedP1 = 0, usedP2 = 0, usedP3 = 0;
2340
- for (const spec of sorted) {
2341
- const p = getPriority(spec);
2342
- const len = spec.content.length;
2343
- let keep = true;
2344
- let content = spec.content;
2345
- if (p === 1) {
2346
- if (usedP1 + len > BUDGET_P1) {
2347
- const remain = Math.max(0, BUDGET_P1 - usedP1);
2348
- if (remain < 200) {
2349
- keep = false;
2350
- }
2351
- else {
2352
- content = content.slice(0, remain) + '\n> ... (P1预算截断)';
2353
- }
2354
- }
2355
- if (keep)
2356
- usedP1 += content.length;
2357
- }
2358
- else if (p === 2) {
2359
- if (usedP2 + len > BUDGET_P2) {
2360
- const remain = Math.max(0, BUDGET_P2 - usedP2);
2361
- if (remain < 200) {
2362
- keep = false;
2363
- }
2364
- else {
2365
- content = content.slice(0, remain) + '\n> ... (P2预算截断)';
2366
- }
2367
- }
2368
- if (keep)
2369
- usedP2 += content.length;
2370
- }
2371
- else {
2372
- if (usedP3 + len > BUDGET_P3) {
2373
- const remain = Math.max(0, BUDGET_P3 - usedP3);
2374
- if (remain < 200) {
2375
- keep = false;
2376
- }
2377
- else {
2378
- content = content.slice(0, remain) + '\n> ... (P3预算截断)';
2379
- }
2380
- }
2381
- if (keep)
2382
- usedP3 += content.length;
2383
- }
2384
- if (keep)
2385
- budgeted.push({ ...spec, content });
2386
- }
2334
+ const { kept: budgeted, used } = (0, context_budget_1.applyTierBudget)(prompt.extraSpecs);
2335
+ const { p0: usedP0, p1: usedP1, p2: usedP2, p3: usedP3 } = used;
2336
+ const BUDGET_P1 = context_budget_1.TIER_BUDGETS.P1, BUDGET_P2 = context_budget_1.TIER_BUDGETS.P2, BUDGET_P3 = context_budget_1.TIER_BUDGETS.P3;
2387
2337
  result = buildPromptText({ ...prompt, extraSpecs: budgeted });
2388
2338
  tokens = estimateTokens(result);
2389
2339
  if (tokens <= budget) {
2390
2340
  const removed = prompt.extraSpecs.length - budgeted.length;
2391
- logger_1.logger?.info?.(` 🪶 Prompt 已简化:分层预算控制 (P1:${usedP1}/${BUDGET_P1} P2:${usedP2}/${BUDGET_P2} P3:${usedP3}/${BUDGET_P3}${removed > 0 ? ` 移除${removed}项` : ''})`);
2341
+ logger_1.logger?.info?.(` 🪶 Prompt 已简化:分层预算控制 (P0:${usedP0}字不裁剪 P1:${usedP1}/${BUDGET_P1} P2:${usedP2}/${BUDGET_P2} P3:${usedP3}/${BUDGET_P3}${removed > 0 ? ` 移除${removed}项` : ''})`);
2392
2342
  return result;
2393
2343
  }
2394
2344
  }