@zhixuan92/multi-model-agent-core 4.7.9 → 4.7.10

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 (177) hide show
  1. package/README.md +1 -72
  2. package/dist/config/schema.d.ts +0 -2
  3. package/dist/config/schema.d.ts.map +1 -1
  4. package/dist/config/schema.js +0 -2
  5. package/dist/config/schema.js.map +1 -1
  6. package/dist/events/task-envelope.d.ts +11 -1
  7. package/dist/events/task-envelope.d.ts.map +1 -1
  8. package/dist/events/task-envelope.js +35 -4
  9. package/dist/events/task-envelope.js.map +1 -1
  10. package/dist/index.d.ts +0 -9
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +0 -8
  13. package/dist/index.js.map +1 -1
  14. package/dist/{review → lifecycle/handlers}/parse-review-report.d.ts +1 -1
  15. package/dist/lifecycle/handlers/parse-review-report.d.ts.map +1 -0
  16. package/dist/{review → lifecycle/handlers}/parse-review-report.js +2 -2
  17. package/dist/lifecycle/handlers/parse-review-report.js.map +1 -0
  18. package/dist/lifecycle/handlers/quality-review-prompt.d.ts +6 -0
  19. package/dist/lifecycle/handlers/quality-review-prompt.d.ts.map +1 -0
  20. package/dist/lifecycle/handlers/quality-review-prompt.js +42 -0
  21. package/dist/lifecycle/handlers/quality-review-prompt.js.map +1 -0
  22. package/dist/lifecycle/handlers/review-stage.js +4 -4
  23. package/dist/lifecycle/handlers/review-stage.js.map +1 -1
  24. package/dist/lifecycle/handlers/rework-prompt.d.ts +6 -0
  25. package/dist/lifecycle/handlers/rework-prompt.d.ts.map +1 -0
  26. package/dist/lifecycle/handlers/rework-prompt.js +18 -0
  27. package/dist/lifecycle/handlers/rework-prompt.js.map +1 -0
  28. package/dist/lifecycle/handlers/rework-stage.js +2 -2
  29. package/dist/lifecycle/handlers/rework-stage.js.map +1 -1
  30. package/dist/lifecycle/handlers/spec-review-prompt.d.ts +7 -0
  31. package/dist/lifecycle/handlers/spec-review-prompt.d.ts.map +1 -0
  32. package/dist/lifecycle/handlers/spec-review-prompt.js +39 -0
  33. package/dist/lifecycle/handlers/spec-review-prompt.js.map +1 -0
  34. package/dist/{review → lifecycle/handlers}/tier-policy.d.ts +1 -1
  35. package/dist/lifecycle/handlers/tier-policy.d.ts.map +1 -0
  36. package/dist/lifecycle/handlers/tier-policy.js.map +1 -0
  37. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  38. package/dist/lifecycle/lifecycle-driver.js +14 -4
  39. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  40. package/dist/lifecycle/review-verdict-mapping.d.ts.map +1 -0
  41. package/dist/lifecycle/review-verdict-mapping.js.map +1 -0
  42. package/dist/lifecycle/task-executor.js +1 -1
  43. package/dist/lifecycle/task-executor.js.map +1 -1
  44. package/dist/lifecycle/tool-config-types.d.ts +0 -6
  45. package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
  46. package/dist/reporting/report-parser-slots/research-report.d.ts +0 -3
  47. package/dist/reporting/report-parser-slots/research-report.d.ts.map +1 -1
  48. package/dist/reporting/report-parser-slots/research-report.js +0 -5
  49. package/dist/reporting/report-parser-slots/research-report.js.map +1 -1
  50. package/dist/research/web-fetch.d.ts +24 -4
  51. package/dist/research/web-fetch.d.ts.map +1 -1
  52. package/dist/research/web-fetch.js +57 -42
  53. package/dist/research/web-fetch.js.map +1 -1
  54. package/dist/stores/batch-registry.d.ts +0 -15
  55. package/dist/stores/batch-registry.d.ts.map +1 -1
  56. package/dist/stores/batch-registry.js +2 -0
  57. package/dist/stores/batch-registry.js.map +1 -1
  58. package/dist/stores/project-context-registry.d.ts +4 -11
  59. package/dist/stores/project-context-registry.d.ts.map +1 -1
  60. package/dist/stores/project-context-registry.js +4 -6
  61. package/dist/stores/project-context-registry.js.map +1 -1
  62. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  63. package/dist/tools/audit/tool-config.js +1 -5
  64. package/dist/tools/audit/tool-config.js.map +1 -1
  65. package/dist/tools/debug/tool-config.d.ts.map +1 -1
  66. package/dist/tools/debug/tool-config.js +1 -5
  67. package/dist/tools/debug/tool-config.js.map +1 -1
  68. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  69. package/dist/tools/delegate/tool-config.js +0 -6
  70. package/dist/tools/delegate/tool-config.js.map +1 -1
  71. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  72. package/dist/tools/execute-plan/tool-config.js +0 -6
  73. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  74. package/dist/tools/investigate/tool-config.d.ts.map +1 -1
  75. package/dist/tools/investigate/tool-config.js +0 -4
  76. package/dist/tools/investigate/tool-config.js.map +1 -1
  77. package/dist/tools/review/tool-config.d.ts.map +1 -1
  78. package/dist/tools/review/tool-config.js +1 -5
  79. package/dist/tools/review/tool-config.js.map +1 -1
  80. package/dist/tools/shared/severity-ladder.d.ts +2 -0
  81. package/dist/tools/shared/severity-ladder.d.ts.map +1 -0
  82. package/dist/tools/shared/severity-ladder.js +9 -0
  83. package/dist/tools/shared/severity-ladder.js.map +1 -0
  84. package/dist/types/config.d.ts +0 -1
  85. package/dist/types/config.d.ts.map +1 -1
  86. package/dist/types.d.ts +0 -10
  87. package/dist/types.d.ts.map +1 -1
  88. package/package.json +1 -5
  89. package/dist/review/index.d.ts +0 -5
  90. package/dist/review/index.d.ts.map +0 -1
  91. package/dist/review/index.js +0 -8
  92. package/dist/review/index.js.map +0 -1
  93. package/dist/review/parse-review-report.d.ts.map +0 -1
  94. package/dist/review/parse-review-report.js.map +0 -1
  95. package/dist/review/review-types.d.ts +0 -2
  96. package/dist/review/review-types.d.ts.map +0 -1
  97. package/dist/review/review-types.js +0 -6
  98. package/dist/review/review-types.js.map +0 -1
  99. package/dist/review/review-verdict-mapping.d.ts.map +0 -1
  100. package/dist/review/review-verdict-mapping.js.map +0 -1
  101. package/dist/review/skipped-result.d.ts +0 -8
  102. package/dist/review/skipped-result.d.ts.map +0 -1
  103. package/dist/review/skipped-result.js +0 -4
  104. package/dist/review/skipped-result.js.map +0 -1
  105. package/dist/review/templates/annotator-audit.d.ts +0 -3
  106. package/dist/review/templates/annotator-audit.d.ts.map +0 -1
  107. package/dist/review/templates/annotator-audit.js +0 -20
  108. package/dist/review/templates/annotator-audit.js.map +0 -1
  109. package/dist/review/templates/annotator-debug.d.ts +0 -3
  110. package/dist/review/templates/annotator-debug.d.ts.map +0 -1
  111. package/dist/review/templates/annotator-debug.js +0 -19
  112. package/dist/review/templates/annotator-debug.js.map +0 -1
  113. package/dist/review/templates/annotator-investigate.d.ts +0 -3
  114. package/dist/review/templates/annotator-investigate.d.ts.map +0 -1
  115. package/dist/review/templates/annotator-investigate.js +0 -17
  116. package/dist/review/templates/annotator-investigate.js.map +0 -1
  117. package/dist/review/templates/annotator-review.d.ts +0 -3
  118. package/dist/review/templates/annotator-review.d.ts.map +0 -1
  119. package/dist/review/templates/annotator-review.js +0 -22
  120. package/dist/review/templates/annotator-review.js.map +0 -1
  121. package/dist/review/templates/annotator-shared.d.ts +0 -23
  122. package/dist/review/templates/annotator-shared.d.ts.map +0 -1
  123. package/dist/review/templates/annotator-shared.js +0 -51
  124. package/dist/review/templates/annotator-shared.js.map +0 -1
  125. package/dist/review/templates/finding-criteria.d.ts +0 -15
  126. package/dist/review/templates/finding-criteria.d.ts.map +0 -1
  127. package/dist/review/templates/finding-criteria.js +0 -39
  128. package/dist/review/templates/finding-criteria.js.map +0 -1
  129. package/dist/review/templates/quality-review-audit.d.ts +0 -3
  130. package/dist/review/templates/quality-review-audit.d.ts.map +0 -1
  131. package/dist/review/templates/quality-review-audit.js +0 -10
  132. package/dist/review/templates/quality-review-audit.js.map +0 -1
  133. package/dist/review/templates/quality-review-debug.d.ts +0 -3
  134. package/dist/review/templates/quality-review-debug.d.ts.map +0 -1
  135. package/dist/review/templates/quality-review-debug.js +0 -10
  136. package/dist/review/templates/quality-review-debug.js.map +0 -1
  137. package/dist/review/templates/quality-review-investigate.d.ts +0 -3
  138. package/dist/review/templates/quality-review-investigate.d.ts.map +0 -1
  139. package/dist/review/templates/quality-review-investigate.js +0 -10
  140. package/dist/review/templates/quality-review-investigate.js.map +0 -1
  141. package/dist/review/templates/quality-review-review.d.ts +0 -3
  142. package/dist/review/templates/quality-review-review.d.ts.map +0 -1
  143. package/dist/review/templates/quality-review-review.js +0 -10
  144. package/dist/review/templates/quality-review-review.js.map +0 -1
  145. package/dist/review/templates/quality-review.d.ts +0 -9
  146. package/dist/review/templates/quality-review.d.ts.map +0 -1
  147. package/dist/review/templates/quality-review.js +0 -89
  148. package/dist/review/templates/quality-review.js.map +0 -1
  149. package/dist/review/templates/rework.d.ts +0 -3
  150. package/dist/review/templates/rework.d.ts.map +0 -1
  151. package/dist/review/templates/rework.js +0 -48
  152. package/dist/review/templates/rework.js.map +0 -1
  153. package/dist/review/templates/shared.d.ts +0 -67
  154. package/dist/review/templates/shared.d.ts.map +0 -1
  155. package/dist/review/templates/shared.js +0 -2
  156. package/dist/review/templates/shared.js.map +0 -1
  157. package/dist/review/templates/spec-review.d.ts +0 -10
  158. package/dist/review/templates/spec-review.d.ts.map +0 -1
  159. package/dist/review/templates/spec-review.js +0 -75
  160. package/dist/review/templates/spec-review.js.map +0 -1
  161. package/dist/review/tier-policy.d.ts.map +0 -1
  162. package/dist/review/tier-policy.js.map +0 -1
  163. package/dist/stores/context-block-project-cap.d.ts +0 -14
  164. package/dist/stores/context-block-project-cap.d.ts.map +0 -1
  165. package/dist/stores/context-block-project-cap.js +0 -80
  166. package/dist/stores/context-block-project-cap.js.map +0 -1
  167. package/dist/stores/file-backed-context-block-store.d.ts +0 -81
  168. package/dist/stores/file-backed-context-block-store.d.ts.map +0 -1
  169. package/dist/stores/file-backed-context-block-store.js +0 -410
  170. package/dist/stores/file-backed-context-block-store.js.map +0 -1
  171. package/dist/stores/index.d.ts +0 -4
  172. package/dist/stores/index.d.ts.map +0 -1
  173. package/dist/stores/index.js +0 -5
  174. package/dist/stores/index.js.map +0 -1
  175. /package/dist/{review → lifecycle/handlers}/tier-policy.js +0 -0
  176. /package/dist/{review → lifecycle}/review-verdict-mapping.d.ts +0 -0
  177. /package/dist/{review → lifecycle}/review-verdict-mapping.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"rework.d.ts","sourceRoot":"","sources":["../../../src/review/templates/rework.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,cAkD5B,CAAC"}
@@ -1,48 +0,0 @@
1
- export const reworkTemplate = {
2
- systemPrompt: [
3
- 'You are the REWORK worker. The implementer ran, then two reviewers (spec + quality) lint-checked the result and produced deviations.',
4
- 'Your job: fix every deviation. You have FULL editor tools.',
5
- '',
6
- 'CRITICAL: this is a SINGLE-PASS pipeline. There is NO second rework round. After you, the annotator scores completeness and the commit gate fires. If you skip a fix, no commit lands.',
7
- '',
8
- 'Per-deviation procedure:',
9
- ' 1. Read the relevant file ONCE (skip if already read this turn).',
10
- ' 2. Apply the fix with one edit call.',
11
- ' 3. Move on. Do not re-read; do not re-evaluate.',
12
- '',
13
- 'Hard rules:',
14
- '- Trust the reviewers — do not re-investigate whether the deviation is valid.',
15
- '- If a deviation is truly impossible to fix (conflicting constraints, missing source), write "could not fix: <deviation> — reason" in your summary and move on.',
16
- '- Read each file AT MOST ONCE in this stage.',
17
- '',
18
- 'When done: write summary "Fixed: <list of deviations>. Could not fix: <list with reasons>." End your turn.',
19
- '',
20
- 'workerStatus calibration (this is where rework workers commonly under-rate themselves):',
21
- '- "done" — you applied a fix for EVERY listed deviation. This is the correct value even though the reviewer originally flagged concerns. Being asked to rework is not, by itself, a "concern" — addressing the rework IS the success path. Verification of the fix is the reviewer\'s responsibility on the next round — do not mark yourself failed because you couldn\'t independently verify.',
22
- '- "done_with_concerns" — you addressed every listed deviation AND noticed a NEW unrelated issue you couldn\'t fix in this turn. Put the new issue in `unresolved`.',
23
- '- "blocked" / "failed" — you were unable to apply a fix for ONE OR MORE of the listed deviations (conflicting constraints, missing source, ambiguous instruction). Put those entries in the "Could not fix" line AND in `unresolved`.',
24
- 'If your summary line is "Fixed: <every deviation>. Could not fix: (none)." then workerStatus MUST be "done".',
25
- ].join('\n'),
26
- buildUserPrompt(ctx) {
27
- // Warm follow-up: this rework turn always resumes the implementer's
28
- // thread. The brief, prior worker output, and current cumulative diff
29
- // are already in the resumed session's conversation history. Emit
30
- // only the NEW content — the reviewer's deviations to fix.
31
- const parts = [];
32
- if (ctx.priorConcerns && ctx.priorConcerns.length > 0) {
33
- parts.push(`# Reviewer deviations to fix\n${ctx.priorConcerns
34
- .map((c, i) => `${i + 1}. ${c}`)
35
- .join('\n')}`);
36
- }
37
- else {
38
- parts.push('# Reviewer deviations to fix\n(none — should not have reached this stage; end immediately)');
39
- }
40
- parts.push('# Action\n' +
41
- '1. Fix each deviation in order.\n' +
42
- '2. Apply one edit call per file. Do not re-read after editing.\n' +
43
- '3. Write your summary and end your turn.\n' +
44
- '4. In your final WorkerOutput JSON: set workerStatus to "done" if your "Could not fix" line is empty (every listed deviation was addressed). Reserve "failed" / "blocked" for deviations you could not address — having had concerns to begin with is not, in itself, a concern.');
45
- return parts.join('\n\n');
46
- },
47
- };
48
- //# sourceMappingURL=rework.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rework.js","sourceRoot":"","sources":["../../../src/review/templates/rework.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,YAAY,EAAE;QACZ,sIAAsI;QACtI,4DAA4D;QAC5D,EAAE;QACF,wLAAwL;QACxL,EAAE;QACF,0BAA0B;QAC1B,oEAAoE;QACpE,wCAAwC;QACxC,mDAAmD;QACnD,EAAE;QACF,aAAa;QACb,+EAA+E;QAC/E,iKAAiK;QACjK,8CAA8C;QAC9C,EAAE;QACF,4GAA4G;QAC5G,EAAE;QACF,yFAAyF;QACzF,8YAA8Y;QAC9Y,oKAAoK;QACpK,wOAAwO;QACxO,8GAA8G;KAC/G,CAAC,IAAI,CAAC,IAAI,CAAC;IAEZ,eAAe,CAAC,GAAG;QACjB,oEAAoE;QACpE,sEAAsE;QACtE,kEAAkE;QAClE,2DAA2D;QAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CACR,iCAAiC,GAAG,CAAC,aAAa;iBAC/C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;QAC3G,CAAC;QACD,KAAK,CAAC,IAAI,CACR,YAAY;YACZ,mCAAmC;YACnC,kEAAkE;YAClE,4CAA4C;YAC5C,kRAAkR,CACnR,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -1,67 +0,0 @@
1
- export interface ReviewTemplateContext {
2
- workerOutput: string;
3
- brief: string;
4
- filesChanged?: string[];
5
- /**
6
- * Cumulative unified diff of every change made since task start,
7
- * across all rework rounds. Empty/undefined when no changes were
8
- * detected (or the route is read-only).
9
- *
10
- * Tool sweep #6: reviewer templates were operating blind on the
11
- * worker's text claim alone. Passing the diff lets each reviewer
12
- * be precise — verdicts are grounded in code evidence, not prose.
13
- */
14
- diff?: string;
15
- /**
16
- * Concrete concerns from previous reviewer rounds in this chain.
17
- * Round 1 sees an empty list; round 2+ sees what round 1 flagged
18
- * so it can verify "did the rework address X" rather than re-deriving.
19
- */
20
- priorConcerns?: string[];
21
- /**
22
- * For execute-plan tasks: the verbatim plan section the worker was
23
- * asked to execute, separate from `brief` (which contains the worker's
24
- * full prompt with orientation, fidelity rules, etc.). When set, the
25
- * spec reviewer compares the diff against this section's verbatim code
26
- * blocks character-for-character — semantically-equivalent rewrites
27
- * are CODE SUBSTITUTION, not approval. Unset for non-execute-plan
28
- * routes (delegate, audit, review, verify, debug, investigate).
29
- */
30
- planContext?: string;
31
- /** Spec lint-reviewer raw report. */
32
- specReviewerNotes?: string | null;
33
- /** Quality lint-reviewer raw report. */
34
- qualityReviewerNotes?: string | null;
35
- /** Spec lint-reviewer transport/return error. */
36
- specReviewError?: string | null;
37
- /** Quality lint-reviewer transport/return error. */
38
- qualityReviewError?: string | null;
39
- /** True if rework stage ran and applied edits. */
40
- reworkApplied?: boolean | null;
41
- /** Rework worker's free-text summary. */
42
- reworkOutput?: string | null;
43
- /** Rework transport/return error. */
44
- reworkError?: string | null;
45
- /** Deterministic verify command result (Stage 4 pre-step). */
46
- verifyResult?: {
47
- ran: boolean;
48
- passed: boolean | null;
49
- exitCode: number | null;
50
- command: string[];
51
- tailOutput: string | null;
52
- } | null;
53
- }
54
- export interface ReviewTemplate {
55
- systemPrompt: string;
56
- buildUserPrompt(ctx: ReviewTemplateContext): string;
57
- /**
58
- * Optional warm-followup variant — used by `review-handler.ts` for
59
- * the second iteration of the same reviewer session (turn 2 hits
60
- * cached history; we skip re-inlining `brief`, `workerOutput`, `diff`,
61
- * `planContext`). Templates that never run a second turn don't define
62
- * this method. See
63
- * `docs/superpowers/specs/2026-05-12-warm-followup-context-contract-design.md`.
64
- */
65
- buildWarmFollowup?(ctx: ReviewTemplateContext): string;
66
- }
67
- //# sourceMappingURL=shared.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/review/templates/shared.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kDAAkD;IAClD,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8DAA8D;IAC9D,YAAY,CAAC,EAAE;QACb,GAAG,EAAE,OAAO,CAAC;QACb,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAAC;IACpD;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAAC;CACxD"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=shared.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/review/templates/shared.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- import type { ReviewTemplate } from './shared.js';
2
- export declare const legalOutcomes: readonly ["found", "clean"];
3
- export declare const OUTPUT_FORMAT: string;
4
- export declare function specReviewPrompt(ctx: {
5
- brief: string;
6
- workerSummary: string;
7
- filesChanged: string[];
8
- }): string;
9
- export declare const specLintTemplate: ReviewTemplate;
10
- //# sourceMappingURL=spec-review.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-review.d.ts","sourceRoot":"","sources":["../../../src/review/templates/spec-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,aAAa,6BAA8B,CAAC;AAEzD,eAAO,MAAM,aAAa,QA0BlB,CAAC;AAET,wBAAgB,gBAAgB,CAAC,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CAU9G;AAED,eAAO,MAAM,gBAAgB,EAAE,cAkC9B,CAAC"}
@@ -1,75 +0,0 @@
1
- export const legalOutcomes = ['found', 'clean'];
2
- export const OUTPUT_FORMAT = `
3
- ## Verdict
4
- approved | changes_required
5
-
6
- ## Findings
7
- Emit zero or more findings using EXACTLY this block format. Each finding is its own block.
8
-
9
- ## Finding N: <one-line claim>
10
- - Severity: critical | high | medium | low
11
- - Category: <one word — e.g. missing-step, wrong-file, broken-contract>
12
- - Evidence: <verbatim excerpt from source, ≥20 chars — or (none) if inferable>
13
- - Suggestion: <one sentence — how to fix it>
14
-
15
- ## Finding N+1:
16
- ...
17
-
18
- If no findings, write "## Findings\n(none)".
19
-
20
- ## Outcome
21
- found | clean
22
-
23
- **Severity definitions (per spec-review):**
24
- - **critical:** Plan step missed/wrong such that feature won't work
25
- - **high:** Plan step partially implemented
26
- - **medium:** Diverges in non-essential ways
27
- - **low:** Cosmetic drift
28
- `.trim();
29
- export function specReviewPrompt(ctx) {
30
- return `You are the spec reviewer for this task.
31
-
32
- Brief: ${ctx.brief}
33
-
34
- Worker said: ${ctx.workerSummary}
35
-
36
- Files changed: ${ctx.filesChanged.join(', ') || '(none)'}
37
-
38
- ${OUTPUT_FORMAT}`;
39
- }
40
- export const specLintTemplate = {
41
- systemPrompt: [
42
- 'You are the SPEC reviewer for a plan-execution task. You are LINT-ONLY — do NOT edit files.',
43
- 'Your sole job: compare the on-disk state against the plan and emit a structured report.',
44
- 'Read files as needed to verify. A separate REWORK stage will apply your findings.',
45
- '',
46
- 'Output format (mandatory):',
47
- '',
48
- OUTPUT_FORMAT,
49
- '',
50
- 'Rules:',
51
- '- "approved" means the diff fully implements the plan section. Trivial wording differences are OK.',
52
- '- "changes_required" when any plan step is missing, partial, or wrong on disk.',
53
- '- Each finding must be specific enough that a rework worker can act on it without re-deriving.',
54
- '- If no findings, write "## Findings\\n(none)" followed by "## Outcome\\nclean".',
55
- '- If any findings, write "## Outcome\\nfound".',
56
- '- Do NOT use editor tools. Read-only investigation only. Editing is the rework stage\'s job.',
57
- ].join('\n'),
58
- buildUserPrompt(ctx) {
59
- const parts = [];
60
- parts.push(`# Task brief\n${ctx.brief}`);
61
- if (ctx.planContext && ctx.planContext.trim().length > 0) {
62
- parts.push(`# Plan section (the contract to compare against)\n\n\`\`\`markdown\n${ctx.planContext.trim()}\n\`\`\``);
63
- }
64
- parts.push(`# Worker's summary\n${ctx.workerOutput || '(no summary)'}`);
65
- if (ctx.diff && ctx.diff.length > 0) {
66
- parts.push(`# Cumulative diff (current on-disk state)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
67
- }
68
- else {
69
- parts.push('# Cumulative diff\n(no file changes detected)');
70
- }
71
- parts.push('# Action\nCompare diff vs plan. Emit the report. Do not edit.');
72
- return parts.join('\n\n');
73
- },
74
- };
75
- //# sourceMappingURL=spec-review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-review.js","sourceRoot":"","sources":["../../../src/review/templates/spec-review.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B5B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,gBAAgB,CAAC,GAAqE;IACpG,OAAO;;SAEA,GAAG,CAAC,KAAK;;eAEH,GAAG,CAAC,aAAa;;iBAEf,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ;;EAEtD,aAAa,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,YAAY,EAAE;QACZ,6FAA6F;QAC7F,yFAAyF;QACzF,mFAAmF;QACnF,EAAE;QACF,4BAA4B;QAC5B,EAAE;QACF,aAAa;QACb,EAAE;QACF,QAAQ;QACR,oGAAoG;QACpG,gFAAgF;QAChF,gGAAgG;QAChG,kFAAkF;QAClF,gDAAgD;QAChD,8FAA8F;KAC/F,CAAC,IAAI,CAAC,IAAI,CAAC;IAEZ,eAAe,CAAC,GAAG;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,uEAAuE,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACtH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC,CAAC;QACxE,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,4DAA4D,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tier-policy.d.ts","sourceRoot":"","sources":["../../src/review/tier-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,CAE1E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tier-policy.js","sourceRoot":"","sources":["../../src/review/tier-policy.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,eAA0B;IAC7D,OAAO,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Per-project recency signal — the value used to decide LRU ordering.
3
- * For non-empty dirs: max(mtime of any file). For empty dirs: dir mtime.
4
- *
5
- * This helper is exported so the storage migration (A1.7) can use the
6
- * same calculation. Without sharing, the two code paths can drift and
7
- * different "recent" projects survive a sweep vs a migration.
8
- */
9
- export declare function computeProjectRecencyMs(projectDir: string): number;
10
- export declare function sweepProjectCap(contextBlocksRoot: string, maxProjects: number, protectedHashes?: ReadonlySet<string>): {
11
- kept: number;
12
- evicted: number;
13
- };
14
- //# sourceMappingURL=context-block-project-cap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-block-project-cap.d.ts","sourceRoot":"","sources":["../../src/stores/context-block-project-cap.ts"],"names":[],"mappings":"AAyBA;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgBlE;AAED,wBAAgB,eAAe,CAC7B,iBAAiB,EAAE,MAAM,EACzB,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,WAAW,CAAC,MAAM,CAAa,GAC/C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoBnC"}
@@ -1,80 +0,0 @@
1
- /**
2
- * Outer LRU sweep for the context-block project directory.
3
- *
4
- * Walks all project-hash subdirectories under `contextBlocksRoot`. If the
5
- * count exceeds `maxProjects`, removes (rm -rf) the oldest-mtime project
6
- * directories until the count is at or below cap. mtime of the project
7
- * directory is used as the recency signal — directory mtime updates
8
- * whenever a file inside is added/removed, so it tracks last activity.
9
- *
10
- * For empty project dirs (no files), the dir's own mtime is the signal,
11
- * which is stable from creation; they typically rank lower than active
12
- * projects and fall off first.
13
- *
14
- * Active-aware: when `protectedHashes` is supplied, no entry in that set
15
- * is evicted regardless of mtime rank. Callers pass it for projects that
16
- * are currently registered in the in-memory `ProjectContextRegistry`, so
17
- * a startup sweep cannot wipe a directory the running daemon is about to
18
- * write to. Startup-only callers may pass an empty set safely.
19
- *
20
- * No-op when the count is at or under cap. Synchronous (called once at
21
- * daemon startup, low expected cost).
22
- */
23
- import * as fs from 'node:fs';
24
- import * as path from 'node:path';
25
- /**
26
- * Per-project recency signal — the value used to decide LRU ordering.
27
- * For non-empty dirs: max(mtime of any file). For empty dirs: dir mtime.
28
- *
29
- * This helper is exported so the storage migration (A1.7) can use the
30
- * same calculation. Without sharing, the two code paths can drift and
31
- * different "recent" projects survive a sweep vs a migration.
32
- */
33
- export function computeProjectRecencyMs(projectDir) {
34
- let mtimeMs = 0;
35
- try {
36
- const files = fs.readdirSync(projectDir);
37
- if (files.length === 0) {
38
- mtimeMs = fs.statSync(projectDir).mtimeMs;
39
- }
40
- else {
41
- for (const f of files) {
42
- try {
43
- const m = fs.statSync(path.join(projectDir, f)).mtimeMs;
44
- if (m > mtimeMs)
45
- mtimeMs = m;
46
- }
47
- catch { /* skip */ }
48
- }
49
- }
50
- }
51
- catch { /* skip */ }
52
- return mtimeMs;
53
- }
54
- export function sweepProjectCap(contextBlocksRoot, maxProjects, protectedHashes = new Set()) {
55
- if (!fs.existsSync(contextBlocksRoot))
56
- return { kept: 0, evicted: 0 };
57
- const entries = fs.readdirSync(contextBlocksRoot, { withFileTypes: true });
58
- const projects = entries
59
- .filter(e => e.isDirectory())
60
- .map(e => ({ name: e.name, mtimeMs: computeProjectRecencyMs(path.join(contextBlocksRoot, e.name)) }));
61
- if (projects.length <= maxProjects)
62
- return { kept: projects.length, evicted: 0 };
63
- // Pin protected (active) projects to the keep set unconditionally —
64
- // they count against `maxProjects` but cannot be selected for eviction.
65
- // The remaining slots are filled by mtime-LRU over the rest.
66
- const protectedProjects = projects.filter(p => protectedHashes.has(p.name));
67
- const others = projects.filter(p => !protectedHashes.has(p.name));
68
- others.sort((a, b) => b.mtimeMs - a.mtimeMs);
69
- const remainingSlots = Math.max(0, maxProjects - protectedProjects.length);
70
- const keepOthers = others.slice(0, remainingSlots);
71
- const drop = others.slice(remainingSlots);
72
- for (const p of drop) {
73
- try {
74
- fs.rmSync(path.join(contextBlocksRoot, p.name), { recursive: true, force: true });
75
- }
76
- catch { /* skip */ }
77
- }
78
- return { kept: protectedProjects.length + keepOthers.length, evicted: drop.length };
79
- }
80
- //# sourceMappingURL=context-block-project-cap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-block-project-cap.js","sourceRoot":"","sources":["../../src/stores/context-block-project-cap.ts"],"names":[],"mappings":"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"}
@@ -1,81 +0,0 @@
1
- import { type ContextBlockStore, type RegisteredBlock } from './context-block-tool.js';
2
- export interface FileBackedContextBlockStoreOptions {
3
- /** Idle TTL in milliseconds. Defaults to 7 days. */
4
- ttlMs?: number;
5
- /** How often `register()` opportunistically sweeps. Defaults to 1 hour. */
6
- gcCheckIntervalMs?: number;
7
- /** Max bytes per block (UTF-8). Defaults to 1 MiB. */
8
- maxBlockBytes?: number;
9
- /** Max total bytes on disk. Defaults to 100 MiB. */
10
- maxTotalBytes?: number;
11
- /** Override `os.homedir()` — used by tests for filesystem isolation. */
12
- homeDir?: string;
13
- maxBlocksPerProject?: number;
14
- }
15
- export declare class FileBackedContextBlockStore implements ContextBlockStore {
16
- /** Absolute root: `<homeDir>/.multi-model/context-blocks/<sha256(projectCwd)>`.
17
- * Public so tests can read meta files directly without re-deriving the path. */
18
- readonly rootDir: string;
19
- private _ttlMs;
20
- private gcCheckIntervalMs;
21
- private maxBlockBytes;
22
- private maxTotalBytes;
23
- private lastSweepMs;
24
- /** Pin counts are kept in memory only — they're an active-batch
25
- * protection signal, not a persistence concern. Lost on restart;
26
- * TTL-based GC handles the recovery side. */
27
- private pinCounts;
28
- private readonly maxBlocksPerProject;
29
- constructor(projectCwd: string, opts?: FileBackedContextBlockStoreOptions);
30
- register(content: string, opts?: {
31
- ttlMs?: number;
32
- id?: string;
33
- }): RegisteredBlock;
34
- get(id: string): string | undefined;
35
- delete(id: string): boolean;
36
- pin(id: string): void;
37
- unpin(id: string): void;
38
- refcount(id: string): number;
39
- runIdleSweep(now: number, idleTtlMs: number): number;
40
- get ttlMs(): number;
41
- /** Number of entries currently on disk (counted by id, not by file —
42
- * orphan halves count once). */
43
- get size(): number;
44
- /** Delete every block. Used by project-registry on idle eviction. */
45
- clear(): void;
46
- /** Sum of all on-disk content bytes (no caching — fresh read each call).
47
- * Used by tests + `evictUntilFits`. */
48
- totalBytesOnDisk(): number;
49
- private ensureRoot;
50
- private contentPath;
51
- private metaPath;
52
- private listIds;
53
- private readMeta;
54
- private deleteFiles;
55
- /**
56
- * Atomic write: temp-file → fsync → rename. Recovers cleanly from
57
- * daemon SIGKILL mid-write — readers either see the old content or
58
- * the new content, never a partial write. The .tmp suffix uses a
59
- * random nonce so concurrent writers don't collide.
60
- *
61
- * Defensive: `ensureRoot()` runs once at construction, but the
62
- * rootDir can disappear between construction and write — e.g. an
63
- * external rm, a maintenance script, or (historically) a startup-time
64
- * project-cap sweep that ran in a different process. Re-creating the
65
- * dir here is idempotent and cheap; the alternative is an ENOENT that
66
- * crashes the entire batch and burns its findings.
67
- */
68
- private atomicWrite;
69
- /** TTL pass first; if still at or above maxBlocksPerProject, evict oldest-mtime block(s) until under cap. */
70
- private sweepInnerLruIfNeeded;
71
- /**
72
- * Oldest-first eviction loop until total disk usage + incoming bytes
73
- * fits under maxTotalBytes. Pinned entries are skipped (matches
74
- * in-memory store semantics — pinned blocks are held by an active
75
- * batch and shouldn't be evicted mid-run).
76
- */
77
- private evictUntilFits;
78
- /** Scan this project's meta files for one whose recorded sha256 matches `sha256`. Returns the id, or null. */
79
- private findByContentSha;
80
- }
81
- //# sourceMappingURL=file-backed-context-block-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-backed-context-block-store.d.ts","sourceRoot":"","sources":["../../src/stores/file-backed-context-block-store.ts"],"names":[],"mappings":"AA0CA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAcjC,MAAM,WAAW,kCAAkC;IACjD,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,2BAA4B,YAAW,iBAAiB;IACnE;qFACiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB;;kDAE8C;IAC9C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAEjC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,kCAAuC;IAqB7E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe;IA0DtF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAoBnC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIrB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAI5B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAuBpD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;qCACiC;IACjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,qEAAqE;IACrE,KAAK,IAAI,IAAI;IAKb;4CACwC;IACxC,gBAAgB,IAAI,MAAM;IAc1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,WAAW;IAKnB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,WAAW;IAanB,6GAA6G;IAC7G,OAAO,CAAC,qBAAqB;IAqC7B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAwBtB,8GAA8G;IAC9G,OAAO,CAAC,gBAAgB;CAczB"}