@zhixuan92/multi-model-agent-core 4.0.2 → 4.0.4

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 (263) hide show
  1. package/README.md +20 -6
  2. package/dist/bounded-execution/activity-tracker-types.d.ts +2 -2
  3. package/dist/bounded-execution/activity-tracker-types.d.ts.map +1 -1
  4. package/dist/bounded-execution/activity-tracker.d.ts +3 -3
  5. package/dist/bounded-execution/activity-tracker.d.ts.map +1 -1
  6. package/dist/bounded-execution/activity-tracker.js +15 -15
  7. package/dist/bounded-execution/activity-tracker.js.map +1 -1
  8. package/dist/config/model-profile-registry.d.ts +0 -10
  9. package/dist/config/model-profile-registry.d.ts.map +1 -1
  10. package/dist/config/model-profile-registry.js +126 -8
  11. package/dist/config/model-profile-registry.js.map +1 -1
  12. package/dist/config/schema.d.ts +0 -1
  13. package/dist/config/schema.d.ts.map +1 -1
  14. package/dist/config/schema.js +3 -1
  15. package/dist/config/schema.js.map +1 -1
  16. package/dist/escalation/delegate-with-escalation.d.ts +24 -0
  17. package/dist/escalation/delegate-with-escalation.d.ts.map +1 -1
  18. package/dist/escalation/delegate-with-escalation.js +5 -0
  19. package/dist/escalation/delegate-with-escalation.js.map +1 -1
  20. package/dist/escalation/fallback-types.d.ts +1 -1
  21. package/dist/escalation/fallback-types.d.ts.map +1 -1
  22. package/dist/escalation/fallback.js +2 -2
  23. package/dist/escalation/fallback.js.map +1 -1
  24. package/dist/events/cloud-events.d.ts +3 -4
  25. package/dist/events/cloud-events.d.ts.map +1 -1
  26. package/dist/events/cloud-events.js +0 -1
  27. package/dist/events/cloud-events.js.map +1 -1
  28. package/dist/events/event-builder.d.ts +4 -2
  29. package/dist/events/event-builder.d.ts.map +1 -1
  30. package/dist/events/event-builder.js +47 -45
  31. package/dist/events/event-builder.js.map +1 -1
  32. package/dist/events/observability-events.d.ts +7 -8
  33. package/dist/events/observability-events.d.ts.map +1 -1
  34. package/dist/events/running-headline-sink.d.ts +26 -0
  35. package/dist/events/running-headline-sink.d.ts.map +1 -0
  36. package/dist/events/running-headline-sink.js +116 -0
  37. package/dist/events/running-headline-sink.js.map +1 -0
  38. package/dist/events/telemetry-types.d.ts +20 -20
  39. package/dist/events/telemetry-types.js +8 -8
  40. package/dist/events/telemetry-types.js.map +1 -1
  41. package/dist/events/verbose-log-channel.d.ts +22 -2
  42. package/dist/events/verbose-log-channel.d.ts.map +1 -1
  43. package/dist/events/verbose-log-channel.js +46 -9
  44. package/dist/events/verbose-log-channel.js.map +1 -1
  45. package/dist/index.d.ts +4 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +4 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/intake/brief-compiler-slots/delegate.d.ts +1 -0
  50. package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
  51. package/dist/intake/brief-compiler-slots/delegate.js +17 -2
  52. package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
  53. package/dist/lifecycle/diff-tracker.d.ts +72 -0
  54. package/dist/lifecycle/diff-tracker.d.ts.map +1 -0
  55. package/dist/lifecycle/diff-tracker.js +316 -0
  56. package/dist/lifecycle/diff-tracker.js.map +1 -0
  57. package/dist/lifecycle/executor-output-types.d.ts +2 -2
  58. package/dist/lifecycle/executor-output-types.d.ts.map +1 -1
  59. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  60. package/dist/lifecycle/handlers/baseline-handlers.js +48 -1
  61. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  62. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +1 -1
  63. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +1 -1
  64. package/dist/lifecycle/handlers/prepare-execution-context-handler.js +23 -1
  65. package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +1 -1
  66. package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +1 -1
  67. package/dist/lifecycle/handlers/quality-chain-handlers.js +177 -6
  68. package/dist/lifecycle/handlers/quality-chain-handlers.js.map +1 -1
  69. package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +1 -1
  70. package/dist/lifecycle/handlers/review-diff-handler.js +74 -13
  71. package/dist/lifecycle/handlers/review-diff-handler.js.map +1 -1
  72. package/dist/lifecycle/handlers/run-verify-command-handler.js +11 -2
  73. package/dist/lifecycle/handlers/run-verify-command-handler.js.map +1 -1
  74. package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +1 -1
  75. package/dist/lifecycle/handlers/spec-chain-handlers.js +135 -6
  76. package/dist/lifecycle/handlers/spec-chain-handlers.js.map +1 -1
  77. package/dist/lifecycle/handlers/terminal-handlers.d.ts +8 -0
  78. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  79. package/dist/lifecycle/handlers/terminal-handlers.js +168 -11
  80. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  81. package/dist/lifecycle/lifecycle-context.d.ts +0 -2
  82. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  83. package/dist/lifecycle/merge-stage-stats.d.ts +58 -0
  84. package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -0
  85. package/dist/lifecycle/merge-stage-stats.js +120 -0
  86. package/dist/lifecycle/merge-stage-stats.js.map +1 -0
  87. package/dist/lifecycle/shared-compute.js +4 -4
  88. package/dist/lifecycle/shared-compute.js.map +1 -1
  89. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  90. package/dist/lifecycle/stage-plan-builder.js +6 -0
  91. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  92. package/dist/lifecycle/stage-plan-types.d.ts +18 -0
  93. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  94. package/dist/lifecycle/stage-progression.d.ts +20 -0
  95. package/dist/lifecycle/stage-progression.d.ts.map +1 -0
  96. package/dist/lifecycle/stage-progression.js +165 -0
  97. package/dist/lifecycle/stage-progression.js.map +1 -0
  98. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  99. package/dist/lifecycle/task-executor.js +55 -10
  100. package/dist/lifecycle/task-executor.js.map +1 -1
  101. package/dist/lifecycle/task-runner.d.ts +7 -3
  102. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  103. package/dist/lifecycle/task-runner.js +43 -7
  104. package/dist/lifecycle/task-runner.js.map +1 -1
  105. package/dist/providers/anthropic-messages-adapter.d.ts.map +1 -1
  106. package/dist/providers/anthropic-messages-adapter.js +25 -1
  107. package/dist/providers/anthropic-messages-adapter.js.map +1 -1
  108. package/dist/providers/base/result-builders.d.ts +1 -1
  109. package/dist/providers/base/result-builders.d.ts.map +1 -1
  110. package/dist/providers/base/result-builders.js +4 -4
  111. package/dist/providers/base/result-builders.js.map +1 -1
  112. package/dist/providers/make-runner-shell.d.ts.map +1 -1
  113. package/dist/providers/make-runner-shell.js +6 -5
  114. package/dist/providers/make-runner-shell.js.map +1 -1
  115. package/dist/providers/openai-chat-adapter.d.ts +0 -2
  116. package/dist/providers/openai-chat-adapter.d.ts.map +1 -1
  117. package/dist/providers/openai-chat-adapter.js +2 -3
  118. package/dist/providers/openai-chat-adapter.js.map +1 -1
  119. package/dist/providers/openai-responses-adapter.d.ts +1 -2
  120. package/dist/providers/openai-responses-adapter.d.ts.map +1 -1
  121. package/dist/providers/openai-responses-adapter.js +67 -39
  122. package/dist/providers/openai-responses-adapter.js.map +1 -1
  123. package/dist/providers/provider-factory.d.ts.map +1 -1
  124. package/dist/providers/provider-factory.js +51 -9
  125. package/dist/providers/provider-factory.js.map +1 -1
  126. package/dist/providers/runner-adapter.d.ts +10 -0
  127. package/dist/providers/runner-adapter.d.ts.map +1 -1
  128. package/dist/providers/runner-shell-types.d.ts +33 -0
  129. package/dist/providers/runner-shell-types.d.ts.map +1 -1
  130. package/dist/providers/runner-shell.d.ts +10 -1
  131. package/dist/providers/runner-shell.d.ts.map +1 -1
  132. package/dist/providers/runner-shell.js +251 -18
  133. package/dist/providers/runner-shell.js.map +1 -1
  134. package/dist/providers/runner-types.d.ts +21 -2
  135. package/dist/providers/runner-types.d.ts.map +1 -1
  136. package/dist/providers/tool-name-sets.d.ts +29 -0
  137. package/dist/providers/tool-name-sets.d.ts.map +1 -0
  138. package/dist/providers/tool-name-sets.js +41 -0
  139. package/dist/providers/tool-name-sets.js.map +1 -0
  140. package/dist/reporting/headline-composer.d.ts +12 -0
  141. package/dist/reporting/headline-composer.d.ts.map +1 -1
  142. package/dist/reporting/headline-composer.js.map +1 -1
  143. package/dist/reporting/headline-templates/audit.d.ts.map +1 -1
  144. package/dist/reporting/headline-templates/audit.js +35 -6
  145. package/dist/reporting/headline-templates/audit.js.map +1 -1
  146. package/dist/reporting/headline-templates/debug.d.ts +22 -3
  147. package/dist/reporting/headline-templates/debug.d.ts.map +1 -1
  148. package/dist/reporting/headline-templates/debug.js +38 -8
  149. package/dist/reporting/headline-templates/debug.js.map +1 -1
  150. package/dist/reporting/headline-templates/delegate.d.ts.map +1 -1
  151. package/dist/reporting/headline-templates/delegate.js +36 -6
  152. package/dist/reporting/headline-templates/delegate.js.map +1 -1
  153. package/dist/reporting/headline-templates/execute-plan.d.ts.map +1 -1
  154. package/dist/reporting/headline-templates/execute-plan.js +18 -6
  155. package/dist/reporting/headline-templates/execute-plan.js.map +1 -1
  156. package/dist/reporting/headline-templates/review.d.ts.map +1 -1
  157. package/dist/reporting/headline-templates/review.js +32 -8
  158. package/dist/reporting/headline-templates/review.js.map +1 -1
  159. package/dist/reporting/headline-templates/verify.d.ts.map +1 -1
  160. package/dist/reporting/headline-templates/verify.js +23 -6
  161. package/dist/reporting/headline-templates/verify.js.map +1 -1
  162. package/dist/reporting/headline-text.d.ts +36 -0
  163. package/dist/reporting/headline-text.d.ts.map +1 -0
  164. package/dist/reporting/headline-text.js +73 -0
  165. package/dist/reporting/headline-text.js.map +1 -0
  166. package/dist/reporting/report-parser-slots/verify-report.d.ts +17 -0
  167. package/dist/reporting/report-parser-slots/verify-report.d.ts.map +1 -1
  168. package/dist/reporting/report-parser-slots/verify-report.js +45 -3
  169. package/dist/reporting/report-parser-slots/verify-report.js.map +1 -1
  170. package/dist/reporting/severity.d.ts +62 -0
  171. package/dist/reporting/severity.d.ts.map +1 -0
  172. package/dist/reporting/severity.js +93 -0
  173. package/dist/reporting/severity.js.map +1 -0
  174. package/dist/reporting/structured-report.d.ts +3 -3
  175. package/dist/research/explore-orchestrator.d.ts.map +1 -1
  176. package/dist/research/explore-orchestrator.js +4 -5
  177. package/dist/research/explore-orchestrator.js.map +1 -1
  178. package/dist/review/annotator-engine.d.ts +8 -0
  179. package/dist/review/annotator-engine.d.ts.map +1 -1
  180. package/dist/review/annotator-engine.js +7 -1
  181. package/dist/review/annotator-engine.js.map +1 -1
  182. package/dist/review/annotator-output-parser.d.ts.map +1 -1
  183. package/dist/review/annotator-output-parser.js +94 -14
  184. package/dist/review/annotator-output-parser.js.map +1 -1
  185. package/dist/review/annotator-prompt-builder.d.ts +20 -0
  186. package/dist/review/annotator-prompt-builder.d.ts.map +1 -1
  187. package/dist/review/annotator-prompt-builder.js +52 -1
  188. package/dist/review/annotator-prompt-builder.js.map +1 -1
  189. package/dist/review/review-types.d.ts +6 -2
  190. package/dist/review/review-types.d.ts.map +1 -1
  191. package/dist/review/reviewer-engine.d.ts +25 -0
  192. package/dist/review/reviewer-engine.d.ts.map +1 -1
  193. package/dist/review/reviewer-engine.js +18 -1
  194. package/dist/review/reviewer-engine.js.map +1 -1
  195. package/dist/review/reviewer-output-parser.d.ts.map +1 -1
  196. package/dist/review/reviewer-output-parser.js +190 -13
  197. package/dist/review/reviewer-output-parser.js.map +1 -1
  198. package/dist/review/reviewer-prompt-builder.d.ts +4 -12
  199. package/dist/review/reviewer-prompt-builder.d.ts.map +1 -1
  200. package/dist/review/reviewer-prompt-builder.js.map +1 -1
  201. package/dist/review/templates/diff-review.d.ts +8 -0
  202. package/dist/review/templates/diff-review.d.ts.map +1 -1
  203. package/dist/review/templates/diff-review.js +34 -2
  204. package/dist/review/templates/diff-review.js.map +1 -1
  205. package/dist/review/templates/finding-criteria.d.ts +39 -0
  206. package/dist/review/templates/finding-criteria.d.ts.map +1 -0
  207. package/dist/review/templates/finding-criteria.js +80 -0
  208. package/dist/review/templates/finding-criteria.js.map +1 -0
  209. package/dist/review/templates/quality-review-artifact.d.ts +13 -0
  210. package/dist/review/templates/quality-review-artifact.d.ts.map +1 -1
  211. package/dist/review/templates/quality-review-artifact.js +41 -3
  212. package/dist/review/templates/quality-review-artifact.js.map +1 -1
  213. package/dist/review/templates/shared.d.ts +22 -5
  214. package/dist/review/templates/shared.d.ts.map +1 -1
  215. package/dist/review/templates/spec-review.d.ts +15 -0
  216. package/dist/review/templates/spec-review.d.ts.map +1 -1
  217. package/dist/review/templates/spec-review.js +43 -3
  218. package/dist/review/templates/spec-review.js.map +1 -1
  219. package/dist/stores/batch-registry.d.ts +18 -0
  220. package/dist/stores/batch-registry.d.ts.map +1 -1
  221. package/dist/stores/batch-registry.js +10 -0
  222. package/dist/stores/batch-registry.js.map +1 -1
  223. package/dist/stores/context-block-tool.d.ts +14 -0
  224. package/dist/stores/context-block-tool.d.ts.map +1 -1
  225. package/dist/stores/context-block-tool.js.map +1 -1
  226. package/dist/stores/file-backed-context-block-store.d.ts +63 -0
  227. package/dist/stores/file-backed-context-block-store.d.ts.map +1 -0
  228. package/dist/stores/file-backed-context-block-store.js +293 -0
  229. package/dist/stores/file-backed-context-block-store.js.map +1 -0
  230. package/dist/stores/project-context-registry.d.ts +16 -3
  231. package/dist/stores/project-context-registry.d.ts.map +1 -1
  232. package/dist/stores/project-context-registry.js +9 -2
  233. package/dist/stores/project-context-registry.js.map +1 -1
  234. package/dist/tools/audit/schema.d.ts +2 -2
  235. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  236. package/dist/tools/audit/tool-config.js +23 -6
  237. package/dist/tools/audit/tool-config.js.map +1 -1
  238. package/dist/tools/debug/tool-config.d.ts.map +1 -1
  239. package/dist/tools/debug/tool-config.js +17 -4
  240. package/dist/tools/debug/tool-config.js.map +1 -1
  241. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  242. package/dist/tools/execute-plan/tool-config.js +5 -1
  243. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  244. package/dist/tools/investigate/tool-config.d.ts +13 -1
  245. package/dist/tools/investigate/tool-config.d.ts.map +1 -1
  246. package/dist/tools/investigate/tool-config.js +34 -4
  247. package/dist/tools/investigate/tool-config.js.map +1 -1
  248. package/dist/tools/retry/tool-config.d.ts.map +1 -1
  249. package/dist/tools/retry/tool-config.js +28 -5
  250. package/dist/tools/retry/tool-config.js.map +1 -1
  251. package/dist/tools/review/schema.d.ts +1 -1
  252. package/dist/tools/review/tool-config.d.ts.map +1 -1
  253. package/dist/tools/review/tool-config.js +19 -4
  254. package/dist/tools/review/tool-config.js.map +1 -1
  255. package/dist/tools/verify/tool-config.d.ts.map +1 -1
  256. package/dist/tools/verify/tool-config.js +17 -4
  257. package/dist/tools/verify/tool-config.js.map +1 -1
  258. package/dist/types/enums.d.ts +10 -10
  259. package/package.json +5 -1
  260. package/dist/intake/brief-compiler-slots/investigate.d.ts +0 -26
  261. package/dist/intake/brief-compiler-slots/investigate.d.ts.map +0 -1
  262. package/dist/intake/brief-compiler-slots/investigate.js +0 -42
  263. package/dist/intake/brief-compiler-slots/investigate.js.map +0 -1
@@ -1,8 +1,46 @@
1
+ /**
2
+ * Quality reviewer for artifact-producing routes (delegate, execute-plan,
3
+ * retry).
4
+ *
5
+ * Tool sweep #6: pre-fix this template only saw `Task: <brief>` +
6
+ * `Worker output: <text>`. Quality findings were rooted in the
7
+ * worker's prose claim — false positives ("the worker claimed X but
8
+ * didn't really") were common, and real regressions in the diff
9
+ * could be missed if the worker's summary glossed over them.
10
+ *
11
+ * Post-fix: reviewer sees the cumulative diff. Findings must be
12
+ * specific to diff lines.
13
+ */
1
14
  export const qualityAPTemplate = {
2
- systemPrompt: `You are a code quality reviewer. Check whether the implementation is sound, safe, and maintainable.
3
- Return a JSON block with: {"verdict":"approved"|"concerns","concerns":["concern1",...]}`,
15
+ systemPrompt: [
16
+ 'You are a code quality reviewer. Check whether the cumulative diff is sound, safe, and maintainable.',
17
+ '',
18
+ 'Reply with a JSON block: {"verdict":"approved"|"concerns","concerns":["..."]}.',
19
+ '',
20
+ 'Verdict rules:',
21
+ '- "approved": the diff has no quality concerns worth blocking on. The "concerns" list MUST be empty.',
22
+ '- "concerns": cite at least one specific concern, each tied to a specific diff line. Do not raise stylistic preferences not relevant to correctness, safety, or maintainability.',
23
+ '- An empty diff is "approved" (nothing to review).',
24
+ '',
25
+ 'Examples of legitimate concerns: input not validated; resource not closed; race condition introduced; tests broken; new dependency introduced without justification.',
26
+ 'Examples of out-of-scope concerns: bracket placement; comment punctuation; unrelated pre-existing code.',
27
+ ].join('\n'),
4
28
  buildUserPrompt(ctx) {
5
- return `Task: ${ctx.brief}\n\nWorker output:\n${ctx.workerOutput}`;
29
+ const parts = [];
30
+ parts.push(`# Task brief\n${ctx.brief}`);
31
+ if (ctx.priorConcerns && ctx.priorConcerns.length > 0) {
32
+ parts.push(`# Prior reviewer concerns from earlier rounds in this chain\nVerify the rework has addressed each one:\n` +
33
+ ctx.priorConcerns.map((c, i) => `${i + 1}. ${c}`).join('\n'));
34
+ }
35
+ parts.push(`# Worker's most recent summary\n${ctx.workerOutput || '(no summary)'}`);
36
+ if (ctx.diff && ctx.diff.length > 0) {
37
+ parts.push(`# Cumulative diff (the truth of what changed)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
38
+ }
39
+ else {
40
+ parts.push(`# Cumulative diff\n(no file changes detected — verdict should be "approved")`);
41
+ }
42
+ parts.push(`# Decide\nIs the cumulative diff sound, safe, and maintainable? Reply with the JSON block specified in the system prompt.`);
43
+ return parts.join('\n\n');
6
44
  },
7
45
  };
8
46
  //# sourceMappingURL=quality-review-artifact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quality-review-artifact.js","sourceRoot":"","sources":["../../../src/review/templates/quality-review-artifact.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,YAAY,EAAE;wFACwE;IACtF,eAAe,CAAC,GAAG;QACjB,OAAO,SAAS,GAAG,CAAC,KAAK,uBAAuB,GAAG,CAAC,YAAY,EAAE,CAAC;IACrE,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"quality-review-artifact.js","sourceRoot":"","sources":["../../../src/review/templates/quality-review-artifact.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,YAAY,EAAE;QACZ,sGAAsG;QACtG,EAAE;QACF,gFAAgF;QAChF,EAAE;QACF,gBAAgB;QAChB,sGAAsG;QACtG,kLAAkL;QAClL,oDAAoD;QACpD,EAAE;QACF,sKAAsK;QACtK,yGAAyG;KAC1G,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;QAEzC,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CACR,0GAA0G;gBAC1G,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC,CAAC;QAEpF,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,gEAAgE,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC7F,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,2HAA2H,CAAC,CAAC;QAExI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -1,9 +1,26 @@
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
+ }
1
22
  export interface ReviewTemplate {
2
23
  systemPrompt: string;
3
- buildUserPrompt(ctx: {
4
- workerOutput: string;
5
- brief: string;
6
- filesChanged?: string[];
7
- }): string;
24
+ buildUserPrompt(ctx: ReviewTemplateContext): string;
8
25
  }
9
26
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/review/templates/shared.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,GAAG,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM,CAAC;CAChG"}
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;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAAC;CACrD"}
@@ -1,3 +1,18 @@
1
1
  import type { ReviewTemplate } from './shared.js';
2
+ /**
3
+ * Spec compliance reviewer.
4
+ *
5
+ * Tool sweep #6 rewrite: pre-fix this template gave the LLM only
6
+ * `Task: <brief>` + `Worker output: <text>`. The reviewer was
7
+ * reviewing the worker's CLAIM, not the worker's WORK — it had no
8
+ * way to verify whether the claim was true. Result: skeptical
9
+ * reviewers defaulted to "changes_required" and triggered endless
10
+ * rework spirals on already-correct edits.
11
+ *
12
+ * Post-fix: the reviewer also sees the cumulative diff (the truth)
13
+ * and any prior reviewer concerns it should verify are addressed.
14
+ * With evidence in hand, "changes_required" must point to a
15
+ * specific diff line — no more vague rejections.
16
+ */
2
17
  export declare const specTemplate: ReviewTemplate;
3
18
  //# sourceMappingURL=spec-review.d.ts.map
@@ -1 +1 @@
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,YAAY,EAAE,cAM1B,CAAC"}
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;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,cAsC1B,CAAC"}
@@ -1,8 +1,48 @@
1
+ /**
2
+ * Spec compliance reviewer.
3
+ *
4
+ * Tool sweep #6 rewrite: pre-fix this template gave the LLM only
5
+ * `Task: <brief>` + `Worker output: <text>`. The reviewer was
6
+ * reviewing the worker's CLAIM, not the worker's WORK — it had no
7
+ * way to verify whether the claim was true. Result: skeptical
8
+ * reviewers defaulted to "changes_required" and triggered endless
9
+ * rework spirals on already-correct edits.
10
+ *
11
+ * Post-fix: the reviewer also sees the cumulative diff (the truth)
12
+ * and any prior reviewer concerns it should verify are addressed.
13
+ * With evidence in hand, "changes_required" must point to a
14
+ * specific diff line — no more vague rejections.
15
+ */
1
16
  export const specTemplate = {
2
- systemPrompt: `You are a spec compliance reviewer. Check whether the implementer satisfied the task exactly.
3
- Return a JSON block with: {"verdict":"approved"|"changes_required","concerns":["concern1",...]}`,
17
+ systemPrompt: [
18
+ 'You are a spec compliance reviewer. Your job is to decide whether the cumulative diff fulfills the task brief — nothing else.',
19
+ '',
20
+ 'Reply with a JSON block: {"verdict":"approved"|"changes_required","concerns":["..."]}.',
21
+ '',
22
+ 'Verdict rules:',
23
+ '- "approved": the diff implements the brief, with no missing or wrong elements. The "concerns" list MUST be empty.',
24
+ '- "changes_required": cite at least one concrete concern, each tied to a specific diff line or a specific missing element from the brief. Do NOT use this verdict for stylistic preferences not in the brief.',
25
+ '- An empty diff (no files changed) is "changes_required" UNLESS the brief explicitly requested a no-op or "no change needed".',
26
+ '- A diff that fully satisfies the brief is "approved" even if you would have written it differently.',
27
+ '',
28
+ 'You do not see future rework rounds. Decide on this evidence alone.',
29
+ ].join('\n'),
4
30
  buildUserPrompt(ctx) {
5
- return `Task: ${ctx.brief}\n\nWorker output:\n${ctx.workerOutput}`;
31
+ const parts = [];
32
+ parts.push(`# Task brief\n${ctx.brief}`);
33
+ if (ctx.priorConcerns && ctx.priorConcerns.length > 0) {
34
+ parts.push(`# Prior reviewer concerns from earlier rounds in this chain\nVerify the rework has addressed each one:\n` +
35
+ ctx.priorConcerns.map((c, i) => `${i + 1}. ${c}`).join('\n'));
36
+ }
37
+ parts.push(`# Worker's most recent summary\n${ctx.workerOutput || '(no summary)'}`);
38
+ if (ctx.diff && ctx.diff.length > 0) {
39
+ parts.push(`# Cumulative diff (the truth of what changed)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
40
+ }
41
+ else {
42
+ parts.push(`# Cumulative diff\n(no file changes detected)`);
43
+ }
44
+ parts.push(`# Decide\nDoes the cumulative diff fulfill the task brief? Reply with the JSON block specified in the system prompt.`);
45
+ return parts.join('\n\n');
6
46
  },
7
47
  };
8
48
  //# sourceMappingURL=spec-review.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-review.js","sourceRoot":"","sources":["../../../src/review/templates/spec-review.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,YAAY,EAAE;gGACgF;IAC9F,eAAe,CAAC,GAAG;QACjB,OAAO,SAAS,GAAG,CAAC,KAAK,uBAAuB,GAAG,CAAC,YAAY,EAAE,CAAC;IACrE,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"spec-review.js","sourceRoot":"","sources":["../../../src/review/templates/spec-review.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,YAAY,EAAE;QACZ,+HAA+H;QAC/H,EAAE;QACF,wFAAwF;QACxF,EAAE;QACF,gBAAgB;QAChB,oHAAoH;QACpH,+MAA+M;QAC/M,+HAA+H;QAC/H,sGAAsG;QACtG,EAAE;QACF,qEAAqE;KACtE,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;QAEzC,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CACR,0GAA0G;gBAC1G,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC,CAAC;QAEpF,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,gEAAgE,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,sHAAsH,CAAC,CAAC;QAEnI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -12,6 +12,18 @@ export interface HeadlineSnapshot {
12
12
  dispatchedAt: number;
13
13
  /** Optional fallback headline string for queue / pre-dispatch phases. */
14
14
  fallback: string;
15
+ /** Structured fields for batch aggregation. When present on per-task snapshots,
16
+ * the batch handler aggregates them into a single line (slowest task as
17
+ * representative + summed counts + "+K" suffix when >1 running) instead of
18
+ * rendering one line per task. Optional: writers that don't yet supply these
19
+ * still produce a valid (single) headline via prefix/statsClause. */
20
+ stageLabel?: string;
21
+ tier?: string;
22
+ stageDone?: number;
23
+ stageTotal?: number;
24
+ toolReads?: number;
25
+ toolWrites?: number;
26
+ toolTotal?: number;
15
27
  }
16
28
  /** Lightweight task spec stored in BatchRegistry entries for retry lookups. */
17
29
  export interface RegistryTaskSpec {
@@ -53,6 +65,11 @@ export interface BatchEntryInput<Result = unknown> {
53
65
  }
54
66
  export interface BatchEntry<Result = unknown> extends BatchEntryInput<Result> {
55
67
  runningHeadlineSnapshot: HeadlineSnapshot;
68
+ /** Per-task headline snapshots, keyed by taskIndex. When a batch fans out
69
+ * to multiple parallel tasks, each task tracks its own stage/elapsed/stats
70
+ * so the polling endpoint can render one line per task instead of letting
71
+ * the latest event overwrite the previous task's progress. */
72
+ perTaskHeadlineSnapshots?: Map<number, HeadlineSnapshot>;
56
73
  /** taskIndex -> terminal context blockId; lazily created on first record */
57
74
  terminalBlockIds?: Map<number, string>;
58
75
  }
@@ -78,6 +95,7 @@ export declare class BatchRegistry {
78
95
  register(input: BatchEntryInput): void;
79
96
  get(batchId: string): BatchEntry | undefined;
80
97
  updateRunningHeadlineSnapshot(batchId: string, snapshot: HeadlineSnapshot): void;
98
+ updatePerTaskHeadlineSnapshot(batchId: string, taskIndex: number, snapshot: HeadlineSnapshot): void;
81
99
  delete(batchId: string): boolean;
82
100
  recordTerminalBlock(batchId: string, taskIndex: number, blockId: string): void;
83
101
  getTerminalBlock(batchId: string, taskIndex: number): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"batch-registry.d.ts","sourceRoot":"","sources":["../../src/stores/batch-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-registry.d.ts","sourceRoot":"","sources":["../../src/stores/batch-registry.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,16 @@ export class BatchRegistry {
49
49
  return;
50
50
  entry.runningHeadlineSnapshot = snapshot;
51
51
  }
52
+ updatePerTaskHeadlineSnapshot(batchId, taskIndex, snapshot) {
53
+ const entry = this.map.get(batchId);
54
+ if (!entry)
55
+ return;
56
+ if (isTerminal(entry.state))
57
+ return;
58
+ if (!entry.perTaskHeadlineSnapshots)
59
+ entry.perTaskHeadlineSnapshots = new Map();
60
+ entry.perTaskHeadlineSnapshots.set(taskIndex, snapshot);
61
+ }
52
62
  delete(batchId) {
53
63
  return this.map.delete(batchId);
54
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"batch-registry.js","sourceRoot":"","sources":["../../src/stores/batch-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-registry.js","sourceRoot":"","sources":["../../src/stores/batch-registry.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,20 @@ export interface ContextBlockStore {
30
30
  delete(id: string): boolean;
31
31
  /** Walk entries and evict those past the idle TTL. Returns count evicted. */
32
32
  runIdleSweep(now: number, idleTtlMs: number): number;
33
+ /** Number of entries. Used by status + size-cap checks. */
34
+ readonly size: number;
35
+ /** Increment pin count — used by BatchRegistry to hold blocks across an
36
+ * active dispatch so they can't be evicted mid-run. Disk-backed
37
+ * implementations may treat this as advisory. */
38
+ pin(id: string): void;
39
+ /** Decrement pin count. */
40
+ unpin(id: string): void;
41
+ /** Current pin count for an entry. Returns 0 if unknown. */
42
+ refcount(id: string): number;
43
+ /** Wipe every entry. Used by project-registry on idle eviction. */
44
+ clear(): void;
45
+ /** Configured idle TTL (ms). Tests + observability surfaces read it. */
46
+ readonly ttlMs: number;
33
47
  }
34
48
  /**
35
49
  * Thrown by `expandContextBlocks` when a task references a block id that
@@ -1 +1 @@
1
- {"version":3,"file":"context-block-tool.d.ts","sourceRoot":"","sources":["../../src/stores/context-block-tool.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;yDACqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IACnE;yEACqE;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACtD;AAED;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM;CAQvC;AAiBD,MAAM,WAAW,gCAAgC;IAC/C,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAK;gBAEL,IAAI,GAAE,gCAAqC;IAKvD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe;IAmBtE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAenC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B;sEACkE;IAClE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKrB;qCACiC;IACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKvB;0EACsE;IACtE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAYpD,kEAAkE;IAClE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAI5B,oDAAoD;IACpD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,gBAAgB;CAgBzB"}
1
+ {"version":3,"file":"context-block-tool.d.ts","sourceRoot":"","sources":["../../src/stores/context-block-tool.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;yDACqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IACnE;yEACqE;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACrD,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;sDAEkD;IAClD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,mEAAmE;IACnE,KAAK,IAAI,IAAI,CAAC;IACd,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM;CAQvC;AAiBD,MAAM,WAAW,gCAAgC;IAC/C,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAK;gBAEL,IAAI,GAAE,gCAAqC;IAKvD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe;IAmBtE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAenC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B;sEACkE;IAClE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKrB;qCACiC;IACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKvB;0EACsE;IACtE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAYpD,kEAAkE;IAClE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAI5B,oDAAoD;IACpD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,gBAAgB;CAgBzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"context-block-tool.js","sourceRoot":"","sources":["../../src/stores/context-block-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-block-tool.js","sourceRoot":"","sources":["../../src/stores/context-block-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
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
+ }
12
+ export declare class FileBackedContextBlockStore implements ContextBlockStore {
13
+ private rootDir;
14
+ private _ttlMs;
15
+ private gcCheckIntervalMs;
16
+ private maxBlockBytes;
17
+ private maxTotalBytes;
18
+ private lastSweepMs;
19
+ /** Pin counts are kept in memory only — they're an active-batch
20
+ * protection signal, not a persistence concern. Lost on restart;
21
+ * TTL-based GC handles the recovery side. */
22
+ private pinCounts;
23
+ constructor(projectCwd: string, opts?: FileBackedContextBlockStoreOptions);
24
+ register(content: string, opts?: {
25
+ id?: string;
26
+ }): RegisteredBlock;
27
+ get(id: string): string | undefined;
28
+ delete(id: string): boolean;
29
+ pin(id: string): void;
30
+ unpin(id: string): void;
31
+ refcount(id: string): number;
32
+ runIdleSweep(now: number, idleTtlMs: number): number;
33
+ get ttlMs(): number;
34
+ /** Number of entries currently on disk (counted by id, not by file —
35
+ * orphan halves count once). */
36
+ get size(): number;
37
+ /** Delete every block. Used by project-registry on idle eviction. */
38
+ clear(): void;
39
+ /** Sum of all on-disk content bytes (no caching — fresh read each call).
40
+ * Used by tests + `evictUntilFits`. */
41
+ totalBytesOnDisk(): number;
42
+ private ensureRoot;
43
+ private contentPath;
44
+ private metaPath;
45
+ private listIds;
46
+ private readMeta;
47
+ private deleteFiles;
48
+ /**
49
+ * Atomic write: temp-file → fsync → rename. Recovers cleanly from
50
+ * daemon SIGKILL mid-write — readers either see the old content or
51
+ * the new content, never a partial write. The .tmp suffix uses a
52
+ * random nonce so concurrent writers don't collide.
53
+ */
54
+ private atomicWrite;
55
+ /**
56
+ * Oldest-first eviction loop until total disk usage + incoming bytes
57
+ * fits under maxTotalBytes. Pinned entries are skipped (matches
58
+ * in-memory store semantics — pinned blocks are held by an active
59
+ * batch and shouldn't be evicted mid-run).
60
+ */
61
+ private evictUntilFits;
62
+ }
63
+ //# sourceMappingURL=file-backed-context-block-store.d.ts.map
@@ -0,0 +1 @@
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;CACxB;AAED,qBAAa,2BAA4B,YAAW,iBAAiB;IACnE,OAAO,CAAC,OAAO,CAAS;IACxB,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;gBAElC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,kCAAuC;IAS7E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe;IA+BtE,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;IAalB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,WAAW;IAKnB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAYnB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CAuBvB"}