@zhixuan92/multi-model-agent-core 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/README.md +7 -8
  2. package/dist/bounded-execution/activity-tracker-types.d.ts +1 -1
  3. package/dist/bounded-execution/activity-tracker-types.d.ts.map +1 -1
  4. package/dist/bounded-execution/activity-tracker-types.js +4 -9
  5. package/dist/bounded-execution/activity-tracker-types.js.map +1 -1
  6. package/dist/bounded-execution/cost-compute.d.ts.map +1 -1
  7. package/dist/bounded-execution/cost-compute.js +10 -0
  8. package/dist/bounded-execution/cost-compute.js.map +1 -1
  9. package/dist/config/config-resolver.d.ts +6 -4
  10. package/dist/config/config-resolver.d.ts.map +1 -1
  11. package/dist/config/config-resolver.js +7 -6
  12. package/dist/config/config-resolver.js.map +1 -1
  13. package/dist/config/schema.d.ts +8 -76
  14. package/dist/config/schema.d.ts.map +1 -1
  15. package/dist/config/schema.js +11 -18
  16. package/dist/config/schema.js.map +1 -1
  17. package/dist/escalation/delegate-with-escalation.d.ts.map +1 -1
  18. package/dist/escalation/delegate-with-escalation.js +35 -38
  19. package/dist/escalation/delegate-with-escalation.js.map +1 -1
  20. package/dist/escalation/escalation-policy.d.ts +1 -1
  21. package/dist/escalation/escalation-policy.d.ts.map +1 -1
  22. package/dist/escalation/escalation-policy.js +0 -1
  23. package/dist/escalation/escalation-policy.js.map +1 -1
  24. package/dist/events/clamp.d.ts.map +1 -1
  25. package/dist/events/clamp.js +17 -6
  26. package/dist/events/clamp.js.map +1 -1
  27. package/dist/events/cloud-events.d.ts +2 -4
  28. package/dist/events/cloud-events.d.ts.map +1 -1
  29. package/dist/events/event-builder.d.ts +1 -1
  30. package/dist/events/event-builder.d.ts.map +1 -1
  31. package/dist/events/event-builder.js +28 -56
  32. package/dist/events/event-builder.js.map +1 -1
  33. package/dist/events/observability-events.d.ts +21 -110
  34. package/dist/events/observability-events.d.ts.map +1 -1
  35. package/dist/events/observability-events.js +6 -12
  36. package/dist/events/observability-events.js.map +1 -1
  37. package/dist/events/running-headline-sink.d.ts +2 -1
  38. package/dist/events/running-headline-sink.d.ts.map +1 -1
  39. package/dist/events/running-headline-sink.js.map +1 -1
  40. package/dist/events/telemetry-types.d.ts +45 -86
  41. package/dist/events/telemetry-types.d.ts.map +1 -1
  42. package/dist/events/telemetry-types.js +30 -55
  43. package/dist/events/telemetry-types.js.map +1 -1
  44. package/dist/index.d.ts +2 -5
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +1 -5
  47. package/dist/index.js.map +1 -1
  48. package/dist/intake/source-schema.js +1 -1
  49. package/dist/intake/source-schema.js.map +1 -1
  50. package/dist/intake/types.d.ts +1 -1
  51. package/dist/intake/types.d.ts.map +1 -1
  52. package/dist/intake/verify-command-validator.d.ts +6 -0
  53. package/dist/intake/verify-command-validator.d.ts.map +1 -0
  54. package/dist/intake/verify-command-validator.js +47 -0
  55. package/dist/intake/verify-command-validator.js.map +1 -0
  56. package/dist/lifecycle/findings-parser.d.ts +9 -0
  57. package/dist/lifecycle/findings-parser.d.ts.map +1 -0
  58. package/dist/lifecycle/findings-parser.js +47 -0
  59. package/dist/lifecycle/findings-parser.js.map +1 -0
  60. package/dist/lifecycle/handlers/annotator.d.ts +35 -0
  61. package/dist/lifecycle/handlers/annotator.d.ts.map +1 -0
  62. package/dist/lifecycle/handlers/annotator.js +38 -0
  63. package/dist/lifecycle/handlers/annotator.js.map +1 -0
  64. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  65. package/dist/lifecycle/handlers/baseline-handlers.js +34 -37
  66. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  67. package/dist/lifecycle/handlers/files-written-cross-check.d.ts +6 -0
  68. package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +1 -1
  69. package/dist/lifecycle/handlers/files-written-cross-check.js +7 -1
  70. package/dist/lifecycle/handlers/files-written-cross-check.js.map +1 -1
  71. package/dist/lifecycle/handlers/git-commit-handler.d.ts +1 -16
  72. package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
  73. package/dist/lifecycle/handlers/git-commit-handler.js +149 -42
  74. package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
  75. package/dist/lifecycle/handlers/read-route-implementer.d.ts +41 -0
  76. package/dist/lifecycle/handlers/read-route-implementer.d.ts.map +1 -0
  77. package/dist/lifecycle/handlers/read-route-implementer.js +84 -0
  78. package/dist/lifecycle/handlers/read-route-implementer.js.map +1 -0
  79. package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -1
  80. package/dist/lifecycle/handlers/review-handler.js +98 -70
  81. package/dist/lifecycle/handlers/review-handler.js.map +1 -1
  82. package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -1
  83. package/dist/lifecycle/handlers/rework-handler.js +64 -25
  84. package/dist/lifecycle/handlers/rework-handler.js.map +1 -1
  85. package/dist/lifecycle/handlers/task-executor.d.ts +1 -3
  86. package/dist/lifecycle/handlers/task-executor.d.ts.map +1 -1
  87. package/dist/lifecycle/handlers/task-executor.js +88 -8
  88. package/dist/lifecycle/handlers/task-executor.js.map +1 -1
  89. package/dist/lifecycle/lifecycle-context.d.ts +13 -0
  90. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  91. package/dist/lifecycle/merge-stage-stats.d.ts +3 -4
  92. package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -1
  93. package/dist/lifecycle/merge-stage-stats.js +2 -2
  94. package/dist/lifecycle/merge-stage-stats.js.map +1 -1
  95. package/dist/lifecycle/parallel-criteria-routes.d.ts +20 -6
  96. package/dist/lifecycle/parallel-criteria-routes.d.ts.map +1 -1
  97. package/dist/lifecycle/parallel-criteria-routes.js +36 -142
  98. package/dist/lifecycle/parallel-criteria-routes.js.map +1 -1
  99. package/dist/lifecycle/read-only-subtype-spec.d.ts +18 -0
  100. package/dist/lifecycle/read-only-subtype-spec.d.ts.map +1 -0
  101. package/dist/lifecycle/read-only-subtype-spec.js +2 -0
  102. package/dist/lifecycle/read-only-subtype-spec.js.map +1 -0
  103. package/dist/lifecycle/stage-labels.d.ts +22 -0
  104. package/dist/lifecycle/stage-labels.d.ts.map +1 -0
  105. package/dist/lifecycle/stage-labels.js +42 -0
  106. package/dist/lifecycle/stage-labels.js.map +1 -0
  107. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  108. package/dist/lifecycle/stage-plan-builder.js +25 -54
  109. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  110. package/dist/lifecycle/stage-plan-types.d.ts +0 -23
  111. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  112. package/dist/lifecycle/stage-progression.js +10 -10
  113. package/dist/lifecycle/stage-progression.js.map +1 -1
  114. package/dist/lifecycle/stage-stats.d.ts +3 -3
  115. package/dist/lifecycle/stage-stats.d.ts.map +1 -1
  116. package/dist/lifecycle/stage-stats.js +6 -9
  117. package/dist/lifecycle/stage-stats.js.map +1 -1
  118. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  119. package/dist/lifecycle/task-executor.js +20 -17
  120. package/dist/lifecycle/task-executor.js.map +1 -1
  121. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  122. package/dist/lifecycle/task-runner.js +83 -72
  123. package/dist/lifecycle/task-runner.js.map +1 -1
  124. package/dist/lifecycle/tool-config-types.d.ts +1 -2
  125. package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
  126. package/dist/lifecycle/warm-followup.d.ts +3 -0
  127. package/dist/lifecycle/warm-followup.d.ts.map +1 -0
  128. package/dist/lifecycle/warm-followup.js +16 -0
  129. package/dist/lifecycle/warm-followup.js.map +1 -0
  130. package/dist/lifecycle/worker-output-contract.d.ts +26 -0
  131. package/dist/lifecycle/worker-output-contract.d.ts.map +1 -0
  132. package/dist/lifecycle/worker-output-contract.js +73 -0
  133. package/dist/lifecycle/worker-output-contract.js.map +1 -0
  134. package/dist/providers/assemble-run-result.d.ts +17 -0
  135. package/dist/providers/assemble-run-result.d.ts.map +1 -0
  136. package/dist/providers/assemble-run-result.js +76 -0
  137. package/dist/providers/assemble-run-result.js.map +1 -0
  138. package/dist/providers/brief-preamble.d.ts +4 -0
  139. package/dist/providers/brief-preamble.d.ts.map +1 -0
  140. package/dist/providers/brief-preamble.js +39 -0
  141. package/dist/providers/brief-preamble.js.map +1 -0
  142. package/dist/providers/claude-session.d.ts +23 -0
  143. package/dist/providers/claude-session.d.ts.map +1 -0
  144. package/dist/providers/claude-session.js +185 -0
  145. package/dist/providers/claude-session.js.map +1 -0
  146. package/dist/providers/claude.d.ts +4 -0
  147. package/dist/providers/claude.d.ts.map +1 -0
  148. package/dist/providers/claude.js +35 -0
  149. package/dist/providers/claude.js.map +1 -0
  150. package/dist/providers/codex-cli-event.d.ts +44 -0
  151. package/dist/providers/codex-cli-event.d.ts.map +1 -0
  152. package/dist/providers/codex-cli-event.js +43 -0
  153. package/dist/providers/codex-cli-event.js.map +1 -0
  154. package/dist/providers/codex-cli-launch.d.ts +26 -0
  155. package/dist/providers/codex-cli-launch.d.ts.map +1 -0
  156. package/dist/providers/codex-cli-launch.js +47 -0
  157. package/dist/providers/codex-cli-launch.js.map +1 -0
  158. package/dist/providers/codex-cli-session.d.ts +55 -0
  159. package/dist/providers/codex-cli-session.d.ts.map +1 -0
  160. package/dist/providers/codex-cli-session.js +417 -0
  161. package/dist/providers/codex-cli-session.js.map +1 -0
  162. package/dist/providers/codex.d.ts +4 -0
  163. package/dist/providers/codex.d.ts.map +1 -0
  164. package/dist/providers/codex.js +28 -0
  165. package/dist/providers/codex.js.map +1 -0
  166. package/dist/providers/index.d.ts +0 -12
  167. package/dist/providers/index.d.ts.map +1 -1
  168. package/dist/providers/index.js +1 -13
  169. package/dist/providers/index.js.map +1 -1
  170. package/dist/providers/normalize-claude.d.ts +10 -0
  171. package/dist/providers/normalize-claude.d.ts.map +1 -0
  172. package/dist/providers/normalize-claude.js +89 -0
  173. package/dist/providers/normalize-claude.js.map +1 -0
  174. package/dist/providers/provider-factory.d.ts +1 -9
  175. package/dist/providers/provider-factory.d.ts.map +1 -1
  176. package/dist/providers/provider-factory.js +35 -167
  177. package/dist/providers/provider-factory.js.map +1 -1
  178. package/dist/providers/runner-adapter.d.ts +5 -16
  179. package/dist/providers/runner-adapter.d.ts.map +1 -1
  180. package/dist/providers/runner-adapter.js +6 -0
  181. package/dist/providers/runner-adapter.js.map +1 -1
  182. package/dist/providers/runner-types.d.ts +21 -3
  183. package/dist/providers/runner-types.d.ts.map +1 -1
  184. package/dist/reporting/report-parser-slots/research-report.d.ts +21 -17
  185. package/dist/reporting/report-parser-slots/research-report.d.ts.map +1 -1
  186. package/dist/reporting/report-parser-slots/research-report.js +28 -67
  187. package/dist/reporting/report-parser-slots/research-report.js.map +1 -1
  188. package/dist/review/annotator-engine.d.ts +2 -2
  189. package/dist/review/annotator-engine.d.ts.map +1 -1
  190. package/dist/review/annotator-engine.js +16 -20
  191. package/dist/review/annotator-engine.js.map +1 -1
  192. package/dist/review/annotator-prompt-builder.d.ts +1 -1
  193. package/dist/review/annotator-prompt-builder.d.ts.map +1 -1
  194. package/dist/review/default-engines.d.ts.map +1 -1
  195. package/dist/review/default-engines.js +2 -4
  196. package/dist/review/default-engines.js.map +1 -1
  197. package/dist/review/review-types.d.ts +0 -1
  198. package/dist/review/review-types.d.ts.map +1 -1
  199. package/dist/review/reviewer-engine.d.ts +5 -40
  200. package/dist/review/reviewer-engine.d.ts.map +1 -1
  201. package/dist/review/reviewer-engine.js +19 -49
  202. package/dist/review/reviewer-engine.js.map +1 -1
  203. package/dist/review/reviewer-output-parser.d.ts +1 -6
  204. package/dist/review/reviewer-output-parser.d.ts.map +1 -1
  205. package/dist/review/reviewer-output-parser.js +0 -26
  206. package/dist/review/reviewer-output-parser.js.map +1 -1
  207. package/dist/review/reviewer-prompt-builder.d.ts +1 -6
  208. package/dist/review/reviewer-prompt-builder.d.ts.map +1 -1
  209. package/dist/review/reviewer-prompt-builder.js +0 -6
  210. package/dist/review/reviewer-prompt-builder.js.map +1 -1
  211. package/dist/review/templates/quality-review.d.ts.map +1 -1
  212. package/dist/review/templates/quality-review.js +28 -0
  213. package/dist/review/templates/quality-review.js.map +1 -1
  214. package/dist/review/templates/rework.d.ts.map +1 -1
  215. package/dist/review/templates/rework.js +15 -9
  216. package/dist/review/templates/rework.js.map +1 -1
  217. package/dist/review/templates/shared.d.ts +9 -0
  218. package/dist/review/templates/shared.d.ts.map +1 -1
  219. package/dist/stores/context-block-project-cap.d.ts +1 -1
  220. package/dist/stores/context-block-project-cap.d.ts.map +1 -1
  221. package/dist/stores/context-block-project-cap.js +17 -5
  222. package/dist/stores/context-block-project-cap.js.map +1 -1
  223. package/dist/stores/file-backed-context-block-store.d.ts +7 -0
  224. package/dist/stores/file-backed-context-block-store.d.ts.map +1 -1
  225. package/dist/stores/file-backed-context-block-store.js +8 -0
  226. package/dist/stores/file-backed-context-block-store.js.map +1 -1
  227. package/dist/tool-surface/discover.d.ts +1 -1
  228. package/dist/tool-surface/discover.d.ts.map +1 -1
  229. package/dist/tool-surface/discover.js +0 -1
  230. package/dist/tool-surface/discover.js.map +1 -1
  231. package/dist/tool-surface/openapi-generator.d.ts.map +1 -1
  232. package/dist/tool-surface/openapi-generator.js +0 -2
  233. package/dist/tool-surface/openapi-generator.js.map +1 -1
  234. package/dist/tool-surface/register-all-tools.d.ts.map +1 -1
  235. package/dist/tool-surface/register-all-tools.js +1 -3
  236. package/dist/tool-surface/register-all-tools.js.map +1 -1
  237. package/dist/tools/audit/schema.d.ts +4 -4
  238. package/dist/tools/audit/schema.d.ts.map +1 -1
  239. package/dist/tools/audit/schema.js +4 -4
  240. package/dist/tools/audit/schema.js.map +1 -1
  241. package/dist/tools/audit/skill-audit-criteria.d.ts +9 -0
  242. package/dist/tools/audit/skill-audit-criteria.d.ts.map +1 -0
  243. package/dist/tools/audit/skill-audit-criteria.js +51 -0
  244. package/dist/tools/audit/skill-audit-criteria.js.map +1 -0
  245. package/dist/tools/audit/spec-audit-criteria.d.ts +9 -0
  246. package/dist/tools/audit/spec-audit-criteria.d.ts.map +1 -0
  247. package/dist/tools/audit/spec-audit-criteria.js +52 -0
  248. package/dist/tools/audit/spec-audit-criteria.js.map +1 -0
  249. package/dist/tools/audit/subtypes.d.ts +4 -0
  250. package/dist/tools/audit/subtypes.d.ts.map +1 -0
  251. package/dist/tools/audit/subtypes.js +67 -0
  252. package/dist/tools/audit/subtypes.js.map +1 -0
  253. package/dist/tools/audit/tool-config.d.ts +4 -4
  254. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  255. package/dist/tools/audit/tool-config.js +31 -29
  256. package/dist/tools/audit/tool-config.js.map +1 -1
  257. package/dist/tools/debug/schema.d.ts +3 -0
  258. package/dist/tools/debug/schema.d.ts.map +1 -1
  259. package/dist/tools/debug/schema.js +1 -0
  260. package/dist/tools/debug/schema.js.map +1 -1
  261. package/dist/tools/debug/subtypes.d.ts +4 -0
  262. package/dist/tools/debug/subtypes.d.ts.map +1 -0
  263. package/dist/tools/debug/subtypes.js +25 -0
  264. package/dist/tools/debug/subtypes.js.map +1 -0
  265. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  266. package/dist/tools/delegate/tool-config.js +0 -1
  267. package/dist/tools/delegate/tool-config.js.map +1 -1
  268. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  269. package/dist/tools/execute-plan/tool-config.js +5 -2
  270. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  271. package/dist/tools/index.d.ts +0 -1
  272. package/dist/tools/index.d.ts.map +1 -1
  273. package/dist/tools/index.js +0 -1
  274. package/dist/tools/index.js.map +1 -1
  275. package/dist/tools/investigate/schema.d.ts +3 -0
  276. package/dist/tools/investigate/schema.d.ts.map +1 -1
  277. package/dist/tools/investigate/schema.js +1 -0
  278. package/dist/tools/investigate/schema.js.map +1 -1
  279. package/dist/tools/investigate/subtypes.d.ts +4 -0
  280. package/dist/tools/investigate/subtypes.d.ts.map +1 -0
  281. package/dist/tools/investigate/subtypes.js +25 -0
  282. package/dist/tools/investigate/subtypes.js.map +1 -0
  283. package/dist/tools/research/implementer-criteria.d.ts +12 -5
  284. package/dist/tools/research/implementer-criteria.d.ts.map +1 -1
  285. package/dist/tools/research/implementer-criteria.js +40 -9
  286. package/dist/tools/research/implementer-criteria.js.map +1 -1
  287. package/dist/tools/research/schema.d.ts +3 -0
  288. package/dist/tools/research/schema.d.ts.map +1 -1
  289. package/dist/tools/research/schema.js +2 -1
  290. package/dist/tools/research/schema.js.map +1 -1
  291. package/dist/tools/research/subtypes.d.ts +4 -0
  292. package/dist/tools/research/subtypes.d.ts.map +1 -0
  293. package/dist/tools/research/subtypes.js +24 -0
  294. package/dist/tools/research/subtypes.js.map +1 -0
  295. package/dist/tools/research/tool-config.js +2 -2
  296. package/dist/tools/research/tool-config.js.map +1 -1
  297. package/dist/tools/review/schema.d.ts +3 -0
  298. package/dist/tools/review/schema.d.ts.map +1 -1
  299. package/dist/tools/review/schema.js +1 -0
  300. package/dist/tools/review/schema.js.map +1 -1
  301. package/dist/tools/review/subtypes.d.ts +4 -0
  302. package/dist/tools/review/subtypes.d.ts.map +1 -0
  303. package/dist/tools/review/subtypes.js +26 -0
  304. package/dist/tools/review/subtypes.js.map +1 -0
  305. package/dist/types/config.d.ts +14 -28
  306. package/dist/types/config.d.ts.map +1 -1
  307. package/dist/types/enums.d.ts +3 -8
  308. package/dist/types/enums.d.ts.map +1 -1
  309. package/dist/types/enums.js +3 -3
  310. package/dist/types/enums.js.map +1 -1
  311. package/dist/types/run-result.d.ts +57 -22
  312. package/dist/types/run-result.d.ts.map +1 -1
  313. package/dist/types/stage-stats.d.ts +10 -29
  314. package/dist/types/stage-stats.d.ts.map +1 -1
  315. package/dist/types/task-spec.d.ts +17 -15
  316. package/dist/types/task-spec.d.ts.map +1 -1
  317. package/dist/types.d.ts +1 -1
  318. package/dist/types.d.ts.map +1 -1
  319. package/package.json +9 -3
  320. package/dist/identity/main-model-resolver.d.ts +0 -14
  321. package/dist/identity/main-model-resolver.d.ts.map +0 -1
  322. package/dist/identity/main-model-resolver.js +0 -83
  323. package/dist/identity/main-model-resolver.js.map +0 -1
  324. package/dist/lifecycle/handlers/annotate-completion-handler.d.ts +0 -9
  325. package/dist/lifecycle/handlers/annotate-completion-handler.d.ts.map +0 -1
  326. package/dist/lifecycle/handlers/annotate-completion-handler.js +0 -171
  327. package/dist/lifecycle/handlers/annotate-completion-handler.js.map +0 -1
  328. package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts +0 -3
  329. package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts.map +0 -1
  330. package/dist/lifecycle/handlers/annotate-criteria-handler.js +0 -67
  331. package/dist/lifecycle/handlers/annotate-criteria-handler.js.map +0 -1
  332. package/dist/lifecycle/handlers/execution-context-builder.d.ts +0 -5
  333. package/dist/lifecycle/handlers/execution-context-builder.d.ts.map +0 -1
  334. package/dist/lifecycle/handlers/execution-context-builder.js +0 -17
  335. package/dist/lifecycle/handlers/execution-context-builder.js.map +0 -1
  336. package/dist/lifecycle/parallel-criteria-dispatcher.d.ts +0 -62
  337. package/dist/lifecycle/parallel-criteria-dispatcher.d.ts.map +0 -1
  338. package/dist/lifecycle/parallel-criteria-dispatcher.js +0 -328
  339. package/dist/lifecycle/parallel-criteria-dispatcher.js.map +0 -1
  340. package/dist/providers/anthropic-messages-adapter.d.ts +0 -26
  341. package/dist/providers/anthropic-messages-adapter.d.ts.map +0 -1
  342. package/dist/providers/anthropic-messages-adapter.js +0 -127
  343. package/dist/providers/anthropic-messages-adapter.js.map +0 -1
  344. package/dist/providers/base/research-tools.d.ts +0 -47
  345. package/dist/providers/base/research-tools.d.ts.map +0 -1
  346. package/dist/providers/base/research-tools.js +0 -67
  347. package/dist/providers/base/research-tools.js.map +0 -1
  348. package/dist/providers/base/result-builders.d.ts +0 -82
  349. package/dist/providers/base/result-builders.d.ts.map +0 -1
  350. package/dist/providers/base/result-builders.js +0 -112
  351. package/dist/providers/base/result-builders.js.map +0 -1
  352. package/dist/providers/base/time-check.d.ts +0 -9
  353. package/dist/providers/base/time-check.d.ts.map +0 -1
  354. package/dist/providers/base/time-check.js +0 -18
  355. package/dist/providers/base/time-check.js.map +0 -1
  356. package/dist/providers/base/types.d.ts +0 -53
  357. package/dist/providers/base/types.d.ts.map +0 -1
  358. package/dist/providers/base/types.js +0 -2
  359. package/dist/providers/base/types.js.map +0 -1
  360. package/dist/providers/base/usage-accumulator.d.ts +0 -9
  361. package/dist/providers/base/usage-accumulator.d.ts.map +0 -1
  362. package/dist/providers/base/usage-accumulator.js +0 -20
  363. package/dist/providers/base/usage-accumulator.js.map +0 -1
  364. package/dist/providers/call-cache.d.ts +0 -16
  365. package/dist/providers/call-cache.d.ts.map +0 -1
  366. package/dist/providers/call-cache.js +0 -28
  367. package/dist/providers/call-cache.js.map +0 -1
  368. package/dist/providers/file-tracker.d.ts +0 -80
  369. package/dist/providers/file-tracker.d.ts.map +0 -1
  370. package/dist/providers/file-tracker.js +0 -125
  371. package/dist/providers/file-tracker.js.map +0 -1
  372. package/dist/providers/injection-type.d.ts +0 -22
  373. package/dist/providers/injection-type.d.ts.map +0 -1
  374. package/dist/providers/injection-type.js +0 -34
  375. package/dist/providers/injection-type.js.map +0 -1
  376. package/dist/providers/make-runner-shell.d.ts +0 -4
  377. package/dist/providers/make-runner-shell.d.ts.map +0 -1
  378. package/dist/providers/make-runner-shell.js +0 -70
  379. package/dist/providers/make-runner-shell.js.map +0 -1
  380. package/dist/providers/openai-chat-adapter.d.ts +0 -15
  381. package/dist/providers/openai-chat-adapter.d.ts.map +0 -1
  382. package/dist/providers/openai-chat-adapter.js +0 -86
  383. package/dist/providers/openai-chat-adapter.js.map +0 -1
  384. package/dist/providers/openai-responses-adapter.d.ts +0 -15
  385. package/dist/providers/openai-responses-adapter.d.ts.map +0 -1
  386. package/dist/providers/openai-responses-adapter.js +0 -137
  387. package/dist/providers/openai-responses-adapter.js.map +0 -1
  388. package/dist/providers/openai-usage-interceptor.d.ts +0 -25
  389. package/dist/providers/openai-usage-interceptor.d.ts.map +0 -1
  390. package/dist/providers/openai-usage-interceptor.js +0 -121
  391. package/dist/providers/openai-usage-interceptor.js.map +0 -1
  392. package/dist/providers/prevention.d.ts +0 -44
  393. package/dist/providers/prevention.d.ts.map +0 -1
  394. package/dist/providers/prevention.js +0 -108
  395. package/dist/providers/prevention.js.map +0 -1
  396. package/dist/providers/runner-shell-types.d.ts +0 -91
  397. package/dist/providers/runner-shell-types.d.ts.map +0 -1
  398. package/dist/providers/runner-shell-types.js +0 -2
  399. package/dist/providers/runner-shell-types.js.map +0 -1
  400. package/dist/providers/runner-shell.d.ts +0 -67
  401. package/dist/providers/runner-shell.d.ts.map +0 -1
  402. package/dist/providers/runner-shell.js +0 -518
  403. package/dist/providers/runner-shell.js.map +0 -1
  404. package/dist/providers/scratchpad-salvager.d.ts +0 -19
  405. package/dist/providers/scratchpad-salvager.d.ts.map +0 -1
  406. package/dist/providers/scratchpad-salvager.js +0 -44
  407. package/dist/providers/scratchpad-salvager.js.map +0 -1
  408. package/dist/providers/supervision.d.ts +0 -108
  409. package/dist/providers/supervision.d.ts.map +0 -1
  410. package/dist/providers/supervision.js +0 -272
  411. package/dist/providers/supervision.js.map +0 -1
  412. package/dist/providers/text-scratchpad.d.ts +0 -28
  413. package/dist/providers/text-scratchpad.d.ts.map +0 -1
  414. package/dist/providers/text-scratchpad.js +0 -49
  415. package/dist/providers/text-scratchpad.js.map +0 -1
  416. package/dist/providers/tool-definitions.d.ts +0 -6
  417. package/dist/providers/tool-definitions.d.ts.map +0 -1
  418. package/dist/providers/tool-definitions.js +0 -236
  419. package/dist/providers/tool-definitions.js.map +0 -1
  420. package/dist/providers/tool-implementations.d.ts +0 -38
  421. package/dist/providers/tool-implementations.d.ts.map +0 -1
  422. package/dist/providers/tool-implementations.js +0 -254
  423. package/dist/providers/tool-implementations.js.map +0 -1
  424. package/dist/providers/tool-tracker.d.ts +0 -14
  425. package/dist/providers/tool-tracker.d.ts.map +0 -1
  426. package/dist/providers/tool-tracker.js +0 -13
  427. package/dist/providers/tool-tracker.js.map +0 -1
  428. package/dist/reporting/headline-templates/verify.d.ts +0 -3
  429. package/dist/reporting/headline-templates/verify.d.ts.map +0 -1
  430. package/dist/reporting/headline-templates/verify.js +0 -29
  431. package/dist/reporting/headline-templates/verify.js.map +0 -1
  432. package/dist/reporting/report-parser-slots/verify-report.d.ts +0 -27
  433. package/dist/reporting/report-parser-slots/verify-report.d.ts.map +0 -1
  434. package/dist/reporting/report-parser-slots/verify-report.js +0 -51
  435. package/dist/reporting/report-parser-slots/verify-report.js.map +0 -1
  436. package/dist/review/templates/annotator-verify.d.ts +0 -3
  437. package/dist/review/templates/annotator-verify.d.ts.map +0 -1
  438. package/dist/review/templates/annotator-verify.js +0 -21
  439. package/dist/review/templates/annotator-verify.js.map +0 -1
  440. package/dist/review/templates/quality-review-verify.d.ts +0 -3
  441. package/dist/review/templates/quality-review-verify.d.ts.map +0 -1
  442. package/dist/review/templates/quality-review-verify.js +0 -10
  443. package/dist/review/templates/quality-review-verify.js.map +0 -1
  444. package/dist/tools/verify/implementer-criteria.d.ts +0 -61
  445. package/dist/tools/verify/implementer-criteria.d.ts.map +0 -1
  446. package/dist/tools/verify/implementer-criteria.js +0 -125
  447. package/dist/tools/verify/implementer-criteria.js.map +0 -1
  448. package/dist/tools/verify/schema.d.ts +0 -56
  449. package/dist/tools/verify/schema.d.ts.map +0 -1
  450. package/dist/tools/verify/schema.js +0 -16
  451. package/dist/tools/verify/schema.js.map +0 -1
  452. package/dist/tools/verify/tool-config.d.ts +0 -14
  453. package/dist/tools/verify/tool-config.d.ts.map +0 -1
  454. package/dist/tools/verify/tool-config.js +0 -146
  455. package/dist/tools/verify/tool-config.js.map +0 -1
@@ -1,518 +0,0 @@
1
- import { resolveRateCard, priceTokens } from '../bounded-execution/cost-compute.js';
2
- const DEFAULT_CAPABILITIES = {
3
- cache_control: false, thinking: false, vision: false, tool_use: true, streaming: false, other: [],
4
- };
5
- // Tool-name sets are centralized in `tool-name-sets.ts` so the
6
- // runner-shell + running-headline-sink can't drift. Note: this
7
- // runner's READ list is intentionally narrower than the central
8
- // READ_TOOL_NAMES — runner-shell tracks filesRead by extractable
9
- // path, and grep/glob/listFiles don't have a single "file" arg. The
10
- // central set is for the polling headline's read activity counter,
11
- // which counts every read-class tool call regardless of args.
12
- import { WRITE_TOOL_NAMES, SHELL_TOOL_NAMES } from './tool-name-sets.js';
13
- import { filterValidWritePath } from './file-tracker.js';
14
- const READ_TOOL_NAMES = new Set(['readFile', 'read_file']);
15
- function extractPathFromToolInput(input) {
16
- if (typeof input !== 'object' || input === null)
17
- return undefined;
18
- const obj = input;
19
- for (const key of ['path', 'file_path', 'filePath']) {
20
- const v = obj[key];
21
- if (typeof v === 'string')
22
- return v;
23
- }
24
- return undefined;
25
- }
26
- /**
27
- * Heuristic: does the given shell command write to the filesystem?
28
- *
29
- * Gap 11 fix (4.0.3+): the polling headline tracks file writes by tool
30
- * name (writeFile/write_file/edit_file). Workers that bypass these and
31
- * write via run_shell (cat >, sed -i, tee, etc.) used to show "0 write"
32
- * for the entire run despite actively producing artifacts. This
33
- * heuristic looks for common write patterns in the command string;
34
- * false positives are acceptable (operator gets a slightly noisy count)
35
- * but false negatives are not (the headline lies about progress).
36
- *
37
- * Patterns detected:
38
- * - Output redirects: `> file`, `>> file`, `&> file`, `>| file`
39
- * - Heredoc to file: `<<EOF > file`, `cat <<...> file`
40
- * - `sed -i` / `sed -i ''` (in-place edit)
41
- * - `awk -i inplace` / `gawk -i inplace`
42
- * - `tee file`, `tee -a file`
43
- * - `cp/mv/touch/install` (file creation/moves)
44
- * - `mkdir`, `rm`, `chmod`, `chown` (filesystem mutation)
45
- * - `git checkout/reset/restore/pull/merge` (modifies files)
46
- * - `python/node -c '... open(... "w") ...'` is NOT detected — too
47
- * ambiguous; keeps false-positive rate low.
48
- */
49
- const SHELL_WRITE_PATTERNS = [
50
- // > file or >> file. The (?<![\d&|>]) lookbehind excludes file-descriptor
51
- // redirects (2>file, 1>file, 2>>file) which only redirect stderr/stdout —
52
- // they do NOT create file artifacts in the way "cat > file" or "tee" does.
53
- // Without this, every command using "2>/dev/null" gets counted as a write,
54
- // inflating the headline shellWrites counter with non-writes.
55
- /(?<![\d&|>])>>?\s*[^&|>\s]/,
56
- /&>\s*[^&|>\s]/, // &> file (combined redirect)
57
- />\|\s*[^&|>\s]/, // >| file (force overwrite)
58
- /\bsed\s+(?:-[a-z]*i[a-z]*\b|--in-place\b)/i, // sed -i / sed --in-place
59
- /\b(?:awk|gawk|nawk)\s+-i\s+inplace\b/i,
60
- /\btee\b/,
61
- /\b(?:cp|mv|touch|install|ln)\s+/,
62
- /\bmkdir\s+/,
63
- /\brm\s+/,
64
- /\bchmod\s+/,
65
- /\bchown\s+/,
66
- /\bgit\s+(?:checkout|reset|restore|pull|merge|clean|stash|cherry-pick|rebase|apply)\b/,
67
- /\bnpm\s+(?:install|i|ci|uninstall|update|run\s+build|run\s+test)\b/,
68
- /\bpnpm\s+(?:install|add|remove|update|run)\b/,
69
- /\byarn\s+(?:install|add|remove|upgrade)\b/,
70
- ];
71
- export function shellCommandWritesFs(command) {
72
- if (!command || command.length === 0)
73
- return false;
74
- for (const pattern of SHELL_WRITE_PATTERNS) {
75
- if (pattern.test(command))
76
- return true;
77
- }
78
- return false;
79
- }
80
- function extractShellCommand(input) {
81
- if (typeof input !== 'object' || input === null)
82
- return undefined;
83
- const obj = input;
84
- for (const key of ['command', 'cmd', 'shell']) {
85
- const v = obj[key];
86
- if (typeof v === 'string')
87
- return v;
88
- if (Array.isArray(v))
89
- return v.join(' ');
90
- }
91
- return undefined;
92
- }
93
- export class RunnerShell {
94
- adapter;
95
- defaultModel;
96
- constructor(adapter,
97
- /** Default model id used for cost computation when input.model is absent.
98
- * Reviewer/annotator engines call shell.run() without setting input.model,
99
- * so without this default every reviewer-side stage would record costUSD=null. */
100
- defaultModel) {
101
- this.adapter = adapter;
102
- this.defaultModel = defaultModel;
103
- }
104
- async run(input) {
105
- const startMs = Date.now();
106
- const modelForCost = input.model ?? this.defaultModel;
107
- const ctx = { cwd: input.cwd, callCache: new Map() };
108
- const usage = { inputTokens: 0, outputTokens: 0, cachedReadTokens: 0, cachedNonReadTokens: 0 };
109
- const allToolCalls = [];
110
- // A4b.0 (4.2.2+): dedupe filesRead/filesWritten by unique path. Same
111
- // path written N times within a task = 1 entry. Tool-call count (the
112
- // raw activity counter via `allToolCalls`) is intentionally NOT
113
- // deduped — every invocation is billable. Spec reviewers reason
114
- // about file CHANGES, not tool ACTIVITY, so the per-path dedupe is
115
- // what they want to see.
116
- const filesReadSet = new Set();
117
- const filesWrittenSet = new Set();
118
- // A4b.1 (4.2.2+): entries the path-validity filter rejected — shell
119
- // heredoc commands, absolute paths, paths with shell metacharacters.
120
- // Kept separately so the lifecycle layer can drain them into its
121
- // diagnostics field for the `writes_unverifiable` daemon-log message
122
- // (see A4b.2). NOT included in the public filesWritten array — those
123
- // entries are not real, verifiable disk artifacts.
124
- const filesWrittenRejectedSet = new Set();
125
- let turns = 0;
126
- const history = [];
127
- let finalText = '';
128
- let stoppedByAdapter = false;
129
- // Common fields stamped on every emitted bus event so VerboseLogChannel
130
- // surfaces enough context for an operator to see which run a line belongs
131
- // to without grepping back to the originating request.
132
- const baseEventFields = {
133
- ...(input.batchId !== undefined && { batchId: input.batchId }),
134
- ...(input.taskIndex !== undefined && { taskIndex: input.taskIndex }),
135
- ...(input.tier !== undefined && { tier: input.tier }),
136
- ...(input.model !== undefined && { model: input.model }),
137
- ...(input.stageLabel !== undefined && { stageLabel: input.stageLabel }),
138
- providerType: this.adapter.providerType,
139
- };
140
- for (let turn = 0; turn < input.maxTurns; turn++) {
141
- if (input.abortSignal?.aborted) {
142
- return {
143
- workerStatus: 'blocked',
144
- finalAssistantText: '',
145
- toolCalls: allToolCalls,
146
- usage,
147
- errorCode: 'aborted',
148
- turns,
149
- durationMs: Date.now() - startMs,
150
- filesRead: [...filesReadSet],
151
- filesWritten: [...filesWrittenSet],
152
- filesWrittenRejected: [...filesWrittenRejectedSet],
153
- costUSD: computeCost(modelForCost, usage),
154
- };
155
- }
156
- // Three-event-per-turn lifecycle so verbose stderr surfaces every
157
- // state change. `runner_turn_started` fires before the LLM call so
158
- // operators see "now waiting on the model" in real time. After the
159
- // adapter returns, `runner_response_received` carries the raw
160
- // provider response shape (stop_reason + content-block tally). After
161
- // local tool execution, `runner_turn_completed` carries per-tool
162
- // counts (read vs write etc.) so operators can see what work the
163
- // model is doing without grepping the JSONL log.
164
- input.bus?.emit({
165
- event: 'runner_turn_started',
166
- ts: new Date().toISOString(),
167
- ...baseEventFields,
168
- turnIndex: turn,
169
- });
170
- turns++;
171
- const turnResult = await this.adapter.turn({
172
- systemPrompt: input.systemPrompt,
173
- userMessage: input.userMessage,
174
- priorTurns: history,
175
- toolDefinitions: input.toolDefinitions,
176
- capabilities: input.capabilities ?? DEFAULT_CAPABILITIES,
177
- abortSignal: input.abortSignal,
178
- deadlineMs: input.deadlineMs,
179
- ...(input.cacheControl && { cacheControl: input.cacheControl }),
180
- });
181
- usage.inputTokens += turnResult.usage.inputTokens;
182
- usage.outputTokens += turnResult.usage.outputTokens;
183
- usage.cachedReadTokens += turnResult.usage.cachedReadTokens;
184
- usage.cachedNonReadTokens += turnResult.usage.cachedNonReadTokens;
185
- finalText = turnResult.assistantText;
186
- // Diagnostic visibility (4.2.3+): include the assistant text on
187
- // `runner_response_received` when verbose logging is meaningful.
188
- // Pre-fix, only `assistantTextLen` was emitted, which made it
189
- // impossible to tell from the log alone WHY a spec/quality review
190
- // rejected (the reviewer's rejection text lived only in the live
191
- // worker output, never in any persistent log). Now: full text is
192
- // present on every turn, capped at 16 KB so a runaway implementer
193
- // narrative doesn't bloat the JSONL log. 16 KB is comfortably
194
- // larger than every reviewer/annotator response observed in
195
- // production (typical ~500 bytes; 99th percentile <8 KB).
196
- const ASSISTANT_TEXT_LOG_CAP = 16 * 1024;
197
- const txt = turnResult.assistantText ?? '';
198
- const truncated = txt.length > ASSISTANT_TEXT_LOG_CAP;
199
- const assistantText = truncated ? txt.slice(0, ASSISTANT_TEXT_LOG_CAP) : txt;
200
- input.bus?.emit({
201
- event: 'runner_response_received',
202
- ts: new Date().toISOString(),
203
- ...baseEventFields,
204
- turnIndex: turn,
205
- finishReason: turnResult.finishReason,
206
- assistantTextLen: turnResult.assistantText.length,
207
- ...(assistantText.length > 0 && { assistantText }),
208
- ...(truncated && { assistantTextTruncated: true }),
209
- toolCallCount: turnResult.toolCalls.length,
210
- ...(turnResult.responseShape?.stopReason !== undefined && { stopReason: turnResult.responseShape.stopReason }),
211
- ...(turnResult.responseShape?.contentBlocks !== undefined && { contentBlocks: turnResult.responseShape.contentBlocks }),
212
- usage: turnResult.usage,
213
- });
214
- const turnRecord = {
215
- assistantText: turnResult.assistantText,
216
- toolCalls: [],
217
- };
218
- const willTerminate = turnResult.toolCalls.length === 0;
219
- if (willTerminate) {
220
- history.push(turnRecord);
221
- stoppedByAdapter = true;
222
- }
223
- else {
224
- for (const call of turnResult.toolCalls) {
225
- const def = input.toolDefinitions.find(d => d.name === call.name);
226
- let result;
227
- if (!def) {
228
- result = { error: `unknown tool: ${call.name}` };
229
- }
230
- else {
231
- try {
232
- result = await def.execute(call.input, ctx);
233
- }
234
- catch (err) {
235
- result = { error: `tool execution failed: ${err instanceof Error ? err.message : String(err)}` };
236
- }
237
- }
238
- const enriched = { name: call.name, input: call.input, result };
239
- allToolCalls.push(enriched);
240
- turnRecord.toolCalls.push(enriched);
241
- if (input.wallClockGuard) {
242
- try {
243
- input.wallClockGuard.checkOrThrow();
244
- }
245
- catch (err) {
246
- process.stderr.write(`[runner-shell] wall-clock guard fired: ${err instanceof Error ? err.message : String(err)}\n`);
247
- throw err;
248
- }
249
- }
250
- const succeeded = !(typeof result === 'object' && result !== null && 'error' in result);
251
- if (!succeeded) {
252
- const errMsg = result.error ?? '(no error message)';
253
- const inputPreview = JSON.stringify(call.input).slice(0, 200);
254
- process.stderr.write(`[runner-shell] tool ${call.name} FAILED — err=${errMsg} input=${inputPreview}\n`);
255
- }
256
- if (succeeded) {
257
- const path = extractPathFromToolInput(call.input);
258
- if (READ_TOOL_NAMES.has(call.name) && path)
259
- filesReadSet.add(path);
260
- else if (WRITE_TOOL_NAMES.has(call.name) && path) {
261
- // A4b.1: validate before adding to the public array. Any
262
- // entry that fails the path-validity check (absolute
263
- // paths, shell metacharacters) goes to the rejected pile —
264
- // not silently dropped, but kept for the daemon-log
265
- // diagnostic in A4b.2.
266
- if (filterValidWritePath(path))
267
- filesWrittenSet.add(path);
268
- else
269
- filesWrittenRejectedSet.add(path);
270
- }
271
- else if (SHELL_TOOL_NAMES.has(call.name)) {
272
- // A4b.1 (4.2.2+) — supersedes Gap-11 (4.0.3+). Pre-fix,
273
- // workers using run_shell heredocs (cat >, tee, etc.)
274
- // had a synthetic `shell:<command>` entry added to
275
- // filesWritten so the headline showed non-zero write
276
- // activity. That conflated "shell tried to write" with
277
- // "real artifact landed", which broke the spec
278
- // reviewer's diff-against-baseline reasoning. Now: the
279
- // shell entry goes ONLY to the rejected pile (used for
280
- // diagnostics + the writes_unverifiable downgrade in
281
- // A4b.2). The headline's `shellWrites` counter (separate,
282
- // emitted to the bus and tracked by RunningHeadlineSink)
283
- // continues to show the activity signal.
284
- const command = extractShellCommand(call.input);
285
- if (command && shellCommandWritesFs(command)) {
286
- filesWrittenRejectedSet.add(`shell:${command.slice(0, 80)}`);
287
- }
288
- }
289
- }
290
- }
291
- history.push(turnRecord);
292
- }
293
- // Per-tool counts for THIS turn so operators see "5 readFile, 1 grep"
294
- // instead of the bare "tool_call_count=6". The user can immediately
295
- // tell read vs write activity without inspecting the JSONL log.
296
- const toolCallsByName = {};
297
- // Gap 11 (4.0.3+): also count shell calls that wrote to the
298
- // filesystem so the headline reflects worker-produced artifacts
299
- // even when the worker bypassed write_file/edit_file.
300
- let shellWritesThisTurn = 0;
301
- // A4b.0 (4.2.2+): emit per-turn unique read/write PATHS so the
302
- // headline sink can dedupe across turns. Without these, the sink
303
- // counts every tool invocation as a separate read/write — a
304
- // worker that writes to `foo.ts` 5 times shows "5 write" in the
305
- // headline even though only 1 file changed. Empty arrays are
306
- // valid and short-circuit at the sink.
307
- const pathsReadThisTurn = new Set();
308
- const pathsWrittenThisTurn = new Set();
309
- for (const tc of turnResult.toolCalls) {
310
- toolCallsByName[tc.name] = (toolCallsByName[tc.name] ?? 0) + 1;
311
- const path = extractPathFromToolInput(tc.input);
312
- if (READ_TOOL_NAMES.has(tc.name) && path)
313
- pathsReadThisTurn.add(path);
314
- else if (WRITE_TOOL_NAMES.has(tc.name) && path)
315
- pathsWrittenThisTurn.add(path);
316
- if (SHELL_TOOL_NAMES.has(tc.name)) {
317
- const cmd = extractShellCommand(tc.input);
318
- if (cmd && shellCommandWritesFs(cmd))
319
- shellWritesThisTurn += 1;
320
- }
321
- }
322
- input.bus?.emit({
323
- event: 'runner_turn_completed',
324
- ts: new Date().toISOString(),
325
- ...baseEventFields,
326
- turnIndex: turn,
327
- terminated: willTerminate,
328
- toolCallCount: turnResult.toolCalls.length,
329
- ...(turnResult.toolCalls.length > 0 && { toolCalls: toolCallsByName }),
330
- ...(pathsReadThisTurn.size > 0 && { pathsReadThisTurn: [...pathsReadThisTurn] }),
331
- ...(pathsWrittenThisTurn.size > 0 && { pathsWrittenThisTurn: [...pathsWrittenThisTurn] }),
332
- ...(shellWritesThisTurn > 0 && { shellWrites: shellWritesThisTurn }),
333
- });
334
- if (willTerminate)
335
- break;
336
- }
337
- // Empty-output regression guard (4.0.3). The 4.0.x runner-shell
338
- // unconditionally reported `workerStatus: 'done'` whenever the adapter
339
- // returned no tool calls — even when assistantText was empty. Combined
340
- // with the anthropic-messages adapter's text-only extraction, a
341
- // reasoning model that emitted thinking blocks with no text block (or
342
- // any provider that returned end_turn with empty content) silently
343
- // produced an "ok" RunResult carrying `output: ''`. The reviewer
344
- // engine then approved that empty output and the audit/delegate
345
- // looked successful while emitting nothing useful.
346
- //
347
- // 3.12.7's claude-agent-sdk owned the agent loop and didn't have this
348
- // failure mode. This branch restores the missing check: stopping with
349
- // empty narrative AND no tool calls is `incomplete`, surfaced as a
350
- // structured error with errorCode `empty_output` so callers can tell
351
- // the difference between "model finished cleanly" and "model returned
352
- // nothing usable".
353
- if (stoppedByAdapter && finalText.trim() === '' && allToolCalls.length === 0) {
354
- return {
355
- workerStatus: 'failed',
356
- finalAssistantText: '',
357
- toolCalls: allToolCalls,
358
- usage,
359
- errorCode: 'empty_output',
360
- turns,
361
- durationMs: Date.now() - startMs,
362
- filesRead: [...filesReadSet],
363
- filesWritten: [...filesWrittenSet],
364
- filesWrittenRejected: [...filesWrittenRejectedSet],
365
- costUSD: computeCost(modelForCost, usage),
366
- };
367
- }
368
- return {
369
- workerStatus: stoppedByAdapter ? 'done' : 'blocked',
370
- finalAssistantText: finalText,
371
- toolCalls: allToolCalls,
372
- usage,
373
- ...(stoppedByAdapter ? {} : { errorCode: 'max_turns_exhausted' }),
374
- turns,
375
- durationMs: Date.now() - startMs,
376
- filesRead: [...filesReadSet],
377
- filesWritten: [...filesWrittenSet],
378
- filesWrittenRejected: [...filesWrittenRejectedSet],
379
- costUSD: computeCost(modelForCost, usage),
380
- };
381
- }
382
- /**
383
- * Cache-warmer call: sends one minimal turn with the cached prefix so the
384
- * upstream provider's prompt cache writes the prefix. Subsequent fan-out
385
- * sub-workers using the same prefix serve from cache.
386
- *
387
- * The user message is a single token ("ready") and the assistant response
388
- * is discarded. For providers that don't honor `cache_control` (codex,
389
- * future providers), this still runs but produces no measurable cache
390
- * benefit.
391
- *
392
- * Bounded by an internal 10-min hard cap (5-min soft warning) so a slow
393
- * or hanging warmer cannot blow the route's overall wall-clock. On cap
394
- * hit, the warmer returns with capHit=true and the dispatcher proceeds
395
- * to fan-out WITHOUT cache priming — sub-workers will pay full input
396
- * cost but the route still completes (correctness > optimization).
397
- */
398
- async prime(systemPrompt, opts) {
399
- const startMs = Date.now();
400
- // Per-warmer wall-clock guard: own hard cap, independent of the
401
- // task-level abortSignal. Combined into one signal that the adapter sees.
402
- const warmerAbort = new AbortController();
403
- const combinedAbort = new AbortController();
404
- if (opts.abortSignal) {
405
- if (opts.abortSignal.aborted)
406
- combinedAbort.abort();
407
- else
408
- opts.abortSignal.addEventListener('abort', () => combinedAbort.abort(), { once: true });
409
- }
410
- warmerAbort.signal.addEventListener('abort', () => combinedAbort.abort(), { once: true });
411
- let capHit = false;
412
- const softTimer = setTimeout(() => {
413
- opts.bus?.emit({
414
- event: 'criteria_fanout_warm_soft_warning',
415
- ts: new Date().toISOString(),
416
- ...(opts.batchId !== undefined && { batchId: opts.batchId }),
417
- ...(opts.taskIndex !== undefined && { taskIndex: opts.taskIndex }),
418
- elapsedMs: WARMER_SOFT_WARN_MS,
419
- remainingMs: WARMER_HARD_CAP_MS - WARMER_SOFT_WARN_MS,
420
- });
421
- }, WARMER_SOFT_WARN_MS);
422
- const hardTimer = setTimeout(() => {
423
- capHit = true;
424
- opts.bus?.emit({
425
- event: 'criteria_fanout_warm_cap_hit',
426
- ts: new Date().toISOString(),
427
- ...(opts.batchId !== undefined && { batchId: opts.batchId }),
428
- ...(opts.taskIndex !== undefined && { taskIndex: opts.taskIndex }),
429
- elapsedMs: WARMER_HARD_CAP_MS,
430
- });
431
- warmerAbort.abort();
432
- }, WARMER_HARD_CAP_MS);
433
- try {
434
- const turnResult = await this.adapter.turn({
435
- systemPrompt,
436
- userMessage: 'ready',
437
- priorTurns: [],
438
- toolDefinitions: [],
439
- capabilities: opts.capabilities ?? { ...DEFAULT_CAPABILITIES, thinking: false },
440
- abortSignal: combinedAbort.signal,
441
- ...(opts.deadlineMs !== undefined && { deadlineMs: opts.deadlineMs }),
442
- ...(opts.cacheControl && { cacheControl: opts.cacheControl }),
443
- });
444
- const durationMs = Date.now() - startMs;
445
- // The warmer can't reliably tell whether the upstream actually wrote
446
- // the cache. cacheControlSent reports we ATTEMPTED to register;
447
- // confirmation comes from sub-workers' cachedReadTokens.
448
- const cacheControlSent = !capHit && opts.cacheControl !== undefined;
449
- opts.bus?.emit({
450
- event: 'criteria_fanout_warm_complete',
451
- ts: new Date().toISOString(),
452
- ...(opts.batchId !== undefined && { batchId: opts.batchId }),
453
- ...(opts.taskIndex !== undefined && { taskIndex: opts.taskIndex }),
454
- ...(opts.tier !== undefined && { tier: opts.tier }),
455
- ...(opts.stageLabel !== undefined && { stageLabel: opts.stageLabel }),
456
- durationMs,
457
- cacheControlSent,
458
- capHit,
459
- warmerInputTokens: turnResult.usage.inputTokens,
460
- warmerCachedNonReadTokens: turnResult.usage.cachedNonReadTokens ?? 0,
461
- });
462
- return {
463
- cacheControlSent,
464
- capHit,
465
- durationMs,
466
- usage: {
467
- inputTokens: turnResult.usage.inputTokens,
468
- outputTokens: turnResult.usage.outputTokens,
469
- cachedReadTokens: turnResult.usage.cachedReadTokens ?? 0,
470
- cachedNonReadTokens: turnResult.usage.cachedNonReadTokens ?? 0,
471
- },
472
- };
473
- }
474
- catch (err) {
475
- const durationMs = Date.now() - startMs;
476
- // On cap-hit, swallow the abort and return a synthesized result so
477
- // the dispatcher proceeds to fan-out without cache (correct, just
478
- // slower). Real errors (transport, etc.) re-throw — the dispatcher
479
- // currently doesn't catch warmer errors but a future caller might.
480
- if (capHit) {
481
- opts.bus?.emit({
482
- event: 'criteria_fanout_warm_complete',
483
- ts: new Date().toISOString(),
484
- ...(opts.batchId !== undefined && { batchId: opts.batchId }),
485
- ...(opts.taskIndex !== undefined && { taskIndex: opts.taskIndex }),
486
- durationMs,
487
- cacheControlSent: false,
488
- capHit: true,
489
- warmerInputTokens: 0,
490
- warmerCachedNonReadTokens: 0,
491
- });
492
- return {
493
- cacheControlSent: false,
494
- capHit: true,
495
- durationMs,
496
- usage: { inputTokens: 0, outputTokens: 0, cachedReadTokens: 0, cachedNonReadTokens: 0 },
497
- };
498
- }
499
- throw err;
500
- }
501
- finally {
502
- clearTimeout(softTimer);
503
- clearTimeout(hardTimer);
504
- }
505
- }
506
- }
507
- /** Per-warmer wall-clock guard. After this, the warmer's abortSignal
508
- * fires and prime() returns with capHit=true; the dispatcher proceeds
509
- * to fan-out without cache priming. */
510
- const WARMER_HARD_CAP_MS = 10 * 60 * 1000;
511
- const WARMER_SOFT_WARN_MS = 5 * 60 * 1000;
512
- function computeCost(model, usage) {
513
- const card = resolveRateCard(model ?? null);
514
- if (!card)
515
- return null;
516
- return priceTokens(usage, card);
517
- }
518
- //# sourceMappingURL=runner-shell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-shell.js","sourceRoot":"","sources":["../../src/providers/runner-shell.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import type { TextScratchpad } from '../providers/text-scratchpad.js';
2
- export interface SalvageInput {
3
- scratchpad: TextScratchpad;
4
- reason: string;
5
- provider?: string;
6
- model?: string;
7
- turnsUsed?: number;
8
- }
9
- export interface SalvageResult {
10
- output: string;
11
- empty: boolean;
12
- source: 'latest' | 'longest' | 'diagnostic';
13
- diagnostic: string;
14
- }
15
- export declare class ScratchpadSalvager {
16
- salvage(input: SalvageInput): SalvageResult;
17
- private _diagnostic;
18
- }
19
- //# sourceMappingURL=scratchpad-salvager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scratchpad-salvager.d.ts","sourceRoot":"","sources":["../../src/providers/scratchpad-salvager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa;IAgC3C,OAAO,CAAC,WAAW;CAepB"}
@@ -1,44 +0,0 @@
1
- export class ScratchpadSalvager {
2
- salvage(input) {
3
- const { scratchpad, reason, provider, model, turnsUsed } = input;
4
- const latest = scratchpad.latest();
5
- if (latest) {
6
- return {
7
- output: latest,
8
- empty: false,
9
- source: 'latest',
10
- diagnostic: this._diagnostic(reason, provider, model, turnsUsed, 'latest'),
11
- };
12
- }
13
- const longest = scratchpad.longest();
14
- if (longest) {
15
- return {
16
- output: longest,
17
- empty: false,
18
- source: 'longest',
19
- diagnostic: this._diagnostic(reason, provider, model, turnsUsed, 'longest'),
20
- };
21
- }
22
- const diag = this._diagnostic(reason, provider, model, turnsUsed, 'diagnostic');
23
- return {
24
- output: diag,
25
- empty: true,
26
- source: 'diagnostic',
27
- diagnostic: diag,
28
- };
29
- }
30
- _diagnostic(reason, provider, model, turnsUsed, source) {
31
- const parts = ['[ScratchpadSalvager] agent terminated without a clean final answer'];
32
- if (provider)
33
- parts.push(`provider=${provider}`);
34
- if (model)
35
- parts.push(`model=${model}`);
36
- parts.push(`reason=${reason}`);
37
- if (turnsUsed !== undefined)
38
- parts.push(`turns=${turnsUsed}`);
39
- if (source)
40
- parts.push(`salvageSource=${source}`);
41
- return parts.join(' ');
42
- }
43
- }
44
- //# sourceMappingURL=scratchpad-salvager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scratchpad-salvager.js","sourceRoot":"","sources":["../../src/providers/scratchpad-salvager.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,kBAAkB;IAC7B,OAAO,CAAC,KAAmB;QACzB,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAEjE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;aAC3E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC;aAC5E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAChF,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAEO,WAAW,CACjB,MAAc,EACd,QAAiB,EACjB,KAAc,EACd,SAAkB,EAClB,MAAe;QAEf,MAAM,KAAK,GAAa,CAAC,oEAAoE,CAAC,CAAC;QAC/F,IAAI,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;QACjD,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;QAC/B,IAAI,SAAS,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF"}