@ebrindley/build 0.0.0-stage → 1.42.1-rc28

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 (878) hide show
  1. package/.build-project/providers/catalog.json +13951 -0
  2. package/.build-project/providers/pricing.json +1978 -0
  3. package/.build-project/providers/registry.json +4103 -0
  4. package/.github/SECURITY.md +75 -0
  5. package/.nvmrc +1 -0
  6. package/CHANGELOG.md +661 -0
  7. package/CODE_OF_CONDUCT.md +44 -0
  8. package/CONTRIBUTING.md +24 -0
  9. package/INSTALL.md +623 -0
  10. package/LICENSE +21 -0
  11. package/README.md +118 -2
  12. package/THIRD_PARTY_NOTICES.txt +26 -0
  13. package/dist/ai-judge-UE5UOYOO.js +191 -0
  14. package/dist/allowlist-grounding-KPLN6NC5.js +16 -0
  15. package/dist/allowlist-utils-MZZKKXRD.js +31 -0
  16. package/dist/apply-completion-mode-EM37UZHB.js +110 -0
  17. package/dist/artifact-migrator-WPACNSEP.js +276 -0
  18. package/dist/ask-2OZ4JFQR.js +176 -0
  19. package/dist/auth-6UKBTJUQ.js +185 -0
  20. package/dist/auth-H5KJL6HL.js +165 -0
  21. package/dist/auth-LVJRJDMU.js +12 -0
  22. package/dist/auth-NHZOCNRR.js +94 -0
  23. package/dist/auth-PBXHWXGW.js +95 -0
  24. package/dist/auth-T7Y5DCAH.js +91 -0
  25. package/dist/auth-TVVKCHQW.js +13 -0
  26. package/dist/auth-UHB2UCSS.js +97 -0
  27. package/dist/auth-VACA3VUL.js +98 -0
  28. package/dist/auth-VVLC77S3.js +44 -0
  29. package/dist/auth-liveness-XO4AGDDD.js +53 -0
  30. package/dist/autoloop-cleanup-SI3VGAAR.js +106 -0
  31. package/dist/autoloop-evidence-gates-J5GG5YQB.js +39 -0
  32. package/dist/autoloop-gate-policy-SUNAEP6Q.js +169 -0
  33. package/dist/autoloop-helpers-VQGQNTT6.js +52 -0
  34. package/dist/autoloop-ledger-P6TIDP7C.js +96 -0
  35. package/dist/autoloop-ledger-subscriber-HFAGOZXH.js +161 -0
  36. package/dist/autoloop-run-defaults-GWGZBNT7.js +27 -0
  37. package/dist/autoloop-run-lock-GBWRM5A2.js +197 -0
  38. package/dist/autoloop-success-C32QVWOP.js +93 -0
  39. package/dist/autoloop-termination-summary-GI6IBQWD.js +58 -0
  40. package/dist/autoloop-trajectory-AMKSQISD.js +70 -0
  41. package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
  42. package/dist/automatic-branch-cleanup-R62X2C5O.js +49 -0
  43. package/dist/autonomous-loop-controller-2WL363LW.js +4386 -0
  44. package/dist/backend-YUTFDZXZ.js +30 -0
  45. package/dist/background-executor-Z3ODTMD7.js +260 -0
  46. package/dist/backlog-75QPEAMW.js +403 -0
  47. package/dist/backlog-execution-intent-GWUV5TUK.js +19 -0
  48. package/dist/backup-active-store-XHWLN34M.js +16 -0
  49. package/dist/backup-machine-stores-UI4LTJOY.js +251 -0
  50. package/dist/backup-telemetry-db-Z4ICYCNW.js +26 -0
  51. package/dist/branch-archive-manager-FMSQ7YJF.js +18 -0
  52. package/dist/branch-cleanup-manager-ST6FJGND.js +35 -0
  53. package/dist/build-gate-7NKWPY62.js +68 -0
  54. package/dist/build-root-S7DINODY.js +18 -0
  55. package/dist/change-summary-R6CB6VXJ.js +50 -0
  56. package/dist/chunk-24MNKKOM.js +173 -0
  57. package/dist/chunk-2H6VZFIO.js +235 -0
  58. package/dist/chunk-2JIX3EKV.js +39 -0
  59. package/dist/chunk-2KO7HVZM.js +106 -0
  60. package/dist/chunk-2L36U25O.js +100 -0
  61. package/dist/chunk-2NMNFUQA.js +475 -0
  62. package/dist/chunk-2OUAEH67.js +83 -0
  63. package/dist/chunk-2VLJUXJU.js +115 -0
  64. package/dist/chunk-2VUEDIUM.js +77 -0
  65. package/dist/chunk-2Y2IIHPI.js +430 -0
  66. package/dist/chunk-2YRG3LHZ.js +220 -0
  67. package/dist/chunk-2Z5Q3SUY.js +65 -0
  68. package/dist/chunk-32IYXIE5.js +873 -0
  69. package/dist/chunk-33IGPPUI.js +292 -0
  70. package/dist/chunk-352PCJLK.js +283 -0
  71. package/dist/chunk-35J4NE6S.js +226 -0
  72. package/dist/chunk-3C7WBIVK.js +1016 -0
  73. package/dist/chunk-3H3EY6U7.js +1225 -0
  74. package/dist/chunk-3H4MWYIC.js +198 -0
  75. package/dist/chunk-3HHWQR3N.js +2479 -0
  76. package/dist/chunk-3JKNRYEE.js +14 -0
  77. package/dist/chunk-3LECCYZY.js +128 -0
  78. package/dist/chunk-3LOY6YZI.js +852 -0
  79. package/dist/chunk-3M57DADF.js +44 -0
  80. package/dist/chunk-3NOTLVLG.js +3803 -0
  81. package/dist/chunk-3OPP2OZB.js +1480 -0
  82. package/dist/chunk-3P5IN5E7.js +9 -0
  83. package/dist/chunk-3PL22IYZ.js +20 -0
  84. package/dist/chunk-3REDAJUJ.js +14 -0
  85. package/dist/chunk-3S2R4XJI.js +203 -0
  86. package/dist/chunk-3UBZI5DW.js +61 -0
  87. package/dist/chunk-3VV5OBGG.js +308 -0
  88. package/dist/chunk-3WY5TU2O.js +823 -0
  89. package/dist/chunk-43OKHTW4.js +82 -0
  90. package/dist/chunk-45KUJBDI.js +112 -0
  91. package/dist/chunk-47X5LM7B.js +224 -0
  92. package/dist/chunk-4B6FQJ77.js +268 -0
  93. package/dist/chunk-4BTDUT2S.js +42 -0
  94. package/dist/chunk-4DJL2VXA.js +24 -0
  95. package/dist/chunk-4EBSXZ73.js +48 -0
  96. package/dist/chunk-4QKP6I4C.js +294 -0
  97. package/dist/chunk-4U6XK2DG.js +300 -0
  98. package/dist/chunk-4UMRUFBD.js +132 -0
  99. package/dist/chunk-4US4SYJ4.js +569 -0
  100. package/dist/chunk-4ZPLWEZO.js +154 -0
  101. package/dist/chunk-56WPYDJH.js +624 -0
  102. package/dist/chunk-57WRCJJW.js +50 -0
  103. package/dist/chunk-5AW4RMNG.js +24 -0
  104. package/dist/chunk-5EQN56OZ.js +155 -0
  105. package/dist/chunk-5F43TUIN.js +38 -0
  106. package/dist/chunk-5FKHIKTS.js +115 -0
  107. package/dist/chunk-5HDP7XZG.js +91 -0
  108. package/dist/chunk-5KQETTNS.js +152 -0
  109. package/dist/chunk-5PDVN2KO.js +498 -0
  110. package/dist/chunk-5UBIFVRD.js +509 -0
  111. package/dist/chunk-5YDE3Q62.js +46 -0
  112. package/dist/chunk-626AJVMU.js +302 -0
  113. package/dist/chunk-633XZ7UF.js +3583 -0
  114. package/dist/chunk-63DHNHGA.js +236 -0
  115. package/dist/chunk-666656AR.js +568 -0
  116. package/dist/chunk-67YRJPJO.js +19 -0
  117. package/dist/chunk-6CAU7VBA.js +20 -0
  118. package/dist/chunk-6CB3KJRY.js +21 -0
  119. package/dist/chunk-6DBMALXL.js +29 -0
  120. package/dist/chunk-6E25C4IA.js +269 -0
  121. package/dist/chunk-6FIBNIQU.js +73 -0
  122. package/dist/chunk-6G57FYBV.js +189 -0
  123. package/dist/chunk-6KZKRTG3.js +4885 -0
  124. package/dist/chunk-6LAH2UV2.js +525 -0
  125. package/dist/chunk-6PZY2TTU.js +921 -0
  126. package/dist/chunk-6T6NHXK4.js +230 -0
  127. package/dist/chunk-6TBEX4R4.js +432 -0
  128. package/dist/chunk-6TRD7TEE.js +911 -0
  129. package/dist/chunk-6XCP2RAI.js +47 -0
  130. package/dist/chunk-726G6WDL.js +351 -0
  131. package/dist/chunk-75EMT7BF.js +616 -0
  132. package/dist/chunk-762ACDZJ.js +4696 -0
  133. package/dist/chunk-77I6G4CO.js +1 -0
  134. package/dist/chunk-7DJ6SQH3.js +510 -0
  135. package/dist/chunk-7HPCIOMA.js +1383 -0
  136. package/dist/chunk-7HYBSRPZ.js +17503 -0
  137. package/dist/chunk-7KBEOPVB.js +73 -0
  138. package/dist/chunk-7LHJDJB3.js +2222 -0
  139. package/dist/chunk-7NVJMH52.js +306 -0
  140. package/dist/chunk-7RMARDVH.js +33 -0
  141. package/dist/chunk-7SEWU4QG.js +36 -0
  142. package/dist/chunk-7TUTZTI2.js +911 -0
  143. package/dist/chunk-7VBDFPUM.js +340 -0
  144. package/dist/chunk-7VRJHTGZ.js +6406 -0
  145. package/dist/chunk-7YAOUUKK.js +493 -0
  146. package/dist/chunk-AAAODV76.js +860 -0
  147. package/dist/chunk-AB4HUJVQ.js +339 -0
  148. package/dist/chunk-AEQWV746.js +611 -0
  149. package/dist/chunk-AHU3FKPA.js +11639 -0
  150. package/dist/chunk-AISTV5XU.js +226 -0
  151. package/dist/chunk-AJBTKGJZ.js +48 -0
  152. package/dist/chunk-AJJNW7XT.js +248 -0
  153. package/dist/chunk-AJN5Y5YZ.js +160 -0
  154. package/dist/chunk-ALDTFNZ3.js +150 -0
  155. package/dist/chunk-ARARVIZK.js +281 -0
  156. package/dist/chunk-ATBM6AW5.js +53 -0
  157. package/dist/chunk-ATKEKM3E.js +206 -0
  158. package/dist/chunk-AUJLW6JZ.js +92 -0
  159. package/dist/chunk-AY3MHEFM.js +24 -0
  160. package/dist/chunk-B7PYTV72.js +236 -0
  161. package/dist/chunk-B7YRSULE.js +1423 -0
  162. package/dist/chunk-BAWJNMWF.js +339 -0
  163. package/dist/chunk-BBPIILO2.js +88 -0
  164. package/dist/chunk-BD3PGW6A.js +957 -0
  165. package/dist/chunk-BDPYFAB4.js +44 -0
  166. package/dist/chunk-BIUV23HH.js +729 -0
  167. package/dist/chunk-BQ3VAGXH.js +243 -0
  168. package/dist/chunk-BQJOGAWT.js +31 -0
  169. package/dist/chunk-BT7EG7CO.js +68 -0
  170. package/dist/chunk-BV3XQQLU.js +27 -0
  171. package/dist/chunk-BY6ODHNZ.js +78 -0
  172. package/dist/chunk-BZRLSZNV.js +79 -0
  173. package/dist/chunk-C3DH3NCY.js +2773 -0
  174. package/dist/chunk-C3KCMAJP.js +756 -0
  175. package/dist/chunk-C7AGUJ5K.js +267 -0
  176. package/dist/chunk-CBSWKQCX.js +342 -0
  177. package/dist/chunk-CE5OZBYY.js +21 -0
  178. package/dist/chunk-CFCVYHSW.js +373 -0
  179. package/dist/chunk-CHA2HDE5.js +126 -0
  180. package/dist/chunk-CIHWPGS5.js +146 -0
  181. package/dist/chunk-CJBSZX3F.js +127 -0
  182. package/dist/chunk-CLA6QIJM.js +43 -0
  183. package/dist/chunk-CPSVQR2I.js +365 -0
  184. package/dist/chunk-CRPRVNQ4.js +254 -0
  185. package/dist/chunk-CSIE4Y7C.js +1093 -0
  186. package/dist/chunk-CSOPSYDY.js +142 -0
  187. package/dist/chunk-CSXLLEGB.js +205 -0
  188. package/dist/chunk-CTDLERWU.js +293 -0
  189. package/dist/chunk-CULBXMSK.js +110 -0
  190. package/dist/chunk-D2M2Y5ID.js +21 -0
  191. package/dist/chunk-D37WY7SH.js +1060 -0
  192. package/dist/chunk-D4VJFCGZ.js +89 -0
  193. package/dist/chunk-D6WTZMZB.js +48 -0
  194. package/dist/chunk-DBHOWDUH.js +976 -0
  195. package/dist/chunk-DCACX7BV.js +19364 -0
  196. package/dist/chunk-DFHX4XYA.js +128 -0
  197. package/dist/chunk-DIKBRRKE.js +176 -0
  198. package/dist/chunk-DJG5RIOR.js +9 -0
  199. package/dist/chunk-DNIOIISW.js +616 -0
  200. package/dist/chunk-DOA5G7IA.js +315 -0
  201. package/dist/chunk-DP7FKP6W.js +855 -0
  202. package/dist/chunk-DS2JZ677.js +79 -0
  203. package/dist/chunk-DSRLVYBS.js +82 -0
  204. package/dist/chunk-EAEVKNJA.js +209 -0
  205. package/dist/chunk-EEUESN3T.js +575 -0
  206. package/dist/chunk-EJ4LUU5Y.js +73 -0
  207. package/dist/chunk-EJIWTPSZ.js +1063 -0
  208. package/dist/chunk-EJVCDTAN.js +116 -0
  209. package/dist/chunk-EKLUBDBQ.js +627 -0
  210. package/dist/chunk-EN62WLFD.js +849 -0
  211. package/dist/chunk-ENYRCL43.js +26 -0
  212. package/dist/chunk-EP22ZMFO.js +273 -0
  213. package/dist/chunk-EP4SVAVI.js +87 -0
  214. package/dist/chunk-EPAMVGI3.js +1562 -0
  215. package/dist/chunk-EPRMH6HO.js +24 -0
  216. package/dist/chunk-ES6NWJ36.js +4057 -0
  217. package/dist/chunk-ETA2K4KI.js +30 -0
  218. package/dist/chunk-ETAD4NKD.js +31 -0
  219. package/dist/chunk-EUWIIDQ7.js +93 -0
  220. package/dist/chunk-EVE3OD2W.js +141 -0
  221. package/dist/chunk-EXA26FFC.js +459 -0
  222. package/dist/chunk-EXSPAA35.js +244 -0
  223. package/dist/chunk-F55YABKV.js +258 -0
  224. package/dist/chunk-F5DNGU5W.js +27 -0
  225. package/dist/chunk-F622MJYV.js +103 -0
  226. package/dist/chunk-F6NIQD74.js +5111 -0
  227. package/dist/chunk-FAWJTC34.js +43 -0
  228. package/dist/chunk-FAZBRHGG.js +47 -0
  229. package/dist/chunk-FIEUSGNJ.js +39 -0
  230. package/dist/chunk-FKCG7K6H.js +1146 -0
  231. package/dist/chunk-FOVVXV45.js +229 -0
  232. package/dist/chunk-FRBPKBFE.js +30 -0
  233. package/dist/chunk-FSA5BPFI.js +268 -0
  234. package/dist/chunk-FSJ5TTZ3.js +29 -0
  235. package/dist/chunk-FT7SGLXT.js +193 -0
  236. package/dist/chunk-FUUVZZUB.js +62 -0
  237. package/dist/chunk-FYMRVUNZ.js +1697 -0
  238. package/dist/chunk-FYTAA5FG.js +162 -0
  239. package/dist/chunk-G3VB2UCZ.js +3892 -0
  240. package/dist/chunk-G6OIMVXH.js +405 -0
  241. package/dist/chunk-G7PQCXVH.js +228 -0
  242. package/dist/chunk-GAB6UW52.js +1087 -0
  243. package/dist/chunk-GAFJEYLK.js +29 -0
  244. package/dist/chunk-GC4CRMTS.js +642 -0
  245. package/dist/chunk-GFHSIWHL.js +5297 -0
  246. package/dist/chunk-GI5M67YA.js +735 -0
  247. package/dist/chunk-GIJWHUWF.js +191 -0
  248. package/dist/chunk-GO6DRECI.js +1 -0
  249. package/dist/chunk-GOFVBTMN.js +314 -0
  250. package/dist/chunk-GQIP72ZJ.js +13 -0
  251. package/dist/chunk-GQXLXRFA.js +28 -0
  252. package/dist/chunk-GT6HFKJB.js +48 -0
  253. package/dist/chunk-GVJGSSKM.js +174 -0
  254. package/dist/chunk-GWHGTG37.js +36 -0
  255. package/dist/chunk-GZAJHLKO.js +18 -0
  256. package/dist/chunk-GZK62I3N.js +314 -0
  257. package/dist/chunk-H3HGMISG.js +483 -0
  258. package/dist/chunk-H3ISZJMJ.js +403 -0
  259. package/dist/chunk-H4HXVWEC.js +9 -0
  260. package/dist/chunk-H6MJGKAW.js +120 -0
  261. package/dist/chunk-HBTTGVR5.js +353 -0
  262. package/dist/chunk-HBZ322WZ.js +35 -0
  263. package/dist/chunk-HEP3ILP4.js +34 -0
  264. package/dist/chunk-HGFXODKO.js +106 -0
  265. package/dist/chunk-HHWDTB6S.js +59 -0
  266. package/dist/chunk-HKO45NLZ.js +286 -0
  267. package/dist/chunk-HLVTEA6A.js +89 -0
  268. package/dist/chunk-HS3SY6HN.js +160 -0
  269. package/dist/chunk-HT5OCGKN.js +899 -0
  270. package/dist/chunk-HXIIEMGF.js +78 -0
  271. package/dist/chunk-I56TH7VM.js +46 -0
  272. package/dist/chunk-I6FN3R5D.js +352 -0
  273. package/dist/chunk-I7SCBHJN.js +655 -0
  274. package/dist/chunk-IJM4GKAT.js +529 -0
  275. package/dist/chunk-IMEYU36R.js +344 -0
  276. package/dist/chunk-INJ3SS6A.js +936 -0
  277. package/dist/chunk-IUKOPCCE.js +441 -0
  278. package/dist/chunk-IVEPZQJO.js +33 -0
  279. package/dist/chunk-IVZEONFC.js +43 -0
  280. package/dist/chunk-IWBHRSG7.js +936 -0
  281. package/dist/chunk-IYY3HQAD.js +484 -0
  282. package/dist/chunk-J2ICMYDA.js +48 -0
  283. package/dist/chunk-J2QCFLUN.js +505 -0
  284. package/dist/chunk-J5HM6V5P.js +1039 -0
  285. package/dist/chunk-J6NZX6QH.js +398 -0
  286. package/dist/chunk-JBBB2Y47.js +432 -0
  287. package/dist/chunk-JDCZQZU7.js +42 -0
  288. package/dist/chunk-JEDNXGSS.js +169 -0
  289. package/dist/chunk-JHP7OT6K.js +89 -0
  290. package/dist/chunk-JLS65NUQ.js +14 -0
  291. package/dist/chunk-JNMWYMC6.js +38 -0
  292. package/dist/chunk-JNSTWNNW.js +25 -0
  293. package/dist/chunk-JOSK6GEU.js +9564 -0
  294. package/dist/chunk-JQUMSIGC.js +100 -0
  295. package/dist/chunk-JVHGMURQ.js +1106 -0
  296. package/dist/chunk-JYXS47FQ.js +951 -0
  297. package/dist/chunk-K2ZMW2Z5.js +2147 -0
  298. package/dist/chunk-K7FAFORM.js +14 -0
  299. package/dist/chunk-KBJXX3ON.js +333 -0
  300. package/dist/chunk-KHFKVQWY.js +486 -0
  301. package/dist/chunk-KHMEI3DQ.js +173 -0
  302. package/dist/chunk-KHW3UD7B.js +69 -0
  303. package/dist/chunk-KKQKWAMF.js +365 -0
  304. package/dist/chunk-KOKXJV2U.js +455 -0
  305. package/dist/chunk-KQ4NGOJI.js +14 -0
  306. package/dist/chunk-KQYQOXMS.js +342 -0
  307. package/dist/chunk-KTMW65UX.js +14 -0
  308. package/dist/chunk-KUEWV2JH.js +593 -0
  309. package/dist/chunk-KXYDV3HP.js +1523 -0
  310. package/dist/chunk-KZ4JMGZ5.js +96 -0
  311. package/dist/chunk-KZWGBUIO.js +2659 -0
  312. package/dist/chunk-L2CBG5IX.js +1892 -0
  313. package/dist/chunk-L2S235CU.js +314 -0
  314. package/dist/chunk-L32WD57F.js +98 -0
  315. package/dist/chunk-LDJCKAJP.js +123 -0
  316. package/dist/chunk-LDWNBEN7.js +541 -0
  317. package/dist/chunk-LJVH57G2.js +241 -0
  318. package/dist/chunk-LPQ7NZEN.js +209 -0
  319. package/dist/chunk-LRGH3CCV.js +148 -0
  320. package/dist/chunk-LULOGMMM.js +1133 -0
  321. package/dist/chunk-LWGKN2GY.js +8284 -0
  322. package/dist/chunk-LX4F24ZH.js +157 -0
  323. package/dist/chunk-M4BUEXXF.js +839 -0
  324. package/dist/chunk-M6UHOC4I.js +553 -0
  325. package/dist/chunk-MCBNWZNO.js +657 -0
  326. package/dist/chunk-MEMSY6VY.js +223 -0
  327. package/dist/chunk-MHLEZQQI.js +145 -0
  328. package/dist/chunk-MJ6WNSIX.js +192 -0
  329. package/dist/chunk-MKASIKWZ.js +442 -0
  330. package/dist/chunk-MNOVBYFU.js +60 -0
  331. package/dist/chunk-MO2BYAAF.js +2896 -0
  332. package/dist/chunk-MP6P7Y2A.js +180 -0
  333. package/dist/chunk-MQ4TFJAG.js +3365 -0
  334. package/dist/chunk-MT2WAIR3.js +131 -0
  335. package/dist/chunk-MTU7VTNN.js +1122 -0
  336. package/dist/chunk-MULMXX4V.js +150 -0
  337. package/dist/chunk-MW2DWWVA.js +147 -0
  338. package/dist/chunk-MY3ZPUN4.js +151 -0
  339. package/dist/chunk-MYLH2S4G.js +64 -0
  340. package/dist/chunk-MZ5WYKNA.js +28 -0
  341. package/dist/chunk-N3Q2JNPV.js +249 -0
  342. package/dist/chunk-N5DX4JAK.js +12 -0
  343. package/dist/chunk-NAINGKHF.js +35 -0
  344. package/dist/chunk-NEQUQHOX.js +223 -0
  345. package/dist/chunk-NHNPEZS4.js +1408 -0
  346. package/dist/chunk-NHTIXJCR.js +17 -0
  347. package/dist/chunk-NKLPMBNV.js +1154 -0
  348. package/dist/chunk-NMVZ5YES.js +199 -0
  349. package/dist/chunk-NRFRY3GE.js +256 -0
  350. package/dist/chunk-NTD6CSI6.js +1266 -0
  351. package/dist/chunk-NUO7B3SH.js +318 -0
  352. package/dist/chunk-NVOHIJKG.js +1319 -0
  353. package/dist/chunk-NXH3RX7O.js +523 -0
  354. package/dist/chunk-NXZ3DURF.js +257 -0
  355. package/dist/chunk-O26L6F7F.js +209 -0
  356. package/dist/chunk-O5RRIUEP.js +124 -0
  357. package/dist/chunk-O5X6BKAO.js +10 -0
  358. package/dist/chunk-O6ZQUVTR.js +31 -0
  359. package/dist/chunk-O7FE75QZ.js +306 -0
  360. package/dist/chunk-OC7Z6AJQ.js +81 -0
  361. package/dist/chunk-OH7IEZ63.js +307 -0
  362. package/dist/chunk-OI734GRS.js +115 -0
  363. package/dist/chunk-OJBH62DK.js +684 -0
  364. package/dist/chunk-OKJLVSTJ.js +247 -0
  365. package/dist/chunk-OMX5VL43.js +79 -0
  366. package/dist/chunk-ONHAMBN6.js +12 -0
  367. package/dist/chunk-ONYPLIVE.js +753 -0
  368. package/dist/chunk-OSK7QWPD.js +637 -0
  369. package/dist/chunk-OTXLMJKP.js +438 -0
  370. package/dist/chunk-OV5PKQMA.js +213 -0
  371. package/dist/chunk-OXK5HA4B.js +31 -0
  372. package/dist/chunk-OYDWFQA4.js +272 -0
  373. package/dist/chunk-OZAUKWHB.js +22 -0
  374. package/dist/chunk-P5P2EKGH.js +94 -0
  375. package/dist/chunk-P6SSWAKY.js +29 -0
  376. package/dist/chunk-P7CQGPLS.js +30 -0
  377. package/dist/chunk-P7RVCHQV.js +197 -0
  378. package/dist/chunk-PEBWDYIW.js +726 -0
  379. package/dist/chunk-PFCXFO7A.js +9193 -0
  380. package/dist/chunk-PFLDWMX6.js +168 -0
  381. package/dist/chunk-PHZGLQSK.js +15883 -0
  382. package/dist/chunk-PNFTPNSR.js +20 -0
  383. package/dist/chunk-PPHXX4W7.js +175 -0
  384. package/dist/chunk-PPZESPJT.js +262 -0
  385. package/dist/chunk-PRDHI2L5.js +296 -0
  386. package/dist/chunk-PSTKWHHN.js +32 -0
  387. package/dist/chunk-PV53ODOT.js +555 -0
  388. package/dist/chunk-PVJBTI7P.js +24 -0
  389. package/dist/chunk-PXKERBKX.js +100 -0
  390. package/dist/chunk-PZ5AY32C.js +10 -0
  391. package/dist/chunk-Q3DHEZA5.js +85 -0
  392. package/dist/chunk-Q5RZDVQK.js +204 -0
  393. package/dist/chunk-Q64IR2Z2.js +4933 -0
  394. package/dist/chunk-Q6Z5UGPL.js +398 -0
  395. package/dist/chunk-QAMAV4DT.js +627 -0
  396. package/dist/chunk-QBWF4444.js +112 -0
  397. package/dist/chunk-QDKYT4CI.js +22805 -0
  398. package/dist/chunk-QFLBRWCJ.js +126 -0
  399. package/dist/chunk-QILAQACE.js +107 -0
  400. package/dist/chunk-QJ6OEH4K.js +3683 -0
  401. package/dist/chunk-QK3NLYTV.js +320 -0
  402. package/dist/chunk-QOFLUS24.js +535 -0
  403. package/dist/chunk-QOIASNEJ.js +98 -0
  404. package/dist/chunk-QP4UTSOV.js +3587 -0
  405. package/dist/chunk-QP5ST7RI.js +904 -0
  406. package/dist/chunk-QS5AGRZN.js +167 -0
  407. package/dist/chunk-QTAOU53N.js +107 -0
  408. package/dist/chunk-QTCLJHLZ.js +351 -0
  409. package/dist/chunk-QTOLTG4L.js +119 -0
  410. package/dist/chunk-QWDV4OSL.js +142 -0
  411. package/dist/chunk-QWMQ74KD.js +508 -0
  412. package/dist/chunk-QX6LOMMH.js +158 -0
  413. package/dist/chunk-QXBKIHY7.js +238 -0
  414. package/dist/chunk-QXBKTJT6.js +270 -0
  415. package/dist/chunk-QYQOVOLR.js +196 -0
  416. package/dist/chunk-R2CKS6WT.js +73 -0
  417. package/dist/chunk-R2TIYG7U.js +68 -0
  418. package/dist/chunk-R2W3LESH.js +465 -0
  419. package/dist/chunk-R5EXHMUN.js +100 -0
  420. package/dist/chunk-RBBTBCHX.js +289 -0
  421. package/dist/chunk-RBKLOUXA.js +121 -0
  422. package/dist/chunk-RCP2Y6DQ.js +86 -0
  423. package/dist/chunk-RCYEJSD5.js +260 -0
  424. package/dist/chunk-RFDVSI4N.js +134 -0
  425. package/dist/chunk-RGJU63FV.js +1717 -0
  426. package/dist/chunk-RI4EX2QE.js +18 -0
  427. package/dist/chunk-RIMARPCF.js +152 -0
  428. package/dist/chunk-RJ6RSNT6.js +42 -0
  429. package/dist/chunk-RNI2GUIF.js +131 -0
  430. package/dist/chunk-RPHUWJ3K.js +264 -0
  431. package/dist/chunk-RPIMAMV7.js +361 -0
  432. package/dist/chunk-RQFX6YRN.js +49 -0
  433. package/dist/chunk-RRC5BL7B.js +285 -0
  434. package/dist/chunk-RSYTSBOO.js +79 -0
  435. package/dist/chunk-RWQQIKIC.js +35 -0
  436. package/dist/chunk-RZUBOZH2.js +373 -0
  437. package/dist/chunk-S2E632FQ.js +380 -0
  438. package/dist/chunk-S2VQCZO4.js +22 -0
  439. package/dist/chunk-S2XIMQJQ.js +681 -0
  440. package/dist/chunk-S47ISY27.js +183 -0
  441. package/dist/chunk-S6I4KISU.js +142 -0
  442. package/dist/chunk-S6TAFQI5.js +2403 -0
  443. package/dist/chunk-SBBNT5ZJ.js +27 -0
  444. package/dist/chunk-SDJV2DTQ.js +491 -0
  445. package/dist/chunk-SDPIFNLD.js +33 -0
  446. package/dist/chunk-SF6YK3JI.js +835 -0
  447. package/dist/chunk-SK3ZFONO.js +976 -0
  448. package/dist/chunk-SKTFRFQ7.js +1775 -0
  449. package/dist/chunk-SNGM452K.js +2002 -0
  450. package/dist/chunk-STW7OFOA.js +581 -0
  451. package/dist/chunk-SU6UFUQY.js +1351 -0
  452. package/dist/chunk-SVJM3LJA.js +27 -0
  453. package/dist/chunk-SVUNZOPG.js +129 -0
  454. package/dist/chunk-T5XLUYV3.js +34 -0
  455. package/dist/chunk-T7E5JS6N.js +57 -0
  456. package/dist/chunk-TA3N5MMO.js +450 -0
  457. package/dist/chunk-TAJPCXSB.js +13 -0
  458. package/dist/chunk-TDEMDRN2.js +1639 -0
  459. package/dist/chunk-TDSEX5CF.js +24 -0
  460. package/dist/chunk-TGCVL74Y.js +28 -0
  461. package/dist/chunk-TGXXYDL4.js +1012 -0
  462. package/dist/chunk-TIKTYUJO.js +296 -0
  463. package/dist/chunk-TIZAJD4M.js +6029 -0
  464. package/dist/chunk-TLSEZZCG.js +5549 -0
  465. package/dist/chunk-TMBDRHAX.js +19 -0
  466. package/dist/chunk-TRURQUBP.js +1217 -0
  467. package/dist/chunk-TSQ256N5.js +152 -0
  468. package/dist/chunk-TUQMMFEQ.js +2244 -0
  469. package/dist/chunk-U424MJLC.js +81 -0
  470. package/dist/chunk-U4DRS6ZW.js +11 -0
  471. package/dist/chunk-U5KS22IN.js +204 -0
  472. package/dist/chunk-UAPHFJPN.js +673 -0
  473. package/dist/chunk-UB7LQITD.js +1040 -0
  474. package/dist/chunk-UBVRHGAZ.js +237 -0
  475. package/dist/chunk-UDNNAQN5.js +98 -0
  476. package/dist/chunk-UJP3XM54.js +342 -0
  477. package/dist/chunk-UJYDH2MW.js +305 -0
  478. package/dist/chunk-UKMPASIC.js +399 -0
  479. package/dist/chunk-UKUL3EHK.js +763 -0
  480. package/dist/chunk-UPHU64NB.js +1327 -0
  481. package/dist/chunk-URMSZXAD.js +43 -0
  482. package/dist/chunk-US3RT6CY.js +525 -0
  483. package/dist/chunk-UTDEOPKV.js +30 -0
  484. package/dist/chunk-UUUDKV7N.js +13 -0
  485. package/dist/chunk-UVKWU3SM.js +39 -0
  486. package/dist/chunk-V2TVPO3X.js +521 -0
  487. package/dist/chunk-V3KLVK7B.js +398 -0
  488. package/dist/chunk-V3YFFHDR.js +17 -0
  489. package/dist/chunk-VAG6GUBR.js +1162 -0
  490. package/dist/chunk-VBENAHDA.js +1814 -0
  491. package/dist/chunk-VBNCKCCI.js +16 -0
  492. package/dist/chunk-VCGSWN5M.js +1300 -0
  493. package/dist/chunk-VE2O2I7M.js +115 -0
  494. package/dist/chunk-VIFHYTI5.js +31 -0
  495. package/dist/chunk-VJER3FUS.js +5080 -0
  496. package/dist/chunk-VLMDM56Q.js +268 -0
  497. package/dist/chunk-VMFZEVVX.js +99 -0
  498. package/dist/chunk-VNDPQVUZ.js +1853 -0
  499. package/dist/chunk-VSPJRLGA.js +4783 -0
  500. package/dist/chunk-VSWC5ZXI.js +103 -0
  501. package/dist/chunk-VYI4DSZP.js +2017 -0
  502. package/dist/chunk-W4BAIQ6L.js +1212 -0
  503. package/dist/chunk-W7VQAL2K.js +2203 -0
  504. package/dist/chunk-WEI3ZDZH.js +33 -0
  505. package/dist/chunk-WEIUS5NT.js +26 -0
  506. package/dist/chunk-WEW7UFWE.js +546 -0
  507. package/dist/chunk-WGQAXLNA.js +384 -0
  508. package/dist/chunk-WJAL4JL3.js +206 -0
  509. package/dist/chunk-WKFOJ5ZG.js +141 -0
  510. package/dist/chunk-WMWQEFLN.js +2177 -0
  511. package/dist/chunk-WNECKKO2.js +154 -0
  512. package/dist/chunk-WPKLYOAM.js +195 -0
  513. package/dist/chunk-WSH37YQN.js +243 -0
  514. package/dist/chunk-WV3KQDPE.js +84 -0
  515. package/dist/chunk-WZFC4V4U.js +389 -0
  516. package/dist/chunk-XCOIBNET.js +13 -0
  517. package/dist/chunk-XDM65LBX.js +53 -0
  518. package/dist/chunk-XGU6PBO5.js +645 -0
  519. package/dist/chunk-XHOI4V62.js +43 -0
  520. package/dist/chunk-XIBVFMLQ.js +6858 -0
  521. package/dist/chunk-XJ2E7YEJ.js +117 -0
  522. package/dist/chunk-XON4ZCYX.js +69 -0
  523. package/dist/chunk-XQPEWJPI.js +127 -0
  524. package/dist/chunk-XSJTIFUY.js +31 -0
  525. package/dist/chunk-XT7OVWM3.js +64 -0
  526. package/dist/chunk-XTXYIISX.js +1104 -0
  527. package/dist/chunk-XV7NZL4B.js +57 -0
  528. package/dist/chunk-XWIZ6B5S.js +109 -0
  529. package/dist/chunk-XWLIKOBX.js +240 -0
  530. package/dist/chunk-XZOXEIN4.js +156 -0
  531. package/dist/chunk-XZRS7I7W.js +3673 -0
  532. package/dist/chunk-Y4ZDDHB6.js +44 -0
  533. package/dist/chunk-Y733RB7T.js +194 -0
  534. package/dist/chunk-YBHUB4XR.js +14931 -0
  535. package/dist/chunk-YKC75XK4.js +147 -0
  536. package/dist/chunk-YKMXFVK7.js +27 -0
  537. package/dist/chunk-YO5BAJ55.js +225 -0
  538. package/dist/chunk-YPDCLXNZ.js +568 -0
  539. package/dist/chunk-YSQPGVFK.js +116 -0
  540. package/dist/chunk-YTVVTIWJ.js +716 -0
  541. package/dist/chunk-YVCMDVBB.js +698 -0
  542. package/dist/chunk-YYTOA6DP.js +114 -0
  543. package/dist/chunk-Z5WGNULV.js +88 -0
  544. package/dist/chunk-Z6NGVVXG.js +66 -0
  545. package/dist/chunk-Z7CDQNH3.js +20 -0
  546. package/dist/chunk-ZH4G3FU5.js +187 -0
  547. package/dist/chunk-ZJB6SQPA.js +257 -0
  548. package/dist/chunk-ZL6E4HMY.js +42 -0
  549. package/dist/chunk-ZMLOC3DW.js +62 -0
  550. package/dist/chunk-ZORW64QH.js +101 -0
  551. package/dist/chunk-ZVVD2XGV.js +1369 -0
  552. package/dist/cli-utils-ER33ODC5.js +31 -0
  553. package/dist/cli-validation-6CHPTANV.js +146 -0
  554. package/dist/commit-utils-3STAY7C7.js +49 -0
  555. package/dist/compatibility-notice-IHNXR2JR.js +21 -0
  556. package/dist/compete-config-resolver-V3GDNJMM.js +125 -0
  557. package/dist/compete-results-XUM3PJHS.js +318 -0
  558. package/dist/competition-outcome-tracker-NWSMVUPG.js +62 -0
  559. package/dist/config-4HHE4OIK.js +238 -0
  560. package/dist/config-D6YAZASH.js +10 -0
  561. package/dist/config-MIPRDYYV.js +46 -0
  562. package/dist/config-audit-GA5DCUAI.js +371 -0
  563. package/dist/config-explain-4LMO556H.js +71 -0
  564. package/dist/config-loader-RGP634PC.js +51 -0
  565. package/dist/config-manager-J2UTO635.js +114 -0
  566. package/dist/config-merger-TVUJBZTS.js +14 -0
  567. package/dist/config-validator-H4ZVIE56.js +122 -0
  568. package/dist/cost-HSIV5U2Y.js +85 -0
  569. package/dist/data-migration-state-OAUL2WPQ.js +35 -0
  570. package/dist/db-migrator-NUOW5NKR.js +34 -0
  571. package/dist/default-paths-UILB62BN.js +49 -0
  572. package/dist/discovery-V6GYUJUC.js +53 -0
  573. package/dist/doctor-BBSMCDWE.js +271 -0
  574. package/dist/doctor-context-blocks-LPY75VZA.js +231 -0
  575. package/dist/doctor-instructions-import-JXHDDOE5.js +70 -0
  576. package/dist/doctor-purpose-6YJOXPBE.js +30 -0
  577. package/dist/domain-analyzer-S35ABUNA.js +48 -0
  578. package/dist/ensure-initialized-Q6PEU55O.js +78 -0
  579. package/dist/entry.js +922 -0
  580. package/dist/error-parser-core-MZFMFANN.js +70 -0
  581. package/dist/evaluation-context-GQBYDAEV.js +63 -0
  582. package/dist/evidence-plan-resolver-5FUAP3SA.js +111 -0
  583. package/dist/execution-data-writer-YCG5UH37.js +72 -0
  584. package/dist/execution-policy-applier-PWZM5LNA.js +63 -0
  585. package/dist/execution-preflight-DASJWWQF.js +223 -0
  586. package/dist/execution-roles-KNSNNB2D.js +112 -0
  587. package/dist/exit-code-error-QIY5DOKF.js +18 -0
  588. package/dist/external-temp-cleanup-CAW7LQ6R.js +360 -0
  589. package/dist/factory-YCYCB7AE.js +209 -0
  590. package/dist/file-utils-ZQYNBQBW.js +45 -0
  591. package/dist/flywheel-allowlist-revert-H22HA6JE.js +21 -0
  592. package/dist/flywheel-autoloop-executor-PDOASJEZ.js +316 -0
  593. package/dist/flywheel-autoloop-unverified-TOKYFCDC.js +36 -0
  594. package/dist/flywheel-competition-executor-YJUMMEJO.js +320 -0
  595. package/dist/flywheel-executor-JWU43KAY.js +437 -0
  596. package/dist/flywheel-git-isolation-FQ2TRWMB.js +56 -0
  597. package/dist/flywheel-manifest-HDPNMWWF.js +114 -0
  598. package/dist/flywheel-model-defaults-UHAKTZT3.js +110 -0
  599. package/dist/flywheel-preflight-III2C7TH.js +163 -0
  600. package/dist/flywheel-resume-2O45MS7Y.js +31 -0
  601. package/dist/flywheel-resume-execution-lease-P2BK257J.js +59 -0
  602. package/dist/flywheel-safety-AVAVFXIJ.js +19 -0
  603. package/dist/flywheel-scope-decision-ALJUUNGG.js +14 -0
  604. package/dist/get-telemetry-logger-MPDVO2JA.js +155 -0
  605. package/dist/git-message-style-KCXGMTDT.js +104 -0
  606. package/dist/guidance-profile-config-G3K5YQOO.js +113 -0
  607. package/dist/guidance-profile-renderer-TX4TNDFL.js +23 -0
  608. package/dist/identity-XLQJ4YJF.js +25 -0
  609. package/dist/index-query-6NUY4FKX.js +37 -0
  610. package/dist/index.js +85588 -0
  611. package/dist/indexer-DL54CM3K.js +44 -0
  612. package/dist/init-OUZ72344.js +245 -0
  613. package/dist/instructions-import-offer-NSYXSITC.js +363 -0
  614. package/dist/instructions-run-NBII7W36.js +114 -0
  615. package/dist/interrupted-work-E4TLKJLE.js +43 -0
  616. package/dist/invoke-provider-auth-NEWEIHCI.js +38 -0
  617. package/dist/judge-scoring.json +64 -0
  618. package/dist/lab-mode-YXQ2Y3NG.js +44 -0
  619. package/dist/lab-utils-5QAMDJR5.js +29 -0
  620. package/dist/linux-host-class-YDWQX65O.js +31 -0
  621. package/dist/llm-judge-executor-OJSNCTFJ.js +179 -0
  622. package/dist/local-ci-config-VZ4WWDT5.js +48 -0
  623. package/dist/local-executor-DCMDDRX2.js +280 -0
  624. package/dist/logger-5KNKS3O4.js +154 -0
  625. package/dist/matrix-prompt-builder-4ZBOGZSB.js +527 -0
  626. package/dist/matrix-result-parser-EZJM4YXP.js +14 -0
  627. package/dist/merge-batch-RTEEMVDB.js +313 -0
  628. package/dist/merge-batch-members-VIWGVRHP.js +24 -0
  629. package/dist/merge-queue-TIIUSOY6.js +126 -0
  630. package/dist/merge-queue-trust-DUNZ4J65.js +21 -0
  631. package/dist/metadata-UKSMWM6J.js +29 -0
  632. package/dist/model-catalog-readiness-R5KJBP5M.js +202 -0
  633. package/dist/model-invocations-db-XTUPPQ34.js +70 -0
  634. package/dist/model-resolver-JFZ2MHOJ.js +39 -0
  635. package/dist/model-resolver-SCQ57KAQ.js +217 -0
  636. package/dist/model-roles-D3OR4NAH.js +110 -0
  637. package/dist/monitor-F4SIU5G2.js +96 -0
  638. package/dist/nested-worktrees-2WUWQ75N.js +23 -0
  639. package/dist/next-S3IRLVER.js +96 -0
  640. package/dist/next-UKPFRXOO.js +148 -0
  641. package/dist/opportunistic-TL4S26VX.js +86 -0
  642. package/dist/optimization-config-resolver-NAEIYU6A.js +148 -0
  643. package/dist/package-HJR4QJT4.js +10 -0
  644. package/dist/parse-git-status-7PIYFPS2.js +21 -0
  645. package/dist/path-security-5WJSY56G.js +41 -0
  646. package/dist/paths-JUI7C4KU.js +45 -0
  647. package/dist/plan-backlog-list-fast-SSTQL5XP.js +89 -0
  648. package/dist/plan-backlog-show-fast-PFRAQ3JB.js +114 -0
  649. package/dist/plan-sprint-list-fast-HD2KBZSY.js +110 -0
  650. package/dist/plan-sprint-status-fast-YFYH7WQF.js +116 -0
  651. package/dist/plan-task-status-fast-JU5PNLUU.js +114 -0
  652. package/dist/plan-to-flywheel-PY5MSY2H.js +529 -0
  653. package/dist/preflight-PJHGTJNZ.js +12 -0
  654. package/dist/process-registry-B4ZUCN7T.js +28 -0
  655. package/dist/process-scanner-TU3QHWVB.js +23 -0
  656. package/dist/processes-6FHVGT72.js +28 -0
  657. package/dist/processes-json-fast-YWTMUWXB.js +72 -0
  658. package/dist/profile-HWTC56SG.js +209 -0
  659. package/dist/project-runtime-paths-2UQNG5Y4.js +41 -0
  660. package/dist/protected-branches-N36LDBFY.js +71 -0
  661. package/dist/provider-aware-resource-manager-YTFAHNGJ.js +40 -0
  662. package/dist/provider-matrix-2KO2V5OM.js +214 -0
  663. package/dist/provider-matrix-renderer-MEC3PER7.js +139 -0
  664. package/dist/provider-output-forwarding-2AHL7YMA.js +26 -0
  665. package/dist/provider-registry-WCZ65QHC.js +136 -0
  666. package/dist/provider-temp-cleanup-IUNPJCZF.js +14 -0
  667. package/dist/prune-engine-EOQVWEP6.js +448 -0
  668. package/dist/publication-turn-S42RZTQF.js +44 -0
  669. package/dist/quality-gate-JQMVCKOO.js +72 -0
  670. package/dist/quickstart-3O6FRCFB.js +105 -0
  671. package/dist/readiness-GW6ABRHB.js +139 -0
  672. package/dist/readiness-KFZCXDTT.js +215 -0
  673. package/dist/registry-7XG376SY.js +217 -0
  674. package/dist/repair-helpers-TTV5FEF4.js +117 -0
  675. package/dist/repo-root-YG6MQZDW.js +28 -0
  676. package/dist/resolution-engine-FFEK7HQ2.js +187 -0
  677. package/dist/resolve-provider-cli-ZEXVZKET.js +44 -0
  678. package/dist/restore-telemetry-db-E7BR5PO7.js +459 -0
  679. package/dist/routing-events-AW6SRZ6G.js +13 -0
  680. package/dist/routing-history-store-FMDDQL6W.js +39 -0
  681. package/dist/routing-planner-C6OHO3EY.js +221 -0
  682. package/dist/runner-KHDNQ5KU.js +1194 -0
  683. package/dist/runner-PIS2BW7Y.js +1801 -0
  684. package/dist/safety-E3JJVSFL.js +67 -0
  685. package/dist/safety-stanza-HE6GXP4G.js +49 -0
  686. package/dist/sandbox-7LBZC5PE.js +72 -0
  687. package/dist/sandbox-ASWCDYZL.js +80 -0
  688. package/dist/schema-extensions.sql +234 -0
  689. package/dist/security-JI22TBEB.js +17 -0
  690. package/dist/setup-bb-plugin-FQXLA76Y.js +531 -0
  691. package/dist/setup-claude-code-NF4ZSHVE.js +197 -0
  692. package/dist/setup-temp-cleanup-2APZ4HMA.js +29 -0
  693. package/dist/shared-utils-34HJZ6JX.js +40 -0
  694. package/dist/simple-artifact-goal-MQLDDMMX.js +29 -0
  695. package/dist/sprint-N7JFTEGL.js +403 -0
  696. package/dist/sprint-bridge-KJXIBNRJ.js +117 -0
  697. package/dist/sprint-completion-dependents-34SR7JVL.js +43 -0
  698. package/dist/sprint-execution-service-A6JPUBWY.js +376 -0
  699. package/dist/sprint-manager-MU2ZUWN2.js +140 -0
  700. package/dist/sqlite-timeout-config-U2CT4LKU.js +13 -0
  701. package/dist/sqlite-wrapper-FSGJ2QEW.js +19 -0
  702. package/dist/stale-cleanup-orchestrator-4X6324VF.js +71 -0
  703. package/dist/storage-access-I3V5LER7.js +31 -0
  704. package/dist/store-XVG64ZR2.js +25 -0
  705. package/dist/task-classifier-MN2DYE5R.js +558 -0
  706. package/dist/task-list-fast-7AT6LTTA.js +112 -0
  707. package/dist/task-manager-LHPBBRRE.js +136 -0
  708. package/dist/task-report-OLPAWBTK.js +64 -0
  709. package/dist/task-type-detector-6RG3YNZF.js +27 -0
  710. package/dist/task-type-resolver-EQHOUIHT.js +64 -0
  711. package/dist/telemetry-5VYSK772.js +212 -0
  712. package/dist/telemetry-health-tracker-4GFW2EMP.js +12 -0
  713. package/dist/telemetry-path-resolver-H3NFHHQY.js +34 -0
  714. package/dist/telemetry-reliability-URJDTNPZ.js +76 -0
  715. package/dist/transports-NREZQTJK.js +106 -0
  716. package/dist/unified-cost-tracker-5MTBJ2CL.js +59 -0
  717. package/dist/unified-state-cleanup-GGAXLHXF.js +292 -0
  718. package/dist/universal-cost-calculator-JTFEJVWK.js +70 -0
  719. package/dist/user-agents-QLIGPLP2.js +30 -0
  720. package/dist/variant-execution-I4ZZUAWY.js +319 -0
  721. package/dist/variant-opt-parser-JHCXKY2K.js +251 -0
  722. package/dist/variant-request-input-PL37N3AN.js +11 -0
  723. package/dist/variant-state-cleanup-KHMXRBZN.js +287 -0
  724. package/dist/variant-worker-COB5YTJX.js +4517 -0
  725. package/dist/variant-worker.js +26 -0
  726. package/dist/variants-XGDSXYG3.js +267 -0
  727. package/dist/verification-command-YSPU4VBH.js +66 -0
  728. package/dist/verify-command-timeout-DQUYH33Z.js +11 -0
  729. package/dist/verify-commands-LOHMOFKC.js +65 -0
  730. package/dist/warning-JSKSFKBT.js +13 -0
  731. package/dist/work-edge-K65NHVWY.js +50 -0
  732. package/dist/work-item-writer-KY5ZWZWW.js +30 -0
  733. package/dist/worker-JNXXEIT6.js +1504 -0
  734. package/dist/worker.js +21 -0
  735. package/dist/workspace-tree-identity-JO5PSKTW.js +52 -0
  736. package/dist/worktree-environment-WTVABAQW.js +64 -0
  737. package/dist/worktree-metrics-VZRQI26T.js +66 -0
  738. package/dist/writeback-TQFQBJNU.js +50 -0
  739. package/docs/CLI_REFERENCE.md +8287 -0
  740. package/docs/PROVIDER_SETUP.md +1737 -0
  741. package/docs/README.md +96 -0
  742. package/docs/TROUBLESHOOTING.md +2209 -0
  743. package/docs/getting-started/QUICK_START.md +260 -0
  744. package/docs/getting-started/README.md +198 -0
  745. package/docs/getting-started/SETUP.md +25 -0
  746. package/docs/reference/AGENT_CONTEXT.md +84 -0
  747. package/docs/reference/DELIVERY_ONBOARDING.md +198 -0
  748. package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
  749. package/docs/reference/SECURITY.md +291 -0
  750. package/docs/reference/TELEMETRY_PRIVACY.md +259 -0
  751. package/integrations/bb-plugin-build/README.md +391 -0
  752. package/integrations/bb-plugin-build/app.css +431 -0
  753. package/integrations/bb-plugin-build/app.tsx +6210 -0
  754. package/integrations/bb-plugin-build/package.json +45 -0
  755. package/integrations/bb-plugin-build/server.ts +488 -0
  756. package/integrations/bb-plugin-build/src/adapter.ts +3672 -0
  757. package/integrations/bb-plugin-build/src/backlog-authoring-model.ts +150 -0
  758. package/integrations/bb-plugin-build/src/backlog-authoring-schema.ts +458 -0
  759. package/integrations/bb-plugin-build/src/backlog-authoring-service.ts +467 -0
  760. package/integrations/bb-plugin-build/src/backlog-authoring-view.ts +1025 -0
  761. package/integrations/bb-plugin-build/src/command-evidence-schema.ts +13 -0
  762. package/integrations/bb-plugin-build/src/competition-defaults-schema.ts +122 -0
  763. package/integrations/bb-plugin-build/src/competition-defaults-service.ts +105 -0
  764. package/integrations/bb-plugin-build/src/competition-defaults-view.ts +138 -0
  765. package/integrations/bb-plugin-build/src/contract.ts +718 -0
  766. package/integrations/bb-plugin-build/src/execution-activity-view.ts +98 -0
  767. package/integrations/bb-plugin-build/src/finalize-model.ts +205 -0
  768. package/integrations/bb-plugin-build/src/finalize-schema.ts +150 -0
  769. package/integrations/bb-plugin-build/src/finalize-service.ts +330 -0
  770. package/integrations/bb-plugin-build/src/finalize-view.ts +159 -0
  771. package/integrations/bb-plugin-build/src/judge-operations-readback.ts +303 -0
  772. package/integrations/bb-plugin-build/src/judge-operations-schema.ts +33 -0
  773. package/integrations/bb-plugin-build/src/judge-operations-view.ts +459 -0
  774. package/integrations/bb-plugin-build/src/model.ts +1318 -0
  775. package/integrations/bb-plugin-build/src/monitor-service.ts +233 -0
  776. package/integrations/bb-plugin-build/src/panel-read-ux.ts +97 -0
  777. package/integrations/bb-plugin-build/src/patch-preview-schema.ts +166 -0
  778. package/integrations/bb-plugin-build/src/patch-preview-service.ts +480 -0
  779. package/integrations/bb-plugin-build/src/patch-preview-view.ts +109 -0
  780. package/integrations/bb-plugin-build/src/planning-readback.ts +228 -0
  781. package/integrations/bb-plugin-build/src/planning-service.ts +647 -0
  782. package/integrations/bb-plugin-build/src/planning-sync-evidence.ts +37 -0
  783. package/integrations/bb-plugin-build/src/planning-workspace-readback.ts +33 -0
  784. package/integrations/bb-plugin-build/src/planning-workspace-schema.ts +131 -0
  785. package/integrations/bb-plugin-build/src/planning-workspace.ts +333 -0
  786. package/integrations/bb-plugin-build/src/poll-handoff.ts +136 -0
  787. package/integrations/bb-plugin-build/src/project-target-server.ts +21 -0
  788. package/integrations/bb-plugin-build/src/project-target.ts +45 -0
  789. package/integrations/bb-plugin-build/src/reference-index.ts +218 -0
  790. package/integrations/bb-plugin-build/src/repository-identity.ts +17 -0
  791. package/integrations/bb-plugin-build/src/repository-schema.ts +30 -0
  792. package/integrations/bb-plugin-build/src/result-explorer-view.ts +597 -0
  793. package/integrations/bb-plugin-build/src/result-readback-model.ts +163 -0
  794. package/integrations/bb-plugin-build/src/result-readback-schema.ts +319 -0
  795. package/integrations/bb-plugin-build/src/result-readback-service.ts +333 -0
  796. package/integrations/bb-plugin-build/src/run-page-view.ts +332 -0
  797. package/integrations/bb-plugin-build/src/setup-config-schema.ts +293 -0
  798. package/integrations/bb-plugin-build/src/setup-config-service.ts +620 -0
  799. package/integrations/bb-plugin-build/src/setup-config-view.ts +388 -0
  800. package/integrations/bb-plugin-build/src/sprint-close-model.ts +150 -0
  801. package/integrations/bb-plugin-build/src/sprint-close-schema.ts +128 -0
  802. package/integrations/bb-plugin-build/src/sprint-close-service.ts +293 -0
  803. package/integrations/bb-plugin-build/src/sprint-close-view.ts +116 -0
  804. package/integrations/bb-plugin-build/src/sprint-composition-model.ts +709 -0
  805. package/integrations/bb-plugin-build/src/sprint-composition-readback.ts +231 -0
  806. package/integrations/bb-plugin-build/src/sprint-composition-schema.ts +597 -0
  807. package/integrations/bb-plugin-build/src/sprint-composition-service.ts +773 -0
  808. package/integrations/bb-plugin-build/src/sprint-composition-view.ts +1221 -0
  809. package/integrations/bb-plugin-build/src/sprint-execution-schema.ts +188 -0
  810. package/integrations/bb-plugin-build/src/sprint-execution-service.ts +289 -0
  811. package/integrations/bb-plugin-build/src/sprint-execution-view.ts +54 -0
  812. package/integrations/bb-plugin-build/src/task-authoring-model.ts +563 -0
  813. package/integrations/bb-plugin-build/src/task-authoring-schema.ts +629 -0
  814. package/integrations/bb-plugin-build/src/task-authoring-service.ts +842 -0
  815. package/integrations/bb-plugin-build/src/task-authoring-view.ts +1227 -0
  816. package/integrations/bb-plugin-build/src/task-catalog-schema.ts +46 -0
  817. package/integrations/bb-plugin-build/src/task-catalog-service.ts +44 -0
  818. package/integrations/bb-plugin-build/src/task-detail-readback.ts +56 -0
  819. package/integrations/bb-plugin-build/src/task-detail-schema.ts +171 -0
  820. package/integrations/bb-plugin-build/src/task-navigation.ts +446 -0
  821. package/integrations/bb-plugin-build/src/workbench-route.ts +74 -0
  822. package/package.json +306 -4
  823. package/schemas/README.md +80 -0
  824. package/schemas/build.config.schema.json +2110 -0
  825. package/schemas/config-v1.schema.json +136 -0
  826. package/schemas/execution-config.schema.json +47 -0
  827. package/schemas/judge-scoring.schema.json +257 -0
  828. package/schemas/provider-config.schema.json +179 -0
  829. package/schemas/telemetry-config.schema.json +79 -0
  830. package/schemas/user-preferences.schema.json +141 -0
  831. package/scripts/assert-node-runtime.mjs +146 -0
  832. package/scripts/preflight-native.mjs +49 -0
  833. package/scripts/setup-git-hooks.mjs +39 -0
  834. package/scripts/sync.sh +2871 -0
  835. package/scripts/write-node-launcher.sh +138 -0
  836. package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
  837. package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
  838. package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
  839. package/templates/.build-project/README.md +41 -0
  840. package/templates/.build-project/agents/README.md +50 -0
  841. package/templates/.build-project/agents/architect.md +10 -0
  842. package/templates/.build-project/agents/code-reviewer.md +10 -0
  843. package/templates/.build-project/agents/debugger.md +10 -0
  844. package/templates/.build-project/agents/documenter.md +10 -0
  845. package/templates/.build-project/agents/test-automator.md +10 -0
  846. package/templates/.build-project/config/build.config.jsonc +64 -0
  847. package/templates/.build-project/config/project-context.template.json +6 -0
  848. package/templates/.build-project/config/task-type-aliases.presets/kanban.yaml +14 -0
  849. package/templates/.build-project/config/task-type-aliases.presets/scrum.yaml +17 -0
  850. package/templates/.build-project/config/task-type-aliases.presets/xp.yaml +12 -0
  851. package/templates/.build-project/config/task-type-aliases.yaml +29 -0
  852. package/templates/.build-project/gitignore.template +70 -0
  853. package/templates/.build-project/task-types/analysis.yaml +38 -0
  854. package/templates/.build-project/task-types/architecture.yaml +35 -0
  855. package/templates/.build-project/task-types/doc.yaml +34 -0
  856. package/templates/.build-project/task-types/feature.yaml +22 -0
  857. package/templates/.build-project/task-types/general.yaml +4 -0
  858. package/templates/.build-project/task-types/security.yaml +38 -0
  859. package/templates/AGENTS.template.md +85 -0
  860. package/templates/CLAUDE.template.md +1 -0
  861. package/templates/GEMINI.template.md +1 -0
  862. package/templates/builtin-workflows/code-review.yaml +73 -0
  863. package/templates/builtin-workflows/skills/code-review/SKILL.md +61 -0
  864. package/templates/builtin-workflows/skills/execution-contract-analysis/SKILL.md +24 -0
  865. package/templates/builtin-workflows/skills/execution-contract-code/SKILL.md +19 -0
  866. package/templates/builtin-workflows/skills/execution-contract-structured/SKILL.md +17 -0
  867. package/templates/ci/incident-intake.mjs +787 -0
  868. package/templates/ci/incidents.yml.template +103 -0
  869. package/templates/ci/node.yml.template +17 -0
  870. package/templates/ci/python.yml.template +17 -0
  871. package/templates/guard-kit/GUARD_SETUP.md.template +258 -0
  872. package/templates/guard-kit/build-guard.yml.template +189 -0
  873. package/templates/guard-kit/check.mjs.template +932 -0
  874. package/templates/guard-kit/config.json.template +7 -0
  875. package/templates/guard-kit/policy.json.template +1 -0
  876. package/templates/profiles/README.md +57 -0
  877. package/templates/profiles/frontier-claude.json +23 -0
  878. package/templates/profiles/frontier-codex.json +23 -0
@@ -0,0 +1,1737 @@
1
+ # Provider Setup Guide
2
+
3
+ This guide walks you through setting up AI providers for Build. Build supports multiple execution providers out of the box: Claude, Codex CLI, Cursor CLI, Copilot CLI, Gemini CLI, Grok, Kiro, Google Antigravity CLI, Pi CLI, and OpenCode. GLM/Z.AI models are available through OpenCode; OpenRouter is a catalog/pricing source, not an execution provider.
4
+
5
+ > **Public-release validation status:** Claude and Codex are primary validated
6
+ > providers. Grok, Cursor, and OpenCode are supported validated providers.
7
+ > Antigravity and Pi are also supported validated; Gemini, Kiro, and Copilot
8
+ > are experimental (Gemini is no longer being extended; see below). This is
9
+ > separate from configured defaults:
10
+ > `build config resolved --summary --json` reports the active execution and
11
+ > judge defaults. Run `build provider list` and `build doctor --matrix` before
12
+ > relying on a local provider.
13
+
14
+ > **Execution modes:** All providers run locally through their CLI adapters. Variant mode `:cloud` and direct provider API transport are not executable product paths (see [ADR-023](https://github.com/ebrindley/build/blob/main/docs/adr/023-cli-only-provider-execution.md)). Historical telemetry may still contain Codex/Cursor cloud-shaped fields; those records stay readable but are not a signal to run cloud workflows.
15
+
16
+ ---
17
+
18
+ ## Model Selection and Namespaces
19
+
20
+ Build enforces provider model purity: every provider only accepts its own canonical model identifiers; unknown or cross-provider names either omit the provider model override or raise a validation error, depending on the provider path. Use `build config resolved --summary --json` for active defaults, and keep the registry fresh with:
21
+
22
+ ```bash
23
+ build provider refresh <id> --models
24
+ ```
25
+
26
+ The release catalog is generated from Build's canonical provider YAML and is
27
+ shipped with the package. Refresh writes a narrow, digest-bound model/pricing
28
+ overlay; it does not rewrite release capabilities or executable configuration.
29
+ Existing project `providers.yaml` files remain supported as policy overlays
30
+ (for example enabled state, defaults, roles, mappings, and local limits), while
31
+ their copied catalog inventory is ignored. New projects do not receive a
32
+ provider-catalog snapshot.
33
+
34
+ | Provider | Default Source | Notes |
35
+ | ----------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
36
+ | Claude | Primary validated | Zero-flag model selection follows the installed Claude CLI; choose it explicitly during first-run setup or config |
37
+ | Codex | Primary validated | Zero-flag model selection follows the installed Codex CLI; reasoning effort remains separately configurable |
38
+ | Grok | Supported validated | Use `--variant grok` for an explicit Grok run; not implied as the global default |
39
+ | Cursor | Supported validated | `auto` is supported for Cursor-native routing; macOS Keychain access can block agent sandboxes |
40
+ | OpenCode | Supported validated | Router CLI; use exact upstream model IDs such as `z-ai/glm-4.7` |
41
+ | Antigravity | Supported validated | Google `agy` CLI provider; authenticate with Google OAuth or `ANTIGRAVITY_API_KEY` where supported |
42
+ | Pi | Supported validated | Backend-agnostic host CLI; cost and capability depend on the configured backend; local OpenAI-compatible path not yet validated |
43
+ | Gemini | Experimental | No longer extended; opt-in only. Check vendor CLI availability and entitlements. CLI must be installed separately |
44
+ | Copilot | Experimental | Copilot CLI exposes its own supported model set |
45
+ | Kiro | Experimental | Experimental native adapter; headless mode requires `KIRO_API_KEY` |
46
+
47
+ Use explicit provider IDs in configuration or CLI flags. Common provider IDs
48
+ `claude`, `codex`, `grok`, `cursor`, `opencode`, and `gemini` cover most public
49
+ release usage. Passing a generic GPT name to a provider that does not expose it
50
+ now omits the model override or returns a validation error so you can correct
51
+ the selection.
52
+
53
+ For the shared installation and first-use sequence, follow
54
+ [INSTALL.md: Set up a provider](../INSTALL.md#set-up-a-provider). First-run
55
+ setup saves a provider selection, and an active profile takes precedence over
56
+ project and user settings. Inspect `build config resolved --summary --json`
57
+ before relying on zero-flag routing; the installation guide shows how to select
58
+ a named profile explicitly. Deferred auth is a cold state, not proof of bad
59
+ credentials: a real invocation establishes whether the selected CLI can run.
60
+
61
+ For a read-only preview before installing or changing provider setup, the
62
+ internal-tier `explain` command reads embedded config without initializing
63
+ anything (it is intentionally absent from `build --help`):
64
+
65
+ ```bash
66
+ build explain providers
67
+ ```
68
+
69
+ ### Fast model
70
+
71
+ Anything that wants a fast model (`--variant <provider>:fast`, speed and cost
72
+ optimization, flywheel verify stages, `roles.*.modelRole: fast`) uses one lookup, in this order: the active profile, then project,
73
+ then user `defaults.providers.<id>.fastModel`, then the provider's fast slot in
74
+ `providers.yaml`. Claude, Codex, Gemini and Cursor have a fast slot. A provider
75
+ without one uses its default model. An executor on its fast model does not
76
+ inherit `defaults.providers.<id>.reasoningEffort`; set `roles.executor.reasoningEffort`
77
+ to choose one.
78
+
79
+ ```bash
80
+ build config set defaults.providers.opencode.fastModel <model-id> --scope user
81
+ ```
82
+
83
+ A `fastModel` the provider does not accept is rejected when you set it and
84
+ reported with its config path at run time; Build never swaps in another model.
85
+
86
+ ### Claude model aliases (incl. Fable 5 and 5.1)
87
+
88
+ Claude accepts the short aliases `opus`, `sonnet`, `haiku`, and `fable` (each floats to the latest of that family), version-pinned shorthands (`opus-5-5`, `opus-4-8`, `sonnet-4-6`, `fable-5`, `fable-5-1`), and full `claude-*` ids (`claude-opus-5-5`, `claude-opus-4-8`, `claude-fable-5`, `claude-fable-5-1`). Direct backend ids (Bedrock `*.anthropic.claude-*`, Vertex `claude-*@YYYYMMDD`) also pass through. A **specific** Claude version pin (family + major.minor, e.g. `sonnet-4-99`, `opus-4.99`, `fable-5-9`) that doesn't resolve now fails fast with a clear error instead of silently running the CLI default. Bare families and major-only aliases (`opus`, `sonnet-4`, `opus-99`, `fable`) float and are not errored, a full `claude-*` id is passed through to the CLI unchanged (direct-string support; a misspelled `claude-*` id surfaces at the CLI rather than at this guard), and non-Claude tokens (`gpt-*`, arbitrary strings) omit `--model` under provider purity.
89
+
90
+ > **Fable 5 availability.** The `fable` / `fable-5` aliases and the full `claude-fable-5` id resolve on the Anthropic, Vertex, and AWS Bedrock backends (Bedrock → `global.anthropic.claude-fable-5`). Fable 5 may be **temporarily unavailable upstream** while external availability controls are in effect. During that state, a run targeting Fable surfaces a clear "temporarily unavailable" message; retry later or pick another model (`opus`, `sonnet`) in the meantime. **The Bedrock inference profile is wired ahead of availability but is unverified** and has not been invoked live while Fable is unavailable. When access returns, re-verify the profile live and add any regional profiles to the `claude-fable-5` entry in `.build-project/config/providers.yaml`. The `fable-5-1` shorthand and the full `claude-fable-5-1` id resolve the same way (Bedrock → `global.anthropic.claude-fable-5-1`); only the global profile is declared.
91
+
92
+ ## Quick Start with Mock Mode
93
+
94
+ **For development and testing**, you can use mock mode to run Build without installing any providers.
95
+
96
+ Outside test runners (`NODE_ENV=test` or `VITEST=true|1`), both flags are required. If only `BUILD_MOCK_PROVIDERS=1` is set, CLI startup scrubs it with a warning and real providers remain the default.
97
+
98
+ ```bash
99
+ # Enable mock mode outside tests (both flags required)
100
+ export BUILD_MOCK_PROVIDERS=1
101
+ export BUILD_ALLOW_MOCK_PROVIDERS=1
102
+
103
+ # Run with mock providers
104
+ build run "test task" --variants=3
105
+
106
+ # Disable mock mode
107
+ unset BUILD_MOCK_PROVIDERS
108
+ unset BUILD_ALLOW_MOCK_PROVIDERS
109
+ ```
110
+
111
+ Mock mode simulates realistic execution times and occasional errors (10% failure rate) for testing variant competition logic. See [MOCK_ENV_VARS.md](https://github.com/ebrindley/build/blob/main/docs/MOCK_ENV_VARS.md).
112
+
113
+ ## Verify Your Environment (Health / Doctor)
114
+
115
+ Build includes a built-in environment check:
116
+
117
+ ```bash
118
+ # Alias:
119
+ build doctor
120
+
121
+ # Check configured providers only (default behavior)
122
+ build doctor
123
+
124
+ # Check all known providers explicitly
125
+ build doctor --all
126
+
127
+ # Support matrix: tier + CLI/auth/runtime health
128
+ build doctor --matrix
129
+
130
+ # Check a single provider
131
+ build doctor --provider claude
132
+ ```
133
+
134
+ `build provider list` is the first-user readiness check: it is read-only and
135
+ reports whether at least one configured provider appears ready. After
136
+ target-repo `build init`, run `build doctor` for the full checklist. The
137
+ readiness subset (`doctor`, `doctor --provider <id>`, and `doctor --all`) is
138
+ part of the dependable supported surface when used for setup verification.
139
+
140
+ ---
141
+
142
+ ## Setup Command
143
+
144
+ Build provides a unified `build provider setup` command for managing providers.
145
+
146
+ ### Interactive Wizard
147
+
148
+ Run the setup wizard to interactively select and install providers:
149
+
150
+ ```bash
151
+ build provider setup
152
+ ```
153
+
154
+ The wizard will:
155
+
156
+ 1. Show available providers with descriptions
157
+ 2. Let you select one or more providers
158
+ 3. Install each provider
159
+ 4. Configure provider options (when available)
160
+
161
+ ### First-Run Wizard
162
+
163
+ `build provider setup --first-run` is re-runnable. When two or more providers are
164
+ already ready, it asks which one is your default, then asks whether to save it for
165
+ all repos, for this repo only, or just for this run. Pressing Enter at the provider
166
+ choice keeps the current default. With one ready provider there is no default
167
+ question. `--first-run --providers <id>[,<id>]` skips the wizard and saves the
168
+ first ready listed provider as your user default; add `--non-interactive` to
169
+ also skip the instructions-import question.
170
+
171
+ ### Non-Interactive Setup
172
+
173
+ Install specific providers without interaction:
174
+
175
+ ```bash
176
+ # Install single provider
177
+ build provider setup --providers claude
178
+
179
+ # Install multiple providers
180
+ build provider setup --providers claude,gemini,opencode
181
+ ```
182
+
183
+ ### Check Mode
184
+
185
+ Report provider readiness without making changes:
186
+
187
+ ```bash
188
+ build provider list
189
+ ```
190
+
191
+ Output shows:
192
+
193
+ - `OK` — Installed, authenticated, and execute-ready
194
+ - `Sandbox blocked (execute)` — CLI/auth may be present, but sandbox or policy prevents provider state access
195
+ - `Warning:` — Installed but degraded or not authenticated
196
+ - `Error` — Not installed (with install command)
197
+
198
+ ### First-Run Picker
199
+
200
+ When you run `build run` or `build run competition` without a configured provider:
201
+
202
+ **TTY Mode** (interactive terminal):
203
+
204
+ - Shows provider picker automatically
205
+ - Prompts to install selected provider
206
+ - Retries your original command after setup
207
+
208
+ **Non-Interactive Mode** (scripts, CI):
209
+
210
+ - Prints error message
211
+ - Shows deterministic setup commands
212
+ - Exits with error code
213
+
214
+ Example:
215
+
216
+ ```bash
217
+ # First run without provider
218
+ $ build run "test task"
219
+ Warning: No runnable provider configured
220
+
221
+ Setup required. Run one of these commands:
222
+ build provider setup # Interactive wizard
223
+ build provider setup --providers claude # Install Claude
224
+ build provider setup --providers opencode # Install OpenCode
225
+ ```
226
+
227
+ ### Safety Boundary
228
+
229
+ Build categorizes installers by risk level:
230
+
231
+ **Safe** (auto-install allowed):
232
+
233
+ - npm global install
234
+ - brew install
235
+ - pipx install
236
+
237
+ **Needs Confirmation** (requires approval):
238
+
239
+ - curl | bash installers
240
+ - Manual installation steps
241
+
242
+ To allow risky installers (currently `cursor`, `grok`, `kiro`, `antigravity`, and `opencode`, which ship as
243
+ `curl | bash`), set this env var. The gate applies to **both interactive and
244
+ non-interactive** runs — without it, `build provider setup` will print the install
245
+ command and exit without executing it:
246
+
247
+ ```bash
248
+ export BUILD_ALLOW_CURL_BASH=1
249
+ build provider setup --providers <provider>
250
+ ```
251
+
252
+ ---
253
+
254
+ ## Provider Installation
255
+
256
+ > **Node version note:** The per-provider "Prerequisite: Node.js" lines below are
257
+ > each external CLI's own minimum, not Build's. Build itself requires Node.js
258
+ > 24.x or 26.x (see [INSTALL.md](../INSTALL.md#prerequisites)); a provider CLI may run on
259
+ > an older Node, but Build still needs 24.x or 26.x to run.
260
+
261
+ ### Claude CLI
262
+
263
+ **Status**: Supported local CLI provider
264
+
265
+ #### Installation
266
+
267
+ Prerequisite: Node.js 18+ (the Claude CLI's own minimum; Build itself requires Node 24.x or 26.x).
268
+
269
+ ```bash
270
+ # Install Claude Code CLI
271
+ npm install -g @anthropic-ai/claude-code
272
+
273
+ # Verify installation
274
+ claude --version
275
+ ```
276
+
277
+ #### Authentication
278
+
279
+ 1. **CLI Login (preferred)**:
280
+
281
+ ```bash
282
+ claude auth login
283
+ # Browser/device flow; stores credentials in Claude CLI config
284
+ ```
285
+
286
+ 2. **Verify Setup**:
287
+ ```bash
288
+ # Run a simple Claude command and rely on its error output
289
+ claude --version
290
+ ```
291
+
292
+ #### Configuration
293
+
294
+ Build uses a dedicated config directory to avoid conflicts:
295
+
296
+ ```bash
297
+ # Default location
298
+ ~/.build/config/providers/claude
299
+
300
+ # Or set custom location
301
+ export CLAUDE_CONFIG_DIR=~/.build/config/providers/claude
302
+ ```
303
+
304
+ **Bedrock Configuration (AWS)**:
305
+
306
+ Build defaults Claude to Anthropic. Bedrock mode is enabled when
307
+ `BUILD_CLAUDE_BACKEND=bedrock` is set.
308
+ AWS environment variables (`AWS_REGION`, `AWS_PROFILE`) alone do **not**
309
+ activate Bedrock mode — explicit opt-in is still required.
310
+
311
+ > **Migration**: Prefer `BUILD_CLAUDE_BACKEND=bedrock` in shell profiles and CI.
312
+ > Build's backend resolver checks `BUILD_CLAUDE_BACKEND` first; `CLAUDE_CODE_USE_BEDROCK=1`
313
+ > is still honored as a legacy fallback when the canonical variable is unset.
314
+
315
+ When Bedrock is active, Build converts **explicit pins** to cross-region
316
+ inference profiles automatically. A **family alias** is not converted: `opus`,
317
+ `sonnet`, `haiku`, and `fable` reach the Claude CLI unchanged, and the CLI
318
+ resolves the family against your account's entitlement and builds the profile ID
319
+ itself. Build keeps no table of what a family currently means — one would go
320
+ stale silently and downgrade runs.
321
+
322
+ Redirect a family with the Claude CLI's own variables when you need a specific
323
+ deployment:
324
+
325
+ ```bash
326
+ export ANTHROPIC_DEFAULT_OPUS_MODEL=<model-or-deployment-id>
327
+ export ANTHROPIC_DEFAULT_SONNET_MODEL=<model-or-deployment-id>
328
+ export ANTHROPIC_DEFAULT_HAIKU_MODEL=<model-or-deployment-id>
329
+ ```
330
+
331
+ **Default prefix: `global`**. The `global` inference pool draws capacity from
332
+ all AWS regions, reducing single-region throttling. Use a regional prefix only
333
+ when you need explicit data residency, latency affinity, or compliance controls.
334
+
335
+ ```bash
336
+ # Canonical Build setting:
337
+ export BUILD_CLAUDE_BACKEND=bedrock
338
+
339
+ # Override to pin a specific region prefix (global|us|eu|jp|apac):
340
+ export BUILD_BEDROCK_REGION_PREFIX=us
341
+ ```
342
+
343
+ Build applies that prefix itself when it builds a profile ID for an explicit
344
+ pin. For a family alias — where the CLI builds the ID — it passes the same value
345
+ through as `ANTHROPIC_BEDROCK_REGION_PREFIX`, which the Claude CLI honours from
346
+ 2.1.224. On an older CLI the variable is ignored and the alias draws from the
347
+ CLI's own default pool, so the configured prefix is only a preference there;
348
+ `build doctor` reports this (see **Family-alias migration** below).
349
+
350
+ Not every model has a profile under every prefix. For an explicit pin whose
351
+ registry entry declares no profile under your prefix, Build uses that model's
352
+ `global` profile instead, and AWS may serve a global request from any region.
353
+ If you need data residency, check that the model's AWS Bedrock model card lists
354
+ a profile for your geography before relying on the prefix.
355
+
356
+ **Inference profile examples**:
357
+
358
+ | Input | What goes on the wire | Built by |
359
+ | ---------------------------- | ------------------------------------------------- | -------- |
360
+ | `--model sonnet` | `sonnet` (CLI resolves the family) | Claude CLI |
361
+ | `--model opus` | `opus` (CLI resolves the family) | Claude CLI |
362
+ | `--model sonnet-4-6` | `global.anthropic.claude-sonnet-4-6` | Build |
363
+ | `--model claude-opus-4-8` | `global.anthropic.claude-opus-4-8` | Build |
364
+ | `--model haiku-4-5` | `global.anthropic.claude-haiku-4-5-20251001-v1:0` | Build |
365
+
366
+ Bedrock model ID suffixes for explicit pins are maintained in
367
+ `CLAUDE_BEDROCK_MODELS` in `src/core/providers/claude/config.ts` — do not
368
+ construct inference profile strings manually.
369
+
370
+ **Family-alias migration**: Build's Claude registry roles (`judge_primary`,
371
+ `quality`, `reasoning`, `long_context`) point at the `opus` family rather than a
372
+ pinned version, so which Opus runs now follows the installed Claude CLI and your
373
+ account entitlement, not a Build table. Two consequences on an older CLI, both
374
+ reported by `build doctor`: before 2.1.219 a family alias resolves to the
375
+ previous flagship, and before 2.1.224 `ANTHROPIC_BEDROCK_REGION_PREFIX` is
376
+ unavailable. Context-window selection follows the CLI for aliases too: Build
377
+ appends a `[1m]` selector only to explicit pins, because it cannot know which
378
+ model the CLI will pick — ask for it explicitly (`--model opus[1m]`) and the
379
+ selector passes through. Pin a role to an explicit ID (or set
380
+ `ANTHROPIC_DEFAULT_*_MODEL`) when you need a fixed version.
381
+
382
+ Build also synthesizes `CLAUDE_CODE_USE_BEDROCK=1` for Claude subprocesses
383
+ when the canonical `BUILD_CLAUDE_BACKEND=bedrock` setting is used, so the
384
+ Claude CLI receives the backend signal it expects at the final subprocess
385
+ boundary only.
386
+
387
+ **Vertex Configuration (Google Cloud)**:
388
+
389
+ Vertex mode is enabled when `BUILD_CLAUDE_BACKEND=vertex` is set.
390
+ `CLAUDE_CODE_USE_VERTEX` is treated the same way as the Bedrock flag above:
391
+ Build ignores it for routing and only synthesizes Claude-native backend flags
392
+ when launching the final Claude subprocess.
393
+
394
+ Build does **not** rewrite Claude model IDs in Vertex mode. Pass Claude-native
395
+ model IDs through unchanged, including version-pinned IDs such as
396
+ `claude-haiku-4-5@20251001` when needed.
397
+
398
+ ```bash
399
+ # Canonical Build setting:
400
+ export BUILD_CLAUDE_BACKEND=vertex
401
+
402
+ # Required Vertex/Claude Code settings:
403
+ export CLOUD_ML_REGION=us-central1
404
+ export ANTHROPIC_VERTEX_PROJECT_ID=<your-project-id>
405
+
406
+ # Standard Google Cloud auth:
407
+ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
408
+
409
+ # Optional project aliases supported by Claude Code:
410
+ export GCLOUD_PROJECT=<your-project-id>
411
+ # or:
412
+ export GOOGLE_CLOUD_PROJECT=<your-project-id>
413
+ ```
414
+
415
+ Vertex mode uses Google Cloud credentials, so Claude `/login` and `/logout`
416
+ are not part of the setup flow.
417
+
418
+ Build synthesizes `CLAUDE_CODE_USE_VERTEX=1` for Claude subprocesses when the
419
+ canonical `BUILD_CLAUDE_BACKEND=vertex` setting is used.
420
+
421
+ **Foundry Configuration (Microsoft Foundry)**:
422
+
423
+ Foundry mode is enabled when `BUILD_CLAUDE_BACKEND=foundry` is set.
424
+ `CLAUDE_CODE_USE_FOUNDRY` is treated the same way as the Bedrock and Vertex flags
425
+ above: Build honors it as a legacy fallback when the canonical variable is unset,
426
+ and synthesizes `CLAUDE_CODE_USE_FOUNDRY=1` for the final Claude subprocess.
427
+
428
+ Build does **not** rewrite Claude model IDs in Foundry mode. Model names pass
429
+ through unchanged and the Claude CLI resolves them against your deployments.
430
+
431
+ ```bash
432
+ # Canonical Build setting:
433
+ export BUILD_CLAUDE_BACKEND=foundry
434
+
435
+ # Connection — set exactly one of these:
436
+ export ANTHROPIC_FOUNDRY_RESOURCE=<your-foundry-resource-name>
437
+ # or the full endpoint:
438
+ export ANTHROPIC_FOUNDRY_BASE_URL=https://<resource>.services.ai.azure.com
439
+
440
+ # Credential — the CLI takes the first available, in this order:
441
+ export ANTHROPIC_FOUNDRY_AUTH_TOKEN=<bearer-token>
442
+ export ANTHROPIC_FOUNDRY_API_KEY=<api-key>
443
+ # ...or set neither and use the Azure default credential chain (e.g. `az login`).
444
+ ```
445
+
446
+ Build's preflight requires the resource or the base URL, because neither is
447
+ inferable from a credential. It does not check credentials or contact the
448
+ service: Foundry auth is established by execution, and the Azure default
449
+ credential chain sets no variable Build can observe.
450
+
451
+ **Alias lag caveat**: Foundry aliases resolve to the CLI's own built-in Foundry
452
+ defaults, which lag the Anthropic backend (`opus` currently means Opus 4.6
453
+ there), and the CLI performs no startup availability check. Pin your deployment
454
+ names explicitly:
455
+
456
+ ```bash
457
+ export ANTHROPIC_DEFAULT_OPUS_MODEL=<your-opus-deployment-name>
458
+ export ANTHROPIC_DEFAULT_SONNET_MODEL=<your-sonnet-deployment-name>
459
+ export ANTHROPIC_DEFAULT_HAIKU_MODEL=<your-haiku-deployment-name>
460
+ ```
461
+
462
+ **Manual checklist** (Build's Foundry support is verified at unit level only —
463
+ no live Foundry deployment was available):
464
+
465
+ ```bash
466
+ export BUILD_CLAUDE_BACKEND=foundry
467
+ export ANTHROPIC_FOUNDRY_RESOURCE=<your-foundry-resource-name>
468
+ build doctor
469
+ build ask --to claude --model opus "reply OK"
470
+ ```
471
+
472
+ Confirm the reported model is your Foundry deployment, not an Anthropic model ID.
473
+
474
+ **Profile Setup**:
475
+
476
+ Build uses "profiles" to organize work. The default profile is `default`. You can create custom profiles for different projects:
477
+
478
+ ```bash
479
+ # Create a profile
480
+ claude profile create my-project
481
+
482
+ # Set active profile
483
+ claude profile use my-project
484
+
485
+ # List profiles
486
+ claude profile list
487
+ ```
488
+
489
+ #### Test Claude Provider
490
+
491
+ ```bash
492
+ # Test execution
493
+ build run "Create a hello world test" --engine=claude
494
+
495
+ # Test variant competition
496
+ build run "Implement login feature" --engine=claude --variants=3
497
+ ```
498
+
499
+ ---
500
+
501
+ ### Codex CLI
502
+
503
+ **Status**: Supported, enterprise-focused
504
+
505
+ #### Installation
506
+
507
+ Prerequisite: Node.js 16+ (the Codex CLI's own minimum; Build itself requires Node 24.x or 26.x).
508
+
509
+ ```bash
510
+ # Install Codex CLI
511
+ npm install -g @openai/codex
512
+
513
+ # Verify installation
514
+ codex --version
515
+ ```
516
+
517
+ #### Authentication
518
+
519
+ **Default:** Codex CLI OAuth (ChatGPT / browser login). Build does not preflight auth before
520
+ `run` or `run competition`; the CLI surfaces auth errors. `build doctor --provider codex` checks
521
+ `auth.json` under `CODEX_HOME` (and `~/.codex` when unset), plus API keys when set.
522
+
523
+ ```bash
524
+ codex login
525
+ # or: build provider setup --providers codex
526
+ ```
527
+
528
+ **API key mode (optional):** set `BUILD_CODEX_AUTH_MODE=api_key` and provide `CODEX_API_KEY`,
529
+ the variable `codex exec` reads its API key from. Build also forwards `OPENAI_API_KEY` and
530
+ `CODEX_TOKEN` and counts either as ready, but `codex exec` does not read them. In OAuth mode,
531
+ Build strips API keys from the Codex subprocess environment so the CLI does not prefer a shell
532
+ key over browser login.
533
+
534
+ #### Configuration
535
+
536
+ ```bash
537
+ # Default location
538
+ ~/.codex/
539
+
540
+ # Or set custom location
541
+ export CODEX_HOME=~/.codex
542
+ ```
543
+
544
+ Codex execution is local only. `build run` and `build run competition` invoke `codex exec --json`
545
+ inside the selected workspace or worktree; Build does not submit, poll, or apply Codex cloud tasks.
546
+
547
+ #### Amazon Bedrock
548
+
549
+ Codex CLI 0.154.0 ships two built-in Bedrock providers, selected by `model_provider` in
550
+ `~/.codex/config.toml`: `amazon-bedrock` (the Mantle endpoint; ids `openai.<id>`) and
551
+ `amazon-bedrock-runtime` (the Bedrock Runtime endpoint, which for a model such as GPT-6 Astra
552
+ accepts only an inference profile, `global.openai.gpt-6-astra`). Build recognizes both, keeps the
553
+ one your config names in force, and emits the matching id for a canonical pin such as
554
+ `codex:gpt-6-astra`. Pin canonical ids only; `openai.*` and `global.openai.*` are rejected as pins.
555
+ Reading `~/.aws` follows the provider your config names and needs no attestation.
556
+
557
+ `BUILD_CODEX_BACKEND=bedrock` is an attestation, not a provider switch. It selects Bedrock routing
558
+ when your config names no recognized provider, asserts `model_provider="amazon-bedrock"` in that
559
+ case only, and lets readiness treat the run as a Bedrock run (no `auth.json` needed). It does not
560
+ override a configured `amazon-bedrock-runtime` provider or its region. AWS environment credentials
561
+ (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`) are forwarded to the Codex
562
+ child whether or not it is set. Details and the measured evidence: `docs/reference/MODEL_ID_ROUTING.md` (not shipped in the npm package).
563
+
564
+ #### Test Codex Provider
565
+
566
+ ```bash
567
+ build run "Create a test suite" --engine=codex --variants=2
568
+ ```
569
+
570
+ ---
571
+
572
+ ### Cursor (CLI)
573
+
574
+ **Status**: Supported, CLI-first
575
+
576
+ #### Installation
577
+
578
+ ```bash
579
+ # Install Cursor Agent
580
+ curl https://cursor.com/install -fsS | bash
581
+
582
+ # Verify installation
583
+ cursor-agent --version
584
+ ```
585
+
586
+ #### Authentication
587
+
588
+ Build uses your Cursor account session. Authenticate via the Cursor Agent:
589
+
590
+ ```bash
591
+ cursor-agent login
592
+ ```
593
+
594
+ On a headless host (a CI runner, a container, a Cursor Cloud Agent VM), a
595
+ `CURSOR_API_KEY` in the environment authenticates `cursor-agent` without a login
596
+ session, and Build passes it to Cursor runs. `cursor-agent status` can still
597
+ report "Not logged in" in that setup. Readiness reports the key as present but
598
+ unverified until the first run, which is the real check.
599
+
600
+ #### Cursor Cloud (Historical Only)
601
+
602
+ Build does not run Cursor (or Codex) cloud agent workflows. Use local Cursor CLI execution via `cursor-agent login` and local variants such as `cursor:local`.
603
+
604
+ Historical note (compatibility and recovery only):
605
+
606
+ - Older runs may have used Cursor cloud transports (`api` REST agents or `github_pr` bot comments). Those shapes can still appear in telemetry, env dumps, or recovery notes.
607
+ - Env vars such as `BUILD_CURSOR_CLOUD_TRANSPORT` and `CURSOR_CLOUD_TRANSPORT` may exist in older operator setups; they do not enable a Build `:cloud` execution path. `CURSOR_API_KEY` is not a cloud setting: it authenticates the local CLI (see Authentication above).
608
+ - Use `cursor-agent login` or `CURSOR_API_KEY` for local CLI authentication. Do not treat cloud transport configuration as setup for new work.
609
+ - For PR publication after local `run competition apply`, use ordinary GitHub auth (`gh auth login`) as documented in the competition and CLI guides — that is not Cursor cloud execution.
610
+
611
+ #### Configuration
612
+
613
+ ```bash
614
+ # Default: leave CURSOR_CONFIG_DIR unset. Build then finds the login that
615
+ # `cursor-agent login` stores in ~/.cursor (or ~/.build/config/providers/cursor).
616
+ # With XDG_CONFIG_HOME set, cursor-agent stores it in $XDG_CONFIG_HOME/cursor,
617
+ # which Build does not check; set CURSOR_CONFIG_DIR to that directory instead.
618
+
619
+ # Custom location: when set, Build checks only this directory for a login,
620
+ # so log in again with it set
621
+ export CURSOR_CONFIG_DIR=/path/to/cursor-config
622
+ cursor-agent login
623
+
624
+ # Override default model for Cursor
625
+ export BUILD_CURSOR_MODEL='auto'
626
+
627
+ # Make Cursor the default provider without flags
628
+ export BUILD_DEFAULT_PROVIDER='cursor'
629
+ ```
630
+
631
+ The Cursor provider uses the `cursor` ID for local CLI execution. Use the environment variables above or Build's resolved provider configuration; `build.config.ts` is not a loaded configuration source.
632
+
633
+ #### Test Cursor Provider
634
+
635
+ ```bash
636
+ build run "Write a hello world function" --engine=cursor
637
+
638
+ build run "Refactor this component" --engine=cursor --variants=2
639
+
640
+ # Test with file context (auto-detected in output)
641
+ build run "Review @src/auth.ts" --engine=cursor
642
+ ```
643
+
644
+ **Important**: The Cursor CLI provider reuses Cursor's own session handling. Ensure `cursor-agent` works from your shell and that any enterprise policies allow CLI access. Use `BUILD_CURSOR_MODEL` or the Cursor preference store to pin defaults.
645
+
646
+ ---
647
+
648
+ ### Gemini CLI
649
+
650
+ **Status**: Experimental and no longer being extended; opt-in only. Check the vendor's current CLI availability and entitlements before relying on it. Prefer `antigravity`, the better-supported path.
651
+
652
+ #### Installation
653
+
654
+ Prerequisite: Node.js 20+ (the Gemini CLI's own minimum; Build itself requires Node 24.x or 26.x).
655
+
656
+ ```bash
657
+ # Install Gemini CLI globally
658
+ npm install -g @google/gemini-cli
659
+
660
+ # Verify installation
661
+ gemini --version
662
+ ```
663
+
664
+ #### Authentication
665
+
666
+ **The Gemini CLI provider does not handle authentication** - you must configure authentication yourself. The CLI supports both personal Google accounts and enterprise Vertex AI access.
667
+
668
+ **Option 1: Personal Google Account (Recommended for individuals)**
669
+
670
+ ```bash
671
+ # Set your API key from Google AI Studio
672
+ export GOOGLE_API_KEY='your-api-key-here'
673
+
674
+ # Alternative: Set GEMINI_API_KEY (also supported)
675
+ export GEMINI_API_KEY='your-api-key-here'
676
+
677
+ # Get an API key at: https://aistudio.google.com/app/apikey
678
+ ```
679
+
680
+ **Option 2: Vertex AI Enterprise (Recommended for organizations)**
681
+
682
+ ```bash
683
+ # Authenticate with Google Cloud
684
+ gcloud auth application-default login
685
+
686
+ # Set your project and location
687
+ export GOOGLE_CLOUD_PROJECT='your-gcp-project-id'
688
+ export GOOGLE_CLOUD_LOCATION='us-central1' # or your preferred region
689
+
690
+ # Alternative: Use service account
691
+ export GOOGLE_APPLICATION_CREDENTIALS='/path/to/service-account-key.json'
692
+ ```
693
+
694
+ #### Configuration
695
+
696
+ Build uses a dedicated config directory for Gemini:
697
+
698
+ ```bash
699
+ # Default location
700
+ ~/.build/gemini/
701
+
702
+ # Or set custom location
703
+ export GEMINI_CONFIG_DIR=~/.build/gemini
704
+ ```
705
+
706
+ **Environment Variables**:
707
+
708
+ - `GOOGLE_API_KEY` - API key for personal Google account
709
+ - `GEMINI_API_KEY` - Alternative API key variable
710
+ - `GOOGLE_CLOUD_PROJECT` - GCP project ID for Vertex AI
711
+ - `GOOGLE_CLOUD_LOCATION` - GCP region for Vertex AI
712
+ - `GOOGLE_APPLICATION_CREDENTIALS` - Service account key path
713
+
714
+ #### Test Gemini Provider
715
+
716
+ ```bash
717
+ # Test with personal account
718
+ build run "Create a hello world function" --engine=gemini
719
+
720
+ # Test with specific model
721
+ build run "Add error handling" --engine=gemini --model=gemini-2.5-pro
722
+ ```
723
+
724
+ **Important**: This provider assumes `gemini` CLI is already installed and authenticated. Build simply executes the `gemini` command and lets the CLI handle all authentication and API communication. Choose the authentication method that matches your use case (personal vs enterprise).
725
+
726
+ ---
727
+
728
+ ### Copilot CLI
729
+
730
+ **Status**: Experimental — available for exploration, outside the primary validated public-release matrix.
731
+
732
+ #### Installation
733
+
734
+ Prerequisite: Node.js 22+ (the Copilot CLI's own minimum; Build itself requires Node 24.x or 26.x).
735
+
736
+ ```bash
737
+ # Install GitHub Copilot CLI (Node.js package)
738
+ npm install -g @github/copilot
739
+
740
+ # Verify installation
741
+ copilot --help
742
+ ```
743
+
744
+ If your npm config has `ignore-scripts=true`, use:
745
+
746
+ ```bash
747
+ npm_config_ignore_scripts=false npm install -g @github/copilot
748
+ ```
749
+
750
+ #### Authentication
751
+
752
+ Copilot CLI reuses your GitHub identity. Launch `copilot` once (interactive or `copilot -p "Hello" --allow-all-tools`) to complete device authentication if prompted. No additional Build configuration is required.
753
+
754
+ #### Configuration
755
+
756
+ Build invokes the standalone `copilot` application. Default execution is agentic direct editing: Copilot applies workspace edits and Build detects changes via git. Configure via environment variables:
757
+
758
+ | Variable | Purpose | Default |
759
+ | ---------------------------- | ----------------------------------------------- | --------------------------------------- |
760
+ | `BUILD_COPILOT_CLI_COMMAND` | Path to Copilot CLI binary | `copilot` |
761
+ | `BUILD_COPILOT_WORKFLOW` | Default workflow (`suggest`, `chat`, `explain`) | `suggest` |
762
+ | `BUILD_TIMEOUT_COPILOT_MS` | Provider timeout override in ms | `(unset; registry fallback 2700000)` |
763
+
764
+ Timeout resolution: explicit caller timeout, then `BUILD_TIMEOUT_COPILOT_MS` (when set), then global `BUILD_TIMEOUT_MS`, then registry/`providers.yaml` `timeout_ms` (registry provider timeout is `2700000` ms / 45 minutes). The env override itself is unset by default; do not treat `2700000` as the env var's default.
765
+
766
+ > **Note:** Default output mode is agentic direct edit with git-detected changes (`--allow-all-tools` and partial dangerous-command denies). Full shell denial requires `BUILD_COPILOT_SHELL_ENABLED=0`. Unified-diff/`diff_output` mode is opt-in (`BUILD_COPILOT_OUTPUT_MODE=diff_output`).
767
+
768
+ #### Usage Patterns
769
+
770
+ ```bash
771
+ # Agentic direct edit (git-detected changes; experimental provider)
772
+ build run "Harden password validation in @src/auth/password.ts" --provider=copilot
773
+
774
+ # Ask Copilot to propose tests for a new feature
775
+ build run "Write vitest cases for the new billing limits" \
776
+ --provider=copilot \
777
+ --workflow=chat \
778
+ --prompt "Focus on branch coverage and edge cases around plan downgrades."
779
+
780
+ # Combine Copilot with other providers for orchestration
781
+ build run competition "Modernize feature flag utilities" \
782
+ --variant copilot:local \
783
+ --variant claude:local \
784
+ --variant gemini:local
785
+ ```
786
+
787
+ **Recommended prompt structure**:
788
+
789
+ - Begin with the **goal** ("Improve caching invalidation").
790
+ - Specify **target files** (`FILES:` block or inline `@src/cache/index.ts`).
791
+ - Add **acceptance criteria** ("No new dependencies, keep existing API").
792
+ - End with **validation hints** for follow-up review after git-detected edits.
793
+
794
+ #### Environment Variables
795
+
796
+ | Variable | Purpose | Default |
797
+ | ---------------------------- | ----------------------------------------------- | ------------------------------------ |
798
+ | `BUILD_COPILOT_CLI_COMMAND` | Override Copilot CLI binary path | `copilot` |
799
+ | `BUILD_COPILOT_WORKFLOW` | Default workflow (`suggest`, `chat`, `explain`) | `suggest` |
800
+ | `BUILD_TIMEOUT_COPILOT_MS` | Provider timeout override in milliseconds | `(unset; registry fallback 2700000)` |
801
+ | `COPILOT_TELEMETRY_OPTOUT` | Disable GitHub Copilot telemetry (1=on) | `0` |
802
+
803
+ #### Troubleshooting
804
+
805
+ - **`Command not found: copilot`** — Ensure the CLI is installed and on your `PATH`, or set `BUILD_COPILOT_CLI_COMMAND`.
806
+ - **Authentication required** — Launch `copilot` once and follow the device-login flow, or ensure your GitHub CLI session includes Copilot scopes.
807
+ - **No git-detected changes / empty diff output** — Prefer the agentic default (workspace edits). For opt-in `diff_output`, provide FILE/FILES hints for multi-file edits.
808
+ - **`No changes detected (git status clean)` / `posix_spawnp failed`** — Under Build’s macOS sandbox wrapper, Copilot’s internal bash/shell tool can fail (`posix_spawnp failed`). Copilot can still perform direct file read/edit operations; prefer workflows that only create/edit files in existing directories. If you specifically need Copilot to run shell commands, opt out of Build’s sandbox for Copilot with `export BUILD_SANDBOX_COPILOT_ENABLED=0` (or `export BUILD_SANDBOX_GITHUB_COPILOT_ENABLED=0`).
809
+
810
+ ---
811
+
812
+ ### Grok CLI
813
+
814
+ **Status**: Supported via Grok Build CLI
815
+
816
+ For first-user delivery, prefer the validated selector
817
+ `--variant grok` and omit a Grok model pin. Build's registry
818
+ default is `auto`, which omits `-m/--model` and lets the installed Grok CLI use
819
+ its currently configured default. To choose a model explicitly for Build runs,
820
+ set the normal provider-scoped user option:
821
+
822
+ ```bash
823
+ build config set defaults.providers.grok.model grok-4.6 --scope user
824
+ ```
825
+
826
+ Inspect the resolved executor input, source, native default, discovery status,
827
+ and model-argument decision with:
828
+
829
+ ```bash
830
+ build config resolved --role executor --provider grok --json
831
+ ```
832
+
833
+ Set the value back to `auto` to follow the Grok CLI default again. Project-scoped
834
+ configuration and an explicit CLI model selection continue to take precedence
835
+ through Build's standard configuration resolution.
836
+
837
+ #### Installation
838
+
839
+ Install Grok Build with xAI's official installer:
840
+
841
+ ```bash
842
+ curl -fsSL https://x.ai/cli/install.sh | bash
843
+ ```
844
+
845
+ Because this runs a remote installer, Build will not execute it unless you explicitly opt in:
846
+
847
+ ```bash
848
+ BUILD_ALLOW_CURL_BASH=1 build provider setup --providers grok
849
+ ```
850
+
851
+ Then verify the CLI is on `PATH`:
852
+
853
+ ```bash
854
+ grok --version
855
+ ```
856
+
857
+ #### Authentication
858
+
859
+ Grok authentication is owned by the `grok` CLI. Build does not read or manage
860
+ Grok tokens.
861
+
862
+ **Primary (local / interactive):** use the Grok CLI's cached OAuth / device
863
+ login. Complete login once so the CLI stores auth under `~/.grok/`; later
864
+ Build runs reuse that cache without re-prompting:
865
+
866
+ ```bash
867
+ # Preferred local path: device / CLI login (cached OAuth)
868
+ grok login --device-auth
869
+ # or, if your installed Grok CLI uses the shorter form:
870
+ grok login
871
+ # First interactive launch also completes auth when no cache exists:
872
+ grok
873
+ ```
874
+
875
+ **Optional (CI / headless automation):** set the official xAI API key when you
876
+ need non-interactive runs without a local CLI auth cache:
877
+
878
+ ```bash
879
+ export XAI_API_KEY=your-key
880
+ ```
881
+
882
+ `GROK_CODE_XAI_API_KEY` is a **deprecated** Build compatibility alias. It is
883
+ still accepted for older Grok Build CLI / Build setups; prefer `XAI_API_KEY`
884
+ for new headless configuration. Do not treat the alias as the primary key.
885
+
886
+ #### Health and passive readiness
887
+
888
+ `build doctor --provider grok` uses passive checks only. A configured
889
+ `XAI_API_KEY`, the deprecated `GROK_CODE_XAI_API_KEY` alias, or an existing
890
+ `~/.grok/auth.json` reports authentication as **unknown** (legacy boolean auth
891
+ is `false`) until execution verifies the credential. Passive checks do not run
892
+ `grok` because that could start browser auth. That unverified state does not
893
+ block provider selection or `run`/`run competition`. Use
894
+ `build doctor --probe --provider grok` for an explicit active readiness check.
895
+ `run` and `run competition` establish auth on the requested execution.
896
+
897
+ For headless `run`/`run competition` without a usable CLI auth cache, set `XAI_API_KEY`
898
+ (optional path above). `BUILD_GROK_ALLOW_BROWSER_AUTH=1` is an **opt-in only**
899
+ escape hatch when you deliberately accept that the requested Grok execution
900
+ may open a browser; do not treat browser auth as automatically safe in
901
+ headless or CI environments.
902
+
903
+ `build run competition` and `build run` delegate authentication to the requested Grok
904
+ CLI execution. A cached CLI login, `XAI_API_KEY`, or the deprecated
905
+ `GROK_CODE_XAI_API_KEY` alias are common auth paths, but Build does not reject
906
+ the run based on a preflight inspection of those paths. Set
907
+ `BUILD_GROK_ALLOW_BROWSER_AUTH=1` only when an interactive browser flow is
908
+ acceptable.
909
+
910
+ #### Headless argv posture
911
+
912
+ Headless Grok runs use `grok --prompt-file` with structured JSON stdout (streaming by default),
913
+ validated against live headless preflight runs.
914
+
915
+ **Default posture** (`src/core/providers/grok/execution/commands.ts`):
916
+
917
+ | Flag | Value | Rationale |
918
+ |------|-------|-----------|
919
+ | `--prompt-file` | always | Avoid argv bloat; never use `-p`/`--single` for Build prompts |
920
+ | `--output-format` | `streaming-json` | Follows the provider-streaming gate (`BUILD_PROVIDER_STREAMING`, default on since 2026-06-04); set `BUILD_PROVIDER_STREAMING=0` for the `json` posture (deterministic success/error envelopes); `BUILD_GROK_OUTPUT_FORMAT` overrides both |
921
+ | `--no-alt-screen` | always | Headless determinism |
922
+ | `--no-memory` | default on | Disable Grok memory unless `BUILD_GROK_MEMORY=1` |
923
+ | `--rules` | `build` and `native+build` launches | Carries Build's instruction set for that run only, appended to Grok's system prompt. Judges, `native` mode, and asks with `inheritance.ask` unset get none. `--trust` is never passed: it adds the folder to `~/.grok/trusted_folders.toml` for good |
924
+ | `-m` / `--model` | omitted when the resolved model is `auto` | Lets the installed Grok CLI use its configured default. Explicit project/user/CLI model selections are passed through as `-m <model>`. |
925
+ | `--permission-mode` | *omitted for `default`* | Passing an approval-requiring mode (incl. the literal `default`, plus `acceptEdits`/`auto`) kills Grok's permission worker on the first tool call under headless OAuth (`Transport channel closed, when Auth(AuthorizationRequired)`; exit 0, empty `Cancelled` envelope) — validated on 0.2.16, `acceptEdits` reconfirmed dead on 0.2.73. Omitting uses the CLI's native default and survives. Explicit `bypassPermissions` also survives and is still emitted. `dontAsk` is version-gated for the locked native read-only posture on grok >= 0.2.93: `dontAsk` plus matching inspect/search allows is not sufficient on its own, because unmatched tools fall through to the user's own Grok configuration; the locked posture therefore also positively lists inspect tools (`Read`, `Grep`, `Bash`, `WebFetch`, `WebSearch`), disallows `Edit`/`Write`, and denies MCP tools. Official `--sandbox read-only` is omitted because it cannot nest under Build's outer seatbelt. Read-only runs (`readOnlyWorkingDir`/analysis intent, e.g. `build ask --to grok`) use that locked posture when the CLI is new enough; older/unknown CLIs fail before semantic read-only spawn rather than falling back to `--always-approve`. |
926
+ | `--allow` | read-only runs under `dontAsk` | Grants specific tools under `dontAsk` (`Read`, `Grep`, `Bash`, `WebFetch`, `WebSearch` for consults; necessary but not sufficient alone for the locked read-only posture). Callers pass `allowRules`; `BUILD_GROK_ALLOW_RULES` (csv) overrides. |
927
+ | `--always-approve` | default on (except `dontAsk`) | Required for headless edit-task execution; gated by an active policy boundary. Suppressed under `dontAsk` / locked read-only posture, which would otherwise defeat the allowlist. |
928
+ | `--max-turns` | *not set* | Empirically verified (0.2.82, 2026-07-02): no low default turn cap exists — 40+ sequential turns and 12-minute commands complete without the flag; its only observed real-world effect was killing healthy runs when set too low. Opt in with `BUILD_GROK_MAX_TURNS` (explicit doctor probes do, to stay cheap); invalid values omit the flag rather than falling back |
929
+ | `--no-auto-update` | always | xAI recommends this for scripts/CI/headless runs |
930
+ | `--sandbox` | omitted | Grok's official `read-only` profile is itself `sandbox-exec` and cannot nest under Build's outer seatbelt (EPERM). Read-only and edit/mixed both use Build's policy/sandbox boundary for FS confinement. |
931
+ | `--reasoning-effort` | set after capability validation | Emitted for explicit effort-capable models (for example `grok-4.6`) and when `auto` discovers such a model. `--effort` is never passed. Discovery failure does not invent capability. |
932
+
933
+ **Auth:** Primary local path is CLI OAuth / device login (`~/.grok` cache). Provider-scoped keys (`XAI_API_KEY`, deprecated `GROK_CODE_XAI_API_KEY`) are optional via provider policy for CI/headless without a cache — not mandatory. Passive tri-state readiness remains `unknown` and legacy boolean auth is `false` when either a key or a valid `~/.grok/auth.json` is present, until an explicit active probe or a successful requested execution verifies headless use; that unverified state does not block selection or execution. Compete/run do not run a pre-execution edit/auth probe; authentication is established by the requested `grok --prompt-file` invocation, and errors from that run keep their normal classification. Explicit `build doctor --probe --provider grok` still runs an active headless edit probe (`buildGrokArgv` + `executeProviderCommand`, `--max-turns 8`, `--always-approve`, `BUILD_GROK_AUTH_PROBE_TIMEOUT_MS` defaulting to 45 seconds). Session resume: `ProviderRunOptions.resumeSessionId` emits `--resume <id>`. Parsed token usage propagates through shared orchestration telemetry when present (USD may stay unknown without pricing).
934
+
935
+ **Overrides:** see the `BUILD_GROK_*` env vars in the Configuration subsection below.
936
+
937
+ #### Configuration
938
+
939
+ Build invokes `grok` in headless mode. Configure transport behavior via environment variables:
940
+
941
+ | Variable | Purpose | Default |
942
+ | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------- |
943
+ | `BUILD_GROK_CLI_COMMAND` | Override Grok CLI binary path | `grok` |
944
+ | `BUILD_GROK_PERMISSION_MODE` | Optional explicit mode (`dontAsk`, `bypassPermissions`). Default **omits** `--permission-mode` (CLI native default). `acceptEdits`/`auto` are rejected as unsafe headless. `dontAsk` requires allow rules and is only used for the locked native read-only posture when the CLI is >= 0.2.93 | omit flag / `default` |
945
+ | `BUILD_GROK_ALLOW_RULES` | Comma-separated `--allow` rules when permission mode is `dontAsk` (required for `dontAsk`) | unset |
946
+ | `BUILD_GROK_AUTO_APPROVE` | Set to `0` to omit `--always-approve` (suppressed automatically under `dontAsk`) | enabled |
947
+ | `BUILD_GROK_ALWAYS_APPROVE` | Legacy alias for `BUILD_GROK_AUTO_APPROVE` | enabled |
948
+ | `BUILD_GROK_MAX_TURNS` | Opt-in `--max-turns` cap. **Unset by default** (flag omitted). Invalid values also omit the flag — there is no fallback default such as 400 | unset (omit flag) |
949
+ | `BUILD_GROK_OUTPUT_FORMAT` | `plain`, `json`, or `streaming-json`. When unset, follows `BUILD_PROVIDER_STREAMING` (default on → `streaming-json`; set `BUILD_PROVIDER_STREAMING=0` for buffered `json`) | `streaming-json` (when streaming on) |
950
+ | `BUILD_GROK_MEMORY` | Set to `1` to allow Grok memory | disabled (`--no-memory`) |
951
+ | `BUILD_GROK_ALLOW_BROWSER_AUTH` | Set to `1` to allow requested Grok execution (or an explicit doctor probe) to start browser auth | disabled |
952
+ | `BUILD_SKIP_GROK` | Skip Grok execution | unset |
953
+
954
+ **Headless permission notes:**
955
+
956
+ - Omitting `--permission-mode` is intentional and **not** the same as passing `--permission-mode default`. Approval-worker modes (`default`, `acceptEdits`, `auto`) die under headless OAuth on tool use.
957
+ - `acceptEdits` and `auto` are unsafe for headless automation; Build rejects them if set via `BUILD_GROK_PERMISSION_MODE`.
958
+ - Read-only consults (`build ask --to grok`, analysis intent / `readOnlyWorkingDir`) use the locked native posture when the CLI is >= 0.2.93: `dontAsk` + inspect/search allows (`Read`, `Grep`, `Bash`, `WebFetch`, `WebSearch`) plus write tools disallowed and MCP tools denied. Official `--sandbox read-only` is omitted (cannot nest under Build's seatbelt). `dontAsk` + allow rules alone are not globally fail-closed. Older/unknown CLIs fail before semantic read-only spawn rather than falling back to `--always-approve`. Elevating `BUILD_GROK_PERMISSION_MODE` (e.g. `bypassPermissions`) cannot YOLO past the locked posture.
959
+ - `--always-approve` (and explicit `bypassPermissions`) require an active Build policy/sandbox boundary. For edit intent, `BUILD_GROK_AUTO_APPROVE=0` fails closed before launch (no false success without a tool-approval path).
960
+ - Session resume: when `ProviderRunOptions.resumeSessionId` is set, Build emits Grok CLI `--resume <id>`. Legacy env names alone do not resume a session.
961
+ - Token usage: when Grok headless envelopes include parseable token counts, Build propagates them through orchestration telemetry. USD cost may remain unknown when pricing is unavailable.
962
+
963
+ #### Usage Patterns
964
+
965
+ Straightforward first run:
966
+
967
+ ```bash
968
+ git checkout -b run/my-task
969
+ build run "Update the target file and add focused tests" --provider grok
970
+ ```
971
+
972
+ When you want judge scores or feedback, use judged competition instead (AI
973
+ judging is the default), then apply the harvested result from a delivery branch:
974
+
975
+ ```bash
976
+ git checkout -b run/my-graded-task
977
+ build run competition "Update the target file and add focused tests" \
978
+ --variant grok
979
+ git checkout -b fix/my-graded-task
980
+ build run competition apply <competition-id>
981
+ ```
982
+
983
+ Multi-provider comparison after local validation:
984
+
985
+ ```bash
986
+ build run competition "Update the target file and add focused tests" \
987
+ --variant grok \
988
+ --variant codex
989
+ ```
990
+
991
+ **Important**: Build defers Grok authentication to the Grok CLI. For local use,
992
+ prefer cached CLI OAuth / device login (`grok login --device-auth`, `grok login`,
993
+ or an initial `grok`). `XAI_API_KEY` is optional for CI/headless automation.
994
+ `GROK_CODE_XAI_API_KEY` remains a deprecated compatibility alias (still accepted;
995
+ prefer `XAI_API_KEY`). Key presence is configured but unverified until an active
996
+ probe or requested execution succeeds. Build starts the requested `grok --prompt-file`
997
+ execution without inspecting those auth paths first; the CLI's actual result is
998
+ authoritative. Set `BUILD_GROK_ALLOW_BROWSER_AUTH=1` only when browser auth is
999
+ acceptable. Explicit `grok-4.6` reasoning effort
1000
+ (`low`/`medium`/`high`/`xhigh`) is passed as `--reasoning-effort`. The `auto`
1001
+ model honors an explicit effort request only when native model discovery
1002
+ resolves to an effort-capable model; discovery failure does not invent
1003
+ capability, and `auto` still omits `-m`.
1004
+
1005
+ ---
1006
+
1007
+ ### Kiro CLI
1008
+
1009
+ **Status**: Experimental native provider adapter
1010
+
1011
+ #### Installation
1012
+
1013
+ Install Kiro CLI with Kiro's official installer:
1014
+
1015
+ ```bash
1016
+ curl -fsSL https://cli.kiro.dev/install | bash
1017
+ ```
1018
+
1019
+ Because this runs a remote installer, Build will not execute it unless you explicitly opt in:
1020
+
1021
+ ```bash
1022
+ BUILD_ALLOW_CURL_BASH=1 build provider setup --providers kiro
1023
+ ```
1024
+
1025
+ Then verify the CLI is on `PATH`:
1026
+
1027
+ ```bash
1028
+ kiro-cli --version
1029
+ ```
1030
+
1031
+ #### Authentication
1032
+
1033
+ Kiro headless automation requires an API key:
1034
+
1035
+ ```bash
1036
+ export KIRO_API_KEY=your-key
1037
+ kiro-cli whoami --format json
1038
+ ```
1039
+
1040
+ Interactive login is available with `kiro-cli login`, but automation should use `KIRO_API_KEY` so `kiro-cli chat --no-interactive` can run without browser prompts.
1041
+
1042
+ #### Health and passive readiness
1043
+
1044
+ `build doctor --provider kiro` checks that `kiro-cli` is installed and reports passive auth readiness from `KIRO_API_KEY`. Kiro's native auth probe uses `kiro-cli whoami --format json` for active provider auth checks without attempting browser login.
1045
+
1046
+ #### Configuration
1047
+
1048
+ Build invokes Kiro in headless mode with:
1049
+
1050
+ ```bash
1051
+ printf '%s' "<prompt>" | kiro-cli chat --no-interactive --trust-all-tools
1052
+ ```
1053
+
1054
+ The prompt is delivered on stdin. Passing it positionally makes Kiro interpret
1055
+ the text as a file path.
1056
+
1057
+ Kiro models come from the static list configured in
1058
+ `.build-project/config/providers.yaml`; Build does not query the Kiro CLI for a model
1059
+ list. Kiro is experimental: default readiness and interactive setup omit it.
1060
+ Select it explicitly with `build provider setup --providers kiro`, show
1061
+ experimental readiness with `build provider list --include-experimental`, or
1062
+ include it in interactive setup with
1063
+ `build provider setup --include-experimental`.
1064
+
1065
+ | Variable | Purpose | Default |
1066
+ | ------------------------- | ------------------------------------ | ---------- |
1067
+ | `KIRO_API_KEY` | Kiro API key for headless automation | (none) |
1068
+ | `BUILD_KIRO_CLI_COMMAND` | Override Kiro CLI binary path | `kiro-cli` |
1069
+ | `BUILD_SKIP_KIRO` | Skip Kiro execution | unset |
1070
+
1071
+ #### Usage Patterns
1072
+
1073
+ ```bash
1074
+ build run "Review this change for correctness" --provider=kiro
1075
+ build run competition "Add focused tests" --variant kiro:local
1076
+ ```
1077
+
1078
+ **Important**: Kiro support should be validated end-to-end in an authenticated environment before using it for critical work. Current support is based on Kiro's documented headless command surface plus unit-level Build coverage.
1079
+
1080
+ ---
1081
+
1082
+ ### Google Antigravity CLI
1083
+
1084
+ **Status**: Supported validated native CLI provider using Google's official `agy` CLI.
1085
+
1086
+ #### Installation
1087
+
1088
+ Install Antigravity CLI with Google's official installer:
1089
+
1090
+ ```bash
1091
+ curl -fsSL https://antigravity.google/cli/install.sh | bash
1092
+ ```
1093
+
1094
+ Because this runs a remote installer, Build will not execute it unless you explicitly opt in:
1095
+
1096
+ ```bash
1097
+ BUILD_ALLOW_CURL_BASH=1 build provider setup --providers antigravity
1098
+ ```
1099
+
1100
+ Then verify the CLI is on `PATH`:
1101
+
1102
+ ```bash
1103
+ agy --version
1104
+ ```
1105
+
1106
+ #### Authentication
1107
+
1108
+ Antigravity CLI authenticates with Google OAuth on first run and stores credentials in the OS keyring. On local machines it may open a browser; on SSH/headless machines it should print a browser URL and code.
1109
+
1110
+ ```bash
1111
+ agy
1112
+ ```
1113
+
1114
+ Some headless environments may also support an API key:
1115
+
1116
+ ```bash
1117
+ export ANTIGRAVITY_API_KEY=your-key
1118
+ ```
1119
+
1120
+ `build doctor --provider antigravity` checks that `agy` is installed and reports passive auth readiness from `ANTIGRAVITY_API_KEY` when present. Native headless readiness currently requires `ANTIGRAVITY_API_KEY`; browser/OAuth state is CLI-owned and is not treated as a reliable non-interactive health signal.
1121
+
1122
+ #### Configuration
1123
+
1124
+ Build invokes Google's Antigravity CLI in print mode with:
1125
+
1126
+ ```bash
1127
+ agy --print-timeout 45m0s \
1128
+ --output-format stream-json \
1129
+ [--model <model-id>] \
1130
+ --add-dir <working-dir> \
1131
+ --log-file <run-log> \
1132
+ --dangerously-skip-permissions \
1133
+ --print "<prompt>"
1134
+ ```
1135
+
1136
+ `--print` is value-bearing: it consumes the next argv token as the prompt. Every
1137
+ other flag must precede it, with the prompt immediately after. Ordering
1138
+ `--print` before another flag makes `agy` treat that flag as the prompt text and
1139
+ answer a question about it instead of running the task -- it still exits 0, so
1140
+ the mistake reads as a successful run. `buildAntigravityArgv`
1141
+ (`src/core/providers/antigravity/execution/commands.ts`) enforces this ordering.
1142
+
1143
+ The prompt starts with a one-line provider context note. Under `inheritance.automated` (or
1144
+ `inheritance.ask`) set to `build` or `native+build`, Build's instruction set takes its place; see
1145
+ Inheritance modes in the repository's `docs/INSTRUCTION_ARCHITECTURE.md`.
1146
+
1147
+ This provider is `supported_validated` as the better-supported alternative to the
1148
+ experimental `gemini` provider. Validated 2026-08-27 against an authenticated `agy` 1.1.22: structured
1149
+ stream output reports the resolved model, input/output/thinking/cache-read tokens,
1150
+ duration, status, and conversation id. Single-file
1151
+ and multi-file edits land through the Build worktree path, a failing task exits
1152
+ non-zero with no changes, and a judged competition produced a correct diff.
1153
+
1154
+ `build provider list` reports Antigravity auth as `unknown` rather than `yes`.
1155
+ That is expected: `agy` exposes no non-interactive auth-status probe, so the
1156
+ absence of a signal does not prove you are unauthenticated. Execution defers auth
1157
+ to the CLI and surfaces any real auth error at runtime. Google's official docs
1158
+ still emphasize the interactive TUI, so re-check the headless `--print` path after
1159
+ an `agy` upgrade. Build does not route Antigravity through OpenCode. Concrete
1160
+ model ids are passed through `agy --model`; unpinned runs retain the CLI default
1161
+ and record the model when the stream reports one, otherwise `cli-default`.
1162
+
1163
+ | Variable | Purpose | Default |
1164
+ | -------------------------------- | ------------------------------------------------------------------------------------------ | ------- |
1165
+ | `ANTIGRAVITY_API_KEY` | Optional Antigravity API key for headless environments when supported by the installed CLI | (none) |
1166
+ | `BUILD_ANTIGRAVITY_CLI_COMMAND` | Override Antigravity CLI binary path | `agy` |
1167
+ | `BUILD_SKIP_ANTIGRAVITY` | Skip Antigravity execution | unset |
1168
+
1169
+ #### Usage Patterns
1170
+
1171
+ ```bash
1172
+ build run "Review this change for correctness" --provider=antigravity
1173
+ build run competition "Add focused tests" --variant antigravity:local
1174
+ ```
1175
+
1176
+ Aliases accepted by Build include `agy`, `anti-gravity`, and `antigravity-cli`.
1177
+
1178
+ ---
1179
+
1180
+ ### Upstream Models via OpenCode
1181
+
1182
+ **Status**: Available through the OpenCode provider, not as standalone Build execution providers.
1183
+
1184
+ Configure the upstream provider in OpenCode, then use the exact model ID reported by `opencode models`:
1185
+
1186
+ ```bash
1187
+ curl -fsSL https://opencode.ai/install | bash
1188
+ opencode auth login
1189
+ opencode models
1190
+
1191
+ build run "Analyze this code" --engine=opencode --model=<provider/model>
1192
+ build run competition "Implement feature" --variant opencode:<provider/model>
1193
+ ```
1194
+
1195
+ Build passes the model selection to OpenCode. Provider endpoints, credentials, and model declarations belong in OpenCode configuration rather than Build configuration.
1196
+
1197
+ ---
1198
+
1199
+ ### OpenRouter (Pricing Source Only)
1200
+
1201
+ **Status**: Not available as an execution provider
1202
+
1203
+ **Note**: OpenRouter is used internally by Build as a pricing data source for model cost calculations. It is not available for task execution. Use a native execution provider (Claude, Cursor, Codex, Gemini, Copilot, Grok, or OpenCode) instead.
1204
+
1205
+ ---
1206
+
1207
+ ### OpenCode
1208
+
1209
+ **Status**: Supported (experimental)
1210
+
1211
+ **Overview**: OpenCode is an AI assistant by Anomaly that provides code generation and assistance capabilities.
1212
+
1213
+ #### Installation
1214
+
1215
+ ```bash
1216
+ # Quick setup
1217
+ BUILD_ALLOW_CURL_BASH=1 build provider setup --providers opencode
1218
+
1219
+ # Or install manually on Linux/macOS/WSL
1220
+ curl -fsSL https://opencode.ai/install | bash
1221
+
1222
+ # npm and Homebrew are also supported
1223
+ npm install -g opencode-ai
1224
+ brew install anomalyco/tap/opencode
1225
+ ```
1226
+
1227
+ #### Authentication
1228
+
1229
+ OpenCode manages its provider configuration and credentials. Interactive setups can use:
1230
+
1231
+ ```bash
1232
+ opencode auth login
1233
+ ```
1234
+
1235
+ For headless setups, use the configuration and environment-variable mechanisms documented by OpenCode. Build does not interpret an upstream provider's credentials or treat their presence as proof that execution will authenticate.
1236
+
1237
+ #### Discovery (CLI-first)
1238
+
1239
+ Build obtains provider and model discovery observations from the OpenCode CLI; it does not parse credential files:
1240
+
1241
+ - **Credential-store entries**: `opencode auth list` — reports what OpenCode has recorded, not whether a future execution will authenticate.
1242
+ - **Model inventory**: `opencode models` — advisory model IDs for `opencode run --model <id>`. OpenCode 1.x also takes `opencode models <provider>` and `--refresh`; OpenCode 2 takes neither, so Build filters the full list by `provider/` prefix. A missing or empty inventory does not replace an execution attempt.
1243
+
1244
+ - **Health/diagnostics**: `build doctor --provider opencode` reports:
1245
+ - Whether the OpenCode CLI is installed
1246
+ - Credential-store entries reported by `opencode auth list`
1247
+ - Advisory models reported by `opencode models`
1248
+ - Optional metadata enrichment from models.dev (best-effort, cached 24h)
1249
+
1250
+ - **Offline behavior**: If the network is unavailable, Build still succeeds; models.dev enrichment is skipped and cached data is reused when present.
1251
+ - **Refresh**: On OpenCode 1.x, use `opencode models --refresh` only when explicitly requested; Build does not auto-refresh on every run.
1252
+
1253
+ Optional enrichment: Build may fetch the [models.dev](https://models.dev) catalog (pricing, context, capabilities) with a 24h TTL cache. Models.dev is metadata only and is never treated as authoritative for what you can run locally. Enrichment is best-effort and does not block startup or fail the command when offline.
1254
+
1255
+ **Health check:**
1256
+
1257
+ ```bash
1258
+ build doctor --provider opencode
1259
+ ```
1260
+
1261
+ Shows: CLI installed, entries from `opencode auth list`, and advisory models from `opencode models`. Authentication is established by a requested execution, not this diagnostic. No secrets are printed in logs or telemetry.
1262
+
1263
+ #### Plugins
1264
+
1265
+ OpenCode supports plugins for extended functionality. Plugins are optional for basic provider use.
1266
+
1267
+ Build does not use OpenCode plugins as the Antigravity integration path. Use the standalone Google Antigravity CLI provider (`--provider antigravity`) for Antigravity work.
1268
+
1269
+ #### Test OpenCode Provider
1270
+
1271
+ ```bash
1272
+ # Test with default model
1273
+ build run "Create a hello world test" --variant opencode
1274
+
1275
+ # Test in competition
1276
+ build run competition "Implement feature" \
1277
+ --variant opencode \
1278
+ --variant claude
1279
+ ```
1280
+
1281
+ #### Headless invocation posture
1282
+
1283
+ Headless OpenCode runs use `opencode run` with prompt-file delivery when the CLI supports `--file`. The invocation shape is `--file <prompt.md> -- "Read the attached prompt file and complete the task exactly as specified."`; older CLIs without `--file` fall back to a positional prompt.
1284
+
1285
+ On OpenCode 2, `run`, `models` and `auth list` get `--standalone`, so each call uses a private server instead of OpenCode's shared background service, which runs tools outside Build's sandbox. `run` also gets `--auto`, because OpenCode 2 ignores `OPENCODE_PERMISSION`, and reasoning effort goes as `--model <provider/model>#<variant>`. When `opencode --version` reports 2.x and a command's help cannot be read, Build still passes `--standalone`, and `--auto` for `run`; when `run --help` lists no `--standalone`, the run is refused before launch.
1286
+
1287
+ Known failure modes to preserve in tests and diagnostics:
1288
+
1289
+ - Positional prompt transport can be misread by OpenCode as file/path-like task text; prefer prompt-file delivery.
1290
+ - Headless runs can remain process-active while making no output or file progress; keep OpenCode idle defaults stricter than the hard timeout.
1291
+ - OpenCode may emit little or no useful stdout on timeout; preserve redacted argv plus stdout/stderr tails on provider results.
1292
+ - OpenCode config, data, state, and cache homes must stay isolated per run unless explicitly overridden.
1293
+ - The per-run config folder is seeded from the user's `opencode.json`, `opencode.jsonc` and `config.json`; the per-run data folder gets `auth.json` only, which OpenCode 1 reads. OpenCode 2 keeps credentials in its database (`opencode.db`), and a new database does not import `auth.json` (observed on 2.1.4). Sign-ins stored in the user's database, including OpenCode Console OAuth, therefore do not reach an OpenCode 2 run; it gets credentials from environment variables and the seeded configuration. For OpenCode Console and Go models, set `OPENCODE_API_KEY` to a Console API key with Go access.
1294
+
1295
+ #### Configuration
1296
+
1297
+ OpenCode reads project configuration from `opencode.json` or `opencode.jsonc`. Keep the schema declaration so editors and OpenCode validate against the upstream contract, and use OpenCode's `{env:VARIABLE_NAME}` substitution instead of committing credential values. OpenCode substitutes an unset variable with an empty string, so the resulting execution—not the placeholder's presence—establishes whether configuration is usable:
1298
+
1299
+ ```json
1300
+ {
1301
+ "$schema": "https://opencode.ai/config.json",
1302
+ "model": "{env:OPENCODE_MODEL}"
1303
+ }
1304
+ ```
1305
+
1306
+ Provider declarations, endpoints, model IDs, and credential variable names are upstream-specific; follow [OpenCode's configuration documentation](https://opencode.ai/docs/config/) for those fields.
1307
+
1308
+ Build scopes the environment passed to provider children. When an OpenCode configuration references an otherwise unrecognized variable, add its name to the parent process's comma-separated allowlist, for example `BUILD_CHILD_ENV_ALLOWLIST=PROVIDER_API_KEY`. This only permits the variable to reach OpenCode. It does not configure the provider, validate the value, prove authentication, or make inventory output authoritative. Never put the credential value itself in `BUILD_CHILD_ENV_ALLOWLIST`.
1309
+
1310
+ #### CLI binary
1311
+
1312
+ Build runs the first `opencode` on `PATH`. To run a specific binary, set `BUILD_OPENCODE_CLI_COMMAND`, or set it for every project in your user registry overlay, `~/.build/config/providers.yaml`:
1313
+
1314
+ ```yaml
1315
+ providers:
1316
+ opencode:
1317
+ cli:
1318
+ command: /opt/homebrew/bin/opencode
1319
+ ```
1320
+
1321
+ Point Build at the real OpenCode binary when the `opencode` on `PATH` is a wrapper or launcher. Build runs OpenCode inside its sandbox, which allows writes only to the run's workspace, temporary folders, caches, and Build's runtime state, so a launcher that first writes elsewhere (its own log file, for example) exits before OpenCode starts. The run then fails with reason `sandbox_path_denied` and names the refused path. Readiness and `build doctor` do not run the CLI inside the sandbox, so they can report OpenCode ready in this case.
1322
+
1323
+ ---
1324
+
1325
+ ### Pi CLI
1326
+
1327
+ **Status**: Supported validated native provider adapter. Validated 2026-07-26 against `pi` 0.82.1 with a cloud Anthropic backend, exercised through `build run` and `build run competition` with incremental streaming. The local OpenAI-compatible (self-hosted) path is **not yet validated**.
1328
+
1329
+ Pi is unlike Build's other providers: it is a backend-agnostic **host**, not a vendor. One Pi install can front cloud APIs (Anthropic, OpenAI, Google, and ~30 others) or a local OpenAI-compatible endpoint such as Ollama. Cost, speed, and reasoning quality are therefore properties of whichever backend you configure, not of `pi` itself — which is why Build's capability ratings for Pi are deliberately conservative.
1330
+
1331
+ #### Installation
1332
+
1333
+ ```bash
1334
+ npm install -g @earendil-works/pi-coding-agent
1335
+ pi --version
1336
+ ```
1337
+
1338
+ #### Authentication
1339
+
1340
+ Pi owns its own credential store at `~/.pi/agent/auth.json` (written `0600`). Configure a backend either through Pi or through a backend environment variable:
1341
+
1342
+ ```bash
1343
+ # Option A: a backend env var Build will pass through
1344
+ export ANTHROPIC_API_KEY=your-key
1345
+
1346
+ # Option B: a local OpenAI-compatible endpoint (no real credential needed)
1347
+ # declare it in ~/.pi/agent/models.json; Pi still wants a placeholder
1348
+ # apiKey value, e.g. "ollama"
1349
+ ```
1350
+
1351
+ Build passes through `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, and `GOOGLE_API_KEY`. An operator-named key such as `MY_COMPANY_API_KEY` is **not** carried into the child environment in v1.
1352
+
1353
+ #### Health and passive readiness
1354
+
1355
+ `build doctor --provider pi` checks that `pi` is installed and reports passive auth readiness. Readiness reports `unknown` rather than `no` when no backend env var is set, because an absent env var does not prove you are unauthenticated: Pi may hold a stored credential, or your backend may be a local endpoint that needs none. `unknown` keeps Pi attempt-eligible; a real auth failure surfaces from the CLI at execution time.
1356
+
1357
+ #### Configuration
1358
+
1359
+ Build invokes Pi non-interactively with:
1360
+
1361
+ ```bash
1362
+ pi --print --mode json --no-approve --no-session [--model <backend/model>] [--thinking <level>] [--tools <names>] "<prompt>"
1363
+ ```
1364
+
1365
+ Three details are load-bearing:
1366
+
1367
+ - **`--provider` is never emitted.** Pi's `--provider` names its *inner* inference backend (its default is `google`), not the Build provider. Build passes a qualified `backend/model` id through `--model` instead, so Pi resolves the backend from the id and your configuration is never overridden. Bare model ids resolve against Pi's own default backend, so prefer qualified ids.
1368
+ - **`--no-approve`, never `--approve`.** Pi's `--approve` grants *project trust*, which loads project-local extensions — that is, executable code from the repository being worked on. Unattended runs must not opt in.
1369
+ - **Global Pi resources still load.** `--no-approve` does not disable user-level extensions or settings. The generated macOS profile keeps `extensions/`, `npm/`, `git/`, `settings.json`, `trust.json` and `models.json` readable but write-protected beneath the active agent directory, including `PI_CODING_AGENT_DIR`. Directory removal and rename are denied for that root and its ancestors; first-run directory creation, runtime data and sibling locks remain writable.
1370
+ - **Prepare global packages outside confined runs.** Install or update configured packages before starting Build; a missing or mismatched npm/git package cannot be installed into the protected store during startup. Settings/model maintenance and legacy settings migrations also belong outside the generated sandbox.
1371
+ - **Auth and helpers remain writable.** `auth.json` supports initialization and OAuth refresh, and `bin/` supports Pi's downloaded helpers. Auth values can contain executable credential commands, and helper binaries run through Pi's PATH. Those are residual persistence surfaces: the selected authority denies do not close them. A later direct Pi launch uses that later process's privileges.
1372
+ - **Tool names must be Pi's own.** The built-ins are `read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`. Pi silently *filters* unrecognized `--tools` names rather than erroring, so a Claude-style name like `read_file` would yield an agent with zero tools that still reports success. Build drops unknown names and warns instead of passing them on. Critically, omitting `--tools` is **not** the same as granting nothing: Pi falls back to `read,bash,edit,write`. So when a caller requests an allowlist and none of the names survive filtering, Build emits `--no-tools` to fail closed rather than silently widening the request into write and shell access. A read-only run is restricted to `read,grep,find,ls` (`bash` is excluded because it can write via shell redirection).
1373
+
1374
+ `--thinking` accepts `off|minimal|low|medium|high|xhigh|max`, a superset of Build's five effort levels, so every level maps natively and exactly. Whether the configured backend honors it is a backend property.
1375
+
1376
+ Pi is a supported provider: default readiness and interactive setup include it, and no `--include-experimental` opt-in is needed. Passive auth readiness reports `unknown` rather than `no`, because Pi keeps credentials in its own `~/.pi/agent/auth.json` and a local endpoint may need no credential at all — so an absent env var does not prove you are unauthenticated. Backend auth failures surface at execution time and are classified for retry.
1377
+
1378
+ | Variable | Purpose | Default |
1379
+ | ----------------------- | --------------------------------------------- | ------- |
1380
+ | `ANTHROPIC_API_KEY` | Backend credential (when using Anthropic) | (none) |
1381
+ | `OPENAI_API_KEY` | Backend credential (when using OpenAI) | (none) |
1382
+ | `BUILD_PI_CLI_COMMAND` | Override Pi CLI binary path | `pi` |
1383
+ | `BUILD_SKIP_PI` | Skip Pi execution | unset |
1384
+
1385
+ #### Usage Patterns
1386
+
1387
+ ```bash
1388
+ build run "Add a focused test for the parser" --provider pi
1389
+ build run "Fix the failing case" --provider pi --model anthropic/claude-haiku-4-5
1390
+ ```
1391
+
1392
+ #### Known behavior
1393
+
1394
+ - **Exit codes are not a success signal in JSON mode.** Pi maps a failed turn to a non-zero exit only under `--mode text`; under `--mode json` it exits `0` even on an auth failure or an unresolvable model. Build derives success from the event stream (`stopReason`, `errorMessage`, and whether any text or file change was produced), so a failed run is reported as a failure rather than as an empty success.
1395
+ - **Pi blocks on an open stdin pipe.** Even in `--print` mode with the prompt in argv, Pi waits for stdin EOF before emitting anything: an open pipe produces zero bytes and never exits, while the identical spawn with stdin closed completes in about a second. Build spawns Pi with stdin ignored. This is also what makes an interactive `pi ... > file` appear to write nothing.
1396
+ - **Session resume is unsupported.** `--session <id>` calls an interactive "Fork this session?" confirmation even in non-interactive mode, which deadlocks on stdin. Build passes `--no-session`.
1397
+ - **Usage is snapshotted per model call, not per event.** Within one call Pi repeats the same running total on every event, so summing all events would multiply the totals. But a tool-using turn makes several billed calls (a verified two-call run reported 1482/143 then 1705/136), so taking only the last snapshot would undercount. Build accrues at each assistant `message_end` and skips the duplicate `turn_end`.
1398
+
1399
+ ---
1400
+
1401
+ ## Authentication Semantics
1402
+
1403
+ Build has four distinct authentication contexts. Understanding which applies prevents confusion between "setup readiness" and "runtime guarantees."
1404
+
1405
+ ### 1. Setup and Readiness Checks
1406
+
1407
+ `build provider list` reports provider installation and authentication status as a **one-time advisory check**. It does not gate execution. Output shows `OK` (installed + authenticated), `Warning:` (installed, not authenticated), or `Error` (not installed).
1408
+
1409
+ ### 2. Routing and Selection Heuristics
1410
+
1411
+ When selecting providers, routing (`routing-planner.ts`) and auto-orchestration (`auto-orchestrator.ts`) call `isAuthenticated()` as a heuristic. If auth is not pre-verified, the provider is still eligible — the routing rationale notes "auth not pre-verified; runtime will defer to the provider CLI."
1412
+
1413
+ ### 3. Explicit Preflight (Flywheel and Dry-Run)
1414
+
1415
+ Flywheel preflight (`flywheel-preflight.ts`) runs a dedicated `checkProviderAuth()` for workflow stages. Dry-run validation (`dry-run-validator.ts`) checks auth but explicitly labels it as advisory: "Authentication is advisory here; runtime will defer to the CLI."
1416
+
1417
+ ### 4. Runtime Execution
1418
+
1419
+ Provider execution **defers authentication to the underlying provider CLI**. Provider modules do not check authentication before running. Auth errors surface at execution time from the provider CLI with actionable guidance. This is intentional — it avoids hanging auth probes in headless/subprocess environments.
1420
+
1421
+ **Judge preflight** follows the same pattern: `checkJudgeCliAvailability()` resolves the
1422
+ selected judge provider and verifies that provider's CLI installation only, deliberately
1423
+ skipping auth status checks. Auth errors from the judge provider surface at execution time.
1424
+
1425
+ ---
1426
+
1427
+ ## Dependency Matrix
1428
+
1429
+ Quick reference for what you need to install:
1430
+
1431
+ | Provider | Primary CLI | Secondary CLI | Status |
1432
+ | ------------------- | ----------------------- | ------------- | -------------------------------------------- |
1433
+ | **Claude** | `claude` (Anthropic) | - | Primary validated |
1434
+ | **Codex** | `codex` (OpenAI) | - | Primary validated |
1435
+ | **Grok** | `grok` (xAI) | - | Supported validated |
1436
+ | **Cursor** | `cursor-agent` (Cursor) | - | Supported validated |
1437
+ | **OpenCode** | `opencode` (Anomaly) | - | Supported validated |
1438
+ | **Gemini** | `gemini` (Google) | - | Experimental (no longer extended) |
1439
+ | **Copilot** | `copilot` | - | Experimental |
1440
+ | **Kiro** | `kiro-cli` | - | Experimental headless CLI provider |
1441
+ | **Pi** | `pi` | - | Supported validated; backend-agnostic host CLI |
1442
+ | **Antigravity** | `agy` (Google) | - | Supported validated Google Antigravity CLI provider |
1443
+ | **GLM/Z.AI models** | `opencode` (Anomaly) | - | Available through OpenCode model selection |
1444
+
1445
+ **Note**: GLM/Z.AI models use OpenCode CLI with built-in Z.ai authentication. Select them with `--engine=opencode --model=<glm model id>`.
1446
+
1447
+ ---
1448
+
1449
+ ## Environment Variables Reference
1450
+
1451
+ | Variable | Purpose | Default |
1452
+ | -------------------------------- | ------------------------------------------------------------------------------------------ | ----------------------------------- |
1453
+ | `BUILD_MOCK_PROVIDERS` | Request mock mode (1=on, 0=off); outside tests also requires `BUILD_ALLOW_MOCK_PROVIDERS=1` or startup scrubs it | `0` |
1454
+ | `BUILD_ALLOW_MOCK_PROVIDERS` | Explicit opt-in for mock mode outside test runners (`1` required with `BUILD_MOCK_PROVIDERS=1`) | `0` |
1455
+ | `CLAUDE_CONFIG_DIR` | Claude config directory | `~/.build/config/providers/claude` |
1456
+ | `BUILD_CLAUDE_BACKEND` | Claude backend selector (`anthropic`\|`bedrock`\|`vertex`) | `anthropic` |
1457
+ | `BUILD_BEDROCK_REGION_PREFIX` | Bedrock inference profile prefix (`global`\|`us`\|`eu`\|`jp`\|`apac`) | `global` |
1458
+ | `CODEX_HOME` | Codex config directory | `~/.codex` |
1459
+ | `BUILD_CODEX_AUTH_MODE` | `api_key` passes API keys to Codex CLI; otherwise OAuth (default) | OAuth |
1460
+ | `BUILD_CODEX_BACKEND` | Codex backend attestation (`openai` or `bedrock`); unset follows the Codex config. `bedrock` selects Bedrock routing when the config names no recognized provider (`amazon-bedrock` or `amazon-bedrock-runtime`), asserts `amazon-bedrock` in that case, and marks readiness as a Bedrock run. AWS environment credentials are forwarded to Codex regardless. | (auto) |
1461
+ | `BUILD_TIMEOUT_CODEX_MS` | Codex subprocess timeout in milliseconds | `2700000` |
1462
+ | `OPENAI_API_KEY` | Forwarded under `BUILD_CODEX_AUTH_MODE=api_key` and counts as ready, but `codex exec` does not read it | (none) |
1463
+ | `CODEX_API_KEY` | API key `codex exec` reads when `BUILD_CODEX_AUTH_MODE=api_key` | (none) |
1464
+ | `CODEX_TOKEN` | Legacy token; counts as ready under `api_key`, but `codex exec` does not read it | (none) |
1465
+ | `BUILD_CODEX_ISOLATE_HOME` | Isolate Codex session/history per worktree (`0` disables) | `1` |
1466
+ | `CURSOR_CONFIG_DIR` | Cursor config directory. When set, Build checks only this directory for a login, so run `cursor-agent login` with it set | (unset; `~/.cursor` when logged in there, else `~/.build/config/providers/cursor`; with `XDG_CONFIG_HOME` set, set it to `$XDG_CONFIG_HOME/cursor`) |
1467
+ | `CURSOR_API_KEY` | Authenticates the local Cursor CLI without a login session (headless hosts); also used for model discovery | (none) |
1468
+ | `BUILD_CURSOR_CLOUD_TRANSPORT` | Historical Cursor cloud transport selector (`api` or `github_pr`); not a product path | (none) |
1469
+ | `CURSOR_CLOUD_TRANSPORT` | Historical alternative for Cursor cloud transport selection | (none) |
1470
+ | `GEMINI_CONFIG_DIR` | Gemini config directory | `~/.build/gemini` |
1471
+ | `ANTHROPIC_API_KEY` | Optional legacy Claude API key (CLI login recommended; Build defaults to CLI auth) | (none) |
1472
+ | `GOOGLE_API_KEY` | Gemini API key (personal account) | (none) |
1473
+ | `GEMINI_API_KEY` | Alternative Gemini API key | (none) |
1474
+ | `OPENAI_API_KEY` | OpenAI API key (used by some providers/agents) | (none) |
1475
+ | `OPENROUTER_API_KEY` | OpenRouter API key (pricing + optional provider key) | (none) |
1476
+ | `BUILD_SKIP_OPENCODE` | Skip OpenCode execution (dry-run mode, 1=on) | `0` |
1477
+ | `BUILD_OPENCODE_CLI_COMMAND` | Path to OpenCode CLI binary | `opencode` |
1478
+ | `GOOGLE_CLOUD_PROJECT` | GCP project ID (Vertex AI) | (none) |
1479
+ | `GCLOUD_PROJECT` | Alternate GCP project ID (Vertex AI) | (none) |
1480
+ | `CLOUD_ML_REGION` | Vertex AI region for Claude Code | (none) |
1481
+ | `GOOGLE_APPLICATION_CREDENTIALS` | Service account key path (Vertex AI) | (none) |
1482
+ | `BUILD_CURSOR_CLI_COMMAND` | Path to Cursor Agent binary (preferred). Legacy `CURSOR_CLI_COMMAND` is still honored. | `cursor-agent` |
1483
+ | `CURSOR_CLI_TIMEOUT` | Cursor run timeout in milliseconds, clamped to 2-120 minutes; outranks `BUILD_TIMEOUT_MS`, while `BUILD_TIMEOUT_CURSOR_MS` outranks it | `(unset; registry fallback 2700000)` |
1484
+ | `BUILD_CURSOR_MODEL` | Default Cursor model for local CLI | `auto` |
1485
+ | `BUILD_DEFAULT_PROVIDER` | Global default provider without flags | (none) |
1486
+ | `BUILD_COPILOT_CLI_COMMAND` | Path to GitHub Copilot CLI binary | `copilot` |
1487
+ | `BUILD_COPILOT_WORKFLOW` | Default Copilot workflow (`suggest`, `chat`, `explain`) | `suggest` |
1488
+ | `BUILD_TIMEOUT_COPILOT_MS` | Copilot provider timeout override in milliseconds | `(unset; registry fallback 2700000)` |
1489
+ | `COPILOT_TELEMETRY_OPTOUT` | Disable GitHub Copilot telemetry (1=on) | `0` |
1490
+ | `KIRO_API_KEY` | Kiro API key for headless automation | (none) |
1491
+ | `BUILD_KIRO_CLI_COMMAND` | Path to Kiro CLI binary | `kiro-cli` |
1492
+ | `BUILD_SKIP_KIRO` | Skip Kiro execution | unset |
1493
+ | `BUILD_PI_CLI_COMMAND` | Path to Pi CLI binary | `pi` |
1494
+ | `BUILD_SKIP_PI` | Skip Pi execution | unset |
1495
+ | `ANTIGRAVITY_API_KEY` | Optional Antigravity API key for headless environments when supported by the installed CLI | (none) |
1496
+ | `BUILD_ANTIGRAVITY_CLI_COMMAND` | Path to Google Antigravity CLI binary | `agy` |
1497
+ | `BUILD_SKIP_ANTIGRAVITY` | Skip Antigravity execution | unset |
1498
+ | `BUILD_DEBUG` | Enable debug logging for all providers | `0` |
1499
+ | `BUILD_VERBOSE` | Enable verbose output for all providers | `0` |
1500
+ | `BUILD_PLAIN_LOGS` | Disable ANSI colors in logs | `0` |
1501
+
1502
+ ---
1503
+
1504
+ ## Troubleshooting
1505
+
1506
+ ### Claude Issues
1507
+
1508
+ **Problem**: `'claude' is not available on this system`
1509
+
1510
+ **Solution**:
1511
+
1512
+ ```bash
1513
+ # Verify Claude CLI is installed
1514
+ which claude
1515
+
1516
+ # If not found, install it
1517
+ npm install -g @anthropic-ai/claude-code
1518
+
1519
+ # Add to PATH if needed
1520
+ export PATH="$PATH:$(npm config get prefix)/bin"
1521
+ ```
1522
+
1523
+ **Problem**: `Authentication failed`
1524
+
1525
+ **Solution**:
1526
+
1527
+ ```bash
1528
+ # Re-authenticate
1529
+ claude auth logout
1530
+ claude auth login
1531
+ ```
1532
+
1533
+ **Problem**: `Rate limit exceeded`
1534
+
1535
+ **Solution**: Wait 60 seconds or upgrade your Anthropic plan for higher limits.
1536
+
1537
+ ---
1538
+
1539
+ ### Codex Issues
1540
+
1541
+ **Problem**: `Command not found: codex`
1542
+
1543
+ **Solution**:
1544
+
1545
+ ```bash
1546
+ # Install Codex CLI
1547
+ npm install -g @openai/codex
1548
+
1549
+ # Verify installation
1550
+ codex --version
1551
+ ```
1552
+
1553
+ **Problem**: `Authentication required`
1554
+
1555
+ **Solution**:
1556
+
1557
+ ```bash
1558
+ # Re-authenticate
1559
+ codex login
1560
+ ```
1561
+
1562
+ ---
1563
+
1564
+ ### Cursor Issues
1565
+
1566
+ **Problem**: `ConnectError: [invalid_argument]`
1567
+
1568
+ **Solution**: This often occurs in plan mode. Disable plan mode or try a different model (`--model auto` falls back to your Cursor preference).
1569
+
1570
+ **Problem**: `Command not found: cursor-agent`
1571
+
1572
+ **Solution**: Install Cursor Agent (see [Cursor (CLI)](#cursor-cli) → Installation), then verify with `cursor-agent --version`.
1573
+
1574
+ **Problem**: `Not authenticated`
1575
+
1576
+ **Solution**: Build reuses your Cursor login. Authenticate with `cursor-agent login` (see [Cursor (CLI)](#cursor-cli) → Authentication).
1577
+
1578
+ **Problem**: `Command timed out after 30000ms`
1579
+
1580
+ **Solution**: Increase timeout in config or environment:
1581
+
1582
+ ```bash
1583
+ export CURSOR_CLI_TIMEOUT=3600000 # 60 minutes; clamped to 2-120 minutes
1584
+ ```
1585
+
1586
+ **Problem**: `Invalid model: xyz`
1587
+
1588
+ **Solution**: Use supported models (`auto`, `gpt-4o`, `gpt-4o-mini`, etc.) or set `BUILD_CURSOR_MODEL` to a known value.
1589
+
1590
+ ---
1591
+
1592
+ ### Gemini Issues
1593
+
1594
+ **Problem**: `'gemini' is not available on this system`
1595
+
1596
+ **Solution**:
1597
+
1598
+ ```bash
1599
+ # Verify Gemini CLI is installed
1600
+ which gemini
1601
+
1602
+ # If not found, install it
1603
+ npm install -g @google/gemini-cli
1604
+
1605
+ # Add to PATH if needed
1606
+ export PATH="$PATH:$(npm config get prefix)/bin"
1607
+ ```
1608
+
1609
+ **Problem**: `Authentication failed` or `API key not found`
1610
+
1611
+ **Solution**: Set up proper authentication:
1612
+
1613
+ ```bash
1614
+ # For personal Google account
1615
+ export GOOGLE_API_KEY='your-api-key-here'
1616
+
1617
+ # For Vertex AI enterprise
1618
+ gcloud auth application-default login
1619
+ export GOOGLE_CLOUD_PROJECT='your-project-id'
1620
+ export GOOGLE_CLOUD_LOCATION='us-central1'
1621
+ ```
1622
+
1623
+ **Problem**: `Permission denied` or `Insufficient permissions`
1624
+
1625
+ **Solution**: Ensure proper permissions:
1626
+
1627
+ ```bash
1628
+ # For Vertex AI, check service account has AI Platform User role
1629
+ gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
1630
+ --member="serviceAccount:your-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
1631
+ --role="roles/aiplatform.user"
1632
+ ```
1633
+
1634
+ **Problem**: `Rate limit exceeded`
1635
+
1636
+ **Solution**: Wait or upgrade quotas. Personal accounts have different limits than enterprise Vertex AI accounts.
1637
+
1638
+ ---
1639
+
1640
+ ### OpenCode Model Issues
1641
+
1642
+ **Problem**: `Command not found: opencode`
1643
+
1644
+ **Solution**:
1645
+
1646
+ ```bash
1647
+ # Install OpenCode CLI
1648
+ curl -fsSL https://opencode.ai/install | bash
1649
+ # or:
1650
+ npm install -g opencode-ai
1651
+
1652
+ # Verify installation
1653
+ opencode --version
1654
+ ```
1655
+
1656
+ **Problem**: An OpenCode execution reports an authentication failure
1657
+
1658
+ **Solution**: Repair the affected upstream provider through OpenCode, then retry the execution:
1659
+
1660
+ ```bash
1661
+ opencode auth login
1662
+ ```
1663
+
1664
+ For a headless provider configured through environment substitution, confirm the referenced variable reaches OpenCode. If Build would otherwise filter that variable, name it in `BUILD_CHILD_ENV_ALLOWLIST`; this propagation setting does not validate the credential.
1665
+
1666
+ **Problem**: A model-family name passed as `--engine` is rejected
1667
+
1668
+ **Solution**: Use OpenCode as the execution provider and pass an exact model ID from `opencode models`:
1669
+
1670
+ ```bash
1671
+ build run "Analyze this code" --engine=opencode --model=<provider/model>
1672
+ ```
1673
+
1674
+ ---
1675
+
1676
+ ## Provider Comparison
1677
+
1678
+ Setup effort and context window only. Build does not rank providers on output
1679
+ quality, speed, price, or support tier: per-model prices live in the sourced
1680
+ pricing catalog, and the rest would be an unsourced claim about someone else's
1681
+ product.
1682
+
1683
+ | Feature | Claude | Codex | Cursor | Gemini | Copilot | OpenCode |
1684
+ | ---------------------- | ------------------- | -------------------- | ---------------- | --------------- | ------------------------- | --------------------- |
1685
+ | **Context Window** | 200K+ tokens | 128K+ tokens | Provider-routed | 1M tokens | Provider-routed | Upstream-dependent |
1686
+ | **Setup Complexity** | Medium | High | High | Low | Low | Medium |
1687
+ | **Dependencies** | Single CLI | Single CLI | Single CLI | Single CLI | Single CLI | Single CLI |
1688
+
1689
+ **Notes**:
1690
+
1691
+ - GLM/Z.AI models are selected through OpenCode, for example `--engine=opencode --model=z-ai/glm-4.7`.
1692
+
1693
+ ---
1694
+
1695
+ ## Next Steps
1696
+
1697
+ Once providers are set up:
1698
+
1699
+ 1. **Test Execution**:
1700
+
1701
+ ```bash
1702
+ build run "Create a hello world test" --engine=claude
1703
+ ```
1704
+
1705
+ 2. **Run Variant Competition**:
1706
+
1707
+ ```bash
1708
+ build run "Implement feature X" --variants=3
1709
+ ```
1710
+
1711
+ 3. **View Telemetry**:
1712
+
1713
+ ```bash
1714
+ build telemetry leaderboard
1715
+ build telemetry trends
1716
+ ```
1717
+
1718
+ 4. **Review Results**:
1719
+ - Check the resolved telemetry directory for SQLite databases (`db/variants.db`, `invocations.db`) and monthly JSONL under `logs/<YYYY-MM>/`. Default: `~/.build/data/telemetry/`. `build doctor --verbose` prints the resolved path. Per-run state is under `~/.build/data/projects/<project-id>/telemetry/state/`.
1720
+
1721
+ ---
1722
+
1723
+ ## Support
1724
+
1725
+ - **Documentation**: `docs/CLI_REFERENCE.md`, `docs/TROUBLESHOOTING.md`, [ARCHITECTURE.md](https://github.com/ebrindley/build/blob/main/ARCHITECTURE.md)
1726
+ - **Issues**: https://github.com/ebrindley/build/issues
1727
+
1728
+ ---
1729
+
1730
+ **Last Updated**: 2026-07-25
1731
+
1732
+ **Major Changes:**
1733
+
1734
+ - Documented local-only execution for all providers (ADR-021)
1735
+ - Cursor/Codex cloud setup reframed as historical compatibility only
1736
+ - Legacy provider API transport selections are rejected with migration guidance; historical API configuration remains readable but does not enable execution
1737
+ - Ordinary PR publication and judge-winner semantics unchanged