@zhixuan92/multi-model-agent-core 3.2.0 → 3.4.0

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 (138) hide show
  1. package/README.md +4 -3
  2. package/dist/auto-commit.d.ts +8 -1
  3. package/dist/auto-commit.d.ts.map +1 -1
  4. package/dist/auto-commit.js +6 -3
  5. package/dist/auto-commit.js.map +1 -1
  6. package/dist/batch-cache.d.ts +1 -1
  7. package/dist/batch-cache.d.ts.map +1 -1
  8. package/dist/batch-cache.js +3 -5
  9. package/dist/batch-cache.js.map +1 -1
  10. package/dist/diagnostics/disconnect-log.d.ts +8 -27
  11. package/dist/diagnostics/disconnect-log.d.ts.map +1 -1
  12. package/dist/diagnostics/disconnect-log.js +10 -49
  13. package/dist/diagnostics/disconnect-log.js.map +1 -1
  14. package/dist/diagnostics/request-spill.d.ts +16 -0
  15. package/dist/diagnostics/request-spill.d.ts.map +1 -0
  16. package/dist/diagnostics/request-spill.js +23 -0
  17. package/dist/diagnostics/request-spill.js.map +1 -0
  18. package/dist/diagnostics/verbose-line.d.ts +12 -0
  19. package/dist/diagnostics/verbose-line.d.ts.map +1 -0
  20. package/dist/diagnostics/verbose-line.js +80 -0
  21. package/dist/diagnostics/verbose-line.js.map +1 -0
  22. package/dist/executors/debug.js +1 -1
  23. package/dist/executors/debug.js.map +1 -1
  24. package/dist/executors/delegate.d.ts.map +1 -1
  25. package/dist/executors/delegate.js +6 -2
  26. package/dist/executors/delegate.js.map +1 -1
  27. package/dist/executors/execute-plan.d.ts.map +1 -1
  28. package/dist/executors/execute-plan.js +9 -2
  29. package/dist/executors/execute-plan.js.map +1 -1
  30. package/dist/executors/investigate.d.ts +11 -0
  31. package/dist/executors/investigate.d.ts.map +1 -0
  32. package/dist/executors/investigate.js +101 -0
  33. package/dist/executors/investigate.js.map +1 -0
  34. package/dist/executors/retry.d.ts.map +1 -1
  35. package/dist/executors/retry.js +4 -1
  36. package/dist/executors/retry.js.map +1 -1
  37. package/dist/heartbeat.d.ts +7 -0
  38. package/dist/heartbeat.d.ts.map +1 -1
  39. package/dist/heartbeat.js +28 -1
  40. package/dist/heartbeat.js.map +1 -1
  41. package/dist/intake/compilers/delegate.d.ts +3 -1
  42. package/dist/intake/compilers/delegate.d.ts.map +1 -1
  43. package/dist/intake/compilers/delegate.js +23 -12
  44. package/dist/intake/compilers/delegate.js.map +1 -1
  45. package/dist/intake/compilers/execute-plan.d.ts +6 -1
  46. package/dist/intake/compilers/execute-plan.d.ts.map +1 -1
  47. package/dist/intake/compilers/execute-plan.js +8 -1
  48. package/dist/intake/compilers/execute-plan.js.map +1 -1
  49. package/dist/intake/compilers/investigate.d.ts +12 -0
  50. package/dist/intake/compilers/investigate.d.ts.map +1 -0
  51. package/dist/intake/compilers/investigate.js +36 -0
  52. package/dist/intake/compilers/investigate.js.map +1 -0
  53. package/dist/intake/resolve.d.ts.map +1 -1
  54. package/dist/intake/resolve.js +3 -1
  55. package/dist/intake/resolve.js.map +1 -1
  56. package/dist/intake/types.d.ts +9 -2
  57. package/dist/intake/types.d.ts.map +1 -1
  58. package/dist/model-profiles.json +10 -6
  59. package/dist/reporting/compose-investigate-headline.d.ts +11 -0
  60. package/dist/reporting/compose-investigate-headline.d.ts.map +1 -0
  61. package/dist/reporting/compose-investigate-headline.js +29 -0
  62. package/dist/reporting/compose-investigate-headline.js.map +1 -0
  63. package/dist/reporting/derive-investigate-status.d.ts +17 -0
  64. package/dist/reporting/derive-investigate-status.d.ts.map +1 -0
  65. package/dist/reporting/derive-investigate-status.js +30 -0
  66. package/dist/reporting/derive-investigate-status.js.map +1 -0
  67. package/dist/reporting/parse-investigation-report.d.ts +39 -0
  68. package/dist/reporting/parse-investigation-report.d.ts.map +1 -0
  69. package/dist/reporting/parse-investigation-report.js +150 -0
  70. package/dist/reporting/parse-investigation-report.js.map +1 -0
  71. package/dist/reporting/structured-report.d.ts +20 -0
  72. package/dist/reporting/structured-report.d.ts.map +1 -1
  73. package/dist/reporting/structured-report.js +76 -3
  74. package/dist/reporting/structured-report.js.map +1 -1
  75. package/dist/review/aggregate-result.d.ts.map +1 -1
  76. package/dist/review/aggregate-result.js +5 -0
  77. package/dist/review/aggregate-result.js.map +1 -1
  78. package/dist/review/diff-review.d.ts +29 -0
  79. package/dist/review/diff-review.d.ts.map +1 -0
  80. package/dist/review/diff-review.js +53 -0
  81. package/dist/review/diff-review.js.map +1 -0
  82. package/dist/review/evidence.d.ts +15 -0
  83. package/dist/review/evidence.d.ts.map +1 -0
  84. package/dist/review/evidence.js +26 -0
  85. package/dist/review/evidence.js.map +1 -0
  86. package/dist/review/quality-reviewer.d.ts +1 -1
  87. package/dist/review/quality-reviewer.d.ts.map +1 -1
  88. package/dist/review/quality-reviewer.js +5 -3
  89. package/dist/review/quality-reviewer.js.map +1 -1
  90. package/dist/review/spec-reviewer.d.ts +1 -1
  91. package/dist/review/spec-reviewer.d.ts.map +1 -1
  92. package/dist/review/spec-reviewer.js +3 -2
  93. package/dist/review/spec-reviewer.js.map +1 -1
  94. package/dist/run-tasks/commit-stage.d.ts +16 -0
  95. package/dist/run-tasks/commit-stage.d.ts.map +1 -0
  96. package/dist/run-tasks/commit-stage.js +52 -0
  97. package/dist/run-tasks/commit-stage.js.map +1 -0
  98. package/dist/run-tasks/fallback-report.d.ts.map +1 -1
  99. package/dist/run-tasks/fallback-report.js +1 -0
  100. package/dist/run-tasks/fallback-report.js.map +1 -1
  101. package/dist/run-tasks/metadata-repair.d.ts +15 -0
  102. package/dist/run-tasks/metadata-repair.d.ts.map +1 -0
  103. package/dist/run-tasks/metadata-repair.js +30 -0
  104. package/dist/run-tasks/metadata-repair.js.map +1 -0
  105. package/dist/run-tasks/reviewed-lifecycle.d.ts.map +1 -1
  106. package/dist/run-tasks/reviewed-lifecycle.js +474 -95
  107. package/dist/run-tasks/reviewed-lifecycle.js.map +1 -1
  108. package/dist/run-tasks/verify-stage.d.ts +25 -0
  109. package/dist/run-tasks/verify-stage.d.ts.map +1 -0
  110. package/dist/run-tasks/verify-stage.js +168 -0
  111. package/dist/run-tasks/verify-stage.js.map +1 -0
  112. package/dist/runners/base/result-builders.d.ts +26 -1
  113. package/dist/runners/base/result-builders.d.ts.map +1 -1
  114. package/dist/runners/base/result-builders.js +5 -0
  115. package/dist/runners/base/result-builders.js.map +1 -1
  116. package/dist/runners/prevention.d.ts.map +1 -1
  117. package/dist/runners/prevention.js +18 -0
  118. package/dist/runners/prevention.js.map +1 -1
  119. package/dist/runners/types.d.ts +4 -1
  120. package/dist/runners/types.d.ts.map +1 -1
  121. package/dist/tool-schemas/audit.d.ts +2 -2
  122. package/dist/tool-schemas/delegate.d.ts +9 -0
  123. package/dist/tool-schemas/delegate.d.ts.map +1 -1
  124. package/dist/tool-schemas/delegate.js +4 -0
  125. package/dist/tool-schemas/delegate.js.map +1 -1
  126. package/dist/tool-schemas/execute-plan.d.ts +13 -2
  127. package/dist/tool-schemas/execute-plan.d.ts.map +1 -1
  128. package/dist/tool-schemas/execute-plan.js +22 -4
  129. package/dist/tool-schemas/execute-plan.js.map +1 -1
  130. package/dist/tool-schemas/investigate.d.ts +48 -0
  131. package/dist/tool-schemas/investigate.d.ts.map +1 -0
  132. package/dist/tool-schemas/investigate.js +13 -0
  133. package/dist/tool-schemas/investigate.js.map +1 -0
  134. package/dist/tool-schemas/review.d.ts +1 -1
  135. package/dist/types.d.ts +36 -4
  136. package/dist/types.d.ts.map +1 -1
  137. package/dist/types.js.map +1 -1
  138. package/package.json +37 -1
@@ -8,7 +8,7 @@ export interface ReadinessResult {
8
8
  layer3Hints: ('concrete_path' | 'named_code_artifact' | 'reasonable_length')[];
9
9
  briefQualityWarnings: BriefQualityWarning[];
10
10
  }
11
- export type SourceRoute = 'delegate_tasks' | 'review_code' | 'debug_task' | 'verify_work' | 'audit_document' | 'execute_plan';
11
+ export type SourceRoute = 'delegate_tasks' | 'review_code' | 'debug_task' | 'verify_work' | 'audit_document' | 'execute_plan' | 'investigate_codebase';
12
12
  export type DelegateSource = {
13
13
  route: 'delegate_tasks';
14
14
  originalInput: Record<string, unknown>;
@@ -45,7 +45,13 @@ export type ExecutePlanSource = {
45
45
  filePaths: string[];
46
46
  task: string;
47
47
  };
48
- export type AnySource = DelegateSource | ReviewSource | DebugSource | VerifySource | AuditSource | ExecutePlanSource;
48
+ export type InvestigateSource = {
49
+ route: 'investigate_codebase';
50
+ originalInput: Record<string, unknown>;
51
+ question: string;
52
+ filePaths: string[];
53
+ };
54
+ export type AnySource = DelegateSource | ReviewSource | DebugSource | VerifySource | AuditSource | ExecutePlanSource | InvestigateSource;
49
55
  export interface DraftTask {
50
56
  draftId: string;
51
57
  source: AnySource;
@@ -57,6 +63,7 @@ export interface DraftTask {
57
63
  questions?: string[];
58
64
  confirmed?: boolean;
59
65
  contextBlockIds?: string[];
66
+ reviewPolicy?: 'full' | 'spec_only' | 'diff_only' | 'off';
60
67
  }
61
68
  export interface StoredDraft {
62
69
  draft: DraftTask;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intake/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAC3B,sBAAsB,GACtB,sBAAsB,GACtB,2BAA2B,GAC3B,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;IACrC,cAAc,EAAE,CAAC,OAAO,GAAG,QAAQ,GAAG,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,CAAA;IAC7E,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,WAAW,EAAE,CAAC,eAAe,GAAG,qBAAqB,GAAG,mBAAmB,CAAC,EAAE,CAAA;IAC9E,oBAAoB,EAAE,mBAAmB,EAAE,CAAA;CAC5C;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAE9H,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AACjG,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AACrJ,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAClJ,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAChI,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACrI,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACrI,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAErH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,EAAE,CAAA;CAAE,GAC1D;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7E;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intake/types.ts"],"names":[],"mappings":"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"}
@@ -20,13 +20,15 @@
20
20
  "provider": "openai",
21
21
  "naming": "gpt-{major}.{minor}[-{size}] — sizes: pro, mini, nano (no suffix = base)",
22
22
  "rateSource": "https://developers.openai.com/api/docs/pricing",
23
- "rateLookupDate": "2026-04-17",
23
+ "rateLookupDate": "2026-04-25",
24
24
  "defaults": { "supportsEffort": true, "inputTokenSoftLimit": 128000, "capabilities": [] },
25
25
  "profiles": [
26
26
  { "prefix": "gpt", "tier": "standard", "cost": "medium", "input": 2.5, "output": 15, "bestFor": "general GPT family tasks (catch-all)" },
27
27
  { "prefix": "gpt-5", "tier": "reasoning", "bestFor": "reasoning-tier coding and agentic workflows", "inputTokenSoftLimit": 1000000, "capabilities": ["web_search"] },
28
- { "prefix": "gpt-5.4", "bestFor": "latest GPT-5 flagship" },
29
- { "prefix": "gpt-5.4-pro", "cost": "high", "input": 30, "output": 180, "bestFor": "highest-quality reasoning and complex research" },
28
+ { "prefix": "gpt-5.5", "input": 5, "output": 30, "bestFor": "latest GPT-5 flagship" },
29
+ { "prefix": "gpt-5.5-pro", "cost": "high", "input": 30, "output": 180, "bestFor": "highest-quality reasoning and complex research" },
30
+ { "prefix": "gpt-5.4", "bestFor": "prior GPT-5 flagship" },
31
+ { "prefix": "gpt-5.4-pro", "cost": "high", "input": 30, "output": 180, "bestFor": "previous-gen high-end reasoning" },
30
32
  { "prefix": "gpt-5.4-mini", "tier": "standard", "cost": "low", "input": 0.75, "output": 4.5, "bestFor": "fast cost-effective tasks and extraction" },
31
33
  { "prefix": "gpt-5.4-nano", "tier": "standard", "cost": "low", "input": 0.2, "output": 1.25, "bestFor": "cheapest GPT for high-throughput batch work", "capabilities": [] },
32
34
  { "prefix": "gpt-5.3", "input": 1.75, "output": 14, "bestFor": "reasoning and coding at lower cost than 5.4" },
@@ -72,12 +74,14 @@
72
74
  },
73
75
  {
74
76
  "provider": "deepseek",
75
- "naming": "deepseek-{variant} — flat pricing across variants",
77
+ "naming": "deepseek-{variant}[-{size}]V4 sizes: flash, pro; legacy variants are flat-priced",
76
78
  "rateSource": "https://api-docs.deepseek.com/quick_start/pricing",
77
- "rateLookupDate": "2026-04-17",
79
+ "rateLookupDate": "2026-04-25",
78
80
  "defaults": { "supportsEffort": false, "inputTokenSoftLimit": 128000, "capabilities": [] },
79
81
  "profiles": [
80
- { "prefix": "deepseek", "tier": "standard", "cost": "low", "input": 0.3, "output": 0.5, "bestFor": "cost-effective coding and reasoning" }
82
+ { "prefix": "deepseek", "tier": "standard", "cost": "low", "input": 0.3, "output": 0.5, "bestFor": "cost-effective coding and reasoning" },
83
+ { "prefix": "deepseek-v4-flash", "input": 0.14, "output": 0.28, "bestFor": "cheapest DeepSeek V4 with 1M context", "inputTokenSoftLimit": 1000000 },
84
+ { "prefix": "deepseek-v4-pro", "tier": "reasoning", "cost": "medium", "input": 1.74, "output": 3.48, "bestFor": "DeepSeek V4 thinking-mode reasoning with 1M context", "inputTokenSoftLimit": 1000000 }
81
85
  ]
82
86
  },
83
87
  {
@@ -0,0 +1,11 @@
1
+ export declare function normalizeHeadlineQuestion(raw: string): string;
2
+ export interface InvestigateHeadlineInput {
3
+ question: string;
4
+ workerStatus: 'done' | 'done_with_concerns' | 'needs_context' | 'blocked';
5
+ citationCount: number;
6
+ confidenceLevel: 'high' | 'medium' | 'low' | null;
7
+ unresolvedCount: number;
8
+ incompleteReason?: 'turn_cap' | 'cost_cap' | 'timeout' | 'missing_sections';
9
+ }
10
+ export declare function composeInvestigateTerminalHeadline(input: InvestigateHeadlineInput): string;
11
+ //# sourceMappingURL=compose-investigate-headline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-investigate-headline.d.ts","sourceRoot":"","sources":["../../src/reporting/compose-investigate-headline.ts"],"names":[],"mappings":"AAGA,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,oBAAoB,GAAG,eAAe,GAAG,SAAS,CAAC;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;IAClD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,kBAAkB,CAAC;CAC7E;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAc1F"}
@@ -0,0 +1,29 @@
1
+ const WHITESPACE_OR_ZW_RE = /[\s\u200B\u200C\u200D\uFEFF]+/gu;
2
+ const ASCII_CONTROL_RE = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g;
3
+ export function normalizeHeadlineQuestion(raw) {
4
+ let s = raw.replace(WHITESPACE_OR_ZW_RE, ' ');
5
+ s = s.replace(ASCII_CONTROL_RE, '');
6
+ s = s.trim();
7
+ const codepoints = Array.from(s);
8
+ if (codepoints.length > 60) {
9
+ s = codepoints.slice(0, 60).join('') + '\u2026';
10
+ }
11
+ s = s.replace(/"/g, '\\"');
12
+ return s;
13
+ }
14
+ export function composeInvestigateTerminalHeadline(input) {
15
+ const q = normalizeHeadlineQuestion(input.question);
16
+ const conf = input.confidenceLevel ?? 'unparseable';
17
+ if (input.workerStatus === 'done_with_concerns') {
18
+ const reason = input.incompleteReason ?? 'missing_sections';
19
+ return `Investigation: "${q}" \u2014 done with concerns (${reason}), ${input.citationCount} citations so far, ${input.unresolvedCount} unresolved.`;
20
+ }
21
+ if (input.workerStatus === 'needs_context') {
22
+ return `Investigation: "${q}" \u2014 needs context, ${input.unresolvedCount} unresolved.`;
23
+ }
24
+ if (input.workerStatus === 'blocked') {
25
+ return `Investigation: "${q}" \u2014 blocked.`;
26
+ }
27
+ return `Investigation: "${q}" \u2014 ${input.citationCount} citations, confidence ${conf}, ${input.unresolvedCount} unresolved.`;
28
+ }
29
+ //# sourceMappingURL=compose-investigate-headline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-investigate-headline.js","sourceRoot":"","sources":["../../src/reporting/compose-investigate-headline.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AAC9D,MAAM,gBAAgB,GAAG,iDAAiD,CAAC;AAE3E,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACb,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC3B,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IAClD,CAAC;IACD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3B,OAAO,CAAC,CAAC;AACX,CAAC;AAWD,MAAM,UAAU,kCAAkC,CAAC,KAA+B;IAChF,MAAM,CAAC,GAAG,yBAAyB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,IAAI,aAAa,CAAC;IACpD,IAAI,KAAK,CAAC,YAAY,KAAK,oBAAoB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;QAC5D,OAAO,mBAAmB,CAAC,gCAAgC,MAAM,MAAM,KAAK,CAAC,aAAa,sBAAsB,KAAK,CAAC,eAAe,cAAc,CAAC;IACtJ,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC,2BAA2B,KAAK,CAAC,eAAe,cAAc,CAAC;IAC5F,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,mBAAmB,CAAC,mBAAmB,CAAC;IACjD,CAAC;IACD,OAAO,mBAAmB,CAAC,YAAY,KAAK,CAAC,aAAa,0BAA0B,IAAI,KAAK,KAAK,CAAC,eAAe,cAAc,CAAC;AACnI,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { InvestigationParseResult } from './parse-investigation-report.js';
2
+ export type CapKind = 'turn' | 'cost' | 'wall_clock';
3
+ export type IncompleteReason = 'turn_cap' | 'cost_cap' | 'timeout' | 'missing_sections';
4
+ export type WorkerStatus = 'done' | 'done_with_concerns' | 'needs_context' | 'blocked';
5
+ export declare function mapCapToReason(cap: CapKind): IncompleteReason;
6
+ export interface DeriveInput {
7
+ workerError?: Error;
8
+ capExhausted?: CapKind;
9
+ needsContext: boolean;
10
+ parseResult: InvestigationParseResult;
11
+ }
12
+ export interface DeriveOutput {
13
+ workerStatus: WorkerStatus;
14
+ incompleteReason?: IncompleteReason;
15
+ }
16
+ export declare function deriveInvestigateWorkerStatus(input: DeriveInput): DeriveOutput;
17
+ //# sourceMappingURL=derive-investigate-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-investigate-status.d.ts","sourceRoot":"","sources":["../../src/reporting/derive-investigate-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,kBAAkB,CAAC;AACxF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,oBAAoB,GAAG,eAAe,GAAG,SAAS,CAAC;AAEvF,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAM7D;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAqB9E"}
@@ -0,0 +1,30 @@
1
+ export function mapCapToReason(cap) {
2
+ switch (cap) {
3
+ case 'turn': return 'turn_cap';
4
+ case 'cost': return 'cost_cap';
5
+ case 'wall_clock': return 'timeout';
6
+ }
7
+ }
8
+ export function deriveInvestigateWorkerStatus(input) {
9
+ if (input.needsContext)
10
+ return { workerStatus: 'needs_context' };
11
+ if (input.workerError)
12
+ return { workerStatus: 'blocked' };
13
+ if (input.parseResult.kind === 'no_structured_report')
14
+ return { workerStatus: 'blocked' };
15
+ const sv = input.parseResult.sectionValidity;
16
+ const sectionsBad = sv.summary !== 'valid' ||
17
+ sv.citations === 'empty_invalid' || sv.citations === 'missing' ||
18
+ sv.confidence !== 'valid';
19
+ if (sectionsBad) {
20
+ return {
21
+ workerStatus: 'done_with_concerns',
22
+ incompleteReason: input.capExhausted ? mapCapToReason(input.capExhausted) : 'missing_sections',
23
+ };
24
+ }
25
+ if (input.capExhausted) {
26
+ return { workerStatus: 'done_with_concerns', incompleteReason: mapCapToReason(input.capExhausted) };
27
+ }
28
+ return { workerStatus: 'done' };
29
+ }
30
+ //# sourceMappingURL=derive-investigate-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-investigate-status.js","sourceRoot":"","sources":["../../src/reporting/derive-investigate-status.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC;QAC/B,KAAK,YAAY,CAAC,CAAC,OAAO,SAAS,CAAC;IACtC,CAAC;AACH,CAAC;AAcD,MAAM,UAAU,6BAA6B,CAAC,KAAkB;IAC9D,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;IACjE,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1D,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,sBAAsB;QAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IAE1F,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC;IAC7C,MAAM,WAAW,GACf,EAAE,CAAC,OAAO,KAAK,OAAO;QACtB,EAAE,CAAC,SAAS,KAAK,eAAe,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS;QAC9D,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC;IAE5B,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,YAAY,EAAE,oBAAoB;YAClC,gBAAgB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kBAAkB;SAC/F,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;IACtG,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,39 @@
1
+ export interface Citation {
2
+ file: string;
3
+ lines: string;
4
+ claim: string;
5
+ }
6
+ export interface ParseCitationsResult {
7
+ citations: Citation[];
8
+ malformedCitationLines: number;
9
+ }
10
+ export declare function parseCitations(rawLines: string[]): ParseCitationsResult;
11
+ export interface Confidence {
12
+ level: 'high' | 'medium' | 'low';
13
+ rationale: string;
14
+ }
15
+ export declare function parseConfidence(rawLines: string[]): Confidence | null;
16
+ export interface ParsedInvestigation {
17
+ citations: Citation[];
18
+ confidence: Confidence | null;
19
+ needsCallerClarification: boolean;
20
+ diagnostics: {
21
+ malformedCitationLines: number;
22
+ missingRequiredSections: string[];
23
+ invalidRequiredSections: string[];
24
+ };
25
+ }
26
+ export interface SectionValidity {
27
+ summary: 'valid' | 'empty' | 'missing';
28
+ citations: 'valid' | 'empty_legitimate' | 'empty_invalid' | 'missing';
29
+ confidence: 'valid' | 'invalid' | 'missing';
30
+ }
31
+ export type InvestigationParseResult = {
32
+ kind: 'no_structured_report';
33
+ } | {
34
+ kind: 'structured_report';
35
+ investigation: ParsedInvestigation;
36
+ sectionValidity: SectionValidity;
37
+ };
38
+ export declare function parseInvestigationReport(rawOutput: string): InvestigationParseResult;
39
+ //# sourceMappingURL=parse-investigation-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-investigation-report.d.ts","sourceRoot":"","sources":["../../src/reporting/parse-investigation-report.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAoBD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAwBvE;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI,CAcrE;AAID,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,wBAAwB,EAAE,OAAO,CAAC;IAClC,WAAW,EAAE;QACX,sBAAsB,EAAE,MAAM,CAAC;QAC/B,uBAAuB,EAAE,MAAM,EAAE,CAAC;QAClC,uBAAuB,EAAE,MAAM,EAAE,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACvC,SAAS,EAAE,OAAO,GAAG,kBAAkB,GAAG,eAAe,GAAG,SAAS,CAAC;IACtE,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,aAAa,EAAE,mBAAmB,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,CAAC;AAkBxG,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB,CAgEpF"}
@@ -0,0 +1,150 @@
1
+ const LINE_TOKEN_RE = /^(?:[1-9][0-9]*)(?:-[1-9][0-9]*)?$/;
2
+ const CITATION_RE = /^(?<file>.+):(?<lines>\d+(?:-\d+)?)\s+(?:—|--)\s+(?<claim>.+)$/;
3
+ const BULLET_RE = /^(?:[-*]|\d+[.)])\s+/;
4
+ function isValidLineToken(token) {
5
+ if (!LINE_TOKEN_RE.test(token))
6
+ return false;
7
+ const parts = token.split('-');
8
+ for (const p of parts) {
9
+ const n = Number(p);
10
+ if (!Number.isSafeInteger(n))
11
+ return false;
12
+ }
13
+ if (parts.length === 2) {
14
+ const [start, end] = parts.map(Number);
15
+ if (start > end)
16
+ return false;
17
+ }
18
+ return true;
19
+ }
20
+ export function parseCitations(rawLines) {
21
+ const citations = [];
22
+ let malformed = 0;
23
+ for (const raw of rawLines) {
24
+ const trimmed = raw.trim();
25
+ if (!trimmed)
26
+ continue;
27
+ const stripped = trimmed.replace(BULLET_RE, '');
28
+ const match = stripped.match(CITATION_RE);
29
+ if (!match || !match.groups) {
30
+ malformed++;
31
+ continue;
32
+ }
33
+ const { file, lines, claim } = match.groups;
34
+ if (!isValidLineToken(lines)) {
35
+ malformed++;
36
+ continue;
37
+ }
38
+ if (!claim || !claim.trim()) {
39
+ malformed++;
40
+ continue;
41
+ }
42
+ citations.push({ file: file.trim(), lines, claim: claim.trim() });
43
+ }
44
+ return { citations, malformedCitationLines: malformed };
45
+ }
46
+ const CONFIDENCE_HEAD_RE = /^(high|medium|low)(?:(?:\s+(?:—|--)\s+|:\s*)(.*))?\s*$/i;
47
+ export function parseConfidence(rawLines) {
48
+ const firstIdx = rawLines.findIndex(l => l.trim());
49
+ if (firstIdx === -1)
50
+ return null;
51
+ const head = rawLines[firstIdx].trim();
52
+ const m = head.match(CONFIDENCE_HEAD_RE);
53
+ if (!m)
54
+ return null;
55
+ const level = m[1].toLowerCase();
56
+ const headRationale = m[2]?.trim() ?? '';
57
+ const rest = rawLines
58
+ .slice(firstIdx + 1)
59
+ .map(l => l.trim())
60
+ .filter(Boolean);
61
+ const rationale = [headRationale, ...rest].filter(Boolean).join('\n');
62
+ return { level, rationale };
63
+ }
64
+ import { parseStructuredReport } from './structured-report.js';
65
+ function isLegitimatelyNone(lines) {
66
+ const stripped = lines.map(l => l.trim().replace(/^[-*]\s+/, '').toLowerCase()).filter(Boolean);
67
+ return stripped.length === 1 && (stripped[0] === '(none)' || stripped[0] === 'none');
68
+ }
69
+ function hasSectionHeader(raw, name) {
70
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
71
+ return new RegExp(`^(?:##|#)\\s*${escaped}\\b`, 'mi').test(raw);
72
+ }
73
+ const NEEDS_CONTEXT_BULLET_RE = /^(?:[-*]|\d+[.)])\s+\[needs_context\]/i;
74
+ function detectNeedsContext(unresolvedLines) {
75
+ return unresolvedLines.some(l => NEEDS_CONTEXT_BULLET_RE.test(l.trim()));
76
+ }
77
+ export function parseInvestigationReport(rawOutput) {
78
+ if (!rawOutput || !rawOutput.trim())
79
+ return { kind: 'no_structured_report' };
80
+ const recognized = ['summary', 'citations', 'confidence'];
81
+ const hasInvestigationHeader = recognized.some(name => hasSectionHeader(rawOutput, name));
82
+ if (!hasInvestigationHeader)
83
+ return { kind: 'no_structured_report' };
84
+ const generic = parseStructuredReport(rawOutput);
85
+ const summaryHeaderPresent = hasSectionHeader(rawOutput, 'summary');
86
+ let summaryValidity;
87
+ if (!summaryHeaderPresent)
88
+ summaryValidity = 'missing';
89
+ else if (generic.summary && generic.summary.trim())
90
+ summaryValidity = 'valid';
91
+ else
92
+ summaryValidity = 'empty';
93
+ const confidenceHeaderPresent = hasSectionHeader(rawOutput, 'confidence');
94
+ const confidenceLines = generic.extraSections['confidence'] ?? [];
95
+ const confidenceParsed = parseConfidence(confidenceLines);
96
+ let confidenceValidity;
97
+ if (!confidenceHeaderPresent)
98
+ confidenceValidity = 'missing';
99
+ else if (confidenceParsed)
100
+ confidenceValidity = 'valid';
101
+ else
102
+ confidenceValidity = 'invalid';
103
+ const citationsHeaderPresent = hasSectionHeader(rawOutput, 'citations');
104
+ const citationsLines = generic.extraSections['citations'] ?? [];
105
+ let citationsValidity;
106
+ let citationsParsed;
107
+ if (!citationsHeaderPresent) {
108
+ citationsValidity = 'missing';
109
+ citationsParsed = { citations: [], malformedCitationLines: 0 };
110
+ }
111
+ else if (isLegitimatelyNone(citationsLines)) {
112
+ citationsParsed = { citations: [], malformedCitationLines: 0 };
113
+ citationsValidity = (confidenceParsed?.level === 'low') ? 'empty_legitimate' : 'empty_invalid';
114
+ }
115
+ else {
116
+ citationsParsed = parseCitations(citationsLines);
117
+ citationsValidity = citationsParsed.citations.length > 0 ? 'valid' : 'empty_invalid';
118
+ }
119
+ const missing = [];
120
+ const invalid = [];
121
+ if (summaryValidity === 'missing')
122
+ missing.push('summary');
123
+ else if (summaryValidity === 'empty')
124
+ invalid.push('summary');
125
+ if (citationsValidity === 'missing')
126
+ missing.push('citations');
127
+ else if (citationsValidity === 'empty_invalid')
128
+ invalid.push('citations');
129
+ if (confidenceValidity === 'missing')
130
+ missing.push('confidence');
131
+ else if (confidenceValidity === 'invalid')
132
+ invalid.push('confidence');
133
+ const unresolvedLines = generic.unresolved;
134
+ const needsCallerClarification = detectNeedsContext(unresolvedLines);
135
+ return {
136
+ kind: 'structured_report',
137
+ investigation: {
138
+ citations: citationsParsed.citations,
139
+ confidence: confidenceParsed,
140
+ needsCallerClarification,
141
+ diagnostics: {
142
+ malformedCitationLines: citationsParsed.malformedCitationLines,
143
+ missingRequiredSections: missing,
144
+ invalidRequiredSections: invalid,
145
+ },
146
+ },
147
+ sectionValidity: { summary: summaryValidity, citations: citationsValidity, confidence: confidenceValidity },
148
+ };
149
+ }
150
+ //# sourceMappingURL=parse-investigation-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-investigation-report.js","sourceRoot":"","sources":["../../src/reporting/parse-investigation-report.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,20 @@
1
+ import { z } from 'zod';
1
2
  export declare const structuredReportSuffix: string;
3
+ export declare const commitSchema: z.ZodObject<{
4
+ type: z.ZodEnum<{
5
+ feat: "feat";
6
+ fix: "fix";
7
+ refactor: "refactor";
8
+ test: "test";
9
+ docs: "docs";
10
+ chore: "chore";
11
+ style: "style";
12
+ }>;
13
+ scope: z.ZodOptional<z.ZodString>;
14
+ subject: z.ZodString;
15
+ body: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>;
17
+ export type CommitFields = z.infer<typeof commitSchema>;
2
18
  export interface FileChange {
3
19
  path: string;
4
20
  summary: string;
@@ -12,6 +28,10 @@ export interface ParsedStructuredReport {
12
28
  }>;
13
29
  deviationsFromBrief: string[];
14
30
  unresolved: string[];
31
+ extraSections: Record<string, string[]>;
32
+ commit?: CommitFields;
33
+ commitDiagnostic?: string;
15
34
  }
35
+ export type StructuredReport = ParsedStructuredReport;
16
36
  export declare function parseStructuredReport(output: string): ParsedStructuredReport;
17
37
  //# sourceMappingURL=structured-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structured-report.d.ts","sourceRoot":"","sources":["../../src/reporting/structured-report.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,QAe3B,CAAC;AAET,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,cAAc,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAoB5E"}
1
+ {"version":3,"file":"structured-report.d.ts","sourceRoot":"","sources":["../../src/reporting/structured-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB,QAiC3B,CAAC;AAET,eAAO,MAAM,YAAY;;;;;;;;;;;;;iBAUvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,cAAc,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAmD5E"}
@@ -1,3 +1,4 @@
1
+ import { z } from 'zod';
1
2
  export const structuredReportSuffix = `
2
3
  ## Summary
3
4
  One-line summary of what was done.
@@ -13,7 +14,36 @@ Any intentional or unintentional deviations from the original brief.
13
14
 
14
15
  ## Unresolved
15
16
  Open questions, incomplete items, or items requiring further investigation.
17
+
18
+ If you wrote, modified, or deleted files, your structured report MUST include a \`commit:\` block as a JSON object with these fields:
19
+
20
+ {
21
+ "type": "feat" | "fix" | "refactor" | "test" | "docs" | "chore" | "style",
22
+ "scope": "<optional, 1-24 chars: lowercase letters, digits, dot, underscore, slash, hyphen; must start with letter or digit>",
23
+ "subject": "<1-50 chars, lowercase first letter, no trailing colon, no leading/trailing whitespace>",
24
+ "body": "<optional multi-paragraph plain text explaining WHY>"
25
+ }
26
+
27
+ Examples:
28
+ type: "feat", scope: "core", subject: "add x"
29
+ type: "refactor", scope: "run_tasks", subject: "extract Y from Z"
30
+ type: "fix", subject: "guard against undefined"
31
+
32
+ Do NOT write narrative ("Now I'm going to...") in the subject. The runner will compose \`<type>(<scope>): <subject>\` as the commit message; your subject becomes the commit subject line verbatim.
33
+
34
+ If you did not write any files, omit the commit block entirely.
16
35
  `.trim();
36
+ export const commitSchema = z.object({
37
+ type: z.enum(['feat', 'fix', 'refactor', 'test', 'docs', 'chore', 'style']),
38
+ scope: z.string().regex(/^[a-z0-9][a-z0-9._/-]{0,23}$/).optional(),
39
+ subject: z.string()
40
+ .min(1)
41
+ .max(50)
42
+ .refine(s => !/^[A-Z]/.test(s), 'subject must not start with ASCII uppercase')
43
+ .refine(s => !s.endsWith(':'), 'subject must not end with colon')
44
+ .refine(s => s === s.replace(/^\s+|\s+$/g, ''), 'no leading/trailing whitespace'),
45
+ body: z.string().max(8192).optional(),
46
+ });
17
47
  export function parseStructuredReport(output) {
18
48
  if (!output || !output.trim()) {
19
49
  return {
@@ -22,16 +52,46 @@ export function parseStructuredReport(output) {
22
52
  validationsRun: [],
23
53
  deviationsFromBrief: [],
24
54
  unresolved: [],
55
+ extraSections: {},
25
56
  };
26
57
  }
27
58
  const sections = extractSections(output);
28
- return {
59
+ const TYPED_HEADERS = new Set([
60
+ 'summary', 'files changed', 'validations run', 'deviations from brief', 'unresolved',
61
+ ]);
62
+ const extraSections = {};
63
+ for (const [key, value] of Object.entries(sections)) {
64
+ if (!TYPED_HEADERS.has(key)) {
65
+ extraSections[key] = value;
66
+ }
67
+ }
68
+ const report = {
29
69
  summary: sections['summary']?.[0] ?? null,
30
70
  filesChanged: parseFilesChanged(sections['files changed']),
31
71
  validationsRun: parseValidationsRun(sections['validations run']),
32
72
  deviationsFromBrief: sections['deviations from brief'] ?? [],
33
73
  unresolved: sections['unresolved'] ?? [],
74
+ extraSections,
34
75
  };
76
+ const commitMatch = output.match(/(?:^|\n)\s*commit:\s*({[\s\S]*?})\s*(?:\n|$)/);
77
+ if (commitMatch) {
78
+ try {
79
+ const obj = JSON.parse(commitMatch[1]);
80
+ const parsed = commitSchema.safeParse(obj);
81
+ if (parsed.success) {
82
+ report.commit = parsed.data;
83
+ }
84
+ else {
85
+ report.commitDiagnostic = parsed.error.issues
86
+ .map(i => `${i.path.join('.')}: ${i.message}`)
87
+ .join('; ');
88
+ }
89
+ }
90
+ catch (e) {
91
+ report.commitDiagnostic = `commit block JSON parse error: ${e.message}`;
92
+ }
93
+ }
94
+ return report;
35
95
  }
36
96
  function extractSections(output) {
37
97
  const sections = {};
@@ -99,8 +159,21 @@ function extractSections(output) {
99
159
  }
100
160
  return sections;
101
161
  }
162
+ function isLegitimatelyEmpty(lines) {
163
+ if (!lines || lines.length === 0)
164
+ return true;
165
+ // Strip optional bullet, lowercase, compare against the empty literals.
166
+ const collapsed = lines
167
+ .map(l => l.replace(/^[-*]\s*/, '').trim().toLowerCase())
168
+ .filter(Boolean);
169
+ if (collapsed.length === 0)
170
+ return true;
171
+ if (collapsed.length !== 1)
172
+ return false;
173
+ return collapsed[0] === '(none)' || collapsed[0] === 'none' || collapsed[0] === 'n/a';
174
+ }
102
175
  function parseFilesChanged(lines) {
103
- if (!lines)
176
+ if (isLegitimatelyEmpty(lines))
104
177
  return [];
105
178
  return lines
106
179
  .map(l => l.replace(/^[-*]\s*/, '').trim())
@@ -113,7 +186,7 @@ function parseFilesChanged(lines) {
113
186
  });
114
187
  }
115
188
  function parseValidationsRun(lines) {
116
- if (!lines)
189
+ if (isLegitimatelyEmpty(lines))
117
190
  return [];
118
191
  return lines
119
192
  .map(l => l.replace(/^[-*]\s*/, '').trim())
@@ -1 +1 @@
1
- {"version":3,"file":"structured-report.js","sourceRoot":"","sources":["../../src/reporting/structured-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structured-report.js","sourceRoot":"","sources":["../../src/reporting/structured-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCrC,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,QAAQ,EAAE;IAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,6CAA6C,CAAC;SAC7E,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,iCAAiC,CAAC;SAChE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,gCAAgC,CAAC;IACnF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAsBH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,EAAE;YAClB,mBAAmB,EAAE,EAAE;YACvB,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;QAC5B,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,YAAY;KACrF,CAAC,CAAC;IACH,MAAM,aAAa,GAA6B,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;QACzC,YAAY,EAAE,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC1D,cAAc,EAAE,mBAAmB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAChE,mBAAmB,EAAE,QAAQ,CAAC,uBAAuB,CAAC,IAAI,EAAE;QAC5D,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE;QACxC,aAAa;KACd,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjF,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;qBAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;qBAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,gBAAgB,GAAG,kCAAmC,CAAW,CAAC,OAAO,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAE9C,yCAAyC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS;QACzC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,YAAY,KAAK,CAAC,CAAC;YAAE,SAAS;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,6EAA6E;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,YAAY,KAAK,CAAC,CAAC;YAAE,SAAS;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEtD,oDAAoD;IACpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACjF,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,MAA0B,CAAC;QAC/B,IAAI,OAA2B,CAAC;QAEhC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3C,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAChF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC5C,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEtD,yDAAyD;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA2B;IACtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,wEAAwE;IACxE,MAAM,SAAS,GAAG,KAAK;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACxD,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;AACxF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA2B;IACpD,IAAI,mBAAmB,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,OAAQ,KAAkB;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACtF,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA2B;IACtD,IAAI,mBAAmB,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,OAAQ,KAAkB;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACxF,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate-result.d.ts","sourceRoot":"","sources":["../../src/review/aggregate-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,sBAAsB,EAClC,UAAU,EAAE,sBAAsB,GAAG,SAAS,EAC9C,aAAa,EAAE,sBAAsB,GAAG,SAAS,EACjD,UAAU,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,EACjE,aAAa,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,GACnE,sBAAsB,CA8BxB"}
1
+ {"version":3,"file":"aggregate-result.d.ts","sourceRoot":"","sources":["../../src/review/aggregate-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,sBAAsB,EAClC,UAAU,EAAE,sBAAsB,GAAG,SAAS,EAC9C,aAAa,EAAE,sBAAsB,GAAG,SAAS,EACjD,UAAU,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,EACjE,aAAa,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,GACnE,sBAAsB,CAmCxB"}
@@ -25,6 +25,11 @@ export function aggregateResult(implReport, specReport, qualityReport, specStatu
25
25
  ...(specReport?.unresolved ?? []),
26
26
  ...(qualityReport?.unresolved ?? []),
27
27
  ],
28
+ extraSections: {
29
+ ...(implReport.extraSections ?? {}),
30
+ ...(specReport?.extraSections ?? {}),
31
+ ...(qualityReport?.extraSections ?? {}),
32
+ },
28
33
  };
29
34
  }
30
35
  //# sourceMappingURL=aggregate-result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate-result.js","sourceRoot":"","sources":["../../src/review/aggregate-result.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAC7B,UAAkC,EAClC,UAA8C,EAC9C,aAAiD,EACjD,UAAiE,EACjE,aAAoE;IAEpE,MAAM,MAAM,GACV,UAAU,KAAK,kBAAkB;QAC/B,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,aAAa,KAAK,kBAAkB;YACpC,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,aAAa,CAAC;IAEtB,OAAO;QACL,OAAO,EAAE,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE;QAC/C,YAAY,EAAE;YACZ,GAAG,UAAU,CAAC,YAAY;YAC1B,GAAG,CAAC,aAAa,EAAE,YAAY,IAAI,EAAE,CAAC;SACvC;QACD,cAAc,EAAE;YACd,GAAG,UAAU,CAAC,cAAc;YAC5B,GAAG,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,aAAa,EAAE,cAAc,IAAI,EAAE,CAAC;SACzC;QACD,mBAAmB,EAAE;YACnB,GAAG,CAAC,UAAU,CAAC,mBAAmB,IAAI,EAAE,CAAC;YACzC,GAAG,CAAC,UAAU,EAAE,mBAAmB,IAAI,EAAE,CAAC;YAC1C,GAAG,CAAC,aAAa,EAAE,mBAAmB,IAAI,EAAE,CAAC;SAC9C;QACD,UAAU,EAAE;YACV,GAAG,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;YAChC,GAAG,CAAC,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC;YACjC,GAAG,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,CAAC;SACrC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"aggregate-result.js","sourceRoot":"","sources":["../../src/review/aggregate-result.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAC7B,UAAkC,EAClC,UAA8C,EAC9C,aAAiD,EACjD,UAAiE,EACjE,aAAoE;IAEpE,MAAM,MAAM,GACV,UAAU,KAAK,kBAAkB;QAC/B,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,aAAa,KAAK,kBAAkB;YACpC,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,aAAa,CAAC;IAEtB,OAAO;QACL,OAAO,EAAE,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE;QAC/C,YAAY,EAAE;YACZ,GAAG,UAAU,CAAC,YAAY;YAC1B,GAAG,CAAC,aAAa,EAAE,YAAY,IAAI,EAAE,CAAC;SACvC;QACD,cAAc,EAAE;YACd,GAAG,UAAU,CAAC,cAAc;YAC5B,GAAG,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,aAAa,EAAE,cAAc,IAAI,EAAE,CAAC;SACzC;QACD,mBAAmB,EAAE;YACnB,GAAG,CAAC,UAAU,CAAC,mBAAmB,IAAI,EAAE,CAAC;YACzC,GAAG,CAAC,UAAU,EAAE,mBAAmB,IAAI,EAAE,CAAC;YAC1C,GAAG,CAAC,aAAa,EAAE,mBAAmB,IAAI,EAAE,CAAC;SAC9C;QACD,UAAU,EAAE;YACV,GAAG,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;YAChC,GAAG,CAAC,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC;YACjC,GAAG,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,CAAC;SACrC;QACD,aAAa,EAAE;YACb,GAAG,CAAC,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC;YACnC,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,EAAE,CAAC;YACpC,GAAG,CAAC,aAAa,EAAE,aAAa,IAAI,EAAE,CAAC;SACxC;KACF,CAAC;AACJ,CAAC"}