agent-bober 0.12.0 → 0.17.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 (726) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +243 -0
  4. package/README.md +238 -5
  5. package/agents/bober-architect.md +72 -0
  6. package/agents/bober-code-reviewer.md +238 -0
  7. package/agents/bober-curator.md +49 -0
  8. package/agents/bober-deployer.md +267 -0
  9. package/agents/bober-diagnoser.md +289 -0
  10. package/agents/bober-documenter.md +129 -0
  11. package/agents/bober-evaluator.md +135 -1
  12. package/agents/bober-generator.md +80 -3
  13. package/agents/bober-planner.md +47 -1
  14. package/agents/bober-postmortemer.md +185 -0
  15. package/agents/bober-researcher.md +38 -0
  16. package/dist/cli/commands/approve.d.ts +17 -0
  17. package/dist/cli/commands/approve.d.ts.map +1 -0
  18. package/dist/cli/commands/approve.js +64 -0
  19. package/dist/cli/commands/approve.js.map +1 -0
  20. package/dist/cli/commands/audit-show.d.ts +14 -0
  21. package/dist/cli/commands/audit-show.d.ts.map +1 -0
  22. package/dist/cli/commands/audit-show.js +85 -0
  23. package/dist/cli/commands/audit-show.js.map +1 -0
  24. package/dist/cli/commands/config.d.ts +10 -0
  25. package/dist/cli/commands/config.d.ts.map +1 -0
  26. package/dist/cli/commands/config.js +73 -0
  27. package/dist/cli/commands/config.js.map +1 -0
  28. package/dist/cli/commands/graph.d.ts +8 -0
  29. package/dist/cli/commands/graph.d.ts.map +1 -0
  30. package/dist/cli/commands/graph.js +219 -0
  31. package/dist/cli/commands/graph.js.map +1 -0
  32. package/dist/cli/commands/impact.d.ts +19 -0
  33. package/dist/cli/commands/impact.d.ts.map +1 -0
  34. package/dist/cli/commands/impact.js +191 -0
  35. package/dist/cli/commands/impact.js.map +1 -0
  36. package/dist/cli/commands/incident.d.ts +19 -0
  37. package/dist/cli/commands/incident.d.ts.map +1 -0
  38. package/dist/cli/commands/incident.js +324 -0
  39. package/dist/cli/commands/incident.js.map +1 -0
  40. package/dist/cli/commands/init.js +40 -1
  41. package/dist/cli/commands/init.js.map +1 -1
  42. package/dist/cli/commands/list-approvals.d.ts +16 -0
  43. package/dist/cli/commands/list-approvals.d.ts.map +1 -0
  44. package/dist/cli/commands/list-approvals.js +57 -0
  45. package/dist/cli/commands/list-approvals.js.map +1 -0
  46. package/dist/cli/commands/memory.d.ts +14 -0
  47. package/dist/cli/commands/memory.d.ts.map +1 -0
  48. package/dist/cli/commands/memory.js +132 -0
  49. package/dist/cli/commands/memory.js.map +1 -0
  50. package/dist/cli/commands/onboard.d.ts +3 -0
  51. package/dist/cli/commands/onboard.d.ts.map +1 -0
  52. package/dist/cli/commands/onboard.js +190 -0
  53. package/dist/cli/commands/onboard.js.map +1 -0
  54. package/dist/cli/commands/playbook.d.ts +17 -0
  55. package/dist/cli/commands/playbook.d.ts.map +1 -0
  56. package/dist/cli/commands/playbook.js +123 -0
  57. package/dist/cli/commands/playbook.js.map +1 -0
  58. package/dist/cli/commands/postmortem.d.ts +12 -0
  59. package/dist/cli/commands/postmortem.d.ts.map +1 -0
  60. package/dist/cli/commands/postmortem.js +67 -0
  61. package/dist/cli/commands/postmortem.js.map +1 -0
  62. package/dist/cli/commands/reject.d.ts +17 -0
  63. package/dist/cli/commands/reject.d.ts.map +1 -0
  64. package/dist/cli/commands/reject.js +52 -0
  65. package/dist/cli/commands/reject.js.map +1 -0
  66. package/dist/cli/commands/rollback.d.ts +21 -0
  67. package/dist/cli/commands/rollback.d.ts.map +1 -0
  68. package/dist/cli/commands/rollback.js +90 -0
  69. package/dist/cli/commands/rollback.js.map +1 -0
  70. package/dist/cli/commands/run.d.ts +9 -0
  71. package/dist/cli/commands/run.d.ts.map +1 -1
  72. package/dist/cli/commands/run.js +29 -0
  73. package/dist/cli/commands/run.js.map +1 -1
  74. package/dist/cli/commands/telemetry.d.ts +16 -0
  75. package/dist/cli/commands/telemetry.d.ts.map +1 -0
  76. package/dist/cli/commands/telemetry.js +152 -0
  77. package/dist/cli/commands/telemetry.js.map +1 -0
  78. package/dist/cli/commands/worktree.d.ts +12 -0
  79. package/dist/cli/commands/worktree.d.ts.map +1 -0
  80. package/dist/cli/commands/worktree.js +57 -0
  81. package/dist/cli/commands/worktree.js.map +1 -0
  82. package/dist/cli/index.js +56 -0
  83. package/dist/cli/index.js.map +1 -1
  84. package/dist/config/defaults.d.ts.map +1 -1
  85. package/dist/config/defaults.js +41 -3
  86. package/dist/config/defaults.js.map +1 -1
  87. package/dist/config/index.d.ts +1 -1
  88. package/dist/config/index.d.ts.map +1 -1
  89. package/dist/config/index.js +4 -0
  90. package/dist/config/index.js.map +1 -1
  91. package/dist/config/loader.d.ts.map +1 -1
  92. package/dist/config/loader.js +25 -1
  93. package/dist/config/loader.js.map +1 -1
  94. package/dist/config/role-providers.d.ts +29 -0
  95. package/dist/config/role-providers.d.ts.map +1 -0
  96. package/dist/config/role-providers.js +115 -0
  97. package/dist/config/role-providers.js.map +1 -0
  98. package/dist/config/schema.d.ts +1350 -61
  99. package/dist/config/schema.d.ts.map +1 -1
  100. package/dist/config/schema.js +189 -0
  101. package/dist/config/schema.js.map +1 -1
  102. package/dist/contracts/eval-result.d.ts +112 -56
  103. package/dist/contracts/eval-result.d.ts.map +1 -1
  104. package/dist/contracts/eval-result.js +3 -0
  105. package/dist/contracts/eval-result.js.map +1 -1
  106. package/dist/contracts/sprint-contract.d.ts +30 -30
  107. package/dist/fleet/aggregator.d.ts +5 -0
  108. package/dist/fleet/aggregator.d.ts.map +1 -0
  109. package/dist/fleet/aggregator.js +39 -0
  110. package/dist/fleet/aggregator.js.map +1 -0
  111. package/dist/fleet/child-config.d.ts +12 -0
  112. package/dist/fleet/child-config.d.ts.map +1 -0
  113. package/dist/fleet/child-config.js +38 -0
  114. package/dist/fleet/child-config.js.map +1 -0
  115. package/dist/fleet/coordinator.d.ts +25 -0
  116. package/dist/fleet/coordinator.d.ts.map +1 -0
  117. package/dist/fleet/coordinator.js +40 -0
  118. package/dist/fleet/coordinator.js.map +1 -0
  119. package/dist/fleet/index.d.ts +40 -0
  120. package/dist/fleet/index.d.ts.map +1 -0
  121. package/dist/fleet/index.js +117 -0
  122. package/dist/fleet/index.js.map +1 -0
  123. package/dist/fleet/manifest.d.ts +51 -0
  124. package/dist/fleet/manifest.d.ts.map +1 -0
  125. package/dist/fleet/manifest.js +32 -0
  126. package/dist/fleet/manifest.js.map +1 -0
  127. package/dist/fleet/reporter.d.ts +32 -0
  128. package/dist/fleet/reporter.d.ts.map +1 -0
  129. package/dist/fleet/reporter.js +71 -0
  130. package/dist/fleet/reporter.js.map +1 -0
  131. package/dist/fleet/runner.d.ts +48 -0
  132. package/dist/fleet/runner.d.ts.map +1 -0
  133. package/dist/fleet/runner.js +104 -0
  134. package/dist/fleet/runner.js.map +1 -0
  135. package/dist/fleet/scaffolder.d.ts +12 -0
  136. package/dist/fleet/scaffolder.d.ts.map +1 -0
  137. package/dist/fleet/scaffolder.js +82 -0
  138. package/dist/fleet/scaffolder.js.map +1 -0
  139. package/dist/fleet/types.d.ts +21 -0
  140. package/dist/fleet/types.d.ts.map +1 -0
  141. package/dist/fleet/types.js +2 -0
  142. package/dist/fleet/types.js.map +1 -0
  143. package/dist/graph/artifact-store.d.ts +14 -0
  144. package/dist/graph/artifact-store.d.ts.map +1 -0
  145. package/dist/graph/artifact-store.js +100 -0
  146. package/dist/graph/artifact-store.js.map +1 -0
  147. package/dist/graph/cli.d.ts +53 -0
  148. package/dist/graph/cli.d.ts.map +1 -0
  149. package/dist/graph/cli.js +181 -0
  150. package/dist/graph/cli.js.map +1 -0
  151. package/dist/graph/client.d.ts +64 -0
  152. package/dist/graph/client.d.ts.map +1 -0
  153. package/dist/graph/client.js +216 -0
  154. package/dist/graph/client.js.map +1 -0
  155. package/dist/graph/fallback.d.ts +13 -0
  156. package/dist/graph/fallback.d.ts.map +1 -0
  157. package/dist/graph/fallback.js +57 -0
  158. package/dist/graph/fallback.js.map +1 -0
  159. package/dist/graph/hook-handler.d.ts +50 -0
  160. package/dist/graph/hook-handler.d.ts.map +1 -0
  161. package/dist/graph/hook-handler.js +217 -0
  162. package/dist/graph/hook-handler.js.map +1 -0
  163. package/dist/graph/incidents.d.ts +59 -0
  164. package/dist/graph/incidents.d.ts.map +1 -0
  165. package/dist/graph/incidents.js +22 -0
  166. package/dist/graph/incidents.js.map +1 -0
  167. package/dist/graph/mcp-client.d.ts +51 -0
  168. package/dist/graph/mcp-client.d.ts.map +1 -0
  169. package/dist/graph/mcp-client.js +285 -0
  170. package/dist/graph/mcp-client.js.map +1 -0
  171. package/dist/graph/onboarding-composer.d.ts +30 -0
  172. package/dist/graph/onboarding-composer.d.ts.map +1 -0
  173. package/dist/graph/onboarding-composer.js +275 -0
  174. package/dist/graph/onboarding-composer.js.map +1 -0
  175. package/dist/graph/pipeline-lifecycle.d.ts +95 -0
  176. package/dist/graph/pipeline-lifecycle.d.ts.map +1 -0
  177. package/dist/graph/pipeline-lifecycle.js +341 -0
  178. package/dist/graph/pipeline-lifecycle.js.map +1 -0
  179. package/dist/graph/preflight-budgets.d.ts +52 -0
  180. package/dist/graph/preflight-budgets.d.ts.map +1 -0
  181. package/dist/graph/preflight-budgets.js +78 -0
  182. package/dist/graph/preflight-budgets.js.map +1 -0
  183. package/dist/graph/preflight-injector.d.ts +130 -0
  184. package/dist/graph/preflight-injector.d.ts.map +1 -0
  185. package/dist/graph/preflight-injector.js +618 -0
  186. package/dist/graph/preflight-injector.js.map +1 -0
  187. package/dist/graph/prereq.d.ts +12 -0
  188. package/dist/graph/prereq.d.ts.map +1 -0
  189. package/dist/graph/prereq.js +61 -0
  190. package/dist/graph/prereq.js.map +1 -0
  191. package/dist/graph/prompts.d.ts +42 -0
  192. package/dist/graph/prompts.d.ts.map +1 -0
  193. package/dist/graph/prompts.js +80 -0
  194. package/dist/graph/prompts.js.map +1 -0
  195. package/dist/graph/sandbox.d.ts +19 -0
  196. package/dist/graph/sandbox.d.ts.map +1 -0
  197. package/dist/graph/sandbox.js +25 -0
  198. package/dist/graph/sandbox.js.map +1 -0
  199. package/dist/graph/token-usage.d.ts +21 -0
  200. package/dist/graph/token-usage.d.ts.map +1 -0
  201. package/dist/graph/token-usage.js +22 -0
  202. package/dist/graph/token-usage.js.map +1 -0
  203. package/dist/graph/types.d.ts +129 -0
  204. package/dist/graph/types.d.ts.map +1 -0
  205. package/dist/graph/types.js +12 -0
  206. package/dist/graph/types.js.map +1 -0
  207. package/dist/incident/orchestrator.d.ts +168 -0
  208. package/dist/incident/orchestrator.d.ts.map +1 -0
  209. package/dist/incident/orchestrator.js +279 -0
  210. package/dist/incident/orchestrator.js.map +1 -0
  211. package/dist/incident/playbook-search.d.ts +67 -0
  212. package/dist/incident/playbook-search.d.ts.map +1 -0
  213. package/dist/incident/playbook-search.js +288 -0
  214. package/dist/incident/playbook-search.js.map +1 -0
  215. package/dist/incident/postmortem.d.ts +44 -0
  216. package/dist/incident/postmortem.d.ts.map +1 -0
  217. package/dist/incident/postmortem.js +486 -0
  218. package/dist/incident/postmortem.js.map +1 -0
  219. package/dist/incident/resolution-verify.d.ts +186 -0
  220. package/dist/incident/resolution-verify.d.ts.map +1 -0
  221. package/dist/incident/resolution-verify.js +210 -0
  222. package/dist/incident/resolution-verify.js.map +1 -0
  223. package/dist/incident/rollback.d.ts +137 -0
  224. package/dist/incident/rollback.d.ts.map +1 -0
  225. package/dist/incident/rollback.js +328 -0
  226. package/dist/incident/rollback.js.map +1 -0
  227. package/dist/incident/timeline.d.ts +147 -0
  228. package/dist/incident/timeline.d.ts.map +1 -0
  229. package/dist/incident/timeline.js +452 -0
  230. package/dist/incident/timeline.js.map +1 -0
  231. package/dist/incident/types.d.ts +335 -0
  232. package/dist/incident/types.d.ts.map +1 -0
  233. package/dist/incident/types.js +158 -0
  234. package/dist/incident/types.js.map +1 -0
  235. package/dist/index.d.ts +1 -1
  236. package/dist/index.d.ts.map +1 -1
  237. package/dist/index.js +1 -1
  238. package/dist/index.js.map +1 -1
  239. package/dist/mcp/event-stream.d.ts +46 -0
  240. package/dist/mcp/event-stream.d.ts.map +1 -0
  241. package/dist/mcp/event-stream.js +421 -0
  242. package/dist/mcp/event-stream.js.map +1 -0
  243. package/dist/mcp/external-client.d.ts +38 -0
  244. package/dist/mcp/external-client.d.ts.map +1 -0
  245. package/dist/mcp/external-client.js +121 -0
  246. package/dist/mcp/external-client.js.map +1 -0
  247. package/dist/mcp/run-manager.d.ts +74 -9
  248. package/dist/mcp/run-manager.d.ts.map +1 -1
  249. package/dist/mcp/run-manager.js +127 -31
  250. package/dist/mcp/run-manager.js.map +1 -1
  251. package/dist/mcp/server.d.ts.map +1 -1
  252. package/dist/mcp/server.js +56 -0
  253. package/dist/mcp/server.js.map +1 -1
  254. package/dist/mcp/tools/abort-run.d.ts +2 -0
  255. package/dist/mcp/tools/abort-run.d.ts.map +1 -0
  256. package/dist/mcp/tools/abort-run.js +62 -0
  257. package/dist/mcp/tools/abort-run.js.map +1 -0
  258. package/dist/mcp/tools/anchor.js +1 -1
  259. package/dist/mcp/tools/anchor.js.map +1 -1
  260. package/dist/mcp/tools/approve-checkpoint.d.ts +2 -0
  261. package/dist/mcp/tools/approve-checkpoint.d.ts.map +1 -0
  262. package/dist/mcp/tools/approve-checkpoint.js +70 -0
  263. package/dist/mcp/tools/approve-checkpoint.js.map +1 -0
  264. package/dist/mcp/tools/brownfield.js +1 -1
  265. package/dist/mcp/tools/brownfield.js.map +1 -1
  266. package/dist/mcp/tools/get-project-state.d.ts +2 -0
  267. package/dist/mcp/tools/get-project-state.d.ts.map +1 -0
  268. package/dist/mcp/tools/get-project-state.js +107 -0
  269. package/dist/mcp/tools/get-project-state.js.map +1 -0
  270. package/dist/mcp/tools/get-run-status.d.ts +2 -0
  271. package/dist/mcp/tools/get-run-status.d.ts.map +1 -0
  272. package/dist/mcp/tools/get-run-status.js +40 -0
  273. package/dist/mcp/tools/get-run-status.js.map +1 -0
  274. package/dist/mcp/tools/graph-schemas.d.ts +100 -0
  275. package/dist/mcp/tools/graph-schemas.d.ts.map +1 -0
  276. package/dist/mcp/tools/graph-schemas.js +39 -0
  277. package/dist/mcp/tools/graph-schemas.js.map +1 -0
  278. package/dist/mcp/tools/graph.d.ts +19 -0
  279. package/dist/mcp/tools/graph.d.ts.map +1 -0
  280. package/dist/mcp/tools/graph.js +263 -0
  281. package/dist/mcp/tools/graph.js.map +1 -0
  282. package/dist/mcp/tools/incident.d.ts +2 -0
  283. package/dist/mcp/tools/incident.d.ts.map +1 -0
  284. package/dist/mcp/tools/incident.js +246 -0
  285. package/dist/mcp/tools/incident.js.map +1 -0
  286. package/dist/mcp/tools/index.d.ts +38 -18
  287. package/dist/mcp/tools/index.d.ts.map +1 -1
  288. package/dist/mcp/tools/index.js +74 -18
  289. package/dist/mcp/tools/index.js.map +1 -1
  290. package/dist/mcp/tools/init.d.ts.map +1 -1
  291. package/dist/mcp/tools/init.js +2 -0
  292. package/dist/mcp/tools/init.js.map +1 -1
  293. package/dist/mcp/tools/list-active-runs.d.ts +2 -0
  294. package/dist/mcp/tools/list-active-runs.d.ts.map +1 -0
  295. package/dist/mcp/tools/list-active-runs.js +35 -0
  296. package/dist/mcp/tools/list-active-runs.js.map +1 -0
  297. package/dist/mcp/tools/list-pending-approvals.d.ts +2 -0
  298. package/dist/mcp/tools/list-pending-approvals.d.ts.map +1 -0
  299. package/dist/mcp/tools/list-pending-approvals.js +40 -0
  300. package/dist/mcp/tools/list-pending-approvals.js.map +1 -0
  301. package/dist/mcp/tools/list-projects.d.ts +2 -0
  302. package/dist/mcp/tools/list-projects.d.ts.map +1 -0
  303. package/dist/mcp/tools/list-projects.js +101 -0
  304. package/dist/mcp/tools/list-projects.js.map +1 -0
  305. package/dist/mcp/tools/list-specs.d.ts +2 -0
  306. package/dist/mcp/tools/list-specs.d.ts.map +1 -0
  307. package/dist/mcp/tools/list-specs.js +48 -0
  308. package/dist/mcp/tools/list-specs.js.map +1 -0
  309. package/dist/mcp/tools/playbook.d.ts +2 -0
  310. package/dist/mcp/tools/playbook.d.ts.map +1 -0
  311. package/dist/mcp/tools/playbook.js +104 -0
  312. package/dist/mcp/tools/playbook.js.map +1 -0
  313. package/dist/mcp/tools/postmortem.d.ts +2 -0
  314. package/dist/mcp/tools/postmortem.d.ts.map +1 -0
  315. package/dist/mcp/tools/postmortem.js +75 -0
  316. package/dist/mcp/tools/postmortem.js.map +1 -0
  317. package/dist/mcp/tools/react.js +1 -1
  318. package/dist/mcp/tools/react.js.map +1 -1
  319. package/dist/mcp/tools/reject-checkpoint.d.ts +2 -0
  320. package/dist/mcp/tools/reject-checkpoint.d.ts.map +1 -0
  321. package/dist/mcp/tools/reject-checkpoint.js +79 -0
  322. package/dist/mcp/tools/reject-checkpoint.js.map +1 -0
  323. package/dist/mcp/tools/rollback.d.ts +2 -0
  324. package/dist/mcp/tools/rollback.d.ts.map +1 -0
  325. package/dist/mcp/tools/rollback.js +78 -0
  326. package/dist/mcp/tools/rollback.js.map +1 -0
  327. package/dist/mcp/tools/run-in-worktree.d.ts +2 -0
  328. package/dist/mcp/tools/run-in-worktree.d.ts.map +1 -0
  329. package/dist/mcp/tools/run-in-worktree.js +90 -0
  330. package/dist/mcp/tools/run-in-worktree.js.map +1 -0
  331. package/dist/mcp/tools/run.js +1 -1
  332. package/dist/mcp/tools/run.js.map +1 -1
  333. package/dist/mcp/tools/solidity.js +1 -1
  334. package/dist/mcp/tools/solidity.js.map +1 -1
  335. package/dist/mcp/tools/status.d.ts.map +1 -1
  336. package/dist/mcp/tools/status.js +11 -0
  337. package/dist/mcp/tools/status.js.map +1 -1
  338. package/dist/mcp/tools/subscribe-events.d.ts +2 -0
  339. package/dist/mcp/tools/subscribe-events.d.ts.map +1 -0
  340. package/dist/mcp/tools/subscribe-events.js +48 -0
  341. package/dist/mcp/tools/subscribe-events.js.map +1 -0
  342. package/dist/mcp/tools/unsubscribe-events.d.ts +2 -0
  343. package/dist/mcp/tools/unsubscribe-events.d.ts.map +1 -0
  344. package/dist/mcp/tools/unsubscribe-events.js +45 -0
  345. package/dist/mcp/tools/unsubscribe-events.js.map +1 -0
  346. package/dist/orchestrator/agent-loader.d.ts +16 -0
  347. package/dist/orchestrator/agent-loader.d.ts.map +1 -1
  348. package/dist/orchestrator/agent-loader.js +30 -0
  349. package/dist/orchestrator/agent-loader.js.map +1 -1
  350. package/dist/orchestrator/agentic-loop.d.ts +51 -0
  351. package/dist/orchestrator/agentic-loop.d.ts.map +1 -1
  352. package/dist/orchestrator/agentic-loop.js +123 -4
  353. package/dist/orchestrator/agentic-loop.js.map +1 -1
  354. package/dist/orchestrator/arch-lenses.d.ts +7 -0
  355. package/dist/orchestrator/arch-lenses.d.ts.map +1 -0
  356. package/dist/orchestrator/arch-lenses.js +22 -0
  357. package/dist/orchestrator/arch-lenses.js.map +1 -0
  358. package/dist/orchestrator/architect-agent.d.ts +16 -0
  359. package/dist/orchestrator/architect-agent.d.ts.map +1 -1
  360. package/dist/orchestrator/architect-agent.js +546 -9
  361. package/dist/orchestrator/architect-agent.js.map +1 -1
  362. package/dist/orchestrator/checkpoints/audit.d.ts +128 -0
  363. package/dist/orchestrator/checkpoints/audit.d.ts.map +1 -0
  364. package/dist/orchestrator/checkpoints/audit.js +272 -0
  365. package/dist/orchestrator/checkpoints/audit.js.map +1 -0
  366. package/dist/orchestrator/checkpoints/feedback-router.d.ts +213 -0
  367. package/dist/orchestrator/checkpoints/feedback-router.d.ts.map +1 -0
  368. package/dist/orchestrator/checkpoints/feedback-router.js +438 -0
  369. package/dist/orchestrator/checkpoints/feedback-router.js.map +1 -0
  370. package/dist/orchestrator/checkpoints/index.d.ts +11 -0
  371. package/dist/orchestrator/checkpoints/index.d.ts.map +1 -0
  372. package/dist/orchestrator/checkpoints/index.js +12 -0
  373. package/dist/orchestrator/checkpoints/index.js.map +1 -0
  374. package/dist/orchestrator/checkpoints/mechanisms/cli.d.ts +35 -0
  375. package/dist/orchestrator/checkpoints/mechanisms/cli.d.ts.map +1 -0
  376. package/dist/orchestrator/checkpoints/mechanisms/cli.js +153 -0
  377. package/dist/orchestrator/checkpoints/mechanisms/cli.js.map +1 -0
  378. package/dist/orchestrator/checkpoints/mechanisms/disk.d.ts +34 -0
  379. package/dist/orchestrator/checkpoints/mechanisms/disk.d.ts.map +1 -0
  380. package/dist/orchestrator/checkpoints/mechanisms/disk.js +139 -0
  381. package/dist/orchestrator/checkpoints/mechanisms/disk.js.map +1 -0
  382. package/dist/orchestrator/checkpoints/mechanisms/pr.d.ts +141 -0
  383. package/dist/orchestrator/checkpoints/mechanisms/pr.d.ts.map +1 -0
  384. package/dist/orchestrator/checkpoints/mechanisms/pr.js +445 -0
  385. package/dist/orchestrator/checkpoints/mechanisms/pr.js.map +1 -0
  386. package/dist/orchestrator/checkpoints/noop.d.ts +12 -0
  387. package/dist/orchestrator/checkpoints/noop.d.ts.map +1 -0
  388. package/dist/orchestrator/checkpoints/noop.js +13 -0
  389. package/dist/orchestrator/checkpoints/noop.js.map +1 -0
  390. package/dist/orchestrator/checkpoints/registry.d.ts +48 -0
  391. package/dist/orchestrator/checkpoints/registry.d.ts.map +1 -0
  392. package/dist/orchestrator/checkpoints/registry.js +89 -0
  393. package/dist/orchestrator/checkpoints/registry.js.map +1 -0
  394. package/dist/orchestrator/checkpoints/renderers/_util.d.ts +50 -0
  395. package/dist/orchestrator/checkpoints/renderers/_util.d.ts.map +1 -0
  396. package/dist/orchestrator/checkpoints/renderers/_util.js +137 -0
  397. package/dist/orchestrator/checkpoints/renderers/_util.js.map +1 -0
  398. package/dist/orchestrator/checkpoints/renderers/code-review.d.ts +15 -0
  399. package/dist/orchestrator/checkpoints/renderers/code-review.d.ts.map +1 -0
  400. package/dist/orchestrator/checkpoints/renderers/code-review.js +66 -0
  401. package/dist/orchestrator/checkpoints/renderers/code-review.js.map +1 -0
  402. package/dist/orchestrator/checkpoints/renderers/curator-briefing.d.ts +15 -0
  403. package/dist/orchestrator/checkpoints/renderers/curator-briefing.d.ts.map +1 -0
  404. package/dist/orchestrator/checkpoints/renderers/curator-briefing.js +40 -0
  405. package/dist/orchestrator/checkpoints/renderers/curator-briefing.js.map +1 -0
  406. package/dist/orchestrator/checkpoints/renderers/eval-result.d.ts +15 -0
  407. package/dist/orchestrator/checkpoints/renderers/eval-result.d.ts.map +1 -0
  408. package/dist/orchestrator/checkpoints/renderers/eval-result.js +54 -0
  409. package/dist/orchestrator/checkpoints/renderers/eval-result.js.map +1 -0
  410. package/dist/orchestrator/checkpoints/renderers/generator-diff.d.ts +49 -0
  411. package/dist/orchestrator/checkpoints/renderers/generator-diff.d.ts.map +1 -0
  412. package/dist/orchestrator/checkpoints/renderers/generator-diff.js +154 -0
  413. package/dist/orchestrator/checkpoints/renderers/generator-diff.js.map +1 -0
  414. package/dist/orchestrator/checkpoints/renderers/pipeline-summary.d.ts +15 -0
  415. package/dist/orchestrator/checkpoints/renderers/pipeline-summary.d.ts.map +1 -0
  416. package/dist/orchestrator/checkpoints/renderers/pipeline-summary.js +59 -0
  417. package/dist/orchestrator/checkpoints/renderers/pipeline-summary.js.map +1 -0
  418. package/dist/orchestrator/checkpoints/renderers/plan.d.ts +15 -0
  419. package/dist/orchestrator/checkpoints/renderers/plan.d.ts.map +1 -0
  420. package/dist/orchestrator/checkpoints/renderers/plan.js +34 -0
  421. package/dist/orchestrator/checkpoints/renderers/plan.js.map +1 -0
  422. package/dist/orchestrator/checkpoints/renderers/registry.d.ts +43 -0
  423. package/dist/orchestrator/checkpoints/renderers/registry.d.ts.map +1 -0
  424. package/dist/orchestrator/checkpoints/renderers/registry.js +83 -0
  425. package/dist/orchestrator/checkpoints/renderers/registry.js.map +1 -0
  426. package/dist/orchestrator/checkpoints/renderers/research.d.ts +15 -0
  427. package/dist/orchestrator/checkpoints/renderers/research.d.ts.map +1 -0
  428. package/dist/orchestrator/checkpoints/renderers/research.js +39 -0
  429. package/dist/orchestrator/checkpoints/renderers/research.js.map +1 -0
  430. package/dist/orchestrator/checkpoints/renderers/sprint-contract.d.ts +20 -0
  431. package/dist/orchestrator/checkpoints/renderers/sprint-contract.d.ts.map +1 -0
  432. package/dist/orchestrator/checkpoints/renderers/sprint-contract.js +57 -0
  433. package/dist/orchestrator/checkpoints/renderers/sprint-contract.js.map +1 -0
  434. package/dist/orchestrator/checkpoints/renderers/sprint-summary.d.ts +15 -0
  435. package/dist/orchestrator/checkpoints/renderers/sprint-summary.d.ts.map +1 -0
  436. package/dist/orchestrator/checkpoints/renderers/sprint-summary.js +38 -0
  437. package/dist/orchestrator/checkpoints/renderers/sprint-summary.js.map +1 -0
  438. package/dist/orchestrator/checkpoints/sites.d.ts +22 -0
  439. package/dist/orchestrator/checkpoints/sites.d.ts.map +1 -0
  440. package/dist/orchestrator/checkpoints/sites.js +57 -0
  441. package/dist/orchestrator/checkpoints/sites.js.map +1 -0
  442. package/dist/orchestrator/checkpoints/types.d.ts +51 -0
  443. package/dist/orchestrator/checkpoints/types.d.ts.map +1 -0
  444. package/dist/orchestrator/checkpoints/types.js +9 -0
  445. package/dist/orchestrator/checkpoints/types.js.map +1 -0
  446. package/dist/orchestrator/code-reviewer-agent.d.ts +50 -0
  447. package/dist/orchestrator/code-reviewer-agent.d.ts.map +1 -0
  448. package/dist/orchestrator/code-reviewer-agent.js +283 -0
  449. package/dist/orchestrator/code-reviewer-agent.js.map +1 -0
  450. package/dist/orchestrator/curator-agent.d.ts.map +1 -1
  451. package/dist/orchestrator/curator-agent.js +60 -9
  452. package/dist/orchestrator/curator-agent.js.map +1 -1
  453. package/dist/orchestrator/deploy/classify.d.ts +31 -0
  454. package/dist/orchestrator/deploy/classify.d.ts.map +1 -0
  455. package/dist/orchestrator/deploy/classify.js +109 -0
  456. package/dist/orchestrator/deploy/classify.js.map +1 -0
  457. package/dist/orchestrator/deploy/execute.d.ts +45 -0
  458. package/dist/orchestrator/deploy/execute.d.ts.map +1 -0
  459. package/dist/orchestrator/deploy/execute.js +146 -0
  460. package/dist/orchestrator/deploy/execute.js.map +1 -0
  461. package/dist/orchestrator/deploy/executor.d.ts +22 -0
  462. package/dist/orchestrator/deploy/executor.d.ts.map +1 -0
  463. package/dist/orchestrator/deploy/executor.js +31 -0
  464. package/dist/orchestrator/deploy/executor.js.map +1 -0
  465. package/dist/orchestrator/deploy/index.d.ts +21 -0
  466. package/dist/orchestrator/deploy/index.d.ts.map +1 -0
  467. package/dist/orchestrator/deploy/index.js +21 -0
  468. package/dist/orchestrator/deploy/index.js.map +1 -0
  469. package/dist/orchestrator/deploy/resolve.d.ts +51 -0
  470. package/dist/orchestrator/deploy/resolve.d.ts.map +1 -0
  471. package/dist/orchestrator/deploy/resolve.js +53 -0
  472. package/dist/orchestrator/deploy/resolve.js.map +1 -0
  473. package/dist/orchestrator/deploy/spawn.d.ts +60 -0
  474. package/dist/orchestrator/deploy/spawn.d.ts.map +1 -0
  475. package/dist/orchestrator/deploy/spawn.js +62 -0
  476. package/dist/orchestrator/deploy/spawn.js.map +1 -0
  477. package/dist/orchestrator/deploy/types.d.ts +98 -0
  478. package/dist/orchestrator/deploy/types.d.ts.map +1 -0
  479. package/dist/orchestrator/deploy/types.js +39 -0
  480. package/dist/orchestrator/deploy/types.js.map +1 -0
  481. package/dist/orchestrator/documenter-agent.d.ts +57 -0
  482. package/dist/orchestrator/documenter-agent.d.ts.map +1 -0
  483. package/dist/orchestrator/documenter-agent.js +195 -0
  484. package/dist/orchestrator/documenter-agent.js.map +1 -0
  485. package/dist/orchestrator/environment.d.ts +45 -0
  486. package/dist/orchestrator/environment.d.ts.map +1 -0
  487. package/dist/orchestrator/environment.js +151 -0
  488. package/dist/orchestrator/environment.js.map +1 -0
  489. package/dist/orchestrator/eval-lenses.d.ts +7 -0
  490. package/dist/orchestrator/eval-lenses.d.ts.map +1 -0
  491. package/dist/orchestrator/eval-lenses.js +19 -0
  492. package/dist/orchestrator/eval-lenses.js.map +1 -0
  493. package/dist/orchestrator/eval-persist.d.ts +25 -0
  494. package/dist/orchestrator/eval-persist.d.ts.map +1 -0
  495. package/dist/orchestrator/eval-persist.js +74 -0
  496. package/dist/orchestrator/eval-persist.js.map +1 -0
  497. package/dist/orchestrator/evaluator-agent.d.ts +23 -0
  498. package/dist/orchestrator/evaluator-agent.d.ts.map +1 -1
  499. package/dist/orchestrator/evaluator-agent.js +80 -10
  500. package/dist/orchestrator/evaluator-agent.js.map +1 -1
  501. package/dist/orchestrator/generator-agent.d.ts.map +1 -1
  502. package/dist/orchestrator/generator-agent.js +53 -8
  503. package/dist/orchestrator/generator-agent.js.map +1 -1
  504. package/dist/orchestrator/memory/distill.d.ts +60 -0
  505. package/dist/orchestrator/memory/distill.d.ts.map +1 -0
  506. package/dist/orchestrator/memory/distill.js +177 -0
  507. package/dist/orchestrator/memory/distill.js.map +1 -0
  508. package/dist/orchestrator/memory/eval-source.d.ts +20 -0
  509. package/dist/orchestrator/memory/eval-source.d.ts.map +1 -0
  510. package/dist/orchestrator/memory/eval-source.js +88 -0
  511. package/dist/orchestrator/memory/eval-source.js.map +1 -0
  512. package/dist/orchestrator/memory/retrieve.d.ts +45 -0
  513. package/dist/orchestrator/memory/retrieve.d.ts.map +1 -0
  514. package/dist/orchestrator/memory/retrieve.js +102 -0
  515. package/dist/orchestrator/memory/retrieve.js.map +1 -0
  516. package/dist/orchestrator/model-resolver.d.ts.map +1 -1
  517. package/dist/orchestrator/model-resolver.js +15 -1
  518. package/dist/orchestrator/model-resolver.js.map +1 -1
  519. package/dist/orchestrator/observability/index.d.ts +12 -0
  520. package/dist/orchestrator/observability/index.d.ts.map +1 -0
  521. package/dist/orchestrator/observability/index.js +12 -0
  522. package/dist/orchestrator/observability/index.js.map +1 -0
  523. package/dist/orchestrator/observability/merge.d.ts +73 -0
  524. package/dist/orchestrator/observability/merge.d.ts.map +1 -0
  525. package/dist/orchestrator/observability/merge.js +110 -0
  526. package/dist/orchestrator/observability/merge.js.map +1 -0
  527. package/dist/orchestrator/pipeline.d.ts +31 -0
  528. package/dist/orchestrator/pipeline.d.ts.map +1 -1
  529. package/dist/orchestrator/pipeline.js +267 -5
  530. package/dist/orchestrator/pipeline.js.map +1 -1
  531. package/dist/orchestrator/planner-agent.d.ts +22 -1
  532. package/dist/orchestrator/planner-agent.d.ts.map +1 -1
  533. package/dist/orchestrator/planner-agent.js +165 -8
  534. package/dist/orchestrator/planner-agent.js.map +1 -1
  535. package/dist/orchestrator/research-agent.d.ts.map +1 -1
  536. package/dist/orchestrator/research-agent.js +48 -11
  537. package/dist/orchestrator/research-agent.js.map +1 -1
  538. package/dist/orchestrator/tools/handlers.d.ts +16 -0
  539. package/dist/orchestrator/tools/handlers.d.ts.map +1 -1
  540. package/dist/orchestrator/tools/handlers.js +30 -5
  541. package/dist/orchestrator/tools/handlers.js.map +1 -1
  542. package/dist/orchestrator/tools/index.d.ts +84 -1
  543. package/dist/orchestrator/tools/index.d.ts.map +1 -1
  544. package/dist/orchestrator/tools/index.js +164 -1
  545. package/dist/orchestrator/tools/index.js.map +1 -1
  546. package/dist/orchestrator/tools/schemas.js +5 -5
  547. package/dist/orchestrator/tools/schemas.js.map +1 -1
  548. package/dist/orchestrator/workflow/args-builder.d.ts +35 -0
  549. package/dist/orchestrator/workflow/args-builder.d.ts.map +1 -0
  550. package/dist/orchestrator/workflow/args-builder.js +142 -0
  551. package/dist/orchestrator/workflow/args-builder.js.map +1 -0
  552. package/dist/orchestrator/workflow/budget.d.ts +57 -0
  553. package/dist/orchestrator/workflow/budget.d.ts.map +1 -0
  554. package/dist/orchestrator/workflow/budget.js +80 -0
  555. package/dist/orchestrator/workflow/budget.js.map +1 -0
  556. package/dist/orchestrator/workflow/conformance.d.ts +27 -0
  557. package/dist/orchestrator/workflow/conformance.d.ts.map +1 -0
  558. package/dist/orchestrator/workflow/conformance.js +111 -0
  559. package/dist/orchestrator/workflow/conformance.js.map +1 -0
  560. package/dist/orchestrator/workflow/eligibility.d.ts +8 -0
  561. package/dist/orchestrator/workflow/eligibility.d.ts.map +1 -0
  562. package/dist/orchestrator/workflow/eligibility.js +10 -0
  563. package/dist/orchestrator/workflow/eligibility.js.map +1 -0
  564. package/dist/orchestrator/workflow/engine.d.ts +10 -0
  565. package/dist/orchestrator/workflow/engine.d.ts.map +1 -0
  566. package/dist/orchestrator/workflow/engine.js +2 -0
  567. package/dist/orchestrator/workflow/engine.js.map +1 -0
  568. package/dist/orchestrator/workflow/errors.d.ts +13 -0
  569. package/dist/orchestrator/workflow/errors.d.ts.map +1 -0
  570. package/dist/orchestrator/workflow/errors.js +26 -0
  571. package/dist/orchestrator/workflow/errors.js.map +1 -0
  572. package/dist/orchestrator/workflow/flusher.d.ts +19 -0
  573. package/dist/orchestrator/workflow/flusher.d.ts.map +1 -0
  574. package/dist/orchestrator/workflow/flusher.js +81 -0
  575. package/dist/orchestrator/workflow/flusher.js.map +1 -0
  576. package/dist/orchestrator/workflow/interpreter.d.ts +48 -0
  577. package/dist/orchestrator/workflow/interpreter.d.ts.map +1 -0
  578. package/dist/orchestrator/workflow/interpreter.js +92 -0
  579. package/dist/orchestrator/workflow/interpreter.js.map +1 -0
  580. package/dist/orchestrator/workflow/pure-sprint.d.ts +65 -0
  581. package/dist/orchestrator/workflow/pure-sprint.d.ts.map +1 -0
  582. package/dist/orchestrator/workflow/pure-sprint.js +82 -0
  583. package/dist/orchestrator/workflow/pure-sprint.js.map +1 -0
  584. package/dist/orchestrator/workflow/reconciler.d.ts +15 -0
  585. package/dist/orchestrator/workflow/reconciler.d.ts.map +1 -0
  586. package/dist/orchestrator/workflow/reconciler.js +65 -0
  587. package/dist/orchestrator/workflow/reconciler.js.map +1 -0
  588. package/dist/orchestrator/workflow/resume-cursor.d.ts +10 -0
  589. package/dist/orchestrator/workflow/resume-cursor.d.ts.map +1 -0
  590. package/dist/orchestrator/workflow/resume-cursor.js +25 -0
  591. package/dist/orchestrator/workflow/resume-cursor.js.map +1 -0
  592. package/dist/orchestrator/workflow/retry.d.ts +50 -0
  593. package/dist/orchestrator/workflow/retry.d.ts.map +1 -0
  594. package/dist/orchestrator/workflow/retry.js +100 -0
  595. package/dist/orchestrator/workflow/retry.js.map +1 -0
  596. package/dist/orchestrator/workflow/scheduler.d.ts +87 -0
  597. package/dist/orchestrator/workflow/scheduler.d.ts.map +1 -0
  598. package/dist/orchestrator/workflow/scheduler.js +158 -0
  599. package/dist/orchestrator/workflow/scheduler.js.map +1 -0
  600. package/dist/orchestrator/workflow/selector.d.ts +26 -0
  601. package/dist/orchestrator/workflow/selector.d.ts.map +1 -0
  602. package/dist/orchestrator/workflow/selector.js +54 -0
  603. package/dist/orchestrator/workflow/selector.js.map +1 -0
  604. package/dist/orchestrator/workflow/synthesizer.d.ts +52 -0
  605. package/dist/orchestrator/workflow/synthesizer.d.ts.map +1 -0
  606. package/dist/orchestrator/workflow/synthesizer.js +75 -0
  607. package/dist/orchestrator/workflow/synthesizer.js.map +1 -0
  608. package/dist/orchestrator/workflow/ts-engine.d.ts +13 -0
  609. package/dist/orchestrator/workflow/ts-engine.d.ts.map +1 -0
  610. package/dist/orchestrator/workflow/ts-engine.js +14 -0
  611. package/dist/orchestrator/workflow/ts-engine.js.map +1 -0
  612. package/dist/orchestrator/workflow/types.d.ts +55 -0
  613. package/dist/orchestrator/workflow/types.d.ts.map +1 -0
  614. package/dist/orchestrator/workflow/types.js +3 -0
  615. package/dist/orchestrator/workflow/types.js.map +1 -0
  616. package/dist/orchestrator/workflow/workflow-engine.d.ts +31 -0
  617. package/dist/orchestrator/workflow/workflow-engine.d.ts.map +1 -0
  618. package/dist/orchestrator/workflow/workflow-engine.js +70 -0
  619. package/dist/orchestrator/workflow/workflow-engine.js.map +1 -0
  620. package/dist/orchestrator/worktree.d.ts +18 -0
  621. package/dist/orchestrator/worktree.d.ts.map +1 -0
  622. package/dist/orchestrator/worktree.js +129 -0
  623. package/dist/orchestrator/worktree.js.map +1 -0
  624. package/dist/providers/anthropic.d.ts +8 -1
  625. package/dist/providers/anthropic.d.ts.map +1 -1
  626. package/dist/providers/anthropic.js +135 -11
  627. package/dist/providers/anthropic.js.map +1 -1
  628. package/dist/providers/claude-code.d.ts +44 -0
  629. package/dist/providers/claude-code.d.ts.map +1 -0
  630. package/dist/providers/claude-code.js +143 -0
  631. package/dist/providers/claude-code.js.map +1 -0
  632. package/dist/providers/factory.d.ts +16 -2
  633. package/dist/providers/factory.d.ts.map +1 -1
  634. package/dist/providers/factory.js +101 -14
  635. package/dist/providers/factory.js.map +1 -1
  636. package/dist/providers/google.d.ts.map +1 -1
  637. package/dist/providers/google.js +32 -3
  638. package/dist/providers/google.js.map +1 -1
  639. package/dist/providers/index.d.ts +4 -2
  640. package/dist/providers/index.d.ts.map +1 -1
  641. package/dist/providers/index.js +3 -1
  642. package/dist/providers/index.js.map +1 -1
  643. package/dist/providers/openai.d.ts.map +1 -1
  644. package/dist/providers/openai.js +28 -3
  645. package/dist/providers/openai.js.map +1 -1
  646. package/dist/providers/preflight.d.ts +22 -0
  647. package/dist/providers/preflight.d.ts.map +1 -0
  648. package/dist/providers/preflight.js +54 -0
  649. package/dist/providers/preflight.js.map +1 -0
  650. package/dist/providers/structured.d.ts +130 -0
  651. package/dist/providers/structured.d.ts.map +1 -0
  652. package/dist/providers/structured.js +205 -0
  653. package/dist/providers/structured.js.map +1 -0
  654. package/dist/providers/types.d.ts +53 -2
  655. package/dist/providers/types.d.ts.map +1 -1
  656. package/dist/state/approval-state.d.ts +74 -0
  657. package/dist/state/approval-state.d.ts.map +1 -0
  658. package/dist/state/approval-state.js +127 -0
  659. package/dist/state/approval-state.js.map +1 -0
  660. package/dist/state/history-rotation.d.ts +17 -0
  661. package/dist/state/history-rotation.d.ts.map +1 -0
  662. package/dist/state/history-rotation.js +84 -0
  663. package/dist/state/history-rotation.js.map +1 -0
  664. package/dist/state/history.d.ts +16 -4
  665. package/dist/state/history.d.ts.map +1 -1
  666. package/dist/state/history.js +62 -20
  667. package/dist/state/history.js.map +1 -1
  668. package/dist/state/index.d.ts +4 -1
  669. package/dist/state/index.d.ts.map +1 -1
  670. package/dist/state/index.js +5 -2
  671. package/dist/state/index.js.map +1 -1
  672. package/dist/state/memory.d.ts +60 -0
  673. package/dist/state/memory.d.ts.map +1 -0
  674. package/dist/state/memory.js +242 -0
  675. package/dist/state/memory.js.map +1 -0
  676. package/dist/state/review-state.d.ts +15 -0
  677. package/dist/state/review-state.d.ts.map +1 -0
  678. package/dist/state/review-state.js +51 -0
  679. package/dist/state/review-state.js.map +1 -0
  680. package/dist/state/run-state.d.ts +39 -0
  681. package/dist/state/run-state.d.ts.map +1 -0
  682. package/dist/state/run-state.js +101 -0
  683. package/dist/state/run-state.js.map +1 -0
  684. package/dist/telemetry/emit.d.ts +41 -0
  685. package/dist/telemetry/emit.d.ts.map +1 -0
  686. package/dist/telemetry/emit.js +65 -0
  687. package/dist/telemetry/emit.js.map +1 -0
  688. package/dist/utils/git.d.ts +27 -0
  689. package/dist/utils/git.d.ts.map +1 -1
  690. package/dist/utils/git.js +50 -0
  691. package/dist/utils/git.js.map +1 -1
  692. package/hooks/hooks.json +27 -1
  693. package/hooks/session-start +42 -0
  694. package/package.json +13 -6
  695. package/scripts/check-prereqs.sh +12 -0
  696. package/scripts/e2e-graph-smoke.sh +167 -0
  697. package/scripts/graph-hook.mjs +151 -0
  698. package/scripts/run-kpi-gate.mjs +245 -0
  699. package/scripts/spike-claude-code-provider.mjs +66 -0
  700. package/scripts/spike-deepseek.mjs +63 -0
  701. package/scripts/sync-skills.mjs +4 -1
  702. package/scripts/sync-targets.json +12 -0
  703. package/scripts/update-all.mjs +255 -0
  704. package/skills/bober.architect/SKILL.md +13 -0
  705. package/skills/bober.architect/references/arch-lens-panel.md +126 -0
  706. package/skills/bober.code-review/SKILL.md +186 -0
  707. package/skills/bober.debug/SKILL.md +300 -0
  708. package/skills/bober.deploy/SKILL.md +262 -0
  709. package/skills/bober.diagnose/SKILL.md +254 -0
  710. package/skills/bober.eval/SKILL.md +9 -0
  711. package/skills/bober.eval/references/lens-panel.md +115 -0
  712. package/skills/bober.graph/SKILL.md +85 -0
  713. package/skills/bober.impact/SKILL.md +101 -0
  714. package/skills/bober.incident/SKILL.md +245 -0
  715. package/skills/bober.onboard/SKILL.md +84 -0
  716. package/skills/bober.plan/SKILL.md +16 -0
  717. package/skills/bober.postmortem/SKILL.md +231 -0
  718. package/skills/bober.run/SKILL.md +23 -4
  719. package/skills/bober.run/references/lens-panel.md +115 -0
  720. package/skills/bober.runbook/SKILL.md +335 -0
  721. package/skills/bober.sprint/SKILL.md +44 -2
  722. package/skills/bober.sprint/references/lens-panel.md +115 -0
  723. package/skills/bober.using-bober/SKILL.md +133 -0
  724. package/skills/bober.verify/SKILL.md +143 -0
  725. package/skills/shared/arch-lens-panel.md +126 -0
  726. package/skills/shared/lens-panel.md +115 -0
@@ -0,0 +1,618 @@
1
+ /**
2
+ * PreflightContextInjector — ADR-9 Primary KPI Lever.
3
+ *
4
+ * Runs deterministic per-role graph queries before each agent spawn.
5
+ * Formats results as markdown and prepends to the agent's first message.
6
+ *
7
+ * Key invariants:
8
+ * - DETERMINISTIC: same contract + role → same output. No LLM in this path.
9
+ * - NEVER BLOCKS SPAWN: 5s timeout + try/catch; returns firstMessage unchanged on failure.
10
+ * - RESEARCHER-PHASE2 ISOLATION: NEVER uses contract.title/description/feature text.
11
+ * Uses ONLY overrides.questionKeywords.
12
+ * - graph.enabled=false or engineHealth!='ready' → returns firstMessage unchanged.
13
+ */
14
+ import { execa } from "execa";
15
+ import { enforceBudget } from "./preflight-budgets.js";
16
+ import { graphPipelineLifecycle } from "./pipeline-lifecycle.js";
17
+ import { appendHistory } from "../state/history.js";
18
+ /**
19
+ * Maps an agent role to the pipeline phase recorded in graph-preflight
20
+ * telemetry (the `phase` field required by HistoryEntrySchema).
21
+ */
22
+ const ROLE_TO_PHASE = {
23
+ planner: "planning",
24
+ "researcher-phase1": "planning",
25
+ "researcher-phase2": "planning",
26
+ architect: "planning",
27
+ curator: "curating",
28
+ generator: "generating",
29
+ evaluator: "evaluating",
30
+ };
31
+ // ── Query batch definitions ────────────────────────────────────────
32
+ /**
33
+ * Per-role deterministic query batch factory functions.
34
+ *
35
+ * Each function receives a PreflightInput and returns a PrefetchSpec[].
36
+ * The batch is deterministic: same input → same specs → same output.
37
+ *
38
+ * CRITICAL: 'researcher-phase2' uses ONLY input.questionKeywords.
39
+ * It MUST NOT access contract.title, contract.description, or contract.feature.
40
+ * The PreflightInput for this role is built exclusively from overrides.questionKeywords.
41
+ */
42
+ export const QUERY_BATCHES = {
43
+ // planner and researcher-phase1 do not use graph tools — no preflight queries.
44
+ planner: () => [],
45
+ "researcher-phase1": () => [],
46
+ architect: (c) => {
47
+ const specs = [
48
+ { key: "overview", op: "overview", args: {} },
49
+ ];
50
+ for (let i = 0; i < c.symbols.length; i++) {
51
+ specs.push({
52
+ key: `imports-of-${i}`,
53
+ op: "query",
54
+ args: { pattern: "imports_of", target: symbolToNodeRef(c.symbols[i]) },
55
+ });
56
+ }
57
+ return specs;
58
+ },
59
+ curator: (c) => {
60
+ const specs = [];
61
+ if (c.keywords.length > 0) {
62
+ specs.push({
63
+ key: "search",
64
+ op: "search",
65
+ args: { q: c.keywords.join(" ") },
66
+ });
67
+ }
68
+ for (let i = 0; i < c.symbols.length; i++) {
69
+ specs.push({
70
+ key: `callers-of-${i}`,
71
+ op: "query",
72
+ args: { pattern: "callers_of", target: symbolToNodeRef(c.symbols[i]) },
73
+ });
74
+ specs.push({
75
+ key: `tests-for-curator-${i}`,
76
+ op: "query",
77
+ args: { pattern: "tests_for", target: symbolToNodeRef(c.symbols[i]) },
78
+ });
79
+ }
80
+ return specs;
81
+ },
82
+ generator: (c) => {
83
+ const specs = [];
84
+ for (let i = 0; i < c.symbols.length; i++) {
85
+ specs.push({
86
+ key: `impact-${i}`,
87
+ op: "impact",
88
+ args: { target: symbolToNodeRef(c.symbols[i]) },
89
+ });
90
+ specs.push({
91
+ key: `tests-for-gen-${i}`,
92
+ op: "query",
93
+ args: { pattern: "tests_for", target: symbolToNodeRef(c.symbols[i]) },
94
+ });
95
+ }
96
+ return specs;
97
+ },
98
+ evaluator: (c) => [
99
+ {
100
+ key: "changes",
101
+ op: "changes",
102
+ args: { since: c.baselineSha || "HEAD~1" },
103
+ },
104
+ ],
105
+ "researcher-phase2": (c) => {
106
+ // ISOLATION GUARANTEE: uses ONLY c.questionKeywords.
107
+ // c.symbols and c.keywords are ALWAYS empty for this role (enforced in inject()).
108
+ const specs = [
109
+ { key: "overview", op: "overview", args: {} },
110
+ ];
111
+ if (c.questionKeywords.length > 0) {
112
+ specs.push({
113
+ key: "search",
114
+ op: "search",
115
+ args: { q: c.questionKeywords.join(" ") },
116
+ });
117
+ }
118
+ return specs;
119
+ },
120
+ };
121
+ // ── Helper: derive PreflightInput from a SprintContract ───────────
122
+ /**
123
+ * Derive PreflightInput fields from a SprintContract.
124
+ *
125
+ * SprintContract does NOT have symbols/keywords/questionKeywords/baselineSha fields.
126
+ * This function derives them defensively:
127
+ *
128
+ * - symbols: file basenames from estimatedFiles, stripped of extensions.
129
+ * These are the files the sprint will touch — a good proxy for affected symbols.
130
+ * - keywords: unique tokens (length >= 4) from title + description, top 8.
131
+ * Used by Curator search to find relevant code.
132
+ * - questionKeywords: ALWAYS empty here. Populated only via overrides.questionKeywords
133
+ * (for researcher-phase2 call sites that pass Phase 1 question tokens).
134
+ * - baselineSha: defaults to "HEAD~1"; can be overridden via overrides.baselineSha.
135
+ */
136
+ export function deriveFromContract(contract) {
137
+ if (!contract) {
138
+ return { symbols: [], keywords: [], questionKeywords: [], baselineSha: "HEAD~1" };
139
+ }
140
+ // symbols: extract file basenames from estimatedFiles, remove extensions
141
+ const symbols = contract.estimatedFiles
142
+ .map((p) => {
143
+ const parts = p.split("/");
144
+ return parts[parts.length - 1] ?? p;
145
+ })
146
+ .map((b) => b.replace(/\.[tj]sx?$/, ""))
147
+ .filter((s) => s.length > 0);
148
+ // keywords: unique tokens from title + description (minLen=4, top 8)
149
+ const text = `${contract.title} ${contract.description}`;
150
+ const keywords = uniqueTokens(text, { minLen: 4, max: 8 });
151
+ return {
152
+ symbols,
153
+ keywords,
154
+ questionKeywords: [], // NEVER derived from contract — must come from overrides
155
+ baselineSha: "HEAD~1",
156
+ };
157
+ }
158
+ /**
159
+ * Extract unique meaningful tokens from text.
160
+ * Lowercases, strips non-alphanumeric, deduplicates, limits by minLen and count.
161
+ */
162
+ function uniqueTokens(text, opts) {
163
+ const seen = new Set();
164
+ const tokens = [];
165
+ for (const word of text.toLowerCase().split(/[\s\-_/.,;:()[\]{}'"!?]+/)) {
166
+ if (word.length >= opts.minLen && !seen.has(word)) {
167
+ seen.add(word);
168
+ tokens.push(word);
169
+ if (tokens.length >= opts.max)
170
+ break;
171
+ }
172
+ }
173
+ return tokens;
174
+ }
175
+ /** Build a minimal NodeRef from a symbol name string (for query/impact targets). */
176
+ function symbolToNodeRef(symbol) {
177
+ return { id: symbol, kind: "function", file: symbol, line: 0, symbol };
178
+ }
179
+ // ── Stale banner construction ──────────────────────────────────────
180
+ /**
181
+ * Build a stale-data banner by probing git for both SHAs and commit delta.
182
+ *
183
+ * Format: `_⚠ Graph indexed at SHA <X>; current HEAD is <Y> (N commits behind). Context may be outdated._`
184
+ *
185
+ * Both SHAs are shortened to 7 chars. Commits-behind is computed via
186
+ * `git rev-list --count <lastSha>..<HEAD>`. Falls back gracefully if git
187
+ * is unavailable or the manifest has no lastSyncedHeadSha.
188
+ */
189
+ async function buildStaleBanner(projectRoot, artifactStore) {
190
+ try {
191
+ const manifest = await artifactStore.readManifest();
192
+ const lastSha = manifest?.lastSyncedHeadSha;
193
+ // Get current HEAD SHA
194
+ const headResult = await execa("git", ["rev-parse", "HEAD"], {
195
+ cwd: projectRoot,
196
+ reject: false,
197
+ timeout: 2000,
198
+ });
199
+ const currentSha = headResult.exitCode === 0 ? headResult.stdout.trim() : null;
200
+ if (!lastSha && !currentSha) {
201
+ return `_⚠ Graph data may be outdated. Context may be stale._`;
202
+ }
203
+ const shortLast = lastSha ? lastSha.slice(0, 7) : "unknown";
204
+ const shortCurrent = currentSha ? currentSha.slice(0, 7) : "unknown";
205
+ // Get commits-behind count
206
+ let commitsBehind = 0;
207
+ if (lastSha && currentSha && lastSha !== currentSha) {
208
+ try {
209
+ const revResult = await execa("git", ["rev-list", "--count", `${lastSha}..HEAD`], { cwd: projectRoot, reject: false, timeout: 2000 });
210
+ if (revResult.exitCode === 0) {
211
+ commitsBehind = parseInt(revResult.stdout.trim(), 10) || 0;
212
+ }
213
+ }
214
+ catch {
215
+ // Ignore git errors — we'll fall back to no commit count
216
+ }
217
+ }
218
+ const behindStr = commitsBehind > 0 ? ` (${commitsBehind} commits behind)` : "";
219
+ return `_⚠ Graph indexed at SHA ${shortLast}; current HEAD is ${shortCurrent}${behindStr}. Context may be outdated._`;
220
+ }
221
+ catch {
222
+ return `_⚠ Graph data may be outdated. Context may be stale._`;
223
+ }
224
+ }
225
+ // ── Markdown formatters ────────────────────────────────────────────
226
+ function formatNodeRefs(nodes) {
227
+ if (nodes.length === 0)
228
+ return "_No results._";
229
+ return nodes.map((n) => `- ${n.file}:${n.line} (${n.kind}) ${n.symbol}`).join("\n");
230
+ }
231
+ function formatSearchHits(hits) {
232
+ if (hits.length === 0)
233
+ return "_No results._";
234
+ return hits
235
+ .map((h) => `- ${h.node.file}:${h.node.line} (${h.node.kind}) ${h.node.symbol} — score: ${h.score.toFixed(2)}`)
236
+ .join("\n");
237
+ }
238
+ function formatImpactReport(report) {
239
+ const lines = [];
240
+ lines.push(`**Root:** ${report.root.file}:${report.root.line} (${report.root.kind}) ${report.root.symbol}`);
241
+ if (report.affected.length > 0) {
242
+ lines.push(`\n**Affected (${report.affected.length}):**`);
243
+ lines.push(...report.affected.map((n) => `- ${n.file}:${n.line} (${n.kind}) ${n.symbol}`));
244
+ }
245
+ if (report.testsAffected.length > 0) {
246
+ lines.push(`\n**Tests affected (${report.testsAffected.length}):**`);
247
+ lines.push(...report.testsAffected.map((n) => `- ${n.file}:${n.line} (${n.kind}) ${n.symbol}`));
248
+ }
249
+ return lines.join("\n") || "_No impact data._";
250
+ }
251
+ /**
252
+ * Format a single successful query result as a markdown `### Section` block.
253
+ *
254
+ * @param key The PrefetchSpec key (used to derive section heading).
255
+ * @param spec The original PrefetchSpec (for metadata about op/args).
256
+ * @param data The raw graph result data.
257
+ */
258
+ function formatResultSection(_key, spec, data) {
259
+ const heading = headingForSpec(spec);
260
+ const body = bodyForData(spec, data);
261
+ return `### ${heading}\n\n${body}`;
262
+ }
263
+ function headingForSpec(spec) {
264
+ switch (spec.op) {
265
+ case "overview":
266
+ return "Overview";
267
+ case "search": {
268
+ const args = spec.args;
269
+ return `Search: "${args.q ?? ""}"`;
270
+ }
271
+ case "query": {
272
+ const args = spec.args;
273
+ const symbol = args.target?.symbol ?? args.target?.id ?? "";
274
+ switch (args.pattern) {
275
+ case "callers_of":
276
+ return `Callers of ${symbol}`;
277
+ case "imports_of":
278
+ return `Imports of ${symbol}`;
279
+ case "tests_for":
280
+ return `Tests covering ${symbol}`;
281
+ case "callees_of":
282
+ return `Callees of ${symbol}`;
283
+ default:
284
+ return `Query: ${args.pattern ?? "unknown"}`;
285
+ }
286
+ }
287
+ case "impact": {
288
+ const args = spec.args;
289
+ const sym = typeof args.target === "string"
290
+ ? args.target
291
+ : args.target?.symbol ?? "unknown";
292
+ return `Impact radius of ${sym}`;
293
+ }
294
+ case "changes": {
295
+ const args = spec.args;
296
+ return `Changes since ${args.since ?? "baseline"}`;
297
+ }
298
+ case "reviewContext":
299
+ return "Review Context";
300
+ default:
301
+ return "Graph Result";
302
+ }
303
+ }
304
+ function bodyForData(spec, data) {
305
+ switch (spec.op) {
306
+ case "overview":
307
+ case "reviewContext":
308
+ return typeof data === "string" ? data : JSON.stringify(data, null, 2);
309
+ case "search":
310
+ return formatSearchHits(data);
311
+ case "query":
312
+ case "changes":
313
+ return formatNodeRefs(data);
314
+ case "impact":
315
+ return formatImpactReport(data);
316
+ default:
317
+ return typeof data === "string" ? data : JSON.stringify(data, null, 2);
318
+ }
319
+ }
320
+ // ── PreflightContextInjector ───────────────────────────────────────
321
+ /**
322
+ * Builds and injects deterministic graph context into agent first messages.
323
+ *
324
+ * Constructor takes a GraphClient (may be null if engine not ready) and a
325
+ * GraphSection config. inject() is the only public method.
326
+ *
327
+ * Usage in agent files:
328
+ * ```typescript
329
+ * const injector = new PreflightContextInjector(graphPipelineLifecycle.getGraphClient(), config.graph);
330
+ * const msg = await injector.inject("curator", contract, userMessage);
331
+ * ```
332
+ */
333
+ export class PreflightContextInjector {
334
+ client;
335
+ config;
336
+ incidents;
337
+ projectRoot;
338
+ artifactStore;
339
+ constructor(client, config, incidents, projectRoot, artifactStore) {
340
+ this.client = client;
341
+ this.config = config;
342
+ this.incidents = incidents;
343
+ this.projectRoot = projectRoot;
344
+ this.artifactStore = artifactStore;
345
+ }
346
+ /**
347
+ * Inject pre-flight graph context into a first message.
348
+ *
349
+ * Fast-path: returns firstMessage UNCHANGED when:
350
+ * - graph.enabled !== true
351
+ * - client is null
352
+ * - engineHealth !== 'ready'
353
+ *
354
+ * Timeout: 5000ms. On timeout or any error, logs an incident and returns
355
+ * firstMessage unchanged. Agent spawn is NEVER blocked.
356
+ *
357
+ * Researcher-Phase2 isolation: NEVER uses contract.title/description/feature.
358
+ * Uses ONLY overrides.questionKeywords. Passing a non-null contract for
359
+ * researcher-phase2 is defensively handled — feature text is still NOT used.
360
+ *
361
+ * @param role Agent role string.
362
+ * @param contract Sprint contract (or null for research phase / architect).
363
+ * @param firstMessage The agent's first user message.
364
+ * @param overrides Optional overrides: questionKeywords, baselineSha.
365
+ */
366
+ async inject(role, contract, firstMessage, overrides) {
367
+ // Fast-path: graph disabled → zero overhead and NO telemetry, matching the
368
+ // opt-in philosophy (projects that never enable the graph pay nothing).
369
+ if (!this.config?.enabled) {
370
+ return firstMessage;
371
+ }
372
+ // From here the graph IS enabled, so every outcome — including skips — is
373
+ // recorded. This is what makes "is the graph actually firing?" answerable
374
+ // from .bober/history.jsonl rather than a matter of faith.
375
+ const startedAt = Date.now();
376
+ const health = graphPipelineLifecycle.engineHealth();
377
+ // Enabled but no client wired in.
378
+ if (!this.client) {
379
+ await this.recordTelemetry(role, contract, "skipped-no-client", false, 0, Date.now() - startedAt, health, false);
380
+ return firstMessage;
381
+ }
382
+ // Enabled but engine not ready (starting/syncing/disabled).
383
+ if (health !== "ready") {
384
+ await this.recordTelemetry(role, contract, "skipped-engine-not-ready", false, 0, Date.now() - startedAt, health, false);
385
+ return firstMessage;
386
+ }
387
+ try {
388
+ const result = await Promise.race([
389
+ this.runInject(role, contract, firstMessage, overrides),
390
+ new Promise((_, reject) => setTimeout(() => reject(new Error("preflight-timeout-5000ms")), 5000)),
391
+ ]);
392
+ const charsAdded = result.length - firstMessage.length;
393
+ const injected = charsAdded > 0;
394
+ const partialFailure = result.includes("queries unavailable");
395
+ const outcome = !injected
396
+ ? "no-context"
397
+ : partialFailure
398
+ ? "degraded"
399
+ : "injected";
400
+ await this.recordTelemetry(role, contract, outcome, injected, charsAdded, Date.now() - startedAt, health, partialFailure);
401
+ return result;
402
+ }
403
+ catch (err) {
404
+ const msg = err instanceof Error ? err.message : String(err);
405
+ // Log incident; return ORIGINAL firstMessage so spawn proceeds.
406
+ try {
407
+ if (this.incidents) {
408
+ await this.incidents.append({
409
+ ts: new Date().toISOString(),
410
+ event: "preflight-failure",
411
+ role,
412
+ detail: msg,
413
+ });
414
+ }
415
+ }
416
+ catch {
417
+ // Swallow — incident write failure must not break spawn
418
+ }
419
+ await this.recordTelemetry(role, contract, /timeout/.test(msg) ? "timeout" : "error", false, 0, Date.now() - startedAt, health, false);
420
+ return firstMessage;
421
+ }
422
+ }
423
+ /**
424
+ * Record one `graph-preflight` telemetry event to .bober/history.jsonl.
425
+ *
426
+ * Resolves a project root by preferring the constructor-injected projectRoot,
427
+ * then the active pipeline lifecycle singleton — so telemetry fires for every
428
+ * role even though most call sites construct the injector with only
429
+ * (client, config). Best-effort: any failure is swallowed so telemetry can
430
+ * NEVER break an agent spawn.
431
+ *
432
+ * Each row answers the runtime question directly: did graph context get added
433
+ * (`injected`), roughly how many tokens (`approxTokensAdded`), under what
434
+ * `outcome`, and how long the preflight took (`elapsedMs`).
435
+ */
436
+ async recordTelemetry(role, contract, outcome, injected, charsAdded, elapsedMs, engineHealth, partialFailure) {
437
+ try {
438
+ // Root resolution is INSIDE the try: projectRootOrNull() may be absent on
439
+ // a test double of the lifecycle singleton, and a thrown TypeError here
440
+ // must NOT escape — telemetry can never break an agent spawn.
441
+ const root = this.projectRoot ?? graphPipelineLifecycle.projectRootOrNull?.() ?? null;
442
+ if (!root)
443
+ return;
444
+ await appendHistory(root, {
445
+ timestamp: new Date().toISOString(),
446
+ event: "graph-preflight",
447
+ phase: ROLE_TO_PHASE[role],
448
+ sprintId: contract?.contractId,
449
+ details: {
450
+ role,
451
+ outcome,
452
+ injected,
453
+ charsAdded,
454
+ // Rough heuristic (~4 chars/token); telemetry only, not billing.
455
+ approxTokensAdded: Math.max(0, Math.round(charsAdded / 4)),
456
+ budgetTokens: this.getBudgetForRole(role),
457
+ engineHealth,
458
+ elapsedMs,
459
+ partialFailure,
460
+ },
461
+ });
462
+ }
463
+ catch {
464
+ // Telemetry must NEVER break agent spawn.
465
+ }
466
+ }
467
+ /** Core injection logic — called by inject() within the timeout race. */
468
+ async runInject(role, contract, firstMessage, overrides) {
469
+ // Build the PreflightInput for this role.
470
+ // CRITICAL: researcher-phase2 NEVER uses contract fields — isolation invariant.
471
+ let input;
472
+ if (role === "researcher-phase2") {
473
+ // Isolation: ALWAYS build from overrides.questionKeywords only.
474
+ // Even if contract is non-null, we do NOT touch its title/description/feature.
475
+ input = {
476
+ symbols: [],
477
+ keywords: [],
478
+ questionKeywords: overrides?.questionKeywords ?? [],
479
+ baselineSha: "",
480
+ };
481
+ }
482
+ else if (contract) {
483
+ input = deriveFromContract(contract);
484
+ if (overrides?.questionKeywords) {
485
+ input.questionKeywords = overrides.questionKeywords;
486
+ }
487
+ if (overrides?.baselineSha) {
488
+ input.baselineSha = overrides.baselineSha;
489
+ }
490
+ }
491
+ else {
492
+ // null contract for non-Phase2 roles (e.g., Architect before planning)
493
+ input = { symbols: [], keywords: [], questionKeywords: [], baselineSha: "HEAD~1" };
494
+ if (overrides?.questionKeywords) {
495
+ input.questionKeywords = overrides.questionKeywords;
496
+ }
497
+ if (overrides?.baselineSha) {
498
+ input.baselineSha = overrides.baselineSha;
499
+ }
500
+ }
501
+ // Get the query batch for this role
502
+ const batchFactory = QUERY_BATCHES[role];
503
+ const specs = batchFactory(input);
504
+ // If no specs (e.g. no symbols and no keywords), return unchanged
505
+ if (specs.length === 0) {
506
+ return firstMessage;
507
+ }
508
+ // Execute the batch via GraphClient.prefetch
509
+ const results = await this.client.prefetch(specs);
510
+ // Build markdown sections from successful results
511
+ const sections = [];
512
+ let anyFailed = false;
513
+ for (const spec of specs) {
514
+ const result = results[spec.key];
515
+ if (!result) {
516
+ anyFailed = true;
517
+ continue;
518
+ }
519
+ if (result.ok) {
520
+ const section = formatResultSection(spec.key, spec, result.data);
521
+ sections.push(section);
522
+ }
523
+ else {
524
+ anyFailed = true;
525
+ }
526
+ }
527
+ // If ALL queries failed and we have no content, return a minimal note
528
+ if (sections.length === 0) {
529
+ const warning = "_⚠ Some graph queries unavailable; agent may need to fall back to grep where applicable._";
530
+ return `${firstMessage}\n\n## Codebase Context (graph)\n\n${warning}`;
531
+ }
532
+ // Assemble markdown body
533
+ let bodyMarkdown = sections.join("\n\n");
534
+ if (anyFailed) {
535
+ bodyMarkdown += "\n\n_⚠ Some graph queries unavailable; agent may need to fall back to grep where applicable._";
536
+ }
537
+ // Apply token budget
538
+ const budget = this.getBudgetForRole(role);
539
+ const { out: budgetedBody } = enforceBudget(bodyMarkdown, budget);
540
+ // Build stale banner (if applicable and artifactStore available)
541
+ let staleBanner = "";
542
+ if (this.artifactStore && this.projectRoot) {
543
+ try {
544
+ const staleness = await this.artifactStore.staleness();
545
+ if (staleness.stale) {
546
+ const banner = await buildStaleBanner(this.projectRoot, this.artifactStore);
547
+ if (banner)
548
+ staleBanner = `${banner}\n\n`;
549
+ }
550
+ }
551
+ catch {
552
+ // Stale check failure must not break injection
553
+ }
554
+ }
555
+ // Assemble final markdown: stale banner + header + body
556
+ const contextSection = `${staleBanner}## Codebase Context (graph)\n\n${budgetedBody}`;
557
+ // Prepend context section to firstMessage
558
+ return `${contextSection}\n\n${firstMessage}`;
559
+ }
560
+ /** Look up the token budget for a given role from config, with fallback to defaults. */
561
+ getBudgetForRole(role) {
562
+ const budgets = this.config
563
+ ?.preflightBudgets;
564
+ if (!budgets) {
565
+ // Fallback defaults (planner and researcher-phase1 have budget 0 — not gated roles)
566
+ const DEFAULTS = {
567
+ planner: 0,
568
+ "researcher-phase1": 0,
569
+ architect: 4000,
570
+ curator: 2000,
571
+ generator: 1000,
572
+ evaluator: 1500,
573
+ "researcher-phase2": 3000,
574
+ };
575
+ return DEFAULTS[role];
576
+ }
577
+ // Map camelCase config key to role string
578
+ const camelKey = {
579
+ planner: "planner",
580
+ "researcher-phase1": "researcherPhase1",
581
+ architect: "architect",
582
+ curator: "curator",
583
+ generator: "generator",
584
+ evaluator: "evaluator",
585
+ "researcher-phase2": "researcherPhase2",
586
+ };
587
+ const key = camelKey[role];
588
+ const val = budgets[key];
589
+ if (typeof val === "number" && val > 0)
590
+ return val;
591
+ // fallback defaults
592
+ const DEFAULTS = {
593
+ planner: 0,
594
+ "researcher-phase1": 0,
595
+ architect: 4000,
596
+ curator: 2000,
597
+ generator: 1000,
598
+ evaluator: 1500,
599
+ "researcher-phase2": 3000,
600
+ };
601
+ return DEFAULTS[role];
602
+ }
603
+ }
604
+ // ── Keyword extraction helper (exported for pipeline.ts call sites) ─
605
+ /**
606
+ * Extract meaningful search keywords from a block of text (e.g. Phase 1 questions).
607
+ *
608
+ * Used by pipeline.ts to derive overrides.questionKeywords for researcher-phase2
609
+ * from the Phase 1 questions array.
610
+ *
611
+ * Returns up to 10 unique tokens of length >= 5, lowercased.
612
+ * Does NOT preserve the original text — the output is transformed tokens only,
613
+ * which is safe to pass to researcher-phase2 (no feature text leak).
614
+ */
615
+ export function extractKeywords(text) {
616
+ return uniqueTokens(text, { minLen: 5, max: 10 });
617
+ }
618
+ //# sourceMappingURL=preflight-injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-injector.js","sourceRoot":"","sources":["../../src/graph/preflight-injector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { PrereqResult } from "./types.js";
2
+ export declare const TOKENSAVE_VERSION_RANGE = ">=6.0.0-beta.1 <7.0.0";
3
+ export declare class TokensavePrereqCheck {
4
+ private readonly binary;
5
+ constructor(binary?: string);
6
+ check(): Promise<PrereqResult>;
7
+ /** Platform-aware install hint. Strings are verbatim from s1-c2 — DO NOT paraphrase. */
8
+ private installHint;
9
+ /** Must name both detected and required versions (s1-c2). */
10
+ private incompatibleHint;
11
+ }
12
+ //# sourceMappingURL=prereq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prereq.d.ts","sourceRoot":"","sources":["../../src/graph/prereq.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,GAAE,MAAoB;IAEnD,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAsCpC,wFAAwF;IACxF,OAAO,CAAC,WAAW;IAWnB,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;CAGzB"}