@zhixuan92/multi-model-agent-core 4.7.8 → 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 (253) hide show
  1. package/README.md +1 -72
  2. package/dist/config/schema.d.ts +6 -4
  3. package/dist/config/schema.d.ts.map +1 -1
  4. package/dist/config/schema.js +6 -4
  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/events/to-wire-record.d.ts.map +1 -1
  11. package/dist/events/to-wire-record.js +24 -2
  12. package/dist/events/to-wire-record.js.map +1 -1
  13. package/dist/events/wire-schema.d.ts +10 -10
  14. package/dist/index.d.ts +0 -9
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +0 -8
  17. package/dist/index.js.map +1 -1
  18. package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -1
  19. package/dist/lifecycle/handlers/annotate-stage.js +9 -1
  20. package/dist/lifecycle/handlers/annotate-stage.js.map +1 -1
  21. package/dist/{review → lifecycle/handlers}/parse-review-report.d.ts +1 -1
  22. package/dist/lifecycle/handlers/parse-review-report.d.ts.map +1 -0
  23. package/dist/{review → lifecycle/handlers}/parse-review-report.js +10 -3
  24. package/dist/lifecycle/handlers/parse-review-report.js.map +1 -0
  25. package/dist/lifecycle/handlers/quality-review-prompt.d.ts +6 -0
  26. package/dist/lifecycle/handlers/quality-review-prompt.d.ts.map +1 -0
  27. package/dist/lifecycle/handlers/quality-review-prompt.js +42 -0
  28. package/dist/lifecycle/handlers/quality-review-prompt.js.map +1 -0
  29. package/dist/lifecycle/handlers/review-stage.js +11 -6
  30. package/dist/lifecycle/handlers/review-stage.js.map +1 -1
  31. package/dist/lifecycle/handlers/rework-prompt.d.ts +6 -0
  32. package/dist/lifecycle/handlers/rework-prompt.d.ts.map +1 -0
  33. package/dist/lifecycle/handlers/rework-prompt.js +18 -0
  34. package/dist/lifecycle/handlers/rework-prompt.js.map +1 -0
  35. package/dist/lifecycle/handlers/rework-stage.js +2 -2
  36. package/dist/lifecycle/handlers/rework-stage.js.map +1 -1
  37. package/dist/lifecycle/handlers/spec-review-prompt.d.ts +7 -0
  38. package/dist/lifecycle/handlers/spec-review-prompt.d.ts.map +1 -0
  39. package/dist/lifecycle/handlers/spec-review-prompt.js +39 -0
  40. package/dist/lifecycle/handlers/spec-review-prompt.js.map +1 -0
  41. package/dist/{review → lifecycle/handlers}/tier-policy.d.ts +1 -1
  42. package/dist/lifecycle/handlers/tier-policy.d.ts.map +1 -0
  43. package/dist/lifecycle/handlers/tier-policy.js.map +1 -0
  44. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  45. package/dist/lifecycle/lifecycle-driver.js +14 -4
  46. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  47. package/dist/lifecycle/perform-implementation.d.ts.map +1 -1
  48. package/dist/lifecycle/perform-implementation.js +38 -5
  49. package/dist/lifecycle/perform-implementation.js.map +1 -1
  50. package/dist/lifecycle/research-pre-loop.d.ts +21 -0
  51. package/dist/lifecycle/research-pre-loop.d.ts.map +1 -0
  52. package/dist/lifecycle/research-pre-loop.js +54 -0
  53. package/dist/lifecycle/research-pre-loop.js.map +1 -0
  54. package/dist/lifecycle/review-verdict-mapping.d.ts.map +1 -0
  55. package/dist/lifecycle/review-verdict-mapping.js.map +1 -0
  56. package/dist/lifecycle/task-executor.js +2 -2
  57. package/dist/lifecycle/task-executor.js.map +1 -1
  58. package/dist/lifecycle/tool-config-types.d.ts +1 -7
  59. package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
  60. package/dist/providers/runner-types.d.ts +0 -6
  61. package/dist/providers/runner-types.d.ts.map +1 -1
  62. package/dist/reporting/report-parser-slots/research-report.d.ts +0 -3
  63. package/dist/reporting/report-parser-slots/research-report.d.ts.map +1 -1
  64. package/dist/reporting/report-parser-slots/research-report.js +0 -5
  65. package/dist/reporting/report-parser-slots/research-report.js.map +1 -1
  66. package/dist/research/adapters/arxiv.d.ts.map +1 -1
  67. package/dist/research/adapters/arxiv.js +5 -1
  68. package/dist/research/adapters/arxiv.js.map +1 -1
  69. package/dist/research/adapters/github-search.d.ts +1 -0
  70. package/dist/research/adapters/github-search.d.ts.map +1 -1
  71. package/dist/research/adapters/github-search.js +15 -12
  72. package/dist/research/adapters/github-search.js.map +1 -1
  73. package/dist/research/adapters/index.d.ts +5 -1
  74. package/dist/research/adapters/index.d.ts.map +1 -1
  75. package/dist/research/adapters/index.js +7 -3
  76. package/dist/research/adapters/index.js.map +1 -1
  77. package/dist/research/adapters/semantic-scholar.d.ts +1 -0
  78. package/dist/research/adapters/semantic-scholar.d.ts.map +1 -1
  79. package/dist/research/adapters/semantic-scholar.js +11 -1
  80. package/dist/research/adapters/semantic-scholar.js.map +1 -1
  81. package/dist/research/evidence-pack.d.ts +33 -0
  82. package/dist/research/evidence-pack.d.ts.map +1 -0
  83. package/dist/research/evidence-pack.js +132 -0
  84. package/dist/research/evidence-pack.js.map +1 -0
  85. package/dist/research/index.d.ts +1 -2
  86. package/dist/research/index.d.ts.map +1 -1
  87. package/dist/research/index.js +1 -3
  88. package/dist/research/index.js.map +1 -1
  89. package/dist/research/orchestrator.d.ts +24 -0
  90. package/dist/research/orchestrator.d.ts.map +1 -0
  91. package/dist/research/orchestrator.js +162 -0
  92. package/dist/research/orchestrator.js.map +1 -0
  93. package/dist/research/query-plan.d.ts +18 -0
  94. package/dist/research/query-plan.d.ts.map +1 -0
  95. package/dist/research/query-plan.js +36 -0
  96. package/dist/research/query-plan.js.map +1 -0
  97. package/dist/research/user-agent.d.ts +5 -0
  98. package/dist/research/user-agent.d.ts.map +1 -0
  99. package/dist/research/user-agent.js +17 -0
  100. package/dist/research/user-agent.js.map +1 -0
  101. package/dist/research/web-fetch.d.ts +27 -22
  102. package/dist/research/web-fetch.d.ts.map +1 -1
  103. package/dist/research/web-fetch.js +115 -61
  104. package/dist/research/web-fetch.js.map +1 -1
  105. package/dist/research/web-search.d.ts.map +1 -1
  106. package/dist/research/web-search.js +2 -0
  107. package/dist/research/web-search.js.map +1 -1
  108. package/dist/stores/batch-registry.d.ts +0 -15
  109. package/dist/stores/batch-registry.d.ts.map +1 -1
  110. package/dist/stores/batch-registry.js +2 -0
  111. package/dist/stores/batch-registry.js.map +1 -1
  112. package/dist/stores/project-context-registry.d.ts +4 -11
  113. package/dist/stores/project-context-registry.d.ts.map +1 -1
  114. package/dist/stores/project-context-registry.js +4 -6
  115. package/dist/stores/project-context-registry.js.map +1 -1
  116. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  117. package/dist/tools/audit/tool-config.js +1 -5
  118. package/dist/tools/audit/tool-config.js.map +1 -1
  119. package/dist/tools/debug/tool-config.d.ts.map +1 -1
  120. package/dist/tools/debug/tool-config.js +1 -5
  121. package/dist/tools/debug/tool-config.js.map +1 -1
  122. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  123. package/dist/tools/delegate/tool-config.js +0 -6
  124. package/dist/tools/delegate/tool-config.js.map +1 -1
  125. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  126. package/dist/tools/execute-plan/tool-config.js +0 -6
  127. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  128. package/dist/tools/investigate/tool-config.d.ts.map +1 -1
  129. package/dist/tools/investigate/tool-config.js +0 -4
  130. package/dist/tools/investigate/tool-config.js.map +1 -1
  131. package/dist/tools/research/brief-slot.d.ts +17 -0
  132. package/dist/tools/research/brief-slot.d.ts.map +1 -1
  133. package/dist/tools/research/brief-slot.js +61 -0
  134. package/dist/tools/research/brief-slot.js.map +1 -1
  135. package/dist/tools/research/implementer-criteria.d.ts +4 -11
  136. package/dist/tools/research/implementer-criteria.d.ts.map +1 -1
  137. package/dist/tools/research/implementer-criteria.js +77 -14
  138. package/dist/tools/research/implementer-criteria.js.map +1 -1
  139. package/dist/tools/research/tool-config.d.ts.map +1 -1
  140. package/dist/tools/research/tool-config.js +10 -2
  141. package/dist/tools/research/tool-config.js.map +1 -1
  142. package/dist/tools/research/two-turn-driver.d.ts +20 -0
  143. package/dist/tools/research/two-turn-driver.d.ts.map +1 -0
  144. package/dist/tools/research/two-turn-driver.js +41 -0
  145. package/dist/tools/research/two-turn-driver.js.map +1 -0
  146. package/dist/tools/review/tool-config.d.ts.map +1 -1
  147. package/dist/tools/review/tool-config.js +1 -5
  148. package/dist/tools/review/tool-config.js.map +1 -1
  149. package/dist/tools/shared/severity-ladder.d.ts +2 -0
  150. package/dist/tools/shared/severity-ladder.d.ts.map +1 -0
  151. package/dist/tools/shared/severity-ladder.js +9 -0
  152. package/dist/tools/shared/severity-ladder.js.map +1 -0
  153. package/dist/types/config.d.ts +2 -1
  154. package/dist/types/config.d.ts.map +1 -1
  155. package/dist/types/enums.d.ts +3 -3
  156. package/dist/types/task-spec.d.ts +14 -10
  157. package/dist/types/task-spec.d.ts.map +1 -1
  158. package/dist/types.d.ts +0 -10
  159. package/dist/types.d.ts.map +1 -1
  160. package/package.json +1 -5
  161. package/dist/research/types.d.ts +0 -14
  162. package/dist/research/types.d.ts.map +0 -1
  163. package/dist/research/types.js +0 -2
  164. package/dist/research/types.js.map +0 -1
  165. package/dist/review/index.d.ts +0 -5
  166. package/dist/review/index.d.ts.map +0 -1
  167. package/dist/review/index.js +0 -8
  168. package/dist/review/index.js.map +0 -1
  169. package/dist/review/parse-review-report.d.ts.map +0 -1
  170. package/dist/review/parse-review-report.js.map +0 -1
  171. package/dist/review/review-types.d.ts +0 -2
  172. package/dist/review/review-types.d.ts.map +0 -1
  173. package/dist/review/review-types.js +0 -6
  174. package/dist/review/review-types.js.map +0 -1
  175. package/dist/review/review-verdict-mapping.d.ts.map +0 -1
  176. package/dist/review/review-verdict-mapping.js.map +0 -1
  177. package/dist/review/skipped-result.d.ts +0 -8
  178. package/dist/review/skipped-result.d.ts.map +0 -1
  179. package/dist/review/skipped-result.js +0 -4
  180. package/dist/review/skipped-result.js.map +0 -1
  181. package/dist/review/templates/annotator-audit.d.ts +0 -3
  182. package/dist/review/templates/annotator-audit.d.ts.map +0 -1
  183. package/dist/review/templates/annotator-audit.js +0 -20
  184. package/dist/review/templates/annotator-audit.js.map +0 -1
  185. package/dist/review/templates/annotator-debug.d.ts +0 -3
  186. package/dist/review/templates/annotator-debug.d.ts.map +0 -1
  187. package/dist/review/templates/annotator-debug.js +0 -19
  188. package/dist/review/templates/annotator-debug.js.map +0 -1
  189. package/dist/review/templates/annotator-investigate.d.ts +0 -3
  190. package/dist/review/templates/annotator-investigate.d.ts.map +0 -1
  191. package/dist/review/templates/annotator-investigate.js +0 -17
  192. package/dist/review/templates/annotator-investigate.js.map +0 -1
  193. package/dist/review/templates/annotator-review.d.ts +0 -3
  194. package/dist/review/templates/annotator-review.d.ts.map +0 -1
  195. package/dist/review/templates/annotator-review.js +0 -22
  196. package/dist/review/templates/annotator-review.js.map +0 -1
  197. package/dist/review/templates/annotator-shared.d.ts +0 -23
  198. package/dist/review/templates/annotator-shared.d.ts.map +0 -1
  199. package/dist/review/templates/annotator-shared.js +0 -51
  200. package/dist/review/templates/annotator-shared.js.map +0 -1
  201. package/dist/review/templates/finding-criteria.d.ts +0 -15
  202. package/dist/review/templates/finding-criteria.d.ts.map +0 -1
  203. package/dist/review/templates/finding-criteria.js +0 -39
  204. package/dist/review/templates/finding-criteria.js.map +0 -1
  205. package/dist/review/templates/quality-review-audit.d.ts +0 -3
  206. package/dist/review/templates/quality-review-audit.d.ts.map +0 -1
  207. package/dist/review/templates/quality-review-audit.js +0 -10
  208. package/dist/review/templates/quality-review-audit.js.map +0 -1
  209. package/dist/review/templates/quality-review-debug.d.ts +0 -3
  210. package/dist/review/templates/quality-review-debug.d.ts.map +0 -1
  211. package/dist/review/templates/quality-review-debug.js +0 -10
  212. package/dist/review/templates/quality-review-debug.js.map +0 -1
  213. package/dist/review/templates/quality-review-investigate.d.ts +0 -3
  214. package/dist/review/templates/quality-review-investigate.d.ts.map +0 -1
  215. package/dist/review/templates/quality-review-investigate.js +0 -10
  216. package/dist/review/templates/quality-review-investigate.js.map +0 -1
  217. package/dist/review/templates/quality-review-review.d.ts +0 -3
  218. package/dist/review/templates/quality-review-review.d.ts.map +0 -1
  219. package/dist/review/templates/quality-review-review.js +0 -10
  220. package/dist/review/templates/quality-review-review.js.map +0 -1
  221. package/dist/review/templates/quality-review.d.ts +0 -9
  222. package/dist/review/templates/quality-review.d.ts.map +0 -1
  223. package/dist/review/templates/quality-review.js +0 -89
  224. package/dist/review/templates/quality-review.js.map +0 -1
  225. package/dist/review/templates/rework.d.ts +0 -3
  226. package/dist/review/templates/rework.d.ts.map +0 -1
  227. package/dist/review/templates/rework.js +0 -48
  228. package/dist/review/templates/rework.js.map +0 -1
  229. package/dist/review/templates/shared.d.ts +0 -67
  230. package/dist/review/templates/shared.d.ts.map +0 -1
  231. package/dist/review/templates/shared.js +0 -2
  232. package/dist/review/templates/shared.js.map +0 -1
  233. package/dist/review/templates/spec-review.d.ts +0 -10
  234. package/dist/review/templates/spec-review.d.ts.map +0 -1
  235. package/dist/review/templates/spec-review.js +0 -75
  236. package/dist/review/templates/spec-review.js.map +0 -1
  237. package/dist/review/tier-policy.d.ts.map +0 -1
  238. package/dist/review/tier-policy.js.map +0 -1
  239. package/dist/stores/context-block-project-cap.d.ts +0 -14
  240. package/dist/stores/context-block-project-cap.d.ts.map +0 -1
  241. package/dist/stores/context-block-project-cap.js +0 -80
  242. package/dist/stores/context-block-project-cap.js.map +0 -1
  243. package/dist/stores/file-backed-context-block-store.d.ts +0 -81
  244. package/dist/stores/file-backed-context-block-store.d.ts.map +0 -1
  245. package/dist/stores/file-backed-context-block-store.js +0 -410
  246. package/dist/stores/file-backed-context-block-store.js.map +0 -1
  247. package/dist/stores/index.d.ts +0 -4
  248. package/dist/stores/index.d.ts.map +0 -1
  249. package/dist/stores/index.js +0 -5
  250. package/dist/stores/index.js.map +0 -1
  251. /package/dist/{review → lifecycle/handlers}/tier-policy.js +0 -0
  252. /package/dist/{review → lifecycle}/review-verdict-mapping.d.ts +0 -0
  253. /package/dist/{review → lifecycle}/review-verdict-mapping.js +0 -0
@@ -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"}