@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,1016 @@
1
+ import {
2
+ recordExecution
3
+ } from "./chunk-RHVG6UNL.js";
4
+ import {
5
+ RUNTIME_ESTIMATOR_VERSION
6
+ } from "./chunk-CE5OZBYY.js";
7
+ import {
8
+ resolveTaskStatusForStageOutcome
9
+ } from "./chunk-D5EP5D2W.js";
10
+ import {
11
+ parseDecompositionPlanArtifactPayload
12
+ } from "./chunk-DCAVAABI.js";
13
+ import {
14
+ applyTaskTransitions,
15
+ mergeWorkflowResult
16
+ } from "./chunk-CVMVZWG4.js";
17
+ import {
18
+ parsePlanArtifactEnvelope
19
+ } from "./chunk-A2WKSVX7.js";
20
+ import {
21
+ WorkflowExecutor,
22
+ executeWorkflowFile,
23
+ filterResolvedManagedRepoCleanWarnings
24
+ } from "./chunk-EX3OM35G.js";
25
+ import {
26
+ getTask,
27
+ updateTaskStatus
28
+ } from "./chunk-SUZ7UYZH.js";
29
+ import {
30
+ runWorkflowPreflight
31
+ } from "./chunk-V6YLL5WA.js";
32
+ import {
33
+ resolvePoeticSelfExecutionScope
34
+ } from "./chunk-MFADRRTR.js";
35
+ import {
36
+ describeExecutionPolicyStampMismatch,
37
+ isCurrentExecutionPolicyWorkflow,
38
+ isExecutionPolicyEngaged
39
+ } from "./chunk-PIKLF7BM.js";
40
+ import {
41
+ resolveExecutionRoles
42
+ } from "./chunk-7NPSXSHO.js";
43
+ import {
44
+ activateSprint,
45
+ closeSprint,
46
+ getCurrentSprint,
47
+ listTasksInSprint
48
+ } from "./chunk-XUSRFFA7.js";
49
+ import {
50
+ withPlanningLock
51
+ } from "./chunk-OPYFYTWQ.js";
52
+ import {
53
+ getResultPath,
54
+ loadManifest,
55
+ updateManifest
56
+ } from "./chunk-CQM3A35X.js";
57
+ import {
58
+ signalCoordinator
59
+ } from "./chunk-72YTZMAM.js";
60
+ import {
61
+ getWorktreeBaseDir
62
+ } from "./chunk-5EERLVZB.js";
63
+ import {
64
+ getExecutionContext
65
+ } from "./chunk-UI2F6DJ5.js";
66
+ import {
67
+ findRepoRoot
68
+ } from "./chunk-L7JZLXQL.js";
69
+
70
+ // src/planning/sprint-execution-service.ts
71
+ import fs from "fs/promises";
72
+ import path from "path";
73
+ import chalk from "chalk";
74
+ import { execa } from "execa";
75
+ async function captureCallerCheckoutSnapshot() {
76
+ const repoRoot = findRepoRoot();
77
+ try {
78
+ const branchResult = await execa("git", ["branch", "--show-current"], {
79
+ cwd: repoRoot,
80
+ stdio: "pipe",
81
+ timeout: 3e4
82
+ });
83
+ const branch = branchResult.stdout.trim();
84
+ return { repoRoot, branch: branch || null };
85
+ } catch {
86
+ return { repoRoot, branch: null };
87
+ }
88
+ }
89
+ async function restoreCallerCheckoutIfNeeded(snapshot) {
90
+ if (!snapshot.branch) {
91
+ return null;
92
+ }
93
+ let currentBranch = "";
94
+ try {
95
+ const currentResult = await execa("git", ["branch", "--show-current"], {
96
+ cwd: snapshot.repoRoot,
97
+ stdio: "pipe",
98
+ timeout: 3e4
99
+ });
100
+ currentBranch = currentResult.stdout.trim();
101
+ } catch (error) {
102
+ return `Failed to inspect caller checkout before sprint status sync: ${error instanceof Error ? error.message : String(error)}`;
103
+ }
104
+ if (currentBranch === snapshot.branch) {
105
+ return null;
106
+ }
107
+ let status = "";
108
+ try {
109
+ const statusResult = await execa("git", ["status", "--porcelain"], {
110
+ cwd: snapshot.repoRoot,
111
+ stdio: "pipe",
112
+ timeout: 3e4
113
+ });
114
+ status = statusResult.stdout.trim();
115
+ } catch (error) {
116
+ return `Failed to inspect caller checkout cleanliness before sprint status sync: ${error instanceof Error ? error.message : String(error)}`;
117
+ }
118
+ if (status.length > 0) {
119
+ const currentLabel = currentBranch || "detached HEAD";
120
+ return `Caller checkout changed from ${snapshot.branch} to ${currentLabel} and has local changes; refusing to sync managed task status into the wrong checkout.`;
121
+ }
122
+ try {
123
+ await execa("git", ["checkout", snapshot.branch], {
124
+ cwd: snapshot.repoRoot,
125
+ stdio: "pipe",
126
+ timeout: 3e4
127
+ });
128
+ return null;
129
+ } catch (error) {
130
+ return `Failed to restore caller checkout to ${snapshot.branch} before sprint status sync: ${error instanceof Error ? error.message : String(error)}`;
131
+ }
132
+ }
133
+ function buildFailedExecutionResult(summary) {
134
+ return {
135
+ workflowId: "preflight-failed",
136
+ workflowName: summary.workflowName,
137
+ stageCount: summary.stageCount,
138
+ plannedStageCount: summary.plannedStageCount,
139
+ success: false,
140
+ degraded: false,
141
+ stageResults: [],
142
+ totalCost: 0,
143
+ totalDuration: 0,
144
+ budgetSummary: "Preflight failed before execution",
145
+ errors: summary.errors,
146
+ warnings: summary.warnings
147
+ };
148
+ }
149
+ async function enforceExecutionPolicyStamp(config, logger) {
150
+ let workflow;
151
+ try {
152
+ const executor = new WorkflowExecutor();
153
+ workflow = await executor.loadWorkflow(config.yamlPath);
154
+ } catch (error) {
155
+ return {
156
+ passed: false,
157
+ error: `Unable to validate the execution-policy workflow: ${error instanceof Error ? error.message : String(error)}`
158
+ };
159
+ }
160
+ const stamp = workflow.metadata?.executionPolicy;
161
+ if (stamp !== void 0) {
162
+ if (isCurrentExecutionPolicyWorkflow(workflow)) return { passed: true };
163
+ return {
164
+ passed: false,
165
+ error: `Refusing to execute a generated workflow with a stale or malformed execution-policy stamp (${describeExecutionPolicyStampMismatch(stamp)}). Regenerate the workflow through the current Poetic version.`
166
+ };
167
+ }
168
+ if (config.allowUnstampedWorkflow === true) {
169
+ logger.log(chalk.yellow("running hand-authored workflow without execution policy"));
170
+ return { passed: true };
171
+ }
172
+ if (!workflowHasTaskExecutionStages(workflow)) {
173
+ return { passed: true };
174
+ }
175
+ let gate = "off";
176
+ try {
177
+ const roles = resolveExecutionRoles({ cwd: process.cwd() });
178
+ if (!isExecutionPolicyEngaged(roles)) {
179
+ return { passed: true };
180
+ }
181
+ gate = roles.reviewer.gate.value;
182
+ } catch (error) {
183
+ return {
184
+ passed: false,
185
+ error: `Refusing to execute with invalid role configuration: ${error instanceof Error ? error.message : String(error)}`
186
+ };
187
+ }
188
+ return {
189
+ passed: false,
190
+ error: `Refusing to execute an unstamped generated workflow: it contains task-execution stages but is missing the execution-policy stamp while the reviewer gate is '${gate}'. Regenerate the workflow through \`poetic sprint run\` / \`poetic plan approve --to-sprint\` (which apply the execution policy), set \`roles.reviewer.gate = off\` to disable review, or pass the explicit escape hatch for hand-authored/resumed workflows.`
191
+ };
192
+ }
193
+ function workflowHasTaskExecutionStages(workflow) {
194
+ const isExec = (type) => (type ?? "standard") === "standard" || type === "competition";
195
+ for (const stage of workflow.stages) {
196
+ if (stage.type === "orchestrator" && stage.seededPlan) {
197
+ if (stage.seededPlan.subStages.some((sub) => isExec(sub.type))) return true;
198
+ continue;
199
+ }
200
+ if (isExec(stage.type)) return true;
201
+ }
202
+ return false;
203
+ }
204
+ async function runSprintWorkflowPreflight(config) {
205
+ const { runExecutionPreflight, formatExecutionPreflightWarning } = await import("./execution-preflight-Z4Y64V3I.js");
206
+ const preflightWarning = formatExecutionPreflightWarning(
207
+ await runExecutionPreflight({ verbose: config.verbose })
208
+ );
209
+ if (preflightWarning) console.warn(preflightWarning);
210
+ const executor = new WorkflowExecutor();
211
+ try {
212
+ const workflow = await executor.loadWorkflow(config.yamlPath);
213
+ const workflowName = workflow.name ?? "Unnamed Workflow";
214
+ const stageCount = workflow.stages.length;
215
+ const projectRoot = findRepoRoot();
216
+ const worktreeRoot = config.preflight?.worktreeHygiene?.baseDir ?? getWorktreeBaseDir();
217
+ const preflight = await runWorkflowPreflight(workflow, {
218
+ authProbeEnv: { ...process.env, ...getExecutionContext().envOverrides },
219
+ ...config.preflight ?? {},
220
+ verbose: config.verbose,
221
+ cwd: projectRoot,
222
+ worktreeHygiene: {
223
+ ...config.preflight?.worktreeHygiene ?? {},
224
+ baseDir: worktreeRoot
225
+ }
226
+ });
227
+ return {
228
+ passed: preflight.passed,
229
+ workflowName,
230
+ stageCount,
231
+ plannedStageCount: stageCount,
232
+ warnings: [...filterResolvedManagedRepoCleanWarnings(preflight.warnings, void 0)],
233
+ errors: [...preflight.errors],
234
+ executionContext: {
235
+ projectRoot,
236
+ worktreeRoot,
237
+ preflight: { result: preflight, source: "caller" }
238
+ }
239
+ };
240
+ } catch (error) {
241
+ return {
242
+ passed: false,
243
+ workflowName: "Unnamed Workflow",
244
+ stageCount: 0,
245
+ plannedStageCount: 0,
246
+ warnings: [],
247
+ errors: [
248
+ `Preflight execution failed: ${error instanceof Error ? error.message : String(error)}`
249
+ ]
250
+ };
251
+ }
252
+ }
253
+ async function buildFallbackTaskTransitions(sprintId, stageResults, apply, stageToTaskMap) {
254
+ if (signalCoordinator.isShuttingDown) {
255
+ return [];
256
+ }
257
+ const targetStatus = resolveTaskStatusForStageOutcome({
258
+ kind: "stage-result",
259
+ validationPassed: true,
260
+ apply
261
+ });
262
+ if (!targetStatus) {
263
+ return [];
264
+ }
265
+ let sprintTasks;
266
+ try {
267
+ sprintTasks = await listTasksInSprint(sprintId);
268
+ } catch (error) {
269
+ if (signalCoordinator.isShuttingDown && isMissingSprintMetadataError(error)) {
270
+ return [];
271
+ }
272
+ throw error;
273
+ }
274
+ const sprintTaskIds = new Set(sprintTasks.map((task) => task.id));
275
+ const transitions = [];
276
+ const maybeTaskIdForStage = (stageId) => {
277
+ const mappedTaskId = stageToTaskMap?.get(stageId);
278
+ if (mappedTaskId && sprintTaskIds.has(mappedTaskId)) return mappedTaskId;
279
+ if (sprintTaskIds.has(stageId)) return stageId;
280
+ return void 0;
281
+ };
282
+ for (const stageResult of flattenStageResultEntries(stageResults)) {
283
+ const taskId = maybeTaskIdForStage(stageResult.stageId);
284
+ if (taskId && stageResult.validationPassed === true) {
285
+ transitions.push({ taskId, targetStatus });
286
+ }
287
+ }
288
+ return Array.from(new Map(transitions.map((entry) => [entry.taskId, entry])).values());
289
+ }
290
+ function flattenStageResultEntries(stageResults) {
291
+ const entries = [];
292
+ const visit = (stageResult) => {
293
+ entries.push({
294
+ stageId: stageResult.stageId,
295
+ validationPassed: stageResult.validationPassed === true
296
+ });
297
+ if (!isOrchestratorStageResult(stageResult)) return;
298
+ for (const subStage of stageResult.subStageResults) {
299
+ entries.push({
300
+ stageId: subStage.spec.id,
301
+ validationPassed: subStage.result.validationPassed === true
302
+ });
303
+ if (isOrchestratorStageResult(subStage.result)) {
304
+ visit(subStage.result);
305
+ }
306
+ }
307
+ };
308
+ for (const stageResult of stageResults) visit(stageResult);
309
+ return entries;
310
+ }
311
+ function attachResultArtifactPath(transitions, resultArtifactPath) {
312
+ if (transitions.length === 0) return transitions;
313
+ return transitions.map((transition) => ({
314
+ ...transition,
315
+ resultArtifactPath: transition.resultArtifactPath ?? resultArtifactPath
316
+ }));
317
+ }
318
+ function isMissingSprintMetadataError(error) {
319
+ const maybeCode = error?.code;
320
+ if (maybeCode === "ENOENT") return true;
321
+ const message = error instanceof Error ? error.message : String(error);
322
+ const normalized = message.toLowerCase();
323
+ return normalized.includes("no such file") || normalized.includes("not found");
324
+ }
325
+ async function reconcileTasksAfterFailedApply(stageResults, logger, stageToTaskMap) {
326
+ let reconciledCount = 0;
327
+ const seenTaskIds = /* @__PURE__ */ new Set();
328
+ for (const stageResult of flattenStageResultEntries(stageResults)) {
329
+ const taskId = stageToTaskMap?.get(stageResult.stageId) ?? stageResult.stageId;
330
+ if (seenTaskIds.has(taskId)) continue;
331
+ seenTaskIds.add(taskId);
332
+ try {
333
+ const { yaml: task } = await getTask(taskId);
334
+ if (task.status === "done") {
335
+ await updateTaskStatus(taskId, "review");
336
+ reconciledCount++;
337
+ continue;
338
+ }
339
+ if (task.status === "in_progress") {
340
+ await updateTaskStatus(taskId, "review");
341
+ reconciledCount++;
342
+ }
343
+ } catch (error) {
344
+ logger.log(
345
+ chalk.yellow(
346
+ `Failed to reconcile task ${taskId} after merge failure: ${error instanceof Error ? error.message : String(error)}`
347
+ )
348
+ );
349
+ }
350
+ }
351
+ return reconciledCount;
352
+ }
353
+ async function executeSprintWorkflow(config, logger = console) {
354
+ const integrationBranch = `poetic/flywheel/${config.workflowId}`;
355
+ if (config.mergeOptions?.repairBiome !== void 0 || config.mergeOptions?.repairBiomeMaxIterations !== void 0 || config.mergeOptions?.repairBiomeTimeboxMs !== void 0) {
356
+ logger.log(
357
+ chalk.yellow(
358
+ "Warning: merge-time Biome repair options are deprecated and have no effect; repair runs before application."
359
+ )
360
+ );
361
+ }
362
+ const preflightSummary = await runSprintWorkflowPreflight(config);
363
+ if (!preflightSummary.passed) {
364
+ return {
365
+ status: "error",
366
+ executionResult: buildFailedExecutionResult(preflightSummary)
367
+ };
368
+ }
369
+ const invariant = await enforceExecutionPolicyStamp(config, logger);
370
+ if (!invariant.passed) {
371
+ return {
372
+ status: "error",
373
+ executionResult: buildFailedExecutionResult({
374
+ passed: false,
375
+ workflowName: preflightSummary.workflowName,
376
+ stageCount: preflightSummary.stageCount,
377
+ plannedStageCount: preflightSummary.plannedStageCount,
378
+ warnings: preflightSummary.warnings,
379
+ errors: [invariant.error ?? "Execution policy stamp invariant failed"]
380
+ })
381
+ };
382
+ }
383
+ if (config.apply) {
384
+ try {
385
+ await activateSprint(config.sprintId);
386
+ } catch (error) {
387
+ const message = error instanceof Error ? error.message : String(error);
388
+ let sprintIsActive = false;
389
+ try {
390
+ const currentSprint = await getCurrentSprint();
391
+ sprintIsActive = currentSprint?.yaml?.id === config.sprintId && currentSprint.yaml.status === "active";
392
+ } catch {
393
+ }
394
+ if (!sprintIsActive) {
395
+ logger.error(
396
+ chalk.red(
397
+ `[sprint-execution] WARN: activateSprint(${config.sprintId}) failed and sprint is not active \u2014 sprint status may be stale: ${message}`
398
+ )
399
+ );
400
+ } else {
401
+ logger.log(chalk.yellow(`Failed to activate sprint ${config.sprintId}: ${message}`));
402
+ }
403
+ }
404
+ }
405
+ const lifecycleAwaitDrain = config.lifecycleAwaitDrain ?? config.lifecycleCallbacks?.awaitDrain;
406
+ const awaitDrain = typeof lifecycleAwaitDrain === "function" ? lifecycleAwaitDrain : void 0;
407
+ const callerCheckout = await captureCallerCheckoutSnapshot();
408
+ let executionResult;
409
+ try {
410
+ executionResult = await executeWorkflowFile(config.yamlPath, {
411
+ verbose: config.verbose,
412
+ dryRun: false,
413
+ allowMain: config.mergeOptions?.allowMain,
414
+ allowProtected: config.mergeOptions?.allowProtected,
415
+ currentBranch: config.applyTargetBranch,
416
+ workflowId: config.workflowId,
417
+ resumeWorkflowId: config.resumeWorkflowId,
418
+ admittedResume: config.admittedResume,
419
+ executionContext: preflightSummary.executionContext,
420
+ preflight: {
421
+ authProbeEnv: { ...process.env, ...getExecutionContext().envOverrides },
422
+ ...config.preflight ?? {},
423
+ skip: {
424
+ ...config.preflight?.skip ?? {},
425
+ repoClean: true
426
+ }
427
+ },
428
+ skipPreflight: false,
429
+ manifest: {
430
+ sourceType: "sprint",
431
+ sprintId: config.sprintId,
432
+ generatedYamlPath: config.yamlPath,
433
+ originalCommand: process.argv.slice(2),
434
+ planArtifactPath: config.planArtifactPath
435
+ },
436
+ lifecycleCallbacks: config.lifecycleCallbacks,
437
+ blockerAnswers: config.blockerAnswers,
438
+ repairOnVerifyFailure: config.repairOnVerifyFailure,
439
+ onProviderOutput: config.onProviderOutput,
440
+ signal: config.signal
441
+ });
442
+ } finally {
443
+ if (typeof awaitDrain === "function") {
444
+ await awaitDrain();
445
+ }
446
+ }
447
+ const callerCheckoutRestoreError = await restoreCallerCheckoutIfNeeded(callerCheckout);
448
+ if (callerCheckoutRestoreError) {
449
+ logger.error(chalk.red(callerCheckoutRestoreError));
450
+ return {
451
+ status: "error",
452
+ executionResult: {
453
+ ...executionResult,
454
+ success: false,
455
+ errors: [...executionResult.errors, callerCheckoutRestoreError]
456
+ }
457
+ };
458
+ }
459
+ if (preflightSummary.warnings.length > 0) {
460
+ executionResult.warnings = [...preflightSummary.warnings, ...executionResult.warnings];
461
+ }
462
+ const effectiveVerificationPolicy = config.verificationPolicy ?? "blocking";
463
+ executionResult.verificationPolicy = effectiveVerificationPolicy;
464
+ const rawInjectedTransitions = config.recordedTransitions && config.recordedTransitions.size > 0 ? Array.from(config.recordedTransitions.values()) : await buildFallbackTaskTransitions(
465
+ config.sprintId,
466
+ executionResult.stageResults,
467
+ config.apply,
468
+ config.stageToTaskMap
469
+ );
470
+ const resultPath = getResultPath(config.workflowId);
471
+ const resultArtifactPath = path.relative(findRepoRoot(), resultPath) || resultPath;
472
+ const injectedTransitions = config.mergeOptions?.keepArtifacts === true ? attachResultArtifactPath(rawInjectedTransitions, resultArtifactPath) : rawInjectedTransitions;
473
+ if (injectedTransitions.length > 0) {
474
+ executionResult.taskTransitions = injectedTransitions;
475
+ if (executionResult.stageResults.length > 0) {
476
+ const firstResult = executionResult.stageResults[0];
477
+ if (firstResult) {
478
+ firstResult.taskTransitions = injectedTransitions;
479
+ }
480
+ }
481
+ }
482
+ try {
483
+ const tmpPath = `${resultPath}.tmp.${process.pid}.${Date.now()}`;
484
+ await fs.writeFile(tmpPath, JSON.stringify(executionResult, null, 2), "utf-8");
485
+ await fs.rename(tmpPath, resultPath);
486
+ } catch (error) {
487
+ logger.log(
488
+ chalk.yellow(
489
+ `Failed to persist workflow result: ${error instanceof Error ? error.message : String(error)}`
490
+ )
491
+ );
492
+ }
493
+ let manifest;
494
+ try {
495
+ manifest = await updateManifest(config.workflowId, (currentManifest) => {
496
+ currentManifest.verificationPolicy = effectiveVerificationPolicy;
497
+ });
498
+ } catch (error) {
499
+ logger.log(
500
+ chalk.yellow(
501
+ `Failed to persist workflow manifest policy for ${config.workflowId}: ${error instanceof Error ? error.message : String(error)}`
502
+ )
503
+ );
504
+ manifest = await loadManifest(config.workflowId).catch((loadError) => {
505
+ logger.log(
506
+ chalk.yellow(
507
+ `Failed to load workflow manifest metadata for ${config.workflowId}: ${loadError instanceof Error ? loadError.message : String(loadError)}`
508
+ )
509
+ );
510
+ return null;
511
+ });
512
+ }
513
+ const reviewBaseSha = manifest?.baseSha ?? "HEAD";
514
+ const reviewBranch = manifest?.integrationBranch ?? integrationBranch;
515
+ if (!config.apply && executionResult.success && config.mergeOptions?.keepArtifacts === true && injectedTransitions.length > 0) {
516
+ const syncResult = await applyTaskTransitions(config.sprintId, injectedTransitions, {
517
+ promoteToDone: true
518
+ });
519
+ if (syncResult.tasksFailed > 0 || syncResult.tasksEphemeral > 0) {
520
+ const message = `Task status sync failed after preserved no-apply run: ${syncResult.tasksFailed} failed, ${syncResult.tasksEphemeral} ephemeral`;
521
+ logger.error(chalk.red(message));
522
+ return {
523
+ status: "error",
524
+ executionResult: {
525
+ ...executionResult,
526
+ success: false,
527
+ errors: [...executionResult.errors, message]
528
+ },
529
+ reviewBaseSha,
530
+ reviewBranch
531
+ };
532
+ }
533
+ } else if (!config.apply && executionResult.success) {
534
+ logger.log(
535
+ chalk.yellow(
536
+ "Warning: --no-apply completed without --keep-artifacts; task status and result artifact provenance were not synced."
537
+ )
538
+ );
539
+ }
540
+ if (config.apply && executionResult.success) {
541
+ if (config.mergeOptions?.noRepairOnFindings) {
542
+ const failingStages = executionResult.stageResults.filter(
543
+ (r) => r.validationPassed === false
544
+ );
545
+ if (failingStages.length > 0) {
546
+ logger.error(chalk.red("\nVerification failures detected"));
547
+ logger.log(chalk.red("--no-repair-on-findings is set. Blocking --apply."));
548
+ await persistExecutionTelemetryIfConfigured({
549
+ config,
550
+ executionResult: {
551
+ ...executionResult,
552
+ success: false,
553
+ errors: [
554
+ ...executionResult.errors,
555
+ "--no-repair-on-findings blocked apply because verification failures were present."
556
+ ]
557
+ },
558
+ verificationPolicy: effectiveVerificationPolicy,
559
+ logger
560
+ });
561
+ return {
562
+ status: "error",
563
+ executionResult,
564
+ reviewBaseSha,
565
+ reviewBranch
566
+ };
567
+ }
568
+ }
569
+ await persistExecutionTelemetryIfConfigured({
570
+ config,
571
+ executionResult,
572
+ verificationPolicy: effectiveVerificationPolicy,
573
+ logger
574
+ });
575
+ const shouldCleanupAfterApply = config.mergeOptions?.cleanup === true || config.closeSprint && config.mergeOptions?.keepArtifacts !== true;
576
+ const mergeResult = await mergeWorkflowResult({
577
+ workflowId: config.workflowId,
578
+ force: false,
579
+ applyOnly: config.mergeOptions?.applyOnly,
580
+ keepArtifacts: config.mergeOptions?.keepArtifacts,
581
+ allowMain: config.mergeOptions?.allowMain,
582
+ allowProtected: config.mergeOptions?.allowProtected,
583
+ taskStatus: "apply",
584
+ cleanup: shouldCleanupAfterApply
585
+ });
586
+ if (!mergeResult.success) {
587
+ if (executionResult.success) {
588
+ const reconciledCount = await reconcileTasksAfterFailedApply(
589
+ executionResult.stageResults,
590
+ logger,
591
+ config.stageToTaskMap
592
+ );
593
+ if (reconciledCount > 0) {
594
+ logger.log(
595
+ chalk.yellow(
596
+ `Reconciled ${reconciledCount} task status(es) back to review after merge failure`
597
+ )
598
+ );
599
+ }
600
+ }
601
+ logger.error(chalk.red("\nMerge failed"));
602
+ if (mergeResult.error) {
603
+ logger.log(chalk.red(` ${mergeResult.error}`));
604
+ }
605
+ await persistExecutionTelemetryIfConfigured({
606
+ config,
607
+ executionResult: {
608
+ ...executionResult,
609
+ success: false,
610
+ errors: [
611
+ ...executionResult.errors,
612
+ `Merge failed${mergeResult.error ? `: ${mergeResult.error}` : ""}`
613
+ ]
614
+ },
615
+ verificationPolicy: effectiveVerificationPolicy,
616
+ logger
617
+ });
618
+ return {
619
+ status: "error",
620
+ executionResult,
621
+ mergeResult,
622
+ reviewBaseSha,
623
+ reviewBranch
624
+ };
625
+ }
626
+ logger.log(chalk.green("Results merged into current branch"));
627
+ if (mergeResult.postApplyError) {
628
+ logger.log(chalk.yellow(`Post-apply cleanup warning: ${mergeResult.postApplyError}`));
629
+ }
630
+ let distStale = false;
631
+ const selfScope = resolvePoeticSelfExecutionScope({ root: process.cwd() });
632
+ if (selfScope.status === "pass") {
633
+ try {
634
+ const distIndex = path.join(process.cwd(), "dist", "index.js");
635
+ await import("fs/promises").then((fs2) => fs2.access(distIndex));
636
+ const srcCheck = await execa(
637
+ "find",
638
+ ["src", "-name", "*.ts", "-newer", distIndex, "-print", "-quit"],
639
+ { stdio: "pipe", timeout: 5e3, reject: false }
640
+ );
641
+ if (srcCheck.stdout?.trim()) {
642
+ distStale = true;
643
+ logger.log("");
644
+ logger.log(chalk.yellow("Source files are newer than dist/ \u2014 CLI may be stale"));
645
+ logger.log(
646
+ chalk.dim(" Run `npm run build` to update the CLI after this command exits.")
647
+ );
648
+ }
649
+ } catch {
650
+ }
651
+ }
652
+ let sprintClosed = false;
653
+ if (config.closeSprint) {
654
+ sprintClosed = await tryCloseSprint(config, logger);
655
+ }
656
+ return {
657
+ status: "success",
658
+ executionResult,
659
+ mergeResult,
660
+ sprintClosed,
661
+ reviewBaseSha,
662
+ reviewBranch,
663
+ distStale
664
+ };
665
+ }
666
+ await persistExecutionTelemetryIfConfigured({
667
+ config,
668
+ executionResult,
669
+ verificationPolicy: effectiveVerificationPolicy,
670
+ logger
671
+ });
672
+ return {
673
+ status: executionResult.success ? "success" : "error",
674
+ executionResult,
675
+ reviewBaseSha,
676
+ reviewBranch
677
+ };
678
+ }
679
+ async function tryCloseSprint(config, logger) {
680
+ try {
681
+ const tasks = await listTasksInSprint(config.sprintId);
682
+ const allTerminal = tasks.length === 0 || tasks.every((t) => t.status === "done" || t.status === "blocked" || t.status === "cancelled");
683
+ const allDone = tasks.length > 0 && tasks.every((t) => t.status === "done");
684
+ if (allTerminal) {
685
+ logger.log(chalk.cyan("Closing sprint..."));
686
+ await closeSprint(config.sprintId, {
687
+ force: !allDone,
688
+ // force if some tasks are blocked but all are terminal
689
+ noArchive: false,
690
+ dryRun: false
691
+ });
692
+ const doneCount = tasks.filter((t) => t.status === "done").length;
693
+ const blockedCount = tasks.filter((t) => t.status === "blocked").length;
694
+ const cancelledCount = tasks.filter((t) => t.status === "cancelled").length;
695
+ logger.log(
696
+ chalk.green(
697
+ `Sprint ${config.sprintId} closed (${doneCount} done` + (blockedCount > 0 ? `, ${blockedCount} blocked` : "") + (cancelledCount > 0 ? `, ${cancelledCount} cancelled` : "") + ")"
698
+ )
699
+ );
700
+ if (config.archiveBacklog && config.archiveLinkedBacklogItems) {
701
+ try {
702
+ const linked = await config.archiveLinkedBacklogItems(config.sprintId, {
703
+ dryRun: false
704
+ });
705
+ if (linked.archived.length > 0) {
706
+ logger.log(chalk.green(`Archived ${linked.archived.length} linked backlog item(s)`));
707
+ } else {
708
+ const warning = linked.warning ?? (linked.skipped.length > 0 ? `Linked backlog items were not archived: ${linked.skipped.join(", ")}` : `No linked backlog items found for sprint ${config.sprintId} (including archived tasks)`);
709
+ logger.log(chalk.yellow(`Warning: ${warning}`));
710
+ }
711
+ } catch (error) {
712
+ logger.log(
713
+ chalk.yellow(
714
+ `Failed to archive linked backlog items: ${error instanceof Error ? error.message : String(error)}`
715
+ )
716
+ );
717
+ }
718
+ }
719
+ return true;
720
+ }
721
+ logger.log(chalk.yellow("Sprint not ready to close (not all tasks are terminal)"));
722
+ const incompleteTasks = tasks.filter(
723
+ (t) => t.status !== "done" && t.status !== "blocked" && t.status !== "cancelled"
724
+ );
725
+ if (incompleteTasks.length > 0) {
726
+ logger.log(chalk.dim("Non-terminal tasks:"));
727
+ for (const t of incompleteTasks) {
728
+ logger.log(chalk.dim(` - ${t.id}: ${t.title} (${t.status})`));
729
+ }
730
+ }
731
+ return false;
732
+ } catch (error) {
733
+ logger.log(chalk.yellow("Failed to close sprint:"));
734
+ logger.log(chalk.yellow(` ${error instanceof Error ? error.message : String(error)}`));
735
+ return false;
736
+ }
737
+ }
738
+ function isOrchestratorStageResult(result) {
739
+ return typeof result === "object" && result !== null && result.stageType === "orchestrator" && Array.isArray(result.subStageResults);
740
+ }
741
+ function buildSubStageTelemetry(result) {
742
+ return {
743
+ validationPassed: result.result.validationPassed,
744
+ cost: result.result.cost,
745
+ provider: result.result.provider,
746
+ model: result.result.model,
747
+ resolvedModel: result.result.resolvedModel,
748
+ summary: result.result.summary,
749
+ durationMs: result.result.durationMs,
750
+ changedFilesCount: result.result.changedFilesCount ?? result.result.changedFiles?.length,
751
+ changedFiles: result.result.changedFiles,
752
+ completeness: result.result.completeness,
753
+ completenessSource: result.result.completenessSource,
754
+ verifyCommands: result.result.verifyCommands,
755
+ requiredFiles: result.result.requiredFiles,
756
+ missingRequiredFiles: result.result.missingRequiredFiles,
757
+ untouchedRequiredFiles: result.result.untouchedRequiredFiles,
758
+ intentionalNoOp: result.result.intentionalNoOp,
759
+ warnings: result.result.warnings,
760
+ recovery: result.result.recovery,
761
+ provenance: result.result.provenance,
762
+ modelSelectionSource: result.result.modelSelectionSource
763
+ };
764
+ }
765
+ function deriveExecutionExitReason(result) {
766
+ if (result.success && result.degraded) {
767
+ return "success-degraded";
768
+ }
769
+ if (result.success) {
770
+ return "success";
771
+ }
772
+ if (result.errors.length > 0) {
773
+ return result.errors[0] ?? "workflow-error";
774
+ }
775
+ if (result.stageResults.some((stage) => !stage.validationPassed)) {
776
+ return "stage-validation-failed";
777
+ }
778
+ return "workflow-failed";
779
+ }
780
+ function deriveExecutionMetadata(payload, executionResult, updatedAt) {
781
+ const stageExecutionDetails = executionResult.stageResults.flatMap((stage) => {
782
+ if (isOrchestratorStageResult(stage)) {
783
+ return stage.subStageResults.map((subStage) => ({
784
+ provider: subStage.result.provider,
785
+ model: subStage.result.model,
786
+ resolvedModel: subStage.result.resolvedModel
787
+ }));
788
+ }
789
+ return [
790
+ {
791
+ provider: stage.provider,
792
+ model: stage.model,
793
+ resolvedModel: stage.resolvedModel
794
+ }
795
+ ];
796
+ });
797
+ const usedProviders = Array.from(
798
+ new Set(
799
+ stageExecutionDetails.map((stage) => stage.provider).filter(
800
+ (provider) => typeof provider === "string" && provider.length > 0
801
+ )
802
+ )
803
+ );
804
+ const resolvedModels = Array.from(
805
+ new Set(
806
+ stageExecutionDetails.map((stage) => stage.resolvedModel).filter((model) => typeof model === "string" && model.length > 0)
807
+ )
808
+ );
809
+ const usedModels = Array.from(
810
+ new Set(
811
+ stageExecutionDetails.map((stage) => stage.resolvedModel ?? stage.model).filter((model) => typeof model === "string" && model.length > 0)
812
+ )
813
+ );
814
+ return {
815
+ provider: payload.executionDefaults.provider,
816
+ resolvedModel: (resolvedModels.length === 1 ? resolvedModels[0] : void 0) || payload.executionDefaults.model || (usedModels.length === 1 ? usedModels[0] : void 0) || payload.orchestratorConfig.orchestrationModel || void 0,
817
+ usedProviders: usedProviders.length > 0 ? usedProviders : void 0,
818
+ usedModels: usedModels.length > 0 ? usedModels : void 0,
819
+ durationMs: executionResult.totalDuration,
820
+ totalCost: executionResult.totalCost,
821
+ success: executionResult.success,
822
+ exitReason: deriveExecutionExitReason(executionResult),
823
+ warnings: executionResult.warnings.length > 0 ? executionResult.warnings : void 0,
824
+ errors: executionResult.errors.length > 0 ? executionResult.errors : void 0,
825
+ updatedAt
826
+ };
827
+ }
828
+ function recordPlanExecutionHistory(params) {
829
+ const provider = params.payload.orchestratorConfig.orchestrationProvider?.trim() || params.payload.executionDefaults.provider?.trim();
830
+ const estimatedDurationMs = params.payload.plan.estimatedDurationMs;
831
+ const actualDurationMs = params.executionResult.totalDuration;
832
+ if (!provider || estimatedDurationMs <= 0 || actualDurationMs <= 0) {
833
+ return;
834
+ }
835
+ const stageRetryCount = params.orchestratorResult?.subStageResults.reduce(
836
+ (sum, subStageResult) => sum + (subStageResult.result.recovery?.retryBudgetUsed ?? 0) + (subStageResult.result.recovery?.infrastructureRetryBudgetUsed ?? 0),
837
+ 0
838
+ ) ?? 0;
839
+ const retryCount = stageRetryCount + (params.orchestratorResult?.replanningAttempts ?? 0);
840
+ const isCompetitive = params.payload.plan.subStages.some(
841
+ (subStage) => subStage.type === "competition"
842
+ );
843
+ const model = params.payload.executionDefaults.model?.trim() || params.payload.orchestratorConfig.orchestrationModel?.trim() || void 0;
844
+ recordExecution({
845
+ provider,
846
+ model,
847
+ executionMode: "orchestrator",
848
+ parallelism: params.payload.plan.subStages.length,
849
+ outcome: deriveSprintOutcome(params.executionResult),
850
+ estimatorVersion: RUNTIME_ESTIMATOR_VERSION,
851
+ expectedRuntimeMs: estimatedDurationMs,
852
+ stageCount: params.payload.plan.subStages.length,
853
+ retryCount,
854
+ isCompetitive,
855
+ actualDurationMs,
856
+ estimatedDurationMs,
857
+ completedAt: Date.now()
858
+ });
859
+ }
860
+ function deriveSprintOutcome(executionResult) {
861
+ if (!executionResult.success) return "failed";
862
+ return executionResult.degraded ? "degraded" : "success";
863
+ }
864
+ async function persistExecutionTelemetryIfConfigured(params) {
865
+ if (!params.config.planArtifactPath) {
866
+ return;
867
+ }
868
+ await persistPlanExecutionTelemetry({
869
+ planArtifactPath: params.config.planArtifactPath,
870
+ workflowId: params.config.workflowId,
871
+ sprintId: params.config.sprintId,
872
+ executionResult: params.executionResult,
873
+ verificationPolicy: params.verificationPolicy,
874
+ logger: params.logger
875
+ });
876
+ }
877
+ async function persistPlanExecutionTelemetry(params) {
878
+ try {
879
+ const rootDir = findRepoRoot();
880
+ await withPlanningLock(rootDir, async () => {
881
+ const absolutePath = path.resolve(rootDir, params.planArtifactPath);
882
+ const raw = await fs.readFile(absolutePath, "utf-8");
883
+ const envelope = parsePlanArtifactEnvelope(JSON.parse(raw));
884
+ const payload = parseDecompositionPlanArtifactPayload(envelope.payload);
885
+ const updatedAt = (/* @__PURE__ */ new Date()).toISOString();
886
+ const orchestratorResult = params.executionResult.stageResults.find(isOrchestratorStageResult);
887
+ if (orchestratorResult) {
888
+ const subStageTelemetryById = new Map(
889
+ orchestratorResult.subStageResults.map((subStageResult) => [
890
+ subStageResult.spec.id,
891
+ buildSubStageTelemetry(subStageResult)
892
+ ])
893
+ );
894
+ payload.plan.subStages = payload.plan.subStages.map((subStage) => {
895
+ const telemetry = subStageTelemetryById.get(subStage.id);
896
+ if (!telemetry) {
897
+ return subStage;
898
+ }
899
+ return {
900
+ ...subStage,
901
+ actualCost: telemetry.cost,
902
+ actualDurationMs: telemetry.durationMs,
903
+ result: telemetry
904
+ };
905
+ });
906
+ payload.plan.executionSummary = {
907
+ workflowId: params.workflowId,
908
+ sprintId: params.sprintId,
909
+ updatedAt,
910
+ validationPassed: orchestratorResult.validationPassed,
911
+ verificationPolicy: params.verificationPolicy,
912
+ successfulSubStages: orchestratorResult.successfulSubStages,
913
+ totalSubStages: orchestratorResult.totalSubStages,
914
+ orchestrationCost: orchestratorResult.orchestrationCost,
915
+ totalCostWithOrchestration: orchestratorResult.totalCostWithOrchestration,
916
+ replanningTriggered: orchestratorResult.replanningTriggered,
917
+ replanningAttempts: orchestratorResult.replanningAttempts,
918
+ zeroOutput: orchestratorResult.zeroOutput,
919
+ recovery: orchestratorResult.recovery
920
+ };
921
+ } else {
922
+ const stageResultById = new Map(
923
+ params.executionResult.stageResults.map((sr) => [sr.stageId, sr])
924
+ );
925
+ payload.plan.subStages = payload.plan.subStages.map((subStage) => {
926
+ const sr = stageResultById.get(subStage.id);
927
+ if (!sr) {
928
+ return subStage;
929
+ }
930
+ const telemetry = {
931
+ validationPassed: sr.validationPassed,
932
+ cost: sr.cost,
933
+ provider: sr.provider,
934
+ model: sr.model,
935
+ resolvedModel: sr.resolvedModel,
936
+ summary: sr.summary,
937
+ durationMs: sr.durationMs,
938
+ changedFilesCount: sr.changedFilesCount ?? sr.changedFiles?.length,
939
+ changedFiles: sr.changedFiles,
940
+ completeness: sr.completeness,
941
+ completenessSource: sr.completenessSource,
942
+ verifyCommands: sr.verifyCommands,
943
+ requiredFiles: sr.requiredFiles,
944
+ missingRequiredFiles: sr.missingRequiredFiles,
945
+ untouchedRequiredFiles: sr.untouchedRequiredFiles,
946
+ intentionalNoOp: sr.intentionalNoOp,
947
+ warnings: sr.warnings,
948
+ recovery: sr.recovery,
949
+ provenance: sr.provenance,
950
+ modelSelectionSource: sr.modelSelectionSource
951
+ };
952
+ return {
953
+ ...subStage,
954
+ actualCost: sr.cost,
955
+ actualDurationMs: sr.durationMs,
956
+ result: telemetry
957
+ };
958
+ });
959
+ const stageResults = params.executionResult.stageResults;
960
+ const successCount = stageResults.filter((r) => r.validationPassed).length;
961
+ const totalCost = stageResults.reduce((sum, r) => sum + r.cost, 0);
962
+ payload.plan.executionSummary = {
963
+ workflowId: params.workflowId,
964
+ sprintId: params.sprintId,
965
+ updatedAt,
966
+ validationPassed: params.executionResult.success,
967
+ verificationPolicy: params.verificationPolicy,
968
+ successfulSubStages: successCount,
969
+ totalSubStages: stageResults.length,
970
+ orchestrationCost: 0,
971
+ totalCostWithOrchestration: totalCost
972
+ };
973
+ }
974
+ payload.executionMetadata = deriveExecutionMetadata(
975
+ payload,
976
+ params.executionResult,
977
+ updatedAt
978
+ );
979
+ const tmpPath = `${absolutePath}.tmp-${process.pid}-${Date.now()}`;
980
+ await fs.writeFile(
981
+ tmpPath,
982
+ JSON.stringify(
983
+ {
984
+ ...envelope,
985
+ payload
986
+ },
987
+ null,
988
+ 2
989
+ ),
990
+ "utf-8"
991
+ );
992
+ await fs.rename(tmpPath, absolutePath);
993
+ try {
994
+ recordPlanExecutionHistory({
995
+ payload,
996
+ executionResult: params.executionResult,
997
+ orchestratorResult
998
+ });
999
+ } catch {
1000
+ }
1001
+ });
1002
+ } catch (error) {
1003
+ params.logger.log(
1004
+ chalk.yellow(
1005
+ `Failed to persist plan execution telemetry: ${error instanceof Error ? error.message : String(error)}`
1006
+ )
1007
+ );
1008
+ }
1009
+ }
1010
+
1011
+ export {
1012
+ enforceExecutionPolicyStamp,
1013
+ workflowHasTaskExecutionStages,
1014
+ executeSprintWorkflow
1015
+ };
1016
+ //# sourceMappingURL=chunk-RSXSD4MH.js.map