@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,121 +0,0 @@
1
- // HTTP-level usage capture for openai-compatible providers, independent of
2
- // @openai/agents' internal aggregation.
3
- //
4
- // Why this exists: the @openai/agents SDK's stream consumer
5
- // (node_modules/@openai/agents-openai/dist/openaiChatCompletionsStreaming.js
6
- // line ~38) overwrites its local `usage` variable on every SSE chunk:
7
- //
8
- // usage = chunk.usage || undefined;
9
- //
10
- // For OpenAI proper this is benign — only the final `[DONE]`-adjacent chunk
11
- // carries usage, so the last write is the right one. For DeepSeek (and
12
- // likely other openai-compatible providers) with multi-turn tool-use, later
13
- // chunks can have `usage:undefined` AFTER an earlier chunk reported real
14
- // numbers, wiping the captured usage. The SDK then ends with
15
- // `state.usage.inputTokens=0`, costUSD=0, despite real tokens having
16
- // flowed. Telemetry first surfaced this on DeepSeek-as-reviewer calls —
17
- // every call logged 21+ turns and zero tokens, untraceable until the SDK
18
- // source was inspected.
19
- //
20
- // Fix: wrap the OpenAI client's `chat.completions.create` so we see the
21
- // raw HTTP response (or the raw SSE stream) BEFORE the SDK consumes it, and
22
- // accumulate usage into an out-of-band counter the runner can read at
23
- // result-time as a source-of-truth fallback. The wrapper does not modify
24
- // SDK-visible behavior — it observes only.
25
- function addUsage(acc, u) {
26
- return {
27
- promptTokens: acc.promptTokens + (u.prompt_tokens ?? 0),
28
- completionTokens: acc.completionTokens + (u.completion_tokens ?? 0),
29
- cachedReadTokens: acc.cachedReadTokens + (u.prompt_tokens_details?.cached_tokens ?? 0),
30
- reasoningTokens: acc.reasoningTokens + (u.completion_tokens_details?.reasoning_tokens ?? 0),
31
- responses: acc.responses + 1,
32
- };
33
- }
34
- /** Wrap an OpenAI client so usage from every chat.completions.create response
35
- * is captured into the returned UsageAccumulator.
36
- *
37
- * Mutates `client.chat.completions.create` in place. The wrapped client is
38
- * otherwise unchanged — same return shapes, same error behavior. The SDK
39
- * sees the same response stream byte-for-byte (we tee, we don't transform).
40
- */
41
- export function wrapClientForUsageCapture(client) {
42
- let acc = {
43
- promptTokens: 0,
44
- completionTokens: 0,
45
- cachedReadTokens: 0,
46
- reasoningTokens: 0,
47
- responses: 0,
48
- };
49
- let observedNonZero = false;
50
- const observe = (u) => {
51
- if (!u)
52
- return;
53
- const before = acc;
54
- acc = addUsage(acc, u);
55
- // hasObservedUsage flips true the first time a response carries real
56
- // input or output tokens. Counters can stay at 0 for empty responses
57
- // (auth failures, immediate refusals) — those don't count as evidence
58
- // that the provider IS reporting usage.
59
- if ((u.prompt_tokens ?? 0) > 0 || (u.completion_tokens ?? 0) > 0) {
60
- observedNonZero = true;
61
- }
62
- void before;
63
- };
64
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
- const completions = client.chat.completions;
66
- const originalCreate = completions.create.bind(completions);
67
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
68
- completions.create = async function wrappedCreate(...args) {
69
- const result = await originalCreate(...args);
70
- // Non-streaming branch: result is a ChatCompletion object with usage.
71
- // Detect via the presence of `choices` (eagerly resolved) and `usage`.
72
- if (result && typeof result === 'object' && Array.isArray(result.choices)) {
73
- observe(result.usage);
74
- return result;
75
- }
76
- // Streaming branch: result is an AsyncIterable of chunks. We wrap the
77
- // iterator so each yielded chunk's usage feeds the accumulator without
78
- // changing what the SDK sees.
79
- if (result && typeof result[Symbol.asyncIterator] === 'function') {
80
- const inner = result;
81
- // Build a thin wrapper that preserves the original async-iterable
82
- // identity (so the SDK can still .controller-abort if it does), but
83
- // observes usage on every chunk that has it. Note: we accumulate the
84
- // FIRST non-null usage we see from each request (chunks-with-usage are
85
- // typically only 1 per stream, sent on the [DONE] frame). If a
86
- // provider sends multiple usage frames, we add each one — that matches
87
- // the cumulative semantics.
88
- const wrapped = {
89
- async *[Symbol.asyncIterator]() {
90
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
- let lastUsage;
92
- for await (const chunk of inner) {
93
- if (chunk && chunk.usage) {
94
- lastUsage = chunk.usage;
95
- }
96
- yield chunk;
97
- }
98
- // Accumulate at end-of-stream so multiple intra-stream `usage`
99
- // chunks (DeepSeek behavior) don't double-count. The last seen
100
- // usage is the cumulative-for-this-request value the provider
101
- // wanted us to see.
102
- observe(lastUsage);
103
- },
104
- };
105
- // Some SDK call sites poke at `.controller` on the stream object for
106
- // abort handling. Forward it if present.
107
- const ctrl = result.controller;
108
- if (ctrl !== undefined)
109
- wrapped.controller = ctrl;
110
- return wrapped;
111
- }
112
- // Unknown shape (shouldn't happen for chat.completions.create) — pass
113
- // through unmodified.
114
- return result;
115
- };
116
- return {
117
- snapshot: () => ({ ...acc }),
118
- hasObservedUsage: () => observedNonZero,
119
- };
120
- }
121
- //# sourceMappingURL=openai-usage-interceptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-usage-interceptor.js","sourceRoot":"","sources":["../../src/providers/openai-usage-interceptor.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Sub-agent prevention layer.
3
- *
4
- * Provides the strong default system prompt, the budget hint preamble,
5
- * and the periodic re-grounding message that the runners inject to keep
6
- * the model focused. The goal is to make the first attempt succeed.
7
- *
8
- * All builders here MUST be deterministic: same input → byte-identical
9
- * output. No Date.now(), no Math.random(), no environment variable
10
- * leakage. Tests in tests/runners/prevention.test.ts assert this.
11
- *
12
- * See spec Part A.1 for the design rationale.
13
- */
14
- import type { FormatConstraints } from '../types.js';
15
- export declare function buildSystemPrompt(): string;
16
- export interface BuildBudgetHintOptions {
17
- timeoutMs: number;
18
- maxCostUSD?: number;
19
- }
20
- export declare function buildBudgetHint(opts: BuildBudgetHintOptions): string;
21
- export declare const RE_GROUNDING_INTERVAL_TURNS = 10;
22
- export interface BuildReGroundingMessageOptions {
23
- originalPromptExcerpt: string;
24
- elapsedMs: number;
25
- timeoutMs: number;
26
- toolCallsSoFar: number;
27
- filesReadSoFar: number;
28
- }
29
- export declare function buildReGroundingMessage(opts: BuildReGroundingMessageOptions): string;
30
- export interface BuildBudgetPressureNudgeOptions {
31
- inputTokens: number;
32
- softLimit: number;
33
- }
34
- /**
35
- * Nudge message the runner injects when the watchdog crosses its
36
- * `warning` threshold (see supervision.checkWatchdogThreshold). The text
37
- * is deliberately terse: the model is already close to the soft limit, so
38
- * we tell it to stop exploring and produce a final answer from whatever
39
- * it has gathered. Kept here so every runner (openai, claude, codex)
40
- * uses byte-identical wording.
41
- */
42
- export declare function buildBudgetPressureNudge(opts: BuildBudgetPressureNudgeOptions): string;
43
- export declare function buildFormatConstraintSuffix(constraints: FormatConstraints): string;
44
- //# sourceMappingURL=prevention.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prevention.d.ts","sourceRoot":"","sources":["../../src/providers/prevention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,wBAAgB,iBAAiB,IAAI,MAAM,CA8C1C;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAQpE;AAED,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,MAAM,WAAW,8BAA8B;IAC7C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,8BAA8B,GAAG,MAAM,CAWpF;AAED,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,+BAA+B,GAAG,MAAM,CAMtF;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,iBAAiB,GAAG,MAAM,CAYlF"}
@@ -1,108 +0,0 @@
1
- /**
2
- * Sub-agent prevention layer.
3
- *
4
- * Provides the strong default system prompt, the budget hint preamble,
5
- * and the periodic re-grounding message that the runners inject to keep
6
- * the model focused. The goal is to make the first attempt succeed.
7
- *
8
- * All builders here MUST be deterministic: same input → byte-identical
9
- * output. No Date.now(), no Math.random(), no environment variable
10
- * leakage. Tests in tests/runners/prevention.test.ts assert this.
11
- *
12
- * See spec Part A.1 for the design rationale.
13
- */
14
- export function buildSystemPrompt() {
15
- return [
16
- 'You are a sub-agent completing a single task end-to-end. Read these rules before you begin any tool calls.',
17
- '',
18
- 'The deliverable. Your final assistant message — and only your final assistant message — is what gets returned to the caller. Intermediate tool outputs and earlier turns are discarded. Your final message must be complete, substantive, and in plain text. Content inside <think> tags is stripped — only plain text reaches the caller.',
19
- '',
20
- 'Plan before you act. Before your first tool call, identify (1) what the task is asking for, (2) its success criteria (output format, required sections, acceptance tests), (3) what files or information you need, and (4) how many tool calls you expect. State this plan in your first assistant message.',
21
- '',
22
- 'Tool rules:',
23
- '- Use grep to locate content. Use readFile when you need the full file context that grep cannot provide.',
24
- '- Read each file at most once. Note relevant parts in your assistant messages for later reference. Exception: re-read after editing to confirm the edit landed.',
25
- '- Use glob to find files by name, then grep to search inside them.',
26
- '- Batch grep patterns: use regex alternation (a|b|c) in one call, not separate calls per pattern.',
27
- '- Use edit_file to modify part of a file. Provide enough surrounding context in oldContent to match exactly one location. Use write_file only to create new files or rewrite an entire file.',
28
- '',
29
- 'Shell rules:',
30
- '- Use run_shell to run tests, build, and execute any command-line task the brief requires.',
31
- '- In parallel tasks, run targeted tests (e.g., "npx vitest run tests/specific.test.ts") instead of full suites (e.g., "npm test").',
32
- '- Use edit_file or write_file for all file modifications. Shell-based edits (sed, awk, perl -i) are error-prone and not tracked by the harness.',
33
- '- Only install packages, run destructive commands, or modify system state when the task explicitly requests it.',
34
- '',
35
- 'Progress and completion:',
36
- '- Write findings as you discover them in your assistant turns. This is saved in the scratchpad and recovered if the run is interrupted.',
37
- '- Always execute tool calls you describe. If you write "let me check X next", call the tool immediately or produce your final answer.',
38
- '- If you hit a problem (tool failure, missing file, unclear task), produce a partial answer explaining what you found and what blocked you.',
39
- '',
40
- 'Output format: if the task specifies a format, follow it exactly. Match headers, table structures, prefixes (e.g., "start with # Gap Report:"), and section order. The caller validates the format.',
41
- '',
42
- 'If you wrote, modified, or deleted files, your structured report MUST include a `commit:` block as a JSON object with these fields:',
43
- '',
44
- ' {',
45
- ' "type": "feat" | "fix" | "refactor" | "test" | "docs" | "chore" | "style",',
46
- ' "scope": "<optional, 1-24 chars: lowercase letters, digits, dot, underscore, slash, hyphen; must start with letter or digit>",',
47
- ' "subject": "<1-50 chars, lowercase first letter, no trailing colon, no leading/trailing whitespace>",',
48
- ' "body": "<optional multi-paragraph plain text explaining WHY>"',
49
- ' }',
50
- '',
51
- 'Examples:',
52
- ' type: "feat", scope: "core", subject: "add x"',
53
- ' type: "refactor", scope: "lifecycle", subject: "extract Y from Z"',
54
- ' type: "fix", subject: "guard against undefined"',
55
- '',
56
- 'Do NOT write narrative ("Now I\'m going to...") in the subject. The runner will compose `<type>(<scope>): <subject>` as the commit message; your subject becomes the commit subject line verbatim.',
57
- '',
58
- 'If you did not write any files, omit the commit block entirely.',
59
- ].join('\n');
60
- }
61
- export function buildBudgetHint(opts) {
62
- const timeMin = Math.round(opts.timeoutMs / 60_000);
63
- const parts = [`Budget: you have ${timeMin} minutes for this task.`];
64
- if (opts.maxCostUSD !== undefined) {
65
- parts.push(`Cost ceiling: $${opts.maxCostUSD}.`);
66
- }
67
- parts.push('Work efficiently. Write findings as you go.');
68
- return parts.join(' ');
69
- }
70
- export const RE_GROUNDING_INTERVAL_TURNS = 10;
71
- export function buildReGroundingMessage(opts) {
72
- const excerpt = opts.originalPromptExcerpt.slice(0, 200);
73
- const elapsedMin = Math.round(opts.elapsedMs / 60_000);
74
- const totalMin = Math.round(opts.timeoutMs / 60_000);
75
- return [
76
- `Reminder: your task is "${excerpt}${opts.originalPromptExcerpt.length > 200 ? '...' : ''}".`,
77
- `Elapsed: ${elapsedMin} of ${totalMin} minutes.`,
78
- `Tool calls: ${opts.toolCallsSoFar}. Files read: ${opts.filesReadSoFar}.`,
79
- 'Start drafting your final answer now.',
80
- 'Use your remaining time to fill gaps, then finalize.',
81
- ].join(' ');
82
- }
83
- /**
84
- * Nudge message the runner injects when the watchdog crosses its
85
- * `warning` threshold (see supervision.checkWatchdogThreshold). The text
86
- * is deliberately terse: the model is already close to the soft limit, so
87
- * we tell it to stop exploring and produce a final answer from whatever
88
- * it has gathered. Kept here so every runner (openai, claude, codex)
89
- * uses byte-identical wording.
90
- */
91
- export function buildBudgetPressureNudge(opts) {
92
- return (`Budget pressure: you have used approximately ${opts.inputTokens} ` +
93
- `input tokens out of a soft limit of ${opts.softLimit}. ` +
94
- `Produce your complete final answer now with whatever you have gathered.`);
95
- }
96
- export function buildFormatConstraintSuffix(constraints) {
97
- if (!constraints.inputFormat && !constraints.outputFormat)
98
- return '';
99
- const parts = [];
100
- if (constraints.inputFormat) {
101
- parts.push(`input format: ${constraints.inputFormat}`);
102
- }
103
- if (constraints.outputFormat) {
104
- parts.push(`output format: ${constraints.outputFormat}`);
105
- }
106
- return '\n\n' + parts.join(' ');
107
- }
108
- //# sourceMappingURL=prevention.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prevention.js","sourceRoot":"","sources":["../../src/providers/prevention.ts"],"names":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- import type { TokenUsage } from './runner-types.js';
2
- import type { EventEmitter } from '../events/event-emitter.js';
3
- export type WorkerStatus = 'done' | 'done_with_concerns' | 'needs_context' | 'blocked' | 'failed';
4
- export interface RunInput {
5
- systemPrompt: string;
6
- userMessage: string;
7
- toolDefinitions: ToolDefinition[];
8
- maxTurns: number;
9
- cwd: string;
10
- capabilities?: import('./runner-adapter.js').AdapterCapabilities;
11
- abortSignal?: AbortSignal;
12
- deadlineMs?: number;
13
- /** Bus for per-turn / per-runner-call observability events. When present,
14
- * shell + adapter emit `runner_turn_started` / `runner_response_received`
15
- * / `runner_turn_completed` events so VerboseLogChannel surfaces them
16
- * on stderr in real time during a long task run. */
17
- bus?: EventEmitter;
18
- /** Identifies the in-flight batch in emitted events. */
19
- batchId?: string;
20
- /** Identifies which task within a batch is running. Carried through to
21
- * every emitted event so polling can show per-task progress when a
22
- * batch has multiple parallel tasks. */
23
- taskIndex?: number;
24
- /** Tier label (`'standard'` | `'complex'`) included in emitted events. */
25
- tier?: string;
26
- /** Provider model id included in emitted events. */
27
- model?: string;
28
- /** Lifecycle stage label (e.g. 'Implementing', 'Spec review'). Surfaced
29
- * on the running-headline polling response so the main agent's poll
30
- * loop shows which lifecycle stage is currently active. */
31
- stageLabel?: string;
32
- /** When set, ask the provider to attach a cache_control marker to the
33
- * system prompt so the prefix can be reused by subsequent calls.
34
- * Honored by adapters that expose explicit cache control (Anthropic);
35
- * no-op on adapters that auto-cache (OpenAI) or don't cache (codex). */
36
- cacheControl?: {
37
- type: 'ephemeral';
38
- };
39
- /** Wall-clock guard threaded from LifecycleContext. When present, the
40
- * runner-shell calls guard.checkOrThrow() before each tool execution so
41
- * long-running shell/network calls can't drift past the per-task budget. */
42
- wallClockGuard?: {
43
- checkOrThrow(): void;
44
- };
45
- }
46
- export interface RunResult {
47
- workerStatus: WorkerStatus;
48
- finalAssistantText: string;
49
- toolCalls: ToolCall[];
50
- usage: TokenUsage;
51
- errorCode?: ErrorCode;
52
- /** Number of LLM turns executed (one per adapter.turn() call). Distinct
53
- * from toolCalls.length — a turn can return multiple tool calls or none. */
54
- turns: number;
55
- /** Wall-clock for the entire shell.run() invocation. */
56
- durationMs: number;
57
- /** Files read during this run (paths from successful read_file/readFile tool calls). */
58
- filesRead: string[];
59
- /** Files written during this run (paths from successful write_file/writeFile/edit_file tool calls). */
60
- filesWritten: string[];
61
- /** A4b §2a (4.2.2+): worker write attempts that failed the path-validity
62
- * filter — shell heredoc commands, absolute paths, paths containing
63
- * shell metacharacters. NOT real, verifiable disk artifacts. The
64
- * lifecycle layer drains this into LifecycleContext.diagnostics for
65
- * the `writes_unverifiable` daemon-log message; not surfaced on the
66
- * public HTTP envelope. Optional so legacy consumers / mocks compile
67
- * without setting the field. */
68
- filesWrittenRejected?: string[];
69
- /** USD cost computed from usage tokens and the model's rate card.
70
- * null when the model isn't in the rate-card registry (treated as honest-null
71
- * by the wire, not zero). */
72
- costUSD: number | null;
73
- }
74
- export interface ToolDefinition {
75
- name: string;
76
- description: string;
77
- schema: object;
78
- execute(input: unknown, ctx: ExecutionContext): Promise<unknown>;
79
- }
80
- export interface ExecutionContext {
81
- cwd: string;
82
- callCache: Map<string, unknown>;
83
- }
84
- export interface ToolCall {
85
- name: string;
86
- input: unknown;
87
- result?: unknown;
88
- id?: string;
89
- }
90
- export type ErrorCode = string;
91
- //# sourceMappingURL=runner-shell-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-shell-types.d.ts","sourceRoot":"","sources":["../../src/providers/runner-shell-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,oBAAoB,GAAG,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElG,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,qBAAqB,EAAE,mBAAmB,CAAC;IACjE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;yDAGqD;IACrD,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;6CAEyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;gEAE4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;6EAGyE;IACzE,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IACrC;;iFAE6E;IAC7E,cAAc,CAAC,EAAE;QAAE,YAAY,IAAI,IAAI,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;iFAC6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,uGAAuG;IACvG,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;qCAMiC;IACjC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC;;kCAE8B;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=runner-shell-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-shell-types.js","sourceRoot":"","sources":["../../src/providers/runner-shell-types.ts"],"names":[],"mappings":""}
@@ -1,67 +0,0 @@
1
- import type { RunInput, RunResult } from './runner-shell-types.js';
2
- import type { RunnerAdapter, AdapterCapabilities } from './runner-adapter.js';
3
- export declare function shellCommandWritesFs(command: string): boolean;
4
- export declare class RunnerShell {
5
- private adapter;
6
- /** Default model id used for cost computation when input.model is absent.
7
- * Reviewer/annotator engines call shell.run() without setting input.model,
8
- * so without this default every reviewer-side stage would record costUSD=null. */
9
- private defaultModel?;
10
- constructor(adapter: RunnerAdapter,
11
- /** Default model id used for cost computation when input.model is absent.
12
- * Reviewer/annotator engines call shell.run() without setting input.model,
13
- * so without this default every reviewer-side stage would record costUSD=null. */
14
- defaultModel?: string | undefined);
15
- run(input: RunInput): Promise<RunResult>;
16
- /**
17
- * Cache-warmer call: sends one minimal turn with the cached prefix so the
18
- * upstream provider's prompt cache writes the prefix. Subsequent fan-out
19
- * sub-workers using the same prefix serve from cache.
20
- *
21
- * The user message is a single token ("ready") and the assistant response
22
- * is discarded. For providers that don't honor `cache_control` (codex,
23
- * future providers), this still runs but produces no measurable cache
24
- * benefit.
25
- *
26
- * Bounded by an internal 10-min hard cap (5-min soft warning) so a slow
27
- * or hanging warmer cannot blow the route's overall wall-clock. On cap
28
- * hit, the warmer returns with capHit=true and the dispatcher proceeds
29
- * to fan-out WITHOUT cache priming — sub-workers will pay full input
30
- * cost but the route still completes (correctness > optimization).
31
- */
32
- prime(systemPrompt: string, opts: PrimeOptions): Promise<PrimeResult>;
33
- }
34
- export interface PrimeOptions {
35
- cwd: string;
36
- cacheControl?: {
37
- type: 'ephemeral';
38
- };
39
- abortSignal?: AbortSignal;
40
- deadlineMs?: number;
41
- capabilities?: AdapterCapabilities;
42
- bus?: import('../events/event-emitter.js').EventEmitter;
43
- batchId?: string;
44
- taskIndex?: number;
45
- tier?: string;
46
- stageLabel?: string;
47
- }
48
- export interface PrimeResult {
49
- /** Whether the warmer attempted to register a cacheable prefix
50
- * (i.e. opts.cacheControl was set and the call returned). The actual
51
- * cache effectiveness surfaces in subsequent sub-worker
52
- * cachedReadTokens, NOT here — see criteria_fanout_summary's
53
- * totalCachedReadTokens / cacheHitConfirmed. */
54
- cacheControlSent: boolean;
55
- /** True iff the warmer hit the 10-min hard cap and was force-aborted.
56
- * Dispatcher proceeds to fan-out anyway; sub-workers pay full input
57
- * cost since no cache was primed. */
58
- capHit: boolean;
59
- durationMs: number;
60
- usage: {
61
- inputTokens: number;
62
- outputTokens: number;
63
- cachedReadTokens: number;
64
- cachedNonReadTokens: number;
65
- };
66
- }
67
- //# sourceMappingURL=runner-shell.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-shell.d.ts","sourceRoot":"","sources":["../../src/providers/runner-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAA8B,MAAM,yBAAyB,CAAC;AAC/F,OAAO,KAAK,EAAE,aAAa,EAAwC,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AA0EpH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAaD,qBAAa,WAAW;IAEpB,OAAO,CAAC,OAAO;IACf;;uFAEmF;IACnF,OAAO,CAAC,YAAY,CAAC;gBAJb,OAAO,EAAE,aAAa;IAC9B;;uFAEmF;IAC3E,YAAY,CAAC,EAAE,MAAM,YAAA;IAGzB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAwR9C;;;;;;;;;;;;;;;OAeG;IACG,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CA2G5E;AAQD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,GAAG,CAAC,EAAE,OAAO,4BAA4B,EAAE,YAAY,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;qDAIiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;0CAEsC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7G"}