@poetic-ai/poetic 1.42.1-bootstrap.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 (781) 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-MXTSOSST.js +1597 -0
  17. package/dist/PromptStore-U6ZD3ZMQ.js +18 -0
  18. package/dist/actions-M3AESHFF.js +322 -0
  19. package/dist/agent-ingest-HO77TH26.js +53 -0
  20. package/dist/aggregator-DNCBINFO.js +12 -0
  21. package/dist/ai-judge-LDWHURKK.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-GFYU6GCQ.js +489 -0
  25. package/dist/api-transport-FS3CQRMN.js +1087 -0
  26. package/dist/apply-completion-mode-JBT2CTQO.js +89 -0
  27. package/dist/artifact-migrator-23L45ISD.js +267 -0
  28. package/dist/ask-UYVZY7JH.js +135 -0
  29. package/dist/auth-CSQP5RHJ.js +67 -0
  30. package/dist/auth-E6XUNZ5M.js +68 -0
  31. package/dist/auth-KQLJPZ2E.js +134 -0
  32. package/dist/auth-OC4E6633.js +71 -0
  33. package/dist/auth-R3NQ2ZF5.js +78 -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-HA3T23SF.js +80 -0
  38. package/dist/autoloop-cleanup-JOGKTLWA.js +109 -0
  39. package/dist/autoloop-evidence-gates-ACB5YW5G.js +36 -0
  40. package/dist/autoloop-gate-policy-XZA5EQFN.js +175 -0
  41. package/dist/autoloop-helpers-EFJLBQUP.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-OPR74YEX.js +85 -0
  47. package/dist/autoloop-termination-summary-RN75F422.js +58 -0
  48. package/dist/autoloop-trajectory-K5I45UBR.js +282 -0
  49. package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
  50. package/dist/autonomous-loop-controller-4QJMOIIN.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-WXZHUT42.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-YFASRB5Z.js +71 -0
  60. package/dist/change-summary-WY7J5TOX.js +33 -0
  61. package/dist/chunk-25QL3M3L.js +899 -0
  62. package/dist/chunk-2ABC6SEC.js +2626 -0
  63. package/dist/chunk-2AICM4P3.js +1763 -0
  64. package/dist/chunk-2AQUWJPW.js +225 -0
  65. package/dist/chunk-2DY5KNVM.js +276 -0
  66. package/dist/chunk-2QJ3H3L7.js +42 -0
  67. package/dist/chunk-2UH6VQRZ.js +328 -0
  68. package/dist/chunk-2VSQMRCB.js +18 -0
  69. package/dist/chunk-2XQXYBM2.js +130 -0
  70. package/dist/chunk-2YFUIER7.js +426 -0
  71. package/dist/chunk-2YXZCZTX.js +1160 -0
  72. package/dist/chunk-32VLDFRT.js +797 -0
  73. package/dist/chunk-34CNP2HB.js +148 -0
  74. package/dist/chunk-35P3W3JX.js +456 -0
  75. package/dist/chunk-36PEBZAF.js +18 -0
  76. package/dist/chunk-3733QTI7.js +6818 -0
  77. package/dist/chunk-3A5PDH5L.js +12513 -0
  78. package/dist/chunk-3AOKYKA7.js +22 -0
  79. package/dist/chunk-3BCUNHKF.js +475 -0
  80. package/dist/chunk-3C26DPFK.js +566 -0
  81. package/dist/chunk-3FLXLLB7.js +26 -0
  82. package/dist/chunk-3FOZ2VHV.js +100 -0
  83. package/dist/chunk-3G6FZCRF.js +106 -0
  84. package/dist/chunk-3JWNRJSB.js +736 -0
  85. package/dist/chunk-3LUMR3D3.js +156 -0
  86. package/dist/chunk-3M57DADF.js +44 -0
  87. package/dist/chunk-3S62LLWJ.js +543 -0
  88. package/dist/chunk-3VABAKT2.js +1784 -0
  89. package/dist/chunk-44N5WZZH.js +45 -0
  90. package/dist/chunk-45FPSA3B.js +125 -0
  91. package/dist/chunk-4BIPZBT7.js +791 -0
  92. package/dist/chunk-4BJ3O4RQ.js +929 -0
  93. package/dist/chunk-4BTDUT2S.js +42 -0
  94. package/dist/chunk-4CSS7WVI.js +143 -0
  95. package/dist/chunk-4CUY7AFY.js +247 -0
  96. package/dist/chunk-4HN6DF7V.js +1027 -0
  97. package/dist/chunk-4HXKHDNH.js +1064 -0
  98. package/dist/chunk-4KKI477Q.js +44 -0
  99. package/dist/chunk-4NA7FSTV.js +595 -0
  100. package/dist/chunk-4NXPXE62.js +84 -0
  101. package/dist/chunk-4SALLK63.js +9831 -0
  102. package/dist/chunk-4SHKPCGK.js +110 -0
  103. package/dist/chunk-4VJITV4P.js +445 -0
  104. package/dist/chunk-4W2NRXQL.js +1205 -0
  105. package/dist/chunk-4XICK3HN.js +784 -0
  106. package/dist/chunk-55EJVV3C.js +385 -0
  107. package/dist/chunk-5DLKYTQX.js +4003 -0
  108. package/dist/chunk-5EERLVZB.js +139 -0
  109. package/dist/chunk-5HDP7XZG.js +91 -0
  110. package/dist/chunk-5LAMRH4X.js +969 -0
  111. package/dist/chunk-5REDMNLZ.js +310 -0
  112. package/dist/chunk-5UCJARII.js +1984 -0
  113. package/dist/chunk-5WCQRDRB.js +588 -0
  114. package/dist/chunk-5WRLK5KW.js +700 -0
  115. package/dist/chunk-66AGFTBQ.js +131 -0
  116. package/dist/chunk-66CIO2SV.js +48 -0
  117. package/dist/chunk-6BM72ZMG.js +31 -0
  118. package/dist/chunk-6BTFXYRO.js +276 -0
  119. package/dist/chunk-6EDAJH2I.js +68 -0
  120. package/dist/chunk-6EQKFDBH.js +457 -0
  121. package/dist/chunk-6KMJKHIQ.js +2193 -0
  122. package/dist/chunk-6MFRHTRI.js +115 -0
  123. package/dist/chunk-6QMUKUHH.js +632 -0
  124. package/dist/chunk-6TZJRKNW.js +321 -0
  125. package/dist/chunk-6V7HGQFZ.js +20 -0
  126. package/dist/chunk-6Y5TWI7H.js +146 -0
  127. package/dist/chunk-6Y5U7UFY.js +91 -0
  128. package/dist/chunk-6ZLAK3XG.js +14 -0
  129. package/dist/chunk-72XCRQED.js +34 -0
  130. package/dist/chunk-72YTZMAM.js +589 -0
  131. package/dist/chunk-73NCTWKL.js +188 -0
  132. package/dist/chunk-77I6G4CO.js +1 -0
  133. package/dist/chunk-7D7QT3BE.js +688 -0
  134. package/dist/chunk-7DNSNKJV.js +78 -0
  135. package/dist/chunk-7FMJVYBS.js +307 -0
  136. package/dist/chunk-7GDRQBQC.js +419 -0
  137. package/dist/chunk-7IL4A2PP.js +948 -0
  138. package/dist/chunk-7NPSXSHO.js +975 -0
  139. package/dist/chunk-7PS6INZP.js +302 -0
  140. package/dist/chunk-7QCZSLBH.js +1 -0
  141. package/dist/chunk-7R2WLDOS.js +62 -0
  142. package/dist/chunk-7XV3QXLT.js +878 -0
  143. package/dist/chunk-A2WKSVX7.js +43 -0
  144. package/dist/chunk-A3YGID55.js +133 -0
  145. package/dist/chunk-A5MRWHMI.js +1604 -0
  146. package/dist/chunk-A722DEVA.js +14 -0
  147. package/dist/chunk-AG2Z2SUZ.js +554 -0
  148. package/dist/chunk-AHWAZ2MU.js +137 -0
  149. package/dist/chunk-AIAQ3HS3.js +119 -0
  150. package/dist/chunk-ALAB3PBR.js +2206 -0
  151. package/dist/chunk-APPNGGN7.js +365 -0
  152. package/dist/chunk-APV6MK5E.js +137 -0
  153. package/dist/chunk-AQNPGRWS.js +395 -0
  154. package/dist/chunk-ASEP3M2W.js +968 -0
  155. package/dist/chunk-AT4TNPWW.js +2931 -0
  156. package/dist/chunk-ATVKCSGT.js +250 -0
  157. package/dist/chunk-AX6GWE7V.js +47 -0
  158. package/dist/chunk-AZQILSNQ.js +1376 -0
  159. package/dist/chunk-B76KHLX6.js +13 -0
  160. package/dist/chunk-BAV2HJXS.js +194 -0
  161. package/dist/chunk-BBHRN366.js +89 -0
  162. package/dist/chunk-BCZAENOH.js +448 -0
  163. package/dist/chunk-BIGSACCY.js +19527 -0
  164. package/dist/chunk-BPYMCIVD.js +9243 -0
  165. package/dist/chunk-BSE4R6XD.js +322 -0
  166. package/dist/chunk-BVPWRDCO.js +2321 -0
  167. package/dist/chunk-BXI4NXL3.js +507 -0
  168. package/dist/chunk-C3L6YQ7P.js +147 -0
  169. package/dist/chunk-C57KJOUQ.js +121 -0
  170. package/dist/chunk-CCV7BPSY.js +118 -0
  171. package/dist/chunk-CD7ISXA4.js +826 -0
  172. package/dist/chunk-CE5OZBYY.js +21 -0
  173. package/dist/chunk-CFBIG37O.js +154 -0
  174. package/dist/chunk-CHQV73H5.js +408 -0
  175. package/dist/chunk-CJC6GZ46.js +457 -0
  176. package/dist/chunk-CJHRFSNY.js +924 -0
  177. package/dist/chunk-CKP2Q3TP.js +1905 -0
  178. package/dist/chunk-CLKSETWE.js +10 -0
  179. package/dist/chunk-CQM3A35X.js +844 -0
  180. package/dist/chunk-CSLAS5GW.js +4007 -0
  181. package/dist/chunk-CTLUBNCW.js +622 -0
  182. package/dist/chunk-CVMVZWG4.js +3544 -0
  183. package/dist/chunk-CYB6QDCT.js +263 -0
  184. package/dist/chunk-D5EP5D2W.js +26 -0
  185. package/dist/chunk-DC4ZYMXJ.js +115 -0
  186. package/dist/chunk-DCAVAABI.js +348 -0
  187. package/dist/chunk-DCYF7EKG.js +26 -0
  188. package/dist/chunk-DF5SLDE4.js +966 -0
  189. package/dist/chunk-DN7UMLF7.js +5678 -0
  190. package/dist/chunk-DSFM56OA.js +1203 -0
  191. package/dist/chunk-DTY4APYV.js +218 -0
  192. package/dist/chunk-E3NTPHEO.js +194 -0
  193. package/dist/chunk-E74LUIID.js +302 -0
  194. package/dist/chunk-EJ42BNGY.js +2904 -0
  195. package/dist/chunk-EJ4ZAWLV.js +305 -0
  196. package/dist/chunk-EJGCZGUF.js +1483 -0
  197. package/dist/chunk-EK2U3YEG.js +486 -0
  198. package/dist/chunk-ELMFYNV7.js +109 -0
  199. package/dist/chunk-ENRGKNR5.js +25 -0
  200. package/dist/chunk-EQGIDAUF.js +62 -0
  201. package/dist/chunk-EX3OM35G.js +20414 -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-FCNAS3W2.js +1033 -0
  207. package/dist/chunk-FD4ERYEG.js +22 -0
  208. package/dist/chunk-FDVZLG6Z.js +3104 -0
  209. package/dist/chunk-FEPIFY7D.js +511 -0
  210. package/dist/chunk-FEQ4HXL7.js +412 -0
  211. package/dist/chunk-FFH5HHJU.js +5351 -0
  212. package/dist/chunk-FH7WOJAE.js +79 -0
  213. package/dist/chunk-FKAUPHMR.js +96 -0
  214. package/dist/chunk-FRG57FPM.js +240 -0
  215. package/dist/chunk-FUVP64ER.js +31 -0
  216. package/dist/chunk-G2PTLLEL.js +284 -0
  217. package/dist/chunk-G35UYQ6Z.js +69 -0
  218. package/dist/chunk-G36W2T2S.js +1143 -0
  219. package/dist/chunk-G4THLFV3.js +148 -0
  220. package/dist/chunk-GAFJEYLK.js +29 -0
  221. package/dist/chunk-GCCAPO3S.js +118 -0
  222. package/dist/chunk-GG6KJYW6.js +85 -0
  223. package/dist/chunk-GHHFDU2U.js +55 -0
  224. package/dist/chunk-GHTZSQB7.js +57 -0
  225. package/dist/chunk-GJTWJNLV.js +1374 -0
  226. package/dist/chunk-GKN3HMN4.js +2809 -0
  227. package/dist/chunk-GNH3QGTL.js +1342 -0
  228. package/dist/chunk-GOAQ2I7Y.js +7000 -0
  229. package/dist/chunk-GSGD5E4C.js +30 -0
  230. package/dist/chunk-GXWAJQOJ.js +5011 -0
  231. package/dist/chunk-H2AYQIHW.js +224 -0
  232. package/dist/chunk-H6G7QRMQ.js +35 -0
  233. package/dist/chunk-H7JAGHZT.js +59 -0
  234. package/dist/chunk-HAC6EHZZ.js +79 -0
  235. package/dist/chunk-HE2KH6EQ.js +161 -0
  236. package/dist/chunk-HIHENQDX.js +66 -0
  237. package/dist/chunk-HIO33P3G.js +19 -0
  238. package/dist/chunk-HK4AQZSR.js +438 -0
  239. package/dist/chunk-HMVQIPH3.js +547 -0
  240. package/dist/chunk-HOYBYAOA.js +257 -0
  241. package/dist/chunk-HQLGXODD.js +123 -0
  242. package/dist/chunk-HQXYYUNY.js +1231 -0
  243. package/dist/chunk-HY3ESWCA.js +708 -0
  244. package/dist/chunk-I46EG2XQ.js +65 -0
  245. package/dist/chunk-I4NPDSCB.js +279 -0
  246. package/dist/chunk-I5WRT7ZR.js +514 -0
  247. package/dist/chunk-I6BL3PDH.js +1024 -0
  248. package/dist/chunk-IATQ7NBI.js +679 -0
  249. package/dist/chunk-IC7I6YIJ.js +301 -0
  250. package/dist/chunk-IDCSOZVN.js +78 -0
  251. package/dist/chunk-IEXU4RR6.js +5742 -0
  252. package/dist/chunk-IFCBYECK.js +112 -0
  253. package/dist/chunk-IFZCPEY2.js +66 -0
  254. package/dist/chunk-IKFP2KUR.js +48 -0
  255. package/dist/chunk-IP7BYVUV.js +338 -0
  256. package/dist/chunk-IRJ2I6KH.js +166 -0
  257. package/dist/chunk-IUXNGKA6.js +152 -0
  258. package/dist/chunk-IZYIQQ7X.js +53 -0
  259. package/dist/chunk-IZZK3H6I.js +2175 -0
  260. package/dist/chunk-J3J4P7RW.js +353 -0
  261. package/dist/chunk-J62KPGII.js +464 -0
  262. package/dist/chunk-J6P3FWWW.js +130 -0
  263. package/dist/chunk-JD6SIZED.js +712 -0
  264. package/dist/chunk-JEV6UI7H.js +537 -0
  265. package/dist/chunk-JKBHJQMT.js +434 -0
  266. package/dist/chunk-JLS65NUQ.js +14 -0
  267. package/dist/chunk-JOSYEJKY.js +141 -0
  268. package/dist/chunk-JPKSXKNB.js +94 -0
  269. package/dist/chunk-JQD5VYKR.js +483 -0
  270. package/dist/chunk-JSOWEFEQ.js +351 -0
  271. package/dist/chunk-JSWMRQYG.js +28 -0
  272. package/dist/chunk-K4XK7SGB.js +6783 -0
  273. package/dist/chunk-K54Y7MLK.js +160 -0
  274. package/dist/chunk-KAT4RXUT.js +521 -0
  275. package/dist/chunk-KDMKKIRK.js +103 -0
  276. package/dist/chunk-KM3F7SYE.js +702 -0
  277. package/dist/chunk-KNDYMVWN.js +102 -0
  278. package/dist/chunk-KNT72VR6.js +132 -0
  279. package/dist/chunk-KQEBSK3T.js +274 -0
  280. package/dist/chunk-KT6VHSPF.js +84 -0
  281. package/dist/chunk-KTMW65UX.js +14 -0
  282. package/dist/chunk-L4427KOE.js +26 -0
  283. package/dist/chunk-L6OM4A22.js +189 -0
  284. package/dist/chunk-L7E6XCRA.js +1042 -0
  285. package/dist/chunk-L7JZLXQL.js +173 -0
  286. package/dist/chunk-LAMKBTXX.js +40 -0
  287. package/dist/chunk-LDCF2MKN.js +132 -0
  288. package/dist/chunk-LEIIWPWQ.js +78 -0
  289. package/dist/chunk-LFTQVYBB.js +31 -0
  290. package/dist/chunk-LGHII5ET.js +23 -0
  291. package/dist/chunk-LH34OGSB.js +265 -0
  292. package/dist/chunk-LO3X5NLS.js +326 -0
  293. package/dist/chunk-LPITVM7M.js +339 -0
  294. package/dist/chunk-LR5IJIGV.js +810 -0
  295. package/dist/chunk-LUVKFFWR.js +315 -0
  296. package/dist/chunk-LWCBNGH6.js +35 -0
  297. package/dist/chunk-LWTN3WRV.js +260 -0
  298. package/dist/chunk-LZBBXYWF.js +1004 -0
  299. package/dist/chunk-M34PS4NE.js +2213 -0
  300. package/dist/chunk-M3HQYKQX.js +308 -0
  301. package/dist/chunk-MCPQNJMK.js +482 -0
  302. package/dist/chunk-MF5HP6XV.js +221 -0
  303. package/dist/chunk-MFADRRTR.js +112 -0
  304. package/dist/chunk-MN6PL4AN.js +120 -0
  305. package/dist/chunk-MQ4WA34C.js +206 -0
  306. package/dist/chunk-MTVZITQ2.js +185 -0
  307. package/dist/chunk-MWHF5V7U.js +223 -0
  308. package/dist/chunk-MWHLBPNU.js +211 -0
  309. package/dist/chunk-MWK5UZQ3.js +1068 -0
  310. package/dist/chunk-MYLH2S4G.js +64 -0
  311. package/dist/chunk-MZ5WYKNA.js +28 -0
  312. package/dist/chunk-N5DX4JAK.js +12 -0
  313. package/dist/chunk-NEDCMN7E.js +415 -0
  314. package/dist/chunk-NEQUQHOX.js +223 -0
  315. package/dist/chunk-NGK6PEOG.js +25 -0
  316. package/dist/chunk-NM6PMYY4.js +768 -0
  317. package/dist/chunk-NOZGR2QO.js +2373 -0
  318. package/dist/chunk-NP2V3L7K.js +226 -0
  319. package/dist/chunk-NPZJMUZ4.js +194 -0
  320. package/dist/chunk-NRLY536M.js +260 -0
  321. package/dist/chunk-NS33V3IM.js +51 -0
  322. package/dist/chunk-NWOYOA6H.js +378 -0
  323. package/dist/chunk-NWRUSEXG.js +322 -0
  324. package/dist/chunk-O6V4PNLO.js +63 -0
  325. package/dist/chunk-OGMSYL6J.js +227 -0
  326. package/dist/chunk-OIS7J26S.js +319 -0
  327. package/dist/chunk-OKBTRSZI.js +205 -0
  328. package/dist/chunk-OMX5VL43.js +79 -0
  329. package/dist/chunk-ON3G73BU.js +264 -0
  330. package/dist/chunk-OPYFYTWQ.js +220 -0
  331. package/dist/chunk-OQ6K46CK.js +1734 -0
  332. package/dist/chunk-OSDYVKHW.js +2440 -0
  333. package/dist/chunk-OUM5S64R.js +3429 -0
  334. package/dist/chunk-OWB7JXUS.js +751 -0
  335. package/dist/chunk-OYZYO7TV.js +47 -0
  336. package/dist/chunk-P47VN5F4.js +282 -0
  337. package/dist/chunk-P6VQROCO.js +594 -0
  338. package/dist/chunk-P7CQGPLS.js +30 -0
  339. package/dist/chunk-PA6BCSOX.js +2872 -0
  340. package/dist/chunk-PGSPX4SU.js +15 -0
  341. package/dist/chunk-PIKLF7BM.js +432 -0
  342. package/dist/chunk-PJWJ3SAV.js +22 -0
  343. package/dist/chunk-PKIFMV72.js +100 -0
  344. package/dist/chunk-PTH5E5XO.js +195 -0
  345. package/dist/chunk-PYITM4N2.js +79 -0
  346. package/dist/chunk-PZ5AY32C.js +10 -0
  347. package/dist/chunk-Q3RO7N35.js +45 -0
  348. package/dist/chunk-Q3WIC6GQ.js +2670 -0
  349. package/dist/chunk-QGJDMEOV.js +34 -0
  350. package/dist/chunk-QJYIHVXT.js +100 -0
  351. package/dist/chunk-QNOB37UH.js +58 -0
  352. package/dist/chunk-QOCOVLUH.js +462 -0
  353. package/dist/chunk-QTCJ5CC5.js +172 -0
  354. package/dist/chunk-QU6JQJMH.js +3063 -0
  355. package/dist/chunk-QVFV5IP2.js +232 -0
  356. package/dist/chunk-QVZMFDYG.js +29 -0
  357. package/dist/chunk-R2ZYWNW3.js +1581 -0
  358. package/dist/chunk-R4UWBC35.js +200 -0
  359. package/dist/chunk-R6W23LKN.js +254 -0
  360. package/dist/chunk-RAK5HOIJ.js +459 -0
  361. package/dist/chunk-RDFRCT64.js +168 -0
  362. package/dist/chunk-RE5VZDFQ.js +58 -0
  363. package/dist/chunk-RGROYC2G.js +638 -0
  364. package/dist/chunk-RGWHUI5E.js +68 -0
  365. package/dist/chunk-RHVG6UNL.js +205 -0
  366. package/dist/chunk-RI4EX2QE.js +18 -0
  367. package/dist/chunk-RIKFAWZF.js +71 -0
  368. package/dist/chunk-RJAAKDRX.js +17 -0
  369. package/dist/chunk-RSXSD4MH.js +1016 -0
  370. package/dist/chunk-RW7RVSDV.js +79 -0
  371. package/dist/chunk-RWREC3KJ.js +517 -0
  372. package/dist/chunk-RZY7RKM5.js +500 -0
  373. package/dist/chunk-S2MNWFAG.js +52 -0
  374. package/dist/chunk-S2VQCZO4.js +22 -0
  375. package/dist/chunk-S54MKU6V.js +117 -0
  376. package/dist/chunk-S77XPALC.js +239 -0
  377. package/dist/chunk-SCW4ZF6R.js +150 -0
  378. package/dist/chunk-SKHGYQ7W.js +405 -0
  379. package/dist/chunk-SNLBO4BF.js +247 -0
  380. package/dist/chunk-SP3LFU6B.js +60 -0
  381. package/dist/chunk-SQZRPY23.js +5181 -0
  382. package/dist/chunk-SSB5UQHA.js +4128 -0
  383. package/dist/chunk-STJOHHSF.js +605 -0
  384. package/dist/chunk-STV6LYYE.js +45 -0
  385. package/dist/chunk-SUN4OFTW.js +740 -0
  386. package/dist/chunk-SURZ2WFE.js +326 -0
  387. package/dist/chunk-SUZ7UYZH.js +1972 -0
  388. package/dist/chunk-SZ7DL357.js +1047 -0
  389. package/dist/chunk-T2SZELJL.js +624 -0
  390. package/dist/chunk-T6VPI2XP.js +10338 -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-TIBZPAD2.js +9924 -0
  397. package/dist/chunk-TK644IOG.js +1813 -0
  398. package/dist/chunk-TRSVUPCX.js +25 -0
  399. package/dist/chunk-TSPQONRT.js +4533 -0
  400. package/dist/chunk-TSXGRLPR.js +107 -0
  401. package/dist/chunk-TWYLVAS2.js +152 -0
  402. package/dist/chunk-U2S3YEX3.js +224 -0
  403. package/dist/chunk-U32HWI76.js +437 -0
  404. package/dist/chunk-U45RTRGY.js +818 -0
  405. package/dist/chunk-U62VCQGR.js +49 -0
  406. package/dist/chunk-UDMS5AD3.js +307 -0
  407. package/dist/chunk-UGX7GI37.js +94 -0
  408. package/dist/chunk-UH3JJSHK.js +1 -0
  409. package/dist/chunk-UHRBTZYY.js +208 -0
  410. package/dist/chunk-UHT2KRG5.js +193 -0
  411. package/dist/chunk-UI2F6DJ5.js +118 -0
  412. package/dist/chunk-UKMAFG7A.js +189 -0
  413. package/dist/chunk-UUH2RVKS.js +585 -0
  414. package/dist/chunk-UVBBFDFQ.js +270 -0
  415. package/dist/chunk-UXZF3B7T.js +75 -0
  416. package/dist/chunk-V6YLL5WA.js +3746 -0
  417. package/dist/chunk-V72RMBM4.js +48 -0
  418. package/dist/chunk-VBNCKCCI.js +16 -0
  419. package/dist/chunk-VCAUV5XQ.js +3679 -0
  420. package/dist/chunk-VDSH7O4Y.js +152 -0
  421. package/dist/chunk-VNSYKC25.js +24 -0
  422. package/dist/chunk-VTLNJQ44.js +133 -0
  423. package/dist/chunk-VV6HOXRC.js +302 -0
  424. package/dist/chunk-VVGEPBPS.js +218 -0
  425. package/dist/chunk-VXF4Q3FW.js +20 -0
  426. package/dist/chunk-W3ZGW3C5.js +331 -0
  427. package/dist/chunk-W4OMESPG.js +271 -0
  428. package/dist/chunk-WDUORIHF.js +877 -0
  429. package/dist/chunk-WDVTY4U6.js +148 -0
  430. package/dist/chunk-WGXYDLMX.js +4386 -0
  431. package/dist/chunk-WMPU2UOV.js +82 -0
  432. package/dist/chunk-WOEVVPDP.js +1125 -0
  433. package/dist/chunk-WTLMSPBQ.js +256 -0
  434. package/dist/chunk-X43NMU4Z.js +1124 -0
  435. package/dist/chunk-X5NTI5U5.js +368 -0
  436. package/dist/chunk-X6UIEADS.js +949 -0
  437. package/dist/chunk-XAONGNST.js +57 -0
  438. package/dist/chunk-XB5YLCLB.js +13 -0
  439. package/dist/chunk-XGYF2QMZ.js +351 -0
  440. package/dist/chunk-XHEKQENB.js +255 -0
  441. package/dist/chunk-XPHKYHO4.js +878 -0
  442. package/dist/chunk-XQD2B6BB.js +507 -0
  443. package/dist/chunk-XT2ZQVTC.js +558 -0
  444. package/dist/chunk-XUSRFFA7.js +1859 -0
  445. package/dist/chunk-XUXVDPSZ.js +50 -0
  446. package/dist/chunk-XV7NZL4B.js +57 -0
  447. package/dist/chunk-XXCGJGSQ.js +121 -0
  448. package/dist/chunk-XYGDZCB5.js +659 -0
  449. package/dist/chunk-XZAMZUX5.js +992 -0
  450. package/dist/chunk-XZE4XARH.js +563 -0
  451. package/dist/chunk-Y34DUC4A.js +1356 -0
  452. package/dist/chunk-Y3J4JMTU.js +61 -0
  453. package/dist/chunk-Y4RC2YFX.js +1270 -0
  454. package/dist/chunk-Y55LZN5U.js +52 -0
  455. package/dist/chunk-Y5677NDO.js +183 -0
  456. package/dist/chunk-YESZJFK6.js +220 -0
  457. package/dist/chunk-YGXKOBQQ.js +292 -0
  458. package/dist/chunk-YMX76IOS.js +31 -0
  459. package/dist/chunk-YOTXESEH.js +257 -0
  460. package/dist/chunk-YQAAKTVH.js +712 -0
  461. package/dist/chunk-YVORHQ2S.js +579 -0
  462. package/dist/chunk-YWNAHW24.js +1552 -0
  463. package/dist/chunk-Z476RATD.js +1689 -0
  464. package/dist/chunk-ZDTGECTN.js +235 -0
  465. package/dist/chunk-ZDTMICNY.js +316 -0
  466. package/dist/chunk-ZIPWI2LY.js +151 -0
  467. package/dist/chunk-ZIVYXF7A.js +2344 -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-HUOTBRM3.js +40 -0
  472. package/dist/cli-validation-WLXWLUJL.js +111 -0
  473. package/dist/commit-utils-3QV2P6RA.js +202 -0
  474. package/dist/compete-config-resolver-SNH3TT2Q.js +76 -0
  475. package/dist/compete-request-XWNPOARL.js +364 -0
  476. package/dist/compete-results-PAP67LDR.js +208 -0
  477. package/dist/competition-outcome-tracker-GOZXNAQU.js +38 -0
  478. package/dist/config-HWHUNA72.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-L3VRNTSG.js +67 -0
  483. package/dist/config-validator-SIIQEOFQ.js +72 -0
  484. package/dist/cost-7CX37DU3.js +53 -0
  485. package/dist/coverage-orchestrator-MNKHD6YC.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-CGBCD7IQ.js +186 -0
  492. package/dist/domain-analyzer-DL6BDR2N.js +29 -0
  493. package/dist/ensure-initialized-4BY73HLE.js +52 -0
  494. package/dist/entry.js +940 -0
  495. package/dist/environment-IGVH5X53.js +81 -0
  496. package/dist/error-parser-core-PPZ36A4S.js +50 -0
  497. package/dist/escalation-ladder-NWY5BJ57.js +130 -0
  498. package/dist/evaluation-context-KMWDSDYD.js +35 -0
  499. package/dist/evidence-plan-resolver-YIVH76PU.js +85 -0
  500. package/dist/execution-data-writer-OHAQ7G5H.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-KBH2MC3M.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-IYBMCZG7.js +149 -0
  507. package/dist/file-utils-XIVR2ZMA.js +47 -0
  508. package/dist/flywheel-autoloop-executor-R3KD2G4D.js +249 -0
  509. package/dist/flywheel-competition-executor-XCFGVJSK.js +259 -0
  510. package/dist/flywheel-executor-LTSIZN2L.js +369 -0
  511. package/dist/flywheel-git-isolation-CZ5YVVZY.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-6E33DJDK.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-AZ46EPRP.js +73 -0
  519. package/dist/git-worktree-IY6V6DUO.js +18 -0
  520. package/dist/github-pr-manager-4XUO2YTM.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 +108644 -0
  525. package/dist/instructions-CM6THDV7.js +64 -0
  526. package/dist/invoke-provider-auth-V5TC5UDS.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-VA6VXNOV.js +23 -0
  531. package/dist/linux-host-class-UY4KVLFD.js +29 -0
  532. package/dist/llm-judge-executor-34YPIRJ7.js +133 -0
  533. package/dist/local-executor-LJJSCWZX.js +223 -0
  534. package/dist/logger-6PRYM56M.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-LHDTJ4TY.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-MCI3F4PX.js +72 -0
  542. package/dist/next-HQKDXIIR.js +90 -0
  543. package/dist/next-JC3V2UCS.js +69 -0
  544. package/dist/optimization-config-resolver-QPSFLCJU.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-DZK24LSZ.js +270 -0
  552. package/dist/plan-backlog-show-fast-63GBBH6Q.js +406 -0
  553. package/dist/plan-sprint-list-fast-TJ6ZUF5E.js +162 -0
  554. package/dist/plan-sprint-status-fast-YWE5X3NG.js +208 -0
  555. package/dist/plan-task-status-fast-K22BTTBW.js +349 -0
  556. package/dist/plan-to-flywheel-VFGCPINA.js +456 -0
  557. package/dist/planning-backlog-Y6TIJYWU.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-2XP3FWH2.js +149 -0
  565. package/dist/prompts-EPAAAMMF.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-KWTYA5QV.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-33SHK43X.js +70 -0
  575. package/dist/quickstart-E32SODTA.js +62 -0
  576. package/dist/readiness-REWW7OSV.js +96 -0
  577. package/dist/registry-N6L36RE2.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-LXQYDSKS.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-VGQU35QM.js +160 -0
  587. package/dist/run-poetic-tui-ZZXFDOQ4.js +13517 -0
  588. package/dist/run-simulation.js +376 -0
  589. package/dist/runner-2YPKOJ6A.js +1092 -0
  590. package/dist/runner-HEJJ65AJ.js +1571 -0
  591. package/dist/safety-OCC4KJJR.js +64 -0
  592. package/dist/safety-stanza-BSVE6OJU.js +60 -0
  593. package/dist/sandbox-3AG2WJLM.js +94 -0
  594. package/dist/sandbox-5JOFBS75.js +81 -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-QGXLN3SO.js +338 -0
  603. package/dist/sprint-bridge-FNKQCJGL.js +68 -0
  604. package/dist/sprint-execution-service-4ELKNJDS.js +311 -0
  605. package/dist/sprint-manager-7TNCXCIX.js +91 -0
  606. package/dist/sqlite-wrapper-UDWCTNLJ.js +17 -0
  607. package/dist/stale-cleanup-orchestrator-H5XKGZP2.js +62 -0
  608. package/dist/storage-access-F6ALDN4S.js +22 -0
  609. package/dist/synthesis-TGQUVAW3.js +185 -0
  610. package/dist/task-classifier-DZIRBSS2.js +494 -0
  611. package/dist/task-list-fast-PJ2EXVZE.js +147 -0
  612. package/dist/task-manager-5742GMJK.js +93 -0
  613. package/dist/task-splitter-6MBXSWF6.js +79 -0
  614. package/dist/task-type-detector-OLVOMXZO.js +21 -0
  615. package/dist/task-type-resolver-4HG6TXFV.js +42 -0
  616. package/dist/telemetry-JX7EMNOZ.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-2MLJ4J6B.js +125 -0
  620. package/dist/token-estimator-PDU345YE.js +37 -0
  621. package/dist/transports-3UEO6C5Y.js +255 -0
  622. package/dist/unified-cost-tracker-F3W5NMPG.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-XCOYVCM4.js +33 -0
  627. package/dist/variant-state-cleanup-QIEKRULB.js +280 -0
  628. package/dist/variant-success-PJXWE3ZV.js +12 -0
  629. package/dist/variant-worker-HPTUA37Z.js +4196 -0
  630. package/dist/variant-worker.js +24 -0
  631. package/dist/variants-2HDYZOCG.js +233 -0
  632. package/dist/verification-toolchains-VVKT3GBF.js +28 -0
  633. package/dist/verify-commands-5F6CJV4B.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-AGWHD4D2.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 +7040 -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/package.json +331 -0
  720. package/schemas/README.md +80 -0
  721. package/schemas/config-v1.schema.json +136 -0
  722. package/schemas/execution-config.schema.json +47 -0
  723. package/schemas/judge-scoring.schema.json +370 -0
  724. package/schemas/poetic.config.schema.json +2214 -0
  725. package/schemas/provider-config.schema.json +203 -0
  726. package/schemas/telemetry-config.schema.json +79 -0
  727. package/schemas/user-preferences.schema.json +141 -0
  728. package/scripts/assert-node-runtime.mjs +140 -0
  729. package/scripts/preflight-native.mjs +49 -0
  730. package/scripts/preinstall-node-check.mjs +78 -0
  731. package/scripts/setup-git-hooks.mjs +24 -0
  732. package/scripts/sync.sh +2722 -0
  733. package/scripts/write-node-launcher.sh +108 -0
  734. package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
  735. package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
  736. package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
  737. package/templates/.poetic/README.md +37 -0
  738. package/templates/.poetic/agents/README.md +296 -0
  739. package/templates/.poetic/agents/api-documenter.md +147 -0
  740. package/templates/.poetic/agents/backend-architect.md +31 -0
  741. package/templates/.poetic/agents/code-reviewer.md +157 -0
  742. package/templates/.poetic/agents/data-scientist.md +179 -0
  743. package/templates/.poetic/agents/database-optimizer.md +145 -0
  744. package/templates/.poetic/agents/debugger.md +31 -0
  745. package/templates/.poetic/agents/deployment-engineer.md +164 -0
  746. package/templates/.poetic/agents/devops-troubleshooter.md +139 -0
  747. package/templates/.poetic/agents/frontend-developer.md +150 -0
  748. package/templates/.poetic/agents/javascript-pro.md +36 -0
  749. package/templates/.poetic/agents/performance-engineer.md +151 -0
  750. package/templates/.poetic/agents/python-pro.md +137 -0
  751. package/templates/.poetic/agents/test-automator.md +147 -0
  752. package/templates/.poetic/agents/typescript-pro.md +34 -0
  753. package/templates/.poetic/config/poetic.config.jsonc +69 -0
  754. package/templates/.poetic/config/project-context.template.json +6 -0
  755. package/templates/.poetic/config/task-type-aliases.presets/kanban.yaml +14 -0
  756. package/templates/.poetic/config/task-type-aliases.presets/scrum.yaml +17 -0
  757. package/templates/.poetic/config/task-type-aliases.presets/xp.yaml +12 -0
  758. package/templates/.poetic/config/task-type-aliases.yaml +28 -0
  759. package/templates/.poetic/gitignore.template +55 -0
  760. package/templates/.poetic/task-types/analysis.yaml +40 -0
  761. package/templates/.poetic/task-types/architecture.yaml +38 -0
  762. package/templates/.poetic/task-types/doc.yaml +35 -0
  763. package/templates/.poetic/task-types/feature.yaml +23 -0
  764. package/templates/.poetic/task-types/general.yaml +6 -0
  765. package/templates/.poetic/task-types/security.yaml +39 -0
  766. package/templates/AGENTS.template.md +99 -0
  767. package/templates/CLAUDE.template.md +1 -0
  768. package/templates/GEMINI.template.md +1 -0
  769. package/templates/builtin-workflows/code-review.yaml +73 -0
  770. package/templates/builtin-workflows/compete-streak.yaml +78 -0
  771. package/templates/builtin-workflows/hello-verify.yaml +10 -0
  772. package/templates/builtin-workflows/judge-regression.yaml +114 -0
  773. package/templates/builtin-workflows/skills/code-review/SKILL.md +60 -0
  774. package/templates/builtin-workflows/skills/hello-verify/SKILL.md +6 -0
  775. package/templates/guard-kit/GUARD_SETUP.md.template +255 -0
  776. package/templates/guard-kit/check.mjs.template +777 -0
  777. package/templates/guard-kit/config.json.template +6 -0
  778. package/templates/guard-kit/poetic-guard.yml.template +189 -0
  779. package/templates/profiles/README.md +56 -0
  780. package/templates/profiles/frontier-claude.json +27 -0
  781. package/templates/profiles/frontier-codex.json +26 -0
@@ -0,0 +1,768 @@
1
+ import {
2
+ evaluateStaleReclaim
3
+ } from "./chunk-P7CQGPLS.js";
4
+ import {
5
+ atomicWriteJson
6
+ } from "./chunk-A3YGID55.js";
7
+ import {
8
+ resolvePoeticRoot
9
+ } from "./chunk-LEIIWPWQ.js";
10
+ import {
11
+ emitCustomWarning
12
+ } from "./chunk-EJGCZGUF.js";
13
+
14
+ // src/planning/backlog-execution-provenance.ts
15
+ import { randomUUID } from "crypto";
16
+ import * as fsSync from "fs";
17
+ import * as fs from "fs/promises";
18
+ import * as os from "os";
19
+ import * as path from "path";
20
+ var BACKLOG_EXECUTION_STATUSES = [
21
+ "initialized",
22
+ "executing",
23
+ "blocked",
24
+ "pr-open",
25
+ "archive-sync-pending",
26
+ "delivered-local",
27
+ "merged",
28
+ "archived",
29
+ "failed"
30
+ ];
31
+ var DELIVERY_BEARING_BACKLOG_EXECUTION_STATUSES = /* @__PURE__ */ new Set([
32
+ "pr-open",
33
+ "archive-sync-pending",
34
+ "delivered-local",
35
+ "merged",
36
+ "archived"
37
+ ]);
38
+ function backlogExecutionStatusCarriesDelivery(status) {
39
+ return status !== null && status !== void 0 ? DELIVERY_BEARING_BACKLOG_EXECUTION_STATUSES.has(status) : false;
40
+ }
41
+ function resolveAdHocBacklogExecutionSuccessUpdates(outcome) {
42
+ const base = {
43
+ executingPid: null,
44
+ lastCompletedStep: "execute",
45
+ failedAtStep: null,
46
+ errorMessage: null
47
+ };
48
+ if (typeof outcome?.prNumber === "number" && Number.isFinite(outcome.prNumber)) {
49
+ return {
50
+ ...base,
51
+ status: "pr-open",
52
+ prNumber: outcome.prNumber
53
+ };
54
+ }
55
+ if (outcome?.deliveredLocal === true) {
56
+ return {
57
+ ...base,
58
+ status: "delivered-local",
59
+ prNumber: null
60
+ };
61
+ }
62
+ return base;
63
+ }
64
+ var BACKLOG_ITEM_COMMIT_TRAILER_KEY = "Poetic-Backlog-Item";
65
+ function formatBacklogItemCommitTrailer(backlogItemId) {
66
+ return `${BACKLOG_ITEM_COMMIT_TRAILER_KEY}: ${backlogItemId}`;
67
+ }
68
+ function commitBodyContainsBacklogItemTrailer(commitBody, backlogItemId) {
69
+ const expected = formatBacklogItemCommitTrailer(backlogItemId);
70
+ return commitBody.split("\n").some((line) => line.trim() === expected || line.trim().startsWith(`${expected} `));
71
+ }
72
+ function evaluateAutoFinalizeEligibility(provenance, mergeCommit, evidence) {
73
+ if (provenance.status !== "pr-open") {
74
+ return { eligible: false, reason: `status is ${provenance.status} (expected pr-open)` };
75
+ }
76
+ if (provenance.prNumber === null || provenance.prNumber === void 0) {
77
+ return { eligible: false, reason: "missing prNumber on provenance record" };
78
+ }
79
+ if (!mergeCommit || mergeCommit.trim().length === 0) {
80
+ return { eligible: false, reason: `PR #${provenance.prNumber} is not merged` };
81
+ }
82
+ if (!evidence.validCommit) {
83
+ return { eligible: false, reason: `merge commit ${mergeCommit} is not a valid commit` };
84
+ }
85
+ if (!evidence.prMerged) {
86
+ return { eligible: false, reason: `PR #${provenance.prNumber} is not merged` };
87
+ }
88
+ if (!evidence.mergeCommitOnRemoteDefault) {
89
+ return {
90
+ eligible: false,
91
+ reason: `merge commit ${mergeCommit} is not on the remote default branch`
92
+ };
93
+ }
94
+ if (!evidence.mergeCommitMatchesPr) {
95
+ return {
96
+ eligible: false,
97
+ reason: `PR #${provenance.prNumber} merge commit does not match ${mergeCommit}`
98
+ };
99
+ }
100
+ if (!evidence.backlogItemMatchesPr) {
101
+ return {
102
+ eligible: false,
103
+ reason: `PR #${provenance.prNumber} is not linked to backlog item ${provenance.backlogItemId}`
104
+ };
105
+ }
106
+ return { eligible: true, mergeCommit: mergeCommit.trim() };
107
+ }
108
+ function evaluateArchiveSyncResumeEligibility(provenance, archiveSyncMergeCommit, evidence) {
109
+ if (provenance.status !== "archive-sync-pending") {
110
+ return {
111
+ eligible: false,
112
+ reason: `status is ${provenance.status} (expected archive-sync-pending)`
113
+ };
114
+ }
115
+ if (provenance.archiveSyncPrNumber === null) {
116
+ return { eligible: false, reason: "missing archiveSyncPrNumber on provenance record" };
117
+ }
118
+ if (provenance.prNumber === null) {
119
+ return { eligible: false, reason: "missing original prNumber on provenance record" };
120
+ }
121
+ if (!provenance.mergeCommit?.trim()) {
122
+ return { eligible: false, reason: "missing original mergeCommit on provenance record" };
123
+ }
124
+ if (!archiveSyncMergeCommit?.trim()) {
125
+ return {
126
+ eligible: false,
127
+ reason: `archive sync PR #${provenance.archiveSyncPrNumber} is not merged`
128
+ };
129
+ }
130
+ if (!evidence.validCommit) {
131
+ return {
132
+ eligible: false,
133
+ reason: `archive sync merge commit ${archiveSyncMergeCommit} is not a valid commit`
134
+ };
135
+ }
136
+ if (!evidence.prMerged) {
137
+ return {
138
+ eligible: false,
139
+ reason: `archive sync PR #${provenance.archiveSyncPrNumber} is not merged`
140
+ };
141
+ }
142
+ if (!evidence.mergeCommitOnRemoteDefault) {
143
+ return {
144
+ eligible: false,
145
+ reason: `archive sync merge commit ${archiveSyncMergeCommit} is not on the remote default branch`
146
+ };
147
+ }
148
+ if (!evidence.mergeCommitMatchesPr) {
149
+ return {
150
+ eligible: false,
151
+ reason: `archive sync PR #${provenance.archiveSyncPrNumber} merge commit does not match ${archiveSyncMergeCommit}`
152
+ };
153
+ }
154
+ return { eligible: true, mergeCommit: provenance.mergeCommit.trim() };
155
+ }
156
+ async function listBacklogExecutionProvenanceByStatus(projectRoot, status) {
157
+ const dir = provenanceDir(projectRoot);
158
+ let entries;
159
+ try {
160
+ entries = await fs.readdir(dir);
161
+ } catch (error) {
162
+ if (error.code === "ENOENT") {
163
+ return [];
164
+ }
165
+ throw error;
166
+ }
167
+ const matches = [];
168
+ for (const entry of entries) {
169
+ if (!entry.endsWith(".json")) {
170
+ continue;
171
+ }
172
+ const backlogItemId = entry.slice(0, -".json".length);
173
+ const provenance = await loadBacklogExecutionProvenance(projectRoot, backlogItemId, {
174
+ cleanupTerminalLocks: false
175
+ });
176
+ if (provenance?.status === status) {
177
+ matches.push(provenance);
178
+ }
179
+ }
180
+ matches.sort((a, b) => a.backlogItemId.localeCompare(b.backlogItemId));
181
+ return matches;
182
+ }
183
+ var DEFAULT_BACKLOG_EXECUTION_LOCK_RETRY_MS = 1e3;
184
+ function emitBacklogExecutionProvenanceWarning(message, metadata) {
185
+ emitCustomWarning(
186
+ "WARN" /* WARN */,
187
+ "workspace_edits" /* WORKSPACE_EDITS */,
188
+ message,
189
+ {
190
+ taskId: "backlog-execution-provenance",
191
+ subsystem: "planning/backlog-execution-provenance",
192
+ executionPhase: "execution"
193
+ },
194
+ { metadata, skipConsole: true }
195
+ );
196
+ }
197
+ function isTerminalBacklogExecutionStatus(status) {
198
+ return status === "archived" || status === "merged";
199
+ }
200
+ function provenanceDir(projectRoot) {
201
+ const resolvedProjectRoot = path.resolve(projectRoot);
202
+ const sharedRoot = fsSync.existsSync(path.join(resolvedProjectRoot, ".git")) ? resolvePoeticRoot(resolvedProjectRoot) : resolvedProjectRoot;
203
+ return path.join(sharedRoot, ".poetic", "provenance");
204
+ }
205
+ function lockDir(projectRoot) {
206
+ return path.join(provenanceDir(projectRoot), "locks");
207
+ }
208
+ function lockPath(projectRoot, backlogItemId) {
209
+ return path.join(lockDir(projectRoot), `${backlogItemId}.lock`);
210
+ }
211
+ function getBacklogExecutionProvenancePath(projectRoot, backlogItemId) {
212
+ return path.join(provenanceDir(projectRoot), `${backlogItemId}.json`);
213
+ }
214
+ function nowIso() {
215
+ return (/* @__PURE__ */ new Date()).toISOString();
216
+ }
217
+ function normalizePendingBlockers(value) {
218
+ if (!Array.isArray(value)) return [];
219
+ return value.flatMap((entry) => {
220
+ if (!entry || typeof entry !== "object") return [];
221
+ const candidate = entry;
222
+ if (typeof candidate.question !== "string" || candidate.question.trim().length === 0) {
223
+ return [];
224
+ }
225
+ return [
226
+ {
227
+ ...typeof candidate.id === "string" && candidate.id.trim().length > 0 ? { id: candidate.id } : {},
228
+ question: candidate.question,
229
+ ...Array.isArray(candidate.stageIds) ? {
230
+ stageIds: candidate.stageIds.filter(
231
+ (stageId) => typeof stageId === "string"
232
+ )
233
+ } : {}
234
+ }
235
+ ];
236
+ });
237
+ }
238
+ function normalizeLoadedBacklogExecutionProvenance(provenance) {
239
+ return {
240
+ ...provenance,
241
+ taskIds: Array.isArray(provenance.taskIds) ? provenance.taskIds : [],
242
+ pendingBlockers: normalizePendingBlockers(
243
+ provenance.pendingBlockers
244
+ )
245
+ };
246
+ }
247
+ function isBacklogExecutionStatus(value) {
248
+ return typeof value === "string" && BACKLOG_EXECUTION_STATUSES.includes(value);
249
+ }
250
+ function parseBacklogExecutionProvenanceFile(raw, filePath, expectedBacklogItemId) {
251
+ let parsed;
252
+ try {
253
+ parsed = JSON.parse(raw);
254
+ } catch (error) {
255
+ emitBacklogExecutionProvenanceWarning(
256
+ `[poetic] Corrupt backlog execution provenance at ${filePath}; treating it as absent and reinitializing execution state.`,
257
+ {
258
+ filePath,
259
+ error: error instanceof Error ? error.message : String(error),
260
+ operation: "parse-backlog-execution-provenance"
261
+ }
262
+ );
263
+ return null;
264
+ }
265
+ const candidate = parsed;
266
+ if (!candidate || typeof candidate !== "object" || typeof candidate.backlogItemId !== "string" || candidate.backlogItemId.trim().length === 0 || !isBacklogExecutionStatus(candidate.status)) {
267
+ emitBacklogExecutionProvenanceWarning(
268
+ `[poetic] Invalid backlog execution provenance at ${filePath} (missing or malformed backlogItemId/status); treating it as absent and reinitializing execution state.`,
269
+ {
270
+ filePath,
271
+ operation: "validate-backlog-execution-provenance"
272
+ }
273
+ );
274
+ return null;
275
+ }
276
+ if (candidate.backlogItemId !== expectedBacklogItemId) {
277
+ emitBacklogExecutionProvenanceWarning(
278
+ `[poetic] Backlog execution provenance at ${filePath} records backlogItemId ${candidate.backlogItemId}, which does not match the item it was loaded for (${expectedBacklogItemId}); treating it as absent. Remove or rename the file so each record identifies exactly one backlog item.`,
279
+ {
280
+ filePath,
281
+ expectedBacklogItemId,
282
+ recordedBacklogItemId: candidate.backlogItemId,
283
+ operation: "validate-backlog-execution-provenance-id-binding"
284
+ }
285
+ );
286
+ return null;
287
+ }
288
+ return normalizeLoadedBacklogExecutionProvenance(candidate);
289
+ }
290
+ async function ensureBacklogExecutionProvenanceDir(projectRoot) {
291
+ await fs.mkdir(provenanceDir(projectRoot), { recursive: true });
292
+ await fs.mkdir(lockDir(projectRoot), { recursive: true });
293
+ }
294
+ function ensureBacklogExecutionProvenanceDirSync(projectRoot) {
295
+ fsSync.mkdirSync(provenanceDir(projectRoot), { recursive: true });
296
+ fsSync.mkdirSync(lockDir(projectRoot), { recursive: true });
297
+ }
298
+ function createInitialBacklogExecutionProvenance(backlogItemId) {
299
+ const timestamp = nowIso();
300
+ return {
301
+ backlogItemId,
302
+ branch: null,
303
+ branchRole: null,
304
+ sourceBranch: null,
305
+ sourceBranchRole: null,
306
+ branchRoleAction: null,
307
+ branchRoleOverride: null,
308
+ workflowId: null,
309
+ sprintId: null,
310
+ taskIds: [],
311
+ planArtifact: null,
312
+ prNumber: null,
313
+ mergeCommit: null,
314
+ archiveSyncPrNumber: null,
315
+ archiveSyncWarning: null,
316
+ status: "initialized",
317
+ executingPid: null,
318
+ executingStartedAt: null,
319
+ lastCompletedStep: null,
320
+ failedAtStep: null,
321
+ errorMessage: null,
322
+ pendingBlockers: [],
323
+ createdAt: timestamp,
324
+ updatedAt: timestamp
325
+ };
326
+ }
327
+ async function loadBacklogExecutionProvenance(projectRoot, backlogItemId, options = {}) {
328
+ const filePath = getBacklogExecutionProvenancePath(projectRoot, backlogItemId);
329
+ try {
330
+ const raw = await fs.readFile(filePath, "utf8");
331
+ const provenance = parseBacklogExecutionProvenanceFile(raw, filePath, backlogItemId);
332
+ if (!provenance) {
333
+ return null;
334
+ }
335
+ if (options.cleanupTerminalLocks !== false) {
336
+ await cleanupTerminalBacklogExecutionLock(projectRoot, backlogItemId, provenance);
337
+ }
338
+ return provenance;
339
+ } catch (error) {
340
+ if (error.code === "ENOENT") {
341
+ return null;
342
+ }
343
+ throw error;
344
+ }
345
+ }
346
+ function isPidAlive(pid) {
347
+ try {
348
+ process.kill(pid, 0);
349
+ return true;
350
+ } catch (error) {
351
+ return error.code !== "ESRCH";
352
+ }
353
+ }
354
+ function backlogExecutionLockHostIdentity() {
355
+ const envHostname = process.env.HOSTNAME?.trim();
356
+ return envHostname || os.hostname() || "unknown";
357
+ }
358
+ var LOCK_HOST_LINE_PREFIX = "host=";
359
+ function formatBacklogExecutionLockContent(ownerToken) {
360
+ return `${ownerToken}
361
+ ${(/* @__PURE__ */ new Date()).toISOString()}
362
+ ${LOCK_HOST_LINE_PREFIX}${backlogExecutionLockHostIdentity()}
363
+ `;
364
+ }
365
+ function parseBacklogExecutionLockContent(content) {
366
+ const lines = content.split("\n");
367
+ const ownerToken = (lines[0] ?? "").trim();
368
+ const pid = Number.parseInt(ownerToken.split(":")[0] ?? "", 10);
369
+ const hostLine = lines.map((line) => line.trim()).find((line) => line.startsWith(LOCK_HOST_LINE_PREFIX));
370
+ const host = hostLine ? hostLine.slice(LOCK_HOST_LINE_PREFIX.length).trim() : "";
371
+ return {
372
+ ownerToken,
373
+ pid: Number.isFinite(pid) ? pid : null,
374
+ host: host.length > 0 ? host : null
375
+ };
376
+ }
377
+ function observeBacklogExecutionLockHolder(payload) {
378
+ if (payload.pid === null) {
379
+ return null;
380
+ }
381
+ const currentHost = backlogExecutionLockHostIdentity();
382
+ const sameHost = payload.host === null || payload.host !== "unknown" && payload.host === currentHost;
383
+ return { sameHost, pidAlive: sameHost ? isPidAlive(payload.pid) : false };
384
+ }
385
+ var FOREIGN_HOST_BACKLOG_EXECUTION_LOCK_STALE_MS = 3e5;
386
+ var FOREIGN_HOST_BACKLOG_EXECUTION_LOCK_MULTIPLIER = 3;
387
+ function shouldReclaimBacklogExecutionLock(payload, ageMs) {
388
+ const holder = observeBacklogExecutionLockHolder(payload);
389
+ if (holder === null) {
390
+ return true;
391
+ }
392
+ return evaluateStaleReclaim(
393
+ { ageMs, holder },
394
+ {
395
+ staleMs: FOREIGN_HOST_BACKLOG_EXECUTION_LOCK_STALE_MS,
396
+ corruptPayload: "reclaim",
397
+ foreignHost: {
398
+ kind: "after-multiplier",
399
+ multiplier: FOREIGN_HOST_BACKLOG_EXECUTION_LOCK_MULTIPLIER
400
+ },
401
+ sameHostDeadPid: "immediate"
402
+ }
403
+ ) === "reclaim";
404
+ }
405
+ async function backlogExecutionLockAgeMs(filePath) {
406
+ try {
407
+ const stat2 = await fs.stat(filePath);
408
+ return Math.max(0, Date.now() - stat2.mtimeMs);
409
+ } catch {
410
+ return 0;
411
+ }
412
+ }
413
+ async function isBacklogExecutionLockHeldByLiveProcess(projectRoot, backlogItemId) {
414
+ const filePath = lockPath(projectRoot, backlogItemId);
415
+ try {
416
+ const content = await fs.readFile(filePath, "utf8");
417
+ const payload = parseBacklogExecutionLockContent(content);
418
+ return !shouldReclaimBacklogExecutionLock(payload, await backlogExecutionLockAgeMs(filePath));
419
+ } catch (error) {
420
+ if (error.code === "ENOENT") {
421
+ return false;
422
+ }
423
+ throw error;
424
+ }
425
+ }
426
+ async function readBacklogExecutionLockPayload(projectRoot, backlogItemId) {
427
+ const filePath = lockPath(projectRoot, backlogItemId);
428
+ try {
429
+ const content = await fs.readFile(filePath, "utf8");
430
+ return parseBacklogExecutionLockContent(content);
431
+ } catch (error) {
432
+ if (error.code === "ENOENT") {
433
+ return null;
434
+ }
435
+ throw error;
436
+ }
437
+ }
438
+ async function isBacklogExecutionProvenanceActivelyExecuting(projectRoot, provenance) {
439
+ if (provenance.status !== "executing") {
440
+ return false;
441
+ }
442
+ if (await isBacklogExecutionLockHeldByLiveProcess(projectRoot, provenance.backlogItemId)) {
443
+ const lock = await readBacklogExecutionLockPayload(projectRoot, provenance.backlogItemId);
444
+ const holder = lock ? observeBacklogExecutionLockHolder(lock) : null;
445
+ if (holder?.sameHost === true && lock?.pid === process.pid) {
446
+ if (provenance.executingPid == null) {
447
+ return false;
448
+ }
449
+ return isPidAlive(provenance.executingPid);
450
+ }
451
+ return true;
452
+ }
453
+ if (typeof provenance.executingPid === "number") {
454
+ return isPidAlive(provenance.executingPid);
455
+ }
456
+ return false;
457
+ }
458
+ async function cleanupTerminalBacklogExecutionLock(projectRoot, backlogItemId, provenance) {
459
+ if (!isTerminalBacklogExecutionStatus(provenance.status)) {
460
+ return;
461
+ }
462
+ const filePath = lockPath(projectRoot, backlogItemId);
463
+ try {
464
+ const content = await fs.readFile(filePath, "utf8");
465
+ const payload = parseBacklogExecutionLockContent(content);
466
+ if (await shouldReclaimBacklogExecutionLockFile(filePath, payload)) {
467
+ await removeBacklogExecutionLockIfOwnerMatches(filePath, payload.ownerToken);
468
+ }
469
+ } catch {
470
+ return;
471
+ }
472
+ }
473
+ async function shouldReclaimBacklogExecutionLockFile(filePath, payload) {
474
+ return shouldReclaimBacklogExecutionLock(payload, await backlogExecutionLockAgeMs(filePath));
475
+ }
476
+ async function removeBacklogExecutionLockIfOwnerMatches(filePath, expectedOwnerToken, expectedIdentity) {
477
+ const reclaimPath = `${filePath}.reclaim.${process.pid}.${Date.now().toString(36)}.${randomUUID()}`;
478
+ try {
479
+ await fs.link(filePath, reclaimPath);
480
+ } catch (error) {
481
+ if (error.code === "ENOENT") {
482
+ return false;
483
+ }
484
+ throw error;
485
+ }
486
+ try {
487
+ const currentContent = await fs.readFile(reclaimPath, "utf8");
488
+ const currentOwnerToken = (currentContent.split("\n")[0] ?? "").trim();
489
+ if (currentOwnerToken !== expectedOwnerToken) {
490
+ return false;
491
+ }
492
+ const [currentStat, reclaimStat] = await Promise.all([
493
+ fs.stat(filePath).catch(() => null),
494
+ fs.stat(reclaimPath)
495
+ ]);
496
+ if (expectedIdentity && (reclaimStat.dev !== expectedIdentity.dev || reclaimStat.ino !== expectedIdentity.ino)) {
497
+ return false;
498
+ }
499
+ if (!currentStat || currentStat.dev !== reclaimStat.dev || currentStat.ino !== reclaimStat.ino) {
500
+ return false;
501
+ }
502
+ await fs.unlink(filePath);
503
+ return true;
504
+ } finally {
505
+ await fs.unlink(reclaimPath).catch(() => void 0);
506
+ }
507
+ }
508
+ async function removeBacklogExecutionLockIfIdentityMatches(filePath, expectedIdentity) {
509
+ const reclaimPath = `${filePath}.reclaim.${process.pid}.${Date.now().toString(36)}.${randomUUID()}`;
510
+ try {
511
+ await fs.link(filePath, reclaimPath);
512
+ } catch (error) {
513
+ if (error.code === "ENOENT") {
514
+ return false;
515
+ }
516
+ throw error;
517
+ }
518
+ try {
519
+ const [currentStat, reclaimStat] = await Promise.all([
520
+ fs.stat(filePath).catch(() => null),
521
+ fs.stat(reclaimPath)
522
+ ]);
523
+ if (reclaimStat.dev !== expectedIdentity.dev || reclaimStat.ino !== expectedIdentity.ino || !currentStat || currentStat.dev !== reclaimStat.dev || currentStat.ino !== reclaimStat.ino) {
524
+ return false;
525
+ }
526
+ await fs.unlink(filePath);
527
+ return true;
528
+ } finally {
529
+ await fs.unlink(reclaimPath).catch(() => void 0);
530
+ }
531
+ }
532
+ function removeBacklogExecutionLockIfOwnerMatchesSync(filePath, expectedOwnerToken, expectedIdentity) {
533
+ const reclaimPath = `${filePath}.reclaim.${process.pid}.${Date.now().toString(36)}.${randomUUID()}`;
534
+ try {
535
+ fsSync.linkSync(filePath, reclaimPath);
536
+ } catch (error) {
537
+ if (error.code === "ENOENT") {
538
+ return false;
539
+ }
540
+ throw error;
541
+ }
542
+ try {
543
+ const currentContent = fsSync.readFileSync(reclaimPath, "utf8");
544
+ const currentOwnerToken = (currentContent.split("\n")[0] ?? "").trim();
545
+ if (currentOwnerToken !== expectedOwnerToken) {
546
+ return false;
547
+ }
548
+ const reclaimStat = fsSync.statSync(reclaimPath);
549
+ let currentStat;
550
+ try {
551
+ currentStat = fsSync.statSync(filePath);
552
+ } catch (error) {
553
+ if (error.code === "ENOENT") {
554
+ return false;
555
+ }
556
+ throw error;
557
+ }
558
+ if (reclaimStat.dev !== expectedIdentity.dev || reclaimStat.ino !== expectedIdentity.ino || currentStat.dev !== reclaimStat.dev || currentStat.ino !== reclaimStat.ino) {
559
+ return false;
560
+ }
561
+ fsSync.unlinkSync(filePath);
562
+ return true;
563
+ } finally {
564
+ try {
565
+ fsSync.unlinkSync(reclaimPath);
566
+ } catch {
567
+ }
568
+ }
569
+ }
570
+ async function cleanupTerminalBacklogExecutionLockFromStoredProvenance(projectRoot, backlogItemId) {
571
+ const filePath = getBacklogExecutionProvenancePath(projectRoot, backlogItemId);
572
+ try {
573
+ const raw = await fs.readFile(filePath, "utf8");
574
+ const provenance = parseBacklogExecutionProvenanceFile(raw, filePath, backlogItemId);
575
+ if (!provenance) {
576
+ return;
577
+ }
578
+ await cleanupTerminalBacklogExecutionLock(projectRoot, backlogItemId, provenance);
579
+ } catch (error) {
580
+ if (error.code === "ENOENT") {
581
+ return;
582
+ }
583
+ throw error;
584
+ }
585
+ }
586
+ function normalizeBacklogExecutionProvenance(provenance) {
587
+ if (!isTerminalBacklogExecutionStatus(provenance.status)) {
588
+ return provenance;
589
+ }
590
+ return {
591
+ ...provenance,
592
+ failedAtStep: null,
593
+ errorMessage: null,
594
+ pendingBlockers: []
595
+ };
596
+ }
597
+ function warnIfMergedWithoutCommit(provenance) {
598
+ if (provenance.status === "merged" && !provenance.mergeCommit) {
599
+ emitBacklogExecutionProvenanceWarning(
600
+ `[poetic] Persisting backlog item ${provenance.backlogItemId} as merged without a mergeCommit; the record cannot prove the merge landed.`,
601
+ {
602
+ backlogItemId: provenance.backlogItemId,
603
+ operation: "save-merged-without-merge-commit"
604
+ }
605
+ );
606
+ }
607
+ }
608
+ async function saveBacklogExecutionProvenance(projectRoot, provenance) {
609
+ warnIfMergedWithoutCommit(provenance);
610
+ await ensureBacklogExecutionProvenanceDir(projectRoot);
611
+ const filePath = getBacklogExecutionProvenancePath(projectRoot, provenance.backlogItemId);
612
+ const next = {
613
+ ...normalizeBacklogExecutionProvenance(provenance),
614
+ updatedAt: nowIso()
615
+ };
616
+ await atomicWriteJson(filePath, next);
617
+ }
618
+ function saveBacklogExecutionProvenanceSync(projectRoot, provenance) {
619
+ warnIfMergedWithoutCommit(provenance);
620
+ ensureBacklogExecutionProvenanceDirSync(projectRoot);
621
+ const filePath = getBacklogExecutionProvenancePath(projectRoot, provenance.backlogItemId);
622
+ const next = {
623
+ ...normalizeBacklogExecutionProvenance(provenance),
624
+ updatedAt: nowIso()
625
+ };
626
+ const dir = path.dirname(filePath);
627
+ const tempPath = path.join(dir, `.tmp.${process.pid}.${Date.now()}.${randomUUID()}`);
628
+ fsSync.writeFileSync(tempPath, `${JSON.stringify(next, null, 2)}
629
+ `, "utf8");
630
+ fsSync.renameSync(tempPath, filePath);
631
+ }
632
+ async function updateBacklogExecutionProvenance(projectRoot, backlogItemId, updates) {
633
+ const current = await loadBacklogExecutionProvenance(projectRoot, backlogItemId) ?? createInitialBacklogExecutionProvenance(backlogItemId);
634
+ const next = {
635
+ ...current,
636
+ ...updates,
637
+ backlogItemId
638
+ };
639
+ if (updates.status && updates.status !== "blocked") {
640
+ next.pendingBlockers = [];
641
+ }
642
+ if (next.status === "merged" && !next.mergeCommit) {
643
+ throw new Error(
644
+ `Refusing to mark backlog item ${backlogItemId} as merged without a mergeCommit; include mergeCommit in the same update.`
645
+ );
646
+ }
647
+ await saveBacklogExecutionProvenance(projectRoot, next);
648
+ return next;
649
+ }
650
+ async function acquireBacklogExecutionLock(projectRoot, backlogItemId) {
651
+ await ensureBacklogExecutionProvenanceDir(projectRoot);
652
+ await cleanupTerminalBacklogExecutionLockFromStoredProvenance(projectRoot, backlogItemId);
653
+ const filePath = lockPath(projectRoot, backlogItemId);
654
+ const retryDeadlineMs = Date.now() + DEFAULT_BACKLOG_EXECUTION_LOCK_RETRY_MS;
655
+ const ownerToken = `${process.pid}:${randomUUID()}`;
656
+ const attemptCreate = async () => {
657
+ const handle = await fs.open(filePath, "wx");
658
+ let partialIdentity = null;
659
+ try {
660
+ const partialStat = await handle.stat();
661
+ partialIdentity = { dev: partialStat.dev, ino: partialStat.ino };
662
+ await handle.writeFile(formatBacklogExecutionLockContent(ownerToken), "utf8");
663
+ await handle.close();
664
+ } catch (error) {
665
+ await handle.close().catch(() => {
666
+ });
667
+ if (partialIdentity) {
668
+ await removeBacklogExecutionLockIfIdentityMatches(filePath, partialIdentity).catch(
669
+ () => false
670
+ );
671
+ }
672
+ throw error;
673
+ }
674
+ const stat2 = await fs.stat(filePath);
675
+ return { path: filePath, ownerToken, lockDev: stat2.dev, lockIno: stat2.ino };
676
+ };
677
+ const blockingError = new Error(
678
+ `Backlog item ${backlogItemId} is already being executed. Remove ${path.relative(projectRoot, filePath)} if the prior run is stale.`
679
+ );
680
+ while (true) {
681
+ try {
682
+ return await attemptCreate();
683
+ } catch (error) {
684
+ if (error.code !== "EEXIST") {
685
+ throw error;
686
+ }
687
+ let isStale = false;
688
+ let stalePid = null;
689
+ let staleHost = null;
690
+ let staleOwnerToken = "";
691
+ try {
692
+ const content = await fs.readFile(filePath, "utf8");
693
+ const payload = parseBacklogExecutionLockContent(content);
694
+ staleOwnerToken = payload.ownerToken;
695
+ stalePid = payload.pid;
696
+ staleHost = payload.host;
697
+ isStale = await shouldReclaimBacklogExecutionLockFile(filePath, payload);
698
+ } catch {
699
+ isStale = true;
700
+ }
701
+ if (!isStale) {
702
+ if (Date.now() < retryDeadlineMs) {
703
+ await new Promise((resolve2) => setTimeout(resolve2, 10));
704
+ continue;
705
+ }
706
+ throw blockingError;
707
+ }
708
+ emitBacklogExecutionProvenanceWarning(
709
+ `[poetic] Stale lock detected for backlog item ${backlogItemId} (stale PID: ${stalePid ?? "unknown"}, host: ${staleHost ?? "unknown"}). Auto-recovering lock at ${filePath}.`,
710
+ {
711
+ backlogItemId,
712
+ filePath,
713
+ stalePid: stalePid ?? "unknown",
714
+ staleHost: staleHost ?? "unknown",
715
+ operation: "recover-stale-backlog-execution-lock"
716
+ }
717
+ );
718
+ await removeBacklogExecutionLockIfOwnerMatches(filePath, staleOwnerToken).catch(() => false);
719
+ await new Promise((resolve2) => setTimeout(resolve2, 10));
720
+ }
721
+ }
722
+ }
723
+ async function releaseBacklogExecutionLock(lock) {
724
+ try {
725
+ await removeBacklogExecutionLockIfOwnerMatches(lock.path, lock.ownerToken, {
726
+ dev: lock.lockDev,
727
+ ino: lock.lockIno
728
+ });
729
+ } catch (error) {
730
+ if (error.code !== "ENOENT") {
731
+ throw error;
732
+ }
733
+ }
734
+ }
735
+ function releaseBacklogExecutionLockSync(lock) {
736
+ try {
737
+ removeBacklogExecutionLockIfOwnerMatchesSync(lock.path, lock.ownerToken, {
738
+ dev: lock.lockDev,
739
+ ino: lock.lockIno
740
+ });
741
+ } catch (error) {
742
+ if (error.code !== "ENOENT") {
743
+ throw error;
744
+ }
745
+ }
746
+ }
747
+
748
+ export {
749
+ backlogExecutionStatusCarriesDelivery,
750
+ resolveAdHocBacklogExecutionSuccessUpdates,
751
+ BACKLOG_ITEM_COMMIT_TRAILER_KEY,
752
+ formatBacklogItemCommitTrailer,
753
+ commitBodyContainsBacklogItemTrailer,
754
+ evaluateAutoFinalizeEligibility,
755
+ evaluateArchiveSyncResumeEligibility,
756
+ listBacklogExecutionProvenanceByStatus,
757
+ getBacklogExecutionProvenancePath,
758
+ createInitialBacklogExecutionProvenance,
759
+ loadBacklogExecutionProvenance,
760
+ isBacklogExecutionProvenanceActivelyExecuting,
761
+ saveBacklogExecutionProvenance,
762
+ saveBacklogExecutionProvenanceSync,
763
+ updateBacklogExecutionProvenance,
764
+ acquireBacklogExecutionLock,
765
+ releaseBacklogExecutionLock,
766
+ releaseBacklogExecutionLockSync
767
+ };
768
+ //# sourceMappingURL=chunk-NM6PMYY4.js.map