@poetic-ai/poetic 1.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (782) hide show
  1. package/.github/SECURITY.md +47 -0
  2. package/.nvmrc +1 -0
  3. package/.poetic/README.md +37 -0
  4. package/.poetic/providers/catalog.json +12051 -0
  5. package/.poetic/providers/pricing.json +1272 -0
  6. package/.poetic/providers/registry.json +3369 -0
  7. package/CHANGELOG.md +552 -0
  8. package/CODE_OF_CONDUCT.md +40 -0
  9. package/CONTRIBUTING.md +23 -0
  10. package/INSTALL.md +454 -0
  11. package/LICENSE +21 -0
  12. package/README.md +474 -0
  13. package/dist/BasicOptimizationCompetitionRunner-5H5TBYO4.js +153 -0
  14. package/dist/ExecutionTracker-UVONC4C6.js +16 -0
  15. package/dist/OptimizationConfig-7DFY2TST.js +17 -0
  16. package/dist/OptimizationEngine-JIMGP3LY.js +1597 -0
  17. package/dist/PromptStore-U6ZD3ZMQ.js +18 -0
  18. package/dist/actions-LUJPINLJ.js +322 -0
  19. package/dist/agent-ingest-3DJUJ7FU.js +53 -0
  20. package/dist/aggregator-DNCBINFO.js +12 -0
  21. package/dist/ai-judge-5QT5QJVU.js +156 -0
  22. package/dist/allowlist-grounding-RO6HKUFI.js +16 -0
  23. package/dist/allowlist-utils-23V7TJ3G.js +28 -0
  24. package/dist/anchored-turn-service-JULUCUIK.js +489 -0
  25. package/dist/api-transport-4TYTNLTJ.js +1087 -0
  26. package/dist/apply-completion-mode-AW2MOS3R.js +89 -0
  27. package/dist/artifact-migrator-23L45ISD.js +267 -0
  28. package/dist/ask-HWVV6QFR.js +135 -0
  29. package/dist/auth-5KEDKAPP.js +67 -0
  30. package/dist/auth-7TT3JINV.js +78 -0
  31. package/dist/auth-E6XUNZ5M.js +68 -0
  32. package/dist/auth-H3XDZE22.js +134 -0
  33. package/dist/auth-OC4E6633.js +71 -0
  34. package/dist/auth-S4CTX4GQ.js +44 -0
  35. package/dist/auth-YLH3S7EY.js +69 -0
  36. package/dist/auth-liveness-TDDEZY3T.js +46 -0
  37. package/dist/auto-optimizer-VPRWOWGU.js +80 -0
  38. package/dist/autoloop-cleanup-JOGKTLWA.js +109 -0
  39. package/dist/autoloop-evidence-gates-PCDALGVJ.js +38 -0
  40. package/dist/autoloop-gate-policy-Z7FVJVXV.js +175 -0
  41. package/dist/autoloop-helpers-2KTK43GL.js +22 -0
  42. package/dist/autoloop-ledger-W7QO62PX.js +96 -0
  43. package/dist/autoloop-ledger-subscriber-Z5RW5EIE.js +162 -0
  44. package/dist/autoloop-run-defaults-FERGRZGP.js +19 -0
  45. package/dist/autoloop-run-lock-CT2NWSV3.js +197 -0
  46. package/dist/autoloop-success-J2VKKBXQ.js +85 -0
  47. package/dist/autoloop-termination-summary-RN75F422.js +58 -0
  48. package/dist/autoloop-trajectory-XFIEXP5Z.js +282 -0
  49. package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
  50. package/dist/autonomous-loop-controller-PW4XVFGQ.js +4120 -0
  51. package/dist/backend-P3DAYRP7.js +29 -0
  52. package/dist/background-executor-CBN552V4.js +257 -0
  53. package/dist/backlog-execution-intent-U4XYPTV6.js +15 -0
  54. package/dist/backup-active-store-5WXG6SXT.js +17 -0
  55. package/dist/backup-telemetry-db-XGLXAA3N.js +254 -0
  56. package/dist/basic-competition-master-VCSBJVRN.js +344 -0
  57. package/dist/branch-archive-manager-RP6FP3ZC.js +254 -0
  58. package/dist/branch-cleanup-manager-RSHAI7YR.js +20 -0
  59. package/dist/build-gate-YHGRB4QB.js +71 -0
  60. package/dist/change-summary-WY7J5TOX.js +33 -0
  61. package/dist/chunk-23A26CSN.js +123 -0
  62. package/dist/chunk-27UTJD3M.js +265 -0
  63. package/dist/chunk-2A5CILN3.js +310 -0
  64. package/dist/chunk-2AQUWJPW.js +225 -0
  65. package/dist/chunk-2BZ53J6J.js +2344 -0
  66. package/dist/chunk-2DY5KNVM.js +276 -0
  67. package/dist/chunk-2EIA4RBE.js +659 -0
  68. package/dist/chunk-2IUXIGQD.js +1064 -0
  69. package/dist/chunk-2N42MS2Z.js +2193 -0
  70. package/dist/chunk-2QJ3H3L7.js +42 -0
  71. package/dist/chunk-2QLYTVYX.js +791 -0
  72. package/dist/chunk-2VSQMRCB.js +18 -0
  73. package/dist/chunk-2XQXYBM2.js +130 -0
  74. package/dist/chunk-2YFUIER7.js +426 -0
  75. package/dist/chunk-34CNP2HB.js +148 -0
  76. package/dist/chunk-35P3W3JX.js +456 -0
  77. package/dist/chunk-36PEBZAF.js +18 -0
  78. package/dist/chunk-3AOKYKA7.js +22 -0
  79. package/dist/chunk-3BCUNHKF.js +475 -0
  80. package/dist/chunk-3FLXLLB7.js +26 -0
  81. package/dist/chunk-3FOZ2VHV.js +100 -0
  82. package/dist/chunk-3G6FZCRF.js +106 -0
  83. package/dist/chunk-3M57DADF.js +44 -0
  84. package/dist/chunk-3S62LLWJ.js +543 -0
  85. package/dist/chunk-3ZPQLGV7.js +2904 -0
  86. package/dist/chunk-44N5WZZH.js +45 -0
  87. package/dist/chunk-45FPSA3B.js +125 -0
  88. package/dist/chunk-4BJ3O4RQ.js +929 -0
  89. package/dist/chunk-4BOP7T6L.js +2321 -0
  90. package/dist/chunk-4BTDUT2S.js +42 -0
  91. package/dist/chunk-4CSS7WVI.js +143 -0
  92. package/dist/chunk-4CUY7AFY.js +247 -0
  93. package/dist/chunk-4GSN5O5J.js +62 -0
  94. package/dist/chunk-4HN6DF7V.js +1027 -0
  95. package/dist/chunk-4IAPOG5V.js +415 -0
  96. package/dist/chunk-4IYIZQWV.js +48 -0
  97. package/dist/chunk-4NXPXE62.js +84 -0
  98. package/dist/chunk-4RCCF5BR.js +712 -0
  99. package/dist/chunk-4V7NAQ4R.js +19527 -0
  100. package/dist/chunk-4VJITV4P.js +445 -0
  101. package/dist/chunk-4YX7J6QL.js +1859 -0
  102. package/dist/chunk-527OBWQB.js +338 -0
  103. package/dist/chunk-5D4A7E3D.js +448 -0
  104. package/dist/chunk-5DLKYTQX.js +4003 -0
  105. package/dist/chunk-5EERLVZB.js +139 -0
  106. package/dist/chunk-5H72XE4H.js +256 -0
  107. package/dist/chunk-5HDP7XZG.js +91 -0
  108. package/dist/chunk-5LAMRH4X.js +969 -0
  109. package/dist/chunk-5LTN43AS.js +1972 -0
  110. package/dist/chunk-5RBHQYDB.js +2206 -0
  111. package/dist/chunk-5WCQRDRB.js +588 -0
  112. package/dist/chunk-5WRLK5KW.js +700 -0
  113. package/dist/chunk-5ZCXC23G.js +595 -0
  114. package/dist/chunk-6BM72ZMG.js +31 -0
  115. package/dist/chunk-6EDAJH2I.js +68 -0
  116. package/dist/chunk-6EQKFDBH.js +457 -0
  117. package/dist/chunk-6MFRHTRI.js +115 -0
  118. package/dist/chunk-6TZJRKNW.js +321 -0
  119. package/dist/chunk-6V7HGQFZ.js +20 -0
  120. package/dist/chunk-6VWVO2TU.js +3746 -0
  121. package/dist/chunk-6Y5TWI7H.js +146 -0
  122. package/dist/chunk-6Y5U7UFY.js +91 -0
  123. package/dist/chunk-6ZLAK3XG.js +14 -0
  124. package/dist/chunk-72XCRQED.js +34 -0
  125. package/dist/chunk-72YTZMAM.js +589 -0
  126. package/dist/chunk-73BBJOKA.js +263 -0
  127. package/dist/chunk-73NCTWKL.js +188 -0
  128. package/dist/chunk-77I6G4CO.js +1 -0
  129. package/dist/chunk-7DHRDWFS.js +3104 -0
  130. package/dist/chunk-7DNSNKJV.js +78 -0
  131. package/dist/chunk-7FMJVYBS.js +307 -0
  132. package/dist/chunk-7GDRQBQC.js +419 -0
  133. package/dist/chunk-7GPCEFUV.js +270 -0
  134. package/dist/chunk-7IL4A2PP.js +948 -0
  135. package/dist/chunk-7MMLMXO6.js +3679 -0
  136. package/dist/chunk-7QCZSLBH.js +1 -0
  137. package/dist/chunk-7R2WLDOS.js +62 -0
  138. package/dist/chunk-7T7RUJI7.js +949 -0
  139. package/dist/chunk-A2WKSVX7.js +43 -0
  140. package/dist/chunk-A3YGID55.js +133 -0
  141. package/dist/chunk-A722DEVA.js +14 -0
  142. package/dist/chunk-ACDIT7OP.js +1376 -0
  143. package/dist/chunk-ACKIPAOJ.js +302 -0
  144. package/dist/chunk-APPNGGN7.js +365 -0
  145. package/dist/chunk-APV6MK5E.js +137 -0
  146. package/dist/chunk-ASEP3M2W.js +968 -0
  147. package/dist/chunk-AT4TNPWW.js +2931 -0
  148. package/dist/chunk-ATVKCSGT.js +250 -0
  149. package/dist/chunk-AURFMVCD.js +899 -0
  150. package/dist/chunk-AX6GWE7V.js +47 -0
  151. package/dist/chunk-AY5EWJPF.js +385 -0
  152. package/dist/chunk-BAV2HJXS.js +194 -0
  153. package/dist/chunk-BBHRN366.js +89 -0
  154. package/dist/chunk-BBPSTTPA.js +1004 -0
  155. package/dist/chunk-BDATUDDJ.js +992 -0
  156. package/dist/chunk-BKE5PG5L.js +20414 -0
  157. package/dist/chunk-BLPHWMDK.js +797 -0
  158. package/dist/chunk-BSE4R6XD.js +322 -0
  159. package/dist/chunk-BXGMAU4A.js +396 -0
  160. package/dist/chunk-BXI4NXL3.js +507 -0
  161. package/dist/chunk-BZU2O43F.js +1125 -0
  162. package/dist/chunk-C3L6YQ7P.js +147 -0
  163. package/dist/chunk-C57KJOUQ.js +121 -0
  164. package/dist/chunk-CCV7BPSY.js +118 -0
  165. package/dist/chunk-CD7ISXA4.js +826 -0
  166. package/dist/chunk-CE5OZBYY.js +21 -0
  167. package/dist/chunk-CFBIG37O.js +154 -0
  168. package/dist/chunk-CJC6GZ46.js +457 -0
  169. package/dist/chunk-CKCDGXIV.js +408 -0
  170. package/dist/chunk-CKNX3TTP.js +10338 -0
  171. package/dist/chunk-CLKSETWE.js +10 -0
  172. package/dist/chunk-CP7H3HSP.js +1552 -0
  173. package/dist/chunk-CPLEWXNZ.js +66 -0
  174. package/dist/chunk-CQM3A35X.js +844 -0
  175. package/dist/chunk-CS6P76D3.js +103 -0
  176. package/dist/chunk-CTLUBNCW.js +622 -0
  177. package/dist/chunk-CUSRN6RJ.js +632 -0
  178. package/dist/chunk-D5EP5D2W.js +26 -0
  179. package/dist/chunk-D5RYINO7.js +412 -0
  180. package/dist/chunk-DBFS4HMH.js +751 -0
  181. package/dist/chunk-DC4ZYMXJ.js +115 -0
  182. package/dist/chunk-DCBZP442.js +9243 -0
  183. package/dist/chunk-DCYF7EKG.js +26 -0
  184. package/dist/chunk-DDMAFNUK.js +5351 -0
  185. package/dist/chunk-DF5SLDE4.js +966 -0
  186. package/dist/chunk-DJFW7SMX.js +348 -0
  187. package/dist/chunk-DQFLLBJW.js +121 -0
  188. package/dist/chunk-DSFM56OA.js +1203 -0
  189. package/dist/chunk-DTY4APYV.js +218 -0
  190. package/dist/chunk-DXH5JBRS.js +437 -0
  191. package/dist/chunk-E3NTPHEO.js +194 -0
  192. package/dist/chunk-E74LUIID.js +302 -0
  193. package/dist/chunk-EI57M5BI.js +194 -0
  194. package/dist/chunk-EJ4ZAWLV.js +305 -0
  195. package/dist/chunk-EJGCZGUF.js +1483 -0
  196. package/dist/chunk-EK2U3YEG.js +486 -0
  197. package/dist/chunk-ELMFYNV7.js +109 -0
  198. package/dist/chunk-ENRGKNR5.js +25 -0
  199. package/dist/chunk-ETYDXCK7.js +679 -0
  200. package/dist/chunk-EYRH3W74.js +239 -0
  201. package/dist/chunk-F23DIWNN.js +1024 -0
  202. package/dist/chunk-F5JO7HAS.js +94 -0
  203. package/dist/chunk-F7ER6ANO.js +174 -0
  204. package/dist/chunk-FATUVIIN.js +374 -0
  205. package/dist/chunk-FC23CTXV.js +322 -0
  206. package/dist/chunk-FD4ERYEG.js +22 -0
  207. package/dist/chunk-FH7WOJAE.js +79 -0
  208. package/dist/chunk-FHOWVDF5.js +1342 -0
  209. package/dist/chunk-FKAUPHMR.js +96 -0
  210. package/dist/chunk-FONNFJXA.js +137 -0
  211. package/dist/chunk-FQ7FSZRW.js +75 -0
  212. package/dist/chunk-FRG57FPM.js +240 -0
  213. package/dist/chunk-FUVP64ER.js +31 -0
  214. package/dist/chunk-FYOILAN5.js +6818 -0
  215. package/dist/chunk-G35UYQ6Z.js +69 -0
  216. package/dist/chunk-G36W2T2S.js +1143 -0
  217. package/dist/chunk-G3L2L5XZ.js +49 -0
  218. package/dist/chunk-G4THLFV3.js +148 -0
  219. package/dist/chunk-GAFJEYLK.js +29 -0
  220. package/dist/chunk-GFGYB2ZU.js +1689 -0
  221. package/dist/chunk-GG6KJYW6.js +85 -0
  222. package/dist/chunk-GHHFDU2U.js +55 -0
  223. package/dist/chunk-GHTZSQB7.js +57 -0
  224. package/dist/chunk-GK37ILCX.js +1231 -0
  225. package/dist/chunk-GKN3HMN4.js +2809 -0
  226. package/dist/chunk-GNVDBVJP.js +156 -0
  227. package/dist/chunk-GPEL3FBM.js +924 -0
  228. package/dist/chunk-GPSNGPZS.js +1604 -0
  229. package/dist/chunk-GSGD5E4C.js +30 -0
  230. package/dist/chunk-GSUQJJXQ.js +331 -0
  231. package/dist/chunk-GSV226X6.js +110 -0
  232. package/dist/chunk-H2AYQIHW.js +224 -0
  233. package/dist/chunk-H66DXFS5.js +1374 -0
  234. package/dist/chunk-H6G7QRMQ.js +35 -0
  235. package/dist/chunk-H7JAGHZT.js +59 -0
  236. package/dist/chunk-H7ZEFECA.js +316 -0
  237. package/dist/chunk-HAC6EHZZ.js +79 -0
  238. package/dist/chunk-HIO33P3G.js +19 -0
  239. package/dist/chunk-HMVQIPH3.js +547 -0
  240. package/dist/chunk-HOYBYAOA.js +257 -0
  241. package/dist/chunk-HX5P3CSP.js +1784 -0
  242. package/dist/chunk-I46EG2XQ.js +65 -0
  243. package/dist/chunk-I4NPDSCB.js +279 -0
  244. package/dist/chunk-I5WRT7ZR.js +514 -0
  245. package/dist/chunk-IC7I6YIJ.js +301 -0
  246. package/dist/chunk-IDCSOZVN.js +78 -0
  247. package/dist/chunk-IFCBYECK.js +112 -0
  248. package/dist/chunk-IFZCPEY2.js +66 -0
  249. package/dist/chunk-IKFP2KUR.js +48 -0
  250. package/dist/chunk-IRFBN336.js +878 -0
  251. package/dist/chunk-IUXNGKA6.js +152 -0
  252. package/dist/chunk-IV2RVAN7.js +1356 -0
  253. package/dist/chunk-IZYIQQ7X.js +53 -0
  254. package/dist/chunk-J3UUR7DE.js +210 -0
  255. package/dist/chunk-J54VUAY2.js +566 -0
  256. package/dist/chunk-J62KPGII.js +464 -0
  257. package/dist/chunk-J6P3FWWW.js +130 -0
  258. package/dist/chunk-JKBHJQMT.js +434 -0
  259. package/dist/chunk-JLS65NUQ.js +14 -0
  260. package/dist/chunk-JOSYEJKY.js +141 -0
  261. package/dist/chunk-JPKSXKNB.js +94 -0
  262. package/dist/chunk-JQNJB2BB.js +2440 -0
  263. package/dist/chunk-JRVNSWSQ.js +2626 -0
  264. package/dist/chunk-JSWMRQYG.js +28 -0
  265. package/dist/chunk-JZKNBBIB.js +152 -0
  266. package/dist/chunk-K54Y7MLK.js +160 -0
  267. package/dist/chunk-K65546RE.js +183 -0
  268. package/dist/chunk-KM3F7SYE.js +702 -0
  269. package/dist/chunk-KNDYMVWN.js +102 -0
  270. package/dist/chunk-KNT72VR6.js +132 -0
  271. package/dist/chunk-KP6YILMU.js +482 -0
  272. package/dist/chunk-KQEBSK3T.js +274 -0
  273. package/dist/chunk-KT6VHSPF.js +84 -0
  274. package/dist/chunk-KTMW65UX.js +14 -0
  275. package/dist/chunk-KZ5CJVBP.js +1813 -0
  276. package/dist/chunk-L4427KOE.js +26 -0
  277. package/dist/chunk-L6OM4A22.js +189 -0
  278. package/dist/chunk-L7E6XCRA.js +1042 -0
  279. package/dist/chunk-L7JZLXQL.js +173 -0
  280. package/dist/chunk-LAMKBTXX.js +40 -0
  281. package/dist/chunk-LDCF2MKN.js +132 -0
  282. package/dist/chunk-LEIIWPWQ.js +78 -0
  283. package/dist/chunk-LFTQVYBB.js +31 -0
  284. package/dist/chunk-LG3PDRTR.js +2872 -0
  285. package/dist/chunk-LGHII5ET.js +23 -0
  286. package/dist/chunk-LH5QY22X.js +1205 -0
  287. package/dist/chunk-LIVJ6266.js +438 -0
  288. package/dist/chunk-LKRAR3IH.js +276 -0
  289. package/dist/chunk-LO23NABI.js +3063 -0
  290. package/dist/chunk-LO3X5NLS.js +326 -0
  291. package/dist/chunk-LPITVM7M.js +339 -0
  292. package/dist/chunk-LR5IJIGV.js +810 -0
  293. package/dist/chunk-LRGMHROI.js +79 -0
  294. package/dist/chunk-LUVKFFWR.js +315 -0
  295. package/dist/chunk-LWCBNGH6.js +35 -0
  296. package/dist/chunk-LWTN3WRV.js +260 -0
  297. package/dist/chunk-M3HQYKQX.js +308 -0
  298. package/dist/chunk-M6GVSPEH.js +1016 -0
  299. package/dist/chunk-MF5HP6XV.js +221 -0
  300. package/dist/chunk-MHLCBZJB.js +328 -0
  301. package/dist/chunk-MN6PL4AN.js +120 -0
  302. package/dist/chunk-MOEY65Z6.js +5678 -0
  303. package/dist/chunk-MQ4WA34C.js +206 -0
  304. package/dist/chunk-MWHF5V7U.js +223 -0
  305. package/dist/chunk-MWHLBPNU.js +211 -0
  306. package/dist/chunk-MWK5UZQ3.js +1068 -0
  307. package/dist/chunk-MYLH2S4G.js +64 -0
  308. package/dist/chunk-MZ5WYKNA.js +28 -0
  309. package/dist/chunk-N4VTRA7K.js +131 -0
  310. package/dist/chunk-N5DX4JAK.js +12 -0
  311. package/dist/chunk-N65O4XTH.js +5011 -0
  312. package/dist/chunk-NEQUQHOX.js +223 -0
  313. package/dist/chunk-NGK6PEOG.js +25 -0
  314. package/dist/chunk-NJVD4PWE.js +1033 -0
  315. package/dist/chunk-NM6PMYY4.js +768 -0
  316. package/dist/chunk-NN4PJDHP.js +708 -0
  317. package/dist/chunk-NP2V3L7K.js +226 -0
  318. package/dist/chunk-NRLY536M.js +260 -0
  319. package/dist/chunk-NRNE225N.js +1270 -0
  320. package/dist/chunk-NS2K2GTP.js +605 -0
  321. package/dist/chunk-NS33V3IM.js +51 -0
  322. package/dist/chunk-NSHASMZZ.js +71 -0
  323. package/dist/chunk-NWOYOA6H.js +378 -0
  324. package/dist/chunk-NWRUSEXG.js +322 -0
  325. package/dist/chunk-NZGDAWIP.js +1905 -0
  326. package/dist/chunk-O47UOKU3.js +395 -0
  327. package/dist/chunk-O4G2W3ST.js +9831 -0
  328. package/dist/chunk-O6V4PNLO.js +63 -0
  329. package/dist/chunk-OA4GPILI.js +624 -0
  330. package/dist/chunk-OGMSYL6J.js +227 -0
  331. package/dist/chunk-OIS7J26S.js +319 -0
  332. package/dist/chunk-OMX5VL43.js +79 -0
  333. package/dist/chunk-ON3G73BU.js +264 -0
  334. package/dist/chunk-OPYFYTWQ.js +220 -0
  335. package/dist/chunk-OQ6K46CK.js +1734 -0
  336. package/dist/chunk-OYZYO7TV.js +47 -0
  337. package/dist/chunk-OZ4REHIN.js +4386 -0
  338. package/dist/chunk-P47VN5F4.js +282 -0
  339. package/dist/chunk-P5I4X7A7.js +353 -0
  340. package/dist/chunk-P6VQROCO.js +594 -0
  341. package/dist/chunk-P7CQGPLS.js +30 -0
  342. package/dist/chunk-PCAGC5MR.js +1763 -0
  343. package/dist/chunk-PFTQBXS6.js +5181 -0
  344. package/dist/chunk-PGSPX4SU.js +15 -0
  345. package/dist/chunk-PIKLF7BM.js +432 -0
  346. package/dist/chunk-PJWJ3SAV.js +22 -0
  347. package/dist/chunk-PKIFMV72.js +100 -0
  348. package/dist/chunk-PL37JDNA.js +189 -0
  349. package/dist/chunk-PTH5E5XO.js +195 -0
  350. package/dist/chunk-PW6AXLQC.js +4128 -0
  351. package/dist/chunk-PYITM4N2.js +79 -0
  352. package/dist/chunk-PZ5AY32C.js +10 -0
  353. package/dist/chunk-Q3RO7N35.js +45 -0
  354. package/dist/chunk-Q3WIC6GQ.js +2670 -0
  355. package/dist/chunk-Q5XIXSHX.js +271 -0
  356. package/dist/chunk-QGJDMEOV.js +34 -0
  357. package/dist/chunk-QNOB37UH.js +58 -0
  358. package/dist/chunk-QOCOVLUH.js +462 -0
  359. package/dist/chunk-QTCJ5CC5.js +172 -0
  360. package/dist/chunk-QVFV5IP2.js +232 -0
  361. package/dist/chunk-QVZMFDYG.js +29 -0
  362. package/dist/chunk-R35PEUKH.js +511 -0
  363. package/dist/chunk-R4UWBC35.js +200 -0
  364. package/dist/chunk-R6MLCREW.js +44 -0
  365. package/dist/chunk-R6W23LKN.js +254 -0
  366. package/dist/chunk-R7XDDX2A.js +4007 -0
  367. package/dist/chunk-RDFRCT64.js +168 -0
  368. package/dist/chunk-RE5VZDFQ.js +58 -0
  369. package/dist/chunk-RGROYC2G.js +638 -0
  370. package/dist/chunk-RGWHUI5E.js +68 -0
  371. package/dist/chunk-RHVG6UNL.js +205 -0
  372. package/dist/chunk-RI4EX2QE.js +18 -0
  373. package/dist/chunk-RJAAKDRX.js +17 -0
  374. package/dist/chunk-ROMHOSMQ.js +185 -0
  375. package/dist/chunk-RWREC3KJ.js +517 -0
  376. package/dist/chunk-RYNETRDJ.js +118 -0
  377. package/dist/chunk-RZY7RKM5.js +500 -0
  378. package/dist/chunk-S2MNWFAG.js +52 -0
  379. package/dist/chunk-S2VQCZO4.js +22 -0
  380. package/dist/chunk-S54MKU6V.js +117 -0
  381. package/dist/chunk-S5OIDFRM.js +302 -0
  382. package/dist/chunk-SCW4ZF6R.js +150 -0
  383. package/dist/chunk-SLS2N4PH.js +2213 -0
  384. package/dist/chunk-SNLBO4BF.js +247 -0
  385. package/dist/chunk-SP3LFU6B.js +60 -0
  386. package/dist/chunk-SQQTDDQA.js +537 -0
  387. package/dist/chunk-STV6LYYE.js +45 -0
  388. package/dist/chunk-SURZ2WFE.js +326 -0
  389. package/dist/chunk-SZ7DL357.js +1047 -0
  390. package/dist/chunk-T5E4NQCM.js +5742 -0
  391. package/dist/chunk-TAJPCXSB.js +13 -0
  392. package/dist/chunk-TAOOYK3P.js +358 -0
  393. package/dist/chunk-TDSEX5CF.js +24 -0
  394. package/dist/chunk-TFTGP7Z7.js +174 -0
  395. package/dist/chunk-TGON4N4O.js +197 -0
  396. package/dist/chunk-TGQZHDY2.js +2373 -0
  397. package/dist/chunk-TJJZ2OKV.js +6783 -0
  398. package/dist/chunk-TRSVUPCX.js +25 -0
  399. package/dist/chunk-TSXGRLPR.js +107 -0
  400. package/dist/chunk-U2S3YEX3.js +224 -0
  401. package/dist/chunk-U45RTRGY.js +818 -0
  402. package/dist/chunk-U6C3VVWS.js +13 -0
  403. package/dist/chunk-UDMS5AD3.js +307 -0
  404. package/dist/chunk-UGX7GI37.js +94 -0
  405. package/dist/chunk-UH3JJSHK.js +1 -0
  406. package/dist/chunk-UHRBTZYY.js +208 -0
  407. package/dist/chunk-UHT2KRG5.js +193 -0
  408. package/dist/chunk-UI2F6DJ5.js +118 -0
  409. package/dist/chunk-UMAKSB4Z.js +284 -0
  410. package/dist/chunk-UR2IBGIM.js +521 -0
  411. package/dist/chunk-UUH2RVKS.js +585 -0
  412. package/dist/chunk-UVJ4PJDK.js +4533 -0
  413. package/dist/chunk-V53UG2OT.js +9924 -0
  414. package/dist/chunk-V72RMBM4.js +48 -0
  415. package/dist/chunk-VBNCKCCI.js +16 -0
  416. package/dist/chunk-VNSYKC25.js +24 -0
  417. package/dist/chunk-VPHVFK4A.js +1984 -0
  418. package/dist/chunk-VTLNJQ44.js +133 -0
  419. package/dist/chunk-VTW7HP3R.js +100 -0
  420. package/dist/chunk-VVGEPBPS.js +218 -0
  421. package/dist/chunk-VVLLL7I4.js +166 -0
  422. package/dist/chunk-VX3UMWB7.js +483 -0
  423. package/dist/chunk-VXF4Q3FW.js +20 -0
  424. package/dist/chunk-W3JMT2YY.js +712 -0
  425. package/dist/chunk-WDUORIHF.js +877 -0
  426. package/dist/chunk-WDVTY4U6.js +148 -0
  427. package/dist/chunk-WIFZCHEG.js +12566 -0
  428. package/dist/chunk-WIRN3F75.js +736 -0
  429. package/dist/chunk-WMPU2UOV.js +82 -0
  430. package/dist/chunk-WTOKKE2V.js +784 -0
  431. package/dist/chunk-WX5IRLF6.js +740 -0
  432. package/dist/chunk-WZ6U3O7I.js +1581 -0
  433. package/dist/chunk-XAONGNST.js +57 -0
  434. package/dist/chunk-XB5YLCLB.js +13 -0
  435. package/dist/chunk-XEP5NQ5Y.js +688 -0
  436. package/dist/chunk-XGYF2QMZ.js +351 -0
  437. package/dist/chunk-XHEKQENB.js +255 -0
  438. package/dist/chunk-XNO4FM6X.js +1124 -0
  439. package/dist/chunk-XPHKYHO4.js +878 -0
  440. package/dist/chunk-XPK2I4NC.js +405 -0
  441. package/dist/chunk-XPU2XADL.js +2175 -0
  442. package/dist/chunk-XQD2B6BB.js +507 -0
  443. package/dist/chunk-XT2ZQVTC.js +558 -0
  444. package/dist/chunk-XTXJGGUV.js +351 -0
  445. package/dist/chunk-XUXVDPSZ.js +50 -0
  446. package/dist/chunk-XV7NZL4B.js +57 -0
  447. package/dist/chunk-XZE4XARH.js +563 -0
  448. package/dist/chunk-XZYR5EDO.js +152 -0
  449. package/dist/chunk-Y3J4JMTU.js +61 -0
  450. package/dist/chunk-Y55LZN5U.js +52 -0
  451. package/dist/chunk-Y5VN7DMP.js +112 -0
  452. package/dist/chunk-Y67VAHN4.js +459 -0
  453. package/dist/chunk-YAXSKEUH.js +3544 -0
  454. package/dist/chunk-YB3JD4E6.js +975 -0
  455. package/dist/chunk-YESZJFK6.js +220 -0
  456. package/dist/chunk-YGXKOBQQ.js +292 -0
  457. package/dist/chunk-YMX76IOS.js +31 -0
  458. package/dist/chunk-YOTXESEH.js +257 -0
  459. package/dist/chunk-YTYIEZQY.js +119 -0
  460. package/dist/chunk-YVORHQ2S.js +579 -0
  461. package/dist/chunk-Z2CUQDAR.js +3429 -0
  462. package/dist/chunk-Z2KYOFHS.js +7000 -0
  463. package/dist/chunk-Z6PC7QX6.js +161 -0
  464. package/dist/chunk-ZDTGECTN.js +235 -0
  465. package/dist/chunk-ZIPWI2LY.js +151 -0
  466. package/dist/chunk-ZSKKMTQJ.js +554 -0
  467. package/dist/chunk-ZTT5IVPY.js +1160 -0
  468. package/dist/chunk-ZX65UI5W.js +78 -0
  469. package/dist/chunk-ZYG7GGKO.js +218 -0
  470. package/dist/chunk-ZZZUL4OF.js +38 -0
  471. package/dist/cli-utils-IXL26KJT.js +40 -0
  472. package/dist/cli-validation-WLXWLUJL.js +111 -0
  473. package/dist/commit-utils-P7CRJF5N.js +202 -0
  474. package/dist/compete-config-resolver-R5ULXMYH.js +76 -0
  475. package/dist/compete-request-62JESVET.js +364 -0
  476. package/dist/compete-results-QEPG6FZX.js +208 -0
  477. package/dist/competition-outcome-tracker-R32OOZ43.js +38 -0
  478. package/dist/config-JCOKXOQT.js +166 -0
  479. package/dist/config-audit-EL3GHXS7.js +360 -0
  480. package/dist/config-explain-TNILDEVJ.js +12 -0
  481. package/dist/config-loader-VPFPFO4B.js +38 -0
  482. package/dist/config-manager-7T4E2BQO.js +67 -0
  483. package/dist/config-validator-KKOHOW7O.js +72 -0
  484. package/dist/cost-YC42XUF3.js +53 -0
  485. package/dist/coverage-orchestrator-CISNKJC2.js +772 -0
  486. package/dist/coverage-scanner-YVD62MLH.js +12 -0
  487. package/dist/createCompetitionRunner-LJG6ZQSO.js +46 -0
  488. package/dist/data-migration-state-VJK64DLT.js +31 -0
  489. package/dist/db-migrator-XSEIOGWY.js +34 -0
  490. package/dist/discovery-JGYGDD25.js +25 -0
  491. package/dist/doctor-GJOYE7AE.js +186 -0
  492. package/dist/domain-analyzer-AWF3RP6E.js +29 -0
  493. package/dist/ensure-initialized-744DIZEZ.js +52 -0
  494. package/dist/entry.js +940 -0
  495. package/dist/environment-YS45U5ZI.js +81 -0
  496. package/dist/error-parser-core-PPZ36A4S.js +50 -0
  497. package/dist/escalation-ladder-MKTCEGSA.js +130 -0
  498. package/dist/evaluation-context-KV4GZNN7.js +35 -0
  499. package/dist/evidence-plan-resolver-GBSYSAPX.js +85 -0
  500. package/dist/execution-data-writer-3ODTBDLH.js +53 -0
  501. package/dist/execution-policy-applier-ZHD3DCF3.js +31 -0
  502. package/dist/execution-preflight-Z4Y64V3I.js +209 -0
  503. package/dist/execution-roles-R3DPPMD3.js +66 -0
  504. package/dist/exit-code-error-Z4SW2DVK.js +14 -0
  505. package/dist/external-temp-cleanup-N2RZH4QP.js +311 -0
  506. package/dist/factory-XBN7DFIM.js +149 -0
  507. package/dist/file-utils-XIVR2ZMA.js +47 -0
  508. package/dist/flywheel-autoloop-executor-UILGOFFK.js +249 -0
  509. package/dist/flywheel-competition-executor-JOBEXTRB.js +259 -0
  510. package/dist/flywheel-executor-6JFLA6J5.js +369 -0
  511. package/dist/flywheel-git-isolation-UC5NIEVU.js +48 -0
  512. package/dist/flywheel-manifest-5UC4VBMA.js +108 -0
  513. package/dist/flywheel-model-defaults-7CVKP53V.js +27 -0
  514. package/dist/flywheel-preflight-XEY5SHM6.js +104 -0
  515. package/dist/flywheel-resume-7HELH7QS.js +23 -0
  516. package/dist/flywheel-safety-7U7DPOAP.js +28 -0
  517. package/dist/flywheel-scope-decision-ZHKF6ZIN.js +11 -0
  518. package/dist/get-telemetry-logger-DPVWWIYY.js +73 -0
  519. package/dist/git-worktree-IY6V6DUO.js +18 -0
  520. package/dist/github-pr-manager-4LXEKJTA.js +211 -0
  521. package/dist/guidance-profile-config-E7XJL2VP.js +117 -0
  522. package/dist/guidance-profile-renderer-QK2YMAAP.js +21 -0
  523. package/dist/index-query-4JEUKA44.js +31 -0
  524. package/dist/index.js +108661 -0
  525. package/dist/instructions-6BURLQJC.js +64 -0
  526. package/dist/invoke-provider-auth-GRUYP44M.js +223 -0
  527. package/dist/judge-scoring.json +80 -0
  528. package/dist/judge-test.js +555 -0
  529. package/dist/lab-mode-OTWVHN63.js +39 -0
  530. package/dist/lab-utils-BJRFLGK4.js +23 -0
  531. package/dist/linux-host-class-UY4KVLFD.js +29 -0
  532. package/dist/llm-judge-executor-F7Z3HO77.js +133 -0
  533. package/dist/local-executor-CEHWE2PL.js +223 -0
  534. package/dist/logger-33TR6EE5.js +72 -0
  535. package/dist/loop-spec-XTLQAVZ7.js +191 -0
  536. package/dist/manager-2HJG5CLT.js +25 -0
  537. package/dist/matrix-prompt-builder-6UDN5X3F.js +497 -0
  538. package/dist/matrix-result-parser-7W35EUOV.js +15 -0
  539. package/dist/metadata-HQ43NDEK.js +22 -0
  540. package/dist/model-invocations-db-QBO4Y7WZ.js +38 -0
  541. package/dist/monitor-XGYBG2DW.js +72 -0
  542. package/dist/next-PB5ZXZKB.js +90 -0
  543. package/dist/next-ZBDK725T.js +69 -0
  544. package/dist/optimization-config-resolver-O6WKR47U.js +75 -0
  545. package/dist/package-3YCWIQQ5.js +10 -0
  546. package/dist/parallel-orchestrator-NL7YJJU2.js +297 -0
  547. package/dist/parallel-worker.js +279 -0
  548. package/dist/parse-git-status-PIAF3OTP.js +10 -0
  549. package/dist/path-security-ETTH6TZL.js +39 -0
  550. package/dist/pattern-bank-UNJR5ADV.js +15 -0
  551. package/dist/plan-backlog-list-fast-VAGYBV3J.js +270 -0
  552. package/dist/plan-backlog-show-fast-SG2CZPW3.js +406 -0
  553. package/dist/plan-sprint-list-fast-LURAX47V.js +162 -0
  554. package/dist/plan-sprint-status-fast-FJAODCHD.js +208 -0
  555. package/dist/plan-task-status-fast-HNYBMQI4.js +349 -0
  556. package/dist/plan-to-flywheel-Z4U3GWPN.js +456 -0
  557. package/dist/planning-backlog-3CQ5QQBQ.js +319 -0
  558. package/dist/poetic-root-V5DNXEAE.js +17 -0
  559. package/dist/preflight-OPANWMME.js +12 -0
  560. package/dist/process-registry-PDZJPTAS.js +27 -0
  561. package/dist/process-scanner-C22SYXYD.js +22 -0
  562. package/dist/processes-KMQUD7HY.js +29 -0
  563. package/dist/processes-json-fast-IBDXZ6WW.js +135 -0
  564. package/dist/profile-SE5EVXAP.js +149 -0
  565. package/dist/prompts-WZZPGWBX.js +168 -0
  566. package/dist/protected-branches-RNTEX7ET.js +57 -0
  567. package/dist/provider-aware-resource-manager-QBTZJMNP.js +18 -0
  568. package/dist/provider-matrix-N5X57V3Y.js +154 -0
  569. package/dist/provider-matrix-renderer-MZDWKKID.js +139 -0
  570. package/dist/provider-output-forwarding-DERID3TP.js +30 -0
  571. package/dist/provider-registry-J5NRBJKI.js +128 -0
  572. package/dist/provider-temp-cleanup-KYGLF6YU.js +14 -0
  573. package/dist/prune-engine-Q6E2DXBN.js +451 -0
  574. package/dist/quality-gate-YRHMQAEI.js +70 -0
  575. package/dist/quickstart-FIRLKGJI.js +62 -0
  576. package/dist/readiness-VZTMSG6J.js +96 -0
  577. package/dist/registry-YODFY77A.js +153 -0
  578. package/dist/repair-helpers-TTV5FEF4.js +117 -0
  579. package/dist/repo-root-2IGD4H7X.js +22 -0
  580. package/dist/resolution-engine-D6TX6FRG.js +127 -0
  581. package/dist/resolve-provider-cli-O2P6XZBZ.js +35 -0
  582. package/dist/restore-telemetry-db-BQL6DTQF.js +360 -0
  583. package/dist/result-streamer-WEHW476R.js +19 -0
  584. package/dist/routing-events-DHPUZDDF.js +27 -0
  585. package/dist/routing-history-store-UWCEXAP3.js +46 -0
  586. package/dist/routing-planner-F5WQEUOM.js +160 -0
  587. package/dist/run-poetic-tui-J6LWRJUP.js +13517 -0
  588. package/dist/run-simulation.js +376 -0
  589. package/dist/runner-CS2TNGHA.js +1092 -0
  590. package/dist/runner-HHH7ZN2Z.js +1571 -0
  591. package/dist/safety-OCC4KJJR.js +64 -0
  592. package/dist/safety-stanza-7SV3HGG3.js +60 -0
  593. package/dist/sandbox-32QXJEMV.js +81 -0
  594. package/dist/sandbox-RSO7VP6V.js +94 -0
  595. package/dist/schema-extensions.sql +234 -0
  596. package/dist/security-2KI5XNDG.js +17 -0
  597. package/dist/setup-bb-plugin-QAQWZCV5.js +738 -0
  598. package/dist/setup-claude-code-P7BTTSPO.js +317 -0
  599. package/dist/setup-temp-cleanup-GASCWZ2I.js +20 -0
  600. package/dist/shared-utils-D6U6UREP.js +37 -0
  601. package/dist/simple-artifact-goal-OTXNGZY6.js +25 -0
  602. package/dist/sprint-UIXPYOXQ.js +338 -0
  603. package/dist/sprint-bridge-4BHMSC3M.js +68 -0
  604. package/dist/sprint-execution-service-2B7WHL5L.js +311 -0
  605. package/dist/sprint-manager-IDQUDNQI.js +91 -0
  606. package/dist/sqlite-wrapper-UDWCTNLJ.js +17 -0
  607. package/dist/stale-cleanup-orchestrator-XWXV7KCZ.js +62 -0
  608. package/dist/storage-access-F6ALDN4S.js +22 -0
  609. package/dist/synthesis-XD6EDVHF.js +185 -0
  610. package/dist/task-classifier-LNLXSHOM.js +494 -0
  611. package/dist/task-list-fast-PTMA4LUC.js +147 -0
  612. package/dist/task-manager-XAT7GOWB.js +93 -0
  613. package/dist/task-splitter-U7DJ7W6A.js +79 -0
  614. package/dist/task-type-detector-OLVOMXZO.js +21 -0
  615. package/dist/task-type-resolver-KKNQYSB4.js +42 -0
  616. package/dist/telemetry-5HWBBXLX.js +131 -0
  617. package/dist/telemetry-health-tracker-DMSSGBZ2.js +11 -0
  618. package/dist/telemetry-path-resolver-7ICSG276.js +28 -0
  619. package/dist/telemetry-reliability-XUOZNZZ6.js +125 -0
  620. package/dist/token-estimator-MEQUL3EJ.js +37 -0
  621. package/dist/transports-KNSSV2V4.js +255 -0
  622. package/dist/unified-cost-tracker-4TFRBVPR.js +35 -0
  623. package/dist/unified-state-cleanup-LJPF2BOW.js +276 -0
  624. package/dist/universal-cost-calculator-BAJV35GA.js +42 -0
  625. package/dist/user-agents-GHUGCSKN.js +22 -0
  626. package/dist/variant-delivery-state-KLRNG6XA.js +33 -0
  627. package/dist/variant-state-cleanup-MZGGLQAJ.js +280 -0
  628. package/dist/variant-success-PJXWE3ZV.js +12 -0
  629. package/dist/variant-worker-KUWKBLAH.js +4196 -0
  630. package/dist/variant-worker.js +24 -0
  631. package/dist/variants-JE2FSAQS.js +233 -0
  632. package/dist/verification-toolchains-V24UHW6Q.js +28 -0
  633. package/dist/verify-commands-H3DTCSGI.js +37 -0
  634. package/dist/warning-EGQGUUIO.js +12 -0
  635. package/dist/work-edge-RWEDWJZF.js +49 -0
  636. package/dist/work-item-writer-WHAVZXAY.js +19 -0
  637. package/dist/worker-7SA2VS2Y.js +1435 -0
  638. package/dist/worker.js +19 -0
  639. package/dist/worktree-metrics-3DFUYVYE.js +26 -0
  640. package/dist/writeback-VZKHYHSN.js +44 -0
  641. package/docs/CLI_REFERENCE.md +7042 -0
  642. package/docs/PROVIDER_SETUP.md +1570 -0
  643. package/docs/README.md +96 -0
  644. package/docs/TROUBLESHOOTING.md +2232 -0
  645. package/docs/getting-started/QUICK_START.md +294 -0
  646. package/docs/getting-started/README.md +188 -0
  647. package/docs/getting-started/SETUP.md +52 -0
  648. package/docs/reference/AGENT_CONTEXT.md +38 -0
  649. package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
  650. package/docs/reference/README.md +381 -0
  651. package/docs/reference/SECURITY.md +262 -0
  652. package/integrations/bb-plugin-poetic/README.md +362 -0
  653. package/integrations/bb-plugin-poetic/app.css +341 -0
  654. package/integrations/bb-plugin-poetic/app.tsx +5059 -0
  655. package/integrations/bb-plugin-poetic/package.json +45 -0
  656. package/integrations/bb-plugin-poetic/server.ts +444 -0
  657. package/integrations/bb-plugin-poetic/src/adapter.ts +3312 -0
  658. package/integrations/bb-plugin-poetic/src/backlog-authoring-model.ts +150 -0
  659. package/integrations/bb-plugin-poetic/src/backlog-authoring-schema.ts +355 -0
  660. package/integrations/bb-plugin-poetic/src/backlog-authoring-service.ts +419 -0
  661. package/integrations/bb-plugin-poetic/src/backlog-authoring-view.ts +1026 -0
  662. package/integrations/bb-plugin-poetic/src/competition-defaults-schema.ts +122 -0
  663. package/integrations/bb-plugin-poetic/src/competition-defaults-service.ts +105 -0
  664. package/integrations/bb-plugin-poetic/src/competition-defaults-view.ts +138 -0
  665. package/integrations/bb-plugin-poetic/src/contract.ts +615 -0
  666. package/integrations/bb-plugin-poetic/src/finalize-model.ts +205 -0
  667. package/integrations/bb-plugin-poetic/src/finalize-schema.ts +158 -0
  668. package/integrations/bb-plugin-poetic/src/finalize-service.ts +382 -0
  669. package/integrations/bb-plugin-poetic/src/finalize-view.ts +159 -0
  670. package/integrations/bb-plugin-poetic/src/judge-operations-readback.ts +303 -0
  671. package/integrations/bb-plugin-poetic/src/judge-operations-schema.ts +33 -0
  672. package/integrations/bb-plugin-poetic/src/judge-operations-view.ts +459 -0
  673. package/integrations/bb-plugin-poetic/src/model.ts +1302 -0
  674. package/integrations/bb-plugin-poetic/src/monitor-service.ts +233 -0
  675. package/integrations/bb-plugin-poetic/src/panel-read-ux.ts +97 -0
  676. package/integrations/bb-plugin-poetic/src/patch-preview-schema.ts +166 -0
  677. package/integrations/bb-plugin-poetic/src/patch-preview-service.ts +480 -0
  678. package/integrations/bb-plugin-poetic/src/patch-preview-view.ts +109 -0
  679. package/integrations/bb-plugin-poetic/src/planning-readback.ts +204 -0
  680. package/integrations/bb-plugin-poetic/src/planning-service.ts +594 -0
  681. package/integrations/bb-plugin-poetic/src/planning-workspace-schema.ts +95 -0
  682. package/integrations/bb-plugin-poetic/src/planning-workspace.ts +323 -0
  683. package/integrations/bb-plugin-poetic/src/poll-handoff.ts +136 -0
  684. package/integrations/bb-plugin-poetic/src/project-target-server.ts +21 -0
  685. package/integrations/bb-plugin-poetic/src/project-target.ts +45 -0
  686. package/integrations/bb-plugin-poetic/src/reference-index.ts +192 -0
  687. package/integrations/bb-plugin-poetic/src/repository-schema.ts +30 -0
  688. package/integrations/bb-plugin-poetic/src/result-explorer-view.ts +597 -0
  689. package/integrations/bb-plugin-poetic/src/result-readback-model.ts +163 -0
  690. package/integrations/bb-plugin-poetic/src/result-readback-schema.ts +319 -0
  691. package/integrations/bb-plugin-poetic/src/result-readback-service.ts +333 -0
  692. package/integrations/bb-plugin-poetic/src/run-page-view.ts +177 -0
  693. package/integrations/bb-plugin-poetic/src/setup-config-schema.ts +291 -0
  694. package/integrations/bb-plugin-poetic/src/setup-config-service.ts +590 -0
  695. package/integrations/bb-plugin-poetic/src/setup-config-view.ts +413 -0
  696. package/integrations/bb-plugin-poetic/src/sprint-close-model.ts +150 -0
  697. package/integrations/bb-plugin-poetic/src/sprint-close-schema.ts +136 -0
  698. package/integrations/bb-plugin-poetic/src/sprint-close-service.ts +341 -0
  699. package/integrations/bb-plugin-poetic/src/sprint-close-view.ts +116 -0
  700. package/integrations/bb-plugin-poetic/src/sprint-composition-model.ts +714 -0
  701. package/integrations/bb-plugin-poetic/src/sprint-composition-readback.ts +231 -0
  702. package/integrations/bb-plugin-poetic/src/sprint-composition-schema.ts +601 -0
  703. package/integrations/bb-plugin-poetic/src/sprint-composition-service.ts +775 -0
  704. package/integrations/bb-plugin-poetic/src/sprint-composition-view.ts +1221 -0
  705. package/integrations/bb-plugin-poetic/src/task-authoring-model.ts +567 -0
  706. package/integrations/bb-plugin-poetic/src/task-authoring-schema.ts +635 -0
  707. package/integrations/bb-plugin-poetic/src/task-authoring-service.ts +842 -0
  708. package/integrations/bb-plugin-poetic/src/task-authoring-view.ts +1227 -0
  709. package/integrations/bb-plugin-poetic/src/task-detail-readback.ts +56 -0
  710. package/integrations/bb-plugin-poetic/src/task-detail-schema.ts +144 -0
  711. package/integrations/bb-plugin-poetic/src/task-navigation.ts +446 -0
  712. package/integrations/bb-plugin-poetic/src/workbench-route.ts +74 -0
  713. package/integrations/bb-plugin-poetic/tests/host-contract.test.ts +773 -0
  714. package/integrations/bb-plugin-poetic/tsconfig.json +18 -0
  715. package/integrations/bb-plugin-poetic/types/PROVENANCE.json +52 -0
  716. package/integrations/bb-plugin-poetic/types/bb-plugin-sdk-app.d.ts +1444 -0
  717. package/integrations/bb-plugin-poetic/types/bb-plugin-sdk.d.ts +13030 -0
  718. package/integrations/bb-plugin-poetic/vitest.host.config.ts +71 -0
  719. package/npm-shrinkwrap.json +4950 -0
  720. package/package.json +331 -0
  721. package/schemas/README.md +80 -0
  722. package/schemas/config-v1.schema.json +136 -0
  723. package/schemas/execution-config.schema.json +47 -0
  724. package/schemas/judge-scoring.schema.json +370 -0
  725. package/schemas/poetic.config.schema.json +2214 -0
  726. package/schemas/provider-config.schema.json +203 -0
  727. package/schemas/telemetry-config.schema.json +79 -0
  728. package/schemas/user-preferences.schema.json +141 -0
  729. package/scripts/assert-node-runtime.mjs +140 -0
  730. package/scripts/preflight-native.mjs +49 -0
  731. package/scripts/preinstall-node-check.mjs +78 -0
  732. package/scripts/setup-git-hooks.mjs +24 -0
  733. package/scripts/sync.sh +2722 -0
  734. package/scripts/write-node-launcher.sh +108 -0
  735. package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
  736. package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
  737. package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
  738. package/templates/.poetic/README.md +37 -0
  739. package/templates/.poetic/agents/README.md +296 -0
  740. package/templates/.poetic/agents/api-documenter.md +147 -0
  741. package/templates/.poetic/agents/backend-architect.md +31 -0
  742. package/templates/.poetic/agents/code-reviewer.md +157 -0
  743. package/templates/.poetic/agents/data-scientist.md +179 -0
  744. package/templates/.poetic/agents/database-optimizer.md +145 -0
  745. package/templates/.poetic/agents/debugger.md +31 -0
  746. package/templates/.poetic/agents/deployment-engineer.md +164 -0
  747. package/templates/.poetic/agents/devops-troubleshooter.md +139 -0
  748. package/templates/.poetic/agents/frontend-developer.md +150 -0
  749. package/templates/.poetic/agents/javascript-pro.md +36 -0
  750. package/templates/.poetic/agents/performance-engineer.md +151 -0
  751. package/templates/.poetic/agents/python-pro.md +137 -0
  752. package/templates/.poetic/agents/test-automator.md +147 -0
  753. package/templates/.poetic/agents/typescript-pro.md +34 -0
  754. package/templates/.poetic/config/poetic.config.jsonc +69 -0
  755. package/templates/.poetic/config/project-context.template.json +6 -0
  756. package/templates/.poetic/config/task-type-aliases.presets/kanban.yaml +14 -0
  757. package/templates/.poetic/config/task-type-aliases.presets/scrum.yaml +17 -0
  758. package/templates/.poetic/config/task-type-aliases.presets/xp.yaml +12 -0
  759. package/templates/.poetic/config/task-type-aliases.yaml +28 -0
  760. package/templates/.poetic/gitignore.template +55 -0
  761. package/templates/.poetic/task-types/analysis.yaml +40 -0
  762. package/templates/.poetic/task-types/architecture.yaml +38 -0
  763. package/templates/.poetic/task-types/doc.yaml +35 -0
  764. package/templates/.poetic/task-types/feature.yaml +23 -0
  765. package/templates/.poetic/task-types/general.yaml +6 -0
  766. package/templates/.poetic/task-types/security.yaml +39 -0
  767. package/templates/AGENTS.template.md +99 -0
  768. package/templates/CLAUDE.template.md +1 -0
  769. package/templates/GEMINI.template.md +1 -0
  770. package/templates/builtin-workflows/code-review.yaml +73 -0
  771. package/templates/builtin-workflows/compete-streak.yaml +78 -0
  772. package/templates/builtin-workflows/hello-verify.yaml +10 -0
  773. package/templates/builtin-workflows/judge-regression.yaml +114 -0
  774. package/templates/builtin-workflows/skills/code-review/SKILL.md +60 -0
  775. package/templates/builtin-workflows/skills/hello-verify/SKILL.md +6 -0
  776. package/templates/guard-kit/GUARD_SETUP.md.template +255 -0
  777. package/templates/guard-kit/check.mjs.template +777 -0
  778. package/templates/guard-kit/config.json.template +6 -0
  779. package/templates/guard-kit/poetic-guard.yml.template +189 -0
  780. package/templates/profiles/README.md +56 -0
  781. package/templates/profiles/frontier-claude.json +27 -0
  782. package/templates/profiles/frontier-codex.json +26 -0
@@ -0,0 +1,1435 @@
1
+ import {
2
+ PRWorkflowOrchestrator,
3
+ buildJudgeCompletenessTelemetryFromVariants,
4
+ loadConfiguredConcurrency,
5
+ persistNativeResearchTraces,
6
+ shouldStopBeforeJudgeOrSynthesis
7
+ } from "./chunk-OZ4REHIN.js";
8
+ import {
9
+ parseNativeResearchProviders
10
+ } from "./chunk-LG3PDRTR.js";
11
+ import "./chunk-7MMLMXO6.js";
12
+ import {
13
+ inferCompetitionFinalOutcome,
14
+ persistCompeteBacklogProvenance,
15
+ resolveCompeteBacklogSuccessOutcome,
16
+ toHandleWinnerMetadata
17
+ } from "./chunk-T5E4NQCM.js";
18
+ import "./chunk-MHLCBZJB.js";
19
+ import {
20
+ startDetachedWorkerRegistryHeartbeat
21
+ } from "./chunk-BAV2HJXS.js";
22
+ import "./chunk-Q3WIC6GQ.js";
23
+ import "./chunk-IDCSOZVN.js";
24
+ import "./chunk-PYITM4N2.js";
25
+ import "./chunk-YTYIEZQY.js";
26
+ import "./chunk-IRFBN336.js";
27
+ import "./chunk-IKFP2KUR.js";
28
+ import "./chunk-2QJ3H3L7.js";
29
+ import "./chunk-Q3RO7N35.js";
30
+ import "./chunk-Y3J4JMTU.js";
31
+ import "./chunk-LDCF2MKN.js";
32
+ import "./chunk-NM6PMYY4.js";
33
+ import {
34
+ ProcessRegistry
35
+ } from "./chunk-XPHKYHO4.js";
36
+ import "./chunk-RHVG6UNL.js";
37
+ import "./chunk-CE5OZBYY.js";
38
+ import {
39
+ ExitCodeError
40
+ } from "./chunk-FUVP64ER.js";
41
+ import "./chunk-OMX5VL43.js";
42
+ import "./chunk-OQ6K46CK.js";
43
+ import "./chunk-6BM72ZMG.js";
44
+ import "./chunk-4V7NAQ4R.js";
45
+ import "./chunk-GNVDBVJP.js";
46
+ import "./chunk-KZ5CJVBP.js";
47
+ import "./chunk-GSV226X6.js";
48
+ import "./chunk-M3HQYKQX.js";
49
+ import "./chunk-XUXVDPSZ.js";
50
+ import "./chunk-VPHVFK4A.js";
51
+ import "./chunk-3AOKYKA7.js";
52
+ import "./chunk-5RBHQYDB.js";
53
+ import "./chunk-BXI4NXL3.js";
54
+ import "./chunk-TAOOYK3P.js";
55
+ import "./chunk-NJVD4PWE.js";
56
+ import {
57
+ attemptSynthesisWithGateValidation,
58
+ backfillMasterFinalVariantTelemetry,
59
+ buildWinnerVerification,
60
+ cleanupSynthesisInputPatches,
61
+ resolveSynthesisInputPatchDir,
62
+ runBasicCompetition,
63
+ selectWinnerWithJudge,
64
+ shouldRunCompetitionSynthesis,
65
+ throwIfBasicCompetitionGloballyTimedOut
66
+ } from "./chunk-DCBZP442.js";
67
+ import "./chunk-IUXNGKA6.js";
68
+ import "./chunk-DDMAFNUK.js";
69
+ import {
70
+ createEvaluationHandleFinalState,
71
+ finalizeEvaluationHandle,
72
+ isDurableHandleCompletion,
73
+ updateEvaluationHandleWithResult,
74
+ updateEvaluationHandleWithSynthesisResult
75
+ } from "./chunk-2IUXIGQD.js";
76
+ import "./chunk-6V7HGQFZ.js";
77
+ import "./chunk-I46EG2XQ.js";
78
+ import "./chunk-S2MNWFAG.js";
79
+ import "./chunk-GG6KJYW6.js";
80
+ import "./chunk-527OBWQB.js";
81
+ import "./chunk-BBHRN366.js";
82
+ import "./chunk-L7E6XCRA.js";
83
+ import "./chunk-PTH5E5XO.js";
84
+ import "./chunk-CPLEWXNZ.js";
85
+ import "./chunk-NGK6PEOG.js";
86
+ import "./chunk-4CSS7WVI.js";
87
+ import {
88
+ resolveDeclaredWinnerVariant
89
+ } from "./chunk-WIFZCHEG.js";
90
+ import "./chunk-6EQKFDBH.js";
91
+ import "./chunk-VTLNJQ44.js";
92
+ import "./chunk-LWTN3WRV.js";
93
+ import {
94
+ resolveRequiredGatePolicyForPhase
95
+ } from "./chunk-KQEBSK3T.js";
96
+ import "./chunk-I4NPDSCB.js";
97
+ import "./chunk-AX6GWE7V.js";
98
+ import "./chunk-K65546RE.js";
99
+ import "./chunk-RGROYC2G.js";
100
+ import "./chunk-TFTGP7Z7.js";
101
+ import "./chunk-NZGDAWIP.js";
102
+ import "./chunk-5LAMRH4X.js";
103
+ import "./chunk-H66DXFS5.js";
104
+ import "./chunk-3M57DADF.js";
105
+ import "./chunk-CUSRN6RJ.js";
106
+ import "./chunk-4GSN5O5J.js";
107
+ import "./chunk-G3L2L5XZ.js";
108
+ import "./chunk-77I6G4CO.js";
109
+ import "./chunk-NEQUQHOX.js";
110
+ import "./chunk-OGMSYL6J.js";
111
+ import "./chunk-ZIPWI2LY.js";
112
+ import "./chunk-HMVQIPH3.js";
113
+ import "./chunk-GHTZSQB7.js";
114
+ import "./chunk-RE5VZDFQ.js";
115
+ import "./chunk-Z2KYOFHS.js";
116
+ import "./chunk-K54Y7MLK.js";
117
+ import "./chunk-FONNFJXA.js";
118
+ import "./chunk-GPEL3FBM.js";
119
+ import "./chunk-XZYR5EDO.js";
120
+ import "./chunk-7QCZSLBH.js";
121
+ import "./chunk-VXF4Q3FW.js";
122
+ import "./chunk-4RCCF5BR.js";
123
+ import "./chunk-ASEP3M2W.js";
124
+ import "./chunk-BDATUDDJ.js";
125
+ import "./chunk-XHEKQENB.js";
126
+ import "./chunk-PL37JDNA.js";
127
+ import "./chunk-WIRN3F75.js";
128
+ import "./chunk-NSHASMZZ.js";
129
+ import "./chunk-23A26CSN.js";
130
+ import "./chunk-QVFV5IP2.js";
131
+ import "./chunk-JKBHJQMT.js";
132
+ import "./chunk-4IYIZQWV.js";
133
+ import "./chunk-N65O4XTH.js";
134
+ import "./chunk-5D4A7E3D.js";
135
+ import "./chunk-Y5VN7DMP.js";
136
+ import "./chunk-RI4EX2QE.js";
137
+ import "./chunk-ZZZUL4OF.js";
138
+ import "./chunk-YB3JD4E6.js";
139
+ import "./chunk-P7CQGPLS.js";
140
+ import "./chunk-UHT2KRG5.js";
141
+ import "./chunk-HOYBYAOA.js";
142
+ import "./chunk-6EDAJH2I.js";
143
+ import "./chunk-3FLXLLB7.js";
144
+ import "./chunk-5H72XE4H.js";
145
+ import "./chunk-LWCBNGH6.js";
146
+ import "./chunk-DXH5JBRS.js";
147
+ import "./chunk-APPNGGN7.js";
148
+ import "./chunk-5HDP7XZG.js";
149
+ import "./chunk-EK2U3YEG.js";
150
+ import "./chunk-IV2RVAN7.js";
151
+ import "./chunk-MYLH2S4G.js";
152
+ import "./chunk-73BBJOKA.js";
153
+ import "./chunk-IC7I6YIJ.js";
154
+ import "./chunk-U6C3VVWS.js";
155
+ import "./chunk-2XQXYBM2.js";
156
+ import "./chunk-A722DEVA.js";
157
+ import "./chunk-O4G2W3ST.js";
158
+ import "./chunk-6Y5TWI7H.js";
159
+ import "./chunk-UVJ4PJDK.js";
160
+ import "./chunk-LFTQVYBB.js";
161
+ import "./chunk-3ZPQLGV7.js";
162
+ import "./chunk-73NCTWKL.js";
163
+ import "./chunk-VVGEPBPS.js";
164
+ import "./chunk-E74LUIID.js";
165
+ import {
166
+ deriveVariantOutcome
167
+ } from "./chunk-ATVKCSGT.js";
168
+ import "./chunk-72XCRQED.js";
169
+ import "./chunk-N4VTRA7K.js";
170
+ import "./chunk-ACDIT7OP.js";
171
+ import "./chunk-CFBIG37O.js";
172
+ import "./chunk-KT6VHSPF.js";
173
+ import "./chunk-Q5XIXSHX.js";
174
+ import "./chunk-7T7RUJI7.js";
175
+ import "./chunk-JOSYEJKY.js";
176
+ import "./chunk-2A5CILN3.js";
177
+ import "./chunk-W3JMT2YY.js";
178
+ import "./chunk-CLKSETWE.js";
179
+ import "./chunk-V53UG2OT.js";
180
+ import "./chunk-LKRAR3IH.js";
181
+ import "./chunk-QTCJ5CC5.js";
182
+ import "./chunk-MWHF5V7U.js";
183
+ import "./chunk-3FOZ2VHV.js";
184
+ import "./chunk-P47VN5F4.js";
185
+ import "./chunk-WZ6U3O7I.js";
186
+ import "./chunk-VTW7HP3R.js";
187
+ import "./chunk-4CUY7AFY.js";
188
+ import "./chunk-MWK5UZQ3.js";
189
+ import "./chunk-C3L6YQ7P.js";
190
+ import "./chunk-L4427KOE.js";
191
+ import "./chunk-NS2K2GTP.js";
192
+ import "./chunk-MN6PL4AN.js";
193
+ import "./chunk-NS33V3IM.js";
194
+ import "./chunk-UHRBTZYY.js";
195
+ import "./chunk-KP6YILMU.js";
196
+ import "./chunk-H2AYQIHW.js";
197
+ import "./chunk-FATUVIIN.js";
198
+ import "./chunk-OIS7J26S.js";
199
+ import "./chunk-XPU2XADL.js";
200
+ import "./chunk-AURFMVCD.js";
201
+ import "./chunk-VBNCKCCI.js";
202
+ import "./chunk-SZ7DL357.js";
203
+ import "./chunk-LGHII5ET.js";
204
+ import "./chunk-PJWJ3SAV.js";
205
+ import "./chunk-NRLY536M.js";
206
+ import "./chunk-7DNSNKJV.js";
207
+ import "./chunk-HIO33P3G.js";
208
+ import "./chunk-APV6MK5E.js";
209
+ import "./chunk-ZYG7GGKO.js";
210
+ import "./chunk-PFTQBXS6.js";
211
+ import "./chunk-E3NTPHEO.js";
212
+ import "./chunk-4NXPXE62.js";
213
+ import "./chunk-4VJITV4P.js";
214
+ import "./chunk-GHHFDU2U.js";
215
+ import "./chunk-R6W23LKN.js";
216
+ import "./chunk-UH3JJSHK.js";
217
+ import "./chunk-FC23CTXV.js";
218
+ import "./chunk-36PEBZAF.js";
219
+ import "./chunk-SURZ2WFE.js";
220
+ import "./chunk-SP3LFU6B.js";
221
+ import "./chunk-R4UWBC35.js";
222
+ import "./chunk-2YFUIER7.js";
223
+ import "./chunk-CKNX3TTP.js";
224
+ import "./chunk-FYOILAN5.js";
225
+ import "./chunk-J62KPGII.js";
226
+ import "./chunk-XAONGNST.js";
227
+ import "./chunk-GAFJEYLK.js";
228
+ import "./chunk-H6G7QRMQ.js";
229
+ import "./chunk-J6P3FWWW.js";
230
+ import {
231
+ formatVariantIdentifier
232
+ } from "./chunk-CP7H3HSP.js";
233
+ import "./chunk-ETYDXCK7.js";
234
+ import "./chunk-BSE4R6XD.js";
235
+ import "./chunk-UR2IBGIM.js";
236
+ import "./chunk-JSWMRQYG.js";
237
+ import "./chunk-XGYF2QMZ.js";
238
+ import {
239
+ signalCoordinator
240
+ } from "./chunk-72YTZMAM.js";
241
+ import {
242
+ assertSafePathComponent
243
+ } from "./chunk-S2VQCZO4.js";
244
+ import "./chunk-WMPU2UOV.js";
245
+ import "./chunk-VX3UMWB7.js";
246
+ import "./chunk-XT2ZQVTC.js";
247
+ import "./chunk-YGXKOBQQ.js";
248
+ import "./chunk-V72RMBM4.js";
249
+ import "./chunk-ZDTGECTN.js";
250
+ import "./chunk-G36W2T2S.js";
251
+ import "./chunk-GKN3HMN4.js";
252
+ import {
253
+ parseJsonWithContext
254
+ } from "./chunk-QVZMFDYG.js";
255
+ import "./chunk-S54MKU6V.js";
256
+ import "./chunk-3S62LLWJ.js";
257
+ import "./chunk-45FPSA3B.js";
258
+ import "./chunk-YMX76IOS.js";
259
+ import {
260
+ redactPersistedTestsExecuted
261
+ } from "./chunk-6Y5U7UFY.js";
262
+ import "./chunk-XV7NZL4B.js";
263
+ import "./chunk-CD7ISXA4.js";
264
+ import "./chunk-QGJDMEOV.js";
265
+ import "./chunk-D5RYINO7.js";
266
+ import "./chunk-6TZJRKNW.js";
267
+ import "./chunk-PCAGC5MR.js";
268
+ import "./chunk-5WCQRDRB.js";
269
+ import "./chunk-5WRLK5KW.js";
270
+ import "./chunk-C57KJOUQ.js";
271
+ import "./chunk-DF5SLDE4.js";
272
+ import "./chunk-TGON4N4O.js";
273
+ import "./chunk-I5WRT7ZR.js";
274
+ import {
275
+ atomicWriteJson
276
+ } from "./chunk-A3YGID55.js";
277
+ import "./chunk-5EERLVZB.js";
278
+ import "./chunk-XQD2B6BB.js";
279
+ import "./chunk-34CNP2HB.js";
280
+ import "./chunk-KNDYMVWN.js";
281
+ import "./chunk-RWREC3KJ.js";
282
+ import "./chunk-LO23NABI.js";
283
+ import "./chunk-7R2WLDOS.js";
284
+ import "./chunk-LAMKBTXX.js";
285
+ import "./chunk-FD4ERYEG.js";
286
+ import "./chunk-KTMW65UX.js";
287
+ import "./chunk-FHOWVDF5.js";
288
+ import "./chunk-UDMS5AD3.js";
289
+ import "./chunk-MWHLBPNU.js";
290
+ import "./chunk-JLS65NUQ.js";
291
+ import "./chunk-TRSVUPCX.js";
292
+ import "./chunk-FKAUPHMR.js";
293
+ import "./chunk-TSXGRLPR.js";
294
+ import "./chunk-LUVKFFWR.js";
295
+ import "./chunk-ENRGKNR5.js";
296
+ import "./chunk-XB5YLCLB.js";
297
+ import "./chunk-QOCOVLUH.js";
298
+ import "./chunk-2VSQMRCB.js";
299
+ import "./chunk-ON3G73BU.js";
300
+ import "./chunk-3G6FZCRF.js";
301
+ import "./chunk-N5DX4JAK.js";
302
+ import "./chunk-2QLYTVYX.js";
303
+ import {
304
+ LabPathResolver
305
+ } from "./chunk-7GDRQBQC.js";
306
+ import "./chunk-PGSPX4SU.js";
307
+ import "./chunk-AT4TNPWW.js";
308
+ import "./chunk-GSGD5E4C.js";
309
+ import {
310
+ createExecutionContext
311
+ } from "./chunk-UI2F6DJ5.js";
312
+ import "./chunk-4BTDUT2S.js";
313
+ import "./chunk-L6OM4A22.js";
314
+ import "./chunk-G4THLFV3.js";
315
+ import "./chunk-RGWHUI5E.js";
316
+ import "./chunk-UUH2RVKS.js";
317
+ import {
318
+ resolvePoeticRoot
319
+ } from "./chunk-LEIIWPWQ.js";
320
+ import "./chunk-L7JZLXQL.js";
321
+ import "./chunk-IZYIQQ7X.js";
322
+ import {
323
+ assertPoeticRuntimeReady
324
+ } from "./chunk-JPKSXKNB.js";
325
+ import "./chunk-TAJPCXSB.js";
326
+ import "./chunk-XZE4XARH.js";
327
+ import {
328
+ debugLog
329
+ } from "./chunk-EJGCZGUF.js";
330
+ import {
331
+ sanitizeString
332
+ } from "./chunk-LPITVM7M.js";
333
+ import {
334
+ POETIC_RESEARCH_NATIVE_PROVIDERS,
335
+ readEnv
336
+ } from "./chunk-5DLKYTQX.js";
337
+ import "./chunk-PZ5AY32C.js";
338
+
339
+ // src/cli/worker.ts
340
+ import { mkdir, readFile, unlink } from "fs/promises";
341
+ import path from "path";
342
+ import { pathToFileURL } from "url";
343
+ import { Command } from "commander";
344
+ function shouldPromoteBackgroundSynthesisDelivery(input) {
345
+ if (!input.synthesisVariant) return false;
346
+ if (input.synthesisApplied !== true) return false;
347
+ if (input.gatesPassed !== true) return false;
348
+ const strategy = input.strategy ?? "agentic-synthesis";
349
+ return strategy === "agentic-synthesis";
350
+ }
351
+ async function persistBackgroundSynthesisDeliveryVariant(options2) {
352
+ const safeTaskId = assertSafePathComponent(
353
+ options2.taskId.replace(/[^A-Za-z0-9._-]/g, "_") || "task",
354
+ "taskId"
355
+ );
356
+ const stateDir = LabPathResolver.getInstance().getStateDir(options2.poeticDir);
357
+ const variantsDir = path.join(stateDir, "variants");
358
+ await mkdir(variantsDir, { recursive: true });
359
+ const filePath = path.join(variantsDir, `${safeTaskId}-synthesis-delivery.json`);
360
+ const serializable = {
361
+ ...options2.variant,
362
+ testsExecuted: redactPersistedTestsExecuted(options2.variant.testsExecuted),
363
+ outcome: options2.variant.outcome ?? deriveVariantOutcome(options2.variant),
364
+ isSynthesis: true,
365
+ success: options2.variant.success === true
366
+ };
367
+ if (options2.variant.error instanceof Error) {
368
+ serializable.error = { message: options2.variant.error.message };
369
+ }
370
+ await atomicWriteJson(filePath, serializable);
371
+ await backfillMasterFinalVariantTelemetry(options2.taskId, options2.variant, {
372
+ poeticDir: options2.poeticDir
373
+ }).catch(() => false);
374
+ return filePath;
375
+ }
376
+ var program = new Command();
377
+ var WORKER_REGISTRY_HEARTBEAT_MS = 6e4;
378
+ var BACKGROUND_WORKER_FINAL_CLEANUP_TIMEOUT_MS = 15e3;
379
+ program.requiredOption("--task-id <id>", "Task ID").option("--backlog-item <id>", "Backlog item ID associated with this background compete run").option(
380
+ "--config-file <path>",
381
+ "Path to config JSON file containing {prompt, variants} (preferred)"
382
+ ).option("--prompt <prompt>", "Task prompt (legacy; requires --variants too)").option("--variants <variants>", "Variants JSON (legacy; requires --prompt too)").option("--timeout <ms>", "Timeout in milliseconds").option("--executor-timeout-minutes <minutes>", "Per-variant executor timeout in minutes").option(
383
+ "--max-concurrent <n>",
384
+ "Maximum concurrent variant executions (threaded from the foreground compete flag)",
385
+ (value) => Number.parseInt(value, 10)
386
+ ).option("--verbose", "Verbose output").option("--ai-judge", "Use AI judge").option("--judge-off", "Disable automatic winner selection for multi-variant comparison").option("--ai-judge-model <model>", "AI judge model").option("--ai-judge-verbose", "AI judge verbose output").option("--ai-judge-show-rationale", "Show AI judge rationale").option("--ai-judge-verbosity <level>", "AI judge verbosity level").option("--ai-judge-criteria-weights <weights>", "AI judge criteria weights").option("--ai-judge-min-score <score>", "AI judge minimum score", parseFloat).option(
387
+ "--ai-judge-confidence-threshold <threshold>",
388
+ "AI judge confidence threshold",
389
+ parseFloat
390
+ ).option("--ai-judge-streaming", "Enable AI judge streaming").option("--ai-judge-telemetry", "Enable AI judge telemetry").option(
391
+ "--judge-run [judges]",
392
+ "Run one or more judges: ai,multi-lens,multi-agent (no value = ai only)"
393
+ ).option("--judge-primary <judge>", "Primary judge for winner selection when multiple judges run").option(
394
+ "--judge-models <models>",
395
+ "Judge model shorthand: claude or codex. Codex uses Claude for multi-agent roles."
396
+ ).option(
397
+ "--judge-model <role=provider:model>",
398
+ "Scoped judge model override: ai, multi-lens, parent, or worker",
399
+ (value, previous = []) => [...previous, value],
400
+ []
401
+ ).option("--judge-allow-unsafe-model", "Allow unsupported scoped judge model overrides").option(
402
+ "--judge-strict",
403
+ "Strict judge mode: no retries/reruns (single-attempt judge evaluations)"
404
+ ).option(
405
+ "--synthesize",
406
+ "Enable synthesis when multiple edit/code variants produce a winner; use --no-synthesize to disable"
407
+ ).option("--no-synthesize", "Disable synthesis of top-N variants").option("--synthesis-top-n <n>", "Number of top variants to synthesize", parseInt).option(
408
+ "--synthesis-strategy <strategy>",
409
+ "Synthesis strategy (agentic-synthesis default or cherry-pick experimental deterministic mode)"
410
+ ).option("--synthesis-model <model>", "Model for synthesis generation").option("--create-pr", "Create PR for winning variant").option("--verification-mode <mode>", "Verification mode (auto|touched|full|off)").option("--anonymize-judge", "Anonymize judge evaluation").option("--no-anonymize-judge", "Disable anonymous judge labels").option("--preserve-worktrees", "Preserve worktrees after execution").option("--local-fast", "Enable local fast execution mode").option("--no-push", "Disable remote branch publication and PR creation").option("--push-local-variants", "Push local variant branches").option("--stream-results", "Stream results").option(
411
+ "--judge-profile <profile>",
412
+ "Judge profile (best-as-delivered|acceptance-ready|best-foundation; alias: merge-ready\u2192acceptance-ready)"
413
+ ).option("--cost-metrics", "Show cost metrics");
414
+ function resolveWorkerAnonymizeJudge(workerOptions) {
415
+ if (workerOptions.anonymizeJudge === false || workerOptions.noAnonymizeJudge === true) {
416
+ return false;
417
+ }
418
+ if (workerOptions.anonymizeJudge === true) {
419
+ return true;
420
+ }
421
+ return void 0;
422
+ }
423
+ var options;
424
+ function sanitizeBackgroundDiagnosticEntries(entries) {
425
+ return entries?.map((entry) => sanitizeString(entry));
426
+ }
427
+ function buildBackgroundWorkerVariantHealthState(variant) {
428
+ const diagnostics = variant.providerDiagnostics;
429
+ return {
430
+ providerDiagnostics: diagnostics ? {
431
+ finalAnswerPresent: diagnostics.finalAnswerPresent,
432
+ terminalResultPresent: diagnostics.terminalResultPresent,
433
+ toolErrors: sanitizeBackgroundDiagnosticEntries(diagnostics.toolErrors),
434
+ authErrors: sanitizeBackgroundDiagnosticEntries(diagnostics.authErrors),
435
+ transportErrors: sanitizeBackgroundDiagnosticEntries(diagnostics.transportErrors),
436
+ retryErrors: sanitizeBackgroundDiagnosticEntries(diagnostics.retryErrors),
437
+ stderrSeverity: diagnostics.stderrSeverity
438
+ } : void 0,
439
+ authError: variant.authError ? {
440
+ provider: sanitizeString(variant.authError.provider),
441
+ message: sanitizeString(variant.authError.message)
442
+ } : void 0
443
+ };
444
+ }
445
+ function getBackgroundStatePath(taskId) {
446
+ const safeTaskId = assertSafePathComponent(taskId, "taskId");
447
+ return path.join(
448
+ resolvePoeticRoot(process.cwd()),
449
+ ".poetic/telemetry/state/background",
450
+ `${safeTaskId}.json`
451
+ );
452
+ }
453
+ async function persistFatalBootstrapFailure(taskId, fatalError) {
454
+ const failedAt = (/* @__PURE__ */ new Date()).toISOString();
455
+ const errorMessage = sanitizeString(
456
+ fatalError instanceof Error ? fatalError.message : String(fatalError)
457
+ );
458
+ try {
459
+ const statePath = getBackgroundStatePath(taskId);
460
+ await mkdir(path.dirname(statePath), { recursive: true });
461
+ await atomicWriteJson(statePath, {
462
+ taskId,
463
+ pid: process.pid,
464
+ status: "failed",
465
+ failedAt,
466
+ activePhase: "startup",
467
+ elapsedMs: 0,
468
+ orchestratorTimeoutObserved: false,
469
+ terminationSource: "exception",
470
+ error: errorMessage
471
+ });
472
+ } catch {
473
+ }
474
+ try {
475
+ finalizeEvaluationHandle(
476
+ taskId,
477
+ createEvaluationHandleFinalState({
478
+ outcome: "error",
479
+ completedAt: failedAt,
480
+ errorMessage,
481
+ winner: null
482
+ })
483
+ );
484
+ } catch (finalizeError) {
485
+ console.error(
486
+ `[Worker ${process.pid}] Failed to finalize evaluation handle on fatal bootstrap error:`,
487
+ finalizeError
488
+ );
489
+ }
490
+ try {
491
+ const registry = new ProcessRegistry({ verbose: false });
492
+ await registry.init();
493
+ await registry.unregister(process.pid);
494
+ } catch {
495
+ }
496
+ }
497
+ function summarizeVariants(variants) {
498
+ return variants.map((variant) => ({
499
+ provider: variant.provider,
500
+ model: variant.model,
501
+ strategy: variant.strategy,
502
+ executionMode: variant.executionMode,
503
+ variant: formatVariantIdentifier(variant)
504
+ }));
505
+ }
506
+ function isOrchestratorTimeoutError(error) {
507
+ return error instanceof Error && ("code" in error && error.code === "COMPETITION_TIMEOUT" || /Orchestrator timeout after .* minutes/i.test(error.message));
508
+ }
509
+ function shouldUseBackgroundBasicCompetition(variants) {
510
+ return variants.length > 0 && variants.every((variant) => variant.isBasicCompetition === true);
511
+ }
512
+ function resolveBackgroundBasicJudgeState(options2) {
513
+ const judgeOff = options2.judgeOff === true;
514
+ return {
515
+ judgeOff,
516
+ aiJudgeRequested: !judgeOff && (options2.aiJudge === true || options2.aiJudgeRun !== void 0 || options2.aiJudgePrimary !== void 0)
517
+ };
518
+ }
519
+ function getBackgroundBasicEvaluationHandleOptions(aiJudgeRequested, judgeOff = false) {
520
+ return {
521
+ persistEvaluationHandle: true,
522
+ deferEvaluationHandleFinalization: aiJudgeRequested || judgeOff
523
+ };
524
+ }
525
+ function getBackgroundAdvancedJudgePolicy(input) {
526
+ const judgeOff = input.judgeOff === true;
527
+ return {
528
+ judgeOff,
529
+ aiJudge: judgeOff ? false : input.aiJudge === true,
530
+ aiJudgeRun: judgeOff ? void 0 : input.aiJudgeRun,
531
+ aiJudgePrimary: judgeOff ? void 0 : input.aiJudgePrimary
532
+ };
533
+ }
534
+ function resolveBackgroundBasicCompetitionSynthesize(input) {
535
+ if (input.judgeOff || input.aiJudgeRequested) return false;
536
+ return input.synthesize;
537
+ }
538
+ function resolveBackgroundAdvancedCompetitionSynthesize(input) {
539
+ if (input.judgeOff) return false;
540
+ return shouldRunCompetitionSynthesis({
541
+ synthesize: input.synthesize,
542
+ deliverableContract: input.editsExpected === void 0 ? void 0 : {
543
+ editsExpected: input.editsExpected
544
+ },
545
+ variantCount: input.variantCount
546
+ });
547
+ }
548
+ function updateDeferredEvaluationOwnershipAfterFinalization(currentlyOwned, finalizationSucceeded) {
549
+ return finalizationSucceeded ? false : currentlyOwned;
550
+ }
551
+ function didAuthoritativeWinnerFinalize(result, requested = "completed") {
552
+ return isDurableHandleCompletion(result, requested);
553
+ }
554
+ function resolveBackgroundCompetitionFailure(result) {
555
+ const outcome = inferCompetitionFinalOutcome(result);
556
+ return outcome === "all_failed" || outcome === "timed_out" ? `Competition ended with ${outcome}` : void 0;
557
+ }
558
+ function mapBackgroundWorkerResult(result) {
559
+ return {
560
+ success: result.variants.some(
561
+ (v) => (v.outcome ?? deriveVariantOutcome(v)).verification.status === "passed"
562
+ ),
563
+ winner: result.winner ? {
564
+ variant: result.winner.variant,
565
+ provider: result.winner.provider,
566
+ model: result.winner.model,
567
+ strategy: result.winner.strategy,
568
+ executionMode: result.winner.executionMode
569
+ } : null,
570
+ winnerVerification: "winnerVerification" in result ? result.winnerVerification : void 0,
571
+ synthesis: getWorkerSynthesisResult(result),
572
+ variants: result.variants.map((v) => ({
573
+ variant: v.variant,
574
+ provider: v.provider,
575
+ model: v.model,
576
+ strategy: v.strategy,
577
+ executionMode: v.executionMode,
578
+ success: v.success,
579
+ outcome: v.outcome ?? deriveVariantOutcome(v),
580
+ prNumber: v.prNumber,
581
+ prUrl: v.prUrl,
582
+ cloudTaskId: v.cloudTaskId,
583
+ completeness: v.completeness,
584
+ duration: v.duration,
585
+ postProviderPhaseDurationsMs: v.postProviderPhaseDurationsMs,
586
+ errorMessage: v.error?.message,
587
+ ...buildBackgroundWorkerVariantHealthState(v),
588
+ timedOut: v.timedOut,
589
+ terminationReason: v.terminationReason,
590
+ submittedOnly: v.submittedOnly,
591
+ inputSpecWarning: v.inputSpecWarning,
592
+ researchTrace: v.researchTrace
593
+ }))
594
+ };
595
+ }
596
+ function buildBackgroundCompetitionFailedState(result, failureMessage) {
597
+ return {
598
+ status: "failed",
599
+ terminationSource: "exception",
600
+ error: failureMessage,
601
+ result: mapBackgroundWorkerResult(result)
602
+ };
603
+ }
604
+ function buildBackgroundResearchExecutionContext(taskId) {
605
+ const nativeResearchProviders = readEnv(POETIC_RESEARCH_NATIVE_PROVIDERS).value;
606
+ if (!nativeResearchProviders) return {};
607
+ const repoRoot = resolvePoeticRoot(process.cwd());
608
+ return {
609
+ executionContext: createExecutionContext({
610
+ repoRoot,
611
+ poeticDir: path.join(repoRoot, ".poetic"),
612
+ taskId,
613
+ envOverrides: {
614
+ POETIC_RESEARCH_NATIVE_PROVIDERS: nativeResearchProviders
615
+ }
616
+ })
617
+ };
618
+ }
619
+ function finalizeWorkerWinner(taskId, result, options2 = {}) {
620
+ const winnerMetadata = toHandleWinnerMetadata(result.winner);
621
+ const inferredOutcome = inferCompetitionFinalOutcome(result);
622
+ const common = {
623
+ winnerVerification: result.winnerVerification,
624
+ completenessTelemetry: buildJudgeCompletenessTelemetryFromVariants(result.variants)
625
+ };
626
+ const finalState = options2.judgeOff ? createEvaluationHandleFinalState({
627
+ ...common,
628
+ outcome: "no_winner",
629
+ winner: null,
630
+ decision: {
631
+ outcome: "none",
632
+ reason: "judge_off",
633
+ decisionStatus: "not_run",
634
+ decisionOutcome: "no_judge",
635
+ primaryJudge: "n/a"
636
+ }
637
+ }) : inferredOutcome === "winner_selected" && winnerMetadata ? createEvaluationHandleFinalState({
638
+ ...common,
639
+ outcome: "winner_selected",
640
+ winner: winnerMetadata
641
+ }) : inferredOutcome === "timed_out" ? createEvaluationHandleFinalState({
642
+ ...common,
643
+ outcome: "timed_out",
644
+ winner: null,
645
+ errorMessage: "Competition ended with timed_out"
646
+ }) : createEvaluationHandleFinalState({
647
+ ...common,
648
+ outcome: inferredOutcome === "all_failed" ? "all_failed" : "no_winner",
649
+ winner: null
650
+ });
651
+ const finalizeResult = finalizeEvaluationHandle(taskId, finalState);
652
+ if (finalizeResult.kind === "persistence_failed") {
653
+ console.warn(
654
+ `[Worker ${process.pid}] Failed to finalize authoritative winner: ${finalizeResult.error}`
655
+ );
656
+ } else if (finalizeResult.kind === "absent") {
657
+ if (options2.requireHandle) {
658
+ console.warn(
659
+ `[Worker ${process.pid}] Required evaluation handle absent during authoritative finalize`
660
+ );
661
+ }
662
+ } else if (finalizeResult.kind === "not_terminal") {
663
+ console.warn(
664
+ `[Worker ${process.pid}] Evaluation handle still running (active candidates); authoritative finalize deferred`
665
+ );
666
+ }
667
+ return finalizeResult;
668
+ }
669
+ function finalizeDeferredWorkerEvaluationFailure(input) {
670
+ for (const variant of input.variants ?? []) {
671
+ updateEvaluationHandleWithResult(input.taskId, variant);
672
+ }
673
+ finalizeEvaluationHandle(
674
+ input.taskId,
675
+ createEvaluationHandleFinalState({
676
+ outcome: "error",
677
+ completedAt: input.completedAt,
678
+ errorMessage: input.errorMessage,
679
+ winner: null
680
+ })
681
+ );
682
+ }
683
+ function getWorkerSynthesisResult(result) {
684
+ if ("synthesisResult" in result) return result.synthesisResult;
685
+ if ("synthesis" in result) return result.synthesis ?? void 0;
686
+ return void 0;
687
+ }
688
+ function refreshWinnerVerification(prompt, result) {
689
+ result.winnerVerification = buildWinnerVerification({
690
+ winner: result.winner,
691
+ variants: result.variants,
692
+ requiredGatePolicy: resolveRequiredGatePolicyForPhase(prompt, "post-judge")
693
+ });
694
+ }
695
+ function resolveBackgroundJudgeWinner(_prompt, variants, judgedWinner) {
696
+ return {
697
+ winner: resolveDeclaredWinnerVariant(judgedWinner.variant, variants)
698
+ };
699
+ }
700
+ function validateWorkerVariants(variants) {
701
+ if (!Array.isArray(variants) || variants.length === 0) {
702
+ throw new Error("Worker variants must be a non-empty array");
703
+ }
704
+ return variants.map((variant, index) => {
705
+ if (typeof variant !== "object" || variant === null) {
706
+ throw new Error(`Worker variant at index ${index} must be an object`);
707
+ }
708
+ const candidate = variant;
709
+ if (typeof candidate.provider !== "string" || candidate.provider.trim().length === 0) {
710
+ throw new Error(`Worker variant at index ${index} is missing a valid provider`);
711
+ }
712
+ if (typeof candidate.strategy !== "string" || candidate.strategy.trim().length === 0) {
713
+ throw new Error(`Worker variant at index ${index} is missing a valid strategy`);
714
+ }
715
+ if (typeof candidate.executionMode !== "string" || candidate.executionMode.trim().length === 0) {
716
+ throw new Error(`Worker variant at index ${index} is missing a valid executionMode`);
717
+ }
718
+ if (candidate.model !== void 0 && typeof candidate.model !== "string") {
719
+ throw new Error(`Worker variant at index ${index} has a non-string model`);
720
+ }
721
+ return variant;
722
+ });
723
+ }
724
+ async function loadExistingWorkerState(statePath) {
725
+ try {
726
+ const raw = await readFile(statePath, "utf-8");
727
+ return parseJsonWithContext(
728
+ raw,
729
+ `Background worker state (${statePath})`
730
+ );
731
+ } catch {
732
+ return {};
733
+ }
734
+ }
735
+ async function loadWorkerConfigFile(configFilePath) {
736
+ const raw = await readFile(configFilePath, "utf-8");
737
+ const config = parseJsonWithContext(raw, `Worker config file (${configFilePath})`);
738
+ if (typeof config.prompt !== "string" || config.prompt.trim().length === 0) {
739
+ throw new Error(`Worker config file (${configFilePath}) is missing a valid prompt`);
740
+ }
741
+ const result = {
742
+ prompt: config.prompt,
743
+ variants: validateWorkerVariants(config.variants),
744
+ ...typeof config.editsExpected === "boolean" ? { editsExpected: config.editsExpected } : {},
745
+ ...Array.isArray(config.researchExcludeDomain) && config.researchExcludeDomain.every((item) => typeof item === "string") ? { researchExcludeDomain: config.researchExcludeDomain } : {}
746
+ };
747
+ try {
748
+ await unlink(configFilePath);
749
+ } catch {
750
+ }
751
+ return result;
752
+ }
753
+ async function main() {
754
+ const startedAt = /* @__PURE__ */ new Date();
755
+ const statePath = getBackgroundStatePath(options.taskId);
756
+ const timeoutMinutes = options.timeout ? parseInt(options.timeout, 10) / 6e4 : void 0;
757
+ const executorTimeoutMinutes = options.executorTimeoutMinutes !== void 0 ? parseFloat(options.executorTimeoutMinutes) : void 0;
758
+ let activePhase = "startup";
759
+ let orchestratorTimeoutObserved = false;
760
+ let orchestratorTimeoutMessage;
761
+ let orchestrator;
762
+ let stateRecord = {
763
+ taskId: options.taskId,
764
+ pid: process.pid,
765
+ parentPid: process.ppid,
766
+ status: "running",
767
+ startedAt: startedAt.toISOString(),
768
+ activePhase,
769
+ elapsedMs: 0,
770
+ timeoutMinutes,
771
+ executorTimeoutMinutes,
772
+ orchestratorTimeoutObserved: false,
773
+ ...options.backlogItemId ? { backlogItemId: options.backlogItemId } : {}
774
+ };
775
+ let pendingStateWrite = Promise.resolve();
776
+ let workerDeferredEvaluationHandleFinalization = false;
777
+ let workerDeferredEvaluationHandleVariantResults;
778
+ let detachedWorkerHeartbeat;
779
+ const writeState = async (patch, phaseOverride) => {
780
+ const nextWrite = pendingStateWrite.then(async () => {
781
+ if (patch.status === "completed" && (signalCoordinator.isShuttingDown || signalShutdownStarted)) {
782
+ const completedAt = (/* @__PURE__ */ new Date()).toISOString();
783
+ const message = "Competition interrupted during shutdown before completed state persistence";
784
+ failDeferredEvaluationForShutdown(message, completedAt);
785
+ throw new ExitCodeError(143, message);
786
+ }
787
+ activePhase = phaseOverride ?? activePhase;
788
+ stateRecord = {
789
+ ...stateRecord,
790
+ ...patch,
791
+ activePhase,
792
+ elapsedMs: Date.now() - startedAt.getTime(),
793
+ orchestratorTimeoutObserved,
794
+ orchestratorTimeoutMessage
795
+ };
796
+ const existing = await loadExistingWorkerState(statePath);
797
+ await mkdir(path.dirname(statePath), { recursive: true });
798
+ await atomicWriteJson(statePath, {
799
+ ...existing,
800
+ ...stateRecord
801
+ });
802
+ });
803
+ pendingStateWrite = nextWrite.catch((error) => {
804
+ debugLog(
805
+ `[variant-worker] Failed to persist worker state at ${statePath}: ${error instanceof Error ? error.message : String(error)}`
806
+ );
807
+ });
808
+ await nextWrite;
809
+ };
810
+ const unregisterWorker = async () => {
811
+ await detachedWorkerHeartbeat?.unregister();
812
+ detachedWorkerHeartbeat = void 0;
813
+ };
814
+ const persistBacklogProvenance = async (phase, errorMessage, successOutcome) => {
815
+ await persistCompeteBacklogProvenance(
816
+ resolvePoeticRoot(process.cwd()),
817
+ options.backlogItemId,
818
+ phase,
819
+ errorMessage,
820
+ phase === "success" ? { executingPid: null, successOutcome } : void 0
821
+ );
822
+ };
823
+ const failDeferredEvaluationForShutdown = (errorMessage, completedAt) => {
824
+ if (!workerDeferredEvaluationHandleFinalization) {
825
+ return;
826
+ }
827
+ finalizeDeferredWorkerEvaluationFailure({
828
+ taskId: options.taskId,
829
+ variants: workerDeferredEvaluationHandleVariantResults,
830
+ completedAt,
831
+ errorMessage
832
+ });
833
+ workerDeferredEvaluationHandleFinalization = false;
834
+ };
835
+ const throwIfSignalShutdownStarted = (phase) => {
836
+ if (!signalCoordinator.isShuttingDown) {
837
+ return;
838
+ }
839
+ const completedAt = (/* @__PURE__ */ new Date()).toISOString();
840
+ const message = `Competition interrupted during shutdown before ${phase}`;
841
+ failDeferredEvaluationForShutdown(message, completedAt);
842
+ throw new ExitCodeError(143, message);
843
+ };
844
+ let signalShutdownStarted = false;
845
+ const shutdownForSignal = async (signal) => {
846
+ if (signalShutdownStarted) {
847
+ return;
848
+ }
849
+ signalShutdownStarted = true;
850
+ const terminatedAt = (/* @__PURE__ */ new Date()).toISOString();
851
+ try {
852
+ await writeState(
853
+ {
854
+ status: "terminated",
855
+ terminatedAt,
856
+ signalReceivedAt: terminatedAt,
857
+ signal,
858
+ signalDiagnostics: {
859
+ pid: process.pid,
860
+ parentPid: process.ppid,
861
+ platform: process.platform,
862
+ uptimeMs: Math.round(process.uptime() * 1e3),
863
+ cwd: process.cwd(),
864
+ argv: process.argv.slice(0, 8),
865
+ activePhase
866
+ },
867
+ terminationSource: "signal",
868
+ error: `Background worker received ${signal}`
869
+ },
870
+ "shutdown"
871
+ );
872
+ } catch (error) {
873
+ console.error(
874
+ `[Worker ${process.pid}] Failed to persist ${signal} termination state:`,
875
+ error
876
+ );
877
+ }
878
+ await persistBacklogProvenance("failure", `Interrupted by ${signal}`);
879
+ try {
880
+ if (workerDeferredEvaluationHandleFinalization) {
881
+ failDeferredEvaluationForShutdown(`Background worker received ${signal}`, terminatedAt);
882
+ } else {
883
+ finalizeEvaluationHandle(
884
+ options.taskId,
885
+ createEvaluationHandleFinalState({
886
+ outcome: "error",
887
+ completedAt: terminatedAt,
888
+ errorMessage: `Background worker received ${signal}`,
889
+ winner: null
890
+ })
891
+ );
892
+ }
893
+ } catch (finalizeError) {
894
+ console.error(
895
+ `[Worker ${process.pid}] Failed to finalize evaluation handle on ${signal}:`,
896
+ finalizeError
897
+ );
898
+ }
899
+ if (workerDeferredEvaluationHandleVariantResults) {
900
+ const poeticDir = path.join(resolvePoeticRoot(process.cwd()), ".poetic");
901
+ await cleanupSynthesisInputPatches(workerDeferredEvaluationHandleVariantResults, {
902
+ expectedRoot: resolveSynthesisInputPatchDir(poeticDir, options.taskId)
903
+ });
904
+ }
905
+ try {
906
+ if (orchestrator) {
907
+ await orchestrator.close();
908
+ }
909
+ } catch (error) {
910
+ const message = sanitizeString(error instanceof Error ? error.message : String(error));
911
+ console.error(`[Worker ${process.pid}] Failed during ${signal} shutdown cleanup: ${message}`);
912
+ try {
913
+ await writeState({ shutdownError: message }, "shutdown");
914
+ } catch {
915
+ }
916
+ }
917
+ await unregisterWorker();
918
+ };
919
+ const signalCleanupName = `BackgroundWorker:${options.taskId}:${process.pid}`;
920
+ const workerSignalCleanup = LabPathResolver.getInstance().bindCurrentContext(
921
+ async (context) => {
922
+ if (context.reason !== "SIGINT" && context.reason !== "SIGTERM" && context.reason !== "SIGHUP") {
923
+ return;
924
+ }
925
+ await shutdownForSignal(context.reason);
926
+ }
927
+ );
928
+ signalCoordinator.register(signalCleanupName, workerSignalCleanup, {
929
+ priority: "critical",
930
+ phase: "global-cleanup"
931
+ });
932
+ const removeSignalHandlers = () => {
933
+ signalCoordinator.unregister(signalCleanupName);
934
+ };
935
+ const runNormalCleanupHandlers = async (reason) => {
936
+ try {
937
+ await signalCoordinator.runCleanupHandlers(reason, {
938
+ timeoutMs: BACKGROUND_WORKER_FINAL_CLEANUP_TIMEOUT_MS,
939
+ excludeNames: [signalCleanupName]
940
+ });
941
+ } catch (error) {
942
+ const message = sanitizeString(error instanceof Error ? error.message : String(error));
943
+ console.error(`[Worker ${process.pid}] Failed during ${reason} cleanup: ${message}`);
944
+ }
945
+ };
946
+ try {
947
+ console.log(`[Worker ${process.pid}] Starting background task ${options.taskId}`);
948
+ await writeState(
949
+ {
950
+ status: "running",
951
+ taskIdSource: "cli-arg"
952
+ },
953
+ "startup"
954
+ );
955
+ let prompt;
956
+ let variants;
957
+ let editsExpected;
958
+ let researchExcludeDomain;
959
+ activePhase = "loading_config";
960
+ if (options.configFile) {
961
+ const loadedConfig = await loadWorkerConfigFile(options.configFile);
962
+ prompt = loadedConfig.prompt;
963
+ variants = loadedConfig.variants;
964
+ editsExpected = loadedConfig.editsExpected;
965
+ researchExcludeDomain = loadedConfig.researchExcludeDomain;
966
+ } else {
967
+ if (!options.prompt || !options.variants) {
968
+ throw new Error("Worker requires either --config-file or both --prompt and --variants");
969
+ }
970
+ prompt = options.prompt;
971
+ variants = validateWorkerVariants(
972
+ parseJsonWithContext(options.variants, "Worker variants")
973
+ );
974
+ }
975
+ await writeState(
976
+ {
977
+ promptSource: options.configFile ? "config-file" : "inline",
978
+ configFile: options.configFile,
979
+ variantCount: variants.length,
980
+ variants: summarizeVariants(variants)
981
+ },
982
+ "loading_config"
983
+ );
984
+ activePhase = "registering_process";
985
+ detachedWorkerHeartbeat = await startDetachedWorkerRegistryHeartbeat({
986
+ taskId: options.taskId,
987
+ command: "poetic compete (background worker)",
988
+ owner: "compete",
989
+ intervalMs: WORKER_REGISTRY_HEARTBEAT_MS
990
+ });
991
+ if (!detachedWorkerHeartbeat.active) {
992
+ debugLog("[variant-worker] Detached worker registry heartbeat unavailable");
993
+ }
994
+ await writeState(
995
+ {
996
+ status: "running"
997
+ },
998
+ "executing_variants"
999
+ );
1000
+ const useBasicCompetition = shouldUseBackgroundBasicCompetition(variants);
1001
+ const { aiJudgeRequested, judgeOff } = resolveBackgroundBasicJudgeState(options);
1002
+ const basicEvaluationHandleOptions = getBackgroundBasicEvaluationHandleOptions(
1003
+ aiJudgeRequested,
1004
+ judgeOff
1005
+ );
1006
+ workerDeferredEvaluationHandleFinalization = useBasicCompetition && basicEvaluationHandleOptions.deferEvaluationHandleFinalization;
1007
+ let requiredWinnerFinalizationError;
1008
+ const finalizeAuthoritativeWorkerWinner = (basicResult, judgeOff2) => {
1009
+ const requireHandle = workerDeferredEvaluationHandleFinalization;
1010
+ const finalizeResult = finalizeWorkerWinner(options.taskId, basicResult, {
1011
+ judgeOff: judgeOff2,
1012
+ requireHandle
1013
+ });
1014
+ const requestedStatus = !judgeOff2 && resolveBackgroundCompetitionFailure(basicResult) !== void 0 ? "failed" : "completed";
1015
+ const durable = didAuthoritativeWinnerFinalize(finalizeResult, requestedStatus);
1016
+ if (requireHandle && !durable) {
1017
+ requiredWinnerFinalizationError = `Required evaluation handle did not reach durable ${requestedStatus} state (kind=${finalizeResult.kind})`;
1018
+ }
1019
+ workerDeferredEvaluationHandleFinalization = updateDeferredEvaluationOwnershipAfterFinalization(
1020
+ workerDeferredEvaluationHandleFinalization,
1021
+ durable || !requireHandle || requiredWinnerFinalizationError !== void 0
1022
+ );
1023
+ };
1024
+ const {
1025
+ maxConcurrent: workerConfiguredMaxConcurrent,
1026
+ worktreeMax: workerConfiguredWorktreeMax
1027
+ } = await loadConfiguredConcurrency(options.maxConcurrent);
1028
+ let result;
1029
+ if (useBasicCompetition) {
1030
+ const basicResult = await runBasicCompetition(
1031
+ options.taskId,
1032
+ prompt,
1033
+ variants,
1034
+ {
1035
+ timeoutMinutes,
1036
+ perVariantTimeoutMinutes: executorTimeoutMinutes,
1037
+ maxConcurrentVariants: options.maxConcurrent ?? workerConfiguredMaxConcurrent,
1038
+ configuredWorktreeMaxConcurrent: workerConfiguredWorktreeMax,
1039
+ verbose: options.verbose || false,
1040
+ preserveWorktrees: options.preserveWorktrees || variants.length === 1,
1041
+ synthesize: resolveBackgroundBasicCompetitionSynthesize({
1042
+ synthesize: options.synthesize,
1043
+ aiJudgeRequested,
1044
+ judgeOff
1045
+ }),
1046
+ createPr: options.createPr || false,
1047
+ synthesisTopN: options.synthesisTopN,
1048
+ synthesisStrategy: options.synthesisStrategy,
1049
+ synthesisModel: options.synthesisModel,
1050
+ synthesisTimeoutMs: executorTimeoutMinutes !== void 0 ? executorTimeoutMinutes * 60 * 1e3 : void 0,
1051
+ // Native web-search clearance (Fusion Workstream B1). This background
1052
+ // worker's env was built by the background-executor, which re-applied
1053
+ // the trusted per-run value (the master strips it from inheritance to
1054
+ // block shell spoofing). Thread it into the executionContext so the
1055
+ // worker's own master re-applies it to variant children — instead of
1056
+ // a process.env fallback, which would be spoofable on foreground runs.
1057
+ ...buildBackgroundResearchExecutionContext(options.taskId),
1058
+ ...basicEvaluationHandleOptions
1059
+ }
1060
+ );
1061
+ result = basicResult;
1062
+ workerDeferredEvaluationHandleVariantResults = basicResult.variants;
1063
+ if (basicResult.timeout?.globalTimedOut) {
1064
+ workerDeferredEvaluationHandleFinalization = false;
1065
+ orchestratorTimeoutObserved = true;
1066
+ orchestratorTimeoutMessage = `Competition timed out after ${basicResult.timeout.timeoutMs / 6e4} minutes`;
1067
+ throwIfBasicCompetitionGloballyTimedOut(basicResult);
1068
+ }
1069
+ const interruptedBySignal = shouldStopBeforeJudgeOrSynthesis(
1070
+ signalCoordinator.isShuttingDown,
1071
+ basicResult.variants
1072
+ );
1073
+ if (interruptedBySignal) {
1074
+ failDeferredEvaluationForShutdown(
1075
+ "Competition interrupted during shutdown before judge/synthesis completed",
1076
+ (/* @__PURE__ */ new Date()).toISOString()
1077
+ );
1078
+ throw new ExitCodeError(143, "Competition interrupted during shutdown");
1079
+ }
1080
+ if (readEnv(POETIC_RESEARCH_NATIVE_PROVIDERS).value) {
1081
+ const traceResult = await persistNativeResearchTraces({
1082
+ variants: basicResult.variants,
1083
+ taskId: options.taskId,
1084
+ // The env var IS the parent's clearance decision for this run, so it is
1085
+ // also the authoritative cleared set here.
1086
+ clearedProviders: parseNativeResearchProviders(),
1087
+ excludedDomains: researchExcludeDomain
1088
+ });
1089
+ for (const failure of traceResult.failures) {
1090
+ debugLog(
1091
+ `[Worker ${process.pid}] Failed to persist citation trace for ${failure.variantId}: ${failure.error}`
1092
+ );
1093
+ }
1094
+ }
1095
+ throwIfSignalShutdownStarted("judge/synthesis");
1096
+ if (aiJudgeRequested) {
1097
+ let synthesisJudgeContext;
1098
+ try {
1099
+ const judgeResult = await selectWinnerWithJudge(prompt, basicResult.variants, {
1100
+ taskId: options.taskId,
1101
+ useAIJudge: true,
1102
+ aiJudgeModel: options.aiJudgeModel,
1103
+ aiJudgeVerbose: options.aiJudgeVerbose || false,
1104
+ aiJudgeShowRationale: options.aiJudgeShowRationale || false,
1105
+ aiJudgeVerbosity: options.aiJudgeVerbosity,
1106
+ aiJudgeCriteriaWeights: options.aiJudgeCriteriaWeights,
1107
+ aiJudgeMinScore: options.aiJudgeMinScore,
1108
+ aiJudgeConfidenceThreshold: options.aiJudgeConfidenceThreshold,
1109
+ aiJudgeStreaming: options.aiJudgeStreaming || false,
1110
+ aiJudgeTelemetry: options.aiJudgeTelemetry !== false,
1111
+ aiJudgeRun: options.aiJudgeRun,
1112
+ aiJudgePrimary: options.aiJudgePrimary,
1113
+ judgeModels: options.judgeModels,
1114
+ judgeModel: options.judgeModel,
1115
+ judgeAllowUnsafeModel: options.judgeAllowUnsafeModel,
1116
+ judgeStrict: options.judgeStrict || false,
1117
+ verificationMode: options.verificationMode,
1118
+ judgeProfile: options.judgeProfile,
1119
+ anonymizeJudge: resolveWorkerAnonymizeJudge(options)
1120
+ });
1121
+ synthesisJudgeContext = judgeResult.synthesisContext;
1122
+ const finalJudgedWinner = judgeResult.winner ? resolveBackgroundJudgeWinner(prompt, basicResult.variants, judgeResult.winner) : { winner: null };
1123
+ basicResult.winner = finalJudgedWinner.winner;
1124
+ } catch (error) {
1125
+ console.warn(
1126
+ `[Worker ${process.pid}] AI judge failed in background basic mode: ${error instanceof Error ? error.message : String(error)}`
1127
+ );
1128
+ basicResult.winner = null;
1129
+ }
1130
+ refreshWinnerVerification(prompt, basicResult);
1131
+ const shouldSynthesizeAfterJudge = shouldRunCompetitionSynthesis({
1132
+ synthesize: options.synthesize,
1133
+ deliverableContract: editsExpected === void 0 ? void 0 : {
1134
+ editsExpected
1135
+ },
1136
+ variantCount: basicResult.variants.length,
1137
+ hasWinner: basicResult.winner !== null
1138
+ });
1139
+ if (shouldSynthesizeAfterJudge) {
1140
+ const synthesisStrategy = options.synthesisStrategy ?? "agentic-synthesis";
1141
+ const synthesisAttempt = await attemptSynthesisWithGateValidation(
1142
+ options.taskId,
1143
+ prompt,
1144
+ basicResult.variants,
1145
+ {
1146
+ synthesisTopN: options.synthesisTopN ?? 2,
1147
+ synthesisStrategy,
1148
+ synthesisModel: options.synthesisModel,
1149
+ synthesisTimeoutMs: executorTimeoutMinutes !== void 0 ? executorTimeoutMinutes * 60 * 1e3 : void 0,
1150
+ preserveWorktrees: options.preserveWorktrees || variants.length === 1,
1151
+ repoRoot: resolvePoeticRoot(process.cwd()),
1152
+ createPr: options.createPr || false,
1153
+ selectedWinner: basicResult.winner ?? void 0,
1154
+ judgeContext: synthesisJudgeContext
1155
+ },
1156
+ options.verbose || false
1157
+ );
1158
+ if (synthesisAttempt) {
1159
+ basicResult.synthesisResult = synthesisAttempt.mergedResult;
1160
+ const eligibleSynthesisDeliveryVariant = shouldPromoteBackgroundSynthesisDelivery({
1161
+ synthesisVariant: synthesisAttempt.synthesisVariant,
1162
+ synthesisApplied: synthesisAttempt.mergedResult?.synthesisApplied,
1163
+ gatesPassed: synthesisAttempt.gatesPassed,
1164
+ strategy: synthesisStrategy
1165
+ }) && synthesisAttempt.synthesisVariant ? synthesisAttempt.synthesisVariant : void 0;
1166
+ if (eligibleSynthesisDeliveryVariant) {
1167
+ eligibleSynthesisDeliveryVariant.outcome = eligibleSynthesisDeliveryVariant.outcome ?? deriveVariantOutcome(eligibleSynthesisDeliveryVariant);
1168
+ const poeticDir = path.join(resolvePoeticRoot(process.cwd()), ".poetic");
1169
+ await persistBackgroundSynthesisDeliveryVariant({
1170
+ taskId: options.taskId,
1171
+ poeticDir,
1172
+ variant: eligibleSynthesisDeliveryVariant
1173
+ });
1174
+ }
1175
+ updateEvaluationHandleWithSynthesisResult(
1176
+ options.taskId,
1177
+ synthesisAttempt.mergedResult
1178
+ );
1179
+ if (eligibleSynthesisDeliveryVariant) {
1180
+ basicResult.variants.push(eligibleSynthesisDeliveryVariant);
1181
+ basicResult.synthesisDeliveryVariant = eligibleSynthesisDeliveryVariant;
1182
+ basicResult.winnerIsSynthesis = false;
1183
+ }
1184
+ }
1185
+ } else {
1186
+ const poeticDir = path.join(resolvePoeticRoot(process.cwd()), ".poetic");
1187
+ await cleanupSynthesisInputPatches(basicResult.variants, {
1188
+ expectedRoot: resolveSynthesisInputPatchDir(poeticDir, options.taskId)
1189
+ });
1190
+ }
1191
+ throwIfSignalShutdownStarted("winner finalization");
1192
+ finalizeAuthoritativeWorkerWinner(basicResult, judgeOff);
1193
+ } else if (variants.length > 1) {
1194
+ basicResult.winner = null;
1195
+ refreshWinnerVerification(prompt, basicResult);
1196
+ const poeticDir = path.join(resolvePoeticRoot(process.cwd()), ".poetic");
1197
+ await cleanupSynthesisInputPatches(basicResult.variants, {
1198
+ expectedRoot: resolveSynthesisInputPatchDir(poeticDir, options.taskId)
1199
+ });
1200
+ throwIfSignalShutdownStarted("winner finalization");
1201
+ finalizeAuthoritativeWorkerWinner(basicResult, judgeOff);
1202
+ } else if (judgeOff) {
1203
+ refreshWinnerVerification(prompt, basicResult);
1204
+ const poeticDir = path.join(resolvePoeticRoot(process.cwd()), ".poetic");
1205
+ await cleanupSynthesisInputPatches(basicResult.variants, {
1206
+ expectedRoot: resolveSynthesisInputPatchDir(poeticDir, options.taskId)
1207
+ });
1208
+ throwIfSignalShutdownStarted("identity finalization");
1209
+ finalizeAuthoritativeWorkerWinner(basicResult, true);
1210
+ }
1211
+ } else {
1212
+ const advancedOrchestrator = new PRWorkflowOrchestrator({
1213
+ verbose: options.verbose || false,
1214
+ timeoutMinutes,
1215
+ executorTimeoutMinutes,
1216
+ ...getBackgroundAdvancedJudgePolicy({
1217
+ judgeOff: options.judgeOff,
1218
+ aiJudge: options.aiJudge,
1219
+ aiJudgeRun: options.aiJudgeRun,
1220
+ aiJudgePrimary: options.aiJudgePrimary
1221
+ }),
1222
+ aiJudgeModel: options.aiJudgeModel,
1223
+ aiJudgeVerbose: options.aiJudgeVerbose || false,
1224
+ aiJudgeShowRationale: options.aiJudgeShowRationale || false,
1225
+ aiJudgeVerbosity: options.aiJudgeVerbosity,
1226
+ aiJudgeCriteriaWeights: options.aiJudgeCriteriaWeights,
1227
+ aiJudgeMinScore: options.aiJudgeMinScore,
1228
+ aiJudgeConfidenceThreshold: options.aiJudgeConfidenceThreshold,
1229
+ aiJudgeStreaming: options.aiJudgeStreaming || false,
1230
+ aiJudgeTelemetry: options.aiJudgeTelemetry !== false,
1231
+ // Default to true
1232
+ judgeModels: options.judgeModels,
1233
+ judgeModel: options.judgeModel,
1234
+ judgeAllowUnsafeModel: options.judgeAllowUnsafeModel,
1235
+ judgeStrict: options.judgeStrict || false,
1236
+ synthesize: resolveBackgroundAdvancedCompetitionSynthesize({
1237
+ synthesize: options.synthesize,
1238
+ judgeOff: options.judgeOff === true,
1239
+ editsExpected,
1240
+ variantCount: variants.length
1241
+ }),
1242
+ synthesisTopN: options.synthesisTopN,
1243
+ synthesisStrategy: options.synthesisStrategy,
1244
+ synthesisModel: options.synthesisModel,
1245
+ createPr: options.createPr || false,
1246
+ verificationMode: options.verificationMode,
1247
+ anonymizeJudge: resolveWorkerAnonymizeJudge(options),
1248
+ preserveWorktrees: options.preserveWorktrees || false,
1249
+ localFast: options.localFast || false,
1250
+ noPush: options.noPush || false,
1251
+ pushLocalVariants: options.pushLocalVariants || false
1252
+ });
1253
+ orchestrator = advancedOrchestrator;
1254
+ try {
1255
+ result = await advancedOrchestrator.executeVariants(options.taskId, prompt, variants);
1256
+ } catch (error) {
1257
+ if (isOrchestratorTimeoutError(error)) {
1258
+ orchestratorTimeoutObserved = true;
1259
+ orchestratorTimeoutMessage = error.message;
1260
+ }
1261
+ throw error;
1262
+ }
1263
+ }
1264
+ throwIfSignalShutdownStarted("success state persistence");
1265
+ const competitionFailure = resolveBackgroundCompetitionFailure(result);
1266
+ if (competitionFailure !== void 0) {
1267
+ await writeState(
1268
+ {
1269
+ ...buildBackgroundCompetitionFailedState(result, competitionFailure),
1270
+ failedAt: (/* @__PURE__ */ new Date()).toISOString()
1271
+ },
1272
+ "writing_result"
1273
+ );
1274
+ throw new ExitCodeError(1, competitionFailure);
1275
+ }
1276
+ await writeState(
1277
+ {
1278
+ status: requiredWinnerFinalizationError ? "failed" : "completed",
1279
+ completedAt: (/* @__PURE__ */ new Date()).toISOString(),
1280
+ terminationSource: requiredWinnerFinalizationError ? "exception" : "success",
1281
+ ...requiredWinnerFinalizationError ? { error: requiredWinnerFinalizationError } : {},
1282
+ result: mapBackgroundWorkerResult(result)
1283
+ },
1284
+ "writing_result"
1285
+ );
1286
+ if (requiredWinnerFinalizationError) {
1287
+ throw new ExitCodeError(1, requiredWinnerFinalizationError);
1288
+ }
1289
+ console.log(`[Worker ${process.pid}] Task ${options.taskId} completed successfully`);
1290
+ await persistBacklogProvenance(
1291
+ "success",
1292
+ void 0,
1293
+ resolveCompeteBacklogSuccessOutcome({
1294
+ winner: result.winner,
1295
+ completionApplyRan: true,
1296
+ createPr: options.createPr
1297
+ })
1298
+ );
1299
+ activePhase = "cleanup";
1300
+ if (orchestrator) {
1301
+ try {
1302
+ await orchestrator.close();
1303
+ } catch (closeErr) {
1304
+ console.error("[Worker] Failed to close orchestrator after success:", closeErr);
1305
+ }
1306
+ }
1307
+ await runNormalCleanupHandlers("background-worker exit");
1308
+ await unregisterWorker();
1309
+ removeSignalHandlers();
1310
+ return 0;
1311
+ } catch (error) {
1312
+ console.error(
1313
+ `[Worker ${process.pid}] Task ${options.taskId} failed: ${sanitizeString(
1314
+ error instanceof Error ? error.message : String(error)
1315
+ )}`
1316
+ );
1317
+ if (orchestrator) {
1318
+ try {
1319
+ await orchestrator.close();
1320
+ } catch (closeErr) {
1321
+ console.error(
1322
+ `[Worker] Failed to close orchestrator: ${sanitizeString(
1323
+ closeErr instanceof Error ? closeErr.message : String(closeErr)
1324
+ )}`
1325
+ );
1326
+ }
1327
+ }
1328
+ const failedAt = (/* @__PURE__ */ new Date()).toISOString();
1329
+ const errorMessage = sanitizeString(error instanceof Error ? error.message : "Unknown error");
1330
+ try {
1331
+ if (isOrchestratorTimeoutError(error)) {
1332
+ orchestratorTimeoutObserved = true;
1333
+ orchestratorTimeoutMessage = error.message;
1334
+ }
1335
+ if (signalCoordinator.isShuttingDown || signalShutdownStarted) {
1336
+ await writeState({ failedAt, shutdownError: errorMessage }, "cleanup");
1337
+ } else {
1338
+ await writeState(
1339
+ {
1340
+ status: "failed",
1341
+ failedAt,
1342
+ terminationSource: "exception",
1343
+ error: errorMessage
1344
+ },
1345
+ "cleanup"
1346
+ );
1347
+ }
1348
+ } catch (writeError) {
1349
+ console.error("[Worker] Failed to write error state:", writeError);
1350
+ }
1351
+ if (workerDeferredEvaluationHandleFinalization) {
1352
+ finalizeDeferredWorkerEvaluationFailure({
1353
+ taskId: options.taskId,
1354
+ variants: workerDeferredEvaluationHandleVariantResults,
1355
+ completedAt: failedAt,
1356
+ errorMessage
1357
+ });
1358
+ workerDeferredEvaluationHandleFinalization = false;
1359
+ }
1360
+ if (workerDeferredEvaluationHandleVariantResults) {
1361
+ const poeticDir = path.join(resolvePoeticRoot(process.cwd()), ".poetic");
1362
+ await cleanupSynthesisInputPatches(workerDeferredEvaluationHandleVariantResults, {
1363
+ expectedRoot: resolveSynthesisInputPatchDir(poeticDir, options.taskId)
1364
+ });
1365
+ }
1366
+ await persistBacklogProvenance("failure", errorMessage);
1367
+ await runNormalCleanupHandlers("background-worker fatal-exit");
1368
+ await unregisterWorker();
1369
+ removeSignalHandlers();
1370
+ return 1;
1371
+ }
1372
+ }
1373
+ function isExecutedDirectly() {
1374
+ const entryPoint = process.argv[1];
1375
+ return entryPoint !== void 0 && import.meta.url === pathToFileURL(entryPoint).href;
1376
+ }
1377
+ async function runWorkerEntrypoint(entryOptions = {}) {
1378
+ if (!entryOptions.runtimeAlreadyChecked) {
1379
+ assertPoeticRuntimeReady({ command: "worker" });
1380
+ }
1381
+ try {
1382
+ program.parse();
1383
+ options = program.opts();
1384
+ if (options.judgeRun !== void 0) {
1385
+ options.aiJudgeRun = options.judgeRun;
1386
+ }
1387
+ if (options.judgePrimary !== void 0) {
1388
+ options.aiJudgePrimary = options.judgePrimary;
1389
+ }
1390
+ } catch (parseError) {
1391
+ console.error(
1392
+ `[Worker ${process.pid}] Failed to parse worker options: ${sanitizeString(
1393
+ parseError instanceof Error ? parseError.message : String(parseError)
1394
+ )}`
1395
+ );
1396
+ return 1;
1397
+ }
1398
+ try {
1399
+ return await main();
1400
+ } catch (fatalError) {
1401
+ console.error(
1402
+ `[Worker ${process.pid}] Fatal bootstrap error: ${sanitizeString(
1403
+ fatalError instanceof Error ? fatalError.message : String(fatalError)
1404
+ )}`
1405
+ );
1406
+ await persistFatalBootstrapFailure(options.taskId, fatalError);
1407
+ return 1;
1408
+ }
1409
+ }
1410
+ if (isExecutedDirectly()) {
1411
+ runWorkerEntrypoint().then((exitCode) => process.exit(exitCode)).catch((error) => {
1412
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}
1413
+ `);
1414
+ process.exit(1);
1415
+ });
1416
+ }
1417
+ export {
1418
+ buildBackgroundCompetitionFailedState,
1419
+ buildBackgroundWorkerVariantHealthState,
1420
+ didAuthoritativeWinnerFinalize,
1421
+ finalizeWorkerWinner,
1422
+ getBackgroundAdvancedJudgePolicy,
1423
+ getBackgroundBasicEvaluationHandleOptions,
1424
+ loadWorkerConfigFile,
1425
+ persistBackgroundSynthesisDeliveryVariant,
1426
+ persistFatalBootstrapFailure,
1427
+ resolveBackgroundAdvancedCompetitionSynthesize,
1428
+ resolveBackgroundBasicCompetitionSynthesize,
1429
+ resolveBackgroundBasicJudgeState,
1430
+ resolveBackgroundCompetitionFailure,
1431
+ runWorkerEntrypoint,
1432
+ shouldPromoteBackgroundSynthesisDelivery,
1433
+ updateDeferredEvaluationOwnershipAfterFinalization
1434
+ };
1435
+ //# sourceMappingURL=worker-7SA2VS2Y.js.map