@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
@@ -0,0 +1,29 @@
1
+ import type { VerifyStageResult } from '../run-tasks/verify-stage.js';
2
+ export type DiffReviewConcern = {
3
+ source: 'diff_review';
4
+ severity: 'low' | 'medium' | 'high';
5
+ message: string;
6
+ };
7
+ export type DiffReviewVerdict = {
8
+ kind: 'approve';
9
+ concerns: [];
10
+ } | {
11
+ kind: 'concerns';
12
+ concerns: DiffReviewConcern[];
13
+ } | {
14
+ kind: 'reject';
15
+ message: string;
16
+ };
17
+ export interface DiffReviewInput {
18
+ cwd: string;
19
+ diff: string;
20
+ diffTruncated: boolean;
21
+ verification: VerifyStageResult;
22
+ worker: {
23
+ call: (prompt: string) => Promise<{
24
+ output: string;
25
+ }>;
26
+ };
27
+ }
28
+ export declare function runDiffReview(input: DiffReviewInput): Promise<DiffReviewVerdict>;
29
+ //# sourceMappingURL=diff-review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-review.d.ts","sourceRoot":"","sources":["../../src/review/diff-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,iBAAiB,CAAC;IAChC,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CACnE;AAoBD,wBAAsB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsCtF"}
@@ -0,0 +1,53 @@
1
+ const PROMPT_TEMPLATE = (i) => `
2
+ You are reviewing a mechanical refactor in a single pass. No rework loop is available.
3
+
4
+ Working directory: ${i.cwd}
5
+ Verification: ${i.verification.status}
6
+ ${i.verification.steps.map((s) => `- ${s.command} → ${s.status}`).join('\n')}
7
+
8
+ Diff${i.diffTruncated ? ' (TRUNCATED at 64 KB — you may not approve cleanly)' : ''}:
9
+ \`\`\`diff
10
+ ${i.diff}
11
+ \`\`\`
12
+
13
+ Reply with EXACTLY one of:
14
+ - APPROVE
15
+ - CONCERNS: <comma-separated short concern messages>
16
+ - REJECT: <one-line reason>
17
+ `;
18
+ export async function runDiffReview(input) {
19
+ const prompt = PROMPT_TEMPLATE(input);
20
+ const { output } = await input.worker.call(prompt);
21
+ const trimmed = output.trim();
22
+ if (trimmed === 'APPROVE')
23
+ return { kind: 'approve', concerns: [] };
24
+ if (trimmed.startsWith('CONCERNS:')) {
25
+ const msgs = trimmed
26
+ .slice('CONCERNS:'.length)
27
+ .split(',')
28
+ .map((s) => s.trim())
29
+ .filter(Boolean);
30
+ return {
31
+ kind: 'concerns',
32
+ concerns: msgs.map((m) => ({
33
+ source: 'diff_review',
34
+ severity: 'medium',
35
+ message: m,
36
+ })),
37
+ };
38
+ }
39
+ if (trimmed.startsWith('REJECT:')) {
40
+ return { kind: 'reject', message: trimmed.slice('REJECT:'.length).trim() };
41
+ }
42
+ return {
43
+ kind: 'concerns',
44
+ concerns: [
45
+ {
46
+ source: 'diff_review',
47
+ severity: 'high',
48
+ message: `unparseable verdict: ${trimmed.slice(0, 200)}`,
49
+ },
50
+ ],
51
+ };
52
+ }
53
+ //# sourceMappingURL=diff-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-review.js","sourceRoot":"","sources":["../../src/review/diff-review.ts"],"names":[],"mappings":"AAqBA,MAAM,eAAe,GAAG,CAAC,CAAkB,EAAE,EAAE,CAAC;;;qBAG3B,CAAC,CAAC,GAAG;gBACV,CAAC,CAAC,YAAY,CAAC,MAAM;EACnC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;MAEtE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,EAAE;;EAEhF,CAAC,CAAC,IAAI;;;;;;;CAOP,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAsB;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAE9B,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAEpE,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO;aACjB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;aACzB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzB,MAAM,EAAE,aAAsB;gBAC9B,QAAQ,EAAE,QAAiB;gBAC3B,OAAO,EAAE,CAAC;aACX,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,aAAa;gBACrB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,wBAAwB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;aACzD;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Commit } from '../runners/base/result-builders.js';
2
+ import type { VerifyStageResult } from '../run-tasks/verify-stage.js';
3
+ export interface EvidenceInput {
4
+ cwd: string;
5
+ baselineHead: string;
6
+ commits: Commit[];
7
+ verification: VerifyStageResult;
8
+ reviewPolicy: 'full' | 'spec_only' | 'diff_only' | 'off';
9
+ }
10
+ export declare function buildEvidence(i: EvidenceInput): Promise<{
11
+ block: string;
12
+ diffTruncated: boolean;
13
+ fullDiff: string;
14
+ }>;
15
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/review/evidence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAItE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;CAC1D;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB1H"}
@@ -0,0 +1,26 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ const exec = promisify(execFile);
4
+ export async function buildEvidence(i) {
5
+ const { stdout: stat } = await exec('git', ['diff', `${i.baselineHead}..HEAD`, '--stat'], { cwd: i.cwd });
6
+ const { stdout: full } = await exec('git', ['diff', `${i.baselineHead}..HEAD`], { cwd: i.cwd });
7
+ const cap = 64 * 1024;
8
+ // Cap by UTF-8 bytes, not JS-string length, so non-ASCII diffs hit the actual byte cap.
9
+ const fullBytes = Buffer.byteLength(full, 'utf8');
10
+ const diffTruncated = fullBytes > cap;
11
+ const truncFull = diffTruncated
12
+ ? Buffer.from(full, 'utf8').subarray(0, cap).toString('utf8') + '\n[diff truncated]'
13
+ : full;
14
+ let block = '## Implementation evidence\n';
15
+ block += '- Commits:\n';
16
+ for (const c of i.commits)
17
+ block += ` - ${c.sha.slice(0, 12)} "${c.subject}" (filesChanged: ${c.filesChanged.length})\n`;
18
+ block += `- Verification: ${i.verification.status}\n`;
19
+ for (const s of i.verification.steps)
20
+ block += ` - \`${s.command}\` → ${s.status}${s.exitCode !== null ? ` (exit=${s.exitCode})` : ''} (${s.durationMs}ms)\n`;
21
+ block += `- Diff stat:\n\n\`\`\`\n${stat}\`\`\`\n\n`;
22
+ block += `- Full diff:\n\n\`\`\`diff\n${truncFull}\n\`\`\`\n`;
23
+ block += `- diffTruncated: ${diffTruncated}\n`;
24
+ return { block, diffTruncated, fullDiff: truncFull };
25
+ }
26
+ //# sourceMappingURL=evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/review/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAUjC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAgB;IAClD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1G,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAChG,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IACtB,wFAAwF;IACxF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,SAAS,GAAG,GAAG,CAAC;IACtC,MAAM,SAAS,GAAG,aAAa;QAC7B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,oBAAoB;QACpF,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,KAAK,GAAG,8BAA8B,CAAC;IAC3C,KAAK,IAAI,cAAc,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;QAAE,KAAK,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,oBAAoB,CAAC,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;IAC1H,KAAK,IAAI,mBAAmB,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK;QAAE,KAAK,IAAI,SAAS,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,OAAO,CAAC;IAC/J,KAAK,IAAI,2BAA2B,IAAI,YAAY,CAAC;IACrD,KAAK,IAAI,+BAA+B,SAAS,YAAY,CAAC;IAC9D,KAAK,IAAI,oBAAoB,aAAa,IAAI,CAAC;IAC/C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC"}
@@ -10,5 +10,5 @@ export declare function runQualityReview(reviewerProvider: Provider, packet: {
10
10
  prompt: string;
11
11
  scope: string[];
12
12
  doneCondition: string;
13
- }, implReport: ParsedStructuredReport, fileContents: Record<string, string>, toolCallLog: string[], filesWritten: string[]): Promise<QualityReviewResult>;
13
+ }, implReport: ParsedStructuredReport, fileContents: Record<string, string>, toolCallLog: string[], filesWritten: string[], evidenceBlock?: string): Promise<QualityReviewResult>;
14
14
  //# sourceMappingURL=quality-reviewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quality-reviewer.d.ts","sourceRoot":"","sources":["../../src/review/quality-reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAGhF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9D,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CACpC,gBAAgB,EAAE,QAAQ,EAC1B,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAClE,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,mBAAmB,CAAC,CA8D9B"}
1
+ {"version":3,"file":"quality-reviewer.d.ts","sourceRoot":"","sources":["../../src/review/quality-reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAGhF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9D,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CACpC,gBAAgB,EAAE,QAAQ,EAC1B,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAClE,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EAAE,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,mBAAmB,CAAC,CAgE9B"}
@@ -1,15 +1,17 @@
1
1
  import { delegateWithEscalation } from '../delegate-with-escalation.js';
2
2
  import { buildQualityReviewPrompt } from './reviewer-prompt.js';
3
3
  import { parseStructuredReport } from '../reporting/structured-report.js';
4
- export async function runQualityReview(reviewerProvider, packet, implReport, fileContents, toolCallLog, filesWritten) {
4
+ export async function runQualityReview(reviewerProvider, packet, implReport, fileContents, toolCallLog, filesWritten, evidenceBlock) {
5
5
  if (filesWritten.length === 0) {
6
6
  return { status: 'skipped', findings: [], errorReason: 'no files written by implementer' };
7
7
  }
8
+ const prompt = (evidenceBlock ? `${evidenceBlock}\n\n` : '') +
9
+ buildQualityReviewPrompt(packet, implReport, fileContents, toolCallLog);
8
10
  const reviewerSlot = reviewerProvider.name === 'standard' ? 'standard' : 'complex';
9
11
  let result;
10
12
  try {
11
13
  result = await delegateWithEscalation({
12
- prompt: buildQualityReviewPrompt(packet, implReport, fileContents, toolCallLog),
14
+ prompt,
13
15
  agentType: reviewerSlot,
14
16
  briefQualityPolicy: 'off',
15
17
  timeoutMs: 120_000,
@@ -25,7 +27,7 @@ export async function runQualityReview(reviewerProvider, packet, implReport, fil
25
27
  if (!report.summary) {
26
28
  try {
27
29
  const retryResult = await delegateWithEscalation({
28
- prompt: buildQualityReviewPrompt(packet, implReport, fileContents, toolCallLog) +
30
+ prompt: prompt +
29
31
  '\n\nIMPORTANT: Your response MUST begin with a "## Summary" section containing either "approved" or "changes_required". Follow this exact format.',
30
32
  agentType: reviewerSlot,
31
33
  briefQualityPolicy: 'off',
@@ -1 +1 @@
1
- {"version":3,"file":"quality-reviewer.js","sourceRoot":"","sources":["../../src/review/quality-reviewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quality-reviewer.js","sourceRoot":"","sources":["../../src/review/quality-reviewer.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,5 @@ export declare function runSpecReview(reviewerProvider: Provider, packet: {
10
10
  prompt: string;
11
11
  scope: string[];
12
12
  doneCondition: string;
13
- }, implReport: ParsedStructuredReport, fileContents: Record<string, string>, toolCallLog: string[], planContext?: string): Promise<SpecReviewResult>;
13
+ }, implReport: ParsedStructuredReport, fileContents: Record<string, string>, toolCallLog: string[], planContext?: string, evidenceBlock?: string): Promise<SpecReviewResult>;
14
14
  //# sourceMappingURL=spec-reviewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-reviewer.d.ts","sourceRoot":"","sources":["../../src/review/spec-reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAGhF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,OAAO,CAAC;IAClD,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,aAAa,CACjC,gBAAgB,EAAE,QAAQ,EAC1B,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAClE,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,MAAM,EAAE,EACrB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAgE3B"}
1
+ {"version":3,"file":"spec-reviewer.d.ts","sourceRoot":"","sources":["../../src/review/spec-reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAGhF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,OAAO,CAAC;IAClD,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,aAAa,CACjC,gBAAgB,EAAE,QAAQ,EAC1B,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAClE,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,MAAM,EAAE,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAiE3B"}
@@ -1,8 +1,9 @@
1
1
  import { delegateWithEscalation } from '../delegate-with-escalation.js';
2
2
  import { buildSpecReviewPrompt } from './reviewer-prompt.js';
3
3
  import { parseStructuredReport } from '../reporting/structured-report.js';
4
- export async function runSpecReview(reviewerProvider, packet, implReport, fileContents, toolCallLog, planContext) {
5
- const prompt = buildSpecReviewPrompt(packet, implReport, fileContents, toolCallLog, planContext);
4
+ export async function runSpecReview(reviewerProvider, packet, implReport, fileContents, toolCallLog, planContext, evidenceBlock) {
5
+ const prompt = (evidenceBlock ? `${evidenceBlock}\n\n` : '') +
6
+ buildSpecReviewPrompt(packet, implReport, fileContents, toolCallLog, planContext);
6
7
  const reviewerSlot = reviewerProvider.name === 'standard' ? 'standard' : 'complex';
7
8
  let result;
8
9
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"spec-reviewer.js","sourceRoot":"","sources":["../../src/review/spec-reviewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-reviewer.js","sourceRoot":"","sources":["../../src/review/spec-reviewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { CommitFields } from '../reporting/structured-report.js';
2
+ export interface CommitStageInput {
3
+ cwd: string;
4
+ filesWritten: string[];
5
+ commit: CommitFields;
6
+ }
7
+ export interface CommitStageResult {
8
+ sha: string;
9
+ subject: string;
10
+ body: string;
11
+ filesChanged: string[];
12
+ authoredAt: string;
13
+ }
14
+ export declare function readbackCommit(sha: string, cwd: string): Promise<CommitStageResult>;
15
+ export declare function runCommitStage(input: CommitStageInput): Promise<CommitStageResult>;
16
+ //# sourceMappingURL=commit-stage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-stage.d.ts","sourceRoot":"","sources":["../../src/run-tasks/commit-stage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0BD,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQzF;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAcxF"}
@@ -0,0 +1,52 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { isAbsolute, normalize, relative, sep } from 'node:path';
3
+ import { promisify } from 'node:util';
4
+ import { composeCommitMessage } from '../auto-commit.js';
5
+ const exec = promisify(execFile);
6
+ function validatePaths(cwd, paths) {
7
+ const out = [];
8
+ for (const p of paths) {
9
+ if (/[\x00-\x1f]/.test(p))
10
+ throw new Error(`commit-stage: path contains control chars: ${JSON.stringify(p)}`);
11
+ let candidate;
12
+ if (isAbsolute(p)) {
13
+ const rel = relative(cwd, normalize(p));
14
+ if (rel === '' || rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {
15
+ throw new Error(`commit-stage: absolute path outside cwd rejected: ${p}`);
16
+ }
17
+ candidate = rel;
18
+ }
19
+ else {
20
+ const norm = normalize(p);
21
+ const rel = relative(cwd, normalize(`${cwd}/${norm}`));
22
+ if (rel.startsWith('..'))
23
+ throw new Error(`commit-stage: path escapes cwd: ${p}`);
24
+ candidate = norm;
25
+ }
26
+ out.push(candidate);
27
+ }
28
+ return out;
29
+ }
30
+ export async function readbackCommit(sha, cwd) {
31
+ const { stdout: meta } = await exec('git', ['log', '-1', sha, '--format=%H%n%cI%n%s%n%b'], { cwd });
32
+ const lines = meta.split('\n');
33
+ const [shaOut, isoCi, subject, ...bodyLines] = lines;
34
+ const { stdout: names } = await exec('git', ['log', '-1', sha, '--name-only', '--format='], { cwd });
35
+ const filesChanged = names.split('\n').map(s => s.trim()).filter(Boolean);
36
+ const authoredAt = new Date(isoCi).toISOString();
37
+ return { sha: shaOut, subject, body: bodyLines.join('\n').trimEnd(), filesChanged, authoredAt };
38
+ }
39
+ export async function runCommitStage(input) {
40
+ if (input.filesWritten.length === 0) {
41
+ throw new Error('commit-stage: filesWritten must not be empty (call only when treeDirty)');
42
+ }
43
+ const safePaths = validatePaths(input.cwd, input.filesWritten);
44
+ await exec('git', ['add', '--', ...safePaths], { cwd: input.cwd });
45
+ const message = composeCommitMessage(input.commit);
46
+ const [subjectFull, body] = message.split(/\n\n([\s\S]*)/, 2);
47
+ const commitArgs = ['commit', '-q', '-m', subjectFull, ...(body ? ['-m', body] : [])];
48
+ await exec('git', commitArgs, { cwd: input.cwd });
49
+ const { stdout: head } = await exec('git', ['rev-parse', 'HEAD'], { cwd: input.cwd });
50
+ return readbackCommit(head.trim(), input.cwd);
51
+ }
52
+ //# sourceMappingURL=commit-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-stage.js","sourceRoot":"","sources":["../../src/run-tasks/commit-stage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fallback-report.d.ts","sourceRoot":"","sources":["../../src/run-tasks/fallback-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAIhF,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EAAE,EACtB,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAejC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,sBAAsB,CAYjF"}
1
+ {"version":3,"file":"fallback-report.d.ts","sourceRoot":"","sources":["../../src/run-tasks/fallback-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAIhF,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EAAE,EACtB,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAejC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,sBAAsB,CAajF"}
@@ -28,6 +28,7 @@ export function buildFallbackImplReport(result) {
28
28
  validationsRun: [],
29
29
  deviationsFromBrief: [],
30
30
  unresolved: [],
31
+ extraSections: {},
31
32
  };
32
33
  }
33
34
  //# sourceMappingURL=fallback-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fallback-report.js","sourceRoot":"","sources":["../../src/run-tasks/fallback-report.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,YAAsB,EACtB,GAAuB;IAEvB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACjF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM;gBAC1C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,uBAAuB;gBACpD,CAAC,CAAC,OAAO,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;QACxC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7E,cAAc,EAAE,EAAE;QAClB,mBAAmB,EAAE,EAAE;QACvB,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fallback-report.js","sourceRoot":"","sources":["../../src/run-tasks/fallback-report.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,YAAsB,EACtB,GAAuB;IAEvB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACjF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM;gBAC1C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,uBAAuB;gBACpD,CAAC,CAAC,OAAO,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;QACxC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7E,cAAc,EAAE,EAAE;QAClB,mBAAmB,EAAE,EAAE;QACvB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Provider, TaskSpec, AgentType } from '../types.js';
2
+ import type { CommitFields } from '../reporting/structured-report.js';
3
+ export interface MetadataRepairInput {
4
+ task: TaskSpec;
5
+ zodError: string;
6
+ cwd: string;
7
+ providerSlot: AgentType;
8
+ provider: Provider;
9
+ }
10
+ export interface MetadataRepairResult {
11
+ commit: CommitFields | null;
12
+ commitDiagnostic: string | null;
13
+ }
14
+ export declare function runMetadataRepairTurn(input: MetadataRepairInput): Promise<MetadataRepairResult>;
15
+ //# sourceMappingURL=metadata-repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-repair.d.ts","sourceRoot":"","sources":["../../src/run-tasks/metadata-repair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKtE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+BrG"}
@@ -0,0 +1,30 @@
1
+ import { delegateWithEscalation } from '../delegate-with-escalation.js';
2
+ import { parseStructuredReport } from '../reporting/structured-report.js';
3
+ import { withDoneCondition } from './execute-task.js';
4
+ export async function runMetadataRepairTurn(input) {
5
+ const prompt = [
6
+ 'Your previous response had an invalid or missing commit metadata block.',
7
+ `Validation error: ${input.zodError}`,
8
+ '',
9
+ 'Emit ONLY a corrected `commit:` JSON block. Do NOT modify any files.',
10
+ 'The runner will reject your response if files change between turns.',
11
+ '',
12
+ 'Schema:',
13
+ ' type: "feat"|"fix"|"refactor"|"test"|"docs"|"chore"|"style"',
14
+ ' scope: optional, /^[a-z0-9][a-z0-9._/-]{0,23}$/',
15
+ ' subject: 1..50 chars, lowercase first letter, no trailing colon, no leading/trailing whitespace',
16
+ ' body: optional, ≤8 KB plain text',
17
+ ].join('\n');
18
+ const repairTask = withDoneCondition({
19
+ ...input.task,
20
+ prompt,
21
+ cwd: input.cwd,
22
+ reviewPolicy: 'off',
23
+ maxReviewRounds: 0,
24
+ tools: 'none',
25
+ });
26
+ const r = await delegateWithEscalation(repairTask, [input.provider], { explicitlyPinned: true });
27
+ const report = parseStructuredReport(r.output);
28
+ return { commit: report.commit ?? null, commitDiagnostic: report.commitDiagnostic ?? null };
29
+ }
30
+ //# sourceMappingURL=metadata-repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-repair.js","sourceRoot":"","sources":["../../src/run-tasks/metadata-repair.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAetD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAA0B;IACpE,MAAM,MAAM,GAAG;QACb,yEAAyE;QACzE,qBAAqB,KAAK,CAAC,QAAQ,EAAE;QACrC,EAAE;QACF,sEAAsE;QACtE,qEAAqE;QACrE,EAAE;QACF,SAAS;QACT,+DAA+D;QAC/D,mDAAmD;QACnD,mGAAmG;QACnG,oCAAoC;KACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACnC,GAAG,KAAK,CAAC,IAAI;QACb,MAAM;QACN,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,MAAM,sBAAsB,CACpC,UAAU,EACV,CAAC,KAAK,CAAC,QAAQ,CAAC,EAChB,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAC3B,CAAC;IACF,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;AAC9F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reviewed-lifecycle.d.ts","sourceRoot":"","sources":["../../src/run-tasks/reviewed-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACV,MAAM,aAAa,CAAC;AAarB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAK3D,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,kBAAkB,EAAE,OAAO,CAAA;CAAE,EAC9E,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,wBAAwB,EACrC,eAAe,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAAE,EACrH,WAAW,CAAC,EAAE;IACZ,MAAM,CAAC,EAAE,OAAO,kCAAkC,EAAE,gBAAgB,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,GACA,OAAO,CAAC,SAAS,CAAC,CA2jBpB"}
1
+ {"version":3,"file":"reviewed-lifecycle.d.ts","sourceRoot":"","sources":["../../src/run-tasks/reviewed-lifecycle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,SAAS,EAEV,MAAM,aAAa,CAAC;AAkBrB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAQ3D,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,kBAAkB,EAAE,OAAO,CAAA;CAAE,EAC9E,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,wBAAwB,EACrC,eAAe,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAAE,EACrH,WAAW,CAAC,EAAE;IACZ,MAAM,CAAC,EAAE,OAAO,kCAAkC,EAAE,gBAAgB,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,GACA,OAAO,CAAC,SAAS,CAAC,CAw6BpB"}