@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,751 @@
1
+ import {
2
+ withIngestLock
3
+ } from "./chunk-MQ4WA34C.js";
4
+ import {
5
+ resolveTaskStatusForStageOutcome
6
+ } from "./chunk-D5EP5D2W.js";
7
+ import {
8
+ emitBlockerRuntimeFailure,
9
+ emitPlanProvenanceMissing,
10
+ emitSprintBridgeCreated,
11
+ emitSprintBridgeRollbackFailed,
12
+ emitSprintBridgeRolledBack,
13
+ emitSprintBridgeTaskStatusUpdated
14
+ } from "./chunk-SCW4ZF6R.js";
15
+ import {
16
+ resolvePlanArtifactPath
17
+ } from "./chunk-RJAAKDRX.js";
18
+ import {
19
+ createTask,
20
+ getAllTasks,
21
+ updateTaskStatusWithTransitionValidation
22
+ } from "./chunk-5LTN43AS.js";
23
+ import {
24
+ addTaskToSprint,
25
+ calculateCapacity,
26
+ checkCapacityWarning,
27
+ createSprint,
28
+ listSprints,
29
+ listTasksInSprint,
30
+ refreshSprintLock,
31
+ removeTaskFromSprint
32
+ } from "./chunk-4YX7J6QL.js";
33
+ import {
34
+ getPlanningRoot,
35
+ withIndexRegeneration
36
+ } from "./chunk-OPYFYTWQ.js";
37
+ import {
38
+ getBucketPathByKind
39
+ } from "./chunk-HOYBYAOA.js";
40
+ import {
41
+ readMarkdownFile,
42
+ writeMarkdownFile
43
+ } from "./chunk-OIS7J26S.js";
44
+ import {
45
+ signalCoordinator
46
+ } from "./chunk-72YTZMAM.js";
47
+ import {
48
+ isQuietOutputRequested,
49
+ shouldShowLifecycleDiagnostics
50
+ } from "./chunk-FKAUPHMR.js";
51
+ import {
52
+ findRepoRoot
53
+ } from "./chunk-L7JZLXQL.js";
54
+ import {
55
+ emitCustomWarning
56
+ } from "./chunk-EJGCZGUF.js";
57
+
58
+ // src/planning/sprint-bridge.ts
59
+ import * as fs from "fs";
60
+ import * as fsp from "fs/promises";
61
+ import * as path from "path";
62
+ function isDuplicateSprintDateError(error) {
63
+ if (!error || typeof error !== "object") return false;
64
+ const candidate = error;
65
+ if (candidate.code === "SPRINT_ALREADY_EXISTS_FOR_DATE") return true;
66
+ if (candidate.name === "SprintAlreadyExistsError") return true;
67
+ return typeof candidate.message === "string" && candidate.message.includes("Sprint already exists for date");
68
+ }
69
+ function isSprintDateRangeOverlapError(error) {
70
+ if (!error || typeof error !== "object") return false;
71
+ const message = error.message;
72
+ return typeof message === "string" && message.includes("Sprint date range overlaps existing sprint");
73
+ }
74
+ function isSprintCollisionError(error) {
75
+ return isDuplicateSprintDateError(error) || isSprintDateRangeOverlapError(error);
76
+ }
77
+ function parseDateOnly(value) {
78
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value.trim());
79
+ if (!match) return null;
80
+ const year = Number(match[1]);
81
+ const month = Number(match[2]);
82
+ const day = Number(match[3]);
83
+ const date = new Date(Date.UTC(year, month - 1, day));
84
+ if (date.getUTCFullYear() !== year || date.getUTCMonth() !== month - 1 || date.getUTCDate() !== day) {
85
+ return null;
86
+ }
87
+ return date;
88
+ }
89
+ function dateRangesOverlap(startA, endA, startB, endB) {
90
+ const aStart = parseDateOnly(startA);
91
+ const aEnd = parseDateOnly(endA);
92
+ const bStart = parseDateOnly(startB);
93
+ const bEnd = parseDateOnly(endB);
94
+ if (!aStart || !aEnd || !bStart || !bEnd) return false;
95
+ return aStart.getTime() < bEnd.getTime() && aEnd.getTime() > bStart.getTime();
96
+ }
97
+ function findReusableSprint(sprints, startDate, endDate) {
98
+ const active = sprints.filter(
99
+ (candidate) => candidate.status === "planning" || candidate.status === "active"
100
+ );
101
+ const sameStart = active.find((candidate) => candidate.startDate === startDate);
102
+ if (sameStart) return sameStart;
103
+ return active.find(
104
+ (candidate) => dateRangesOverlap(startDate, endDate, candidate.startDate, candidate.endDate)
105
+ );
106
+ }
107
+ function emitLifecycleDiagnostic(message, error) {
108
+ if (isQuietOutputRequested() || !shouldShowLifecycleDiagnostics()) {
109
+ return;
110
+ }
111
+ process.stderr.write(`${message} ${error instanceof Error ? error.message : String(error)}
112
+ `);
113
+ }
114
+ function emitSprintBridgeDiagnostic(message, metadata) {
115
+ emitCustomWarning(
116
+ "WARN" /* WARN */,
117
+ "configuration" /* CONFIGURATION */,
118
+ message,
119
+ {
120
+ subsystem: "planning/sprint-bridge",
121
+ executionPhase: "execution"
122
+ },
123
+ {
124
+ metadata,
125
+ skipConsole: isQuietOutputRequested() || !shouldShowLifecycleDiagnostics()
126
+ }
127
+ );
128
+ }
129
+ function topologicalSort(stages) {
130
+ const stageMap = new Map(stages.map((s) => [s.id, s]));
131
+ const visited = /* @__PURE__ */ new Set();
132
+ const visiting = /* @__PURE__ */ new Set();
133
+ const sorted = [];
134
+ function visit(id) {
135
+ if (visited.has(id)) return;
136
+ if (visiting.has(id)) {
137
+ throw new Error(`Cyclic stage dependency detected at ${id}`);
138
+ }
139
+ visiting.add(id);
140
+ const stage = stageMap.get(id);
141
+ if (!stage) {
142
+ visiting.delete(id);
143
+ return;
144
+ }
145
+ for (const dep of stage.deps ?? []) {
146
+ visit(dep);
147
+ }
148
+ visiting.delete(id);
149
+ visited.add(id);
150
+ sorted.push(stage);
151
+ }
152
+ for (const stage of stages) {
153
+ visit(stage.id);
154
+ }
155
+ return sorted;
156
+ }
157
+ function toStageType(value) {
158
+ if (value === "standard" || value === "competition" || value === "verify" || value === "refinement" || value === "autoloop" || value === "orchestrator") {
159
+ return value;
160
+ }
161
+ return void 0;
162
+ }
163
+ function deriveStageRuntimeOptions(stage, plan) {
164
+ let durationMs = stage.estimatedDurationMs;
165
+ if (!(typeof durationMs === "number" && Number.isFinite(durationMs) && durationMs > 0) && typeof plan?.estimatedDurationMs === "number" && Number.isFinite(plan.estimatedDurationMs) && plan.estimatedDurationMs > 0) {
166
+ durationMs = plan.estimatedDurationMs / Math.max(1, plan.stageCount ?? 1);
167
+ }
168
+ if (typeof durationMs === "number" && Number.isFinite(durationMs) && durationMs > 0) {
169
+ return {
170
+ estimatedHours: 0,
171
+ expectedRuntimeMinutes: Math.max(1, Math.round(durationMs / 6e4)),
172
+ runtimeEstimateProvenance: "explicit"
173
+ };
174
+ }
175
+ return { estimatedHours: 0 };
176
+ }
177
+ function normalizePlanArtifactPath(planArtifactPath) {
178
+ if (typeof planArtifactPath !== "string") return void 0;
179
+ const normalized = path.posix.normalize(planArtifactPath.replace(/\\/g, "/").trim());
180
+ return normalized.length > 0 && normalized !== "." ? normalized : void 0;
181
+ }
182
+ function normalizeStageDescription(description) {
183
+ if (typeof description !== "string") return void 0;
184
+ const normalized = description.trim().replace(/\s+/g, " ");
185
+ return normalized.length > 0 ? normalized : void 0;
186
+ }
187
+ var MAX_TASK_TITLE_LENGTH = 120;
188
+ function truncateTaskTitle(title) {
189
+ if (title.length <= MAX_TASK_TITLE_LENGTH) return title;
190
+ return `${title.slice(0, MAX_TASK_TITLE_LENGTH - 1).trimEnd()}\u2026`;
191
+ }
192
+ function deriveTaskTitleFromStage(stage) {
193
+ const name = stage.name?.trim();
194
+ if (name) return truncateTaskTitle(name);
195
+ const desc = (stage.description ?? "").trim();
196
+ if (desc.length === 0) return stage.id;
197
+ const firstSentence = desc.split(/(?<=[.!?])\s+|\n+/, 1)[0]?.trim() ?? desc;
198
+ const candidate = firstSentence.length > 0 ? firstSentence : desc;
199
+ return truncateTaskTitle(candidate);
200
+ }
201
+ function buildStageDedupKey(planArtifactPath, stageId, intentHash) {
202
+ if (intentHash) {
203
+ return `intent:${intentHash}::${stageId}`;
204
+ }
205
+ const normalizedPlanArtifactPath = normalizePlanArtifactPath(planArtifactPath);
206
+ if (!normalizedPlanArtifactPath) {
207
+ return void 0;
208
+ }
209
+ return `${normalizedPlanArtifactPath}::${stageId}`;
210
+ }
211
+ function validatePlanStages(stages) {
212
+ const stageIds = stages.map((stage) => stage.id);
213
+ const duplicateIds = stageIds.filter((id, index) => stageIds.indexOf(id) !== index);
214
+ if (duplicateIds.length > 0) {
215
+ throw new Error(`Duplicate stage IDs in plan: ${[...new Set(duplicateIds)].join(", ")}`);
216
+ }
217
+ const knownStageIds = new Set(stageIds);
218
+ for (const stage of stages) {
219
+ const unknownDeps = (stage.deps ?? []).filter((dep) => !knownStageIds.has(dep));
220
+ if (unknownDeps.length > 0) {
221
+ throw new Error(
222
+ `Plan stage ${stage.id} references unknown dependency stage(s): ${unknownDeps.join(", ")}`
223
+ );
224
+ }
225
+ }
226
+ return topologicalSort(stages);
227
+ }
228
+ async function snapshotTaskFile(taskId, tasksDir) {
229
+ const filePath = path.join(tasksDir, `${taskId}.md`);
230
+ try {
231
+ return { filePath, contents: await fsp.readFile(filePath) };
232
+ } catch {
233
+ return void 0;
234
+ }
235
+ }
236
+ async function setTaskSprintId(taskPath, sprintId) {
237
+ const { frontMatter, body } = await readMarkdownFile(taskPath);
238
+ const current = frontMatter;
239
+ const rawTask = {
240
+ ...current,
241
+ sprintId,
242
+ updated_at: (/* @__PURE__ */ new Date()).toISOString(),
243
+ // CAS invariant (TaskYAML.version): every managed task write bumps version
244
+ // so concurrency / TOCTOU guards observe this sprintId rewrite.
245
+ version: (typeof current.version === "number" ? current.version : 0) + 1
246
+ };
247
+ delete rawTask.sprint_id;
248
+ await writeMarkdownFile(taskPath, rawTask, body);
249
+ }
250
+ async function createSprintFromPlan(plan, options) {
251
+ const repoRoot = findRepoRoot();
252
+ return withIngestLock(
253
+ repoRoot,
254
+ async () => {
255
+ const now = /* @__PURE__ */ new Date();
256
+ const startDate = now.toISOString().split("T")[0];
257
+ const endDate = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1e3).toISOString().split("T")[0];
258
+ const sprintName = options.sprintName ?? `auto-${plan.goal.slice(0, 40).replace(/\s+/g, "-").toLowerCase()}`;
259
+ if (options.planArtifactPath) {
260
+ const resolvedPath = resolvePlanArtifactPath(options.planArtifactPath, repoRoot);
261
+ if (!fs.existsSync(resolvedPath)) {
262
+ throw new Error(`Plan artifact not found: ${options.planArtifactPath}`);
263
+ }
264
+ }
265
+ const sortedStages = validatePlanStages(plan.subStages);
266
+ const shouldReuseExistingSprint = options.reuseExistingSprint !== false;
267
+ let reusingExistingSprint = false;
268
+ let reusedSprintSnapshot;
269
+ const sprint = await createSprint(sprintName, startDate, endDate, {
270
+ allowDuplicateStartDate: !shouldReuseExistingSprint
271
+ }).catch(async (error) => {
272
+ if (!isSprintCollisionError(error)) {
273
+ throw error;
274
+ }
275
+ if (!shouldReuseExistingSprint) {
276
+ throw error;
277
+ }
278
+ const existing = await listSprints(false);
279
+ const matching = findReusableSprint(existing, startDate, endDate);
280
+ if (!matching) {
281
+ throw error;
282
+ }
283
+ reusingExistingSprint = true;
284
+ const planningRoot2 = getPlanningRoot();
285
+ const sprintPath = path.join(
286
+ getBucketPathByKind("sprint", planningRoot2),
287
+ `${matching.id}.md`
288
+ );
289
+ reusedSprintSnapshot = await fsp.readFile(sprintPath);
290
+ const reuseReason = matching.startDate === startDate ? `started ${startDate}` : `overlaps ${matching.startDate} to ${matching.endDate}`;
291
+ emitSprintBridgeDiagnostic(`Reusing existing sprint ${matching.id} (${reuseReason})`);
292
+ return matching;
293
+ });
294
+ const sprintId = sprint.id;
295
+ const planningRoot = getPlanningRoot();
296
+ const tasksDir = getBucketPathByKind("task", planningRoot);
297
+ const existingStageTaskIds = /* @__PURE__ */ new Map();
298
+ if (reusingExistingSprint) {
299
+ const sprintMemberTaskIds = new Set(
300
+ (await listTasksInSprint(sprintId)).map((task) => task.id)
301
+ );
302
+ const allTaskRecords = await getAllTasks({ includeArchive: true });
303
+ for (const taskRecord of allTaskRecords) {
304
+ const t = taskRecord.yaml;
305
+ if (!t.planStageId) continue;
306
+ const dedupKey = buildStageDedupKey(t.planArtifactPath, t.planStageId, t.planIntentHash);
307
+ if (!dedupKey) continue;
308
+ const inSprint = t.sprintId === sprintId && sprintMemberTaskIds.has(t.id);
309
+ const current = existingStageTaskIds.get(dedupKey);
310
+ if (!current || !current.inSprint && inSprint) {
311
+ existingStageTaskIds.set(dedupKey, {
312
+ taskId: t.id,
313
+ inSprint,
314
+ title: t.title,
315
+ filePath: taskRecord.filePath
316
+ });
317
+ }
318
+ }
319
+ const matchingExistingStageCount = sortedStages.filter((stage) => {
320
+ const stageDedupKey = buildStageDedupKey(
321
+ options.planArtifactPath,
322
+ stage.id,
323
+ options.intentHash
324
+ );
325
+ if (!stageDedupKey) return false;
326
+ const candidate = existingStageTaskIds.get(stageDedupKey);
327
+ if (!candidate) return false;
328
+ return !(options.intentHash && normalizeStageDescription(candidate.title) !== normalizeStageDescription(deriveTaskTitleFromStage(stage)));
329
+ }).length;
330
+ if (matchingExistingStageCount > 0) {
331
+ emitSprintBridgeDiagnostic(
332
+ `Reusing sprint ${sprintId} \u2014 found ${matchingExistingStageCount} matching existing plan stage(s); duplicates will be skipped`
333
+ );
334
+ }
335
+ }
336
+ const stageToTaskMap = /* @__PURE__ */ new Map();
337
+ const taskIds = [];
338
+ const createdTaskIds = [];
339
+ const reattachedTaskIds = [];
340
+ const reusedTaskSnapshots = /* @__PURE__ */ new Map();
341
+ try {
342
+ for (const stage of sortedStages) {
343
+ const stageDedupKey = buildStageDedupKey(
344
+ options.planArtifactPath,
345
+ stage.id,
346
+ options.intentHash
347
+ );
348
+ const existingStageTask = stageDedupKey && (() => {
349
+ const candidate = existingStageTaskIds.get(stageDedupKey);
350
+ if (!candidate) return void 0;
351
+ if (options.intentHash && normalizeStageDescription(candidate.title) !== normalizeStageDescription(deriveTaskTitleFromStage(stage))) {
352
+ return void 0;
353
+ }
354
+ return candidate;
355
+ })();
356
+ if (existingStageTask) {
357
+ if (!existingStageTask.inSprint) {
358
+ const snapshot = existingStageTask.filePath ? {
359
+ filePath: existingStageTask.filePath,
360
+ contents: await fsp.readFile(existingStageTask.filePath)
361
+ } : await snapshotTaskFile(existingStageTask.taskId, tasksDir);
362
+ if (snapshot) {
363
+ reusedTaskSnapshots.set(existingStageTask.taskId, snapshot);
364
+ }
365
+ await addTaskToSprint(sprintId, existingStageTask.taskId, 0);
366
+ await setTaskSprintId(
367
+ existingStageTask.filePath ?? path.join(tasksDir, `${existingStageTask.taskId}.md`),
368
+ sprintId
369
+ );
370
+ existingStageTask.inSprint = true;
371
+ taskIds.push(existingStageTask.taskId);
372
+ reattachedTaskIds.push(existingStageTask.taskId);
373
+ emitSprintBridgeDiagnostic(
374
+ `Reattached orphaned task ${existingStageTask.taskId} for stage ${stage.id} to sprint ${sprintId}`
375
+ );
376
+ } else {
377
+ emitSprintBridgeDiagnostic(
378
+ `Skipping duplicate task for stage ${stage.id} (already exists in sprint)`
379
+ );
380
+ }
381
+ stageToTaskMap.set(stage.id, existingStageTask.taskId);
382
+ continue;
383
+ }
384
+ const taskDeps = (stage.deps ?? []).map((depStageId) => stageToTaskMap.get(depStageId)).filter((id) => id !== void 0);
385
+ const mappedStageType = toStageType(stage.type);
386
+ const hasVerify = mappedStageType === "verify" && stage.verify && Array.isArray(stage.verify.commands) && stage.verify.commands.length > 0;
387
+ const taskTitle = deriveTaskTitleFromStage(stage);
388
+ const task = await createTask(taskTitle, sprintId, {
389
+ description: stage.description,
390
+ dependencies: taskDeps,
391
+ // AI-era estimate: use the plan's expected wall-clock runtime
392
+ // (advisory, [B5]) as expectedRuntimeMinutes, with explicit 0h so
393
+ // createTask's ?? 4 default cannot fabricate legacy capacity. Do
394
+ // NOT convert the advisory USD cost into fake human-hours
395
+ // (previous `estimatedCost * 2`).
396
+ ...deriveStageRuntimeOptions(stage, {
397
+ estimatedDurationMs: plan.estimatedDurationMs,
398
+ stageCount: plan.subStages.length
399
+ }),
400
+ planArtifactPath: options.planArtifactPath,
401
+ planIntentHash: options.intentHash,
402
+ planStageId: stage.id,
403
+ routing: stage.provider || stage.model ? {
404
+ ...stage.provider ? { provider: stage.provider } : {},
405
+ ...stage.model ? { model: stage.model } : {}
406
+ } : void 0,
407
+ flywheel: stage.type || stage.allowlist && stage.allowlist.length > 0 || hasVerify || stage.competition || stage.autoloop || stage.validation ? {
408
+ ...mappedStageType ? { type: mappedStageType } : {},
409
+ ...stage.allowlist && stage.allowlist.length > 0 ? { allowlist: stage.allowlist } : {},
410
+ ...hasVerify ? { verify: stage.verify } : {},
411
+ ...stage.competition ? { competition: stage.competition } : {},
412
+ ...stage.autoloop ? { autoloop: stage.autoloop } : {},
413
+ ...stage.validation ? { validation: stage.validation } : {}
414
+ } : void 0
415
+ });
416
+ const missingProvenance = [];
417
+ if (!task.planArtifactPath) missingProvenance.push("planArtifactPath");
418
+ if (!task.planStageId) missingProvenance.push("planStageId");
419
+ if (missingProvenance.length > 0) {
420
+ emitSprintBridgeDiagnostic(
421
+ `Task ${task.id} (stage ${stage.id}) created without provenance field(s): ${missingProvenance.join(", ")}`
422
+ );
423
+ await emitPlanProvenanceMissing(options.runId, sprintId, 1);
424
+ }
425
+ stageToTaskMap.set(stage.id, task.id);
426
+ taskIds.push(task.id);
427
+ createdTaskIds.push(task.id);
428
+ try {
429
+ await addTaskToSprint(sprintId, task.id, 0);
430
+ } catch (error) {
431
+ throw new Error(
432
+ `Created task ${task.id} for stage ${stage.id} but failed to attach it to sprint ${sprintId}: ${error instanceof Error ? error.message : String(error)}`
433
+ );
434
+ }
435
+ }
436
+ } catch (error) {
437
+ await rollbackSprintBridgeArtifacts({
438
+ runId: options.runId,
439
+ sprintId,
440
+ stageToTaskMap,
441
+ taskIds,
442
+ createdSprint: !reusingExistingSprint,
443
+ createdTaskIds,
444
+ reattachedTaskIds,
445
+ reusedSprintSnapshot,
446
+ reusedTaskSnapshots
447
+ });
448
+ throw error;
449
+ }
450
+ try {
451
+ const capacity = await calculateCapacity(sprintId);
452
+ const warning = checkCapacityWarning(capacity);
453
+ if (warning) {
454
+ emitSprintBridgeDiagnostic(`[capacity] ${warning.message}`);
455
+ }
456
+ } catch {
457
+ }
458
+ await emitSprintBridgeCreated(
459
+ options.runId,
460
+ sprintId,
461
+ taskIds.length,
462
+ options.planArtifactPath
463
+ );
464
+ return {
465
+ runId: options.runId,
466
+ sprintId,
467
+ stageToTaskMap,
468
+ taskIds,
469
+ createdSprint: !reusingExistingSprint,
470
+ createdTaskIds,
471
+ reattachedTaskIds,
472
+ reusedSprintSnapshot,
473
+ reusedTaskSnapshots
474
+ };
475
+ },
476
+ { operation: "sprint-bridge" }
477
+ );
478
+ }
479
+ async function rollbackSprintBridge(result) {
480
+ const repoRoot = findRepoRoot();
481
+ const totalTaskCount = result.createdTaskIds.length + result.reattachedTaskIds.length;
482
+ try {
483
+ await withIngestLock(
484
+ repoRoot,
485
+ async () => {
486
+ await rollbackSprintBridgeArtifacts(result);
487
+ },
488
+ { operation: "sprint-bridge-rollback" }
489
+ );
490
+ if (result.runId) {
491
+ await emitSprintBridgeRolledBack(result.runId, result.sprintId, totalTaskCount);
492
+ }
493
+ } catch (error) {
494
+ if (result.runId) {
495
+ const message = error instanceof Error ? error.message : String(error);
496
+ await emitSprintBridgeRollbackFailed(result.runId, result.sprintId, totalTaskCount, message);
497
+ }
498
+ throw error;
499
+ }
500
+ }
501
+ async function rollbackSprintBridgeArtifacts(result) {
502
+ const planningRoot = getPlanningRoot();
503
+ const tasksDir = getBucketPathByKind("task", planningRoot);
504
+ const sprintsDir = getBucketPathByKind("sprint", planningRoot);
505
+ const sprintPath = path.join(sprintsDir, `${result.sprintId}.md`);
506
+ const rollbackErrors = [];
507
+ const recordRollbackError = (operation, error) => {
508
+ const nodeError = error;
509
+ if (nodeError?.code === "ENOENT") {
510
+ return;
511
+ }
512
+ const message = error instanceof Error ? error.message : String(error);
513
+ rollbackErrors.push(`${operation}: ${message}`);
514
+ };
515
+ await withIndexRegeneration(planningRoot, async () => {
516
+ const detachedCreatedTaskIds = /* @__PURE__ */ new Set();
517
+ if (!result.createdSprint) {
518
+ for (const taskId of result.createdTaskIds) {
519
+ await removeTaskFromSprint(result.sprintId, taskId).then(() => {
520
+ detachedCreatedTaskIds.add(taskId);
521
+ }).catch((error) => recordRollbackError(`detach created task ${taskId}`, error));
522
+ }
523
+ for (const taskId of result.reattachedTaskIds) {
524
+ await removeTaskFromSprint(result.sprintId, taskId).catch(
525
+ (error) => recordRollbackError(`detach reattached task ${taskId}`, error)
526
+ );
527
+ }
528
+ }
529
+ for (const [taskId, snapshot] of result.reusedTaskSnapshots ?? []) {
530
+ await fsp.writeFile(snapshot.filePath, snapshot.contents).catch((error) => recordRollbackError(`restore reused task ${taskId}`, error));
531
+ }
532
+ for (const taskId of result.createdTaskIds) {
533
+ if (!result.createdSprint && !result.reusedSprintSnapshot && !detachedCreatedTaskIds.has(taskId)) {
534
+ continue;
535
+ }
536
+ await fsp.unlink(path.join(tasksDir, `${taskId}.md`)).catch((error) => recordRollbackError(`delete task ${taskId}`, error));
537
+ }
538
+ if (result.createdSprint) {
539
+ await fsp.unlink(sprintPath).catch((error) => recordRollbackError(`delete sprint ${result.sprintId}`, error));
540
+ } else if (result.reusedSprintSnapshot) {
541
+ await fsp.writeFile(sprintPath, result.reusedSprintSnapshot);
542
+ }
543
+ if (rollbackErrors.length > 0) {
544
+ throw new Error(`Rollback incomplete: ${rollbackErrors.join("; ")}`);
545
+ }
546
+ });
547
+ }
548
+ function isTransientIOError(err) {
549
+ if (!(err instanceof Error)) return false;
550
+ const code = err.code;
551
+ return code === "ENOENT" || code === "EACCES" || code === "EAGAIN" || code === "EBUSY";
552
+ }
553
+ async function applyStageEventToTask(event, taskId, apply, normalizeBlockedReason, telemetry, recordedTransitions, writeTaskStatus) {
554
+ await refreshSprintLock(telemetry.sprintId);
555
+ const targetStatus = resolveTaskStatusForStageOutcome({
556
+ kind: "lifecycle-event",
557
+ event,
558
+ apply
559
+ });
560
+ switch (event.eventType) {
561
+ case "started": {
562
+ if (targetStatus === "in_progress") {
563
+ if (!writeTaskStatus) {
564
+ recordedTransitions.set(taskId, { taskId, targetStatus });
565
+ break;
566
+ }
567
+ await updateTaskStatusWithTransitionValidation(taskId, targetStatus);
568
+ recordedTransitions.set(taskId, { taskId, targetStatus });
569
+ await emitSprintBridgeTaskStatusUpdated(
570
+ telemetry.runId,
571
+ telemetry.sprintId,
572
+ taskId,
573
+ "todo",
574
+ "in_progress"
575
+ );
576
+ }
577
+ break;
578
+ }
579
+ case "succeeded": {
580
+ if (targetStatus === "review" || targetStatus === "done") {
581
+ if (!writeTaskStatus) {
582
+ recordedTransitions.set(taskId, {
583
+ taskId,
584
+ targetStatus
585
+ });
586
+ break;
587
+ }
588
+ await updateTaskStatusWithTransitionValidation(taskId, targetStatus);
589
+ recordedTransitions.set(taskId, {
590
+ taskId,
591
+ targetStatus
592
+ });
593
+ await emitSprintBridgeTaskStatusUpdated(
594
+ telemetry.runId,
595
+ telemetry.sprintId,
596
+ taskId,
597
+ "in_progress",
598
+ targetStatus
599
+ );
600
+ }
601
+ break;
602
+ }
603
+ case "failed": {
604
+ if (targetStatus === "blocked") {
605
+ const reason = normalizeBlockedReason(
606
+ event.metadata?.errorSummary,
607
+ "Stage execution failed"
608
+ );
609
+ if (!writeTaskStatus) {
610
+ recordedTransitions.set(taskId, { taskId, targetStatus: "blocked", reason });
611
+ break;
612
+ }
613
+ await updateTaskStatusWithTransitionValidation(taskId, "blocked", {
614
+ blockedReason: reason
615
+ });
616
+ recordedTransitions.set(taskId, { taskId, targetStatus: "blocked", reason });
617
+ await emitBlockerRuntimeFailure(telemetry.runId, event.stageId);
618
+ await emitSprintBridgeTaskStatusUpdated(
619
+ telemetry.runId,
620
+ telemetry.sprintId,
621
+ taskId,
622
+ "in_progress",
623
+ "blocked"
624
+ );
625
+ }
626
+ break;
627
+ }
628
+ case "skipped": {
629
+ if (targetStatus === "blocked") {
630
+ const reason = normalizeBlockedReason(event.metadata?.skipReason, "Stage skipped");
631
+ if (!writeTaskStatus) {
632
+ recordedTransitions.set(taskId, { taskId, targetStatus: "blocked", reason });
633
+ break;
634
+ }
635
+ await updateTaskStatusWithTransitionValidation(taskId, "blocked", {
636
+ blockedReason: reason
637
+ });
638
+ recordedTransitions.set(taskId, { taskId, targetStatus: "blocked", reason });
639
+ await emitBlockerRuntimeFailure(telemetry.runId, event.stageId);
640
+ await emitSprintBridgeTaskStatusUpdated(
641
+ telemetry.runId,
642
+ telemetry.sprintId,
643
+ taskId,
644
+ "todo",
645
+ "blocked"
646
+ );
647
+ }
648
+ break;
649
+ }
650
+ }
651
+ }
652
+ async function replayStageEvent(event, taskId, apply, normalizeBlockedReason, telemetry, recordedTransitions, writeTaskStatus, shouldSkipUpdates) {
653
+ if (shouldSkipUpdates?.()) {
654
+ return;
655
+ }
656
+ await applyStageEventToTask(
657
+ event,
658
+ taskId,
659
+ apply,
660
+ normalizeBlockedReason,
661
+ telemetry,
662
+ recordedTransitions,
663
+ writeTaskStatus
664
+ );
665
+ }
666
+ function buildLifecycleCallbacks(stageToTaskMap, options) {
667
+ const apply = options.apply ?? false;
668
+ const writeTaskStatus = options.writeTaskStatus ?? true;
669
+ const normalizeBlockedReason = (reason, fallback) => {
670
+ const trimmed = reason?.trim();
671
+ return trimmed && trimmed.length > 0 ? trimmed : fallback;
672
+ };
673
+ const recordedTransitions = /* @__PURE__ */ new Map();
674
+ const pendingEvents = /* @__PURE__ */ new Set();
675
+ const shouldSkipUpdates = () => Boolean(options.signal?.aborted) || signalCoordinator.isShuttingDown;
676
+ const callbacks = {
677
+ onStageEvent: async (event) => {
678
+ const taskId = stageToTaskMap.get(event.stageId);
679
+ if (!taskId) return;
680
+ if (shouldSkipUpdates()) return;
681
+ try {
682
+ await applyStageEventToTask(
683
+ event,
684
+ taskId,
685
+ apply,
686
+ normalizeBlockedReason,
687
+ {
688
+ runId: options.runId,
689
+ sprintId: options.sprintId
690
+ },
691
+ recordedTransitions,
692
+ writeTaskStatus
693
+ );
694
+ } catch (err) {
695
+ if (isTransientIOError(err)) {
696
+ try {
697
+ if (shouldSkipUpdates()) return;
698
+ await new Promise((resolve) => setTimeout(resolve, 100));
699
+ if (shouldSkipUpdates()) return;
700
+ await replayStageEvent(
701
+ event,
702
+ taskId,
703
+ apply,
704
+ normalizeBlockedReason,
705
+ {
706
+ runId: options.runId,
707
+ sprintId: options.sprintId
708
+ },
709
+ recordedTransitions,
710
+ writeTaskStatus,
711
+ shouldSkipUpdates
712
+ );
713
+ return;
714
+ } catch (retryErr) {
715
+ emitLifecycleDiagnostic(
716
+ `[sprint-bridge] retry also failed for task ${taskId} stage ${event.stageId}:`,
717
+ retryErr
718
+ );
719
+ return;
720
+ }
721
+ }
722
+ emitLifecycleDiagnostic(
723
+ `[sprint-bridge] failed to update task ${taskId} for stage ${event.stageId}:`,
724
+ err
725
+ );
726
+ }
727
+ }
728
+ };
729
+ const trackedCallbacks = {
730
+ onStageEvent: (event) => {
731
+ const pending = Promise.resolve(callbacks.onStageEvent(event));
732
+ pendingEvents.add(pending);
733
+ void pending.finally(() => pendingEvents.delete(pending));
734
+ return pending;
735
+ }
736
+ };
737
+ const awaitDrain = async () => {
738
+ while (pendingEvents.size > 0) {
739
+ await Promise.allSettled(Array.from(pendingEvents));
740
+ }
741
+ };
742
+ trackedCallbacks.awaitDrain = awaitDrain;
743
+ return { callbacks: trackedCallbacks, recordedTransitions, awaitDrain };
744
+ }
745
+
746
+ export {
747
+ createSprintFromPlan,
748
+ rollbackSprintBridge,
749
+ buildLifecycleCallbacks
750
+ };
751
+ //# sourceMappingURL=chunk-DBFS4HMH.js.map